Mercurial > mm7
diff Actor.h @ 0:9c0607679772
init
author | Ritor1 |
---|---|
date | Sat, 12 Jan 2013 09:45:18 +0600 |
parents | |
children | cca78efb377e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Actor.h Sat Jan 12 09:45:18 2013 +0600 @@ -0,0 +1,288 @@ +#pragma once +#include "VectorTypes.h" +#include "Items.h" +#include "Monsters.h" +#include "Spells.h" + + + + + + +/* 357 */ +#pragma pack(push, 1) +struct stru319 +{ + void LootActor(struct Actor *pActor); + int which_player_would_attack(struct Actor *pActor); + bool special_ability_use_check(struct Actor *pActor, int a2); + int _427102(struct Actor *pActor, signed int a2); + int PlayerHitOrMiss(struct Player *pPlayer, struct Actor *pActor, int a3, int a4); + bool _4273BB(struct Actor *pActor, struct Actor *a2, int a3, int a4); + bool ActorHitOrMiss(struct Actor *pActor, struct Player *pPlayer); + int _427546(int a2); + int CalcMagicalDamageToActor(struct Actor *pActor, int a2, signed int a3); + bool GetMagicalResistance(struct Actor *pActor, unsigned int uType); + int FindClosesActor(int a2, int a3, int a4); + + char field_0; +}; +#pragma pack(pop) + + +extern stru319 stru_50C198; // idb + + + + + + +/* 361 */ +enum ACTOR_BUFF_INDEX +{ + ACTOR_BUFF_STONED = 0x5, + ACTOR_BUFF_PARALYZED = 0x6, +}; + + + + + +/* 295 */ +enum ObjectType +{ + OBJECT_unk0 = 0x0, + OBJECT_unk1 = 0x1, + OBJECT_Item = 0x2, + OBJECT_Actor = 0x3, + OBJECT_Player = 0x4, + OBJECT_Decoration = 0x5, + OBJECT_BModel = 0x6, +}; + + + + + + + +/* 337 */ +enum AI_OBJECT_TYPE +{ + AI_OBJECT_LAYING_ITEM = 0x2, + AI_OBJECT_ACTOR = 0x3, + AI_OBJECT_PARTY = 0x4, + AI_OBJECT_DECORATION = 0x5, +}; + +/* 264 */ +enum AIState : unsigned __int16 +{ + Standing = 0x0, + Tethered = 0x1, + AttackingMelee = 0x2, + AttackingRanged1 = 0x3, + Dying = 0x4, + Dead = 0x5, + Pursuing = 0x6, + Fleeing = 0x7, + Stunned = 0x8, + Fidgeting = 0x9, + Interacting = 0xA, + Removed = 0xB, + AttackingRanged2 = 0xC, + AttackingRanged3 = 0xD, + Stoned = 0xE, + Paralyzed = 0xF, + Resurrected = 0x10, + Summoned = 0x11, + AttackingRanged4 = 0x12, + Disabled = 0x13, +}; + +/* 265 */ +enum ActorAnimation : __int32 +{ + ANIM_Standing = 0x0, + ANIM_Walking = 0x1, + ANIM_AtkMelee = 0x2, + ANIM_AtkRanged = 0x3, + ANIM_GotHit = 0x4, + ANIM_Dying = 0x5, + ANIM_Dead = 0x6, + ANIM_Bored = 0x7, +}; + + + + + +/* 247 */ +#pragma pack(push, 1) +struct AIDirection +{ + Vec3_int_ vDirection; + unsigned int uDistance; + unsigned int uDistanceXZ; + unsigned int uYawAngle; + unsigned int uPitchAngle; +}; +#pragma pack(pop) + + + + + +/* 71 */ +#pragma pack(push, 1) +struct ActorJob +{ + struct Vec3_short_ vPos; + unsigned __int16 uAttributes; + unsigned __int8 uAction; + unsigned __int8 uHour; + unsigned __int8 uDay; + unsigned __int8 uMonth; +}; +#pragma pack(pop) + + +/* 66 */ +#pragma pack(push, 1) +struct Actor +{ + //----- (0041F4C1) -------------------------------------------------------- + inline Actor() + { + Actor *v1; // esi@1 + SpellBuff *v2; // eax@1 + signed int v3; // edx@1 + ItemGen *v4; // edi@3 + signed int v5; // ebx@3 + + v1 = this; + v2 = this->pActorBuffs; + v3 = 22; + do + { + v2->uSkill = 0; + v2->uPower = 0; + v2->uExpireTime = 0; + v2->uCaster = 0; + v2->uFlags = 0; + ++v2; + --v3; + } + while ( v3 ); + v4 = this->array_000234; + v5 = 4; + do + { + v4->Reset(); + ++v4; + --v5; + } + while ( v5 ); + Reset(); +} + + int _44FD29(int a2); + void Reset(); + void Remove(); + void PrepareSprites(char load_sounds_if_bit1_set); + unsigned int UpdateAnimation(); + signed int GetActorsRelation(Actor *a2); + void SetRandomGoldIfTheresNoItem(); + bool CanAct(); + bool IsAlive(); + void InitializeDialogue(int bPlayerSaysHello); + char _438B9B(); + + + static void __fastcall _401221(unsigned int uActorID, int *a2, unsigned int a3); + static unsigned int __fastcall _402686(unsigned int uActorID, unsigned int a2, signed int uActionLength, struct AIDirection *a4); + static int __fastcall _40281C(unsigned int uActorID, unsigned int a2, signed int uActionLength, struct AIDirection *pDir, int a5); + static unsigned int __fastcall _402968(unsigned int uActorID, signed int edx0, int uActionLength, struct AIDirection *a4); + static unsigned int __fastcall _402AD7(unsigned int uActorID, unsigned int a2, signed int arg0, signed int uActionLength, struct AIDirection *pDir); + static void __fastcall PlaySound(unsigned int uActorID, unsigned int uSoundID); + static void __fastcall Die(unsigned int uActorID); + static unsigned int __fastcall Resurrect(unsigned int uActorID); + static int __fastcall _402F87(unsigned int uActorID, unsigned int uObjID, struct AIDirection *a4); + static __int16 __fastcall _4030AD(unsigned int uActorID, signed int edx0, int arg0); + static char __fastcall _4031C1_update_job(unsigned int uActorID, signed int a2, int a3); + static void __fastcall _4032B2(unsigned int a1, unsigned int a2, int a3, int uActionLength); + static unsigned int __fastcall _403476(unsigned int uActorID, signed int edx0, struct AIDirection *pDir); + static unsigned int __fastcall _40368B(unsigned int uActorID, signed int edx0, struct AIDirection *pDir); + static unsigned int __fastcall _403854(unsigned int uActorID, signed int edx0, struct AIDirection *pDir); + static unsigned int __fastcall _403A60(unsigned int uActorID, signed int edx0, struct AIDirection *pDir); + static unsigned int __fastcall _403C6C(unsigned int uActorID, signed int edx0, struct AIDirection *arg0); + static void __fastcall StandAwhile(unsigned int uActorID); + static unsigned int __fastcall _403EB6(unsigned int uActorID, unsigned int a2, unsigned int uActionLength, struct AIDirection *a4); + static unsigned int __fastcall _403F58(unsigned int uActorID, signed int uObjID, int uActionLength, struct AIDirection *a4); + static unsigned int __fastcall FaceObject(unsigned int uActorID, unsigned int uObjID, int _48, struct AIDirection *a4); + static struct AIDirection *__fastcall GetDirectionInfo(unsigned int uObj1ID, unsigned int uObj2ID, struct AIDirection *pOut, int a4); + static signed int __fastcall Explode(unsigned int uActorID); + static char __fastcall _404874(unsigned int uActorID, struct AIDirection *a2, int a3, char a4); + static void __fastcall _404AC7(unsigned int uActorID, struct AIDirection *pDir, int spellnum, int a4, unsigned int uSkillLevel); + static void _43AC45(unsigned int uActorID, int a2); + static bool _43ABB0(Actor *a1, Actor *a2); + static bool StealFrom(unsigned int uActorID); + static void GiveItem(unsigned int uActorID, unsigned int uItemID, unsigned int bGive); + static void ToggleFlag(signed int uActorID, unsigned int uFlag, int bToggle); + static void _438CF3(unsigned int uActorID); + static void DrawHealthBar(Actor *a1, struct GUIWindow *a2); + static int _43B3E0_CalcDamage(Actor *a1, signed int a2); + static int AddBloodsplatOnDamageOverlay(unsigned int uActorID, int a2, signed int a3); + + + char pActorName[32]; + unsigned __int16 uNPC_ID; + __int16 field_22; + unsigned int uAttributes; + __int16 sCurrentHP; + char field_2A[2]; + struct MonsterInfo pMonsterInfo; + __int16 word_000084_range_attack; + __int16 word_000086_some_monster_id; + unsigned __int16 uActorRadius; + unsigned __int16 uActorHeight; + unsigned __int16 uMovementSpeed; + struct Vec3_short_ vPosition; + struct Vec3_short_ vVelocity; + unsigned __int16 uYawAngle; + unsigned __int16 uPitchAngle; + __int16 uSectorID; + unsigned __int16 uCurrentActionLength; + struct Vec3_short_ vInitialPosition; + struct Vec3_short_ vGuardingPosition; + unsigned __int16 uTetherDistance; + AIState uAIState; + unsigned __int16 uCurrentActionAnimation; + unsigned __int16 uCarriedItemID; + char field_B6; + char field_B7; + unsigned int uCurrentActionTime; + unsigned __int16 pSpriteIDs[8]; + unsigned __int16 pSoundSampleIDs[4]; + struct SpellBuff pActorBuffs[22]; + struct ItemGen array_000234[4]; + unsigned int uGroup; + unsigned int uAlly; + struct ActorJob pScheduledJobs[8]; + unsigned int uSummonerID; + unsigned int uLastCharacterIDToHit; + int dword_000334_unique_name; + char field_338[12]; +}; +#pragma pack(pop) + + + + + + +//extern Actor pMonsterInfoUI_Doll; + + +extern Actor pActors[500]; +extern size_t uNumActors; \ No newline at end of file