diff options
Diffstat (limited to 'engines/dm/eventman.cpp')
-rw-r--r-- | engines/dm/eventman.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/engines/dm/eventman.cpp b/engines/dm/eventman.cpp index 626887ebab..8728dd76f6 100644 --- a/engines/dm/eventman.cpp +++ b/engines/dm/eventman.cpp @@ -420,5 +420,34 @@ void EventManager::commandMoveParty(CommandType cmdType) { // MISSING CODE: Lots of code } +void EventManager::commandSetLeader(ChampionIndex index) { + ChampionMan &cm = *_vm->_championMan; + ChampionIndex leaderIndex; + + if ((cm._leaderIndex == index) || ((index != kChampionNone) && !cm._champions[index]._currHealth)) + return; + + if (cm._leaderIndex != kChampionNone) { + leaderIndex = cm._leaderIndex; + cm._champions[leaderIndex].setAttributeFlag(kChampionAttributeLoad, true); + cm._champions[leaderIndex].setAttributeFlag(kChampionAttributeNameTitle, true); + cm._champions[leaderIndex]._load -= _vm->_dungeonMan->getObjectWeight(cm._leaderHand); + cm._leaderIndex = kChampionNone; + warning("MISSING CODE: F0292_CHAMPION_DrawState"); + } + if (index == kChampionNone) { + cm._leaderIndex = kChampionNone; + return; + } + cm._leaderIndex = index; + Champion *champion = &cm._champions[cm._leaderIndex]; + champion->_dir = _vm->_dungeonMan->_currMap.partyDir; + cm._champions[index]._load += _vm->_dungeonMan->getObjectWeight(cm._leaderHand); + if (indexToOrdinal(index) != cm._candidateChampionOrdinal) { + champion->setAttributeFlag(kChampionAttributeIcon, true); + champion->setAttributeFlag(kChampionAttributeNameTitle, true); + warning("MISSING CODE: F0292_CHAMPION_DrawState"); + } +} }; // end of namespace DM |