1function onCastSpell(creature, var)
2 local COOLDOWN = {
3 [-1] = 360;
4 [00] = 360;
5 [01] = 300;
6 [02] = 240;
7 [03] = 180;
8 [04] = 120;
9 }
10 -- MAESTRIA: REGEN
11 if creature:getStorageValue(_SYSTEM.MAESTRIA[01]) == 01 then
12 if creature:getStorageValue(_SYSTEM.MAESTRIA[03]) > 0 then
13 creature:getPosition():sendMagicEffect(CONST_ME_POFF)
14 return true
15 end
16
17 local WaitTime = COOLDOWN[creature:getStorageValue(_SYSTEM.MAESTRIA[02])]
18 creature:setStorageValue(_SYSTEM.MAESTRIA[04], 60)
19 creature:setStorageValue(_SYSTEM.MAESTRIA[03], WaitTime + 3)
20
21 creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
22 creature:sendCancelMessage("@SpellCooldown 06 " ..WaitTime)
23
24 local regenCondition = Condition(CONDITION_REGENERATION, CONDITIONID_DEFAULT)
25 local RegenRandom = (math.random(05, 10))
26 local HPGain = RegenRandom * (creature:getBaseMaxHealth() / 100)
27
28 regenCondition:setTicks(01 * 60 * 1000)
29 regenCondition:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
30 regenCondition:setParameter(CONDITION_PARAM_HEALTHTICKS, 1000)
31 regenCondition:setParameter(CONDITION_PARAM_HEALTHGAIN, HPGain)
32 creature:addCondition(regenCondition)
33
34 -- MAESTRIA: TANKER
35 elseif creature:getStorageValue(_SYSTEM.MAESTRIA[01]) == 02 then
36 if creature:getStorageValue(_SYSTEM.MAESTRIA[03]) > 0 then
37 creature:getPosition():sendMagicEffect(CONST_ME_POFF)
38 return true
39 end
40
41 local WaitTime = COOLDOWN[creature:getStorageValue(_SYSTEM.MAESTRIA[02])]
42 creature:setStorageValue(_SYSTEM.MAESTRIA[04], 10)
43 creature:setStorageValue(_SYSTEM.MAESTRIA[03], WaitTime + 3)
44
45 creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
46 creature:sendCancelMessage("@SpellCooldown 06 " ..WaitTime)
47
48 -- MAESTRIA: SHOOTER
49 elseif creature:getStorageValue(_SYSTEM.MAESTRIA[01]) == 03 then
50 if creature:getStorageValue(_SYSTEM.MAESTRIA[03]) > 0 then
51 creature:getPosition():sendMagicEffect(CONST_ME_POFF)
52 return true
53 end
54
55 local WaitTime = COOLDOWN[creature:getStorageValue(_SYSTEM.MAESTRIA[02])]
56 creature:setStorageValue(_SYSTEM.MAESTRIA[04], 10)
57 creature:setStorageValue(_SYSTEM.MAESTRIA[03], WaitTime + 3)
58
59 creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
60 creature:sendCancelMessage("@SpellCooldown 06 " ..WaitTime)
61
62 -- MAESTRIA: VITAL
63 elseif creature:getStorageValue(_SYSTEM.MAESTRIA[01]) == 04 then
64 if creature:getStorageValue(_SYSTEM.MAESTRIA[03]) > 0 then
65 creature:getPosition():sendMagicEffect(CONST_ME_POFF)
66 return true
67 end
68
69 local WaitTime = COOLDOWN[creature:getStorageValue(_SYSTEM.MAESTRIA[02])]
70 creature:setStorageValue(_SYSTEM.MAESTRIA[04], 10)
71 creature:setStorageValue(_SYSTEM.MAESTRIA[03], WaitTime + 3)
72
73 creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
74 creature:sendCancelMessage("@SpellCooldown 06 " ..WaitTime)
75
76 local gainedHealth = creature:getBaseMaxHealth()
77 local condition = Condition(CONDITION_ATTRIBUTES)
78 condition:setParameter(CONDITION_PARAM_STAT_MAXHITPOINTS, gainedHealth)
79 condition:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
80 condition:setParameter(CONDITION_PARAM_TICKS, 10 * 1000)
81 creature:addCondition(condition)
82
83 doTargetCombat(0, creature, COMBAT_HEALING, gainedHealth * 10, gainedHealth * 10)
84
85 -- MAESTRIA: LUCKY
86 elseif creature:getStorageValue(_SYSTEM.MAESTRIA[01]) == 05 then
87 if creature:getStorageValue(_SYSTEM.MAESTRIA[03]) > 0 then
88 creature:getPosition():sendMagicEffect(CONST_ME_POFF)
89 return true
90 end
91
92 local WaitTime = COOLDOWN[creature:getStorageValue(_SYSTEM.MAESTRIA[02])]
93 creature:setStorageValue(_SYSTEM.MAESTRIA[04], 60)
94 creature:setStorageValue(_SYSTEM.MAESTRIA[03], WaitTime + 3)
95
96 creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
97 creature:sendCancelMessage("@SpellCooldown 06 " ..WaitTime)
98
99 else
100 creature:getPosition():sendMagicEffect(CONST_ME_POFF)
101 return true
102 end
103
104 -- DESAFIO
105 if creature:getStorageValue(_DESAFIOS[00].DESAFIO_ID) > 00 then
106 onPlayerDesafios(creature, 30, 01)
107 end
108 return true
109end