diff --git a/src/game/boe.actions.cpp b/src/game/boe.actions.cpp index 46ce13d8..a6973b68 100644 --- a/src/game/boe.actions.cpp +++ b/src/game/boe.actions.cpp @@ -266,6 +266,14 @@ void handle_spellcast(eSkill which_type, bool& did_something, bool& need_redraw, short store_sp[6]; extern short spec_target_fail; extern eSpecCtxType spec_target_type; + // Dual-caster recast hint toggle: + // Change the recast hint to mage if last spell wasn't mage + if(spell_forced && is_combat() && univ.current_pc().last_cast_type != which_type){ + spell_forced = false; + univ.current_pc().last_cast_type = which_type; + need_redraw = true; + return; + } if(!someone_awake()) { ASB("Everyone's asleep/paralyzed."); need_reprint = true; diff --git a/src/game/boe.graphics.cpp b/src/game/boe.graphics.cpp index 9fe6eb4f..a0f2b9e5 100644 --- a/src/game/boe.graphics.cpp +++ b/src/game/boe.graphics.cpp @@ -634,11 +634,15 @@ void draw_text_bar() { } if(!hint_prefix.empty()){ hint_out << hint_prefix << ": "; - const cSpell& spell = (*current_pc.last_cast[type]); - if(pc_can_cast_spell(current_pc,type) && spell.cost <= current_pc.get_magic()) { - hint_out << "Recast " << spell.name(); + if(current_pc.last_cast[type] != eSpell::NONE){ + const cSpell& spell = (*current_pc.last_cast[type]); + if(pc_can_cast_spell(current_pc,type) && spell.cost <= current_pc.get_magic()) { + hint_out << "Recast " << spell.name(); + }else{ + hint_out << "Cannot recast"; + } }else{ - hint_out << "Cannot recast"; + hint_out << "No spell to recast"; } }