Skip to content

Commit

Permalink
u240.3 fixes and code formatting for everything
Browse files Browse the repository at this point in the history
  • Loading branch information
rockymoto517 committed Nov 30, 2023
1 parent c1c003f commit 98fc51f
Show file tree
Hide file tree
Showing 20 changed files with 1,559 additions and 1,181 deletions.
28 changes: 19 additions & 9 deletions BetterBalancedRebalance/Hooks/blackmarketmanager.lua
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
-- Burglar concealment visual
local old_conceal_modifier = BlackMarketManager.concealment_modifier
function BlackMarketManager:concealment_modifier(type, upgrade_level)
modifier = old_conceal_modifier(self, type, upgrade_level)
if type == "armors" then
modifier = modifier + managers.player:upgrade_value("player", "passive_burglar_concealment_addend", 0)
end
return modifier
modifier = old_conceal_modifier(self, type, upgrade_level)
if type == "armors" then
modifier = modifier
+ managers.player:upgrade_value(
"player",
"passive_burglar_concealment_addend",
0
)
end
return modifier
end
-- Burglar concealment functional
local old_visibility_modifiers = BlackMarketManager.visibility_modifiers
function BlackMarketManager:visibility_modifiers()
local skill_bonuses = old_visibility_modifiers(self)
skill_bonuses = skill_bonuses - managers.player:upgrade_value("player", "passive_burglar_concealment_addend", 0)
return skill_bonuses
end
local skill_bonuses = old_visibility_modifiers(self)
skill_bonuses = skill_bonuses
- managers.player:upgrade_value(
"player",
"passive_burglar_concealment_addend",
0
)
return skill_bonuses
end
35 changes: 19 additions & 16 deletions BetterBalancedRebalance/Hooks/enveffecttweakdata.lua
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
local old_incendiary_fire = EnvEffectTweakData.incendiary_fire
function EnvEffectTweakData:incendiary_fire()
local params = old_incendiary_fire(self)
params.damage = 25
params.fire_dot_data.dot_damage = 1
params.fire_dot_data.dot_trigger_chance = 25
return params
end
local old_incendiary_fire_arbiter = EnvEffectTweakData.incendiary_fire_arbiter
function EnvEffectTweakData:incendiary_fire_arbiter()
local params = old_incendiary_fire_arbiter(self)
params.damage = 25
params.fire_dot_data.dot_damage = 1
params.fire_dot_data.dot_trigger_chance = 25
return params
end
--[[
local old_incendiary_fire = EnvEffectTweakData.incendiary_fire
function EnvEffectTweakData:incendiary_fire()
local params = old_incendiary_fire(self)
params.damage = 25
params.fire_dot_data.dot_damage = 1
params.fire_dot_data.dot_trigger_chance = 25
return params
end
local old_incendiary_fire_arbiter = EnvEffectTweakData.incendiary_fire_arbiter
function EnvEffectTweakData:incendiary_fire_arbiter()
local params = old_incendiary_fire_arbiter(self)
params.damage = 25
params.fire_dot_data.dot_damage = 1
params.fire_dot_data.dot_trigger_chance = 25
return params
end
]]
67 changes: 52 additions & 15 deletions BetterBalancedRebalance/Hooks/newflamethrowerbase.lua
Original file line number Diff line number Diff line change
@@ -1,23 +1,50 @@
local mvec_to = Vector3()
function NewFlamethrowerBase:_fire_raycast(user_unit, from_pos, direction, dmg_mul,
shoot_player, spread_mul, autohit_mul, suppr_mul, shoot_through_data)
function NewFlamethrowerBase:_fire_raycast(
user_unit,
from_pos,
direction,
dmg_mul,
shoot_player,
spread_mul,
autohit_mul,
suppr_mul,
shoot_through_data
)
if self._rays == 1 then
local result = NewFlamethrowerBase.super._fire_raycast(self, user_unit, from_pos, direction, dmg_mul,
shoot_player, spread_mul, autohit_mul, suppr_mul, shoot_through_data)
local result = NewFlamethrowerBase.super._fire_raycast(
self,
user_unit,
from_pos,
direction,
dmg_mul,
shoot_player,
spread_mul,
autohit_mul,
suppr_mul,
shoot_through_data
)

return result
end
local result = {}
local hit_enemies = 0
local damage = self:_get_current_damage(dmg_mul)
local autoaim, dodge_enemies = self:check_autoaim(from_pos, direction, self._range)
local autoaim, dodge_enemies =
self:check_autoaim(from_pos, direction, self._range)
local damage_range = self._flame_max_range
local spread_x, spread_y = self:_get_spread(user_unit)
mvector3.set(mvec_to, direction)
mvector3.multiply(mvec_to, damage_range)
mvector3.add(mvec_to, from_pos)
local col_ray = World:raycast("ray", from_pos, mvec_to, "slot_mask",
managers.slot:get_mask("world_geometry"), "ignore_unit", self._setup.ignore_units)
local col_ray = World:raycast(
"ray",
from_pos,
mvec_to,
"slot_mask",
managers.slot:get_mask("world_geometry"),
"ignore_unit",
self._setup.ignore_units
)
if col_ray then
damage_range = math.min(damage_range, col_ray.distance)
end
Expand All @@ -26,16 +53,23 @@ function NewFlamethrowerBase:_fire_raycast(user_unit, from_pos, direction, dmg_m
mvector3.set(mvec_to, direction)
mvector3.multiply(mvec_to, damage_range)
mvector3.add(mvec_to, from_pos)
local hit_bodies = World:find_bodies(user_unit, "intersect", "cone",
from_pos, mvec_to, cone_spread, self._bullet_slotmask)
local hit_bodies = World:find_bodies(
user_unit,
"intersect",
"cone",
from_pos,
mvec_to,
cone_spread,
self._bullet_slotmask
)
for idx, body in ipairs(hit_bodies) do
local unit = body:unit()
local fake_ray = {
body = body,
unit = body:unit(),
ray = direction,
normal = direction,
position = from_pos
position = from_pos,
}
self._bullet_class:on_collision(fake_ray, self._unit, user_unit, damage)
if unit:character_damage() and unit:character_damage().is_head then
Expand All @@ -44,23 +78,26 @@ function NewFlamethrowerBase:_fire_raycast(user_unit, from_pos, direction, dmg_m
end
if dodge_enemies and self._suppression then
for enemy_data, dis_error in pairs(dodge_enemies) do
enemy_data.unit:character_damage():build_suppression(suppr_mul * dis_error * self._suppression, self._panic_suppression_chance)
enemy_data.unit:character_damage():build_suppression(
suppr_mul * dis_error * self._suppression,
self._panic_suppression_chance
)
end
end
result.hit_enemy = hit_enemies > 0 and true or false
if self._alert_events then
result.rays = {{ position = from_pos }}
result.rays = { { position = from_pos } }
end
managers.statistics:shot_fired({
hit = false,
weapon_unit = self._unit
weapon_unit = self._unit,
})
for i = 1, hit_enemies, 1 do
managers.statistics:shot_fired({
skip_bullet_count = true,
hit = true,
weapon_unit = self._unit
weapon_unit = self._unit,
})
end
return result
end
end
66 changes: 38 additions & 28 deletions BetterBalancedRebalance/Hooks/newraycastweaponbase.lua
Original file line number Diff line number Diff line change
@@ -1,31 +1,41 @@
function NewRaycastWeaponBase:__check_weapon_category(category)
for _,type in ipairs(self:weapon_tweak_data().categories) do
if type == category then
return true
end
end
return false
for _, type in ipairs(self:weapon_tweak_data().categories) do
if type == category then
return true
end
end
return false
end
BetterRebalanceTable:PostHook(NewRaycastWeaponBase, "_update_stats_values",
function(self)
-- Make trigger happy give pistols shield piercing
if managers.player:has_category_upgrade("pistol", "pierce_enemy_armor") then
if self:__check_weapon_category("pistol") and not self._can_shoot_through_enemy
and self._armor_piercing_chance ~= 1
then
self._can_shoot_through_enemy = true
self._armor_piercing_chance = 1
end
end
-- Reimplement movement speed penalties
self._movement_penalty = self:weapon_tweak_data().movement_speed
-- Make iron man basic remove speed penalties
if managers.player:has_category_upgrade("player", "armor_multiplier") then
self._movement_penalty = 1
end
end)
BetterRebalanceTable:PostHook(NewRaycastWeaponBase, "init",
function(self)
-- initialize movement speed penalties
self._movement_penalty = self:weapon_tweak_data().movement_speed

BetterRebalanceTable:PostHook(
NewRaycastWeaponBase,
"_update_stats_values",
function(self)
-- Make trigger happy give pistols shield piercing
if
managers.player:has_category_upgrade("pistol", "pierce_enemy_armor")
then
if
self:__check_weapon_category("pistol")
and not self._can_shoot_through_enemy
and self._armor_piercing_chance ~= 1
then
self._can_shoot_through_enemy = true
self._armor_piercing_chance = 1
end
end
-- Reimplement movement speed penalties
self._movement_penalty = self:weapon_tweak_data().movement_speed
-- Make iron man basic remove speed penalties
if
managers.player:has_category_upgrade("player", "armor_multiplier")
then
self._movement_penalty = 1
end
end
)

BetterRebalanceTable:PostHook(NewRaycastWeaponBase, "init", function(self)
-- initialize movement speed penalties
self._movement_penalty = self:weapon_tweak_data().movement_speed
end)
71 changes: 50 additions & 21 deletions BetterBalancedRebalance/Hooks/playerdamage.lua
Original file line number Diff line number Diff line change
@@ -1,28 +1,57 @@
-- Implement Hitman armor regen
BetterRebalanceTable:PostHook(PlayerDamage, "_calc_armor_damage",
function(self)
if self:get_real_armor() <= 0 then
if managers.player:has_inactivate_temporary_upgrade("temporary", "regen_all_armor") then
managers.player:activate_temporary_upgrade("temporary", "regen_all_armor")
self:_start_regen_on_the_side(managers.player:temporary_upgrade_value("temporary", "regen_all_armor", 0))
end
end
BetterRebalanceTable:PostHook(PlayerDamage, "_calc_armor_damage", function(self)
if self:get_real_armor() <= 0 then
if
managers.player:has_inactivate_temporary_upgrade(
"temporary",
"regen_all_armor"
)
then
managers.player:activate_temporary_upgrade(
"temporary",
"regen_all_armor"
)
self:_start_regen_on_the_side(
managers.player:temporary_upgrade_value(
"temporary",
"regen_all_armor",
0
)
)
end
end
end)

-- Yakuza Frenzy HP stuffs
BetterRebalanceTable:PostHook(PlayerDamage, "init",
function(self)
local yakuza_reduction = managers.player:upgrade_value_nil("player", "passive_frenzy_health")
if managers.player:has_category_upgrade("player", "passive_frenzy_health") and yakuza_reduction then
self._max_health_reduction = yakuza_reduction --[[ Leaves approx 1 hp with/without a convert, maybe not with CC upgrades
BetterRebalanceTable:PostHook(PlayerDamage, "init", function(self)
local yakuza_reduction =
managers.player:upgrade_value_nil("player", "passive_frenzy_health")
if
managers.player:has_category_upgrade("player", "passive_frenzy_health")
and yakuza_reduction
then
self._max_health_reduction = yakuza_reduction --[[ Leaves approx 1 hp with/without a convert, maybe not with CC upgrades
But it's the best option without remaking large functions tbh ]]
end
end
end)
BetterRebalanceTable:PostHook(PlayerDamage, "copr_update_attack_data",
function(self, attack_data)
if managers.player:has_activate_temporary_upgrade("temporary", "copr_ability") then
local static_damage_ratio = managers.player:upgrade_value_nil("player", "copr_static_damage_ratio")
if static_damage_ratio and attack_data.damage > 0 then
attack_data.damage = self:_max_health() * static_damage_ratio

BetterRebalanceTable:PostHook(
PlayerDamage,
"copr_update_attack_data",
function(self, attack_data)
if
managers.player:has_activate_temporary_upgrade(
"temporary",
"copr_ability"
)
then
local static_damage_ratio = managers.player:upgrade_value_nil(
"player",
"copr_static_damage_ratio"
)
if static_damage_ratio and attack_data.damage > 0 then
attack_data.damage = self:_max_health() * static_damage_ratio
end
end
end
end)
)
33 changes: 18 additions & 15 deletions BetterBalancedRebalance/Hooks/playerinventory.lua
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
-- Add our own network event ID
BetterRebalanceTable:PostHook(PlayerInventory, "init",
function()
PlayerInventory._NET_EVENTS.BBR_share_ammo = 10
BetterRebalanceTable:PostHook(PlayerInventory, "init", function()
PlayerInventory._NET_EVENTS.BBR_share_ammo = 10
end)

-- Add a handler for our own network event
local old_sync_net_event = PlayerInventory.sync_net_event
function PlayerInventory:sync_net_event(event, peer)
if self._unit:base().is_local_player then
if self._unit:base().is_local_player then
return
end
if event == PlayerInventory._NET_EVENTS.BBR_share_ammo then
local _player = managers.player:local_player()
if alive(_player) and _player:character_damage() and not
_player:character_damage():is_downed() and not _player:character_damage():dead()
then
managers.player:add_ammo_to_pool(0.05)
end
else
old_sync_net_event(self, event, peer)
end
end
if event == PlayerInventory._NET_EVENTS.BBR_share_ammo then
local _player = managers.player:local_player()
if
alive(_player)
and _player:character_damage()
and not _player:character_damage():is_downed()
and not _player:character_damage():dead()
then
managers.player:add_ammo_to_pool(0.05)
end
else
old_sync_net_event(self, event, peer)
end
end
Loading

0 comments on commit 98fc51f

Please sign in to comment.