Halcyon has track down one of Phoenix's investors. A paranoid man called Ryan Ross. He almost never leaves his penthouse, has a small army of bodyguards, and a built-in panic room.
You're doing to infiltrate his penthouse, eliminate him, and steal any records of transactions you can find. Your entry point is climbing the side of the building, if the alarm goes, you can forget about leaving through the ground, but I have an alternate escape plan if that happens.
This Custom Heist is a recreation of "The Financier" from Entry Point. Possible in stealth and loud, this version of the mission includes all Entry Point objectives such as eliminating Ryan Ross, stealing the hard drive, and escaping with a helicopter.
Just don't kill too many guards or you might get a visit from NYPD SWAT.
This is cool, i like i can get into the panic room and just have it close on me and sit trough the assaults (tho you still have to complete the task which means opening the panic room door)
Target's AI is bit finicky, tho i assume there is no way to run a scripted behavior and have it take priority while also have the npc shoot at you
Only downside is i can't throw Ryan off the rooftop and get funny response :(
Also i think this goes well with PDTH enemies (since NYPD and all that)
Loud is kinda pain in the ass, due the map being too cramped + vanilla AI isn't designed for solo, i think team ai is forced off for whatever reason (maybe leftover from testing stages)
tho you could have a scripted/fake assault with scripted spawns if going for slow paced combat, but that'd would also require the need to hook player code to slow them down aswell
I had issues with Ryan's AI where if he was on the "law" team, he wouldn't run to the panic room, and if i set him to gangster, he shoots and engages his guards. The only way I could make him run to the panic room and not shoot his team, is if i set him to "neutral" though unfortunately that makes him ignore you in stealth.
You can throw Ryan off the building, though because i'm not using custom voice-lines (i'm not a voice actor and I made this heist myself) i'm quite limited by bain's voice lines.
Team AI was disabled on purpose for a couple reasons. the main reason: Entry Point doesn't have team AI. the other reason: I couldn't be bothered figuring out how to make the team AI crouch down in stealth like in Diamond Heist.
Lastly, the assaults ' scripted which is why they are quite tough and unforgiving, especially solo. Making them scripted would be somewhat simple, although I don't know how well that would work
The guards are taken from Diamond Heist / Framing Frame day 3. The SWAT are regular Payday 2 SWAT, since it would take a lot of modding and headaches to get PD:TH enemies.
i think "law" team can be forced to go to specific locations, as long interrupt_distance is 0 and forced is ticked on, plus if you set it to "run" it will almost always go to scripted destination, and since interupt_distance is 0 he will never abort from it's SO regardless if it spots threats (there is also interrupt_damage but that's always 0 by default, so you don't need to mess with that)
yeah, i think it might be possible to show on-screen colored text with no voices, it's basically like ElementDebug with subtitle ticked on, but it doesn't run on editor, if i can find the code i'll give it to ya
yeah, team AI is tricky to setup but necessary when fighting against vanilla AI/assault unless you do a scripted assault and also hook PlayerDamage:damage_bullet and re-calculate the damages dealt by enemies ;-;
plus editing it would mean having to open up BLE or the .mission files have to be not saved as binary
There PDTH Enemies on MWS anyway and while i like maps with their own custom faction, i don't mind america faction since it allows for customization
@janitor_guard Ill look into some of these things, especially the Ryan AI, though since i can't for the life of me find that tutorial that shows how to make the map self-updating. I'll either have to make a large update, or make a revamped version, I was unhappy with some parts of the map as parts where rushed and not taken carefully.
If i do make a large update or revamp, ill try fix all these issues and take some of your suggestions. I came back to mapping a year later so I'm not the most caught up. I don't want to ask for help, but if you know anything about mapping, I would appreciate the help.
@_default btw i found a script that can be used for silent dialogues, should be hooked to lib/setups/gamesetup
call it within a ExecuteCode script like so
return function()
managers.npc_dialog_manager:_show_subtitle("[Rose] Was that...Did you just...ARE YOU SERIOUS", Color(255, 0, 0))
end
NPCDialogManager = NPCDialogManager orclass()
NPCDialogManager.FONT_SIZE = 18
NPCDialogManager.MAX_ROWS = 60
function NPCDialogManager:init()
self._workspace = managers.gui_data:create_saferect_workspace()
self._fading_dialog = self._workspace:panel():gui(Idstring("core/guis/core_fading_debug_output"))
self._subtitle_text = nil
self._fading_dialog:set_leftbottom(0, self._workspace:height() / 3)
self._fading_dialog:script().configure({
font_size = self.FONT_SIZE,
max_rows = self.MAX_ROWS
})
managers.viewport:add_resolution_changed_func(callback(self, self, "_update_res_d"))
log("Created a new instance of NPCDialogManager")
end
function NPCDialogManager:_update_res_d()
managers.gui_data:layout_corner_saferect_workspace(self._workspace)
end
function NPCDialogManager:_show_subtitle(text, color)
self._subtitle_text = self._subtitle_text orself._workspace:panel():text({
font_size = 20,
wrap = true,
word_wrap = true,
align = "center",
font = "core/fonts/system_font",
halign = "center",
valign = "center",
text = text,
color = color or Color.white
})
self._subtitle_text:set_w(self._workspace:panel():w() / 2)
self._subtitle_text:set_text(text)
local subtitle_time = math.max(4, utf8.len(text) * 0.04)
local _, _, w, h = self._subtitle_text:text_rect()
self._subtitle_text:set_h(h)
self._subtitle_text:set_center_x(self._workspace:panel():w() / 2)
self._subtitle_text:set_top(self._workspace:panel():h() / 1.4)
self._subtitle_text:set_color(color or Color.white)
self._subtitle_text:set_alpha(1)
self._subtitle_text:stop()
self._subtitle_text:animate(function (o)
_G.wait(subtitle_time)
self._subtitle_text:set_alpha(0)
end)
end
function NPCDialogManager:get_active_subtitle()
returnself._subtitle_text
end
Hooks:PostHook(GameSetup, "init_managers", "TD_InitNPCDialogManager", function(self, managers)
managers.npc_dialog_manager = NPCDialogManager:new()
end)
now idk how you can possibly make an extraction objective on the target while also adding the possibility to eliminate them, since after death the game removes the entity and spawns a client-side corpse, so you'd prob need to do a similar setup how goats work but for a human ragdoll and have the game spawn that over a client-side body when the npc dies
prob not worth the hassle, maybe you can make a copy of the body bag but with different tweak_data like self.person_ryan or something and check that to trigger this
also don't worry about updates, im possibly the only 1% of payday players who actually do occassionally update their maps that don't have autoupdates
46 1028
We Use Cookies 🍪We use cookies to improve your user experience. Will you allow us to store them?
This is cool, i like i can get into the panic room and just have it close on me and sit trough the assaults (tho you still have to complete the task which means opening the panic room door)
Target's AI is bit finicky, tho i assume there is no way to run a scripted behavior and have it take priority while also have the npc shoot at you
Only downside is i can't throw Ryan off the rooftop and get funny response :(
Also i think this goes well with PDTH enemies (since NYPD and all that)
Loud is kinda pain in the ass, due the map being too cramped + vanilla AI isn't designed for solo, i think team ai is forced off for whatever reason (maybe leftover from testing stages)
tho you could have a scripted/fake assault with scripted spawns if going for slow paced combat, but that'd would also require the need to hook player code to slow them down aswell
Thanks for the feedback!
I had issues with Ryan's AI where if he was on the "law" team, he wouldn't run to the panic room, and if i set him to gangster, he shoots and engages his guards. The only way I could make him run to the panic room and not shoot his team, is if i set him to "neutral" though unfortunately that makes him ignore you in stealth.
You can throw Ryan off the building, though because i'm not using custom voice-lines (i'm not a voice actor and I made this heist myself) i'm quite limited by bain's voice lines.
Team AI was disabled on purpose for a couple reasons. the main reason: Entry Point doesn't have team AI. the other reason: I couldn't be bothered figuring out how to make the team AI crouch down in stealth like in Diamond Heist.
Lastly, the assaults ' scripted which is why they are quite tough and unforgiving, especially solo. Making them scripted would be somewhat simple, although I don't know how well that would work
The guards are taken from Diamond Heist / Framing Frame day 3. The SWAT are regular Payday 2 SWAT, since it would take a lot of modding and headaches to get PD:TH enemies.
@_default
i think "law" team can be forced to go to specific locations, as long interrupt_distance is 0 and forced is ticked on, plus if you set it to "run" it will almost always go to scripted destination, and since interupt_distance is 0 he will never abort from it's SO regardless if it spots threats (there is also interrupt_damage but that's always 0 by default, so you don't need to mess with that)
yeah, i think it might be possible to show on-screen colored text with no voices, it's basically like ElementDebug with subtitle ticked on, but it doesn't run on editor, if i can find the code i'll give it to ya
yeah, team AI is tricky to setup but necessary when fighting against vanilla AI/assault unless you do a scripted assault and also hook PlayerDamage:damage_bullet and re-calculate the damages dealt by enemies ;-;
plus editing it would mean having to open up BLE or the .mission files have to be not saved as binary
There PDTH Enemies on MWS anyway and while i like maps with their own custom faction, i don't mind america faction since it allows for customization
@janitor_guard Ill look into some of these things, especially the Ryan AI, though since i can't for the life of me find that tutorial that shows how to make the map self-updating. I'll either have to make a large update, or make a revamped version, I was unhappy with some parts of the map as parts where rushed and not taken carefully.
If i do make a large update or revamp, ill try fix all these issues and take some of your suggestions. I came back to mapping a year later so I'm not the most caught up. I don't want to ask for help, but if you know anything about mapping, I would appreciate the help.
@_default btw i found a script that can be used for silent dialogues, should be hooked to lib/setups/gamesetup
call it within a ExecuteCode script like so
return function()
managers.npc_dialog_manager:_show_subtitle("[Rose] Was that...Did you just...ARE YOU SERIOUS", Color(255, 0, 0))
end
NPCDialogManager = NPCDialogManager or class() NPCDialogManager.FONT_SIZE = 18 NPCDialogManager.MAX_ROWS = 60 function NPCDialogManager:init() self._workspace = managers.gui_data:create_saferect_workspace() self._fading_dialog = self._workspace:panel():gui(Idstring("core/guis/core_fading_debug_output")) self._subtitle_text = nil self._fading_dialog:set_leftbottom(0, self._workspace:height() / 3) self._fading_dialog:script().configure({ font_size = self.FONT_SIZE, max_rows = self.MAX_ROWS }) managers.viewport:add_resolution_changed_func(callback(self, self, "_update_res_d")) log("Created a new instance of NPCDialogManager") end function NPCDialogManager:_update_res_d() managers.gui_data:layout_corner_saferect_workspace(self._workspace) end function NPCDialogManager:_show_subtitle(text, color) self._subtitle_text = self._subtitle_text or self._workspace:panel():text({ font_size = 20, wrap = true, word_wrap = true, align = "center", font = "core/fonts/system_font", halign = "center", valign = "center", text = text, color = color or Color.white }) self._subtitle_text:set_w(self._workspace:panel():w() / 2) self._subtitle_text:set_text(text) local subtitle_time = math.max(4, utf8.len(text) * 0.04) local _, _, w, h = self._subtitle_text:text_rect() self._subtitle_text:set_h(h) self._subtitle_text:set_center_x(self._workspace:panel():w() / 2) self._subtitle_text:set_top(self._workspace:panel():h() / 1.4) self._subtitle_text:set_color(color or Color.white) self._subtitle_text:set_alpha(1) self._subtitle_text:stop() self._subtitle_text:animate(function (o) _G.wait(subtitle_time) self._subtitle_text:set_alpha(0) end) end function NPCDialogManager:get_active_subtitle() return self._subtitle_text end Hooks:PostHook(GameSetup, "init_managers", "TD_InitNPCDialogManager", function(self, managers) managers.npc_dialog_manager = NPCDialogManager:new() end)
now idk how you can possibly make an extraction objective on the target while also adding the possibility to eliminate them, since after death the game removes the entity and spawns a client-side corpse, so you'd prob need to do a similar setup how goats work but for a human ragdoll and have the game spawn that over a client-side body when the npc dies
prob not worth the hassle, maybe you can make a copy of the body bag but with different tweak_data like self.person_ryan or something and check that to trigger this
also don't worry about updates, im possibly the only 1% of payday players who actually do occassionally update their maps that don't have autoupdates