Ir para conteúdo

Spell buff que reduz todo dano tomado em 50% durante 2 segundos

Featured Replies

Postado

Alguém poderia me ajudar com essa spell? 


No caso seria o seguinte, ao usar a spell, o player por 2 segundos vai tomar 50% de dano reduzido de todas as fontes de dano ao redor dele.

OTX2 - 8.60

Inicialmente eu achei que seria uma spell simples mas tive muita dificuldade em fazer ela, se puderem criar para mim ou me falarem se preciso alterar algo na source ficaria grato.

  • 2 weeks later...
Postado

Não sei quais as funções do OTX2 mas no TFS 1.x:
 

login.lua:

player:registerEvent("shield1")

 

creaturescripts.xml

<event type="healthchange" name="shield1" script="shield1.lua"/>

 

shield1.lua

function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
    if primaryType == COMBAT_HEALING or secondaryType == COMBAT_HEALING then
        return primaryDamage, primaryType, secondaryDamage, secondaryType
    end
  
    if creature and creature:isPlayer() then
        if creature:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT, 56) then
            creature:getPosition():sendMagicEffect(CONST_ME_YELLOWENERGY)
            primaryDamage = primaryDamage / 2
            secondaryDamage = secondaryDamage / 2
        end
    end
  
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end

 

Spell:

local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0)

local protect = Condition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT)
protect:setParameter(CONDITION_PARAM_SUBID, 56)
protect:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
protect:setParameter(CONDITION_PARAM_TICKS, 10 * 1000)
combat:setCondition(protect)

function onCastSpell(creature, var)
    return combat:execute(creature, var)
end

 

Editado por GamerGoiano (veja o histórico de edições)

Postado

<spell name="Spell" words="exura sio" level="50" mana="100" soul="2" cooldown="20" group="healing" premium="no">
    <description>Reduces damage taken by 50% for 2 seconds.</description>
    <targetconditions />
    <effect self="1" />
    <events />
</spell>
 

 

function onCastSpell(creature, var)
    -- Definir a duração e o alcance da habilidade
    local duration = 2 -- duração da habilidade em segundos
    local radius = 10 -- raio de alcance da habilidade em células
    
    -- Definir o percentual de dano reduzido
    local damageReduction = 0.5 -- 50% de redução de dano
    
    -- Variável para controlar se a habilidade está ativa
    local spellActive = false
    
    -- Reduzir o dano recebido pelo jogador em 50%
    creature:addDamageReduction(damageReduction)
    
    -- Criar animações e efeitos visuais para mostrar que a habilidade está ativa
    creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
    
    -- Esperar o tempo de duração da habilidade
    addEvent(function()
        -- Voltar ao percentual normal de dano recebido
        creature:addDamageReduction(-damageReduction)
        
        -- Remover animações e efeitos visuais da habilidade
        creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED)
    end, duration * 1000)
    
    return true
end
 

 

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520.3k

Informação Importante

Confirmação de Termo