mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-11 13:06:49 +03:00
fixed shockwave stuff and made effect lightning as int
This commit is contained in:
parent
e794ebb3f0
commit
c156f45a63
17 changed files with 74 additions and 76 deletions
|
@ -1376,7 +1376,7 @@ void ExplodeProjectile(ItemInfo& item, const Vector3i& prevPos)
|
|||
}
|
||||
else
|
||||
{
|
||||
TriggerShockwave(&item.Pose, 48, 304, 96, 0, 96, 128, 24, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item.Pose, 48, 304, 96, 0, 96, 128, 24, 0, 0);
|
||||
item.Pose.Position.y += CLICK(1.0f / 2);
|
||||
TriggerExplosionSparks(prevPos.x, prevPos.y, prevPos.z, 3, -2, 0, item.RoomNumber);
|
||||
|
||||
|
@ -1496,7 +1496,7 @@ void HandleProjectile(ItemInfo& item, ItemInfo& emitter, const Vector3i& prevPos
|
|||
|
||||
TriggerExplosionSparks(currentMesh->pos.Position.x, currentMesh->pos.Position.y, currentMesh->pos.Position.z, 3, -2, 0, item.RoomNumber);
|
||||
auto pose = Pose(currentMesh->pos.Position.x, currentMesh->pos.Position.y - 128, currentMesh->pos.Position.z, 0, currentMesh->pos.Orientation.y, 0);
|
||||
TriggerShockwave(&pose, 40, 176, 64, 0, 96, 128, 16, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&pose, 40, 176, 64, 0, 96, 128, 16, 0, 0);
|
||||
}
|
||||
|
||||
for (int i = 0; i < MAX_COLLIDED_OBJECTS; i++)
|
||||
|
|
|
@ -1633,9 +1633,9 @@ void ProcessEffects(ItemInfo* item)
|
|||
|
||||
auto pos = GetJointPosition(item, 0);
|
||||
TriggerDynamicLight(pos.x, pos.y, pos.z, falloff,
|
||||
std::clamp(Random::GenerateInt(-32, 32) + int(item->Effect.LightColor.x * UCHAR_MAX), 0, UCHAR_MAX),
|
||||
std::clamp(Random::GenerateInt(-32, 32) + int(item->Effect.LightColor.y * UCHAR_MAX), 0, UCHAR_MAX),
|
||||
std::clamp(Random::GenerateInt(-32, 32) + int(item->Effect.LightColor.z * UCHAR_MAX), 0, UCHAR_MAX));
|
||||
std::clamp(Random::GenerateInt(-32, 32) + int(item->Effect.LightColor.x), 0, UCHAR_MAX),
|
||||
std::clamp(Random::GenerateInt(-32, 32) + int(item->Effect.LightColor.y), 0, UCHAR_MAX),
|
||||
std::clamp(Random::GenerateInt(-32, 32) + int(item->Effect.LightColor.z), 0, UCHAR_MAX));
|
||||
}
|
||||
|
||||
switch (item->Effect.Type)
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace TEN::Effects::Explosion
|
|||
if (triggerShockwave)
|
||||
{
|
||||
auto shockPos = Pose(Vector3i(pos));
|
||||
TriggerShockwave(&shockPos, 0, size, 64, 32, 32, 32, 30, rand() & 0xFFFF, ShockwaveDamage::none);
|
||||
TriggerShockwave(&shockPos, 0, size, 64, 32, 32, 32, 30, rand() & 0xFFFF, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "Game/effects/effects.h"
|
||||
#include "Game/effects/smoke.h"
|
||||
#include "Game/items.h"
|
||||
#include "Color/Color.h"
|
||||
#include "Game/Lara/lara.h"
|
||||
#include "Game/Lara/lara_helpers.h"
|
||||
#include "Specific/level.h"
|
||||
|
@ -19,48 +20,52 @@ namespace TEN::Effects::Items
|
|||
{
|
||||
item->Effect.Type = EffectType::Fire;
|
||||
item->Effect.Count = timeout;
|
||||
item->Effect.LightColor = Vector3(0.8f, 0.5f, 0.0f);
|
||||
item->Effect.LightColor = Vector3(250, 176, 0);
|
||||
item->Effect.EffectColor1 = Vector3(255, 48, 48);
|
||||
item->Effect.EffectColor2 = Vector3(255, 216, 32);
|
||||
}
|
||||
|
||||
void ItemColorBurn(ItemInfo* item, Vector3 color1, Vector3 color2, int timeout)
|
||||
void ItemColorBurn(ItemInfo* item, ScriptColor const& color1, ScriptColor const& color2, int timeout)
|
||||
{
|
||||
item->Effect.Type = EffectType::ColoredFire;
|
||||
Vector3 col1 = Vector3(color1.GetR(), color1.GetG(), color1.GetB());
|
||||
Vector3 col2 = Vector3(color2.GetR(), color2.GetG(), color2.GetB());
|
||||
item->Effect.Count = timeout;
|
||||
item->Effect.LightColor = color1;
|
||||
item->Effect.EffectColor1 = color1;
|
||||
item->Effect.EffectColor2 = color2;
|
||||
item->Effect.LightColor = col1;
|
||||
item->Effect.EffectColor1 = col1;
|
||||
item->Effect.EffectColor2 = col2;
|
||||
}
|
||||
|
||||
void ItemMagicBurn(ItemInfo* item, Vector3 color1, Vector3 color2, int timeout)
|
||||
void ItemMagicBurn(ItemInfo* item, ScriptColor const& color1, ScriptColor const& color2, int timeout)
|
||||
{
|
||||
item->Effect.Type = EffectType::MagicFire;
|
||||
Vector3 col1 = Vector3(color1.GetR(), color1.GetG(), color1.GetB());
|
||||
Vector3 col2 = Vector3(color2.GetR(), color2.GetG(), color2.GetB());
|
||||
item->Effect.Count = timeout;
|
||||
item->Effect.LightColor = color1;
|
||||
item->Effect.EffectColor1 = color1;
|
||||
item->Effect.EffectColor2 = color2;
|
||||
item->Effect.LightColor = col1;
|
||||
item->Effect.EffectColor1 = col1;
|
||||
item->Effect.EffectColor2 = col2;
|
||||
}
|
||||
|
||||
void ItemElectricBurn(ItemInfo* item, int timeout)
|
||||
{
|
||||
item->Effect.Type = EffectType::Sparks;
|
||||
item->Effect.Count = timeout;
|
||||
item->Effect.LightColor = Vector3(0.0f, 0.2f, 0.8f);
|
||||
item->Effect.LightColor = Vector3(0, 147, 255 );
|
||||
}
|
||||
|
||||
void ItemBlueElectricBurn(ItemInfo* item, int timeout)
|
||||
{
|
||||
item->Effect.Type = EffectType::ElectricDeath;
|
||||
item->Effect.Count = 2;
|
||||
item->Effect.LightColor = Vector3(0.0f, 0.4f, 1.0f);
|
||||
item->Effect.LightColor = Vector3(0, 147, 255);
|
||||
}
|
||||
|
||||
void ItemRedLaserBurn(ItemInfo* item, int timeout)
|
||||
{
|
||||
item->Effect.Type = EffectType::LaserDeath;
|
||||
item->Effect.Count = 2;
|
||||
item->Effect.LightColor = Vector3(1.0f, 0.0f, 0.0f);
|
||||
item->Effect.LightColor = Vector3(255, 100, 0);
|
||||
}
|
||||
|
||||
void ItemSmoke(ItemInfo* item, int timeout)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#pragma once
|
||||
#include "Color/Color.h"
|
||||
|
||||
struct ItemInfo;
|
||||
|
||||
|
@ -7,10 +8,10 @@ namespace TEN::Effects::Items
|
|||
constexpr int DEFAULT_NONLETHAL_EFFECT_TIMEOUT = 48;
|
||||
|
||||
void ItemBurn(ItemInfo* item, int timeout = -1);
|
||||
void ItemColorBurn(ItemInfo* item, Vector3 color1 = Vector3(1, 1, 1), Vector3 color2 = Vector3(1, 1, 1), int timeout = -1);
|
||||
void ItemColorBurn(ItemInfo* item, ScriptColor const& color1 = ScriptColor(1, 1, 1), ScriptColor const& color2 = ScriptColor(1, 1, 1), int timeout = -1);
|
||||
void ItemRedLaserBurn(ItemInfo* item, int timeout);
|
||||
void ItemBlueElectricBurn(ItemInfo* item, int timeout = DEFAULT_NONLETHAL_EFFECT_TIMEOUT);
|
||||
void ItemMagicBurn(ItemInfo* item, Vector3 color1 = Vector3(1, 1, 1), Vector3 color2 = Vector3(1, 1, 1), int timeout = -1);
|
||||
void ItemMagicBurn(ItemInfo* item, ScriptColor const& color1 = ScriptColor(1, 1, 1), ScriptColor const& color2 = ScriptColor(1, 1, 1), int timeout = -1);
|
||||
void ItemElectricBurn(ItemInfo* item, int timeout = DEFAULT_NONLETHAL_EFFECT_TIMEOUT);
|
||||
void ItemSmoke(ItemInfo* item, int timeout = DEFAULT_NONLETHAL_EFFECT_TIMEOUT);
|
||||
void LavaBurn(ItemInfo* item);
|
||||
|
|
|
@ -1494,7 +1494,7 @@ void TriggerShockwave(Pose* pos, short innerRad, short outerRad, int speed, unsi
|
|||
sptr->innerRad = innerRad;
|
||||
sptr->outerRad = outerRad;
|
||||
sptr->xRot = angle;
|
||||
sptr->flags = damage;
|
||||
sptr->damage = damage;
|
||||
sptr->speed = speed;
|
||||
sptr->r = r;
|
||||
sptr->g = g;
|
||||
|
@ -1578,7 +1578,7 @@ void UpdateShockwaves()
|
|||
|
||||
if (LaraItem->HitPoints > 0)
|
||||
{
|
||||
if (sw->flags & 3)
|
||||
if (sw->damage & 3)
|
||||
{
|
||||
AnimFrame* frame = GetBestFrame(LaraItem);
|
||||
|
||||
|
@ -1603,7 +1603,7 @@ void UpdateShockwaves()
|
|||
angle,
|
||||
sw->speed);
|
||||
|
||||
DoDamage(LaraItem, sw->speed >> (((sw->flags >> 1) & 1) + 2));
|
||||
DoDamage(LaraItem, sw->speed >> (((sw->damage >> 1) & 1) + 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ struct SHOCKWAVE_STRUCT
|
|||
short innerRad;
|
||||
short outerRad;
|
||||
short xRot;
|
||||
short flags;
|
||||
short damage;
|
||||
unsigned char r;
|
||||
unsigned char g;
|
||||
unsigned char b;
|
||||
|
@ -171,14 +171,6 @@ struct BLOOD_STRUCT
|
|||
byte pad;
|
||||
};
|
||||
|
||||
enum ShockwaveDamage
|
||||
{
|
||||
none,
|
||||
high,
|
||||
medium,
|
||||
low
|
||||
};
|
||||
|
||||
#define ENERGY_ARC_STRAIGHT_LINE 0
|
||||
#define ENERGY_ARC_CIRCLE 1
|
||||
#define ENERGY_ARC_NO_RANDOMIZE 1
|
||||
|
|
|
@ -224,7 +224,7 @@ namespace TEN::Entities::Effects
|
|||
|
||||
if (fx->flag1 == 1)
|
||||
{
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 64, 128, 00, 24, (((~g_Level.Rooms[fx->roomNumber].flags) / 16) & 2) * 65536, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 64, 128, 00, 24, (((~g_Level.Rooms[fx->roomNumber].flags) / 16) & 2) * 65536, 0);
|
||||
TriggerExplosionSparks(oldX, oldY, oldZ, 3, -2, 2, fx->roomNumber);
|
||||
}
|
||||
else
|
||||
|
@ -232,9 +232,9 @@ namespace TEN::Entities::Effects
|
|||
if (fx->flag1)
|
||||
{
|
||||
if (fx->flag1 == 3 || fx->flag1 == 4)
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 128, 64, 0, 16, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 128, 64, 0, 16, 0, 0);
|
||||
else if (fx->flag1 == 5)
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 0, 96, 128, 16, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 0, 96, 128, 16, 0, 0);
|
||||
else
|
||||
{
|
||||
if (fx->flag1 != 2)
|
||||
|
@ -242,20 +242,20 @@ namespace TEN::Entities::Effects
|
|||
if (fx->flag1 == 6)
|
||||
{
|
||||
TriggerExplosionSparks(oldX, oldY, oldZ, 3, -2, 0, fx->roomNumber);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 64, 0, 96, 128, 24, 0, ShockwaveDamage::medium);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 64, 0, 96, 128, 24, 0, 2);
|
||||
fx->pos.Position.y -= 128;
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 112, 128, 16, 0, ShockwaveDamage::medium);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 112, 128, 16, 0, 2);
|
||||
fx->pos.Position.y += 256;
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 112, 128, 16, 0, ShockwaveDamage::medium);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 112, 128, 16, 0, 2);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 0, 128, 128, 16, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 0, 128, 128, 16, 0, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 64, 128, 0, 16, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 64, 128, 0, 16, 0, 0);
|
||||
}
|
||||
|
||||
KillEffect(fxNum);
|
||||
|
@ -272,9 +272,9 @@ namespace TEN::Entities::Effects
|
|||
|
||||
if (fx->flag1 == 1)
|
||||
{
|
||||
TriggerShockwave(&fx->pos, 48, 240, 64, 64, 128, 0, 24, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 64, 64, 128, 0, 24, 0, 0);
|
||||
TriggerExplosionSparks(oldX, oldY, oldZ, 3, -2, 2, fx->roomNumber);
|
||||
ItemMagicBurn(LaraItem, Vector3(2, 202 ,40), Vector3(5, 221, 218), -1);
|
||||
ItemMagicBurn(LaraItem, ScriptColor(2, 202 ,40), ScriptColor(5, 221, 218), -1);
|
||||
}
|
||||
else if (fx->flag1)
|
||||
{
|
||||
|
@ -282,30 +282,30 @@ namespace TEN::Entities::Effects
|
|||
{
|
||||
case 3:
|
||||
case 4:
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 128, 64, 0, 16, 0, ShockwaveDamage::high);
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 128, 64, 0, 16, 0, 1);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 0, 96, 128, 16, 0, ShockwaveDamage::medium);
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 0, 96, 128, 16, 0, 2);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 0, 128, 128, 16, 0, ShockwaveDamage::medium);
|
||||
TriggerShockwave(&fx->pos, 32, 160, 64, 0, 128, 128, 16, 0, 2);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
TriggerExplosionSparks(oldX, oldY, oldZ, 3, -2, 0, fx->roomNumber);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 64, 0, 96, 128, 24, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 64, 0, 96, 128, 24, 0, 0);
|
||||
fx->pos.Position.y -= 128;
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 112, 128, 16, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 112, 128, 16, 0, 0);
|
||||
fx->pos.Position.y += 256;
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 112, 128, 16, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 112, 128, 16, 0, 0);
|
||||
ItemBurn(LaraItem);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
TriggerShockwave(&fx->pos, 24, 88, 48, 64, 128, 0, 16, (((~g_Level.Rooms[fx->roomNumber].flags) / 16) & 2) * 65536, ShockwaveDamage::low);
|
||||
TriggerShockwave(&fx->pos, 24, 88, 48, 64, 128, 0, 16, (((~g_Level.Rooms[fx->roomNumber].flags) / 16) & 2) * 65536, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -693,7 +693,7 @@ namespace TEN::Entities::TR4
|
|||
else
|
||||
pos.y = height - CLICK(0.5f);
|
||||
|
||||
TriggerShockwave((Pose*)&pos, 24, 88, 256, 128, 128, 128, 32, 0, ShockwaveDamage::medium);
|
||||
TriggerShockwave((Pose*)&pos, 24, 88, 256, 128, 128, 128, 32, 0, 2);
|
||||
TriggerHammerSmoke(pos.x, pos.y + 128, pos.z, 8);
|
||||
|
||||
Camera.bounce = -128;
|
||||
|
|
|
@ -373,10 +373,10 @@ namespace TEN::Entities::TR4
|
|||
|
||||
item->Pose.Position.y -= 384;
|
||||
|
||||
TriggerShockwave(&item->Pose, inner, outer, speed, r, g, b, 24, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, inner, outer, speed, r, g, b, 24, ANGLE(45.0f), ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, inner, outer, speed, r, g, b, 24, ANGLE(90.0f), ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, inner, outer, speed, r, g, b, 24, ANGLE(135.0f), ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, inner, outer, speed, r, g, b, 24, 0, 0);
|
||||
TriggerShockwave(&item->Pose, inner, outer, speed, r, g, b, 24, ANGLE(45.0f), 0);
|
||||
TriggerShockwave(&item->Pose, inner, outer, speed, r, g, b, 24, ANGLE(90.0f), 0);
|
||||
TriggerShockwave(&item->Pose, inner, outer, speed, r, g, b, 24, ANGLE(135.0f), 0);
|
||||
|
||||
item->Pose.Position.y += 384;
|
||||
}
|
||||
|
|
|
@ -318,10 +318,10 @@ void SenetPieceExplosionEffect(ItemInfo* item, int color, int speed)
|
|||
int radius = speed >= 0 ? 0xA00020 : 0x2000280;
|
||||
int clr = color | 0x18000000;
|
||||
item->Pose.Position.y -= STEPUP_HEIGHT;
|
||||
TriggerShockwave(&item->Pose, radius & 0xFFFF, radius >> 16, speed, clr & 0xFF, (clr >> 8) & 0xFF, (clr >> 16) & 0xFF, 64, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, radius & 0xFFFF, radius >> 16, speed, clr & 0xFF, (clr >> 8) & 0xFF, (clr >> 16) & 0xFF, 64, 0x2000, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, radius & 0xFFFF, radius >> 16, speed, clr & 0xFF, (clr >> 8) & 0xFF, (clr >> 16) & 0xFF, 64, 0x4000, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, radius & 0xFFFF, radius >> 16, speed, clr & 0xFF, (clr >> 8) & 0xFF, (clr >> 16) & 0xFF, 64, 0x6000, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, radius & 0xFFFF, radius >> 16, speed, clr & 0xFF, (clr >> 8) & 0xFF, (clr >> 16) & 0xFF, 64, 0, 0);
|
||||
TriggerShockwave(&item->Pose, radius & 0xFFFF, radius >> 16, speed, clr & 0xFF, (clr >> 8) & 0xFF, (clr >> 16) & 0xFF, 64, 0x2000, 0);
|
||||
TriggerShockwave(&item->Pose, radius & 0xFFFF, radius >> 16, speed, clr & 0xFF, (clr >> 8) & 0xFF, (clr >> 16) & 0xFF, 64, 0x4000, 0);
|
||||
TriggerShockwave(&item->Pose, radius & 0xFFFF, radius >> 16, speed, clr & 0xFF, (clr >> 8) & 0xFF, (clr >> 16) & 0xFF, 64, 0x6000, 0);
|
||||
item->Pose.Position.y += STEPUP_HEIGHT;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ namespace TEN::Entities::TR4
|
|||
|
||||
TriggerExplosionSparks(sphere->x, sphere->y, sphere->z, 3, -2, 0, -item->RoomNumber);
|
||||
TriggerExplosionSparks(sphere->x, sphere->y, sphere->z, 3, -1, 0, -item->RoomNumber);
|
||||
TriggerShockwave((Pose*)sphere, 48, 304, (GetRandomControl() & 0x1F) + 112, 0, 96, 128, 32, 2048, ShockwaveDamage::none);
|
||||
TriggerShockwave((Pose*)sphere, 48, 304, (GetRandomControl() & 0x1F) + 112, 0, 96, 128, 32, 2048, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -263,9 +263,9 @@ namespace TEN::Entities::Creatures::TR5
|
|||
TriggerExplosionSparks(item->Pose.Position.x, item->Pose.Position.y, item->Pose.Position.z, 3, -2, 2, item->RoomNumber);
|
||||
TriggerExplosionSparks(item->Pose.Position.x, item->Pose.Position.y, item->Pose.Position.z, 2, 0, 2, item->RoomNumber);
|
||||
|
||||
TriggerShockwave(&item->Pose, 32, 160, 64, 64, 128, 0, 36, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, 32, 160, 64, 64, 128, 0, 36, 0x3000, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, 32, 160, 64, 64, 128, 0, 36, 0x6000, ShockwaveDamage::none);
|
||||
TriggerShockwave(&item->Pose, 32, 160, 64, 64, 128, 0, 36, 0, 0);
|
||||
TriggerShockwave(&item->Pose, 32, 160, 64, 64, 128, 0, 36, 0x3000, 0);
|
||||
TriggerShockwave(&item->Pose, 32, 160, 64, 64, 128, 0, 36, 0x6000, 0);
|
||||
|
||||
g_Level.Items[creature->PuzzleItem].Pose.Position.y = item->Pose.Position.y;
|
||||
TestTriggers(item, true);
|
||||
|
|
|
@ -619,10 +619,10 @@ namespace TEN::Entities::Creatures::TR5
|
|||
if (item->ItemFlags[0])
|
||||
item->ItemFlags[0]--;
|
||||
|
||||
TriggerShockwave((Pose*)&pos1, 16, 160, 96, 0, 64, 128, 48, 0, ShockwaveDamage::high);
|
||||
TriggerShockwave((Pose*)&pos1, 16, 160, 96, 0, 64, 128, 48, 0, 1);
|
||||
TriggerRomanStatueShockwaveAttackSparks(pos1.x, pos1.y, pos1.z, 128, 64, 0, 128);
|
||||
pos1.y -= 64;
|
||||
TriggerShockwave((Pose*)&pos1, 16, 160, 64, 0, 64, 128, 48, 0, ShockwaveDamage::high);
|
||||
TriggerShockwave((Pose*)&pos1, 16, 160, 64, 0, 64, 128, 48, 0, 1);
|
||||
}
|
||||
|
||||
deltaFrame = item->Animation.FrameNumber - g_Level.Anims[item->Animation.AnimNumber].frameBase;
|
||||
|
|
|
@ -120,9 +120,9 @@ void MissileControl(short itemNumber)
|
|||
{
|
||||
TriggerExplosionSparks(x, y, z, 3, -2, 2, fx->roomNumber);
|
||||
fx->pos.Position.y -= 64;
|
||||
TriggerShockwave(&fx->pos, 48, 256, 64, 64, 128, 0, 24, 0, ShockwaveDamage::high);
|
||||
TriggerShockwave(&fx->pos, 48, 256, 64, 64, 128, 0, 24, 0, 1);
|
||||
fx->pos.Position.y -= 128;
|
||||
TriggerShockwave(&fx->pos, 48, 256, 48, 64, 128, 0, 24, 0, ShockwaveDamage::high);
|
||||
TriggerShockwave(&fx->pos, 48, 256, 48, 64, 128, 0, 24, 0, 1);
|
||||
}
|
||||
else if (fx->flag1 == 2)
|
||||
{
|
||||
|
@ -133,7 +133,7 @@ void MissileControl(short itemNumber)
|
|||
else
|
||||
{
|
||||
TriggerExplosionSparks(x, y, z, 3, -2, 0, fx->roomNumber);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 96, 128, 24, 0, ShockwaveDamage::medium);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 96, 128, 24, 0, 2);
|
||||
}
|
||||
|
||||
KillEffect(itemNumber);
|
||||
|
@ -147,9 +147,9 @@ void MissileControl(short itemNumber)
|
|||
// ROMAN_GOD hit effect
|
||||
TriggerExplosionSparks(x, y, z, 3, -2, 2, fx->roomNumber);
|
||||
fx->pos.Position.y -= 64;
|
||||
TriggerShockwave(&fx->pos, 48, 256, 64, 0, 128, 64, 24, 0, ShockwaveDamage::high);
|
||||
TriggerShockwave(&fx->pos, 48, 256, 64, 0, 128, 64, 24, 0, 1);
|
||||
fx->pos.Position.y -= 128;
|
||||
TriggerShockwave(&fx->pos, 48, 256, 48, 0, 128, 64, 24, 0, ShockwaveDamage::high);
|
||||
TriggerShockwave(&fx->pos, 48, 256, 48, 0, 128, 64, 24, 0, 1);
|
||||
KillEffect(itemNumber);
|
||||
DoDamage(LaraItem, 200);
|
||||
}
|
||||
|
@ -172,7 +172,7 @@ void MissileControl(short itemNumber)
|
|||
{
|
||||
// HYDRA hit effect
|
||||
TriggerExplosionSparks(x, y, z, 3, -2, 0, fx->roomNumber);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 96, 128, 24, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&fx->pos, 48, 240, 48, 0, 96, 128, 24, 0, 0);
|
||||
if (LaraItem->HitPoints >= 500)
|
||||
DoDamage(LaraItem, 300);
|
||||
else
|
||||
|
|
|
@ -88,9 +88,9 @@ void ExplosionControl(short itemNumber)
|
|||
if (item->ItemFlags[3])
|
||||
{
|
||||
if (flag == 2)
|
||||
TriggerShockwave(&pos, 48, 32 * item->ItemFlags[2] + 304, 4 * item->ItemFlags[2] + 96, 128, 96, 0, 24, 2048, ShockwaveDamage::none);
|
||||
TriggerShockwave(&pos, 48, 32 * item->ItemFlags[2] + 304, 4 * item->ItemFlags[2] + 96, 128, 96, 0, 24, 2048, 0);
|
||||
else
|
||||
TriggerShockwave(&pos, 48, 32 * item->ItemFlags[2] + 304, 4 * item->ItemFlags[2] + 96, 0, 96, 128, 24, 2048, ShockwaveDamage::none);
|
||||
TriggerShockwave(&pos, 48, 32 * item->ItemFlags[2] + 304, 4 * item->ItemFlags[2] + 96, 0, 96, 128, 24, 2048, 0);
|
||||
}
|
||||
else if (flag == 2)
|
||||
{
|
||||
|
@ -125,7 +125,7 @@ void ExplosionControl(short itemNumber)
|
|||
{
|
||||
TriggerExplosionSparks(CollidedItems[i]->Pose.Position.x, CollidedItems[i]->Pose.Position.y, CollidedItems[i]->Pose.Position.z, 3, -2, 0, CollidedItems[i]->RoomNumber);
|
||||
CollidedItems[i]->Pose.Position.y -= 128;
|
||||
TriggerShockwave(&CollidedItems[i]->Pose, 48, 304, 96, 0, 96, 128, 24, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&CollidedItems[i]->Pose, 48, 304, 96, 0, 96, 128, 24, 0, 0);
|
||||
CollidedItems[i]->Pose.Position.y += 128;
|
||||
ExplodeItemNode(CollidedItems[i], 0, 0, 80);
|
||||
SmashObject(CollidedItems[i] - g_Level.Items.data());
|
||||
|
@ -151,7 +151,7 @@ void ExplosionControl(short itemNumber)
|
|||
{
|
||||
TriggerExplosionSparks(CollidedMeshes[i]->pos.Position.x, CollidedMeshes[i]->pos.Position.y, CollidedMeshes[i]->pos.Position.z, 3, -2, 0, item->RoomNumber);
|
||||
CollidedMeshes[i]->pos.Position.y -= 128;
|
||||
TriggerShockwave(&CollidedMeshes[i]->pos, 40, 176, 64, 0, 96, 128, 16, 0, ShockwaveDamage::none);
|
||||
TriggerShockwave(&CollidedMeshes[i]->pos, 40, 176, 64, 0, 96, 128, 16, 0, 0);
|
||||
CollidedMeshes[i]->pos.Position.y += 128;
|
||||
SoundEffect(GetShatterSound(CollidedMeshes[i]->staticNumber), &CollidedMeshes[i]->pos);
|
||||
ShatterObject(NULL, CollidedMeshes[i], -128, item->RoomNumber, 0);
|
||||
|
|
|
@ -707,11 +707,11 @@ void Moveable::SetCustomEffect(EffectType effectType, ScriptColor const& col1, S
|
|||
switch (effectType)
|
||||
{
|
||||
case EffectType::MagicFire:
|
||||
ItemMagicBurn(m_item, Vector3(col1.GetR(), col1.GetG(), col1.GetB()), Vector3(col2.GetR(), col2.GetG(), col2.GetB()), realTimeout);
|
||||
ItemMagicBurn(m_item, col1, col2, realTimeout);
|
||||
break;
|
||||
|
||||
case EffectType::ColoredFire:
|
||||
ItemColorBurn(m_item, Vector3(col1.GetR(), col1.GetG(), col1.GetB()), Vector3(col2.GetR(), col2.GetG(), col2.GetB()), realTimeout);
|
||||
ItemColorBurn(m_item, col1, col2, realTimeout);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue