allow some degree of control over human bots

This commit is contained in:
Evil Factory
2021-12-04 13:15:04 -03:00
parent fe563a417c
commit 4ea4e4e0bd
3 changed files with 69 additions and 0 deletions

View File

@@ -61,6 +61,35 @@ defaultLib["Entity"] = CreateStatic("Entity")
defaultLib["Physics"] = CreateStatic("Physics")
defaultLib["FireSource"] = CreateStatic("FireSource")
defaultLib["AIObjective"] = CreateStatic("AIObjective")
defaultLib["AIObjectiveChargeBatteries"] = CreateStatic("AIObjectiveChargeBatteries")
defaultLib["AIObjectiveCleanupItem"] = CreateStatic("AIObjectiveCleanupItem")
defaultLib["AIObjectiveCleanupItems"] = CreateStatic("AIObjectiveCleanupItems")
defaultLib["AIObjectiveCombat"] = CreateStatic("AIObjectiveCombat")
defaultLib["AIObjectiveContainItem"] = CreateStatic("AIObjectiveContainItem")
defaultLib["AIObjectiveDecontainItem"] = CreateStatic("AIObjectiveDecontainItem")
defaultLib["AIObjectiveEscapeHandcuffs"] = CreateStatic("AIObjectiveEscapeHandcuffs")
defaultLib["AIObjectiveExtinguishFire"] = CreateStatic("AIObjectiveExtinguishFire")
defaultLib["AIObjectiveExtinguishFires"] = CreateStatic("AIObjectiveExtinguishFires")
defaultLib["AIObjectiveFightIntruders"] = CreateStatic("AIObjectiveFightIntruders")
defaultLib["AIObjectiveFindDivingGear"] = CreateStatic("AIObjectiveFindDivingGear")
defaultLib["AIObjectiveFindSafety"] = CreateStatic("AIObjectiveFindSafety")
defaultLib["AIObjectiveFixLeak"] = CreateStatic("AIObjectiveFixLeak")
defaultLib["AIObjectiveFixLeaks"] = CreateStatic("AIObjectiveFixLeaks")
defaultLib["AIObjectiveGetItem"] = CreateStatic("AIObjectiveGetItem")
defaultLib["AIObjectiveGoTo"] = CreateStatic("AIObjectiveGoTo")
defaultLib["AIObjectiveIdle"] = CreateStatic("AIObjectiveIdle")
defaultLib["AIObjectiveOperateItem"] = CreateStatic("AIObjectiveOperateItem")
defaultLib["AIObjectiveOperateItem"] = CreateStatic("AIObjectiveOperateItem")
defaultLib["AIObjectivePumpWater"] = CreateStatic("AIObjectivePumpWater")
defaultLib["AIObjectiveRepairItem"] = CreateStatic("AIObjectiveRepairItem")
defaultLib["AIObjectiveRepairItems"] = CreateStatic("AIObjectiveRepairItems")
defaultLib["AIObjectiveRescue"] = CreateStatic("AIObjectiveRescue")
defaultLib["AIObjectiveRescueAll"] = CreateStatic("AIObjectiveRescueAll")
defaultLib["AIObjectiveReturn"] = CreateStatic("AIObjectiveReturn")
defaultLib["CombatMode"] = CreateStatic("AIObjectiveCombat+CombatMode")
if SERVER then
elseif CLIENT then

View File

@@ -115,6 +115,37 @@ RegisterBarotrauma("HumanAIController")
RegisterBarotrauma("AICharacter")
RegisterBarotrauma("AITarget")
RegisterBarotrauma("AITargetMemory")
RegisterBarotrauma("AIChatMessage")
RegisterBarotrauma("AIObjectiveManager")
RegisterBarotrauma("AITrigger")
AddCallMetaMember(RegisterBarotrauma("AIObjective"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveChargeBatteries"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveCleanupItem"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveCleanupItems"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveCombat"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveContainItem"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveDecontainItem"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveEscapeHandcuffs"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveExtinguishFire"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveExtinguishFires"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveFightIntruders"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveFindDivingGear"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveFindSafety"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveFixLeak"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveFixLeaks"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveGetItem"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveGoTo"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveIdle"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveOperateItem"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveOperateItem"))
AddCallMetaMember(RegisterBarotrauma("AIObjectivePumpWater"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveRepairItem"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveRepairItems"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveRescue"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveRescueAll"))
AddCallMetaMember(RegisterBarotrauma("AIObjectiveReturn"))
RegisterBarotrauma("AIObjectiveCombat+CombatMode")
RegisterBarotrauma("TalentPrefab")
RegisterBarotrauma("TalentOption")

View File

@@ -63,8 +63,17 @@ namespace Barotrauma
CreateAutonomousObjectives();
}
public void AddObjective(AIObjective objective)
{
AddObjective<AIObjective>(objective);
}
public void AddObjective<T>(T objective) where T : AIObjective
{
var result = new LuaResult(GameMain.Lua.hook.Call("AI.AddObjective", this, objective));
if (result.Bool()) return;
if (objective == null)
{
#if DEBUG