diff --git a/lua/charactertweakdata.lua b/lua/charactertweakdata.lua index 3c35294..03cfa78 100644 --- a/lua/charactertweakdata.lua +++ b/lua/charactertweakdata.lua @@ -730,7 +730,7 @@ Hooks:PostHook(CharacterTweakData, "init", "eclipse_init", function(self) -- elite shield self.phalanx_minion.damage.explosion_damage_mul = 0.2 self.phalanx_minion.access = "shield" - self.phalanx_minion.spawn_sound_event = "shield_identification" --BANG BANG BANG!!! (I wanted to use Terminator Bang sound for him but this needs No Mercy's SFX package to be loaded) + self.phalanx_minion.spawn_sound_event = "hos_shield_indication_sound_terminator_style" --DUN..DUN..DUN....DUN..DUN..DUN!! self.phalanx_minion_break = deep_clone(self.phalanx_minion) self.phalanx_minion_break.tags = { "law", "shield" } @@ -778,9 +778,10 @@ Hooks:PostHook(CharacterTweakData, "init", "eclipse_init", function(self) self.zeal_heavy_swat.damage.explosion_damage_mul = 0.6 table.insert(self._enemy_list, "zeal_heavy_swat") - --I wanted to use Terminator Bang sound for him but this needs No Mercy's SFX package to be loaded + self.zeal_shield = deep_clone(self.shield) self.zeal_shield.speech_prefix_p2 = "d" + self.zeal_shield.spawn_sound_event = "hos_shield_indication_sound_terminator_style" --Come with me if you wanna live... table.insert(self._enemy_list, "zeal_shield") self.zeal_medic = deep_clone(self.medic) diff --git a/lua/gamesetup.lua b/lua/gamesetup.lua index 3ea00e5..de728d4 100644 --- a/lua/gamesetup.lua +++ b/lua/gamesetup.lua @@ -1,9 +1,17 @@ Hooks:PostHook(GameSetup, "load_packages", "sh_load_packages", function(self) local difficulty = Global.game_settings and Global.game_settings.difficulty or "normal" local difficulty_index = tweak_data:difficulty_to_index(difficulty) - if difficulty_index and difficulty_index == 6 and not PackageManager:loaded("packages/sm_wish") then + if difficulty_index == 6 and not PackageManager:loaded("packages/sm_wish") then StreamHeist:log("Loading ZEAL package") table.insert(self._loaded_diff_packages, "packages/sm_wish") PackageManager:load("packages/sm_wish") end + + --For Elite/ZEAL shield's Terminator styled BANG BANG BANG spawn sound + if difficulty_index == 6 and not PackageManager:loaded("soundbanks/sfx_hos") then + PackageManager:load("soundbanks/sfx_hos") + elseif difficulty_index ~= 6 and PackageManager:loaded("soundbanks/sfx_hos") then + PackageManager:unload("soundbanks/sfx_hos") + end + end) diff --git a/req/mission_script/man.lua b/req/mission_script/man.lua index e161297..cb90a46 100644 --- a/req/mission_script/man.lua +++ b/req/mission_script/man.lua @@ -1,10 +1,54 @@ +local difficulty = tweak_data:difficulty_to_index(Global.game_settings and Global.game_settings.difficulty or "normal") +local tank = (difficulty == 6 and "units/pd2_dlc_drm/characters/ene_bulldozer_minigun_classic/ene_bulldozer_minigun_classic") or "units/payday2/characters/ene_bulldozer_1/ene_bulldozer_1" + +local dozer_heli = { + values = { + enemy = tank + } +} +local disabled = { + values = { + enabled = false + } +} return { + --PONR + --Have the gas chopper be a dozer chopper + --Trigger the heli spawn during escape instead of during hacking objectives [100695] = { ponr = { length = 60, player_mul = {1.25, 1, 0.75, 0.5} + }, + on_executed = { + {id = 101608, delay = 0} + } + }, + --remove the line + [102010] = { + on_executed = { + { id = 101608, remove = true} + } + }, + --Bain warns about incoming dozers from the chopper + [103295] = { + on_executed = { + { id = 102950, remove = true}, + { id = 400001, delay = 16} } }, + --Replace the spawns with dozers + [103293] = dozer_heli, + [103294] = dozer_heli, + [104045] = dozer_heli, + [104046] = dozer_heli, + [104047] = dozer_heli, + [104048] = dozer_heli, + [104049] = dozer_heli, + [104050] = dozer_heli, + --disable the Gas SO (it's useless anyway) + [103302] = disabled, + [103303] = disabled, -- Give saw to all players [101865] = { func = function(self) diff --git a/req/mission_script/pal.lua b/req/mission_script/pal.lua new file mode 100644 index 0000000..444b849 --- /dev/null +++ b/req/mission_script/pal.lua @@ -0,0 +1,98 @@ +local difficulty = tweak_data:difficulty_to_index(Global.game_settings and Global.game_settings.difficulty or "normal") +local pro_job = Global.game_settings and Global.game_settings.one_down +local cop_sg = "units/payday2/characters/ene_cop_3/ene_cop_3" +local titan_shield = (difficulty == 6 and pro_job and "units/pd2_dlc_vip/characters/ene_phalanx_1/ene_phalanx_1") + +local tshield = { + values = { + enemy = titan_shield + } +} +local disabled = { + values = { + enabled = false + } +} + +return { + --Water from the hose fills the safe much slower like in PDTH + [101229] = { + values = { + timer = 240 + } + }, + [101237] = { + values = { + time = 200 + } + }, + [101236] = { + values = { + time = 140 + } + }, + [101235] = { + values = { + time = 60 + } + }, + [100897] = { + values = { + time = 30 + } + }, + --Replace 2nd bronco cop with shotgun cop to match with PDTH style + [100725] = { + values = { + enemy = cop_sg + } + }, + --Disable the 2nd police crusier if the cops are already alerted + [103034] = { + on_executed = { + {id = 400015, delay = 0} + } + }, + --delay the next anim by few more seconds to let the previous anim end (fix for Wilson's SWAT van) + [101647] = { + on_executed = { + {id = 101648, delay = 10.5} + } + }, + --Spawn custom PDTH styled snipers at the start of 2nd assault + --Bain warns about them + [102082] = { + on_executed = { + {id = 400001, delay = 5}, + {id = 400002, delay = 5}, + {id = 400003, delay = 5}, + {id = 400004, delay = 5}, + {id = 400005, delay = 5}, + {id = 400016, delay = 3.5} + } + }, + --disable vanilla snipers + [102941] = disabled, + --Add the missing sniper access + [102399] = { + pre_func = function (self) + if not self._values.SO_access_original then + self._values.SO_access_original = self._values.SO_access + self._values.SO_access = managers.navigation:convert_access_filter_to_number({"cop", "swat", "fbi", "taser", "sniper", "spooc"}) + end + end + }, + --Elite Shields replaces FBI ones that cover the manhole on Eclipse (PJ only) + [100036] = tshield, + [100039] = tshield, + [100044] = tshield, + [101848] = tshield, + [101908] = tshield, + [101911] = tshield, + [100642] = tshield, + [100777] = tshield, + [100795] = tshield, + [101804] = tshield, + [101883] = tshield, + [102098] = tshield +} \ No newline at end of file diff --git a/req/mission_script_add/man.lua b/req/mission_script_add/man.lua new file mode 100644 index 0000000..be0f1b4 --- /dev/null +++ b/req/mission_script_add/man.lua @@ -0,0 +1,14 @@ +local Bain_senddozers = { + dialogue = "Play_ban_s02_b", + can_not_be_muted = true +} + +return { + elements = { + StreamHeist:gen_dialogue( + 400001, + "they_sending_dozers", + Bain_senddozers + ) + } +} \ No newline at end of file diff --git a/req/mission_script_add/pal.lua b/req/mission_script_add/pal.lua new file mode 100644 index 0000000..85d3fac --- /dev/null +++ b/req/mission_script_add/pal.lua @@ -0,0 +1,220 @@ +local difficulty = tweak_data:difficulty_to_index(Global.game_settings and Global.game_settings.difficulty or "normal") +local sniper = (difficulty >= 5 and "units/payday2/characters/ene_sniper_2/ene_sniper_2") or "units/payday2/characters/ene_sniper_1/ene_sniper_1" +local eclipse = difficulty == 6 +local overkill_above = difficulty >= 5 + +local optsSniper_1 = { + enemy = sniper, + on_executed = { + { id = 100675, delay = 0 }, + }, + enabled = true +} +local optsSniper_2 = { + enemy = sniper, + on_executed = { + { id = 400006, delay = 0 }, + }, + enabled = true +} +local optsSniper_3 = { + enemy = sniper, + on_executed = { + { id = 400007, delay = 0 }, + }, + enabled = overkill_above +} +local optsSniper_4 = { + enemy = sniper, + spawn_action = "e_sp_armored_truck_1st", + on_executed = { + { id = 400008, delay = 2.5 }, + }, + enabled = overkill_above +} +local optsSniper_5 = { + enemy = sniper, + spawn_action = "e_sp_up_2_75_down_1_25m", + on_executed = { + { id = 400009, delay = 3 }, + }, + enabled = eclipse +} +local optsrespawn_sniper_1 = { + on_executed = { + { id = 400001, delay = 30 } + }, + elements = { + 400001 + }, + event = "death" +} +local optsrespawn_sniper_2 = { + on_executed = { + { id = 400002, delay = 30 } + }, + elements = { + 400002 + }, + event = "death" +} +local optsrespawn_sniper_3 = { + on_executed = { + { id = 400003, delay = 30 } + }, + elements = { + 400003 + }, + event = "death" +} +local optsrespawn_sniper_4 = { + on_executed = { + { id = 400004, delay = 30 } + }, + elements = { + 400004 + }, + event = "death" +} +local optsrespawn_sniper_5 = { + on_executed = { + { id = 400005, delay = 30 } + }, + elements = { + 400005 + }, + event = "death" +} +local optsSniper_SO = { + scan = true, + align_position = true, + needs_pos_rsrv = true, + align_rotation = true, + interval = 2, + so_action = "AI_sniper" +} +local disable_2nd_police_cruiser = { + enabled = true, + toggle = "off", + elements = { + 100704 + } +} +local Bain_sendsnipers = { + dialogue = "play_pln_gen_snip_01", + can_not_be_muted = true +} + +return { + elements = { + --Snipers + restoration:gen_dummy( + 400001, + "sniper_1", + Vector3(4082, 2186, 120.142), + Rotation(-180, 0, -0), + optsSniper_1 + ), + restoration:gen_dummy( + 400002, + "sniper_2", + Vector3(2978, -744, 126.059), + Rotation(180, 0, -0), + optsSniper_2 + ), + restoration:gen_dummy( + 400003, + "sniper_3", + Vector3(-3153, 8429, 26.021), + Rotation(90, -0, -0), + optsSniper_3 + ), + restoration:gen_dummy( + 400004, + "sniper_4", + Vector3(502, -3577, 29.736), + Rotation(-167, 0, -0), + optsSniper_4 + ), + restoration:gen_dummy( + 400005, + "sniper_5", + Vector3(-8202, 1491, 25.860), + Rotation(-90, 0, -0), + optsSniper_5 + ), + restoration:gen_so( + 400006, + "sniper_spot_so_1", + Vector3(-3192, 1184, 517.520), + Rotation(0, 0, -0), + optsSniper_SO + ), + restoration:gen_so( + 400007, + "sniper_spot_so_2", + Vector3(-3328, 3703, 445.786), + Rotation(161, 0, -0), + optsSniper_SO + ), + restoration:gen_so( + 400008, + "sniper_spot_so_3", + Vector3(-1797.890, 1042.875, 415.609), + Rotation(46, -0, -0), + optsSniper_SO + ), + restoration:gen_so( + 400009, + "sniper_spot_so_4", + Vector3(-4513, 384, 500.223), + Rotation(0, 0, -0), + optsSniper_SO + ), + restoration:gen_dummytrigger( + 400010, + "respawn_sniper_1", + Vector3(-2400, -3677, 375), + Rotation(90, -0, -0), + optsrespawn_sniper_1 + ), + restoration:gen_dummytrigger( + 400011, + "respawn_sniper_2", + Vector3(-2400, -3577, 375), + Rotation(90, -0, -0), + optsrespawn_sniper_2 + ), + restoration:gen_dummytrigger( + 400012, + "respawn_sniper_3", + Vector3(-2400, -3677, 375), + Rotation(90, -0, -0), + optsrespawn_sniper_3 + ), + restoration:gen_dummytrigger( + 400013, + "respawn_sniper_4", + Vector3(-2400, -3577, 375), + Rotation(90, -0, -0), + optsrespawn_sniper_4 + ), + restoration:gen_dummytrigger( + 400014, + "respawn_sniper_5", + Vector3(-2400, -3677, 375), + Rotation(90, -0, -0), + optsrespawn_sniper_5 + ), + restoration:gen_toggleelement( + 400015, + "disable_the_cruiser", + disable_2nd_police_cruiser + ), + restoration:gen_dialogue( + 400016, + "they_sending_snipers", + Bain_sendsnipers + ) + } +} \ No newline at end of file