Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ReturnValue Combat::canDoCombat(const Creature* attacker, const Creature* target, bool isAggressive)
- {
- if(!attacker)
- return RET_NOERROR;
- bool success = true;
- CreatureEventList combatEvents = const_cast<Creature*>(attacker)->getCreatureEvents(CREATURE_EVENT_COMBAT);
- for(CreatureEventList::iterator it = combatEvents.begin(); it != combatEvents.end(); ++it)
- {
- if(!(*it)->executeCombat(const_cast<Creature*>(attacker), const_cast<Creature*>(target), isAggressive) && success)
- success = false;
- }
- if(!success)
- return RET_NOTPOSSIBLE;
- if(g_config.getBool(ConfigManager::MONSTER_ATTACK_MONSTER))
- {
- if(target->getType() == CREATURETYPE_MONSTER && attacker->getType() == CREATURETYPE_MONSTER && !target->isPlayerSummon() && !attacker->isPlayerSummon())
- return RET_NOTPOSSIBLE;
- if(!attacker->isSummon() && !target->isSummon()) {
- if(attacker->getType() == CREATURETYPE_MONSTER && target->getType() == CREATURETYPE_MONSTER)
- return RET_NOTPOSSIBLE;
- }
- }
- if (attacker->isSummon())
- {
- if (target == attacker->getMaster())
- {
- return RET_NOTPOSSIBLE;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement