fixed shockwave stuff and made effect lightning as int

This commit is contained in:
Nemoel-Tomo 2022-11-27 13:34:04 +01:00
parent e794ebb3f0
commit c156f45a63
17 changed files with 74 additions and 76 deletions

View file

@ -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++)

View file

@ -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)

View file

@ -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);
}
}

View file

@ -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)

View file

@ -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);

View file

@ -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));
}
}
}

View file

@ -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

View file

@ -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
{

View file

@ -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;

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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);
}
}

View file

@ -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);

View file

@ -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;

View file

@ -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

View file

@ -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);

View file

@ -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;
}
}