Advertisement
Guest User

Payday 2 CarryStacker smart limiter

a guest
Jul 11th, 2014
482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.82 KB | None | 0 0
  1.  
  2. local carry_limits = {
  3.     -- modifer_power    --> How much additional bags affect on this modifier (bigger - slower)
  4.     -- min_val          --> Minimal value of that modifier
  5.     move_speed_modifier =   {   modifer_power = 0.35,   min_val = 0.15  },
  6.     jump_modifier       =   {   modifer_power = 0.2,    min_val = 0.35  },     
  7. }
  8.        
  9. if inGame == nil then  
  10.     -- INGAME CHECK
  11.     inGame = function()
  12.         if not game_state_machine then return false end
  13.         return string.find(game_state_machine:current_state_name(), "game")
  14.     end
  15. end
  16.    
  17. function append_carry_limits(in_value, modifer_type)
  18.     local out_value = in_value
  19.            
  20.     if managers.player.carry_stack ~= nil and #managers.player.carry_stack > 0 then
  21.         for _,v in pairs(managers.player.carry_stack) do
  22.             if type(v) == "table" then
  23.                 --ChatMessage(tostring(v.carry_id))
  24.                 if tweak_data.carry[v.carry_id] ~= nil then
  25.                     local carry_type = tweak_data.carry[v.carry_id].type
  26.  
  27.                     if tweak_data.carry.types[carry_type] ~= nil then
  28.                         local add_mul = (1 - tweak_data.carry.types[carry_type][modifer_type]) * carry_limits[modifer_type].modifer_power
  29.                         if add_mul < 0 then add_mul = 0 end                        
  30.                         out_value = out_value - add_mul
  31.                         if out_value < 0 then out_value = carry_limits[modifer_type].min_val end   
  32.                         if out_value > 1 then out_value = 1 end
  33.                         --ChatMessage(tostring(out_value))
  34.                     end
  35.                 end
  36.             end
  37.         end
  38.     end
  39.                
  40.     return out_value
  41. end
  42.        
  43. if not CarryStackerLimits then
  44.     if inGame() and managers.player.carry_stack ~= nil then
  45.         tweak_data.carry.types.light.move_speed_modifier        = 0.9   -- 1.0 in orig game (Diamonds and jewelry)
  46.         tweak_data.carry.types.coke_light.move_speed_modifier   = 0.9   -- types.light
  47.        
  48.         -- Walk Speed
  49.         function PlayerCarry:_get_max_walk_speed(...)
  50.             local multiplier = tweak_data.carry.types[self._tweak_data_name].move_speed_modifier
  51.                    
  52.             if managers.player:has_category_upgrade("carry", "movement_penalty_nullifier") then
  53.                 multiplier = 1
  54.             else
  55.                 multiplier = append_carry_limits(multiplier, "move_speed_modifier") -- new
  56.                 multiplier = math.clamp(multiplier * managers.player:upgrade_value("carry", "movement_speed_multiplier", 1), 0, 1)
  57.             end
  58.            
  59.             return PlayerCarry.super._get_max_walk_speed(self, ...) * multiplier   
  60.         end
  61.        
  62.         -- Bobbing effect
  63.         function PlayerCarry:_get_walk_headbob(...)
  64.             local multiplier = append_carry_limits(tweak_data.carry.types[self._tweak_data_name].move_speed_modifier, "move_speed_modifier")    -- new
  65.             return PlayerCarry.super._get_walk_headbob(self, ...) * multiplier
  66.         end
  67.  
  68.         -- Jump power
  69.         function PlayerCarry:_perform_jump(jump_vec)
  70.             if managers.player:has_category_upgrade("carry", "movement_penalty_nullifier") then
  71.             else
  72.                 local multiplier = append_carry_limits(tweak_data.carry.types[self._tweak_data_name].jump_modifier, "jump_modifier")    -- new
  73.                 mvector3.multiply(jump_vec, multiplier)
  74.             end
  75.  
  76.             PlayerCarry.super._perform_jump(self, jump_vec)
  77.         end
  78.        
  79.         -- Can Run
  80.         function PlayerCarry:_check_action_run(...) -- new
  81.             local bCanRun = tweak_data.carry.types[self._tweak_data_name].can_run
  82.            
  83.             if bCanRun == true then
  84.                 if managers.player.carry_stack ~= nil and #managers.player.carry_stack > 0 then
  85.                     for _,v in pairs(managers.player.carry_stack) do
  86.                         if type(v) == "table" then
  87.                             if tweak_data.carry[v.carry_id] ~= nil then
  88.                                 local carry_type = tweak_data.carry[v.carry_id].type
  89.  
  90.                                 if tweak_data.carry.types[carry_type] ~= nil then
  91.                                     if tweak_data.carry.types[carry_type].can_run == false then
  92.                                         bCanRun = false
  93.                                         break
  94.                                     end
  95.                                 end
  96.                             end
  97.                         end
  98.                     end
  99.                 end
  100.             end
  101.            
  102.             if bCanRun or managers.player:has_category_upgrade("carry", "movement_penalty_nullifier") then
  103.                 PlayerCarry.super._check_action_run(self, ...)
  104.             end
  105.         end    
  106.    
  107.         CarryStackerLimits = true
  108.         return
  109.     end
  110. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement