Untitled

 avatar
unknown
plain_text
2 years ago
8.6 kB
2
Indexable
if snd.class == "Shapeshifter" then
  snd.starting_attack()
 
  function snd.attack_function()
    if not snd.waiting.queue then
    
      local function feralityConvert(limb)
        if string.find(limb, "leg") then
          --and snd.enemy_restoration_balance == false and not snd.checksomeAffs({"left_leg_broken","right_leg_broken"},2) then
          return "hamstring " .. limb:gsub(" leg", "")
        elseif string.find(limb, "arm") then
          --and snd.enemy_restoration_balance == false and not snd.checksomeAffs({"left_arm_broken","right_arm_broken"},2) then
          return "rend " .. limb:gsub(" arm", "")
        elseif limb == "torso" then
          if not snd.checkAff("paresis") then
            return "spinalcrack"
          else
            return "bodypunch"
          end
        elseif limb == "head" then
          if snd.limb_status.head ~= "healed" and not snd.checkAff("fallen") then
            return "skullwhack"
          elseif not snd.checkAff("blurry_vision") then
            return "faceslash"
          else
            return "jugular"
          end
        else
          limb = head
          return "jugular " .. limb
        end
      end
      
      local function limbCheck()
          if
             limbs[limb] ~= snd.parried_limb and
             limbs[limb] ~= snd.last_hit_limb and
             limbs[limb] ~= snd.resto_limb
          then 
           return "clear"
          end
        end
      
       
         local mending_count = 0
         local broken_limbs = {"right_leg_broken","left_leg_broken","right_arm_broken","left_arm_broken"}
           for affs in pairs(broken_limbs) do
             if snd.checkAff(broken_limbs[affs]) then
               mending_count = mending_count + 1
             end
           end
      
      if snd.proned() then
        if snd.checkAff("groinrip")  then
          limbs = {"left arm", "torso", "head", "right arm", "right leg", "left leg"}
        elseif snd.checkAff("spleenrip") then
          limbs = {"right leg", "left leg", "head", "left arm", "right arm", "torso"}
        elseif snd.checkAff("throatrip") then
          limbs = {"left leg", "right leg", "left arm", "torso", "right arm", "head"}
        else
          limbs = {"left leg", "right leg", "left arm", "head", "right arm", "torso"}
        end
      else
        limbs = {"left leg", "right leg", "left arm", "right arm", "torso", "head"}
      end
      
      mangled = "nothing"
      broken = "nothing"
      crippled = "nothing"
    
  
      
      for limb in pairs(limbs) do
      
        if snd.limb_status[limbs[limb]] == "mangled" and mangled == "nothing" then
          if
            string.find(limbs[limb], "leg") and
            not snd.checksomeAffs({"groinrip", "writhe_thighlock"}, 1)
          then
            if  
              limbCheck == "clear"
            then
              mangled = limbs[limb]
            end
          elseif
            limbs[limb] == "head" and not snd.checksomeAffs({"throatrip", "writhe_necklock"}, 1)
          then
            if
              limbCheck == "clear"
            then
              mangled = limbs[limb]
            end
          elseif
            not snd.checksomeAffs({"spleenrip", "writhe_armpitlock"}, 1) and
            (limbs[limb] == "torso" or string.find(limbs[limb], "arm"))
          then
            if
              limbCheck == "clear"
            then
              mangled = limbs[limb]
            end
          end
        elseif
          snd.limb_status[limbs[limb]] == "damaged" and
          snd.limb_dmg[limbs[limb]] < 66.66 and
          broken == "nothing"
        then
          if
              limbCheck == "clear"
          then
            broken = limbs[limb]
          end
          --end
        elseif
          table.contains(snd.target_has, string.gsub(limbs[limb], " ", "_") .. "_broken") and
          snd.limb_dmg[limbs[limb]] < 33.33 and
          crippled == "nothing"
        then
          if string.find(limbs[limb], "leg") or string.find(limbs[limb], "arm") then
            if
              limbCheck == "clear"
            then
              crippled = limbs[limb]
            end
          end
        end
      end
      
      if snd.resetWounds == "true" then
        string = "WOUNDS " .. snd.target
        snd.resetWounds = "false"
      
      elseif snd.used.shield then    --probably change this to hammer tat now that it's been super buffed and only pounce if fury
        string = "touch hammer " .. snd.target
        
      elseif snd.checksomeAffs({"groinrip", "throatrip", "spleenrip"}, 2) then
        string = "devour " .. snd.target
        
      elseif
        snd.checksomeAffs({"writhe_necklock", "writhe_armpitlock", "writhe_thighlock"}, 1) and
        not snd.jawlocked
      then
        string = "quarter " .. snd.target
        
      elseif snd.checkAff("writhe_necklock") and snd.jawlocked and not snd.checkAff("throatrip") then
        string = "throatrip " .. snd.target
      elseif snd.checkAff("writhe_armpitlock") and snd.jawlocked and not snd.checkAff("spleenrip") then
        string = "spleenrip " .. snd.target
      elseif snd.checkAff("writhe_thighlock") and snd.jawlocked and not snd.checkAff("groinrip") then
        string = "groinrip " .. snd.target
        
      elseif snd.proned() and mangled ~= "nothing" and not snd.jawlocked then
        if string.find(mangled, "leg") and not snd.checkAff("groinrip") then
          string = "jawlock thigh of " .. snd.target
        elseif mangled == "head" and not snd.checkAff("throatrip") then
          string = "jawlock neck of " .. snd.target
        elseif
          mangled == "torso" or string.find(mangled, "arm") and not snd.checkAff("spleenrip")
        then
          string = "jawlock armpit of " .. snd.target
        end
        
      elseif
        broken ~= "nothing" and not snd.jawlocked and snd.defenses.def_fury.state ~= "deffed"
      then
        if broken == "head" and snd.proned() then
          string = "skullcrush " .. snd.target
        elseif broken == "torso" then
          string = "gut " .. snd.target
        else
          string = "mangle " .. broken .. " of " .. snd.target
        end
        
      elseif
        crippled ~= "nothing" and not snd.jawlocked and snd.defenses.def_fury.state ~= "deffed" and (snd.enemy_restoration_balance == false or mending_count>2)
      then
        string = "destroy " .. crippled .. " of " .. snd.target
      
      elseif
        snd.checkAff("paralysis") and not snd.checkAff("spinal_rip") and broken == "nothing" and not snd.jawlocked and snd.defenses.def_fury.state ~= "deffed"
      then
        string = "spinalrip " .. snd.target
      elseif
        snd.checkAff("blurry_vision") and not snd.checkAff("mauled_face") and broken == "nothing" and not snd.jawlocked and snd.defenses.def_fury.state ~= "deffed"
      then
        string = "facemaul " .. snd.target
        
      else
        left = "nothing"
        right = "nothing"
        local spare = "nothing"
        for limb in pairs(limbs) do
          if
            limbs[limb] ~= snd.parried_limb and
            limbs[limb] ~= snd.last_hit_limb and
            not table.contains(snd.target_has, limbs[limb]:gsub(" ", "_") .. "_broken")
          then
            if right == "nothing" then
              right = limbs[limb]
            elseif left == "nothing" then
              left = limbs[limb]
            elseif right ~= "nothing" and left ~= "nothing" then
                spare = limbs[limb]
            end
          end
        end
        if left == "nothing" then
          left = right
        end
        
        string =
          "combo " .. snd.target .. " " .. feralityConvert(left) .. " " .. feralityConvert(right)
                   
        if snd.defenses.def_fury.state == "deffed" then
          if snd.used.shield then
            string = "pounce " .. snd.target .. snd.sep .. string
          elseif snd.checkAff("paralysis") then
            string = "spinalrip " .. snd.target .. snd.sep .. string
          elseif snd.limb_status.torso ~= "healed" then
            string = "gut " .. snd.target .. snd.sep .. string
          else
            string = "bite " .. snd.target .. " " .. spare .. snd.sep .. string
          end
        end
      end
      
      
      if string ~= snd.last_attack and not snd.waiting.queue then
        snd.last_attack = string
        snd.send("qeb " .. snd.last_attack)
        snd.waiting.queue = true
        tempTimer(snd.delay(), [[snd.waiting.queue = false]])
      end
    end
  end
 
  --end the function
  snd.attack_function()
end
Editor is loading...