viper_star.lua

main 1956 lines · 82.9 KB Raw
Alex Alex Commit Server upload 18/10/2026 23:38
1local TARGET = nil
2local PLAYER_DISTANCE = 00
3local GUN_SKILL_DAMAGE = 00
4local GUN_ID = 00
5local GUN_RARE = 00
6local GUN_LEVEL = 00
7local GUN_STAR = 00
8local GUN_TYPE = 00
9local RING_ID = 00
10local RING_RARE = 00
11local RING_LEVEL = 00
12local RING_STAR = 00
13local RING_CHANCE = 00
14local DMG_MIN = 00
15local DMG_MAX = 00
16local PASS_LEVEL = 00
17local DMG_FOR_LEVEL = 00
18
19local SYSTEM_GUN = {
20 [01] = {SPEED = 0300, DISTANCE = 04, SKILL = SKILL_CLUB, DMG_FOR_LEVEL = 01}, -- METRALHADORA
21 [02] = {SPEED = 1000, DISTANCE = 05, SKILL = SKILL_AXE, DMG_FOR_LEVEL = 03}, -- PISTOLA
22 [03] = {SPEED = 2000, DISTANCE = 06, SKILL = SKILL_SWORD, DMG_FOR_LEVEL = 02}, -- RIFLES
23 [04] = {SPEED = 1500, DISTANCE = 03, SKILL = SKILL_FIST, DMG_FOR_LEVEL = 04}, -- ESPINGARDAS
24}
25local arr = {
26 {
27 {0, 0, 0, 0 ,0 ,0 ,0},
28 {0, 0, 0, 0 ,0 ,0 ,0},
29 {0, 0, 1, 1 ,1 ,0 ,0},
30 {0, 0, 1, 3 ,1 ,0 ,0},
31 {0, 0, 1, 1 ,1 ,0 ,0},
32 {0, 0, 0, 0 ,0 ,0 ,0},
33 {0, 0, 0, 0 ,0 ,0 ,0},
34 },
35}
36local combat = Combat()
37 combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
38local combatESP = Combat()
39 combatESP:setArea(createCombatArea(arr[1]))
40local combatMET = Combat()
41 combatMET:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
42local combatTRA = Combat()
43 combatTRA:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
44local function onWeaponDamage()
45 local DanoMinBase = 0
46 local DanoMaxBase = 0
47 DanoMinBase = _ITEMS[GUN_ID].MIN or 0
48 DanoMaxBase = _ITEMS[GUN_ID].MAX or 0
49
50 if GUN_TYPE == 01 then
51 RARE_DMG = _RARIDADES[GUN_RARE].Arm
52 else
53 RARE_DMG = _RARIDADES[GUN_RARE].Gun
54 end
55 local DanoMinAtual = (DanoMinBase + (GUN_STAR * 10)) + (GUN_LEVEL * DMG_FOR_LEVEL) + RARE_DMG
56 local DanoMaxAtual = (DanoMaxBase + (GUN_STAR * 10)) + (GUN_LEVEL * DMG_FOR_LEVEL) + RARE_DMG
57
58 DMG_MIN = DanoMinAtual
59 DMG_MAX = DanoMaxAtual
60end
61local function onGetPassivas(player, id)
62 if player:getStorageValue(_SYSTEM.POINTS_ATR[01]) == id then
63 PASS_LEVEL = player:getStorageValue(_SYSTEM.POINTS_ATR[08])
64 return true
65 elseif player:getStorageValue(_SYSTEM.POINTS_ATR[02]) == id then
66 PASS_LEVEL = player:getStorageValue(_SYSTEM.POINTS_ATR[09])
67 return true
68 elseif player:getStorageValue(_SYSTEM.POINTS_ATR[03]) == id then
69 PASS_LEVEL = player:getStorageValue(_SYSTEM.POINTS_ATR[10])
70 return true
71 elseif player:getStorageValue(_SYSTEM.POINTS_ATR[04]) == id then
72 PASS_LEVEL = player:getStorageValue(_SYSTEM.POINTS_ATR[11])
73 return true
74 elseif player:getStorageValue(_SYSTEM.POINTS_ATR[05]) == id then
75 PASS_LEVEL = player:getStorageValue(_SYSTEM.POINTS_ATR[12])
76 return true
77 elseif player:getStorageValue(_SYSTEM.POINTS_ATR[06]) == id then
78 PASS_LEVEL = player:getStorageValue(_SYSTEM.POINTS_ATR[13])
79 return true
80 else
81 PASS_LEVEL = 00
82 return false
83 end
84end
85
86function onGetFormulaValues(player, level, maglevel)
87 return -01, -01
88end
89combatTRA:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
90function onGetFormulaValues(player, level, maglevel)
91 local min = player:getStorageValue(_PLAYER_INFO.ATK_MIN) or 01
92 local max = player:getStorageValue(_PLAYER_INFO.ATK_MAX) or 01
93
94 return -min, -max
95end
96combatMET:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
97function onGetFormulaValues(player, level, maglevel)
98 onWeaponDamage()
99 local min = DMG_MIN
100 local max = DMG_MAX
101
102 -- ATRIBUTOS
103 local cid = player:getId()
104 local ATR_CRITICO = player:getStorageValue(_PLAYER_INFO.ATR_CRITICO) or 0
105 local ATR_TAXA = player:getStorageValue(_PLAYER_INFO.ATR_TAXA) or 0
106 local ATR_HP_CRITICO = player:getStorageValue(_PLAYER_INFO.ATR_HP_CRITICO) or 0
107 local ATR_DAMAGE = player:getStorageValue(_PLAYER_INFO.ATR_DAMAGE) or 0
108 local HP_CRIT_TAXA = player:getStorageValue(_PLAYER_INFO.HP_CRIT_TAXA) or 0
109 local DROP_TAXA = player:getStorageValue(_PLAYER_INFO.DROP_TAXA) or 0
110 local GOLD_ATR_TAX = player:getStorageValue(_PLAYER_INFO.GOLD_ATR_TAX) or 0
111 local EXP_CRIT = player:getStorageValue(_PLAYER_INFO.EXP_CRIT) or 0
112 local EXETA_RES = player:getStorageValue(_PLAYER_INFO.EXETA_RES) or 0
113 local CRIT_DIST = player:getStorageValue(_PLAYER_INFO.CRIT_DIST) or 0
114 local CRIT_EXP = player:getStorageValue(_PLAYER_INFO.CRIT_EXP) or 0
115 -- SYSTEM
116 local GET_PLA_CRIT = player:getStorageValue(_SYSTEM.CRITICAL_VALUES[01]) or 0
117 local GET_PLA_TAXA = player:getStorageValue(_SYSTEM.CRITICAL_VALUES[02]) or 0
118 local GET_GOLD_TAXA = player:getStorageValue(_SYSTEM.CRITICAL_VALUES[03]) or 0
119 local STATUS_CRITICAL = player:getStorageValue(_SYSTEM.POINTS_ATR[06]) or 0
120 local AMULET_EFFECT = player:getStorageValue(_SYSTEM.AMULET_VALUES[00][02]) or 0
121 local CRIT_CHANCE = math.random(_SYSTEM.CRITICAL_CHANCE) - ATR_TAXA
122 local CRITICAL_HEARTH = 20 * (player:getBaseMaxHealth() / 100)
123 local RING_DMG_EXTRA = 10
124 local CRITICAL_DAMAGE = 05 + GET_PLA_CRIT
125 local TAXA_DAMAGE = GET_PLA_TAXA + ATR_TAXA
126 CRITICAL_DAMAGE = CRITICAL_DAMAGE + math.floor(STATUS_CRITICAL / 05)
127
128 -- PASSIVAS
129 local TotalPercent = 0
130
131 local Percent = _PASSIVES[26].POWER_BASE + (_PASSIVES[26].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
132 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
133 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[26].CATEGORY then
134 Percent = Percent + _PASSIVES[26].BOOST
135 end
136 end
137 CRITICAL_DAMAGE = CRITICAL_DAMAGE + Percent
138 end
139
140 local HP_LOWER = 30 * (player:getBaseMaxHealth() / 100)
141 if player:getHealth() < HP_LOWER then
142 local Percent = _PASSIVES[45].POWER_BASE + (_PASSIVES[45].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
143 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
144 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[45].CATEGORY then
145 Percent = Percent + _PASSIVES[45].BOOST
146 end
147 end
148 TAXA_DAMAGE = TAXA_DAMAGE + Percent
149 end
150 end
151
152 local HP_HIGH = 70 * (player:getBaseMaxHealth() / 100)
153 if player:getHealth() > HP_HIGH then
154 local Percent = _PASSIVES[61].POWER_BASE + (_PASSIVES[61].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
155 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
156 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[61].CATEGORY then
157 Percent = Percent + _PASSIVES[61].BOOST
158 end
159 end
160 TAXA_DAMAGE = TAXA_DAMAGE + Percent
161 end
162 end
163 if onGetPassivas(player, 11) then -- Concede Skill de Rifle.
164 local Percent = _PASSIVES[11].POWER_BASE + (_PASSIVES[11].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
165 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
166 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[11].CATEGORY then
167 Percent = Percent + _PASSIVES[11].BOOST
168 end
169 end
170 GUN_SKILL_DAMAGE = GUN_SKILL_DAMAGE + Percent
171 end
172 if onGetPassivas(player, 25) then -- Concede Skill de Pistola.
173 local Percent = _PASSIVES[25].POWER_BASE + (_PASSIVES[25].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
174 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
175 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[25].CATEGORY then
176 Percent = Percent + _PASSIVES[25].BOOST
177 end
178 end
179 GUN_SKILL_DAMAGE = GUN_SKILL_DAMAGE + Percent
180 end
181 if onGetPassivas(player, 40) then -- Concede Skill de Metralhadora.
182 local Percent = _PASSIVES[40].POWER_BASE + (_PASSIVES[40].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
183 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
184 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[40].CATEGORY then
185 Percent = Percent + _PASSIVES[40].BOOST
186 end
187 end
188 GUN_SKILL_DAMAGE = GUN_SKILL_DAMAGE + Percent
189 end
190 if onGetPassivas(player, 58) then -- Aumenta seu dano com METRALHADORA quando com HP acima de 70%.
191 if GUN_TYPE == 01 then
192 local HP_HIGH = 70 * (player:getBaseMaxHealth() / 100)
193 if player:getHealth() > HP_HIGH then
194 local Percent = _PASSIVES[58].POWER_BASE + (_PASSIVES[58].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
195 min = min + math.floor(Percent * (min / 100))
196 max = max + math.floor(Percent * (min / 100))
197 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
198 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[58].CATEGORY then
199 Percent = Percent + _PASSIVES[58].BOOST
200 end
201 end
202 TotalPercent = TotalPercent + Percent
203 end
204 end
205 end
206 if onGetPassivas(player, 59) then -- Aumenta seu dano com RIFLE quando com HP acima de 70%.
207 if GUN_TYPE == 03 then
208 local HP_HIGH = 70 * (player:getBaseMaxHealth() / 100)
209 if player:getHealth() > HP_HIGH then
210 local Percent = _PASSIVES[59].POWER_BASE + (_PASSIVES[59].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
211 min = min + math.floor(Percent * (min / 100))
212 max = max + math.floor(Percent * (min / 100))
213 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
214 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[59].CATEGORY then
215 Percent = Percent + _PASSIVES[59].BOOST
216 end
217 end
218 TotalPercent = TotalPercent + Percent
219 end
220 end
221 end
222 if onGetPassivas(player, 05) then -- Aumenta seu dano com PISTOLA quando com HP acima de 70%.
223 if GUN_TYPE == 02 then
224 local HP_HIGH = 70 * (player:getBaseMaxHealth() / 100)
225 if player:getHealth() > HP_HIGH then
226 local Percent = _PASSIVES[05].POWER_BASE + (_PASSIVES[05].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
227 min = min + math.floor(Percent * (min / 100))
228 max = max + math.floor(Percent * (min / 100))
229 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
230 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[05].CATEGORY then
231 Percent = Percent + _PASSIVES[05].BOOST
232 end
233 end
234 TotalPercent = TotalPercent + Percent
235 end
236 end
237 end
238 if onGetPassivas(player, 01) then -- Maior dano estando a 1 SQM de distancia.
239 if PLAYER_DISTANCE == 01 then
240 local Percent = _PASSIVES[01].POWER_BASE + (_PASSIVES[01].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
241 min = min + math.floor(Percent * (min / 100))
242 max = max + math.floor(Percent * (min / 100))
243 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
244 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[01].CATEGORY then
245 Percent = Percent + _PASSIVES[01].BOOST
246 end
247 end
248 TotalPercent = TotalPercent + Percent
249 end
250 end
251 if onGetPassivas(player, 07) then -- Maior dano estando a 4 SQM ou mais do alvo.
252 if PLAYER_DISTANCE >= 04 then
253 local Percent = _PASSIVES[07].POWER_BASE + (_PASSIVES[07].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
254 min = min + math.floor(Percent * (min / 100))
255 max = max + math.floor(Percent * (min / 100))
256 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
257 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[07].CATEGORY then
258 Percent = Percent + _PASSIVES[07].BOOST
259 end
260 end
261 TotalPercent = TotalPercent + Percent
262 end
263 end
264 if TARGET:isMonster() then
265 if _MONSTER_LOOT[TARGET:getName()] then
266 if _MONSTER_LOOT[TARGET:getName()][00].Type == "Constructos" then
267 if onGetPassivas(player, 02) then
268 local Percent = _PASSIVES[02].POWER_BASE + (_PASSIVES[02].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
269 min = min + math.floor(Percent * (min / 100))
270 max = max + math.floor(Percent * (min / 100))
271 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
272 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[02].CATEGORY then
273 Percent = Percent + _PASSIVES[02].BOOST
274 end
275 end
276 TotalPercent = TotalPercent + Percent
277 end
278 if _BONUS_EXTRA_TABLE[cid] then
279 local ID_BONUS = 19
280 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
281 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
282 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
283 end
284 end
285 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Dimensionais" then
286 if onGetPassivas(player, 13) then
287 local Percent = _PASSIVES[13].POWER_BASE + (_PASSIVES[13].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
288 min = min + math.floor(Percent * (min / 100))
289 max = max + math.floor(Percent * (min / 100))
290 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
291 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[13].CATEGORY then
292 Percent = Percent + _PASSIVES[13].BOOST
293 end
294 end
295 TotalPercent = TotalPercent + Percent
296 end
297 if _BONUS_EXTRA_TABLE[cid] then
298 local ID_BONUS = 22
299 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
300 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
301 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
302 end
303 end
304 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Mamiferos" then
305 if onGetPassivas(player, 16) then
306 local Percent = _PASSIVES[16].POWER_BASE + (_PASSIVES[16].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
307 min = min + math.floor(Percent * (min / 100))
308 max = max + math.floor(Percent * (min / 100))
309 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
310 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[16].CATEGORY then
311 Percent = Percent + _PASSIVES[16].BOOST
312 end
313 end
314 TotalPercent = TotalPercent + Percent
315 end
316 if _BONUS_EXTRA_TABLE[cid] then
317 local ID_BONUS = 16
318 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
319 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
320 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
321 end
322 end
323 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Gigantes" then
324 if onGetPassivas(player, 17) then
325 local Percent = _PASSIVES[17].POWER_BASE + (_PASSIVES[17].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
326 min = min + math.floor(Percent * (min / 100))
327 max = max + math.floor(Percent * (min / 100))
328 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
329 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[17].CATEGORY then
330 Percent = Percent + _PASSIVES[17].BOOST
331 end
332 end
333 TotalPercent = TotalPercent + Percent
334 end
335 if _BONUS_EXTRA_TABLE[cid] then
336 local ID_BONUS = 18
337 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
338 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
339 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
340 end
341 end
342 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Dragon" then
343 if onGetPassivas(player, 20) then
344 local Percent = _PASSIVES[20].POWER_BASE + (_PASSIVES[20].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
345 min = min + math.floor(Percent * (min / 100))
346 max = max + math.floor(Percent * (min / 100))
347 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
348 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[20].CATEGORY then
349 Percent = Percent + _PASSIVES[20].BOOST
350 end
351 end
352 TotalPercent = TotalPercent + Percent
353 end
354 if _BONUS_EXTRA_TABLE[cid] then
355 local ID_BONUS = 09
356 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
357 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
358 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
359 end
360 end
361 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Demon" then
362 if onGetPassivas(player, 30) then
363 local Percent = _PASSIVES[30].POWER_BASE + (_PASSIVES[30].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
364 min = min + math.floor(Percent * (min / 100))
365 max = max + math.floor(Percent * (min / 100))
366 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
367 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[30].CATEGORY then
368 Percent = Percent + _PASSIVES[30].BOOST
369 end
370 end
371 TotalPercent = TotalPercent + Percent
372 end
373 if _BONUS_EXTRA_TABLE[cid] then
374 local ID_BONUS = 17
375 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
376 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
377 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
378 end
379 end
380 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Humanoide" then
381 if onGetPassivas(player, 32) then
382 local Percent = _PASSIVES[32].POWER_BASE + (_PASSIVES[32].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
383 min = min + math.floor(Percent * (min / 100))
384 max = max + math.floor(Percent * (min / 100))
385 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
386 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[32].CATEGORY then
387 Percent = Percent + _PASSIVES[32].BOOST
388 end
389 end
390 TotalPercent = TotalPercent + Percent
391 end
392 if _BONUS_EXTRA_TABLE[cid] then
393 local ID_BONUS = 21
394 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
395 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
396 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
397 end
398 end
399 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Magica" then
400 if onGetPassivas(player, 37) then
401 local Percent = _PASSIVES[37].POWER_BASE + (_PASSIVES[37].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
402 min = min + math.floor(Percent * (min / 100))
403 max = max + math.floor(Percent * (min / 100))
404 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
405 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[37].CATEGORY then
406 Percent = Percent + _PASSIVES[37].BOOST
407 end
408 end
409 TotalPercent = TotalPercent + Percent
410 end
411 if _BONUS_EXTRA_TABLE[cid] then
412 local ID_BONUS = 11
413 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
414 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
415 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
416 end
417 end
418 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Repteis" then
419 if onGetPassivas(player, 39) then
420 local Percent = _PASSIVES[39].POWER_BASE + (_PASSIVES[39].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
421 min = min + math.floor(Percent * (min / 100))
422 max = max + math.floor(Percent * (min / 100))
423 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
424 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[39].CATEGORY then
425 Percent = Percent + _PASSIVES[39].BOOST
426 end
427 end
428 TotalPercent = TotalPercent + Percent
429 end
430 if _BONUS_EXTRA_TABLE[cid] then
431 local ID_BONUS = 12
432 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
433 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
434 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
435 end
436 end
437 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Vermes" then
438 if onGetPassivas(player, 41) then
439 local Percent = _PASSIVES[41].POWER_BASE + (_PASSIVES[41].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
440 min = min + math.floor(Percent * (min / 100))
441 max = max + math.floor(Percent * (min / 100))
442 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
443 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[41].CATEGORY then
444 Percent = Percent + _PASSIVES[41].BOOST
445 end
446 end
447 TotalPercent = TotalPercent + Percent
448 end
449 if _BONUS_EXTRA_TABLE[cid] then
450 local ID_BONUS = 15
451 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
452 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
453 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
454 end
455 end
456 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Boss" then
457 if onGetPassivas(player, 44) then
458 local Percent = _PASSIVES[44].POWER_BASE + (_PASSIVES[44].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
459 min = min + math.floor(Percent * (min / 100))
460 max = max + math.floor(Percent * (min / 100))
461 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
462 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[44].CATEGORY then
463 Percent = Percent + _PASSIVES[44].BOOST
464 end
465 end
466 TotalPercent = TotalPercent + Percent
467 end
468 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Aquaticos" then
469 if onGetPassivas(player, 46) then
470 local Percent = _PASSIVES[46].POWER_BASE + (_PASSIVES[46].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
471 min = min + math.floor(Percent * (min / 100))
472 max = max + math.floor(Percent * (min / 100))
473 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
474 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[46].CATEGORY then
475 Percent = Percent + _PASSIVES[46].BOOST
476 end
477 end
478 TotalPercent = TotalPercent + Percent
479 end
480 if _BONUS_EXTRA_TABLE[cid] then
481 local ID_BONUS = 13
482 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
483 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
484 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
485 end
486 end
487 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Morto-Vivo" then
488 if onGetPassivas(player, 49) then
489 local Percent = _PASSIVES[49].POWER_BASE + (_PASSIVES[49].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
490 min = min + math.floor(Percent * (min / 100))
491 max = max + math.floor(Percent * (min / 100))
492 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
493 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[49].CATEGORY then
494 Percent = Percent + _PASSIVES[49].BOOST
495 end
496 end
497 TotalPercent = TotalPercent + Percent
498 end
499 if _BONUS_EXTRA_TABLE[cid] then
500 local ID_BONUS = 14
501 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
502 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
503 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
504 end
505 end
506 end
507 end
508 end
509
510 -- FORMULA DE SKILLS
511 if _BONUS_EXTRA_TABLE[cid] then
512 local ID_BONUS = 00
513 if GUN_TYPE == 01 then -- METRALHADORA
514 ID_BONUS = 03
515 elseif GUN_TYPE == 02 then -- PISTOLA
516 ID_BONUS = 02
517 elseif GUN_TYPE == 03 then -- RIFLE
518 ID_BONUS = 05
519 end
520
521 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
522 GUN_SKILL_DAMAGE = GUN_SKILL_DAMAGE + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
523 end
524 -- CRITICAL_DAMAGE
525 ID_BONUS = 06
526 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
527 CRITICAL_DAMAGE = CRITICAL_DAMAGE + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
528 end
529 -- TAXA CRITICA
530 ID_BONUS = 07
531 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
532 TAXA_DAMAGE = TAXA_DAMAGE + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
533 end
534 -- DANO MINIMO
535 ID_BONUS = 39
536 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
537 min = min + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
538 end
539 -- DANO MAXIMO
540 ID_BONUS = 41
541 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
542 max = max + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
543 end
544
545 ID_BONUS = 42
546 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
547 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
548 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
549 end
550 end
551 local NEW_DMG = (GUN_SKILL_DAMAGE + min)
552 if NEW_DMG > max then
553 min = max
554 max = NEW_DMG
555 else
556 min = NEW_DMG
557 end
558 if EXETA_RES > 0 then
559 doChallengeCreature(player, TARGET)
560 end
561 if GOLD_ATR_TAX > 0 then
562 player:setStorageValue(_SYSTEM.ATR_VALUES[03], GOLD_ATR_TAX)
563 else
564 player:setStorageValue(_SYSTEM.ATR_VALUES[03], 00)
565 end
566 if DROP_TAXA > 0 then
567 player:setStorageValue(_SYSTEM.ATR_VALUES[02], DROP_TAXA)
568 else
569 player:setStorageValue(_SYSTEM.ATR_VALUES[02], 00)
570 end
571 if player:getHealth() <= CRITICAL_HEARTH and HP_CRIT_TAXA > 0 then
572 CRIT_CHANCE = CRIT_CHANCE - HP_CRIT_TAXA
573 end
574 if player:getStorageValue(_SYSTEM.INVENTARIO[07].UID_01) > 0 then
575 if player:getStorageValue(_SYSTEM.INVENTARIO[07].UID_01) == 7007 then
576 CRIT_CHANCE = CRIT_CHANCE - 05
577 end
578 end
579
580 --DANO CRITICO E TAXA
581 if CRIT_CHANCE <= TAXA_DAMAGE then
582 local CRITICAL_PERCENT = 0
583 local TARGET_POS = TARGET:getPosition()
584 TARGET_POS:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
585 -- DESAFIO
586 if player:getStorageValue(_DESAFIOS[00].DESAFIO_ID) > 00 then
587 onPlayerDesafios(player, 33, 01)
588 end
589 -- DESAFIO
590 if player:getStorageValue(_DESAFIOS[00].DESAFIO_ID) > 00 then
591
592 onPlayerDesafios(player, 01, 01)
593
594 onPlayerDesafios(player, 02, 01)
595
596 onPlayerDesafios(player, 03, 01)
597 end
598 end
599 if ATR_CRITICO > 0 then
600 CRITICAL_PERCENT = ATR_CRITICO * (CRITICAL_DAMAGE / 100)
601 end
602 if ATR_HP_CRITICO > 0 then
603 local HP_CRITICAL = math.floor(ATR_HP_CRITICO * (player:getBaseMaxHealth() / 100))
604 doTargetCombat(0, player, COMBAT_HEALING, HP_CRITICAL, HP_CRITICAL)
605 end
606 if CRIT_DIST > 0 then
607 if PLAYER_DISTANCE >= 04 then
608 local condition = Condition(CONDITION_HASTE)
609 condition:setParameter(CONDITION_PARAM_TICKS, 10000)
610 condition:setFormula(0.0, CRIT_DIST, 0.0, CRIT_DIST)
611 player:addCondition(condition)
612 end
613 end
614 if RING_ID > 0 then
615 if RING_ID == 7003 then -- Ao dar Critical Damage, chance de curar 05% da vida.
616 if RING_CHANCE <= _AMULET_CHANCE_MODE[RING_RARE] then
617 local HP_PERCENT = math.floor(05 * (player:getBaseMaxHealth() / 100))
618 doTargetCombat(0, player, COMBAT_HEALING, HP_PERCENT, HP_PERCENT)
619 end
620 end
621
622 CRITICAL_PERCENT = CRITICAL_PERCENT + 50
623 end
624 end
625
626 min = min + CRITICAL_DAMAGE + CRITICAL_PERCENT
627 max = max + CRITICAL_DAMAGE + CRITICAL_PERCENT
628 if CRIT_EXP > 0 then
629 if TARGET:getName() ~= "Target" then
630 player:addExperience((max/2), true, true)
631 end
632 end
633 if onGetPassivas(player, 08) then -- Causa status POISON no alvo ao dar Dano Critico.
634 local Percent = _PASSIVES[08].POWER_BASE + (_PASSIVES[08].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
635 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
636 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[08].CATEGORY then
637 Percent = Percent + _PASSIVES[08].BOOST
638 end
639 end
640 local condition = createConditionObject(CONDITION_POISON)
641 setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -Percent)
642 setConditionParam(condition, CONDITION_PARAM_TICKS, ((Percent * 100) / 02))
643 setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000)
644
645 TARGET:addCondition(condition)
646 TARGET:getPosition():sendMagicEffect(09)
647 end
648 if onGetPassivas(player, 22) then -- Causa status ENERGY no alvo ao dar Dano Critico.
649 local Percent = _PASSIVES[22].POWER_BASE + (_PASSIVES[22].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
650 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
651 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[22].CATEGORY then
652 Percent = Percent + _PASSIVES[22].BOOST
653 end
654 end
655 local condition = createConditionObject(CONDITION_ENERGY)
656 setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -Percent)
657 setConditionParam(condition, CONDITION_PARAM_TICKS, ((Percent * 100) / 02))
658 setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000)
659
660 TARGET:addCondition(condition)
661 TARGET:getPosition():sendMagicEffect(12)
662 end
663 if onGetPassivas(player, 35) then -- Causa status FIRE no alvo ao dar Dano Critico.
664 local Percent = _PASSIVES[35].POWER_BASE + (_PASSIVES[35].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
665 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
666 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[35].CATEGORY then
667 Percent = Percent + _PASSIVES[35].BOOST
668 end
669 end
670 local condition = createConditionObject(CONDITION_FIRE)
671 setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -Percent)
672 setConditionParam(condition, CONDITION_PARAM_TICKS, ((Percent * 100) / 02))
673 setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000)
674
675 TARGET:addCondition(condition)
676 TARGET:getPosition():sendMagicEffect(16)
677 end
678 if onGetPassivas(player, 42) then -- Causa status DEATH no alvo ao dar Dano Critico.
679 local Percent = _PASSIVES[42].POWER_BASE + (_PASSIVES[42].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
680 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
681 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[42].CATEGORY then
682 Percent = Percent + _PASSIVES[42].BOOST
683 end
684 end
685 local condition = createConditionObject(CONDITION_CURSED)
686 setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -Percent)
687 setConditionParam(condition, CONDITION_PARAM_TICKS, ((Percent * 100) / 02))
688 setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000)
689
690 TARGET:addCondition(condition)
691 TARGET:getPosition():sendMagicEffect(18)
692 end
693
694 local Percent = _PASSIVES[24].POWER_BASE + (_PASSIVES[24].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
695 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
696 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[24].CATEGORY then
697 Percent = Percent + _PASSIVES[24].BOOST
698 end
699 end
700 doTargetCombat(0, player, COMBAT_HEALING, Percent, Percent)
701 player:getPosition():sendMagicEffect(15)
702 end
703 end
704 --AMULETS
705 if AMULET_EFFECT > 00 then
706 if AMULET_EFFECT == 11 then
707 -- Melhora o Dano com Pistolas
708 if GUN_TYPE == 02 then
709 min = min + (RING_DMG_EXTRA * (min / 100))
710 max = max + (RING_DMG_EXTRA * (min / 100))
711 end
712 end
713 if AMULET_EFFECT == 12 then
714 -- Melhora o Dano com Metralhadoras
715 if GUN_TYPE == 01 then
716 min = min + (RING_DMG_EXTRA * (min / 100))
717 max = max + (RING_DMG_EXTRA * (min / 100))
718 end
719 end
720 if AMULET_EFFECT == 14 then
721 -- Melhora o Dano com Rifles
722 if GUN_TYPE == 03 then
723 min = min + (RING_DMG_EXTRA * (min / 100))
724 max = max + (RING_DMG_EXTRA * (min / 100))
725 end
726 end
727 if AMULET_EFFECT == 15 then min = min + 25 end
728 if AMULET_EFFECT == 16 then max = max + 25 end
729 end
730 -- ATRIBUTO
731 if ATR_DAMAGE > 0 then
732 if player:getStorageValue(_SYSTEM.ATR_VALUES[01]) == 01 then
733 local AcsMaxDamage = math.floor(ATR_DAMAGE * (max / 100))
734
735 min = max + AcsMaxDamage
736 max = max + AcsMaxDamage
737
738 player:setStorageValue(_SYSTEM.ATR_VALUES[01], 00)
739 end
740 else
741 player:setStorageValue(_SYSTEM.ATR_VALUES[01], 00)
742 end
743 -- MAESTRIA
744 if player:getStorageValue(_SYSTEM.MAESTRIA[01]) == 03 then
745 if player:getStorageValue(_SYSTEM.MAESTRIA[04]) > 0 then
746 min = max
747 max = max * 2
748 player:getPosition():sendMagicEffect(178)
749 end
750 end
751 -- ESPECIALISTA
752 if player:getStorageValue(_SYSTEM.WARZONE) < 01 then
753 if player:getStorageValue(_SYSTEM.ESPECIALISTA[01]) > 00 then
754 if player:getStorageValue(_SYSTEM.ESPECIALISTA[01]) ~= 03 then
755 local ESP_DMG = {
756 [-1] = 01;
757 [00] = 10;
758 [01] = 15;
759 [02] = 20;
760 [03] = 25;
761 [04] = 30;
762 [05] = 35;
763 }
764 if GUN_TYPE == 02 then -- Pistolas
765 if player:getStorageValue(_SYSTEM.ESPECIALISTA[01]) == 01 then
766 local EspLevel = player:getStorageValue(_SYSTEM.ESPECIALISTA[02])
767 local EspAtkMin = ESP_DMG[EspLevel] * (min / 100)
768 local EspAtkMax = ESP_DMG[EspLevel] * (max / 100)
769
770 min = min + EspAtkMin
771 max = max + EspAtkMax
772 end
773 end
774 if GUN_TYPE == 01 then -- Metralhadoras
775 if player:getStorageValue(_SYSTEM.ESPECIALISTA[01]) == 02 then
776 local EspLevel = player:getStorageValue(_SYSTEM.ESPECIALISTA[02])
777 local EspAtkMin = (ESP_DMG[EspLevel] / 2) * (min / 100)
778 local EspAtkMax = (ESP_DMG[EspLevel] / 2) * (max / 100)
779
780 min = min + EspAtkMin
781 max = max + EspAtkMax
782 end
783 end
784 if GUN_TYPE == 03 then -- Rifles
785 if player:getStorageValue(_SYSTEM.ESPECIALISTA[01]) == 04 then
786 local EspLevel = player:getStorageValue(_SYSTEM.ESPECIALISTA[02])
787 local EspAtkMin = ESP_DMG[EspLevel] * (min / 100)
788 local EspAtkMax = ESP_DMG[EspLevel] * (max / 100)
789
790 min = min + EspAtkMin
791 max = max + EspAtkMax
792 end
793 end
794 end
795 end
796 end
797 if _CHEATS.FURIUS_SHOOTING then
798 min = min + 10000
799 max = max + 10000
800 end
801 -- WARZONE
802 if Game.getStorageValue(_GLOBAL_RANDOM.WARZONE.STORAGE_START_WARZONE) == 01 then
803 if player:getStorageValue(_SYSTEM.WARZONE) > 00 then
804 if GUN_TYPE ~= 01 then
805 min = min * 2
806 max = max * 2
807 end
808 end
809 end
810
811 player:setStorageValue(_PLAYER_INFO.ATK_MIN, min)
812 player:setStorageValue(_PLAYER_INFO.ATK_MAX, max)
813 return -min, -max
814end
815combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
816function onGetFormulaValues(player, level, maglevel)
817 onWeaponDamage()
818 local min = DMG_MIN
819 local max = DMG_MAX
820 local cid = player:getId()
821 local DMG_CRITICO = false
822 -- ATRIBUTOS
823 local ATR_CRITICO = player:getStorageValue(_PLAYER_INFO.ATR_CRITICO) or 0
824 local ATR_TAXA = player:getStorageValue(_PLAYER_INFO.ATR_TAXA) or 0
825 local ATR_HP_CRITICO = player:getStorageValue(_PLAYER_INFO.ATR_HP_CRITICO) or 0
826 local ATR_DAMAGE = player:getStorageValue(_PLAYER_INFO.ATR_DAMAGE) or 0
827 local HP_CRIT_TAXA = player:getStorageValue(_PLAYER_INFO.HP_CRIT_TAXA) or 0
828 local DROP_TAXA = player:getStorageValue(_PLAYER_INFO.DROP_TAXA) or 0
829 local GOLD_ATR_TAX = player:getStorageValue(_PLAYER_INFO.GOLD_ATR_TAX) or 0
830 local EXP_CRIT = player:getStorageValue(_PLAYER_INFO.EXP_CRIT) or 0
831 local EXETA_RES = player:getStorageValue(_PLAYER_INFO.EXETA_RES) or 0
832 local CRIT_DIST = player:getStorageValue(_PLAYER_INFO.CRIT_DIST) or 0
833 local CRIT_EXP = player:getStorageValue(_PLAYER_INFO.CRIT_EXP) or 0
834 -- SYSTEM
835 local GET_PLA_CRIT = player:getStorageValue(_SYSTEM.CRITICAL_VALUES[01]) or 0
836 local GET_PLA_TAXA = player:getStorageValue(_SYSTEM.CRITICAL_VALUES[02]) or 0
837 local GET_GOLD_TAXA = player:getStorageValue(_SYSTEM.CRITICAL_VALUES[03]) or 0
838 local STATUS_CRITICAL = player:getStorageValue(_SYSTEM.POINTS_ATR[06]) or 0
839 local AMULET_EFFECT = player:getStorageValue(_SYSTEM.AMULET_VALUES[00][02]) or 0
840 local CRIT_CHANCE = math.random(_SYSTEM.CRITICAL_CHANCE) - ATR_TAXA
841 local CRITICAL_HEARTH = 20 * (player:getBaseMaxHealth() / 100)
842 local RING_DMG_EXTRA = 10
843 local TARGET_POS = TARGET:getPosition()
844 local CRITICAL_DAMAGE = 05 + GET_PLA_CRIT
845 local TAXA_DAMAGE = 05 + GET_PLA_TAXA + ATR_TAXA
846 CRITICAL_DAMAGE = CRITICAL_DAMAGE + math.floor(STATUS_CRITICAL / 05)
847
848 -- PASSIVAS
849 local TotalPercent = 0
850
851 local Percent = _PASSIVES[26].POWER_BASE + (_PASSIVES[26].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
852 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
853 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[26].CATEGORY then
854 Percent = Percent + _PASSIVES[26].BOOST
855 end
856 end
857 CRITICAL_DAMAGE = CRITICAL_DAMAGE + Percent
858 end
859
860 local HP_LOWER = 30 * (player:getBaseMaxHealth() / 100)
861 if player:getHealth() < HP_LOWER then
862 local Percent = _PASSIVES[45].POWER_BASE + (_PASSIVES[45].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
863 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
864 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[45].CATEGORY then
865 Percent = Percent + _PASSIVES[45].BOOST
866 end
867 end
868 TAXA_DAMAGE = TAXA_DAMAGE + Percent
869 end
870 end
871
872 local HP_HIGH = 70 * (player:getBaseMaxHealth() / 100)
873 if player:getHealth() > HP_HIGH then
874 local Percent = _PASSIVES[61].POWER_BASE + (_PASSIVES[61].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
875 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
876 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[61].CATEGORY then
877 Percent = Percent + _PASSIVES[61].BOOST
878 end
879 end
880 TAXA_DAMAGE = TAXA_DAMAGE + Percent
881 end
882 end
883 if onGetPassivas(player, 04) then -- Concede Skill de Espingarda.
884 local Percent = _PASSIVES[04].POWER_BASE + (_PASSIVES[04].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
885 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
886 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[04].CATEGORY then
887 Percent = Percent + _PASSIVES[04].BOOST
888 end
889 end
890 GUN_SKILL_DAMAGE = GUN_SKILL_DAMAGE + Percent
891 end
892 if onGetPassivas(player, 60) then -- Aumenta seu dano com ESPINGARDA quando com HP acima de 70%.
893 if GUN_TYPE == 01 then
894 local HP_HIGH = 70 * (player:getBaseMaxHealth() / 100)
895 if player:getHealth() > HP_HIGH then
896 local Percent = _PASSIVES[60].POWER_BASE + (_PASSIVES[60].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
897 min = min + math.floor(Percent * (min / 100))
898 max = max + math.floor(Percent * (min / 100))
899 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
900 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[60].CATEGORY then
901 Percent = Percent + _PASSIVES[60].BOOST
902 end
903 end
904 TotalPercent = TotalPercent + Percent
905 end
906 end
907 end
908 if onGetPassivas(player, 01) then -- Maior dano estando a 1 SQM de distancia.
909 if PLAYER_DISTANCE == 01 then
910 local Percent = _PASSIVES[01].POWER_BASE + (_PASSIVES[01].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
911 min = min + math.floor(Percent * (min / 100))
912 max = max + math.floor(Percent * (min / 100))
913 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
914 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[01].CATEGORY then
915 Percent = Percent + _PASSIVES[01].BOOST
916 end
917 end
918 TotalPercent = TotalPercent + Percent
919 end
920 end
921 if onGetPassivas(player, 07) then -- Maior dano estando a 4 SQM ou mais do alvo.
922 if PLAYER_DISTANCE >= 04 then
923 local Percent = _PASSIVES[07].POWER_BASE + (_PASSIVES[07].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
924 min = min + math.floor(Percent * (min / 100))
925 max = max + math.floor(Percent * (min / 100))
926 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
927 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[07].CATEGORY then
928 Percent = Percent + _PASSIVES[07].BOOST
929 end
930 end
931 TotalPercent = TotalPercent + Percent
932 end
933 end
934 if TARGET:isMonster() then
935 if _MONSTER_LOOT[TARGET:getName()] then
936 if _MONSTER_LOOT[TARGET:getName()][00].Type == "Constructos" then
937 if onGetPassivas(player, 02) then
938 local Percent = _PASSIVES[02].POWER_BASE + (_PASSIVES[02].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
939 min = min + math.floor(Percent * (min / 100))
940 max = max + math.floor(Percent * (min / 100))
941 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
942 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[02].CATEGORY then
943 Percent = Percent + _PASSIVES[02].BOOST
944 end
945 end
946 TotalPercent = TotalPercent + Percent
947 end
948 if _BONUS_EXTRA_TABLE[cid] then
949 local ID_BONUS = 19
950 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
951 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
952 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
953 end
954 end
955 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Dimensionais" then
956 if onGetPassivas(player, 13) then
957 local Percent = _PASSIVES[13].POWER_BASE + (_PASSIVES[13].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
958 min = min + math.floor(Percent * (min / 100))
959 max = max + math.floor(Percent * (min / 100))
960 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
961 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[13].CATEGORY then
962 Percent = Percent + _PASSIVES[13].BOOST
963 end
964 end
965 TotalPercent = TotalPercent + Percent
966 end
967 if _BONUS_EXTRA_TABLE[cid] then
968 local ID_BONUS = 22
969 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
970 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
971 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
972 end
973 end
974 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Mamiferos" then
975 if onGetPassivas(player, 16) then
976 local Percent = _PASSIVES[16].POWER_BASE + (_PASSIVES[16].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
977 min = min + math.floor(Percent * (min / 100))
978 max = max + math.floor(Percent * (min / 100))
979 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
980 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[16].CATEGORY then
981 Percent = Percent + _PASSIVES[16].BOOST
982 end
983 end
984 TotalPercent = TotalPercent + Percent
985 end
986 if _BONUS_EXTRA_TABLE[cid] then
987 local ID_BONUS = 16
988 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
989 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
990 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
991 end
992 end
993 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Gigantes" then
994 if onGetPassivas(player, 17) then
995 local Percent = _PASSIVES[17].POWER_BASE + (_PASSIVES[17].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
996 min = min + math.floor(Percent * (min / 100))
997 max = max + math.floor(Percent * (min / 100))
998 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
999 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[17].CATEGORY then
1000 Percent = Percent + _PASSIVES[17].BOOST
1001 end
1002 end
1003 TotalPercent = TotalPercent + Percent
1004 end
1005 if _BONUS_EXTRA_TABLE[cid] then
1006 local ID_BONUS = 18
1007 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1008 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1009 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1010 end
1011 end
1012 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Dragon" then
1013 if onGetPassivas(player, 20) then
1014 local Percent = _PASSIVES[20].POWER_BASE + (_PASSIVES[20].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1015 min = min + math.floor(Percent * (min / 100))
1016 max = max + math.floor(Percent * (min / 100))
1017 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1018 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[20].CATEGORY then
1019 Percent = Percent + _PASSIVES[20].BOOST
1020 end
1021 end
1022 TotalPercent = TotalPercent + Percent
1023 end
1024 if _BONUS_EXTRA_TABLE[cid] then
1025 local ID_BONUS = 09
1026 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1027 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1028 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1029 end
1030 end
1031 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Demon" then
1032 if onGetPassivas(player, 30) then
1033 local Percent = _PASSIVES[30].POWER_BASE + (_PASSIVES[30].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1034 min = min + math.floor(Percent * (min / 100))
1035 max = max + math.floor(Percent * (min / 100))
1036 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1037 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[30].CATEGORY then
1038 Percent = Percent + _PASSIVES[30].BOOST
1039 end
1040 end
1041 TotalPercent = TotalPercent + Percent
1042 end
1043 if _BONUS_EXTRA_TABLE[cid] then
1044 local ID_BONUS = 17
1045 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1046 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1047 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1048 end
1049 end
1050 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Humanoide" then
1051 if onGetPassivas(player, 32) then
1052 local Percent = _PASSIVES[32].POWER_BASE + (_PASSIVES[32].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1053 min = min + math.floor(Percent * (min / 100))
1054 max = max + math.floor(Percent * (min / 100))
1055 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1056 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[32].CATEGORY then
1057 Percent = Percent + _PASSIVES[32].BOOST
1058 end
1059 end
1060 TotalPercent = TotalPercent + Percent
1061 end
1062 if _BONUS_EXTRA_TABLE[cid] then
1063 local ID_BONUS = 21
1064 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1065 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1066 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1067 end
1068 end
1069 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Magica" then
1070 if onGetPassivas(player, 37) then
1071 local Percent = _PASSIVES[37].POWER_BASE + (_PASSIVES[37].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1072 min = min + math.floor(Percent * (min / 100))
1073 max = max + math.floor(Percent * (min / 100))
1074 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1075 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[37].CATEGORY then
1076 Percent = Percent + _PASSIVES[37].BOOST
1077 end
1078 end
1079 TotalPercent = TotalPercent + Percent
1080 end
1081 if _BONUS_EXTRA_TABLE[cid] then
1082 local ID_BONUS = 11
1083 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1084 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1085 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1086 end
1087 end
1088 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Repteis" then
1089 if onGetPassivas(player, 39) then
1090 local Percent = _PASSIVES[39].POWER_BASE + (_PASSIVES[39].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1091 min = min + math.floor(Percent * (min / 100))
1092 max = max + math.floor(Percent * (min / 100))
1093 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1094 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[39].CATEGORY then
1095 Percent = Percent + _PASSIVES[39].BOOST
1096 end
1097 end
1098 TotalPercent = TotalPercent + Percent
1099 end
1100 if _BONUS_EXTRA_TABLE[cid] then
1101 local ID_BONUS = 12
1102 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1103 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1104 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1105 end
1106 end
1107 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Vermes" then
1108 if onGetPassivas(player, 41) then
1109 local Percent = _PASSIVES[41].POWER_BASE + (_PASSIVES[41].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1110 min = min + math.floor(Percent * (min / 100))
1111 max = max + math.floor(Percent * (min / 100))
1112 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1113 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[41].CATEGORY then
1114 Percent = Percent + _PASSIVES[41].BOOST
1115 end
1116 end
1117 TotalPercent = TotalPercent + Percent
1118 end
1119 if _BONUS_EXTRA_TABLE[cid] then
1120 local ID_BONUS = 15
1121 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1122 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1123 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1124 end
1125 end
1126 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Boss" then
1127 if onGetPassivas(player, 44) then
1128 local Percent = _PASSIVES[44].POWER_BASE + (_PASSIVES[44].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1129 min = min + math.floor(Percent * (min / 100))
1130 max = max + math.floor(Percent * (min / 100))
1131 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1132 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[44].CATEGORY then
1133 Percent = Percent + _PASSIVES[44].BOOST
1134 end
1135 end
1136 TotalPercent = TotalPercent + Percent
1137 end
1138 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Aquaticos" then
1139 if onGetPassivas(player, 46) then
1140 local Percent = _PASSIVES[46].POWER_BASE + (_PASSIVES[46].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1141 min = min + math.floor(Percent * (min / 100))
1142 max = max + math.floor(Percent * (min / 100))
1143 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1144 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[46].CATEGORY then
1145 Percent = Percent + _PASSIVES[46].BOOST
1146 end
1147 end
1148 TotalPercent = TotalPercent + Percent
1149 end
1150 if _BONUS_EXTRA_TABLE[cid] then
1151 local ID_BONUS = 13
1152 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1153 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1154 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1155 end
1156 end
1157 elseif _MONSTER_LOOT[TARGET:getName()][00].Type == "Morto-Vivo" then
1158 if onGetPassivas(player, 49) then
1159 local Percent = _PASSIVES[49].POWER_BASE + (_PASSIVES[49].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1160 min = min + math.floor(Percent * (min / 100))
1161 max = max + math.floor(Percent * (min / 100))
1162 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1163 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[49].CATEGORY then
1164 Percent = Percent + _PASSIVES[49].BOOST
1165 end
1166 end
1167 TotalPercent = TotalPercent + Percent
1168 end
1169 if _BONUS_EXTRA_TABLE[cid] then
1170 local ID_BONUS = 14
1171 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1172 min = min + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (min / 100))
1173 max = max + math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (max / 100))
1174 end
1175 end
1176 end
1177 end
1178 end
1179
1180 -- FORMULA DE SKILLS
1181 if _BONUS_EXTRA_TABLE[cid] then
1182 local ID_BONUS = 04
1183 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1184 GUN_SKILL_DAMAGE = GUN_SKILL_DAMAGE + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
1185 end
1186 -- CRITICAL_DAMAGE
1187 ID_BONUS = 06
1188 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1189 CRITICAL_DAMAGE = CRITICAL_DAMAGE + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
1190 end
1191 -- TAXA CRITICA
1192 ID_BONUS = 07
1193 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1194 TAXA_DAMAGE = TAXA_DAMAGE + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
1195 end
1196 -- DANO MINIMO
1197 ID_BONUS = 39
1198 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1199 min = min + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
1200 end
1201 -- DANO MAXIMO
1202 ID_BONUS = 41
1203 if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
1204 max = max + _BONUS_EXTRA_TABLE[cid][ID_BONUS]
1205 end
1206 end
1207 local NEW_DMG = (GUN_SKILL_DAMAGE + min)
1208 if NEW_DMG > max then
1209 min = max
1210 max = NEW_DMG
1211 else
1212 min = NEW_DMG
1213 end
1214 if EXETA_RES > 0 then
1215 doChallengeCreature(player, TARGET)
1216 end
1217 if GOLD_ATR_TAX > 0 then
1218 player:setStorageValue(_SYSTEM.ATR_VALUES[03], GOLD_ATR_TAX)
1219 else
1220 player:setStorageValue(_SYSTEM.ATR_VALUES[03], 00)
1221 end
1222 if DROP_TAXA > 0 then
1223 player:setStorageValue(_SYSTEM.ATR_VALUES[02], DROP_TAXA)
1224 else
1225 player:setStorageValue(_SYSTEM.ATR_VALUES[02], 00)
1226 end
1227 if player:getHealth() <= CRITICAL_HEARTH and HP_CRIT_TAXA > 0 then
1228 CRIT_CHANCE = CRIT_CHANCE - HP_CRIT_TAXA
1229 end
1230 if player:getStorageValue(_SYSTEM.INVENTARIO[07].UID_01) > 0 then
1231 if player:getStorageValue(_SYSTEM.INVENTARIO[07].UID_01) == 7007 then
1232 CRIT_CHANCE = CRIT_CHANCE - 05
1233 end
1234 end
1235
1236 --DANO CRITICO E TAXA
1237 if CRIT_CHANCE <= TAXA_DAMAGE then
1238 local CRITICAL_PERCENT = 0
1239 DMG_CRITICO = true
1240 -- DESAFIO
1241 if player:getStorageValue(_DESAFIOS[00].DESAFIO_ID) > 00 then
1242 onPlayerDesafios(player, 33, 01)
1243 end
1244 -- DESAFIO
1245 if player:getStorageValue(_DESAFIOS[00].DESAFIO_ID) > 00 then
1246
1247 onPlayerDesafios(player, 04, 01)
1248 end
1249 end
1250 if ATR_CRITICO > 0 then
1251 CRITICAL_PERCENT = ATR_CRITICO * (CRITICAL_DAMAGE / 100)
1252 end
1253 if ATR_HP_CRITICO > 0 then
1254 local HP_CRITICAL = math.floor(ATR_HP_CRITICO * (player:getBaseMaxHealth() / 100))
1255 doTargetCombat(0, player, COMBAT_HEALING, HP_CRITICAL, HP_CRITICAL)
1256 end
1257 if CRIT_DIST > 0 then
1258 if PLAYER_DISTANCE >= 04 then
1259 local condition = Condition(CONDITION_HASTE)
1260 condition:setParameter(CONDITION_PARAM_TICKS, 10000)
1261 condition:setFormula(0.0, CRIT_DIST, 0.0, CRIT_DIST)
1262 player:addCondition(condition)
1263 end
1264 end
1265 if RING_ID > 0 then
1266 if RING_ID == 7003 then -- Ao dar Critical Damage, chance de curar 05% da vida.
1267 if RING_CHANCE <= _AMULET_CHANCE_MODE[RING_RARE] then
1268 local HP_PERCENT = math.floor(05 * (player:getBaseMaxHealth() / 100))
1269 doTargetCombat(0, player, COMBAT_HEALING, HP_PERCENT, HP_PERCENT)
1270 end
1271 end
1272
1273 CRITICAL_PERCENT = CRITICAL_PERCENT + 50
1274 end
1275 end
1276
1277 min = min + CRITICAL_DAMAGE + CRITICAL_PERCENT
1278 max = max + CRITICAL_DAMAGE + CRITICAL_PERCENT
1279 if CRIT_EXP > 0 then
1280 if TARGET:getName() ~= "Target" then
1281 player:addExperience((max/2), true, true)
1282 end
1283 end
1284 if onGetPassivas(player, 08) then -- Causa status POISON no alvo ao dar Dano Critico.
1285 local Percent = _PASSIVES[08].POWER_BASE + (_PASSIVES[08].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1286 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1287 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[08].CATEGORY then
1288 Percent = Percent + _PASSIVES[08].BOOST
1289 end
1290 end
1291 local condition = createConditionObject(CONDITION_POISON)
1292 setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -Percent)
1293 setConditionParam(condition, CONDITION_PARAM_TICKS, ((Percent * 100) / 02))
1294 setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000)
1295
1296 TARGET:addCondition(condition)
1297 TARGET:getPosition():sendMagicEffect(09)
1298 end
1299 if onGetPassivas(player, 22) then -- Causa status ENERGY no alvo ao dar Dano Critico.
1300 local Percent = _PASSIVES[22].POWER_BASE + (_PASSIVES[22].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1301 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1302 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[22].CATEGORY then
1303 Percent = Percent + _PASSIVES[22].BOOST
1304 end
1305 end
1306 local condition = createConditionObject(CONDITION_ENERGY)
1307 setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -Percent)
1308 setConditionParam(condition, CONDITION_PARAM_TICKS, ((Percent * 100) / 02))
1309 setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000)
1310
1311 TARGET:addCondition(condition)
1312 TARGET:getPosition():sendMagicEffect(12)
1313 end
1314 if onGetPassivas(player, 35) then -- Causa status FIRE no alvo ao dar Dano Critico.
1315 local Percent = _PASSIVES[35].POWER_BASE + (_PASSIVES[35].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1316 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1317 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[35].CATEGORY then
1318 Percent = Percent + _PASSIVES[35].BOOST
1319 end
1320 end
1321 local condition = createConditionObject(CONDITION_FIRE)
1322 setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -Percent)
1323 setConditionParam(condition, CONDITION_PARAM_TICKS, ((Percent * 100) / 02))
1324 setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000)
1325
1326 TARGET:addCondition(condition)
1327 TARGET:getPosition():sendMagicEffect(16)
1328 end
1329 if onGetPassivas(player, 42) then -- Causa status DEATH no alvo ao dar Dano Critico.
1330 local Percent = _PASSIVES[42].POWER_BASE + (_PASSIVES[42].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1331 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1332 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[42].CATEGORY then
1333 Percent = Percent + _PASSIVES[42].BOOST
1334 end
1335 end
1336 local condition = createConditionObject(CONDITION_CURSED)
1337 setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -Percent)
1338 setConditionParam(condition, CONDITION_PARAM_TICKS, ((Percent * 100) / 02))
1339 setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 1000)
1340
1341 TARGET:addCondition(condition)
1342 TARGET:getPosition():sendMagicEffect(18)
1343 end
1344
1345 local Percent = _PASSIVES[24].POWER_BASE + (_PASSIVES[24].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1346 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1347 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[24].CATEGORY then
1348 Percent = Percent + _PASSIVES[24].BOOST
1349 end
1350 end
1351 doTargetCombat(0, player, COMBAT_HEALING, Percent, Percent)
1352 player:getPosition():sendMagicEffect(15)
1353 end
1354 end
1355 --AMULETS
1356 if AMULET_EFFECT > 00 then
1357 if AMULET_EFFECT == 13 then
1358 -- Melhora o Dano com Espingardas
1359 if GUN_TYPE == 04 then
1360 min = min + (RING_DMG_EXTRA * (min / 100))
1361 max = max + (RING_DMG_EXTRA * (min / 100))
1362 end
1363 end
1364 if AMULET_EFFECT == 15 then min = min + 25 end
1365 if AMULET_EFFECT == 16 then max = max + 25 end
1366 end
1367 -- ATRIBUTO
1368 if ATR_DAMAGE > 0 then
1369 if player:getStorageValue(_SYSTEM.ATR_VALUES[01]) == 01 then
1370 local AcsMaxDamage = math.floor(ATR_DAMAGE * (max / 100))
1371
1372 min = max + AcsMaxDamage
1373 max = max + AcsMaxDamage
1374
1375 player:setStorageValue(_SYSTEM.ATR_VALUES[01], 00)
1376 end
1377 else
1378 player:setStorageValue(_SYSTEM.ATR_VALUES[01], 00)
1379 end
1380 -- MAESTRIA
1381 if player:getStorageValue(_SYSTEM.MAESTRIA[01]) == 03 then
1382 if player:getStorageValue(_SYSTEM.MAESTRIA[04]) > 0 then
1383 min = max
1384 max = max * 2
1385 player:getPosition():sendMagicEffect(178)
1386 end
1387 end
1388 -- ESPECIALISTA
1389 if player:getStorageValue(_SYSTEM.WARZONE) < 01 then
1390 if player:getStorageValue(_SYSTEM.ESPECIALISTA[01]) > 00 then
1391 if player:getStorageValue(_SYSTEM.ESPECIALISTA[01]) ~= 03 then
1392 local ESP_DMG = {
1393 [-1] = 01;
1394 [00] = 10;
1395 [01] = 15;
1396 [02] = 20;
1397 [03] = 25;
1398 [04] = 30;
1399 [05] = 35;
1400 }
1401 if GUN_TYPE == 04 then -- Espingardas
1402 if player:getStorageValue(_SYSTEM.ESPECIALISTA[01]) == 01 then
1403 local EspLevel = player:getStorageValue(_SYSTEM.ESPECIALISTA[02])
1404 local EspAtkMin = ESP_DMG[EspLevel] * (min / 100)
1405 local EspAtkMax = ESP_DMG[EspLevel] * (max / 100)
1406
1407 min = min + EspAtkMin
1408 max = max + EspAtkMax
1409 end
1410 end
1411 end
1412 end
1413 end
1414 if _CHEATS.FURIUS_SHOOTING then
1415 min = min + 10000
1416 max = max + 10000
1417 end
1418 if Game.getStorageValue(_GLOBAL_RANDOM.WARZONE.STORAGE_START_WARZONE) == 01 then
1419 if player:getStorageValue(_SYSTEM.WARZONE) > 00 then
1420 min = min * 2
1421 max = max * 2
1422 end
1423 end
1424
1425 if DMG_CRITICO then
1426 local Pos1, Tile1 = Position(TARGET_POS.x, TARGET_POS.y - 1, TARGET_POS.z), Tile(TARGET_POS.x, TARGET_POS.y - 1, TARGET_POS.z)
1427 local Pos2, Tile2 = Position(TARGET_POS.x + 1, TARGET_POS.y - 1, TARGET_POS.z), Tile(TARGET_POS.x + 1, TARGET_POS.y - 1, TARGET_POS.z)
1428 local Pos3, Tile3 = Position(TARGET_POS.x + 1, TARGET_POS.y, TARGET_POS.z), Tile(TARGET_POS.x + 1, TARGET_POS.y, TARGET_POS.z)
1429 local Pos4, Tile4 = Position(TARGET_POS.x + 1, TARGET_POS.y + 1, TARGET_POS.z), Tile(TARGET_POS.x + 1, TARGET_POS.y + 1, TARGET_POS.z)
1430 local Pos5, Tile5 = Position(TARGET_POS.x, TARGET_POS.y + 1, TARGET_POS.z), Tile(TARGET_POS.x, TARGET_POS.y + 1, TARGET_POS.z)
1431 local Pos6, Tile6 = Position(TARGET_POS.x - 1, TARGET_POS.y + 1, TARGET_POS.z), Tile(TARGET_POS.x - 1, TARGET_POS.y + 1, TARGET_POS.z)
1432 local Pos7, Tile7 = Position(TARGET_POS.x - 1, TARGET_POS.y, TARGET_POS.z), Tile(TARGET_POS.x - 1, TARGET_POS.y, TARGET_POS.z)
1433 local Pos8, Tile8 = Position(TARGET_POS.x - 1, TARGET_POS.y - 1, TARGET_POS.z), Tile(TARGET_POS.x - 1, TARGET_POS.y - 1, TARGET_POS.z)
1434
1435 TARGET_POS:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1436 doTargetCombat(player, TARGET, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1437 if Tile1 then
1438 local Target_1 = Tile1:getTopCreature()
1439 if Target_1 then
1440 if Target_1:isPlayer() then
1441 if player:hasSecureMode() == true or Tile(Target_1:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)
1442 or player:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 and player:getStorageValue(_PVP_ROOM[00].TIME_ID) == Target_1:getStorageValue(_PVP_ROOM[00].TIME_ID) then
1443
1444 else
1445 Pos1:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1446 doTargetCombat(player, Target_1, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1447 end
1448 else
1449 Pos1:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1450 doTargetCombat(player, Target_1, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1451 end
1452 end
1453 end
1454 if Tile2 then
1455 local Target_2 = Tile2:getTopCreature()
1456 if Target_2 then
1457 if Target_2:isPlayer() then
1458 if player:hasSecureMode() == true or Tile(Target_2:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)
1459 or player:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 and player:getStorageValue(_PVP_ROOM[00].TIME_ID) == Target_2:getStorageValue(_PVP_ROOM[00].TIME_ID) then
1460
1461 else
1462 Pos2:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1463 doTargetCombat(player, Target_2, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1464 end
1465 else
1466 Pos2:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1467 doTargetCombat(player, Target_2, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1468 end
1469 end
1470 end
1471 if Tile3 then
1472 local Target_3 = Tile3:getTopCreature()
1473 if Target_3 then
1474 if Target_3:isPlayer() then
1475 if player:hasSecureMode() == true or Tile(Target_3:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)
1476 or player:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 and player:getStorageValue(_PVP_ROOM[00].TIME_ID) == Target_3:getStorageValue(_PVP_ROOM[00].TIME_ID) then
1477
1478 else
1479 Pos3:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1480 doTargetCombat(player, Target_3, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1481 end
1482 else
1483 Pos3:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1484 doTargetCombat(player, Target_3, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1485 end
1486 end
1487 end
1488 if Tile4 then
1489 local Target_4 = Tile4:getTopCreature()
1490 if Target_4 then
1491 if Target_4:isPlayer() then
1492 if player:hasSecureMode() == true or Tile(Target_4:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)
1493 or player:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 and player:getStorageValue(_PVP_ROOM[00].TIME_ID) == Target_4:getStorageValue(_PVP_ROOM[00].TIME_ID) then
1494
1495 else
1496 Pos4:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1497 doTargetCombat(player, Target_4, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1498 end
1499 else
1500 Pos4:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1501 doTargetCombat(player, Target_4, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1502 end
1503 end
1504 end
1505 if Tile5 then
1506 local Target_5 = Tile5:getTopCreature()
1507 if Target_5 then
1508 if Target_5:isPlayer() then
1509 if player:hasSecureMode() == true or Tile(Target_5:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)
1510 or player:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 and player:getStorageValue(_PVP_ROOM[00].TIME_ID) == Target_5:getStorageValue(_PVP_ROOM[00].TIME_ID) then
1511
1512 else
1513 Pos5:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1514 doTargetCombat(player, Target_5, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1515 end
1516 else
1517 Pos5:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1518 doTargetCombat(player, Target_5, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1519 end
1520 end
1521 end
1522 if Tile6 then
1523 local Target_6 = Tile6:getTopCreature()
1524 if Target_6 then
1525 if Target_6:isPlayer() then
1526 if player:hasSecureMode() == true or Tile(Target_6:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)
1527 or player:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 and player:getStorageValue(_PVP_ROOM[00].TIME_ID) == Target_6:getStorageValue(_PVP_ROOM[00].TIME_ID) then
1528
1529 else
1530 Pos6:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1531 doTargetCombat(player, Target_6, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1532 end
1533 else
1534 Pos6:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1535 doTargetCombat(player, Target_6, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1536 end
1537 end
1538 end
1539 if Tile7 then
1540 local Target_7 = Tile7:getTopCreature()
1541 if Target_7 then
1542 if Target_7:isPlayer() then
1543 if player:hasSecureMode() == true or Tile(Target_7:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)
1544 or player:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 and player:getStorageValue(_PVP_ROOM[00].TIME_ID) == Target_7:getStorageValue(_PVP_ROOM[00].TIME_ID) then
1545
1546 else
1547 Pos7:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1548 doTargetCombat(player, Target_7, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1549 end
1550 else
1551 Pos7:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1552 doTargetCombat(player, Target_7, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1553 end
1554 end
1555 end
1556 if Tile8 then
1557 local Target_8 = Tile8:getTopCreature()
1558 if Target_8 then
1559 if Target_8:isPlayer() then
1560 if player:hasSecureMode() == true or Tile(Target_8:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)
1561 or player:getStorageValue(_PVP_ROOM[00].PVP_SALA_ID) > 00 and player:getStorageValue(_PVP_ROOM[00].TIME_ID) == Target_8:getStorageValue(_PVP_ROOM[00].TIME_ID) then
1562
1563 else
1564 Pos8:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1565 doTargetCombat(player, Target_8, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1566 end
1567 else
1568 Pos8:sendMagicEffect(CONST_ME_CRITICAL_DAMAGE)
1569 doTargetCombat(player, Target_8, COMBAT_PHYSICALDAMAGE, -min, -max, CONST_ME_HITAREA)
1570 end
1571 end
1572 end
1573
1574 return true
1575 end
1576
1577 return -min, -max
1578end
1579combatESP:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
1580
1581function onUseWeapon(player, variant)
1582 TARGET = Creature(variant:getNumber())
1583 GUN_ID = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
1584 local LEVEL_FOR_RARE = 05
1585 local LEVEL_FOR_LEVEL = 04
1586 local EVENT_VALUE = 00
1587
1588 if GUN_ID > 0 then
1589 GUN_TYPE = _ITEMS[GUN_ID].GUN_TYPE
1590 DISTANCE_TARGET = 05
1591 if TARGET then
1592 if TARGET:getName() == "Target" then
1593 local TARGET_POS = TARGET:getPosition()
1594 if player:getPosition():getDistance(TARGET_POS) > DISTANCE_TARGET then
1595 player:sendCancelMessage("Alvo muito longe.")
1596 return false
1597 end
1598 player:setAttackSpeed(800)
1599 player:addSkillTries(SYSTEM_GUN[GUN_TYPE].SKILL, 01)
1600 combatTRA:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_PHYSICALDAMAGE)
1601 combatTRA:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
1602 combatTRA:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 41)
1603 combatTRA:execute(player, variant)
1604 return false
1605 end
1606 else
1607 local variantTarget = player:getTarget()
1608 local targetPos = variantTarget:getPosition()
1609 if variantTarget:getName() == "Target" then
1610
1611 targetPos:sendMagicEffect(10)
1612 doTargetCombat(player, variantTarget, COMBAT_PHYSICALDAMAGE, -1, -1, CONST_ME_HITAREA)
1613 return false
1614 end
1615 end
1616
1617 player:setAttackSpeed(300)
1618 GUN_RARE = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_02) or 0
1619 GUN_LEVEL = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07) or 0
1620 GUN_STAR = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03) or 0
1621 GUN_AMMO = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) or 0
1622 RING_ID = player:getStorageValue(_SYSTEM.INVENTARIO[07].UID_01) or 0
1623 RING_RARE = player:getStorageValue(_SYSTEM.INVENTARIO[07].UID_02) or 0
1624 RING_STAR = player:getStorageValue(_SYSTEM.INVENTARIO[07].UID_03) or 0
1625 RING_LEVEL = player:getStorageValue(_SYSTEM.INVENTARIO[07].UID_05) or 0
1626 GUN_BASE_LEVEL = _ITEMS[GUN_ID].LEVEL
1627
1628 if GUN_RARE < 00 then GUN_RARE = 00 end
1629 if GUN_LEVEL < 00 then GUN_LEVEL = 00 end
1630 if GUN_STAR < 00 then GUN_STAR = 00 end
1631 REQUISITO_LEVEL = GUN_BASE_LEVEL + (GUN_RARE * LEVEL_FOR_RARE) + (GUN_LEVEL * LEVEL_FOR_LEVEL) + ((GUN_STAR * 10) * LEVEL_FOR_LEVEL)
1632 if player:getStorageValue(_SYSTEM.WARZONE) > 00 then
1633 REQUISITO_LEVEL = 01
1634 end
1635 if player:getLevel() >= REQUISITO_LEVEL then
1636 if GUN_AMMO < 01 then
1637 player:getPosition():sendMagicEffect(03)
1638 return false
1639 end
1640 player:setAttackSpeed(SYSTEM_GUN[GUN_TYPE].SPEED)
1641 DISTANCE_TARGET = SYSTEM_GUN[GUN_TYPE].DISTANCE
1642 DMG_FOR_LEVEL = SYSTEM_GUN[GUN_TYPE].DMG_FOR_LEVEL
1643 GUN_SKILL_DAMAGE = player:getSkillLevel(SYSTEM_GUN[GUN_TYPE].SKILL)
1644 -- EVENTOS
1645 if Game.getStorageValue(_GLOBAL_RANDOM.EVENTOS_TABLE[00].EVENT_ID) == 12 then
1646 if Game.getStorageValue(_GLOBAL_RANDOM.EVENTOS_TABLE[00].EVENT_UID_5) == 01 then
1647 EVENT_VALUE = Game.getStorageValue(_GLOBAL_RANDOM.EVENTOS_TABLE[00].EVENT_UID_4) or 0
1648 end
1649 end
1650
1651 if TARGET then
1652 local TARGET_POS = TARGET:getPosition()
1653 local DISPARO_TYPE = 00
1654 if player:getPosition():getDistance(TARGET_POS) > DISTANCE_TARGET then
1655 player:sendCancelMessage("Alvo muito longe.")
1656 return false
1657 end
1658 PLAYER_DISTANCE = player:getPosition():getDistance(TARGET_POS)
1659 player:addSkillTries(SYSTEM_GUN[GUN_TYPE].SKILL, 01)
1660 if player:getStorageValue(_PLAYER_INFO.GUN_DELAY) <= 00 then
1661 if onGetPassivas(player, 10) then -- Chance de disparo do tipo ICE.
1662 local CHANCE_PASSIVE = _PASSIVES[10].POWER_BASE + (_PASSIVES[10].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1663 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1664 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[10].CATEGORY then
1665 CHANCE_PASSIVE = CHANCE_PASSIVE + _PASSIVES[10].BOOST
1666 end
1667 end
1668 local _PASSIVES_CHANCE = math.random(00, 100)
1669 if _PASSIVES_CHANCE <= CHANCE_PASSIVE then
1670 combat:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_ICEDAMAGE)
1671 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
1672 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 29)
1673 combat:execute(player, variant)
1674 DISPARO_TYPE = 01
1675 end
1676 end
1677 if onGetPassivas(player, 12) then -- Chance de disparo do tipo EARTH.
1678 local CHANCE_PASSIVE = _PASSIVES[12].POWER_BASE + (_PASSIVES[12].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1679 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1680 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[12].CATEGORY then
1681 CHANCE_PASSIVE = CHANCE_PASSIVE + _PASSIVES[12].BOOST
1682 end
1683 end
1684 local _PASSIVES_CHANCE = math.random(00, 100)
1685 if _PASSIVES_CHANCE <= CHANCE_PASSIVE then
1686 combat:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_EARTHDAMAGE)
1687 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
1688 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 30)
1689 combat:execute(player, variant)
1690 DISPARO_TYPE = 01
1691 end
1692 end
1693 if onGetPassivas(player, 23) then -- Chance de disparo do tipo ENERGY.
1694 local CHANCE_PASSIVE = _PASSIVES[23].POWER_BASE + (_PASSIVES[23].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1695 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1696 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[23].CATEGORY then
1697 CHANCE_PASSIVE = CHANCE_PASSIVE + _PASSIVES[23].BOOST
1698 end
1699 end
1700 local _PASSIVES_CHANCE = math.random(00, 100)
1701 if _PASSIVES_CHANCE <= CHANCE_PASSIVE then
1702 combat:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_ENERGYDAMAGE)
1703 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
1704 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 05)
1705 combat:execute(player, variant)
1706 DISPARO_TYPE = 01
1707 end
1708 end
1709 if onGetPassivas(player, 29) then -- Chance de disparo do tipo HOLY.
1710 local CHANCE_PASSIVE = _PASSIVES[29].POWER_BASE + (_PASSIVES[29].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1711 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1712 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[29].CATEGORY then
1713 CHANCE_PASSIVE = CHANCE_PASSIVE + _PASSIVES[29].BOOST
1714 end
1715 end
1716 local _PASSIVES_CHANCE = math.random(00, 100)
1717 if _PASSIVES_CHANCE <= CHANCE_PASSIVE then
1718 combat:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_HOLYDAMAGE)
1719 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
1720 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 38)
1721 combat:execute(player, variant)
1722 DISPARO_TYPE = 01
1723 end
1724 end
1725 if onGetPassivas(player, 38) then -- Chance de disparo do tipo FIRE.
1726 local CHANCE_PASSIVE = _PASSIVES[38].POWER_BASE + (_PASSIVES[38].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1727 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1728 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[38].CATEGORY then
1729 CHANCE_PASSIVE = CHANCE_PASSIVE + _PASSIVES[38].BOOST
1730 end
1731 end
1732 local _PASSIVES_CHANCE = math.random(00, 100)
1733 if _PASSIVES_CHANCE <= CHANCE_PASSIVE then
1734 combat:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_FIREDAMAGE)
1735 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
1736 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 04)
1737 combat:execute(player, variant)
1738 DISPARO_TYPE = 01
1739 end
1740 end
1741 if onGetPassivas(player, 48) then -- Chance de disparo do tipo DEATH.
1742 local CHANCE_PASSIVE = _PASSIVES[48].POWER_BASE + (_PASSIVES[48].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1743 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1744 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[48].CATEGORY then
1745 CHANCE_PASSIVE = CHANCE_PASSIVE + _PASSIVES[48].BOOST
1746 end
1747 end
1748 local _PASSIVES_CHANCE = math.random(00, 100)
1749 if _PASSIVES_CHANCE <= CHANCE_PASSIVE then
1750 combat:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_DEATHDAMAGE)
1751 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
1752 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 11)
1753 combat:execute(player, variant)
1754 DISPARO_TYPE = 01
1755 end
1756 end
1757 end
1758 if DISPARO_TYPE == 00 then
1759 if GUN_TYPE == 04 then
1760 combatESP:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_PHYSICALDAMAGE)
1761 combatESP:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
1762 combatESP:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 41)
1763 combatESP:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
1764 combatESP:setParameter(COMBAT_PARAM_USECHARGES, true)
1765 combatESP:execute(player, variant)
1766 else
1767 if GUN_TYPE == 01 then
1768 if player:getStorageValue(_PLAYER_INFO.GUN_DELAY) > 00 then
1769 combatMET:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_PHYSICALDAMAGE)
1770 combatMET:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
1771 combatMET:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 41)
1772 combatMET:execute(player, variant)
1773 else
1774 player:setStorageValue(_PLAYER_INFO.GUN_DELAY, _PLAYER_INFO.SECONDS_DELAY)
1775 combat:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_PHYSICALDAMAGE)
1776 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
1777 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 41)
1778 combat:execute(player, variant)
1779 end
1780 else
1781 combat:setParameter(COMBAT_PARAM_GUN_TYPE, COMBAT_PHYSICALDAMAGE)
1782 combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
1783 combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 41)
1784 combat:execute(player, variant)
1785 end
1786 end
1787 end
1788 -- EFEITOS ANEIS
1789 if player:getStorageValue(_PLAYER_INFO.GUN_DELAY) <= 00 then
1790 if RING_ID > 0 then
1791 RING_CHANCE = math.random(000, 200)
1792 if player:getStorageValue(_SYSTEM.MAESTRIA[04]) > 0 then
1793 RING_CHANCE = 00
1794 end
1795
1796 if player:getStorageValue(_GLOBAL_RANDOM.BUFFS[01].STORAGE) <= 00 then
1797 if player:getStorageValue(_SYSTEM.MAESTRIA[01]) == 05 then
1798 if RING_CHANCE <= _AMULET_CHANCE_MODE[RING_RARE] then
1799 local Timer_Left = (RING_LEVEL + (RING_STAR * 10) + 5)
1800 local regenCondition = Condition(CONDITION_REGENERATION, CONDITIONID_DEFAULT)
1801 local RegenRandom = (math.random(02, 03))
1802 local HPGain = RegenRandom * (player:getBaseMaxHealth() / 100)
1803
1804 regenCondition:setTicks(10 * 1000)
1805 regenCondition:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
1806 regenCondition:setParameter(CONDITION_PARAM_HEALTHTICKS, 1000)
1807 regenCondition:setParameter(CONDITION_PARAM_HEALTHGAIN, HPGain)
1808 player:addCondition(regenCondition)
1809 return true
1810 end
1811 end
1812 end
1813 end
1814
1815 if RING_CHANCE <= _AMULET_CHANCE_MODE[RING_RARE] then
1816 return true
1817 end
1818 end
1819 end
1820 end
1821
1822 if player:getStorageValue(_SYSTEM.SHOP_WARZONE) == 01 or EVENT_VALUE >= 1000 then
1823 return true
1824 end
1825
1826 local Percent = _PASSIVES[31].POWER_BASE + (_PASSIVES[31].POWER_FOR_LEVEL * (PASS_LEVEL - 01))
1827 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.STORAGE) == 02 then -- PASSIVA DAS CORES
1828 if Game.getStorageValue(_GLOBAL_RANDOM.DAILY_EVENTS.PASSIVE) == _PASSIVES[31].CATEGORY then
1829 Percent = Percent + _PASSIVES[31].BOOST
1830 end
1831 end
1832 if math.random(100) <= Percent then
1833 return true
1834 end
1835 end
1836 player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, (player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) - 01))
1837 player:sendCancelMessage("@LoadAmmo " ..player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10))
1838 if REQUISITO_LEVEL < 30 then
1839 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10450].PRICE)
1840 elseif REQUISITO_LEVEL < 60 then
1841 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10451].PRICE)
1842 elseif REQUISITO_LEVEL < 99 then
1843 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10452].PRICE)
1844 elseif REQUISITO_LEVEL < 150 then
1845 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10453].PRICE)
1846 else
1847 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10454].PRICE)
1848 end
1849 return true
1850 else
1851 local variantTarget = player:getTarget()
1852 local targetPos = variantTarget:getPosition()
1853
1854 player:getPosition():sendDistanceEffect(targetPos, 41)
1855 if GUN_TYPE == 04 then
1856 local Pos1, Tile1 = Position(targetPos.x, targetPos.y - 1, targetPos.z), Tile(targetPos.x, targetPos.y - 1, targetPos.z)
1857 local Pos2, Tile2 = Position(targetPos.x + 1, targetPos.y - 1, targetPos.z), Tile(targetPos.x + 1, targetPos.y - 1, targetPos.z)
1858 local Pos3, Tile3 = Position(targetPos.x + 1, targetPos.y, targetPos.z), Tile(targetPos.x + 1, targetPos.y, targetPos.z)
1859 local Pos4, Tile4 = Position(targetPos.x + 1, targetPos.y + 1, targetPos.z), Tile(targetPos.x + 1, targetPos.y + 1, targetPos.z)
1860 local Pos5, Tile5 = Position(targetPos.x, targetPos.y + 1, targetPos.z), Tile(targetPos.x, targetPos.y + 1, targetPos.z)
1861 local Pos6, Tile6 = Position(targetPos.x - 1, targetPos.y + 1, targetPos.z), Tile(targetPos.x - 1, targetPos.y + 1, targetPos.z)
1862 local Pos7, Tile7 = Position(targetPos.x - 1, targetPos.y, targetPos.z), Tile(targetPos.x - 1, targetPos.y, targetPos.z)
1863 local Pos8, Tile8 = Position(targetPos.x - 1, targetPos.y - 1, targetPos.z), Tile(targetPos.x - 1, targetPos.y - 1, targetPos.z)
1864
1865 targetPos:sendMagicEffect(10)
1866 doTargetCombat(player, variantTarget, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1867
1868 Pos1:sendMagicEffect(10)
1869 Pos2:sendMagicEffect(10)
1870 Pos3:sendMagicEffect(10)
1871 Pos4:sendMagicEffect(10)
1872 Pos5:sendMagicEffect(10)
1873 Pos6:sendMagicEffect(10)
1874 Pos7:sendMagicEffect(10)
1875 Pos8:sendMagicEffect(10)
1876
1877 if Tile1 then
1878 local Target_1 = Tile1:getTopCreature()
1879 if Target_1 then
1880 doTargetCombat(player, Target_1, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1881 end
1882 end
1883 if Tile2 then
1884 local Target_2 = Tile2:getTopCreature()
1885 if Target_2 then
1886 doTargetCombat(player, Target_2, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1887 end
1888 end
1889 if Tile3 then
1890 local Target_3 = Tile3:getTopCreature()
1891 if Target_3 then
1892 doTargetCombat(player, Target_3, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1893 end
1894 end
1895 if Tile4 then
1896 local Target_4 = Tile4:getTopCreature()
1897 if Target_4 then
1898 doTargetCombat(player, Target_4, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1899 end
1900 end
1901 if Tile5 then
1902 local Target_5 = Tile5:getTopCreature()
1903 if Target_5 then
1904 doTargetCombat(player, Target_5, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1905 end
1906 end
1907 if Tile6 then
1908 local Target_6 = Tile6:getTopCreature()
1909 if Target_6 then
1910 doTargetCombat(player, Target_6, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1911 end
1912 end
1913 if Tile7 then
1914 local Target_7 = Tile7:getTopCreature()
1915 if Target_7 then
1916 doTargetCombat(player, Target_7, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1917 end
1918 end
1919 if Tile8 then
1920 local Target_8 = Tile8:getTopCreature()
1921 if Target_8 then
1922 doTargetCombat(player, Target_8, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1923 end
1924 end
1925 else
1926 targetPos:sendMagicEffect(10)
1927 doTargetCombat(player, variantTarget, COMBAT_PHYSICALDAMAGE, -DMG_MIN, -DMG_MAX, CONST_ME_HITAREA)
1928 end
1929
1930
1931 if player:getStorageValue(_SYSTEM.SHOP_WARZONE) == 01 or EVENT_VALUE >= 1000 then
1932 return true
1933 end
1934 player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, (player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) - 01))
1935 player:sendCancelMessage("@LoadAmmo " ..player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10))
1936 if REQUISITO_LEVEL < 30 then
1937 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10450].PRICE)
1938 elseif REQUISITO_LEVEL < 60 then
1939 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10451].PRICE)
1940 elseif REQUISITO_LEVEL < 99 then
1941 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10452].PRICE)
1942 elseif REQUISITO_LEVEL < 150 then
1943 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10453].PRICE)
1944 else
1945 player:sendCancelMessage("@Analyser#04#" .._ITEMS[10454].PRICE)
1946 end
1947 return true
1948 end
1949 end
1950 else
1951 player:sendCancelMessage("Equipe uma arma para atacar.")
1952 return false
1953 end
1954 return true
1955end
1956
Top