From 858db697d8f23497f5272f21b2515d502326a29c Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Sun, 29 Oct 2023 10:13:00 +0100 Subject: [PATCH] crossbow:: no time passes when shooting while unstable --- crossbow.cpp | 1 + pcmove.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/crossbow.cpp b/crossbow.cpp index 21701c40..680c5e06 100644 --- a/crossbow.cpp +++ b/crossbow.cpp @@ -248,6 +248,7 @@ EX void add_fire(cell *c) { pcmove pcm; pcm.checkonly = false; changes.init(false); + addMessage(XLAT("Fire!")); bool b = pcm.try_shooting(false); if(!b) changes.rollback(); fire_mode = false; diff --git a/pcmove.cpp b/pcmove.cpp index 0df0ff32..fc80398c 100644 --- a/pcmove.cpp +++ b/pcmove.cpp @@ -265,6 +265,15 @@ bool pcmove::try_shooting(bool auto_target) { if(gravity_state) markOrb(itOrbGravity); } lastmovetype = lmAttack; lastmove = NULL; + + if(cellEdgeUnstable(cwt.at) || cwt.at->land == laWhirlpool) { + if(checkonly) return true; + if(changes.on) changes.commit(); + addMessage(XLAT("(shooting while unstable -- no turn passes)")); + checkmove(); + return true; + } + if(checkNeedMove(checkonly, false)) return false; swordAttackStatic();