void Combat::postCombatEffects(Creature* caster, const Position& pos, const CombatParams& params) { if (caster) { if (params.distanceEffect != NM_ME_NONE) { addDistanceEffect(caster, caster->getPosition(), pos, params.distanceEffect); } Player* p_caster = NULL; if (caster->getPlayer()) { p_caster = caster->getPlayer(); } else if (caster->isPlayerSummon()) { p_caster = caster->getPlayerMaster(); } if (p_caster && !p_caster->hasFlag(PlayerFlag_NotGainInFight) && params.isAggressive) { p_caster->addInFightTicks(g_config.getNumber(ConfigManager::IN_FIGHT_DURATION), params.pzBlock); } } }
void Combat::doCombatMana(Creature* caster, Creature* target, const int32_t& minChange, const int32_t& maxChange, const CombatParams& params) { if (!params.isAggressive || (caster != target && Combat::canDoCombat(caster, target) == RET_NOERROR)) { Combat2Var var; var.minChange = minChange; var.maxChange = maxChange; CombatManaFunc(caster, target, params, (void*)&var); if (params.targetCallback) { params.targetCallback->onTargetCombat(caster, target); } if (params.impactEffect != NM_ME_NONE) { g_game.addMagicEffect(target->getPosition(), params.impactEffect); } if (caster && params.distanceEffect != NM_ME_NONE) { addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.distanceEffect); } } }
void Combat::doCombatDispel(Creature* caster, Creature* target, const CombatParams& params) { if(!params.isAggressive || (caster != target && Combat::canDoCombat(caster, target) == RET_NOERROR)) { CombatDispelFunc(caster, target, params, NULL); if(params.targetCallback) params.targetCallback->onTargetCombat(caster, target); if(params.impactEffect != NM_ME_NONE) g_game.addMagicEffect(target->getPosition(), params.impactEffect); if(caster && params.distanceEffect != NM_ME_NONE) addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.distanceEffect); } }
void Combat::doCombatDispel(const CreatureP& caster, const CreatureP& target, const CombatParams& params) { if(params.isAggressive && (caster == target || Combat::canDoCombat(caster, target) != RET_NOERROR)) return; CombatDispelFunc(caster, target, params, nullptr); if(params.targetCallback) params.targetCallback->onTargetCombat(caster, target); if(params.effects.impact != MAGIC_EFFECT_NONE && (!caster || !caster->isGhost() || server.configManager().getBool(ConfigManager::GHOST_SPELL_EFFECTS))) server.game().addMagicEffect(target->getPosition(), params.effects.impact); if(caster && params.effects.distance != SHOOT_EFFECT_NONE) addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.effects.distance); }
void Combat::doCombatDispel(Creature* caster, Creature* target, const CombatParams& params, bool check/* = true*/) { if(check && params.isAggressive && (caster == target || Combat::canDoCombat(caster, target, true) != RET_NOERROR)) return; CombatDispelFunc(caster, target, params, NULL); if(params.targetCallback) params.targetCallback->onTargetCombat(caster, target); if(params.effects.impact != MAGIC_EFFECT_NONE && (!caster || !caster->isGhost() || g_config.getBool(ConfigManager::GHOST_SPELL_EFFECTS))) g_game.addMagicEffect(target->getPosition(), params.effects.impact); if(caster && params.effects.distance != SHOOT_EFFECT_NONE) addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.effects.distance); }
void Combat::doCombatDefault(Creature* caster, Creature* target, const CombatParams& params) { if(!params.isAggressive || (caster != target && Combat::canDoCombat(caster, target) == RET_NOERROR)) { const SpectatorVec& list = g_game.getSpectators(target->getTile()->getPosition()); CombatNullFunc(caster, target, params, NULL); combatTileEffects(list, caster, target->getTile(), params); if(params.targetCallback) params.targetCallback->onTargetCombat(caster, target); if(params.impactEffect != NM_ME_NONE) g_game.addMagicEffect(target->getPosition(), params.impactEffect); if(caster && params.distanceEffect != NM_ME_NONE) addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.distanceEffect); } }
void Combat::doCombatDispel(Creature* caster, Creature* target, const CombatParams& params) { bool canCombat = !params.isAggressive || (caster != target && Combat::canDoCombat(caster, target) == RET_NOERROR); if ((caster == target || canCombat) && params.impactEffect != CONST_ME_NONE) { g_game.addMagicEffect(target->getPosition(), params.impactEffect); } if (canCombat) { CombatDispelFunc(caster, target, params, nullptr); if (params.targetCallback) { params.targetCallback->onTargetCombat(caster, target); } if (caster && params.distanceEffect != CONST_ME_NONE) { addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.distanceEffect); } } }
void Combat::doCombatMana(Creature* caster, Creature* target, CombatDamage& damage, const CombatParams& params) { bool canCombat = !params.aggressive || (caster != target && Combat::canDoCombat(caster, target) == RETURNVALUE_NOERROR); if ((caster == target || canCombat) && params.impactEffect != CONST_ME_NONE) { g_game.addMagicEffect(target->getPosition(), params.impactEffect); } if (canCombat) { CombatManaFunc(caster, target, params, &damage); if (params.targetCallback) { params.targetCallback->onTargetCombat(caster, target); } if (caster && params.distanceEffect != CONST_ANI_NONE) { addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.distanceEffect); } } }
void Combat::doCombatDefault(Creature* caster, Creature* target, const CombatParams& params) { if(params.isAggressive && (caster == target || Combat::canDoCombat(caster, target, true) != RET_NOERROR)) return; const SpectatorVec& list = g_game.getSpectators(target->getTile()->getPosition()); CombatNullFunc(caster, target, params, NULL); combatTileEffects(list, caster, target->getTile(), params); if(params.targetCallback) params.targetCallback->onTargetCombat(caster, target); if(params.effects.impact != MAGIC_EFFECT_NONE && (!caster || !caster->isGhost() || g_config.getBool(ConfigManager::GHOST_SPELL_EFFECTS))) g_game.addMagicEffect(target->getPosition(), params.effects.impact); if(caster && params.effects.distance != SHOOT_EFFECT_NONE) addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.effects.distance); }
void Combat::doCombatDefault(Creature* caster, Creature* target, const CombatParams& params) { if (!params.isAggressive || (caster != target && Combat::canDoCombat(caster, target) == RET_NOERROR)) { SpectatorVec list; g_game.getSpectators(list, target->getPosition(), true, true); CombatnullptrFunc(caster, target, params, nullptr); combatTileEffects(list, caster, target->getTile(), params); if (params.targetCallback) { params.targetCallback->onTargetCombat(caster, target); } /* if (params.impactEffect != CONST_ME_NONE) { g_game.addMagicEffect(target->getPosition(), params.impactEffect); } */ if (caster && params.distanceEffect != CONST_ME_NONE) { addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.distanceEffect); } } }
void Combat::postCombatEffects(Creature* caster, const Position& pos, const CombatParams& params) { if (caster && params.distanceEffect != CONST_ME_NONE) { addDistanceEffect(caster, caster->getPosition(), pos, params.distanceEffect); } }
void Combat::postCombatEffects(const CreatureP& caster, const Position& pos, const CombatParams& params) { if(caster && params.effects.distance != SHOOT_EFFECT_NONE) addDistanceEffect(caster, caster->getPosition(), pos, params.effects.distance); }