tuxico
Member
- Joined
- Aug 2, 2010
- Messages
- 52
- Solutions
- 1
- Reaction score
- 7
After some changes in the spell thread, but nothing like in combat, my conditions stopped working via combat: addCondition, but through creature: addCondition, I get perfectly, I wonder where I can start to find this fault.
Sleep.lua
Combat.cpp
Sleep.lua
Lua:
local condition = Condition(CONDITION_SLEEP)
condition:setParameter(CONDITION_PARAM_TICKS, 33000)
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_GRASSDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, 944)
combat:setArea(createCombatArea(AREA_CIRCLE2X2))
combat:addCondition(condition)
function onCastMove(creature, variant)
return combat:execute(creature, variant)
end
Combat.cpp
C++:
void Combat::doCombatCondition(Creature* caster, const Position& position, const AreaCombat* area, const CombatParams& params)
{
CombatFunc(caster, position, area, params, CombatConditionFunc, nullptr);
}
void Combat::doCombatCondition(Creature* caster, Creature* target, const CombatParams& params)
{
bool canCombat = !params.aggressive || (caster != target && Combat::canDoCombat(caster, target) == RETURNVALUE_NOERROR);
if (caster == target || canCombat) {
if (params.impactEffect != CONST_ME_NONE) {
g_game.addEffect(target->getPosition(), params.impactEffect);
}
if (params.impactSound != CONST_SE_NONE) {
g_game.addSound(target->getPosition(), params.impactSound);
}
}
if (canCombat) {
if (caster) {
if (params.distanceEffect != CONST_ANI_NONE) {
addDistanceEffect(caster, caster->getPosition(), target->getPosition(), params.distanceEffect);
}
if (params.distanceSound != CONST_SE_NONE) {
addDistanceSound(caster, caster->getPosition(), target->getPosition(), params.distanceSound);
}
}
CombatConditionFunc(caster, target, params, nullptr);
if (params.targetCallback) {
params.targetCallback->onTargetCombat(caster, target);
}
}
}