diff --git a/TombEngine/Game/Lara/lara_one_gun.cpp b/TombEngine/Game/Lara/lara_one_gun.cpp index e3ac6051e..cafd1c081 100644 --- a/TombEngine/Game/Lara/lara_one_gun.cpp +++ b/TombEngine/Game/Lara/lara_one_gun.cpp @@ -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++) diff --git a/TombEngine/Game/effects/effects.cpp b/TombEngine/Game/effects/effects.cpp index 63d51b3a0..5bc258363 100644 --- a/TombEngine/Game/effects/effects.cpp +++ b/TombEngine/Game/effects/effects.cpp @@ -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) diff --git a/TombEngine/Game/effects/explosion.cpp b/TombEngine/Game/effects/explosion.cpp index 4a58a8bd9..62eb464da 100644 --- a/TombEngine/Game/effects/explosion.cpp +++ b/TombEngine/Game/effects/explosion.cpp @@ -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); } } diff --git a/TombEngine/Game/effects/item_fx.cpp b/TombEngine/Game/effects/item_fx.cpp index ece103481..f38c56cc0 100644 --- a/TombEngine/Game/effects/item_fx.cpp +++ b/TombEngine/Game/effects/item_fx.cpp @@ -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) diff --git a/TombEngine/Game/effects/item_fx.h b/TombEngine/Game/effects/item_fx.h index ff000324f..aa815e44c 100644 --- a/TombEngine/Game/effects/item_fx.h +++ b/TombEngine/Game/effects/item_fx.h @@ -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); diff --git a/TombEngine/Game/effects/tomb4fx.cpp b/TombEngine/Game/effects/tomb4fx.cpp index 227e47059..7bb649414 100644 --- a/TombEngine/Game/effects/tomb4fx.cpp +++ b/TombEngine/Game/effects/tomb4fx.cpp @@ -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)); } } } diff --git a/TombEngine/Game/effects/tomb4fx.h b/TombEngine/Game/effects/tomb4fx.h index 334aee2f2..7727dcef2 100644 --- a/TombEngine/Game/effects/tomb4fx.h +++ b/TombEngine/Game/effects/tomb4fx.h @@ -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 diff --git a/TombEngine/Objects/Effects/enemy_missile.cpp b/TombEngine/Objects/Effects/enemy_missile.cpp index a07783dcc..01adf3b27 100644 --- a/TombEngine/Objects/Effects/enemy_missile.cpp +++ b/TombEngine/Objects/Effects/enemy_missile.cpp @@ -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 { diff --git a/TombEngine/Objects/TR4/Entity/tr4_demigod.cpp b/TombEngine/Objects/TR4/Entity/tr4_demigod.cpp index aeab5d0ef..a0fdb0186 100644 --- a/TombEngine/Objects/TR4/Entity/tr4_demigod.cpp +++ b/TombEngine/Objects/TR4/Entity/tr4_demigod.cpp @@ -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; diff --git a/TombEngine/Objects/TR4/Entity/tr4_wraith.cpp b/TombEngine/Objects/TR4/Entity/tr4_wraith.cpp index e871d9a5e..b40b74847 100644 --- a/TombEngine/Objects/TR4/Entity/tr4_wraith.cpp +++ b/TombEngine/Objects/TR4/Entity/tr4_wraith.cpp @@ -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; } diff --git a/TombEngine/Objects/TR4/Object/tr4_senet.cpp b/TombEngine/Objects/TR4/Object/tr4_senet.cpp index 8dd696fd1..acfe7cb8a 100644 --- a/TombEngine/Objects/TR4/Object/tr4_senet.cpp +++ b/TombEngine/Objects/TR4/Object/tr4_senet.cpp @@ -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; } diff --git a/TombEngine/Objects/TR4/Trap/tr4_mine.cpp b/TombEngine/Objects/TR4/Trap/tr4_mine.cpp index c15bf708b..0669e57bd 100644 --- a/TombEngine/Objects/TR4/Trap/tr4_mine.cpp +++ b/TombEngine/Objects/TR4/Trap/tr4_mine.cpp @@ -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); } } diff --git a/TombEngine/Objects/TR5/Entity/tr5_laser_head.cpp b/TombEngine/Objects/TR5/Entity/tr5_laser_head.cpp index 15d52cf83..d530b11a6 100644 --- a/TombEngine/Objects/TR5/Entity/tr5_laser_head.cpp +++ b/TombEngine/Objects/TR5/Entity/tr5_laser_head.cpp @@ -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); diff --git a/TombEngine/Objects/TR5/Entity/tr5_roman_statue.cpp b/TombEngine/Objects/TR5/Entity/tr5_roman_statue.cpp index 6b8fb9bc9..10ff46095 100644 --- a/TombEngine/Objects/TR5/Entity/tr5_roman_statue.cpp +++ b/TombEngine/Objects/TR5/Entity/tr5_roman_statue.cpp @@ -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; diff --git a/TombEngine/Objects/TR5/Object/tr5_missile.cpp b/TombEngine/Objects/TR5/Object/tr5_missile.cpp index 3c98fff48..567c35c9c 100644 --- a/TombEngine/Objects/TR5/Object/tr5_missile.cpp +++ b/TombEngine/Objects/TR5/Object/tr5_missile.cpp @@ -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 diff --git a/TombEngine/Objects/TR5/Trap/tr5_explosion.cpp b/TombEngine/Objects/TR5/Trap/tr5_explosion.cpp index eb080b369..fff08c365 100644 --- a/TombEngine/Objects/TR5/Trap/tr5_explosion.cpp +++ b/TombEngine/Objects/TR5/Trap/tr5_explosion.cpp @@ -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); diff --git a/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.cpp b/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.cpp index 9f7692a24..0604b00e6 100644 --- a/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.cpp +++ b/TombEngine/Scripting/Internal/TEN/Objects/Moveable/MoveableObject.cpp @@ -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; } }