frostfire_hail.lua

main 86 lines · 2.7 KB Raw
Alex Alex Commit Server upload 18/10/2026 23:38
1SPELL_ID = 00
2local min = 0
3local max = 0
4
5-- =============== COMBAT VARS ===============
6-- Areas/Combat for 0ms
7local combat0_Brush = createCombatObject()
8setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
9setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
10setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
11setCombatArea(combat0_Brush,createCombatArea({{3}}))
12function getDmg_Brush(cid, level, maglevel)
13
14 return -min, -max
15end
16setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17
18-- Areas/Combat for 200ms
19local combat2_Brush_2 = createCombatObject()
20setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
21setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
22setCombatArea(combat2_Brush_2,createCombatArea({{1, 1, 1},
23{1, 2, 1},
24{1, 1, 1}}))
25function getDmg_Brush_2(cid, level, maglevel)
26
27 return -min, -max
28end
29setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
30
31-- =============== CORE FUNCTIONS ===============
32local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
33 if (isCreature(cid)) then
34 doCombat(cid, c, var)
35 if (dirList ~= nil) then -- Emit distance effects
36 local i = 2;
37 while (i < #dirList) do
38 doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
39 i = i + 2
40 end
41 end
42 end
43end
44
45function checkSpell6(cid)
46 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
47 local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
48 local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
49 local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
50 SPELL_ID = 06
51
52 if GUN_ID > 0 then
53 if CHECK_SLOT_01 == SPELL_ID then
54 cid:sendCancelMessage("@SpellCooldown 01")
55 return true
56 elseif CHECK_SLOT_02 == SPELL_ID then
57 cid:sendCancelMessage("@SpellCooldown 02")
58 return true
59 elseif CHECK_SLOT_03 == SPELL_ID then
60 cid:sendCancelMessage("@SpellCooldown 03")
61 return true
62 else
63 return false
64 end
65 else
66 return false
67 end
68 return true
69end
70
71function onCastSpell(cid, var)
72 if checkSpell6(cid) or cid:getGroup():getAccess() then
73 local startPos = getCreaturePosition(cid)
74 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
75 local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
76 local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
77 min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
78 max = min
79 RunPart(combat0_Brush,cid,var)
80 addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
81 return true
82 else
83 cid:getPosition():sendMagicEffect(03)
84 return false
85 end
86end
Top