mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 17:33:05 +00:00
XEEN: Add invincible debugger command
This commit is contained in:
parent
1bff4cf444
commit
a8377334b7
@ -1287,7 +1287,7 @@ void Character::setValue(int id, uint value) {
|
||||
// Set condition
|
||||
if (value == 16) {
|
||||
// Clear all the conditions
|
||||
Common::fill(&_conditions[CURSED], &_conditions[NO_CONDITION], false);
|
||||
clearConditions();
|
||||
} else if (value == 6) {
|
||||
_conditions[value] = 1;
|
||||
} else {
|
||||
@ -1785,7 +1785,14 @@ void Character::addHitPoints(int amount) {
|
||||
}
|
||||
|
||||
void Character::subtractHitPoints(int amount) {
|
||||
Sound &sound = *Party::_vm->_sound;
|
||||
Debugger &debugger = *g_vm->_debugger;
|
||||
Sound &sound = *g_vm->_sound;
|
||||
|
||||
// If invincibility is turned on in the debugger, ignore all damage
|
||||
if (debugger._invincible)
|
||||
return;
|
||||
|
||||
// Subtract the given HP amount
|
||||
_currentHp -= amount;
|
||||
bool flag = _currentHp <= 10;
|
||||
|
||||
@ -1847,4 +1854,8 @@ int Character::getClassCategory() const {
|
||||
}
|
||||
}
|
||||
|
||||
void Character::clearConditions() {
|
||||
Common::fill(&_conditions[CURSED], &_conditions[NO_CONDITION], false);
|
||||
}
|
||||
|
||||
} // End of namespace Xeen
|
||||
|
@ -529,6 +529,11 @@ public:
|
||||
* Returns a category index for a character, used such for indexing into spell data
|
||||
*/
|
||||
int getClassCategory() const;
|
||||
|
||||
/**
|
||||
* Clears the character of any currently set conditions
|
||||
*/
|
||||
void clearConditions();
|
||||
};
|
||||
|
||||
} // End of namespace Xeen
|
||||
|
@ -267,6 +267,7 @@ loop:
|
||||
}
|
||||
|
||||
void Combat::doCharDamage(Character &c, int charNum, int monsterDataIndex) {
|
||||
Debugger &debugger = *g_vm->_debugger;
|
||||
EventsManager &events = *_vm->_events;
|
||||
Interface &intf = *_vm->_interface;
|
||||
Map &map = *_vm->_map;
|
||||
@ -434,7 +435,12 @@ void Combat::doCharDamage(Character &c, int charNum, int monsterDataIndex) {
|
||||
break;
|
||||
}
|
||||
|
||||
c.subtractHitPoints(damage);
|
||||
if (debugger._invincible)
|
||||
// Invincibility mode is on, so reset conditions that were set
|
||||
c.clearConditions();
|
||||
else
|
||||
// Standard gameplay, deal out the damage
|
||||
c.subtractHitPoints(damage);
|
||||
}
|
||||
|
||||
events.ipause(2);
|
||||
|
@ -44,7 +44,8 @@ static int strToInt(const char *s) {
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
Debugger::Debugger(XeenEngine *vm) : GUI::Debugger(), _vm(vm) {
|
||||
Debugger::Debugger(XeenEngine *vm) : GUI::Debugger(), _vm(vm),
|
||||
_invincible(false) {
|
||||
registerCmd("continue", WRAP_METHOD(Debugger, cmdExit));
|
||||
registerCmd("spell", WRAP_METHOD(Debugger, cmdSpell));
|
||||
registerCmd("spells", WRAP_METHOD(Debugger, cmdSpells));
|
||||
@ -53,6 +54,7 @@ Debugger::Debugger(XeenEngine *vm) : GUI::Debugger(), _vm(vm) {
|
||||
registerCmd("gems", WRAP_METHOD(Debugger, cmdGems));
|
||||
registerCmd("map", WRAP_METHOD(Debugger, cmdMap));
|
||||
registerCmd("pos", WRAP_METHOD(Debugger, cmdPos));
|
||||
registerCmd("invincible", WRAP_METHOD(Debugger, cmdInvincible));
|
||||
|
||||
_spellId = -1;
|
||||
}
|
||||
@ -192,4 +194,10 @@ bool Debugger::cmdPos(int argc, const char **argv) {
|
||||
}
|
||||
}
|
||||
|
||||
bool Debugger::cmdInvincible(int argc, const char **argv) {
|
||||
_invincible = (argc < 2) || strcmp(argv[1], "off");
|
||||
debugPrintf("Invincibility is %s\n", _invincible ? "on" : "off");
|
||||
return true;
|
||||
}
|
||||
|
||||
} // End of namespace Xeen
|
||||
|
@ -69,6 +69,13 @@ private:
|
||||
* Changes the party's position in the current map
|
||||
*/
|
||||
bool cmdPos(int argc, const char **argv);
|
||||
|
||||
/**
|
||||
* Flags whether to make the party invincible
|
||||
*/
|
||||
bool cmdInvincible(int argc, const char **argv);
|
||||
public:
|
||||
bool _invincible;
|
||||
public:
|
||||
Debugger(XeenEngine *vm);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user