From 5bdd9668b476ee0ba2ebc6b773cb97e3de5a720f Mon Sep 17 00:00:00 2001 From: Marcin Kurczewski Date: Sun, 22 Sep 2024 02:30:43 +0200 Subject: [PATCH] inject: add explosion sprites --- CHANGELOG.md | 1 + data/ship/cfg/TR1X_gameflow.json5 | 2 ++ data/ship/data/injections/explosion.bin | Bin 0 -> 106666 bytes src/game/effects/exploding_death.h | 5 +++++ src/game/level.c | 6 ++++++ src/game/objects/creatures/mutant.c | 10 +++++++++- src/game/objects/creatures/mutant.h | 1 + src/game/objects/effects/body_part.c | 8 ++++---- 8 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 data/ship/data/injections/explosion.bin diff --git a/CHANGELOG.md b/CHANGELOG.md index 267b0e289..139516a24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## [Unreleased](https://github.com/LostArtefacts/TR1X/compare/stable...develop) - ××××-××-×× - fixed double "Fly mode enabled" message when using `/fly` console command (regression from 4.0) +- changed the easter egg console command to pack more punch ## [4.4](https://github.com/LostArtefacts/TR1X/compare/4.3-102-g458cd96...4.4) - 2024-09-20 - added `/exit` command (#1462) diff --git a/data/ship/cfg/TR1X_gameflow.json5 b/data/ship/cfg/TR1X_gameflow.json5 index 30554c14c..f15a86613 100644 --- a/data/ship/cfg/TR1X_gameflow.json5 +++ b/data/ship/cfg/TR1X_gameflow.json5 @@ -20,6 +20,7 @@ "data/injections/lara_jumping.bin", "data/injections/purple_crystal.bin", "data/injections/uzi_sfx.bin", + "data/injections/explosion.bin", ], "convert_dropped_guns": false, @@ -38,6 +39,7 @@ "data/injections/lara_animations.bin", "data/injections/lara_jumping.bin", "data/injections/uzi_sfx.bin", + "data/injections/explosion.bin", ], "sequence": [ {"type": "play_fmv", "fmv_path": "fmv/mansion.avi"}, diff --git a/data/ship/data/injections/explosion.bin b/data/ship/data/injections/explosion.bin new file mode 100644 index 0000000000000000000000000000000000000000..79be67718d1ebd94bd65cce54ec6785674ef6f68 GIT binary patch literal 106666 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 +// Mesh_bits: which meshes to affect. +// Damage: +// * Positive values - deal damage, enable body part explosions. +// * Negative values - deal damage, disable body part explosions. +// * Zero - don't deal any damage, disable body part explosions. int32_t Effect_ExplodingDeath( int16_t item_num, int32_t mesh_bits, int16_t damage); diff --git a/src/game/level.c b/src/game/level.c index 703168139..39e1de4cb 100644 --- a/src/game/level.c +++ b/src/game/level.c @@ -12,6 +12,7 @@ #include "game/lara/common.h" #include "game/lot.h" #include "game/music.h" +#include "game/objects/creatures/mutant.h" #include "game/objects/creatures/pierre.h" #include "game/objects/setup.h" #include "game/output.h" @@ -919,6 +920,11 @@ static void M_CompleteSetup(int32_t level_num) } } + // We inject explosions sprites and sounds, although in the original game, + // some levels lack them, resulting in no audio or visual effects when + // killing mutants. This is to maintain that feature. + Mutant_ToggleExplosions(g_Objects[O_EXPLOSION_1].loaded); + Inject_AllInjections(&m_LevelInfo); M_MarkWaterEdgeVertices(); diff --git a/src/game/objects/creatures/mutant.c b/src/game/objects/creatures/mutant.c index 40aab6ffa..95cc152e9 100644 --- a/src/game/objects/creatures/mutant.c +++ b/src/game/objects/creatures/mutant.c @@ -56,10 +56,16 @@ enum FLYER_ANIM { FLYER_FLY = 13, }; +static bool m_EnableExplosions = true; static BITE_INFO m_WarriorBite = { -27, 98, 0, 10 }; static BITE_INFO m_WarriorRocket = { 51, 213, 0, 14 }; static BITE_INFO m_WarriorShard = { -35, 269, 0, 9 }; +void Mutant_ToggleExplosions(bool enable) +{ + m_EnableExplosions = enable; +} + void Mutant_Setup(OBJECT_INFO *obj) { if (!obj->loaded) { @@ -117,7 +123,9 @@ void Mutant_FlyerControl(int16_t item_num) int16_t angle = 0; if (item->hit_points <= 0) { - if (Effect_ExplodingDeath(item_num, -1, FLYER_PART_DAMAGE)) { + if (Effect_ExplodingDeath( + item_num, -1, + m_EnableExplosions ? FLYER_SMARTNESS : -FLYER_PART_DAMAGE)) { Sound_Effect(SFX_ATLANTEAN_DEATH, &item->pos, SPM_NORMAL); LOT_DisableBaddieAI(item_num); Item_Kill(item_num); diff --git a/src/game/objects/creatures/mutant.h b/src/game/objects/creatures/mutant.h index 9ec69a557..19f14e03c 100644 --- a/src/game/objects/creatures/mutant.h +++ b/src/game/objects/creatures/mutant.h @@ -6,6 +6,7 @@ void Mutant_Setup(OBJECT_INFO *obj); void Mutant_Setup2(OBJECT_INFO *obj); void Mutant_Setup3(OBJECT_INFO *obj); +void Mutant_ToggleExplosions(bool enable); void Mutant_FlyerControl(int16_t item_num); void Mutant_Initialise2(int16_t item_num); diff --git a/src/game/objects/effects/body_part.c b/src/game/objects/effects/body_part.c index 98b924786..fc4596510 100644 --- a/src/game/objects/effects/body_part.c +++ b/src/game/objects/effects/body_part.c @@ -39,7 +39,7 @@ void BodyPart_Control(int16_t fx_num) const int32_t height = Room_GetHeight(sector, fx->pos.x, fx->pos.y, fx->pos.z); if (fx->pos.y >= height) { - if (fx->counter) { + if (fx->counter > 0) { fx->speed = 0; fx->frame_num = 0; fx->counter = 0; @@ -51,10 +51,10 @@ void BodyPart_Control(int16_t fx_num) return; } - if (Lara_IsNearItem(&fx->pos, fx->counter * 2)) { - Lara_TakeDamage(fx->counter, true); + if (Lara_IsNearItem(&fx->pos, ABS(fx->counter) * 2)) { + Lara_TakeDamage(ABS(fx->counter), true); - if (fx->counter) { + if (fx->counter > 0) { fx->speed = 0; fx->frame_num = 0; fx->counter = 0;