2018-08-19 09:46:58 +02:00
|
|
|
#pragma once
|
2020-05-30 15:55:23 +02:00
|
|
|
#include "phd_global.h"
|
|
|
|
#include "items.h"
|
2018-08-19 09:46:58 +02:00
|
|
|
|
2020-05-30 15:55:23 +02:00
|
|
|
typedef struct ENERGY_ARC
|
Decompiled ID_DARTS, ID_DART_EMITTER, ID_FALLING_CEILING, ID_PROPELLER_H, ID_PROPELLER_V, KillAllTriggersControl, InitialiseFlameEmitter, FlameEmitterCollision, InitialiseFlameEmitter2 , GenSlot1Control, InitialiseGenSlot3, InitialiseGenSlot4;
2020-01-28 07:30:58 +01:00
|
|
|
{
|
2020-05-30 15:55:23 +02:00
|
|
|
PHD_VECTOR pos1;
|
2020-04-05 08:15:56 +02:00
|
|
|
PHD_VECTOR pos2;
|
2020-05-30 15:55:23 +02:00
|
|
|
PHD_VECTOR pos3;
|
|
|
|
PHD_VECTOR pos4;
|
|
|
|
byte r;
|
|
|
|
byte g;
|
|
|
|
byte b;
|
|
|
|
short sLife;
|
|
|
|
short life;
|
2020-03-18 20:22:58 +01:00
|
|
|
short amplitude;
|
2020-05-30 15:55:23 +02:00
|
|
|
short segmentSize;
|
|
|
|
short sAmplitude;
|
|
|
|
byte type;
|
|
|
|
byte flags;
|
|
|
|
signed char direction;
|
2020-04-05 08:15:56 +02:00
|
|
|
short rotation;
|
|
|
|
short filler;
|
Decompiled ID_DARTS, ID_DART_EMITTER, ID_FALLING_CEILING, ID_PROPELLER_H, ID_PROPELLER_V, KillAllTriggersControl, InitialiseFlameEmitter, FlameEmitterCollision, InitialiseFlameEmitter2 , GenSlot1Control, InitialiseGenSlot3, InitialiseGenSlot4;
2020-01-28 07:30:58 +01:00
|
|
|
};
|
|
|
|
|
2020-05-30 15:55:23 +02:00
|
|
|
typedef struct SMOKE_SPARKS
|
|
|
|
{
|
|
|
|
int x;
|
|
|
|
int y;
|
|
|
|
int z;
|
|
|
|
short xVel;
|
|
|
|
short yVel;
|
|
|
|
short zVel;
|
|
|
|
short gravity;
|
|
|
|
short rotAng;
|
|
|
|
short flags;
|
|
|
|
byte sSize;
|
|
|
|
byte dSize;
|
|
|
|
byte size;
|
|
|
|
byte friction;
|
|
|
|
byte scalar;
|
|
|
|
byte def;
|
|
|
|
signed char rotAdd;
|
|
|
|
signed char maxYvel;
|
|
|
|
byte on;
|
|
|
|
byte sShade;
|
|
|
|
byte dShade;
|
|
|
|
byte shade;
|
|
|
|
byte colFadeSpeed;
|
|
|
|
byte fadeToBlack;
|
|
|
|
signed char sLife;
|
|
|
|
signed char life;
|
|
|
|
byte transType;
|
|
|
|
byte fxObj;
|
|
|
|
byte nodeNumber;
|
|
|
|
byte mirror;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct GUNFLASH_STRUCT
|
|
|
|
{
|
|
|
|
MATRIX3D matrix;
|
|
|
|
short on;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct SHOCKWAVE_STRUCT
|
|
|
|
{
|
|
|
|
int x;
|
|
|
|
int y;
|
|
|
|
int z;
|
|
|
|
short innerRad;
|
|
|
|
short outerRad;
|
|
|
|
short xRot;
|
|
|
|
short flags;
|
|
|
|
unsigned char r;
|
|
|
|
unsigned char g;
|
|
|
|
unsigned char b;
|
|
|
|
unsigned char life;
|
|
|
|
short speed;
|
|
|
|
short temp;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct GUNSHELL_STRUCT
|
|
|
|
{
|
|
|
|
PHD_3DPOS pos;
|
|
|
|
short fallspeed;
|
|
|
|
short roomNumber;
|
|
|
|
short speed;
|
|
|
|
short counter;
|
|
|
|
short dirXrot;
|
|
|
|
short objectNumber;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct DRIP_STRUCT
|
|
|
|
{
|
|
|
|
int x;
|
|
|
|
int y;
|
|
|
|
int z;
|
|
|
|
byte on;
|
|
|
|
byte r;
|
|
|
|
byte g;
|
|
|
|
byte b;
|
|
|
|
short yVel;
|
|
|
|
byte gravity;
|
|
|
|
byte life;
|
|
|
|
short roomNumber;
|
|
|
|
byte outside;
|
|
|
|
byte pad;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct FIRE_LIST
|
|
|
|
{
|
|
|
|
int x;
|
|
|
|
int y;
|
|
|
|
int z;
|
|
|
|
byte on;
|
|
|
|
byte size;
|
|
|
|
short roomNumber;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct FIRE_SPARKS
|
|
|
|
{
|
|
|
|
short x;
|
|
|
|
short y;
|
|
|
|
short z;
|
|
|
|
short xVel;
|
|
|
|
short yVel;
|
|
|
|
short zVel;
|
|
|
|
short gravity;
|
|
|
|
short rotAng;
|
|
|
|
short flags;
|
|
|
|
unsigned char sSize;
|
|
|
|
unsigned char dSize;
|
|
|
|
unsigned char size;
|
|
|
|
unsigned char friction;
|
|
|
|
unsigned char scalar;
|
|
|
|
unsigned char def;
|
|
|
|
signed char rotAdd;
|
|
|
|
signed char maxYvel;
|
|
|
|
unsigned char on;
|
|
|
|
unsigned char sR;
|
|
|
|
unsigned char sG;
|
|
|
|
unsigned char sB;
|
|
|
|
unsigned char dR;
|
|
|
|
unsigned char dG;
|
|
|
|
unsigned char dB;
|
|
|
|
unsigned char r;
|
|
|
|
unsigned char g;
|
|
|
|
unsigned char b;
|
|
|
|
unsigned char colFadeSpeed;
|
|
|
|
unsigned char fadeToBlack;
|
|
|
|
unsigned char sLife;
|
|
|
|
unsigned char life;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct BLOOD_STRUCT
|
|
|
|
{
|
|
|
|
int x;
|
|
|
|
int y;
|
|
|
|
int z;
|
|
|
|
short xVel;
|
|
|
|
short yVel;
|
|
|
|
short zVel;
|
|
|
|
short gravity;
|
|
|
|
short rotAng;
|
|
|
|
unsigned char sSize;
|
|
|
|
unsigned char dSize;
|
|
|
|
unsigned char size;
|
|
|
|
unsigned char friction;
|
|
|
|
byte rotAdd;
|
|
|
|
unsigned char on;
|
|
|
|
unsigned char sShade;
|
|
|
|
unsigned char dShade;
|
|
|
|
unsigned char shade;
|
|
|
|
unsigned char colFadeSpeed;
|
|
|
|
unsigned char fadeToBlack;
|
|
|
|
byte sLife;
|
|
|
|
byte life;
|
|
|
|
byte pad;
|
|
|
|
};
|
|
|
|
|
2020-03-19 20:15:15 +01:00
|
|
|
#define ENERGY_ARC_STRAIGHT_LINE 0
|
|
|
|
#define ENERGY_ARC_CIRCLE 1
|
2020-03-22 12:27:12 +01:00
|
|
|
#define ENERGY_ARC_NO_RANDOMIZE 1
|
|
|
|
|
2020-01-16 19:14:35 +01:00
|
|
|
extern int LaserSightX;
|
|
|
|
extern int LaserSightY;
|
|
|
|
extern int LaserSightZ;
|
|
|
|
extern char LaserSightActive;
|
|
|
|
extern char LaserSightCol;
|
2020-01-07 17:33:13 -03:00
|
|
|
|
2019-12-22 00:20:10 +01:00
|
|
|
extern int NextFireSpark;
|
|
|
|
extern int NextSmokeSpark;
|
|
|
|
extern int NextBubble;
|
|
|
|
extern int NextDrip;
|
|
|
|
extern int NextBlood;
|
|
|
|
extern int NextSpider;
|
|
|
|
extern int NextGunShell;
|
|
|
|
|
2020-05-30 15:55:23 +02:00
|
|
|
#define MAX_SPARKS_FIRE 20
|
|
|
|
#define MAX_FIRE_LIST 32
|
|
|
|
#define MAX_SPARKS_SMOKE 32
|
|
|
|
#define MAX_SPARKS_BLOOD 32
|
|
|
|
#define MAX_GUNFLASH 4
|
|
|
|
#define MAX_GUNSHELL 24
|
|
|
|
#define MAX_DRIPS 32
|
|
|
|
#define MAX_SHOCKWAVE 16
|
|
|
|
#define MAX_ENERGYARCS 32
|
|
|
|
|
|
|
|
extern GUNFLASH_STRUCT Gunflashes[MAX_GUNFLASH];
|
|
|
|
extern FIRE_SPARKS FireSparks[MAX_SPARKS_FIRE];
|
|
|
|
extern SMOKE_SPARKS SmokeSparks[MAX_SPARKS_SMOKE];
|
|
|
|
extern GUNSHELL_STRUCT Gunshells[MAX_GUNSHELL];
|
|
|
|
extern BLOOD_STRUCT Blood[MAX_SPARKS_BLOOD];
|
|
|
|
extern DRIP_STRUCT Drips[MAX_DRIPS];
|
|
|
|
extern SHOCKWAVE_STRUCT ShockWaves[MAX_SHOCKWAVE];
|
|
|
|
extern FIRE_LIST Fires[MAX_FIRE_LIST];
|
|
|
|
extern ENERGY_ARC EnergyArcs[MAX_ENERGYARCS];
|
2020-01-20 18:10:17 +01:00
|
|
|
extern SMOKE_SPARKS SmokeSparks[MAX_SPARKS_SMOKE];
|
|
|
|
|
2019-12-22 00:20:10 +01:00
|
|
|
void TriggerBlood(int x, int y, int z, int unk, int num);
|
|
|
|
void TriggerExplosionBubble(int x, int y, int z, short roomNum);
|
|
|
|
int GetFreeFireSpark();
|
|
|
|
void TriggerGlobalStaticFlame();
|
|
|
|
void TriggerGlobalFireSmoke();
|
|
|
|
void TriggerGlobalFireFlame();
|
|
|
|
void keep_those_fires_burning();
|
|
|
|
void ClearFires();
|
|
|
|
void AddFire(int x, int y, int z, char size, short roomNum, short on);
|
|
|
|
void UpdateFireSparks();
|
|
|
|
int GetFreeSmokeSpark();
|
|
|
|
void UpdateSmoke();
|
|
|
|
byte TriggerGunSmoke_SubFunction(int weaponType);
|
|
|
|
void TriggerGunSmoke(int x, int y, int z, short xv, short yv, short zv, byte initial, int weaponType, byte count);
|
|
|
|
void TriggerShatterSmoke(int x, int y, int z);
|
|
|
|
int GetFreeBlood();
|
|
|
|
void TriggerBlood(int x, int y, int z, int unk, int num);
|
|
|
|
void UpdateBlood();
|
|
|
|
int GetFreeGunshell();
|
|
|
|
void TriggerGunShell(short hand, short objNum, int weaponType);
|
|
|
|
void UpdateGunShells();
|
|
|
|
void AddWaterSparks(int x, int y, int z, int num);
|
|
|
|
int GetFreeBubble();
|
|
|
|
void LaraBubbles(ITEM_INFO* item);
|
|
|
|
void UpdateBubbles();
|
|
|
|
int GetFreeDrip();
|
|
|
|
void UpdateDrips();
|
|
|
|
void TriggerLaraDrips();
|
2020-05-30 15:55:23 +02:00
|
|
|
|
|
|
|
constexpr auto EXPLODE_HIT_EFFECT = 258;
|
|
|
|
constexpr auto EXPLODE_NORMAL = 256;
|
|
|
|
int ExplodingDeath(short itemNumber, int meshBits, short flags); // EXPLODE_ flags
|
|
|
|
|
2019-12-22 00:20:10 +01:00
|
|
|
int GetFreeShockwave();
|
|
|
|
void TriggerShockwave(PHD_3DPOS* pos, short innerRad, short outerRad, int speed, char r, char g, char b, char life, short angle, short flags);
|
|
|
|
void TriggerShockwaveHitEffect(int x, int y, int z, int color, short rot, int vel);
|
|
|
|
void UpdateShockwaves();
|
|
|
|
void TriggerSmallSplash(int x, int y, int z, int num);
|
2019-12-28 15:29:33 +01:00
|
|
|
void SetFadeClip(short height, short speed);
|
2020-03-21 19:14:28 +01:00
|
|
|
void TriggerLightningGlow(int x, int y, int z, byte size, byte r, byte g, byte b);
|
2020-03-22 12:27:12 +01:00
|
|
|
ENERGY_ARC* TriggerEnergyArc(PHD_VECTOR* start, PHD_VECTOR* end, byte r, byte g, byte b, short segmentSize, short life, short amplitude, byte flags, byte type);
|
2020-03-16 12:36:29 +01:00
|
|
|
void UpdateEnergyArcs();
|