www.tombraiderforums.com

Go Back   www.tombraiderforums.com > Tomb Raider Modding > Tomb Raider Level Editor > Next Generation Level Editor

Reply
 
Thread Tools
Old 11-09-19, 12:26   #531
TR-Freak
Professor
 
TR-Freak's Avatar
 
Join Date: Jan 2008
Location: Deutschland
Posts: 4,510
Default

has someone an updated version of the Functions header file of original tomb4.exe?
Maybe we should collaborate to decompile TR4 functions and provide them to everyone.
__________________
"Your perception of good timing is...bad!"
TR-Freak is offline   Reply With Quote
Old 11-09-19, 12:48   #532
TokyoSU
Historian
 
TokyoSU's Avatar
 
Join Date: Mar 2019
Location: France, Caen
Posts: 290
Default

my functions_mine have more function than anyone (i think):

Code:
TYPE_GetLaraHandAbsPosition GetLaraHandAbsPosition = (TYPE_GetLaraHandAbsPosition)0x0041D890;
TYPE_LaraTargetInfo LaraTargetInfo = (TYPE_LaraTargetInfo)0x0042DB10; // patched in Plugin_TR3Aiming
TYPE_LaraGetNewTarget LaraGetNewTarget = (TYPE_LaraGetNewTarget)0x0042DCA0;
TYPE_AimWeapon AimWeapon = (TYPE_AimWeapon)0x0042E0F0;
TYPE_FireWeapon FireWeapon = (TYPE_FireWeapon)0x0042E1C0;
TYPE_TriggerGunShell TriggerGunShell = (TYPE_TriggerGunShell)0x00438AD0;
TYPE_TriggerDynamic_Mirror TriggerDynamic_Mirror = (TYPE_TriggerDynamic_Mirror)0x00435CA0;
TYPE_set_arm_info set_arm_info = (TYPE_set_arm_info)0x0042B420;
TYPE_AnimatePistols AnimatePistols = (TYPE_AnimatePistols)0x0042BA60;
TYPE_AnimateShotgun AnimateShotgun = (TYPE_AnimateShotgun)0x0042AD50;

TYPE_InitialiseCreature InitialiseCreature = (TYPE_InitialiseCreature)0x0043F330;
TYPE_CreatureAIInfo CreatureAIInfo = (TYPE_CreatureAIInfo)0x0043F3E0;
TYPE_UpdateLOT UpdateLOT = (TYPE_UpdateLOT)0x0043F760;
TYPE_GetCreatureMood GetCreatureMood = (TYPE_GetCreatureMood)0x0043FBD0;
TYPE_CreatureMood CreatureMood = (TYPE_CreatureMood)0x0043FE10;
TYPE_CreatureCreature CreatureCreature = (TYPE_CreatureCreature)0x00440670;
TYPE_BadFloor BadFloor = (TYPE_BadFloor)0x00440790;
TYPE_CreatureAnimation CreatureAnimation = (TYPE_CreatureAnimation)0x004409F0;
TYPE_CreatureTurn CreatureTurn = (TYPE_CreatureTurn)0x00441430;
TYPE_CreatureTilt CreatureTilt = (TYPE_CreatureTilt)0x004416B0;
TYPE_Targetable Targetable = (TYPE_Targetable)0x0040AEC0;
TYPE_ShotLara ShotLara = (TYPE_ShotLara)0x0040B110;
TYPE_GetFrames GetFrames = (TYPE_GetFrames)0x00450450;
TYPE_S_PrintShadow S_PrintShadow = (TYPE_S_PrintShadow)0x00485480;
TYPE_sub_44F2A0 sub_44F2A0 = (TYPE_sub_44F2A0)0x0044F2A0;
TYPE_CalculateObjectLighting CalculateObjectLighting = (TYPE_CalculateObjectLighting)0x00450240;
TYPE_InitInterpolate InitInterpolate = (TYPE_InitInterpolate)0x0044FBC0;
TYPE_phd_TranslateRel_ID phd_TranslateRel_ID = (TYPE_phd_TranslateRel_ID)0x0044FD30;
TYPE_gar_RotYXZsuperpack_I gar_RotYXZsuperpack_I = (TYPE_gar_RotYXZsuperpack_I)0x0044FDC0;
TYPE_phd_PutPolygons_I phd_PutPolygons_I = (TYPE_phd_PutPolygons_I)0x0044FEA0;
TYPE_phd_PushMatrix_I phd_PushMatrix_I = (TYPE_phd_PushMatrix_I)0x0044FC30;
TYPE_phd_TranslateRel_I phd_TranslateRel_I = (TYPE_phd_TranslateRel_I)0x0044FCF0;
TYPE_GetFreeSmokeSparks GetFreeSmokeSparks = (TYPE_GetFreeSmokeSparks)0x004380C0;
TYPE_ShotFire ShotFire = (TYPE_ShotFire)0x0043EDC0; // turret flame !
TYPE_GetFreeFireSparks GetFreeFireSparks = (TYPE_GetFreeFireSparks)0x004378A0;
TYPE_CreateItem CreateItem = (TYPE_CreateItem)0x00453840;
TYPE_InitialiseItem InitialiseItem = (TYPE_InitialiseItem)0x00453890;
TYPE_game_malloc game_malloc = (TYPE_game_malloc)0x0048EBF0;
TYPE_phd_TranslateRel phd_TranslateRel = (TYPE_phd_TranslateRel)0x0048DFD0;
TYPE_gar_RotYXZsuperpack gar_RotYXZsuperpack = (TYPE_gar_RotYXZsuperpack)0x0044FE00;
TYPE_phd_PutPolygons phd_PutPolygons = (TYPE_phd_PutPolygons)0x0047BB30;
TYPE_phd_RotX phd_RotX = (TYPE_phd_RotX)0x0048E080;
TYPE_phd_RotZ phd_RotZ = (TYPE_phd_RotZ)0x0048E1E0;
TYPE_phd_RotY_I phd_RotY_I = (TYPE_phd_RotY)0x0044FC60;
TYPE_phd_RotX_I phd_RotX_I = (TYPE_phd_RotX)0x0044FC90;
TYPE_phd_RotZ_I phd_RotZ_I = (TYPE_phd_RotZ)0x0044FCC0;
TYPE_Richochet Richochet = (TYPE_Richochet)0x00436B90;
TYPE_TriggerRichochetSparks TriggerRichochetSparks = (TYPE_TriggerRichochetSparks)0x00433ED0;
TYPE_phd_PopMatrix_I phd_PopMatrix_I = (TYPE_phd_PopMatrix_I)0x0044FC00;
TYPE_swap_meshes_with_meshswap1 swap_meshes_with_meshswap1 = (TYPE_swap_meshes_with_meshswap1)0x004375B0;
TYPE_swap_meshes_with_meshswap2 swap_meshes_with_meshswap2 = (TYPE_swap_meshes_with_meshswap2)0x00437610;
TYPE_swap_meshes_with_meshswap3 swap_meshes_with_meshswap3 = (TYPE_swap_meshes_with_meshswap3)0x00437670;

// you can use from 0 to 3.
TYPE_CreatureJoint CreatureJoint = (TYPE_CreatureJoint)0x004416F0;
TYPE_CreatureFloat CreatureFloat = (TYPE_CreatureFloat)0x00441750;
TYPE_CreatureUnderwater CreatureUnderwater = (TYPE_CreatureUnderwater)0x00441850;
TYPE_CreatureEffect CreatureEffect = (TYPE_CreatureEffect)0x004418E0;
TYPE_CreatureEffectT CreatureEffectT = (TYPE_CreatureEffectT)0x00441940;
TYPE_CreatureVault CreatureVault = (TYPE_CreatureVault)0x004419A0;
TYPE_CreatureKill CreatureKill = (TYPE_CreatureKill)0x00441B40;
TYPE_CreatureCollision CreatureCollision = (TYPE_CreatureCollision)0x00446BE0;
TYPE_AlertAllGuards AlertAllGuards = (TYPE_AlertAllGuards)0x00441D10;
TYPE_AlertNearbyGuards AlertNearbyGuards = (TYPE_AlertNearbyGuards)0x00441D90;
TYPE_AIGuard AIGuard = (TYPE_AIGuard)0x00441E30;
TYPE_GetAITarget GetAITarget = (TYPE_GetAITarget)0x00441EE0;
TYPE_ExplodingDeath ExplodingDeath = (TYPE_ExplodingDeath)0x0043A030;
TYPE_ClearLOT ClearLOT = (TYPE_ClearLOT)0x00454C60;
TYPE_CreateZone CreateZone = (TYPE_CreateZone)0x00454B50;
TYPE_DrawAnimatingItem DrawAnimatingItem = (TYPE_DrawAnimatingItem)0x0044F600;
TYPE_GetFreeSparks GetFreeSparks = (TYPE_GetFreeSparks)0x00433830;
TYPE_phd_atan phd_atan = (TYPE_phd_atan)0x0048DE90;
TYPE_phd_GetVectorAngles phd_GetVectorAngles = (TYPE_phd_GetVectorAngles)0x48E710;
TYPE_CreateEffect CreateEffect = (TYPE_CreateEffect)0x453DD0;
TYPE_phd_sqrt phd_sqrt = (TYPE_phd_sqrt)0x0048DF00;
TYPE_GetRandomDraw GetRandomDraw = (TYPE_GetRandomDraw)0x0048EB70;
TYPE_CalculateTarget CalculateTarget = (TYPE_CalculateTarget)0x00440220;
TYPE_TargetBox TargetBox = (TYPE_TargetBox)0x0043F9D0;
TYPE_EscapeBox EscapeBox = (TYPE_EscapeBox)0x0043FA70;
TYPE_StalkBox StalkBox = (TYPE_StalkBox)0x00440120;
TYPE_ValidBox ValidBox = (TYPE_ValidBox)0x0043FB20;
Tomb4Discoveries:
Code:
/// only for lara:
typedef void(__cdecl* TYPE_GetLaraHandAbsPosition)(PHD_VECTOR* pos, int mesh);
typedef void (__cdecl* TYPE_LaraTargetInfo)(StrArmiTr4* winfo);
typedef void (__cdecl* TYPE_LaraGetNewTarget)(StrArmiTr4* winfo);
typedef void (__cdecl* TYPE_AimWeapon)(StrArmiTr4* winfo, StrLaraArm* arm);
typedef int (__cdecl* TYPE_FireWeapon)(int weapon_type, StrItemInfo* target, StrItemInfo* lara, short angle[2]);
typedef void (__cdecl* TYPE_TriggerGunShell)(int left_or_right, short slot, int weapon_type);
typedef void (__cdecl* TYPE_TriggerDynamic_Mirror)(int OrgX, int OrgY, int OrgZ, int Intensity, BYTE Red, BYTE Green, BYTE Blue);
typedef void(__cdecl* TYPE_set_arm_info)(StrLaraArm* arm, short frame);
typedef void(__cdecl* TYPE_AnimatePistols)(int weapon_type);
typedef void(__cdecl* TYPE_AnimateShotgun)(int weapon_type);

// other:
typedef void(__cdecl* TYPE_CreatureJoint)(StrItemInfo* item, int id, short mesh_angle);
typedef void(__cdecl* TYPE_InitialiseCreature)(short ItemIndex);
typedef void(__cdecl* TYPE_CreatureAIInfo)(StrItemInfo* item, StrAIInfo* ai_info);
typedef int(__cdecl* TYPE_UpdateLOT)(StrLOT* LOT, int expansion);
typedef void(__cdecl* TYPE_GetCreatureMood)(StrItemInfo* item, StrAIInfo* AI, int violent);
typedef void(__cdecl* TYPE_CreatureMood)(StrItemInfo* item, StrAIInfo* AI, int violent);
typedef int(__cdecl* TYPE_CreatureCreature)(short ItemIndex);
typedef int(__cdecl* TYPE_BadFloor)(DWORD CordX, int CordY, DWORD CordZ, int BoxHeight, int NextHeight, short RoomIndex, StrLOT* LOT);
typedef void(__cdecl* TYPE_CreatureAnimation)(short ItemIndex, short Angle, short Tilt);
typedef short(__cdecl* TYPE_CreatureTurn)(StrItemInfo* item, short max_angle);
typedef void(__cdecl* TYPE_CreatureTilt)(StrItemInfo* item, short tilt);
typedef void(__cdecl* TYPE_CreatureJoint)(StrItemInfo* item, int id, short angle_mesh);
typedef void(__cdecl* TYPE_CreatureFloat)(short ItemIndex);
typedef void(__cdecl* TYPE_CreatureUnderwater)(StrItemInfo* item, int itemYHeight);
typedef short(__cdecl* TYPE_CreatureEffect)(StrItemInfo* item, StrBiteInfo* bite, void(__cdecl* process)(DWORD, int, DWORD, int, WORD, WORD));
typedef short(__cdecl* TYPE_CreatureEffectT)(StrItemInfo* item, StrBiteInfo* bite, short speed, short y_rot, void(__cdecl* process)(DWORD, int, DWORD, int, WORD, WORD));
typedef int(__cdecl* TYPE_CreatureVault)(short ItemIndex, short Angle, int Vault, int Shift);
typedef void(__cdecl* TYPE_CreatureKill)(StrItemInfo* item, int kill_anim, int kill_state, int lara_kill_state);
typedef void(__cdecl* TYPE_CreatureCollision)(short ItemIndex, StrItemInfo* pLara, StrCollisionLara* pCollLara);
typedef void(__cdecl* TYPE_AlertAllGuards)(short itemIndex);
typedef void(__cdecl* TYPE_AlertNearbyGuards)(StrItemInfo* item);
typedef short(__cdecl* TYPE_AIGuard)(StrCreatureInfo* creature);
typedef void(__cdecl* TYPE_GetAITarget)(StrCreatureInfo* creature);
typedef BOOL(__cdecl* TYPE_ExplodingDeath)(short ItemIndex, signed long MeshBits, short damage);
typedef void(__cdecl* TYPE_ClearLOT)(StrLOT* LOT);
typedef void(__cdecl* TYPE_CreateZone)(StrItemInfo* item);
typedef void(__cdecl* TYPE_DrawAnimatingItem)(StrItemInfo* item);
typedef int(__cdecl* TYPE_phd_atan)(int x, int y);
typedef int(__cdecl* TYPE_Targetable)(StrItemInfo* item, StrAIInfo* info);
typedef int(__cdecl* TYPE_ShotLara)(StrItemInfo* item, StrAIInfo* info, StrBiteInfo* bite, short angle, int damage);
typedef int(__cdecl* TYPE_GetFrames)(StrItemInfo* item, short *frames[], int* rate);
typedef void(__cdecl* TYPE_S_PrintShadow)(short size, short* frames, StrItemInfo* pItem);
typedef void(__cdecl* TYPE_sub_44F2A0)(StrItemInfo* item, short frame);
typedef void(__cdecl* TYPE_CalculateObjectLighting)(StrItemInfo* item, short *frame);
typedef void(__cdecl* TYPE_InitInterpolate)(int frac, int rate);
typedef void(__cdecl* TYPE_phd_TranslateRel)(int x, int y, int z);
typedef void(__cdecl* TYPE_phd_TranslateRel_ID)(int x1, int y1, int z1, int x2, int y2, int z2);
typedef void(__cdecl* TYPE_gar_RotYXZsuperpack_I)(short **rotation1, short **rotation2, int skip);
typedef void(__cdecl* TYPE_phd_PutPolygons_I)(StrMeshTr4* meshes, int clip);
typedef void(__cdecl* TYPE_phd_PushMatrix_I)();
typedef void(__cdecl* TYPE_phd_TranslateRel_I)(int x, int y, int z);
typedef void(__cdecl* TYPE_gar_RotYXZsuperpack)(short** rotation, int skip);
typedef void(__cdecl* TYPE_phd_PutPolygons)(StrMeshTr4* meshes, int clip);
typedef void(__cdecl* TYPE_ShotFire)(StrItemInfo* item);
typedef short(__cdecl* TYPE_CreateEffect)(short RoomIndex);
typedef void(__cdecl* TYPE_phd_GetVectorAngles)(int srcX, int srcY, int srcZ, short* dest);
typedef int(__cdecl* TYPE_phd_sqrt)(int x);
typedef short(__cdecl* TYPE_CreateItem)(void);
typedef void(__cdecl* TYPE_InitialiseItem)(short ItemIndex);
typedef int(__cdecl* TYPE_GetRandomDraw)();
typedef void(__cdecl* TYPE_GunHit)();
typedef LPVOID(__cdecl* TYPE_game_malloc)(int size);
typedef int(__cdecl* TYPE_CalculateTarget)(PHD_VECTOR* target, StrItemInfo* item, StrLOT* LOT);
typedef void(_cdecl* TYPE_TargetBox)(StrLOT* LOT, short box_number);
typedef BOOL(__cdecl* TYPE_EscapeBox)(StrItemInfo* item, StrItemInfo* enemy, short box_number);
typedef BOOL(__cdecl* TYPE_ValidBox)(StrItemInfo* item, short zone_number, short box_number);
typedef BOOL(__cdecl* TYPE_StalkBox)(StrItemInfo* item, StrItemInfo* enemy, short box_number);
typedef void(__cdecl* TYPE_phd_RotX)(WORD angle);
typedef void(__cdecl* TYPE_phd_RotZ)(WORD angle);
typedef void(__cdecl* TYPE_phd_RotY_I)(WORD angle);
typedef void(__cdecl* TYPE_phd_RotX_I)(WORD angle);
typedef void(__cdecl* TYPE_phd_RotZ_I)(WORD angle);
typedef void(__cdecl* TYPE_Richochet)(GAME_VECTOR* pos);
typedef void(__cdecl* TYPE_TriggerRichochetSparks)(GAME_VECTOR* pos, int angle, int spark_number, int unknown);
typedef void(__cdecl* TYPE_phd_PopMatrix_I)(void);
typedef void(__cdecl* TYPE_swap_meshes_with_meshswap1)(StrItemInfo* item);
typedef void(__cdecl* TYPE_swap_meshes_with_meshswap2)(StrItemInfo* item);
typedef void(__cdecl* TYPE_swap_meshes_with_meshswap3)(StrItemInfo* item);

// for sprites:
typedef int(__cdecl* TYPE_GetFreeSparks)(void);
typedef int(__cdecl* TYPE_GetFreeSmokeSparks)(void);
typedef int(__cdecl* TYPE_GetFreeFireSparks)(void);
i use custom struct than TRNG, and all working fine (you can change StrItemInfo to StrItemTr4)
for the other you will need my project that are not finished yet sorry :x
PS: my database (IdaPro) have some function that not added.
__________________
"Life is Dream, just a dream"

Last edited by TokyoSU; 11-09-19 at 17:09.
TokyoSU is online now   Reply With Quote
Old 11-09-19, 13:11   #533
TR-Freak
Professor
 
TR-Freak's Avatar
 
Join Date: Jan 2008
Location: Deutschland
Posts: 4,510
Default

thats a whole lot more than initially listed. Great job!
__________________
"Your perception of good timing is...bad!"
TR-Freak is offline   Reply With Quote
Old 11-09-19, 16:52   #534
ChocolateFan
Student
 
ChocolateFan's Avatar
 
Join Date: Dec 2017
Location: I am female
Posts: 228
Default

TokyoSU, can I add the functions that you discovered to our Tomb4Discoveries_mine.h?
ChocolateFan is offline   Reply With Quote
Old 11-09-19, 17:01   #535
TokyoSU
Historian
 
TokyoSU's Avatar
 
Join Date: Mar 2019
Location: France, Caen
Posts: 290
Default

Quote:
Originally Posted by ChocolateFan View Post
TokyoSU, can I add the functions that you discovered to our Tomb4Discoveries_mine.h?
sure you can freely use anything from my project
PS: i added new address in my new project, it's too long to write there and not finished anyway :x.
and not really important because it's the lara control & collision routine.
PS2: need to find the name for sub_44F2A0
PS3: some function need some struct that are not included in TRNG sorry for it, you will need to wait that i finished my project, i will create a new one that will be the default one instead of the default TRNG (2010)
__________________
"Life is Dream, just a dream"

Last edited by TokyoSU; 11-09-19 at 17:11.
TokyoSU is online now   Reply With Quote
Old 11-09-19, 17:45   #536
TR-Freak
Professor
 
TR-Freak's Avatar
 
Join Date: Jan 2008
Location: Deutschland
Posts: 4,510
Default

Quote:
and not really important because it's the lara control & collision routine.

that seems really important actually
__________________
"Your perception of good timing is...bad!"
TR-Freak is offline   Reply With Quote
Old 11-09-19, 17:57   #537
TokyoSU
Historian
 
TokyoSU's Avatar
 
Join Date: Mar 2019
Location: France, Caen
Posts: 290
Default

Quote:
Originally Posted by TR-Freak View Post

that seems really important actually
it's only used to control lara, and normally you wont use it.
i have it because i changed some code in LaraAboveWater() and i need to recreate the lara control and collision routine that are array function, and cant be accessed by the usually "typedef void(__cdecl*)(); and TYPE_xx yy = (TYPE_xx)address;".
__________________
"Life is Dream, just a dream"

Last edited by TokyoSU; 11-09-19 at 20:22.
TokyoSU is online now   Reply With Quote
Old 11-09-19, 19:53   #538
AkyV
Moderator
 
Join Date: Dec 2011
Location: Hungary
Posts: 3,610
Exclamation

To collect functions, feel free to use this thread, as it is explained there:

Our Tomb4 discoveries

I will edit OP after each upload of the newest version.
AkyV is offline   Reply With Quote
Old 12-09-19, 03:35   #539
ChocolateFan
Student
 
ChocolateFan's Avatar
 
Join Date: Dec 2017
Location: I am female
Posts: 228
Default

What are these structures, TokyoSU?
  • LARA_ARM
  • StrAIInfo
  • StrLOT
  • StrBiteInfo
  • StrCreatureInfo
ChocolateFan is offline   Reply With Quote
Old 12-09-19, 07:37   #540
TokyoSU
Historian
 
TokyoSU's Avatar
 
Join Date: Mar 2019
Location: France, Caen
Posts: 290
Default

Quote:
Originally Posted by ChocolateFan View Post
What are these structures, TokyoSU?
  • LARA_ARM
  • StrAIInfo
  • StrLOT
  • StrBiteInfo
  • StrCreatureInfo
- LARA_ARM is in the name, it control the lara arm for the weapon (angle),
the current frame/anim, if lara lock a enemy and the flash_gun when firing (light).
Code:
struct LARA_ARM
{
    signed short *frame_base;
    signed short frame_number;
    signed short anim_number;
    signed short lock;
    signed short y_rot;
    signed short x_rot; // dont change this position x_rot is there !!
    signed short z_rot;
    signed short flash_gun;
};
- StrAIInfo is used by CreatureAIInfo(item, &AI), it set the maximum angle (x and y) for head/torso rotation in StrCreatureInfo (need to be assigned in the animation control), it set a distance between the target and the src, it set the fov for the entity (ahead) the enemy orientationH and the current zone/enemy zone (floor)
Code:
struct StrAIInfo
{
    short zone_number;
    short enemy_zone;
    long distance;
    long ahead;
    long bite;
    short angle;
    short x_angle;
    short enemy_facing;
};
- StrLOT is the structure used in StrAIInfo to set a pathfinding and control the AI (this entity can fly ? or set a path to lara).
Code:
enum TYPE_ZONE
{
    ZONE_SKELLY = 0,
    ZONE_BASIC = 1,
    ZONE_CROC = 2,             // it's underwater by default, but too much speed when moving up and down.
    ZONE_HUMAN = 3,
    ZONE_FLYER = 4,
    ZONE_SPIDER = 5,          // Customized don't use it
    ZONE_BIG_ENTITY = 6,   // Customized don't use it (for boss like trex)
    ZONE_UNDERWATER = 7 // Customized don't use it
};

struct StrBoxNode
{
    short exit_box;
    WORD search_number;
    short next_expansion;
    short box_number;
};

struct StrLOT
{
    StrBoxNode* node;
    short head;
    short tail;
    WORD search_number;
    WORD block_mask;
    short step;
    short drop;
    short zone_count;
    short target_box;
    short required_box;
    short fly;
    WORD can_jump : 1;
    WORD can_monkey : 1;
    WORD is_amphibious : 1;
    WORD is_jumping : 1;
    WORD is_monkeying : 1;
    PHD_VECTOR target;
    TYPE_ZONE zone;            // tr4 new enum.
};
- StrBiteInfo is used by CreatureEffect to set a point (pos) for the effect. (just x, y, z, mesh_number)
Code:
struct StrBiteInfo
{
    signed int x;
    signed int y;
    signed int z;
    signed int mesh_num;
};
- StrCreatureInfo is used for the creature, it control the head/torso rotation if used with CreatureJoint(), it set some flag like "alerted" or "reached_goal" and set a maximum turn when used with CreatureTurn(), and the last it set a target for the entity (lara by default).
Code:
struct PHD_VECTOR
{
    DWORD x;
    int y;
    DWORD z;
};

enum MOOD_TYPE
{
    MOOD_BORED,
    MOOD_ATTACK,
    MOOD_ESCAPE,
    MOOD_STALK,
};

struct StrCreatureInfo
{
    WORD joint_rotation[4];
    short maximum_turn;
    short flags;
    WORD alerted : 1;
    WORD head_left : 1;
    WORD head_right : 1;
    WORD reached_goal : 1;
    WORD hurt_by_lara : 1;
    WORD patrol2 : 1;
    WORD jump_ahead : 1;
    WORD monkey_ahead : 1;
    MOOD_TYPE mood;
    StrItemInfo* enemy;
    StrItemInfo ai_target;
    short unknown_field1;
    WORD item_num;
    PHD_VECTOR target;
    StrLOT LOT;
};
you can init this struct with "item->data" or "item->pZonaSaveGame"
i hope this can help to resolve your question
__________________
"Life is Dream, just a dream"

Last edited by TokyoSU; 12-09-19 at 07:51.
TokyoSU is online now   Reply With Quote
Reply

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 08:00.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.