Ir para conteúdo
  • 0

Spell de 'Dbuff'


gabriel28

Pergunta

Posts Recomendados

  • 0

O debuff seria aplicado como?

Seria uma habilidade de uma arma, uma spell...?

 

Eu faria com storages, pois condition até ficaria com o ícone, mas iria dar dano pela condição, e não um dano extra

Vou pensar em algo... ;)

Link para o comentário
Compartilhar em outros sites

  • 0

O debuff seria aplicado como?

Seria uma habilidade de uma arma, uma spell...?

 

Eu faria com storages, pois condition até ficaria com o ícone, mas iria dar dano pela condição, e não um dano extra

Vou pensar em algo... ;)

 

Seria uma spell por target.

Ex: O cara conjuraria a spell no targert (utivo flam, exemplo), dai o target ficaria mais fraco (X porcento) contra determinado elemento, nesse caso, o fogo, por X segundos.

 

Deu pra pegar a ideia? kkkk

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, o felzan tem razão. Eu entendi errado. Estou pelo celular, as vezes leio correndo. Amanhã chego em casa e bolo uma solucao, se ng tiver feito ainda.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, fiz assim :p

 

0oI8VNz.gif

 

 

Add no final do creaturescripts\scripts\login.lua

Abaixo de:
-- Events
player:registerEvent("PlayerDeath")
player:registerEvent("DropLoot")
player:registerEvent("Debuff")
Add no creaturescripts.xml
<event type="healthchange" name="Debuff" script="debuff.lua"/>

 

Exemplo de spells.xml

<instant group="attack" spellid="61" name="Debuff" words="debuff" lvl="1" mana="0" prem="0" range="4" needtarget="1" blockwalls="1" needweapon="0" exhaustion="6000" groupcooldown="2000" needlearn="0" script="debuff.lua">
</instant>

 

spells\scripts\debuff.lua

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SKULLVERTICAL)


local conditionDebuff = Condition(CONDITION_PARALYZE)
conditionDebuff:setParameter(CONDITION_PARAM_TICKS, 10000)
conditionDebuff:setFormula(0, 0, 0, 0)
combat:setCondition(conditionDebuff)

local function removeDebuff(parameters)
	parameters.target:setStorageValue(parameters.key, parameters.value)
end

function onCastSpell(creature, var)
	local cid = creature:getId()
	parameters = {target = Creature(var:getNumber()), key = 99881, value = 0}
	parameters.target:setStorageValue(parameters.key, 1)
	addEvent(removeDebuff, 10000, parameters)
	
  return combat:execute(creature, var)
end

creaturescripts\scripts\debuff.lua

function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
  local hasdebuff = creature:getStorageValue(99881) --storage dada na debuff spell
  local percent = 2 -- dobro (50% seria 1.5)
  local tipoDano = COMBAT_FIREDAMAGE
  if hasdebuff > 0 then
  	return primaryDamage*percent, tipoDano, secondaryDamage, secondaryType
  else
  	return primaryDamage, primaryType, secondaryDamage, secondaryType
  end
end
Editado por felzan
Link para o comentário
Compartilhar em outros sites

  • 0

Deu um erro no script do SPELL

lua:1: attempt to call global 'Combat' a nil value.

 

Uso TFS 0.4, só caso disso ser o problema.

 

Deve ser a versão entao, pq fiz pra 1.x

Faz mt tempo que não faço nada pra versões antigas.

Vai ter de traduzir de 1.x pra 0.4

Link para o comentário
Compartilhar em outros sites

  • 0

Se vc não tiver nada na source que defina a resistencia positiva ou negativa à determinado elemento, vc pode tentar alterar um item aleatório e botar resistencia negativa nele por certo tempo. O único problema q imagino é se o player remover o item, deslogar ou morrer... mas aí vc pode fazer creaturescripts pra evitar isso.

Com movements vc evita de remover o item q tá com debuff, com condition_infight vc evita q deslogue e com onDeath vc evita q ele drope o item com a resist.

Link para o comentário
Compartilhar em outros sites

  • 0

Se vc não tiver nada na source que defina a resistencia positiva ou negativa à determinado elemento, vc pode tentar alterar um item aleatório e botar resistencia negativa nele por certo tempo. O único problema q imagino é se o player remover o item, deslogar ou morrer... mas aí vc pode fazer creaturescripts pra evitar isso.

 

Com movements vc evita de remover o item q tá com debuff, com condition_infight vc evita q deslogue e com onDeath vc evita q ele drope o item com a resist.

Mas acredito que o onStatsChange seja mais pratico e igualmente funcional, não?

Link para o comentário
Compartilhar em outros sites

  • 0

statschange tem um problema de callstack overflow que toda vez que vc trabalha com danos que vão ser recalculados vc precisa contornar com uma das soluções abaixo:
1- Usar a spell durar só 1 dano
2- Controlar o combat por storage (funciona mas é falho e custoso)

Vocês conseguiram fazer pro primeiro caso, mas a real é q a idéia inicial era a spell durar um tempo o debuff, e não só até o proximo dano.

Link para o comentário
Compartilhar em outros sites

  • 0

statschange tem um problema de callstack overflow que toda vez que vc trabalha com danos que vão ser recalculados vc precisa contornar com uma das soluções abaixo:

1- Usar a spell durar só 1 dano

2- Controlar o combat por storage (funciona mas é falho e custoso)

 

Vocês conseguiram fazer pro primeiro caso, mas a real é q a idéia inicial era a spell durar um tempo o debuff, e não só até o proximo dano.

Ela dura pra todos os danos do tipo fire nos proximos 10s..

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...