• 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!

TFS 1.X+ Condition not working

trunksagain

New Member
Joined
May 22, 2019
Messages
17
Reaction score
1
Hello, guys. I can't set two different conditions in player, no error in console or something else. This is my test script:
Lua:
local condition1 = Condition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT)
condition1:setParameter(CONDITION_PARAM_TICKS, 10000)
condition1:setParameter(CONDITION_PARAM_SUBID, 1)
condition1:setParameter(CONDITION_PARAM_SKILL_DISTANCE, 10)

local condition2 = Condition(CONDITION_REGENERATION, CONDITIONID_DEFAULT)
condition2:setParameter(CONDITION_PARAM_TICKS, 10000)
condition2:setParameter(CONDITION_PARAM_SUBID, 2)
condition2:setParameter(CONDITION_PARAM_HEALTHGAIN, 500)
condition2:setParameter(CONDITION_PARAM_HEALTHTICKS, 1000)

player:addCondition(condition1)
player:addCondition(condition2)
Nothing happens with condition2, only condition1 works perfect, :/. Using condition2:getSubId() that returns 2 (my sub_id). I really don't know what is happening. Anyone to help me, please? I'm using TFS 1.3
 
23:00 You were healed for 500 hitpoints.
23:00 You were healed for 500 hitpoints.
23:00 You were healed for 256 hitpoints.

Does your char have low health? It works fine when I run it.

Something to look at
Intense recovery uses this code.
local condition = Condition(CONDITION_REGENERATION) condition:setParameter(CONDITION_PARAM_TICKS, 1 * 60 * 1000) condition:setParameter(CONDITION_PARAM_HEALTHGAIN, 40) condition:setParameter(CONDITION_PARAM_HEALTHTICKS, 3000) condition:setParameter(CONDITION_PARAM_BUFF_SPELL, true) combat:addCondition(condition)
 
i also used the Intense recovery as a mold, but it only work as one Condition.

if i try to add another Condition only the first on script works.
ive been looking at protector who has 3 Conditions still work on figure it out.

if i manage something ill keep you posted

protector.lua
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)

local skill = Condition(CONDITION_ATTRIBUTES)
skill:setParameter(CONDITION_PARAM_TICKS, 13000)
skill:setParameter(CONDITION_PARAM_SKILL_SHIELDPERCENT, 220)
skill:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
combat:setCondition(skill)

local cooldownAttackGroup = Condition(CONDITION_SPELLGROUPCOOLDOWN)
cooldownAttackGroup:setParameter(CONDITION_PARAM_SUBID, 1)
cooldownAttackGroup:setParameter(CONDITION_PARAM_TICKS, 10000)
combat:setCondition(cooldownAttackGroup)

local pacified = Condition(CONDITION_PACIFIED)
pacified:setParameter(CONDITION_PARAM_TICKS, 10000)
combat:setCondition(pacified)

function onCastSpell(creature, variant)
    return combat:execute(creature, variant)
end
 
Hello, you can use this, and tell me how it went...

Lua:
local conditionDist = Condition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT)
    conditionDist:setParameter(CONDITION_PARAM_TICKS, 10000)
    conditionDist:setParameter(CONDITION_PARAM_SUBID, 11111)
    conditionDist:setParameter(CONDITION_PARAM_SKILL_DISTANCE, 10)

local conditionHeal = Condition(CONDITION_REGENERATION, CONDITIONID_DEFAULT)
    conditionHeal:setParameter(CONDITION_PARAM_TICKS, 10000)
    conditionHeal:setParameter(CONDITION_PARAM_SUBID, 22222)
    conditionHeal:setParameter(CONDITION_PARAM_HEALTHGAIN, 500)
    conditionHeal:setParameter(CONDITION_PARAM_HEALTHTICKS, 1000)

    if not player:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, 11111) then
        player:addCondition(conditionDist)
    end
    if not player:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT, 22222) then
        player:addCondition(conditionHeal)
    end
 
Lua:
local condition1 = Condition(CONDITION_ATTRIBUTES)
condition1:setParameter(CONDITION_PARAM_TICKS, 10000)
condition1:setParameter(CONDITION_PARAM_SUBID, 1)
condition1:setParameter(CONDITION_PARAM_SKILL_DISTANCE, 10)

local condition2 = Condition(CONDITION_REGENERATION)
condition2:setParameter(CONDITION_PARAM_TICKS, 10000)
condition2:setParameter(CONDITION_PARAM_SUBID, 2)
condition2:setParameter(CONDITION_PARAM_HEALTHGAIN, 500)
condition2:setParameter(CONDITION_PARAM_HEALTHTICKS, 1000)

function onCastSpell(player)
    player:addCondition(condition1)
    player:addCondition(condition2)
    return true
end

works like a charm

@edit
remember: subids works the same as uniqueids in actions or quests, so if you have different spell but with the same subids it may overwrite the other spell's conditions
 
Last edited:
Back
Top