From e219cb26b46e821980690ba265e29f10f1bcd15c Mon Sep 17 00:00:00 2001 From: MontyTRC89 Date: Mon, 17 Sep 2018 08:02:23 +0200 Subject: [PATCH] Added tiger --- Build/PCTomb5.idb | Bin 16422552 -> 16422552 bytes TR5Main/Global/objectslist.h | 10 +-- TR5Main/Objects/animals.cpp | 131 +++++++++++++++++++++++++++++++++++ TR5Main/Objects/objects.h | 2 + TR5Main/Specific/setup.cpp | 76 ++++++++++---------- 5 files changed, 176 insertions(+), 43 deletions(-) diff --git a/Build/PCTomb5.idb b/Build/PCTomb5.idb index d5d4a83e41f11d6ee06c7c54b1b8958a4ef27e33..5ff61b3a4ceee221dc82c14db6cffb5b3724d5c9 100644 GIT binary patch delta 10833 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 Gn*so=L`YHq delta 10545 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 + + if (item->hitPoints <= 0) + { + if (item->currentAnimState != 9) + { + item->animNumber = Objects[item->objectNumber].animIndex + 11; + item->frameNumber = Anims[item->animNumber].frameBase; + item->currentAnimState = 9; + } + } + else + { + AI_INFO info; + CreatureAIInfo(item, &info); + + if (info.ahead) + head = info.angle; + + GetCreatureMood(item, &info, 1); + + if (creature->alerted && info.zoneNumber != info.enemyZone) + creature->mood = MOOD_TYPE::ESCAPE_MOOD; + + CreatureMood(item, &info, 1); + + angle = CreatureTurn(item, creature->maximumTurn); + + switch (item->currentAnimState) + { + case 1: + creature->maximumTurn = 0; + creature->flags = 0; + + if (creature->mood == MOOD_TYPE::ESCAPE_MOOD) + { + if (Lara.target != item && info.ahead) + item->goalAnimState = 1; + else + item->goalAnimState = 3; + } + else if (creature->mood == MOOD_TYPE::BORED_MOOD) + { + __int16 random = GetRandomControl(); + if (random < 0x60) + item->goalAnimState = 5; + else if (random < 0x460); + item->goalAnimState = 2; + } + else if (info.bite && info.distance < SQUARE(340)) + item->goalAnimState = 6; + else if (info.bite && info.distance < SQUARE(1024)) + { + creature->maximumTurn = ANGLE(3); + item->goalAnimState = 8; + } + else if (item->requiredAnimState) + item->goalAnimState = item->requiredAnimState; + else if (creature->mood != ATTACK_MOOD && GetRandomControl() < 0x60) + item->goalAnimState = 5; + else + item->goalAnimState = 3; + break; + + case 2: + creature->maximumTurn = ANGLE(3); + + if (creature->mood == MOOD_TYPE::ESCAPE_MOOD || creature->mood == MOOD_TYPE::ATTACK_MOOD) + item->goalAnimState = 3; + else if (GetRandomControl() < 0x60) + { + item->goalAnimState = 1; + item->requiredAnimState = 5; + } + break; + + case 3: + creature->maximumTurn = ANGLE(6); + + if (creature->mood == MOOD_TYPE::BORED_MOOD) + item->goalAnimState = 1; + else if (creature->flags && info.ahead) + item->goalAnimState = 1; + else if (info.bite && info.distance < SQUARE(1536)) + { + if (LaraItem->speed == 0) + item->goalAnimState = 1; + else + item->goalAnimState = 7; + } + else if (creature->mood != MOOD_TYPE::ATTACK_MOOD && GetRandomControl() < 0x60) + { + item->requiredAnimState = 5; + item->goalAnimState = 1; + } + else if (creature->mood == MOOD_TYPE::ESCAPE_MOOD && Lara.target != item && info.ahead) + item->goalAnimState = 1; + + creature->flags = 0; + break; + + case 6: + case 7: + case 8: + if (!creature->flags && (item->touchBits & 0x7FDC000)) + { + LaraItem->hitStatus = true; + LaraItem->hitPoints -= 90; + CreatureEffect(item, &tigerBite, DoBloodSplat); + creature->flags = 1; + } + break; + } + } + + CreatureTilt(item, tilt); + CreatureJoint(item, 0, head); + CreatureAnimation(itemNum, angle, tilt); } \ No newline at end of file diff --git a/TR5Main/Objects/objects.h b/TR5Main/Objects/objects.h index 3822e803a..16e37dc06 100644 --- a/TR5Main/Objects/objects.h +++ b/TR5Main/Objects/objects.h @@ -74,3 +74,5 @@ void __cdecl InitialiseKillerStatue(__int16 item_number); void __cdecl KillerStatueControl(__int16 item_number); void __cdecl SpringBoardControl(__int16 item_number); + +void __cdecl TigerControl(__int16 itemNum); diff --git a/TR5Main/Specific/setup.cpp b/TR5Main/Specific/setup.cpp index fb88599e3..d99f40083 100644 --- a/TR5Main/Specific/setup.cpp +++ b/TR5Main/Specific/setup.cpp @@ -49,10 +49,10 @@ void __cdecl NewObjects() obj->saveAnim = true; obj->saveFlags = true; - Bones[obj->boneIndex + 192] |= 0x10; - Bones[obj->boneIndex + 192] |= 0x08; - Bones[obj->boneIndex + 208] |= 0x10; - Bones[obj->boneIndex + 208] |= 0x08; + Bones[obj->boneIndex + 192] |= ROT_Z; + Bones[obj->boneIndex + 192] |= ROT_Y; + Bones[obj->boneIndex + 208] |= ROT_Z; + Bones[obj->boneIndex + 208] |= ROT_Y; } obj = &Objects[ID_BAT]; @@ -142,10 +142,10 @@ void __cdecl NewObjects() obj->saveAnim = true; obj->saveFlags = true; - Bones[obj->boneIndex + 112] |= 0x08; - Bones[obj->boneIndex + 112] |= 0x04; - Bones[obj->boneIndex + 352] |= 0x08; - Bones[obj->boneIndex + 352] |= 0x04; + Bones[obj->boneIndex + 112] |= ROT_Y; + Bones[obj->boneIndex + 112] |= ROT_X; + Bones[obj->boneIndex + 352] |= ROT_Y; + Bones[obj->boneIndex + 352] |= ROT_X; Meshes[obj->meshIndex + 36] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 32]; Meshes[obj->meshIndex + 60] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 56]; @@ -168,10 +168,10 @@ void __cdecl NewObjects() obj->saveAnim = true; obj->saveFlags = true; - Bones[obj->boneIndex + 112] |= 0x08; - Bones[obj->boneIndex + 112] |= 0x04; - Bones[obj->boneIndex + 352] |= 0x08; - Bones[obj->boneIndex + 352] |= 0x04; + Bones[obj->boneIndex + 112] |= ROT_Y; + Bones[obj->boneIndex + 112] |= ROT_X; + Bones[obj->boneIndex + 352] |= ROT_Y; + Bones[obj->boneIndex + 352] |= ROT_X; } obj = &Objects[ID_SAS_CAIRO]; @@ -190,10 +190,10 @@ void __cdecl NewObjects() obj->saveAnim = true; obj->saveFlags = true; - Bones[obj->boneIndex] |= 0x08; - Bones[obj->boneIndex] |= 0x04; - Bones[obj->boneIndex + 112] |= 0x08; - Bones[obj->boneIndex + 112] |= 0x04; + Bones[obj->boneIndex] |= ROT_Y; + Bones[obj->boneIndex] |= ROT_X; + Bones[obj->boneIndex + 112] |= ROT_Y; + Bones[obj->boneIndex + 112] |= ROT_X; } obj = &Objects[ID_MUMMY]; @@ -211,9 +211,9 @@ void __cdecl NewObjects() obj->saveAnim = true; obj->saveFlags = true; - Bones[obj->boneIndex + 112] |= 0x08; - Bones[obj->boneIndex + 112] |= 0x04; - Bones[obj->boneIndex + 288] |= 0x08; + Bones[obj->boneIndex + 112] |= ROT_Y; + Bones[obj->boneIndex + 112] |= ROT_X; + Bones[obj->boneIndex + 288] |= ROT_Y; } obj = &Objects[ID_QUAD]; @@ -280,7 +280,25 @@ void __cdecl NewObjects() { obj->control = SpringBoardControl; obj->saveAnim = true; - obj->saveFlags = true;; + obj->saveFlags = true; + } + + obj = &Objects[ID_TIGER]; + if (obj->loaded) + { + obj->control = TigerControl; + obj->collision = CreatureCollision; + obj->shadowSize = 128; + obj->hitPoints = 24; + obj->pivotLength = 200; + obj->radius = 340; + obj->intelligent = true; + obj->savePosition = true; + obj->saveHitpoints = true; + obj->saveAnim = true; + obj->saveFlags = true; + + Bones[obj->boneIndex + 21 * 4] |= ROT_Y; } /* @@ -293,24 +311,6 @@ void __cdecl NewObjects() obj->saveFlags = true; } - obj = &Objects[ID_TIGER]; - if (obj->loaded) - { - obj->control = TigerControl; - obj->collision = CreatureCollision; - obj->shadowSize = UNIT_SHADOW / 2; - obj->hitPoints = TIGER_hitPoints; - obj->pivotLength = 200; - obj->radius = TIGER_RADIUS; - obj->intelligent = true; - obj->savePosition = true; - obj->saveHitpoints = true; - obj->saveAnim = true; - obj->saveFlags = true; - - Bones[obj->boneIndex + 21 * 4] |= ROT_Y; - } - obj = &Objects[ID_COBRA]; if (obj->loaded) {