The idea is based on lifesteal weapons. It heals % of the average damage that people will hit with a certain level, skills and attack of the weapon.
Tested with TFS 0.3.6pl1 8.54
Attack damage weapons
Weapons.xml
Weapon.lua
Wands
Weapons.xml
wand.lua
Tested with TFS 0.3.6pl1 8.54
Attack damage weapons
Weapons.xml
XML:
<melee id="XXXX" level="20" unproperly="1" event="script" value="weapon.lua"/>
Weapon.lua
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, 0, 1.0, 0)
function onUseWeapon(cid, var)
local skill = getPlayerSkill(cid,SKILL_SWORD) -- Change this to the type of weapon you are using
local mat = 0.085*0.5*50*skill+(getPlayerLevel(cid)/5) -- Change 50 to the attack of the weapon
local min = 5 -- this means 5% minimum healing
local max = 15 -- this means 15% maximum healing
local addhealth = math.random((mat * (min/100)), (mat * (max/100)))
if getPlayerLevel(cid) >= 20 then
doCreatureAddHealth(cid, addhealth)
doSendAnimatedText(getPlayerPosition(cid),"+"..addhealth.."", TEXTCOLOR_GREEN)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
doCombat(cid, combat, var)
else
doPlayerSendCancel(cid, 'You need level 20 to use this weapon.')
end
end
Wands
Weapons.xml
XML:
<wand id="XXXX" level="50" mana="15" event="script" value="wand.lua"> <!-- Healing Wand -->
<vocation id="1"/>
</wand>
wand.lua
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)
function onGetFormulaValues(cid, level, maglevel)
min = -(maglevel*4) -level/5
max = -(maglevel*6) -level/5
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onUseWeapon(cid, var)
local level, magic, target = getPlayerLevel(cid), getPlayerMagLevel(cid), getCreatureTarget(cid)
local mat1, mat2 = magic*2+level/10, magic*3+level/10 -- 50% from the min/max above
local xmat1, xmat2 = magic*4+level/5, magic*6+level/5 -- same as the min/max above
local percent = 10 -- change here the % of the healing.
local health, xhealth = math.random((mat1 * (percent/100)), (mat2 * (percent/100))), math.random((xmat1 * (percent/100)), (xmat2 * (percent/100)))
if isPlayer(target) then
doCreatureAddHealth(cid, health)
doSendAnimatedText(getPlayerPosition(cid),"+"..health.."", TEXTCOLOR_GREEN)
doCombat(cid, combat, var)
else
doCreatureAddHealth(cid, xhealth)
doSendAnimatedText(getPlayerPosition(cid),"+"..xhealth.."", TEXTCOLOR_GREEN)
doCombat(cid, combat, var)
end
return true
end
Last edited: