|
7 | 7 | namespace RE
|
8 | 8 | {
|
9 | 9 | class Actor;
|
| 10 | + class BGSAttackData; |
10 | 11 | class BGSLocation;
|
| 12 | + class bhkNPCollisionObject; |
11 | 13 | class HUDModeType;
|
12 | 14 | class TESBoundObject;
|
13 | 15 | class TESObjectBOOK;
|
@@ -3756,6 +3758,54 @@ namespace RE
|
3756 | 3758 | };
|
3757 | 3759 | static_assert(sizeof(TESHarvestEvent::ItemHarvested) == 0x18);
|
3758 | 3760 | };
|
| 3761 | + |
| 3762 | + struct DamageImpactData |
| 3763 | + { |
| 3764 | + // members |
| 3765 | + NiPoint3A location; // 00 |
| 3766 | + NiPoint3A normal; // 10 |
| 3767 | + NiPoint3A velocity; // 20 |
| 3768 | + NiPointer<bhkNPCollisionObject> colObj; // 30 |
| 3769 | + }; |
| 3770 | + static_assert(sizeof(DamageImpactData) == 0x40); |
| 3771 | + |
| 3772 | + class HitData |
| 3773 | + { |
| 3774 | + public: |
| 3775 | + // members |
| 3776 | + DamageImpactData impactData; // 00 |
| 3777 | + std::uint32_t aggressor; // 40 - ActorHandle |
| 3778 | + std::uint32_t target; // 44 - ActorHandle |
| 3779 | + std::uint32_t sourceRef; // 48 - ObjectRefHandle |
| 3780 | + std::uint64_t attackData; // 50 - NiPointer<BGSAttackData> |
| 3781 | + BGSObjectInstanceT<TESObjectWEAP> weapon; // 58 |
| 3782 | + SpellItem* criticalEffect; // 68 |
| 3783 | + SpellItem* hitEffect; // 70 |
| 3784 | + std::uint64_t unk78; // 78 |
| 3785 | + const TESAmmo* ammo; // 80 |
| 3786 | + std::byte pad88[0x68]; // 88 |
| 3787 | + }; |
| 3788 | + static_assert(sizeof(HitData) == 0xF0); |
| 3789 | + |
| 3790 | + struct TESHitEvent |
| 3791 | + { |
| 3792 | + [[nodiscard]] static BSTEventSource<TESHitEvent>* GetEventSource() |
| 3793 | + { |
| 3794 | + using func_t = decltype(&TESHitEvent::GetEventSource); |
| 3795 | + static REL::Relocation<func_t> func{ REL::ID(34450) }; |
| 3796 | + return func(); |
| 3797 | + } |
| 3798 | + |
| 3799 | + // members |
| 3800 | + HitData hitData; // 000 |
| 3801 | + NiPointer<TESObjectREFR> target; // 0F0 |
| 3802 | + NiPointer<TESObjectREFR> cause; // 0F8 |
| 3803 | + BSFixedString material; // 100 |
| 3804 | + TESFormID sourceFormID; // 108 |
| 3805 | + TESFormID projectileFormID; // 10C |
| 3806 | + bool usesHitData; // 110 |
| 3807 | + }; |
| 3808 | + static_assert(sizeof(TESHitEvent) == 0x120); |
3759 | 3809 |
|
3760 | 3810 | struct TESLoadGameEvent
|
3761 | 3811 | {
|
|
0 commit comments