<?xml version="1.0" encoding="UTF-8"?>
<mod name="Shield" author="c" enabled="yes">
<config name="abs">
<![CDATA[
storage = 23142
vocations = {1,2,3,4,5,6,7,8}
money = 10000
time = 10 * 1000
condition = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition, CONDITION_PARAM_TICKS, time)
local condition1 = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition1, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition1, CONDITION_PARAM_BUFF, true)
setConditionParam(condition1, CONDITION_PARAM_TICKS, time)
setConditionParam(condition1, CONDITION_PARAM_HEALTHGAIN, 1000)
setConditionParam(condition1, CONDITION_PARAM_HEALTHTICKS, 1000)
local condition2 = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition2, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition2, CONDITION_PARAM_BUFF, true)
setConditionParam(condition2, CONDITION_PARAM_TICKS, time)
setConditionParam(condition2, CONDITION_PARAM_MANAGAIN, 1000)
setConditionParam(condition2, CONDITION_PARAM_MANATICKS, 1000)
function doFinish(cid)
return isPlayer(cid) and stopEvent(event1) and doPlayerSetStorageValue(cid, storage, 0)
end
function doWaste(cid)
if isPlayer(cid) then
if getPlayerMoney >= money then
doPlayerRemoveMoney(cid, money)
doSendMagicEffect(getThingPos(cid), CONST_ME_LOSEENERGY)
event1 = addEvent(doWaste, 1000, cid)
else
stopEvent(event2)
doPlayerSetStorageValue(cid, storage, 0)
doPlayerSendCancel(cid, 'Your shield has worn out.')
end
end
end
]]>
</config>
<event type="login" name="shield2" event="script">
<![CDATA[
domodlib('abs')
function onLogin(cid)
registerCreatureEvent(cid, "shield3")
doPlayerSetStorageValue(cid, storage, 0)
return true
end
]]>
</event>
<event type="statschange" name="shield3" event="script">
<![CDATA[
domodlib('abs')
function onStatsChange(cid, attacker, type, combat, value)
if isInArray(vocations, getPlayerVocation(cid)) and combat ~= COMBAT_HEALING and isCreature(attacker) and getPlayerStorageValue(cid, storage) > 0 then
if math.abs(value) > getCreatureHealth(cid) then
stopEvent(event1)
stopEvent(event2)
doSendAnimatedText(getThingPos(cid), TEXTCOLOR_DARKORANGE, 'BREAK')
doPlayerSendCancel(cid, 'Your shield was broken!')
doPlayerSetStorageValue(cid, storage, 0)
return true
else
return false
end
end
return true
end
]]>
</event>
<instant name="Absorb Shield" words="utamo gran" lvl="100" mana="100" soul="10" exhaustion="30000" event="script">
<text>
<![CDATA[
domodlib('abs')
function onCastSpell(cid, var)
if getPlayerStorageValue(cid, storage) > 0 then
doPlayerSendCancel(cid,'Your shield is still active.')
return false
end
doAddCondition(cid, condition)
doAddCondition(cid, condition1)
doAddCondition(cid, condition2)
doPlayerSetStorageValue(cid, storage, 1)
event1 = addEvent(doWaste, 1000, cid)
event2 = addEvent(doFinish, time, cid)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
doPlayerSendCancel(cid,'You have just enabled shield for 10 seconds.')
return true
end
]]>
</text>
<vocation id="1;2;3;4;5;6;7;8"/>
</instant>
</mod>