• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

C++ AddCondition

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

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);
        }
    }
}
 
Back
Top