Advertisement
Alscara

func.lua

Jun 24th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 15.50 KB | None | 0 0
  1. function Item:getEffects(thing)
  2.     local effects = {}
  3.     local values = {}
  4.     local potency = 0
  5.     local duration = 0
  6.     local name = ""
  7.     local description = thing:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
  8.     local d = ""
  9.     local p = ""
  10.     local dur1, dur2 = string.find(description, "Duration: ")
  11.     local pot1, pot2 = string.find(description, "Potency: ")
  12.     local ty = 0
  13.     if dur1 ~= nil and dur2 ~= nil then
  14.         for l = 1, 5 do
  15.             if description:sub(dur2 + l, dur2 + l) ~= "\n" and description:sub(dur2 + l, dur2 + l) ~= " " then
  16.                 d = d .. description:sub(dur2 + l, dur2 + l)
  17.             else
  18.                 break
  19.             end
  20.         end
  21.     end
  22.     if pot1 ~= nil and pot2 ~= nil then
  23.         for l = 1, 5 do
  24.             if description:sub(pot2 + l, pot2 + l) ~= "\n" and description:sub(pot2 + l, pot2 + l) ~= " " then
  25.                 p = p .. description:sub(pot2 + l, pot2 + l)
  26.             else
  27.                 break
  28.             end
  29.         end
  30.     end
  31.    
  32.     for i, v in pairs(apotionids) do
  33.         if thing:getFluidType() == i then
  34.             name = apotionids[thing:getFluidType()].name
  35.             ty = 1
  36.             local j, k = string.find(description, aeffects[apotionids[i].effect].label .. ": ")
  37.             local a = ""
  38.             if j ~= nil and k ~= nil then
  39.                 for l = 1, 5 do
  40.                     if description:sub(k + l, k + l) ~= "\n" and description:sub(k + l, k + l) ~= " " then
  41.                         a = a .. description:sub(k + l, k + l)
  42.                     else
  43.                         break
  44.                     end
  45.                 end
  46.             end
  47.            
  48.             if a ~= "" then
  49.                 effects[#effects + 1] = apotionids[i].effect
  50.                 values[#values + 1] = a
  51.             end
  52.         end
  53.     end
  54.    
  55.     for i = 1, #arecipes do
  56.         if thing:getFluidType() == arecipes[i].id then
  57.             name = arecipes[i].name
  58.             ty = 2
  59.             for r = 1, #arecipes[i].effects do
  60.                 local j, k = string.find(description, aeffects[arecipes[i].effects[r]].label .. ": ")
  61.                 local a = ""
  62.                 if j ~= nil and k ~= nil then
  63.                     for l = 1, 5 do
  64.                         if description:sub(k + l, k + l) ~= "\n" and description:sub(k + l, k + l) ~= " " then
  65.                             a = a .. description:sub(k + l, k + l)
  66.                         else
  67.                             break
  68.                         end
  69.                     end
  70.                 end
  71.                 if a ~= "" then
  72.                     effects[#effects + 1] = arecipes[i].effects[r]
  73.                     values[#values + 1] = a
  74.                 end
  75.             end
  76.         end
  77.     end
  78.    
  79.     if d ~= "" then
  80.         duration = d
  81.     end
  82.     if p ~= "" then
  83.         potency = p
  84.     end
  85.     return {effects, values, duration, potency, name, ty}
  86. end
  87.  
  88. function usePotion(player, effects)
  89.     local hpregen = Condition(CONDITION_REGENERATION)
  90.     hpregen:setParameter(CONDITION_PARAM_SUBID, 1)
  91.     hpregen:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  92.     hpregen:setParameter(CONDITION_PARAM_HEALTHTICKS, 3000)
  93.     local mpregen = Condition(CONDITION_REGENERATION)
  94.     mpregen:setParameter(CONDITION_PARAM_SUBID, 2)
  95.     mpregen:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  96.     mpregen:setParameter(CONDITION_PARAM_MANATICKS, 3000)
  97.     local soulregen = Condition(CONDITION_REGENERATION)
  98.     soulregen:setParameter(CONDITION_PARAM_SUBID, 12)
  99.     soulregen:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  100.     soulregen:setParameter(CONDITION_PARAM_SOULTICKS, 3000)
  101.     local melee = Condition(CONDITION_ATTRIBUTES)
  102.     melee:setParameter(CONDITION_PARAM_SUBID, 3)
  103.     melee:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  104.     local dist = Condition(CONDITION_ATTRIBUTES)
  105.     dist:setParameter(CONDITION_PARAM_SUBID, 4)
  106.     dist:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  107.     local shield = Condition(CONDITION_ATTRIBUTES)
  108.     shield:setParameter(CONDITION_PARAM_SUBID, 5)
  109.     shield:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  110.     local fish = Condition(CONDITION_ATTRIBUTES)
  111.     fish:setParameter(CONDITION_PARAM_SUBID, 6)
  112.     fish:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  113.     local fist = Condition(CONDITION_ATTRIBUTES)
  114.     fist:setParameter(CONDITION_PARAM_SUBID, 7)
  115.     fist:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  116.     local resist = Condition(CONDITION_ATTRIBUTES)
  117.     resist:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  118.     local speed = Condition(CONDITION_HASTE)
  119.     speed:setParameter(CONDITION_PARAM_SUBID, 8)
  120.     local maxhp = Condition(CONDITION_ATTRIBUTES)
  121.     maxhp:setParameter(CONDITION_PARAM_SUBID, 9)
  122.     maxhp:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  123.     local maxmp = Condition(CONDITION_ATTRIBUTES)
  124.     maxmp:setParameter(CONDITION_PARAM_SUBID, 10)
  125.     maxmp:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  126.     local drown = Condition(CONDITION_ATTRIBUTES)
  127.     drown:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
  128.     drown:setParameter(CONDITION_PARAM_SUBID, 11)
  129.     if not Player(player) then
  130.         return false
  131.     end
  132.     for i = 1, #effects[1] do
  133.         if effects[1][i] == "restorehp" then
  134.             player:addMana(effects[2][i])
  135.         elseif effects[1][i] == "restoremp" then
  136.             player:addHealth(effects[2][i])
  137.         elseif effects[1][i] == "restoresoul" then
  138.             player:addSoul(effects[2][i])
  139.         elseif effects[1][i] == "regenhp" then
  140.             hpregen:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  141.             hpregen:setParameter(CONDITION_PARAM_HEALTHGAIN, effects[2][i])
  142.             player:addCondition(hpregen)
  143.         elseif effects[1][i] == "regenmp" then
  144.             mpregen:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  145.             mpregen:setParameter(CONDITION_PARAM_MANAGAIN, effects[2][i])
  146.             player:addCondition(mpregen)
  147.         elseif effects[1][i] == "regensoul" then
  148.             soulregen:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  149.             soulregen:setParameter(CONDITION_PARAM_SOULGAIN, effects[2][i])
  150.             player:addCondition(soulregen)
  151.         elseif effects[1][i] == "maxhp" then
  152.             maxhp:setParameter(CONDITION_PARAM_STAT_MAXHITPOINTS, effects[2][i])
  153.             maxhp:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  154.             player:addCondition(maxhp)
  155.         elseif effects[1][i] == "maxmp" then
  156.             maxmp:setParameter(CONDITION_PARAM_STAT_MAXMANAPOINTS, effects[2][i])
  157.             maxmp:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  158.             player:addCondition(maxmp)
  159.         elseif effects[1][i] == "speed" then
  160.             speed:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  161.             speed:setParameter(CONDITION_PARAM_SPEED, player:getBaseSpeed() + effects[2][i])
  162.             player:addCondition(speed)
  163.         elseif effects[1][i] == "drown" then
  164.             drown:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  165.             player:addCondition(drown)
  166.         elseif effects[1][i] == "meleeup" then 
  167.             melee:setParameter(CONDITION_PARAM_SKILL_MELEE, effects[2][i])
  168.             melee:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  169.             player:addCondition(melee)
  170.         elseif effects[1][i] == "fistup" then  
  171.             fist:setParameter(CONDITION_PARAM_SKILL_FIST, effects[2][i])
  172.             fist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  173.             player:addCondition(fist)
  174.         elseif effects[1][i] == "distup" then  
  175.             dist:setParameter(CONDITION_PARAM_SKILL_DISTANCE, effects[2][i])
  176.             dist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  177.             player:addCondition(dist)
  178.         elseif effects[1][i] == "shieldup" then
  179.             shield:setParameter(CONDITION_PARAM_SKILL_SHIELD, effects[2][i])
  180.             shield:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  181.             player:addCondition(shield)
  182.         elseif effects[1][i] == "fishup" then  
  183.             fish:setParameter(CONDITION_PARAM_SKILL_FISHING, effects[2][i])
  184.             fish:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  185.             player:addCondition(fish)
  186.         elseif effects[1][i] == "resistfire" then
  187.             resist:setParameter(CONDITION_PARAM_SUBID, 101)
  188.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  189.             removeResists(player)
  190.             player:addCondition(resist)
  191.             player:setStorageValue(5, effects[2][i])
  192.         elseif effects[1][i] == "resistearth" then
  193.             resist:setParameter(CONDITION_PARAM_SUBID, 102)
  194.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  195.             removeResists(player)
  196.             player:addCondition(resist)
  197.             player:setStorageValue(5, effects[2][i])
  198.         elseif effects[1][i] == "resistenergy" then
  199.             resist:setParameter(CONDITION_PARAM_SUBID, 103)
  200.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  201.             removeResists(player)
  202.             player:addCondition(resist)
  203.             player:setStorageValue(5, effects[2][i])
  204.         elseif effects[1][i] == "resistice" then
  205.             resist:setParameter(CONDITION_PARAM_SUBID, 104)
  206.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  207.             removeResists(player)
  208.             player:addCondition(resist)
  209.             player:setStorageValue(5, effects[2][i])
  210.         elseif effects[1][i] == "resistholy" then
  211.             resist:setParameter(CONDITION_PARAM_SUBID, 105)
  212.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  213.             removeResists(player)
  214.             player:addCondition(resist)
  215.             player:setStorageValue(5, effects[2][i])
  216.         elseif effects[1][i] == "resistdeath" then
  217.             resist:setParameter(CONDITION_PARAM_SUBID, 106)
  218.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  219.             removeResists(player)
  220.             player:addCondition(resist)
  221.             player:setStorageValue(5, effects[2][i])
  222.         elseif effects[1][i] == "resistphysical" then
  223.             resist:setParameter(CONDITION_PARAM_SUBID, 107)
  224.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  225.             removeResists(player)
  226.             player:addCondition(resist)
  227.             player:setStorageValue(5, effects[2][i])
  228.         elseif effects[1][i] == "resistall" then
  229.             resist:setParameter(CONDITION_PARAM_SUBID, 108)
  230.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  231.             removeResists(player)
  232.             player:addCondition(resist)
  233.             player:setStorageValue(5, effects[2][i])
  234.         elseif effects[1][i] == "reflectfire" then
  235.             resist:setParameter(CONDITION_PARAM_SUBID, 109)
  236.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  237.             removeResists(player)
  238.             player:addCondition(resist)
  239.             player:setStorageValue(5, effects[2][i])
  240.         elseif effects[1][i] == "reflectearth" then
  241.             resist:setParameter(CONDITION_PARAM_SUBID, 110)
  242.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  243.             removeResists(player)
  244.             player:addCondition(resist)
  245.             player:setStorageValue(5, effects[2][i])
  246.         elseif effects[1][i] == "reflectenergy" then
  247.             resist:setParameter(CONDITION_PARAM_SUBID, 111)
  248.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  249.             removeResists(player)
  250.             player:addCondition(resist)
  251.             player:setStorageValue(5, effects[2][i])
  252.         elseif effects[1][i] == "reflectice" then
  253.             resist:setParameter(CONDITION_PARAM_SUBID, 112)
  254.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  255.             removeResists(player)
  256.             player:addCondition(resist)
  257.             player:setStorageValue(5, effects[2][i])
  258.         elseif effects[1][i] == "reflectholy" then
  259.             resist:setParameter(CONDITION_PARAM_SUBID, 113)
  260.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  261.             removeResists(player)
  262.             player:addCondition(resist)
  263.             player:setStorageValue(5, effects[2][i])
  264.         elseif effects[1][i] == "reflectdeath" then
  265.             resist:setParameter(CONDITION_PARAM_SUBID, 114)
  266.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  267.             removeResists(player)
  268.             player:addCondition(resist)
  269.             player:setStorageValue(5, effects[2][i])
  270.         elseif effects[1][i] == "reflectphysical" then
  271.             resist:setParameter(CONDITION_PARAM_SUBID, 115)
  272.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  273.             removeResists(player)
  274.             player:addCondition(resist)
  275.             player:setStorageValue(5, effects[2][i])
  276.         elseif effects[1][i] == "reflectall" then
  277.             resist:setParameter(CONDITION_PARAM_SUBID, 116)
  278.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  279.             removeResists(player)
  280.             player:addCondition(resist)
  281.             player:setStorageValue(5, effects[2][i])
  282.         elseif effects[1][i] == "deflectfire" then
  283.             resist:setParameter(CONDITION_PARAM_SUBID, 117)
  284.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  285.             removeResists(player)
  286.             player:addCondition(resist)
  287.             player:setStorageValue(5, effects[2][i])
  288.         elseif effects[1][i] == "deflectearth" then
  289.             resist:setParameter(CONDITION_PARAM_SUBID, 118)
  290.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  291.             removeResists(player)
  292.             player:addCondition(resist)
  293.             player:setStorageValue(5, effects[2][i])
  294.         elseif effects[1][i] == "deflectenergy" then
  295.             resist:setParameter(CONDITION_PARAM_SUBID, 119)
  296.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  297.             removeResists(player)
  298.             player:addCondition(resist)
  299.             player:setStorageValue(5, effects[2][i])
  300.         elseif effects[1][i] == "deflectice" then
  301.             resist:setParameter(CONDITION_PARAM_SUBID, 120)
  302.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  303.             removeResists(player)
  304.             player:addCondition(resist)
  305.             player:setStorageValue(5, effects[2][i])
  306.         elseif effects[1][i] == "deflectholy" then
  307.             resist:setParameter(CONDITION_PARAM_SUBID, 121)
  308.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  309.             removeResists(player)
  310.             player:addCondition(resist)
  311.             player:setStorageValue(5, effects[2][i])
  312.         elseif effects[1][i] == "deflectdeath" then
  313.             resist:setParameter(CONDITION_PARAM_SUBID, 122)
  314.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  315.             removeResists(player)
  316.             player:addCondition(resist)
  317.             player:setStorageValue(5, effects[2][i])
  318.         elseif effects[1][i] == "deflectphysical" then
  319.             resist:setParameter(CONDITION_PARAM_SUBID, 123)
  320.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  321.             removeResists(player)
  322.             player:addCondition(resist)
  323.             player:setStorageValue(5, effects[2][i])
  324.         elseif effects[1][i] == "deflectall" then
  325.             resist:setParameter(CONDITION_PARAM_SUBID, 124)
  326.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  327.             removeResists(player)
  328.             player:addCondition(resist)
  329.             player:setStorageValue(5, effects[2][i])
  330.         elseif effects[1][i] == "absorbfire" then
  331.             resist:setParameter(CONDITION_PARAM_SUBID, 125)
  332.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  333.             removeResists(player)
  334.             player:addCondition(resist)
  335.             player:setStorageValue(5, effects[2][i])
  336.         elseif effects[1][i] == "absorbearth" then
  337.             resist:setParameter(CONDITION_PARAM_SUBID, 126)
  338.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  339.             removeResists(player)
  340.             player:addCondition(resist)
  341.             player:setStorageValue(5, effects[2][i])
  342.         elseif effects[1][i] == "absorbenergy" then
  343.             resist:setParameter(CONDITION_PARAM_SUBID, 127)
  344.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  345.             removeResists(player)
  346.             player:addCondition(resist)
  347.             player:setStorageValue(5, effects[2][i])
  348.         elseif effects[1][i] == "absorbice" then
  349.             resist:setParameter(CONDITION_PARAM_SUBID, 128)
  350.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  351.             removeResists(player)
  352.             player:addCondition(resist)
  353.             player:setStorageValue(5, effects[2][i])
  354.         elseif effects[1][i] == "absorbholy" then
  355.             resist:setParameter(CONDITION_PARAM_SUBID, 129)
  356.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  357.             removeResists(player)
  358.             player:addCondition(resist)
  359.             player:setStorageValue(5, effects[2][i])
  360.         elseif effects[1][i] == "absorbdeath" then
  361.             resist:setParameter(CONDITION_PARAM_SUBID, 130)
  362.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  363.             removeResists(player)
  364.             player:addCondition(resist)
  365.             player:setStorageValue(5, effects[2][i])
  366.         elseif effects[1][i] == "absorbphysical" then
  367.             resist:setParameter(CONDITION_PARAM_SUBID, 131)
  368.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  369.             removeResists(player)
  370.             player:addCondition(resist)
  371.             player:setStorageValue(5, effects[2][i])
  372.         elseif effects[1][i] == "absorball" then
  373.             resist:setParameter(CONDITION_PARAM_SUBID, 132)
  374.             resist:setParameter(CONDITION_PARAM_TICKS, effects[3] * 1000)
  375.             removeResists(player)
  376.             player:addCondition(resist)
  377.             player:setStorageValue(5, effects[2][i])
  378.         end
  379.     end
  380. end
  381.  
  382. function removeResists(player)
  383.     for i = 1, 32 do
  384.         if player:getCondition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT, i + 100) then
  385.             player:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_COMBAT, i + 100)
  386.         end
  387.     end
  388. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement