diff --git a/soh/soh/Enhancements/presets.h b/soh/soh/Enhancements/presets.h index a89d14574..399bf5402 100644 --- a/soh/soh/Enhancements/presets.h +++ b/soh/soh/Enhancements/presets.h @@ -174,7 +174,8 @@ const std::vector enhancementsCvars = { "gBombchuBowlingNoBigCucco", "gBombchuBowlingAmmunition", "gCreditsFix", - "gSilverRupeeJingleExtend" + "gSilverRupeeJingleExtend", + "gStaticExplosionRadius" }; const std::vector randomizerCvars = { diff --git a/soh/soh/GameMenuBar.cpp b/soh/soh/GameMenuBar.cpp index 07fd67440..c13600bc5 100644 --- a/soh/soh/GameMenuBar.cpp +++ b/soh/soh/GameMenuBar.cpp @@ -400,6 +400,8 @@ namespace GameMenuBar { UIWidgets::Tooltip("Makes nuts explode bombs, similar to how they interact with bombchus. This does not affect bombflowers."); UIWidgets::PaddedEnhancementCheckbox("Equip Multiple Arrows at Once", "gSeparateArrows", true, false); UIWidgets::Tooltip("Allow the bow and magic arrows to be equipped at the same time on different slots"); + UIWidgets::PaddedEnhancementCheckbox("Static Explosion Radius", "gStaticExplosionRadius", true, false); + UIWidgets::Tooltip("Explosions are now a static size, like in Majora's Mask and OoT3D. Makes bombchu hovering much easier."); ImGui::EndMenu(); } diff --git a/soh/src/overlays/actors/ovl_En_Bom/z_en_bom.c b/soh/src/overlays/actors/ovl_En_Bom/z_en_bom.c index 482001e00..0e344599f 100644 --- a/soh/src/overlays/actors/ovl_En_Bom/z_en_bom.c +++ b/soh/src/overlays/actors/ovl_En_Bom/z_en_bom.c @@ -177,7 +177,12 @@ void EnBom_Explode(EnBom* this, PlayState* play) { func_800AA000(this->actor.xzDistToPlayer, 0xFF, 0x14, 0x96); } - this->explosionCollider.elements[0].dim.worldSphere.radius += this->actor.shape.rot.z + 8; + if (CVarGetInteger("gStaticExplosionRadius", 0)) { + this->explosionCollider.elements[0].dim.worldSphere.radius = 40; + } else { + this->explosionCollider.elements[0].dim.worldSphere.radius += this->actor.shape.rot.z + 8; + } + if (this->actor.params == BOMB_EXPLOSION) { CollisionCheck_SetAT(play, &play->colChkCtx, &this->explosionCollider.base);