• 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.2 item give + xxx damage more to spells

kaszanalubizryc

New Member
Joined
Sep 10, 2015
Messages
148
Reaction score
1
hey, its possible create item.xml
like
give magicz attack + 55
so
if
spell hit 5000
with item hit 5055

if possible can someone give me example item?
thanks
 
I know two ways:

First:

Explication: When you wear item id 2357 then you hit more with sd

Movements.xml
  1. <movevent event="Equip" itemid="2357" slot="ring" function="onEquip" script="SDRing.lua" />
  2. <movevent event="DeEquip" itemid="2357" slot="ring" function="onDeEquip" script="SDRing.lua" />

SDRing.lua
  1. function onEquip(cid)
  2. setPlayerStorageValue(cid, 4554,1) -- ACTIVATE
  3. end

  4. function onDeEquip(cid)
  5. setPlayerStorageValue(cid, 4554,-1) -- DEACTIVATE
  6. end

Spell SD
  1. -- config --
  2. local extra_damage = 55
  3. local ring_id = 2357
  4. -- config --

  5. local combat = createCombatObject()
  6. setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)

  7. function Formula(cid)
  8. local min = (getPlayerLevel(cid) * 2 + getPlayerMagLevel(cid) *3) * 1.3 - 30
  9. local max = (getPlayerLevel(cid) * 2 + getPlayerMagLevel(cid) *3) * 1.6
  10. return min, max
  11. end

  12. function IncreaseRing(cid,min,max)
  13. if getPlayerStorageValue(cid,4554) == 1 then
  14. doPlayerRemoveItem(cid, ring_id, 1)
  15. return (min + extra_damage),(max + extra_damage)
  16. end
  17. return min, max
  18. end


  19. function onCast(cid, target)
  20. local min,max = Formula(cid)
  21. min,max = IncreaseRing(cid, min, max)

  22. doTargetCombatHealth(0, target, COMBAT_DEATHDAMAGE, -min, -max, CONST_ME_MORTAREA)
  23. end

  24. setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onCast")

  25. function onCastSpell(cid, var)
  26. return doCombat(cid, combat, var)
  27. end

When I tested this I got a problem: if I kill a monster ONLY using SD rune, the creature don't give me experience points. :(

Second:

Explication: When you wear item id 2357 then you hit more with sd

Movements.xml
  1. <movevent event="Equip" itemid="2357" slot="ring" function="onEquip" />
  2. <movevent event="DeEquip" itemid="2357" slot="ring" function="onDeEquip" />

Spell SD
-- config --
local extra_damage = 55
-- config --
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
function onGetFormulaValues(cid, level, maglevel)
min = -(level * 0.2 + maglevel * 5.98) - 28
max = -(level * 0.2 + maglevel * 9.97) - 46


return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")


local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
function onGetFormulaValues(cid, level, maglevel)
min = -(level * 0.2 + maglevel * 5.98) - 28 - extra_damage
max = -(level * 0.2 + maglevel * 9.97) - 46 - extra_damage

return min2, max2
end

setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")


function onCastSpell(cid, var, item)
if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid == 2357 then
return doCombat(cid, combat2, var)
else
return doCombat(cid, combat, var)

end
end

Both works on old tfs, maybe you need to modify some functions to tfs 1.2 (I don't have this one) :)
 
As far I remember its possible to distinguish magic damage from melee dmg, then there is an easy way to do that thing for all spells at once, but would require source edits.

With lua edit, you are able to do it in similiar way like example in post above, but better do this in function onGetFormulaValue, when dmg is calculated just check for a certain item and multply output damage. Keep in mind that you would need to edit every single spell script for that.
 
Back
Top