Advertisement
Guest User

critical.lua

a guest
Nov 17th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.16 KB | None | 0 0
  1. local creature_table = {}
  2. local lvlcrit = 16221 -- storage (the same like givecritical.lua script)
  3. local chance = 10 -- critical chance = 10%
  4.  
  5. function onStatsChange(cid, attacker, type, combat, value)
  6.  
  7.   if not isPlayer(attacker) then
  8.     return true
  9.   elseif cid == attacker then
  10.     return true
  11.   end
  12.  
  13.   if not creature_table[cid] then
  14.     creature_table[cid] = false
  15.   elseif creature_table[cid] == true then
  16.     creature_table[cid] = false
  17.     return true
  18.   end
  19.  
  20.   if getPlayerStorageValue(attacker, lvlcrit) < 1 then
  21.     return true
  22.   end
  23.  
  24.   if (math.random(0, 100) <= chance) then
  25.     if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then      
  26.       creature_table[cid] = true
  27.       local multiplier = (getPlayerStorageValue(attacker, lvlcrit) / 100) + 1
  28.       local new_value = math.ceil(value * multiplier)
  29.       doPlayerSendTextMessage(attacker, MESSAGE_STATUS_CONSOLE_ORANGE, "Critical Hit: "..math.floor((new_value/1)))
  30.       doTargetCombatHealth(attacker, cid, combat, -new_value, -new_value, 255)
  31.       doSendAnimatedText(getCreaturePos(attacker), "CRITICAL!", 138)
  32.     return false
  33.     end  
  34.   end  
  35.   return true
  36. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement