Banner
Entry Point - The Financier
Thumbnail
Downloads136
Views774
Publish Date4 weeks ago
Last Updated4 weeks ago by
Version1.1
Members
Avatar

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

Avatar

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.

Avatar

@_default

  1. 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)

  2. 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

  3. 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

  4. 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

Avatar

@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.

Avatar

@_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

35 1054