Refactor lara_flare.cpp

This commit is contained in:
Sezz 2021-11-20 13:18:59 +11:00
parent 7d76a5825b
commit f30ae8839e
12 changed files with 166 additions and 156 deletions

View file

@ -403,7 +403,7 @@ void LaraGun()
if (Lara.gunType == WEAPON_FLARE) if (Lara.gunType == WEAPON_FLARE)
{ {
CreateFlare(LaraItem, ID_FLARE_ITEM, 0); CreateFlare(LaraItem, ID_FLARE_ITEM, 0);
undraw_flare_meshes(); undraw_flare_meshes(LaraItem);
Lara.flareControlLeft = false; Lara.flareControlLeft = false;
Lara.flareAge = 0; Lara.flareAge = 0;
} }
@ -577,8 +577,8 @@ void LaraGun()
Lara.flareControlLeft = false; Lara.flareControlLeft = false;
} }
DoFlareInHand(Lara.flareAge); DoFlareInHand(LaraItem, Lara.flareAge);
set_flare_arm(Lara.leftArm.frameNumber); set_flare_arm(LaraItem, Lara.leftArm.frameNumber);
} }
break; break;
@ -588,8 +588,8 @@ void LaraGun()
if (Lara.meshPtrs[LM_LHAND] == Objects[ID_LARA_FLARE_ANIM].meshIndex + LM_LHAND) if (Lara.meshPtrs[LM_LHAND] == Objects[ID_LARA_FLARE_ANIM].meshIndex + LM_LHAND)
{ {
Lara.flareControlLeft = (Lara.Vehicle != NO_ITEM || CheckForHoldingState(LaraItem->currentAnimState)); Lara.flareControlLeft = (Lara.Vehicle != NO_ITEM || CheckForHoldingState(LaraItem->currentAnimState));
DoFlareInHand(Lara.flareAge); DoFlareInHand(LaraItem, Lara.flareAge);
set_flare_arm(Lara.leftArm.frameNumber); set_flare_arm(LaraItem, Lara.leftArm.frameNumber);
} }
} }
break; break;
@ -642,7 +642,7 @@ void InitialiseNewWeapon()
Lara.rightArm.frameBase = Objects[ID_LARA_FLARE_ANIM].frameBase; Lara.rightArm.frameBase = Objects[ID_LARA_FLARE_ANIM].frameBase;
Lara.leftArm.frameBase = Objects[ID_LARA_FLARE_ANIM].frameBase; Lara.leftArm.frameBase = Objects[ID_LARA_FLARE_ANIM].frameBase;
if (Lara.gunStatus != LG_NO_ARMS) if (Lara.gunStatus != LG_NO_ARMS)
draw_flare_meshes(); draw_flare_meshes(LaraItem);
break; break;
default: default:

View file

@ -21,54 +21,54 @@ using namespace TEN::Math::Random;
void FlareControl(short itemNumber) void FlareControl(short itemNumber)
{ {
ITEM_INFO* item = &g_Level.Items[itemNumber]; ITEM_INFO* flare = &g_Level.Items[itemNumber];
if (TestLaraSwamp(item)) if (TestLaraSwamp(flare))
{ {
KillItem(itemNumber); KillItem(itemNumber);
return; return;
} }
if (item->fallspeed) if (flare->fallspeed)
{ {
item->pos.xRot += ANGLE(3.0f); flare->pos.xRot += ANGLE(3.0f);
item->pos.zRot += ANGLE(5.0f); flare->pos.zRot += ANGLE(5.0f);
} }
else else
{ {
item->pos.xRot = 0; flare->pos.xRot = 0;
item->pos.zRot = 0; flare->pos.zRot = 0;
} }
auto oldX = item->pos.xPos; auto oldX = flare->pos.xPos;
auto oldY = item->pos.yPos; auto oldY = flare->pos.yPos;
auto oldZ = item->pos.zPos; auto oldZ = flare->pos.zPos;
int xv = item->speed * phd_sin(item->pos.yRot); int xv = flare->speed * phd_sin(flare->pos.yRot);
int zv = item->speed * phd_cos(item->pos.yRot); int zv = flare->speed * phd_cos(flare->pos.yRot);
item->pos.xPos += xv; flare->pos.xPos += xv;
item->pos.zPos += zv; flare->pos.zPos += zv;
if (TestLaraWater(item) || TestLaraSwamp(item)) // TODO: Generic water/swamp test function. if (TestLaraWater(flare) || TestLaraSwamp(flare)) // TODO: Generic water/swamp test function.
{ {
item->fallspeed += (5 - item->fallspeed) / 2; flare->fallspeed += (5 - flare->fallspeed) / 2;
item->speed += (5 - item->speed) / 2; flare->speed += (5 - flare->speed) / 2;
} }
else else
item->fallspeed += 6; flare->fallspeed += 6;
item->pos.yPos += item->fallspeed; flare->pos.yPos += flare->fallspeed;
DoProjectileDynamics(itemNumber, oldX, oldY, oldZ, xv, item->fallspeed, zv); DoProjectileDynamics(itemNumber, oldX, oldY, oldZ, xv, flare->fallspeed, zv);
short& age = item->data; short& age = flare->data;
age &= 0x7FFF; age &= 0x7FFF;
if (age >= FLARE_AGE) if (age >= FLARE_AGE)
{ {
if (!item->fallspeed && !item->speed) if (!flare->fallspeed && !flare->speed)
{ {
KillItem(itemNumber); KillItem(itemNumber);
@ -78,96 +78,104 @@ void FlareControl(short itemNumber)
else else
age++; age++;
if (DoFlareLight((PHD_VECTOR*)&item->pos, age)) if (DoFlareLight((PHD_VECTOR*)&flare->pos, age))
{ {
TriggerChaffEffects(item,age); TriggerChaffEffects(flare,age);
/* Hardcoded code */ /* Hardcoded code */
age |= 0x8000; age |= 0x8000;
} }
} }
void ready_flare() void ready_flare(ITEM_INFO* lara)
{ {
Lara.gunStatus = LG_NO_ARMS; LaraInfo*& info = lara->data;
Lara.leftArm.zRot = 0;
Lara.leftArm.yRot = 0; info->gunStatus = LG_NO_ARMS;
Lara.leftArm.xRot = 0; info->leftArm.zRot = 0;
Lara.rightArm.zRot = 0; info->leftArm.yRot = 0;
Lara.rightArm.yRot = 0; info->leftArm.xRot = 0;
Lara.rightArm.xRot = 0; info->rightArm.zRot = 0;
Lara.rightArm.lock = false; info->rightArm.yRot = 0;
Lara.leftArm.lock = false; info->rightArm.xRot = 0;
Lara.target = NULL; info->rightArm.lock = false;
info->leftArm.lock = false;
info->target = NULL;
} }
void undraw_flare_meshes() void undraw_flare_meshes(ITEM_INFO* lara)
{ {
Lara.meshPtrs[LM_LHAND] = Objects[ID_LARA_SKIN].meshIndex + LM_LHAND; LaraInfo*& info = lara->data;
info->meshPtrs[LM_LHAND] = Objects[ID_LARA_SKIN].meshIndex + LM_LHAND;
} }
void draw_flare_meshes() void draw_flare_meshes(ITEM_INFO * lara)
{ {
Lara.meshPtrs[LM_LHAND] = Objects[ID_LARA_FLARE_ANIM].meshIndex + LM_LHAND; LaraInfo*& info = lara->data;
info->meshPtrs[LM_LHAND] = Objects[ID_LARA_FLARE_ANIM].meshIndex + LM_LHAND;
} }
void undraw_flare(ITEM_INFO* item) void undraw_flare(ITEM_INFO* lara)
{ {
Lara.flareControlLeft = true; LaraInfo*& info = lara->data;
short frame1 = Lara.flareFrame; info->flareControlLeft = true;
short frame2 = Lara.leftArm.frameNumber;
if (item->goalAnimState == LS_STOP short frame1 = info->flareFrame;
&& Lara.Vehicle == NO_ITEM) short frame2 = info->leftArm.frameNumber;
if (lara->goalAnimState == LS_STOP
&& info->Vehicle == NO_ITEM)
{ {
if (item->animNumber == LA_STAND_IDLE) if (lara->animNumber == LA_STAND_IDLE)
{ {
item->animNumber = LA_DISCARD_FLARE; lara->animNumber = LA_DISCARD_FLARE;
frame1 = frame2 + g_Level.Anims[item->animNumber].frameBase; frame1 = frame2 + g_Level.Anims[lara->animNumber].frameBase;
Lara.flareFrame = frame1; info->flareFrame = frame1;
item->frameNumber = frame1; lara->frameNumber = frame1;
} }
if (item->animNumber == LA_DISCARD_FLARE) if (lara->animNumber == LA_DISCARD_FLARE)
{ {
Lara.flareControlLeft = false; info->flareControlLeft = false;
if (frame1 >= g_Level.Anims[item->animNumber].frameBase + 31) if (frame1 >= g_Level.Anims[lara->animNumber].frameBase + 31)
{ {
Lara.requestGunType = Lara.lastGunType; info->requestGunType = info->lastGunType;
Lara.gunType = Lara.lastGunType; info->gunType = info->lastGunType;
Lara.gunStatus = LG_NO_ARMS; info->gunStatus = LG_NO_ARMS;
InitialiseNewWeapon(); InitialiseNewWeapon();
Lara.target = NULL; info->target = NULL;
Lara.rightArm.lock = false; info->rightArm.lock = false;
Lara.leftArm.lock = false; info->leftArm.lock = false;
SetAnimation(item, LA_STAND_SOLID); SetAnimation(lara, LA_STAND_SOLID);
Lara.flareFrame = g_Level.Anims[item->animNumber].frameBase; info->flareFrame = g_Level.Anims[lara->animNumber].frameBase;
return; return;
} }
Lara.flareFrame++; info->flareFrame++;
} }
} }
else if (item->animNumber == LA_DISCARD_FLARE) else if (lara->animNumber == LA_DISCARD_FLARE)
{ {
item->animNumber = LA_STAND_SOLID; lara->animNumber = LA_STAND_SOLID;
item->frameNumber = g_Level.Anims[item->animNumber].frameBase; lara->frameNumber = g_Level.Anims[lara->animNumber].frameBase;
} }
if (frame2 >= 33 && frame2 < 72) if (frame2 >= 33 && frame2 < 72)
{ {
frame2 = 2; frame2 = 2;
DoFlareInHand(Lara.flareAge); DoFlareInHand(lara, info->flareAge);
} }
else if (!frame2) else if (!frame2)
{ {
frame2 = 1; frame2 = 1;
DoFlareInHand(Lara.flareAge); DoFlareInHand(lara, info->flareAge);
} }
else if (frame2 >= 72 && frame2 < 95) else if (frame2 >= 72 && frame2 < 95)
{ {
@ -176,7 +184,7 @@ void undraw_flare(ITEM_INFO* item)
if (frame2 == 94) if (frame2 == 94)
{ {
frame2 = 1; frame2 = 1;
DoFlareInHand(Lara.flareAge); DoFlareInHand(lara, info->flareAge);
} }
} }
else if (frame2 >= 1 && frame2 < 33) else if (frame2 >= 1 && frame2 < 33)
@ -185,27 +193,27 @@ void undraw_flare(ITEM_INFO* item)
if (frame2 == 21) if (frame2 == 21)
{ {
CreateFlare(item, ID_FLARE_ITEM, 1); CreateFlare(lara, ID_FLARE_ITEM, 1);
undraw_flare_meshes(); undraw_flare_meshes(lara);
Lara.flareAge = 0; info->flareAge = 0;
} }
else if (frame2 == 33) else if (frame2 == 33)
{ {
frame2 = 0; frame2 = 0;
Lara.requestGunType = Lara.lastGunType; info->requestGunType = info->lastGunType;
Lara.gunType = Lara.lastGunType; info->gunType = info->lastGunType;
Lara.gunStatus = LG_NO_ARMS; info->gunStatus = LG_NO_ARMS;
InitialiseNewWeapon(); InitialiseNewWeapon();
Lara.flareControlLeft = false; info->flareControlLeft = false;
Lara.target = NULL; info->target = NULL;
Lara.rightArm.lock = false; info->rightArm.lock = false;
Lara.leftArm.lock = false; info->leftArm.lock = false;
Lara.flareFrame = 0; info->flareFrame = 0;
} }
else if (frame2 < 21) else if (frame2 < 21)
DoFlareInHand(Lara.flareAge); DoFlareInHand(lara, info->flareAge);
} }
else if (frame2 >= 95 && frame2 < 110) else if (frame2 >= 95 && frame2 < 110)
{ {
@ -214,62 +222,64 @@ void undraw_flare(ITEM_INFO* item)
if (frame2 == 110) if (frame2 == 110)
{ {
frame2 = 1; frame2 = 1;
DoFlareInHand(Lara.flareAge); DoFlareInHand(lara, info->flareAge);
} }
} }
Lara.leftArm.frameNumber = frame2; info->leftArm.frameNumber = frame2;
set_flare_arm(Lara.leftArm.frameNumber); set_flare_arm(lara, info->leftArm.frameNumber);
} }
void draw_flare(ITEM_INFO* item) void draw_flare(ITEM_INFO* lara)
{ {
LaraInfo*& info = lara->data;
short frame; short frame;
if (item->currentAnimState == LS_PICKUP_FLARE || if (lara->currentAnimState == LS_PICKUP_FLARE ||
item->currentAnimState == LS_PICKUP) lara->currentAnimState == LS_PICKUP)
{ {
DoFlareInHand(Lara.flareAge); DoFlareInHand(lara, info->flareAge);
Lara.flareControlLeft = false; info->flareControlLeft = false;
Lara.leftArm.frameNumber = 93; info->leftArm.frameNumber = 93;
set_flare_arm(93); set_flare_arm(lara, 93);
} }
else else
{ {
frame = Lara.leftArm.frameNumber + 1; frame = info->leftArm.frameNumber + 1;
Lara.flareControlLeft = true; info->flareControlLeft = true;
if (frame < 33 || frame > 94) if (frame < 33 || frame > 94)
frame = 33; frame = 33;
else if (frame == 46) else if (frame == 46)
draw_flare_meshes(); draw_flare_meshes(lara);
else if (frame >= 72 && frame <= 93) else if (frame >= 72 && frame <= 93)
{ {
if (frame == 72) if (frame == 72)
{ {
SoundEffect(SFX_TR4_OBJ_GEM_SMASH, &item->pos, TestLaraWater(item)); SoundEffect(SFX_TR4_OBJ_GEM_SMASH, &lara->pos, TestLaraWater(lara));
Lara.flareAge = 1; info->flareAge = 1;
} }
DoFlareInHand(Lara.flareAge); DoFlareInHand(lara, info->flareAge);
} }
else else
{ {
if (frame == 94) if (frame == 94)
{ {
ready_flare(); ready_flare(LaraItem);
frame = 0; frame = 0;
DoFlareInHand(Lara.flareAge); DoFlareInHand(lara, info->flareAge);
} }
} }
Lara.leftArm.frameNumber = frame; info->leftArm.frameNumber = frame;
set_flare_arm(frame); set_flare_arm(lara, frame);
} }
} }
void set_flare_arm(int frame) void set_flare_arm(ITEM_INFO* lara, int frame)
{ {
LaraInfo*& info = lara->data;
short anim = Objects[ID_LARA_FLARE_ANIM].animIndex; short anim = Objects[ID_LARA_FLARE_ANIM].animIndex;
if (frame >= 95) if (frame >= 95)
@ -281,19 +291,21 @@ void set_flare_arm(int frame)
else if (frame >= 1) else if (frame >= 1)
anim += 1; anim += 1;
Lara.leftArm.animNumber = anim; info->leftArm.animNumber = anim;
Lara.leftArm.frameBase = g_Level.Anims[anim].framePtr; info->leftArm.frameBase = g_Level.Anims[anim].framePtr;
} }
void CreateFlare(ITEM_INFO* l, GAME_OBJECT_ID objectNum, int thrown) void CreateFlare(ITEM_INFO* lara, GAME_OBJECT_ID objectNum, int thrown)
{ {
LaraInfo*& info = lara->data;
short itemNum = CreateItem(); short itemNum = CreateItem();
if (itemNum != NO_ITEM) if (itemNum != NO_ITEM)
{ {
bool flag = false; bool flag = false;
ITEM_INFO* item = &g_Level.Items[itemNum]; ITEM_INFO* item = &g_Level.Items[itemNum];
item->objectNumber = objectNum; item->objectNumber = objectNum;
item->roomNumber = l->roomNumber; item->roomNumber = lara->roomNumber;
PHD_VECTOR pos; PHD_VECTOR pos;
pos.x = -16; pos.x = -16;
@ -306,25 +318,25 @@ void CreateFlare(ITEM_INFO* l, GAME_OBJECT_ID objectNum, int thrown)
item->pos.yPos = pos.y; item->pos.yPos = pos.y;
item->pos.zPos = pos.z; item->pos.zPos = pos.z;
auto probe = GetCollisionResult(pos.x, pos.y, pos.z, l->roomNumber); auto probe = GetCollisionResult(pos.x, pos.y, pos.z, lara->roomNumber);
auto floorHeight = probe.Position.Floor; auto floorHeight = probe.Position.Floor;
auto collided = GetCollidedObjects(item, 0, 1, CollidedItems, CollidedMeshes, true); auto collided = GetCollidedObjects(item, 0, 1, CollidedItems, CollidedMeshes, true);
if (collided || floorHeight < pos.y) if (collided || floorHeight < pos.y)
{ {
flag = true; flag = true;
item->pos.yRot = l->pos.yRot + ANGLE(180.0f); item->pos.yRot = lara->pos.yRot + ANGLE(180.0f);
item->pos.xPos = l->pos.xPos + 320 * phd_sin(item->pos.yRot); item->pos.xPos = lara->pos.xPos + 320 * phd_sin(item->pos.yRot);
item->pos.zPos = l->pos.zPos + 320 * phd_cos(item->pos.yRot); item->pos.zPos = lara->pos.zPos + 320 * phd_cos(item->pos.yRot);
item->roomNumber = l->roomNumber; item->roomNumber = lara->roomNumber;
} }
else else
{ {
if (thrown) if (thrown)
item->pos.yRot = l->pos.yRot; item->pos.yRot = lara->pos.yRot;
else else
item->pos.yRot = l->pos.yRot - ANGLE(45.0f); item->pos.yRot = lara->pos.yRot - ANGLE(45.0f);
item->roomNumber = l->roomNumber; item->roomNumber = lara->roomNumber;
} }
InitialiseItem(itemNum); InitialiseItem(itemNum);
@ -335,13 +347,13 @@ void CreateFlare(ITEM_INFO* l, GAME_OBJECT_ID objectNum, int thrown)
if (thrown) if (thrown)
{ {
item->speed = l->speed + 50; item->speed = lara->speed + 50;
item->fallspeed = l->fallspeed - 50; item->fallspeed = lara->fallspeed - 50;
} }
else else
{ {
item->speed = l->speed + 10; item->speed = lara->speed + 10;
item->fallspeed = l->fallspeed + 50; item->fallspeed = lara->fallspeed + 50;
} }
if (flag) if (flag)
@ -351,13 +363,13 @@ void CreateFlare(ITEM_INFO* l, GAME_OBJECT_ID objectNum, int thrown)
{ {
item->data = (short)0; item->data = (short)0;
short& age = item->data; short& age = item->data;
if (DoFlareLight((PHD_VECTOR*)&item->pos, Lara.flareAge)) if (DoFlareLight((PHD_VECTOR*)&item->pos, info->flareAge))
age = (Lara.flareAge | 0x8000); age = (info->flareAge | 0x8000);
else else
age = (Lara.flareAge & 0x7FFF); age = (info->flareAge & 0x7FFF);
} }
else else
item->itemFlags[3] = Lara.litTorch; item->itemFlags[3] = info->litTorch;
AddActiveItem(itemNum); AddActiveItem(itemNum);
item->status = ITEM_ACTIVE; item->status = ITEM_ACTIVE;
@ -369,12 +381,10 @@ void DrawFlareInAir(ITEM_INFO* item)
TENLog("DrawFlareInAir() not implemented!", LogLevel::Warning); TENLog("DrawFlareInAir() not implemented!", LogLevel::Warning);
} }
void DoFlareInHand(int flare_age) void DoFlareInHand(ITEM_INFO* lara, int flare_age)
{ {
PHD_VECTOR pos; LaraInfo*& info = lara->data;
pos.x = 11; PHD_VECTOR pos = { 11, 32, 41 };
pos.y = 32;
pos.z = 41;
GetLaraJointPosition(&pos, LM_LHAND); GetLaraJointPosition(&pos, LM_LHAND);
if (DoFlareLight(&pos, flare_age)) if (DoFlareLight(&pos, flare_age))
@ -382,13 +392,13 @@ void DoFlareInHand(int flare_age)
/* Hardcoded code */ /* Hardcoded code */
if (Lara.flareAge >= FLARE_AGE) if (info->flareAge >= FLARE_AGE)
{ {
if (Lara.gunStatus == LG_NO_ARMS) if (info->gunStatus == LG_NO_ARMS)
Lara.gunStatus = LG_UNDRAW_GUNS; info->gunStatus = LG_UNDRAW_GUNS;
} }
else if (Lara.flareAge != 0) else if (info->flareAge != 0)
Lara.flareAge++; info->flareAge++;
} }
int DoFlareLight(PHD_VECTOR* pos, int age) int DoFlareLight(PHD_VECTOR* pos, int age)

View file

@ -5,16 +5,16 @@ struct COLL_INFO;
struct PHD_VECTOR; struct PHD_VECTOR;
enum GAME_OBJECT_ID : short; enum GAME_OBJECT_ID : short;
constexpr auto FLARE_AGE = 30 * 30; //30 seconds * 30 frames constexpr auto FLARE_AGE = 30 * 30; // 30 seconds * 30 frames
void FlareControl(short item_number); void FlareControl(short item_number);
void ready_flare(); void ready_flare(ITEM_INFO* lara);
void undraw_flare_meshes(); void undraw_flare_meshes(ITEM_INFO* lara);
void draw_flare_meshes(); void draw_flare_meshes(ITEM_INFO* lara);
void undraw_flare(ITEM_INFO* item); void undraw_flare(ITEM_INFO* lara);
void draw_flare(ITEM_INFO* item); void draw_flare(ITEM_INFO* lara);
void set_flare_arm(int frame); void set_flare_arm(ITEM_INFO* lara, int frame);
void CreateFlare(ITEM_INFO* l, GAME_OBJECT_ID object, int thrown); void CreateFlare(ITEM_INFO* lara, GAME_OBJECT_ID object, int thrown);
void DrawFlareInAir(ITEM_INFO* item); void DrawFlareInAir(ITEM_INFO* item);
void DoFlareInHand(int flare_age); void DoFlareInHand(ITEM_INFO* lara, int flare_age);
int DoFlareLight(PHD_VECTOR* pos, int flare_age); int DoFlareLight(PHD_VECTOR* pos, int flare_age);

View file

@ -176,7 +176,7 @@ void DoPickup()
InitialiseNewWeapon(); InitialiseNewWeapon();
Lara.gunStatus = LG_SPECIAL; Lara.gunStatus = LG_SPECIAL;
Lara.flareAge = (int)(item->data) & 0x7FFF; Lara.flareAge = (int)(item->data) & 0x7FFF;
draw_flare_meshes(); draw_flare_meshes(LaraItem);
KillItem(pickupitem); KillItem(pickupitem);
item->pos.xRot = oldXrot; item->pos.xRot = oldXrot;

View file

@ -665,7 +665,7 @@ void SkidooCollision(short itemNum, ITEM_INFO* lara, COLL_INFO* coll)
if (laraInfo->gunType == WEAPON_FLARE) if (laraInfo->gunType == WEAPON_FLARE)
{ {
CreateFlare(lara, ID_FLARE_ITEM, false); CreateFlare(lara, ID_FLARE_ITEM, false);
undraw_flare_meshes(); undraw_flare_meshes(lara);
laraInfo->flareControlLeft = 0; laraInfo->flareControlLeft = 0;
laraInfo->requestGunType = WEAPON_NONE; laraInfo->requestGunType = WEAPON_NONE;
laraInfo->gunStatus = LG_NO_ARMS; laraInfo->gunStatus = LG_NO_ARMS;

View file

@ -141,8 +141,8 @@ void BigGunCollision(short itemNum, ITEM_INFO* lara, COLL_INFO* coll)
if (laraInfo->gunType == WEAPON_FLARE) if (laraInfo->gunType == WEAPON_FLARE)
{ {
CreateFlare(LaraItem, ID_FLARE_ITEM, 0); CreateFlare(lara, ID_FLARE_ITEM, 0);
undraw_flare_meshes(); undraw_flare_meshes(lara);
laraInfo->flareControlLeft = false; laraInfo->flareControlLeft = false;
laraInfo->requestGunType = WEAPON_NONE; laraInfo->requestGunType = WEAPON_NONE;

View file

@ -1206,7 +1206,7 @@ void KayakCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll)
if (Lara.gunType == WEAPON_FLARE) if (Lara.gunType == WEAPON_FLARE)
{ {
CreateFlare(LaraItem, ID_FLARE_ITEM, 0); CreateFlare(LaraItem, ID_FLARE_ITEM, 0);
undraw_flare_meshes(); undraw_flare_meshes(l);
Lara.flareControlLeft = 0; Lara.flareControlLeft = 0;
Lara.requestGunType = Lara.gunType = WEAPON_NONE; Lara.requestGunType = Lara.gunType = WEAPON_NONE;
} }

View file

@ -787,7 +787,7 @@ void MineCartCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
if (Lara.gunType == WEAPON_FLARE) if (Lara.gunType == WEAPON_FLARE)
{ {
CreateFlare(LaraItem, ID_FLARE_ITEM, FALSE); CreateFlare(LaraItem, ID_FLARE_ITEM, FALSE);
undraw_flare_meshes(); undraw_flare_meshes(l);
Lara.flareControlLeft = false; Lara.flareControlLeft = false;
Lara.requestGunType = Lara.gunType = WEAPON_NONE; Lara.requestGunType = Lara.gunType = WEAPON_NONE;
} }

View file

@ -1182,7 +1182,7 @@ void QuadBikeCollision(short itemNumber, ITEM_INFO* lara, COLL_INFO* coll)
if (laraInfo->gunType == WEAPON_FLARE) if (laraInfo->gunType == WEAPON_FLARE)
{ {
CreateFlare(lara, ID_FLARE_ITEM, 0); CreateFlare(lara, ID_FLARE_ITEM, 0);
undraw_flare_meshes(); undraw_flare_meshes(lara);
laraInfo->flareControlLeft = 0; laraInfo->flareControlLeft = 0;
laraInfo->requestGunType = laraInfo->gunType = WEAPON_NONE; laraInfo->requestGunType = laraInfo->gunType = WEAPON_NONE;
} }

View file

@ -872,7 +872,7 @@ void SubCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
if (Lara.gunType == WEAPON_FLARE) if (Lara.gunType == WEAPON_FLARE)
{ {
CreateFlare(LaraItem, ID_FLARE_ITEM, 0); CreateFlare(LaraItem, ID_FLARE_ITEM, 0);
undraw_flare_meshes(); undraw_flare_meshes(l);
Lara.flareControlLeft = false; Lara.flareControlLeft = false;
Lara.requestGunType = Lara.gunType = WEAPON_NONE; Lara.requestGunType = Lara.gunType = WEAPON_NONE;
} }

View file

@ -1499,7 +1499,7 @@ void JeepCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll)
if (Lara.gunType == WEAPON_FLARE) if (Lara.gunType == WEAPON_FLARE)
{ {
CreateFlare(LaraItem, ID_FLARE_ITEM, 0); CreateFlare(LaraItem, ID_FLARE_ITEM, 0);
undraw_flare_meshes(); undraw_flare_meshes(l);
Lara.flareControlLeft = 0; Lara.flareControlLeft = 0;
Lara.requestGunType = WEAPON_NONE; Lara.requestGunType = WEAPON_NONE;
Lara.gunType = WEAPON_NONE; Lara.gunType = WEAPON_NONE;

View file

@ -357,7 +357,7 @@ void MotorbikeCollision(short itemNumber, ITEM_INFO* laraitem, COLL_INFO* coll)
if (Lara.gunType == WEAPON_FLARE) if (Lara.gunType == WEAPON_FLARE)
{ {
CreateFlare(LaraItem, ID_FLARE_ITEM, FALSE); CreateFlare(LaraItem, ID_FLARE_ITEM, FALSE);
undraw_flare_meshes(); undraw_flare_meshes(laraitem);
Lara.flareControlLeft = false; Lara.flareControlLeft = false;
Lara.gunType = WEAPON_NONE; Lara.gunType = WEAPON_NONE;
Lara.requestGunType = WEAPON_NONE; Lara.requestGunType = WEAPON_NONE;