Skip to content

Commit be4beee

Browse files
committed
MM: MM1: Implement spell casting from Cast Spell view
1 parent c524fee commit be4beee

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

engines/mm/mm1/views/spells/cast_spell.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ void CastSpell::performSpell(Character *chr) {
196196
c._gems = MAX(c._gems - _requiredGems, 0);
197197

198198
if (!isMagicAllowed()) {
199-
spellDone(STRING["dialogs.misc.magic_doesnt_work"], 5);
199+
spellDone(STRING["spells.magic_doesnt_work"], 5);
200200
} else {
201201
// Cast the spell
202202
switch (Game::SpellsParty::cast(_spellIndex, chr)) {

engines/mm/mm1/views_enh/spells/cast_spell.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
*/
2121

2222
#include "mm/mm1/views_enh/spells/cast_spell.h"
23+
#include "mm/mm1/game/spells_party.h"
2324
#include "mm/mm1/globals.h"
2425

2526
namespace MM {
@@ -140,7 +141,27 @@ void CastSpell::updateSelectedSpell() {
140141
}
141142

142143
void CastSpell::castSpell(Character *target) {
143-
warning("TODO: cast spell");
144+
if (!isMagicAllowed()) {
145+
g_events->send(InfoMessage(STRING["spells.magic_doesnt_work"]));
146+
147+
} else {
148+
// Cast the spell
149+
Game::SpellResult result = Game::SpellsParty::cast(_spellIndex, target);
150+
151+
switch (result) {
152+
case Game::SR_FAILED:
153+
g_events->send(InfoMessage(STRING["spells.failed"]));
154+
break;
155+
156+
case Game::SR_SUCCESS_DONE:
157+
g_events->send(InfoMessage(STRING["spells.done"]));
158+
break;
159+
160+
default:
161+
// Spell done, but don't display done message
162+
break;
163+
}
164+
}
144165
}
145166

146167
void CastSpell::spellError() {

0 commit comments

Comments
 (0)