Track LocalMods as part of monolith
This commit is contained in:
+98
@@ -0,0 +1,98 @@
|
||||
LuaUserData.MakeMethodAccessible(Descriptors["Barotrauma.HumanAIController"], "SpeakAboutIssues")
|
||||
|
||||
-- hopefully this stops bots from doing any rescuing at all.
|
||||
-- and also hopefully my assumption that this very specific thing
|
||||
-- about bots is what is causing them to eat frames is correct.
|
||||
|
||||
if NTConfig.Get("NT_disableBotAlgorithms", true) then
|
||||
Hook.Patch("Barotrauma.AIObjectiveRescueAll", "IsValidTarget", {
|
||||
"Barotrauma.Character",
|
||||
"Barotrauma.Character",
|
||||
"out System.Boolean",
|
||||
}, function(instance, ptable)
|
||||
-- TODO: some bot behavior
|
||||
-- make it hostile act if:
|
||||
-- surgery without corresponding ailments
|
||||
-- treatment without ailments
|
||||
|
||||
-- basic self treatments:
|
||||
-- find items to treat each other for blood loss or bleeding or suturable damage or fractures and dislocations
|
||||
-- ^ would possibly need items to have proper suitable treatments too, and yk bots dont spawn with enough meds...
|
||||
|
||||
ptable.PreventExecution = true
|
||||
return false
|
||||
end, Hook.HookMethodType.Before)
|
||||
end
|
||||
|
||||
local afflictions = {
|
||||
"n_fracture", -- urgent perceivable afflictions
|
||||
"h_arterialcut",
|
||||
"ll_arterialcut",
|
||||
"rl_arterialcut",
|
||||
"ra_arterialcut",
|
||||
"la_arterialcut",
|
||||
"sym_hematemesis", -- urgent causes
|
||||
"sym_paleskin",
|
||||
"sym_confusion",
|
||||
"sym_lightheadedness",
|
||||
"pain_abdominal",
|
||||
"inflammation",
|
||||
"gangrene",
|
||||
"fever",
|
||||
"sym_headache",
|
||||
"sym_blurredvision",
|
||||
"t_fracture", -- not urgent afflictions
|
||||
"h_fracture",
|
||||
"ra_fracture",
|
||||
"la_fracture",
|
||||
"rl_fracture",
|
||||
"ll_fracture",
|
||||
"dislocation1",
|
||||
"dislocation2",
|
||||
"dislocation3",
|
||||
"dislocation4",
|
||||
"pain_chest", -- not urgent causes
|
||||
"sym_weakness",
|
||||
"sym_sweating",
|
||||
"dyspnea",
|
||||
"sym_bloating",
|
||||
"sym_legswelling",
|
||||
"sym_craving",
|
||||
"sym_palpitations",
|
||||
}
|
||||
NT.SymsForNPC = { ntaffs = afflictions }
|
||||
|
||||
-- How to add own symptoms example:
|
||||
--local goobertable = { "goober", "gooberer" }
|
||||
--table.insert(NT.SymsForNPC, goobertable)
|
||||
|
||||
-- allows npcs to talk about their neuro afflictions
|
||||
|
||||
Hook.Patch("Barotrauma.HumanAIController", "SpeakAboutIssues", function(instance)
|
||||
local character = instance.Character
|
||||
|
||||
if not HF.HasAffliction(character, "luabotomy", 1) then return end
|
||||
|
||||
local message = ""
|
||||
local chatType = ChatMessageType.Default
|
||||
|
||||
if ChatMessage.CanUseRadio(character) then chatType = ChatMessageType.Radio end
|
||||
|
||||
for identifier in NT.SymsForNPC.ntaffs do
|
||||
if HF.HasAffliction(character, identifier, 1) then
|
||||
message = TextManager.Get("npcdialogsym." .. identifier)
|
||||
character.Speak(message, chatType, math.random(0, 5), Identifier(identifier .. "DialogSym"), 600.0)
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
for table in NT.SymsForNPC do
|
||||
for identifier in table do
|
||||
if HF.HasAffliction(character, identifier, 1) then
|
||||
message = TextManager.Get("npcdialogsym." .. identifier)
|
||||
character.Speak(message, chatType, math.random(0, 5), Identifier(identifier .. "DialogSym"), 600.0)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end, Hook.HookMethodType.After)
|
||||
Reference in New Issue
Block a user