Track LocalMods as part of monolith
This commit is contained in:
322
LocalMods/Neurotrauma/Lua/Scripts/testing.lua
Executable file
322
LocalMods/Neurotrauma/Lua/Scripts/testing.lua
Executable file
@@ -0,0 +1,322 @@
|
||||
-- set the below variable to true to enable debug and testing features
|
||||
NT.TestingEnabled = false
|
||||
|
||||
Hook.Add("chatMessage", "NT.testing", function(msg, client)
|
||||
if msg == "nt test" then -- a glorified suicide button
|
||||
if client.Character == nil then return true end
|
||||
|
||||
HF.SetAfflictionLimb(client.Character, "gate_ta_ra", LimbType.RightArm, 100)
|
||||
HF.SetAfflictionLimb(client.Character, "gate_ta_la", LimbType.LeftArm, 100)
|
||||
HF.SetAfflictionLimb(client.Character, "gate_ta_rl", LimbType.RightLeg, 100)
|
||||
HF.SetAfflictionLimb(client.Character, "gate_ta_ll", LimbType.LeftLeg, 100)
|
||||
|
||||
return true -- hide message
|
||||
elseif msg == "nt unfuck" then -- a command to remove non-sensical stuff
|
||||
if client.Character == nil then return true end
|
||||
|
||||
HF.SetAfflictionLimb(client.Character, "tll_amputation", LimbType.Head, 0)
|
||||
HF.SetAfflictionLimb(client.Character, "trl_amputation", LimbType.Head, 0)
|
||||
HF.SetAfflictionLimb(client.Character, "tla_amputation", LimbType.Head, 0)
|
||||
HF.SetAfflictionLimb(client.Character, "tra_amputation", LimbType.Head, 0)
|
||||
|
||||
HF.SetAfflictionLimb(client.Character, "tll_amputation", LimbType.Torso, 0)
|
||||
HF.SetAfflictionLimb(client.Character, "trl_amputation", LimbType.Torso, 0)
|
||||
HF.SetAfflictionLimb(client.Character, "tla_amputation", LimbType.Torso, 0)
|
||||
HF.SetAfflictionLimb(client.Character, "tra_amputation", LimbType.Torso, 0)
|
||||
|
||||
for key, character in pairs(Character.CharacterList) do
|
||||
if not character.IsDead then
|
||||
if character.IsHuman then
|
||||
HF.AddAffliction(character, "luabotomypurger", 2)
|
||||
if character.TeamID == 1 or character.TeamID == 2 then
|
||||
Timer.Wait(function()
|
||||
HF.SetAffliction(character, "luabotomy", 0.1)
|
||||
end, 4000)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return true -- hide message
|
||||
elseif msg == "nt1" then
|
||||
if not NT.TestingEnabled then return end
|
||||
-- insert testing stuff here
|
||||
|
||||
local test = { val = "true" }
|
||||
|
||||
local function testfunc(param)
|
||||
param.val = "false"
|
||||
end
|
||||
|
||||
print(test.val)
|
||||
testfunc(test)
|
||||
print(test.val)
|
||||
|
||||
return true
|
||||
elseif msg == "nt2" then
|
||||
if not NT.TestingEnabled then return end
|
||||
-- insert other testing stuff here
|
||||
local crewenum = Character.GetFriendlyCrew(client.Character)
|
||||
local targetchar = nil
|
||||
local i = 0
|
||||
for char in crewenum do
|
||||
print(char.Name)
|
||||
targetchar = char
|
||||
i = i + 1
|
||||
if i == 2 then break end
|
||||
end
|
||||
|
||||
client.SetClientCharacter(nil)
|
||||
|
||||
print(targetchar)
|
||||
|
||||
Timer.Wait(function()
|
||||
client.SetClientCharacter(targetchar)
|
||||
end, 50)
|
||||
|
||||
return true
|
||||
end
|
||||
end)
|
||||
|
||||
DebugConsole = LuaUserData.CreateStatic("Barotrauma.DebugConsole")
|
||||
|
||||
local function registerDebugCommands()
|
||||
LuaUserData.MakeMethodAccessible(Descriptors["Barotrauma.DebugConsole"], "GetCharacterNames")
|
||||
LuaUserData.MakeMethodAccessible(Descriptors["Barotrauma.DebugConsole"], "FindMatchingCharacter")
|
||||
|
||||
LuaUserData.MakeFieldAccessible(Descriptors["Barotrauma.CharacterHealth"], "afflictions")
|
||||
LuaUserData.MakeFieldAccessible(Descriptors["Barotrauma.CharacterHealth"], "limbHealths")
|
||||
LuaUserData.MakeMethodAccessible(
|
||||
Descriptors["Barotrauma.CharacterHealth"],
|
||||
"GetVitalityDecreaseWithVitalityMultipliers"
|
||||
)
|
||||
LuaUserData.RegisterType(
|
||||
"System.Collections.Generic.Dictionary`2[[Barotrauma.Affliction],[Barotrauma.CharacterHealth+LimbHealth]]"
|
||||
)
|
||||
LuaUserData.RegisterType(
|
||||
"System.Collections.Generic.KeyValuePair`2[[Barotrauma.Affliction],[Barotrauma.CharacterHealth+LimbHealth]]"
|
||||
)
|
||||
|
||||
local function findCharacter(str)
|
||||
local character = nil
|
||||
if not str or str == "" or str == "/me" then
|
||||
character = Character.Controlled
|
||||
else
|
||||
character = DebugConsole.FindMatchingCharacter({ str })
|
||||
end
|
||||
return character
|
||||
end
|
||||
|
||||
Game.AddCommand(
|
||||
"nt_listafflictions",
|
||||
"nt_listafflictions [character name] [client/server]: Lists all afflictions on a character",
|
||||
function(args)
|
||||
if CLIENT and args[2] == "server" then
|
||||
if Game.IsMultiplayer then
|
||||
if not args[1] or args[1] == "/me" then
|
||||
args[1] = Character.Controlled and Character.Controlled.Name or ""
|
||||
end
|
||||
Game.client.SendConsoleCommand("nt_listafflictions " .. '"' .. args[1] .. '"')
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local target = findCharacter(args[1])
|
||||
if not target then return end
|
||||
|
||||
print(target.Name, " vitality: ", target.Vitality, "/", target.MaxVitality, " Mass: ", target.Mass)
|
||||
local genericafflictions, limbafflictions = {}, {}
|
||||
for kvp in target.CharacterHealth.afflictions do
|
||||
if kvp.Value then
|
||||
if not limbafflictions[kvp.Value] then limbafflictions[kvp.Value] = {} end
|
||||
table.insert(limbafflictions[kvp.Value], kvp.Key)
|
||||
else
|
||||
table.insert(genericafflictions, kvp.Key)
|
||||
end
|
||||
end
|
||||
for limbhealth, afflictions in pairs(limbafflictions) do
|
||||
print(limbhealth.Name or "Unnamed limb")
|
||||
for affliction in afflictions do
|
||||
print(
|
||||
"# ",
|
||||
affliction.Name,
|
||||
" = ",
|
||||
affliction.Strength,
|
||||
" (vitality decrease: ",
|
||||
target.CharacterHealth.GetVitalityDecreaseWithVitalityMultipliers(affliction),
|
||||
")"
|
||||
)
|
||||
end
|
||||
end
|
||||
print("Generic afflictions")
|
||||
for affliction in genericafflictions do
|
||||
print(
|
||||
"# ",
|
||||
affliction.Name,
|
||||
" = ",
|
||||
affliction.Strength,
|
||||
" (vitality decrease: ",
|
||||
affliction.GetVitalityDecrease(target.CharacterHealth),
|
||||
")"
|
||||
)
|
||||
end
|
||||
end,
|
||||
--GetValidArguments
|
||||
function()
|
||||
return { DebugConsole.GetCharacterNames(), { "client", "server" } }
|
||||
end,
|
||||
true
|
||||
)
|
||||
|
||||
Game.AddCommand(
|
||||
"nt_listcreatures",
|
||||
"nt_listcreatures [printafflictionsgeneric/printafflictionsfull]: Lists all non-human creatures currently on the server",
|
||||
function(args)
|
||||
if CLIENT and Game.IsMultiplayer then
|
||||
Game.client.SendConsoleCommand("nt_listcreatures " .. '"' .. args[1] .. '"')
|
||||
return
|
||||
end
|
||||
|
||||
local function printAfflictions(target, args)
|
||||
local genericafflictions, limbafflictions = {}, {}
|
||||
for kvp in target.CharacterHealth.afflictions do
|
||||
if kvp.Value then
|
||||
if not limbafflictions[kvp.Value] then limbafflictions[kvp.Value] = {} end
|
||||
table.insert(limbafflictions[kvp.Value], kvp.Key)
|
||||
else
|
||||
table.insert(genericafflictions, kvp.Key)
|
||||
end
|
||||
end
|
||||
if args[1] == "printafflictionsgeneric" or args[1] == "printafflictionsfull" then
|
||||
print("Generic afflictions")
|
||||
for affliction in genericafflictions do
|
||||
print(
|
||||
"# ",
|
||||
affliction.Name,
|
||||
" = ",
|
||||
affliction.Strength,
|
||||
" (vitality decrease: ",
|
||||
affliction.GetVitalityDecrease(target.CharacterHealth),
|
||||
")"
|
||||
)
|
||||
end
|
||||
end
|
||||
if args[1] == "printafflictionsfull" then
|
||||
print("Limb afflictions")
|
||||
for limbhealth, afflictions in pairs(limbafflictions) do
|
||||
print(limbhealth.Name or "Unnamed limb")
|
||||
for affliction in afflictions do
|
||||
print(
|
||||
"# ",
|
||||
affliction.Name,
|
||||
" = ",
|
||||
affliction.Strength,
|
||||
" (vitality decrease: ",
|
||||
target.CharacterHealth.GetVitalityDecreaseWithVitalityMultipliers(affliction),
|
||||
")"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for key, character in pairs(Character.CharacterList) do
|
||||
if not character.IsHuman then
|
||||
print(
|
||||
character.SpeciesName,
|
||||
" vitality: ",
|
||||
character.Vitality,
|
||||
"/",
|
||||
character.MaxVitality,
|
||||
" Mass: ",
|
||||
character.Mass
|
||||
)
|
||||
if args[1] == "printafflictionsgeneric" or args[1] == "printafflictionsfull" then
|
||||
printAfflictions(character, args)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
--GetValidArguments
|
||||
function()
|
||||
return { { "printafflictionsgeneric", "printafflictionsfull" } }
|
||||
end,
|
||||
true
|
||||
)
|
||||
|
||||
Game.AddCommand(
|
||||
"nt_nugget",
|
||||
"nt_nugget [character name]: Nuggets the character",
|
||||
function(args)
|
||||
if CLIENT and Game.IsMultiplayer then
|
||||
if not args[1] or args[1] == "/me" then
|
||||
args[1] = Character.Controlled and Character.Controlled.Name or ""
|
||||
end
|
||||
Game.client.SendConsoleCommand("nt_nugget " .. '"' .. args[1] .. '"')
|
||||
return
|
||||
end
|
||||
|
||||
local target = findCharacter(args[1])
|
||||
if not target then return end
|
||||
|
||||
HF.SetAfflictionLimb(target, "gate_ta_ra", LimbType.RightArm, 100)
|
||||
HF.SetAfflictionLimb(target, "gate_ta_la", LimbType.LeftArm, 100)
|
||||
HF.SetAfflictionLimb(target, "gate_ta_rl", LimbType.RightLeg, 100)
|
||||
HF.SetAfflictionLimb(target, "gate_ta_ll", LimbType.LeftLeg, 100)
|
||||
end,
|
||||
--GetValidArguments
|
||||
function()
|
||||
return { DebugConsole.GetCharacterNames() }
|
||||
end,
|
||||
true
|
||||
)
|
||||
|
||||
Game.AddCommand(
|
||||
"nt_unnugget",
|
||||
"nt_unnugget [character name]: Unnuggets the character",
|
||||
function(args)
|
||||
if CLIENT and Game.IsMultiplayer then
|
||||
if not args[1] or args[1] == "/me" then
|
||||
args[1] = Character.Controlled and Character.Controlled.Name or ""
|
||||
end
|
||||
Game.client.SendConsoleCommand("nt_unnugget " .. '"' .. args[1] .. '"')
|
||||
return
|
||||
end
|
||||
|
||||
local target = findCharacter(args[1])
|
||||
if not target then return end
|
||||
|
||||
HF.SetAfflictionLimb(target, "tll_amputation", LimbType.Head, 0)
|
||||
HF.SetAfflictionLimb(target, "trl_amputation", LimbType.Head, 0)
|
||||
HF.SetAfflictionLimb(target, "tla_amputation", LimbType.Head, 0)
|
||||
HF.SetAfflictionLimb(target, "tra_amputation", LimbType.Head, 0)
|
||||
|
||||
HF.SetAfflictionLimb(target, "tll_amputation", LimbType.Torso, 0)
|
||||
HF.SetAfflictionLimb(target, "trl_amputation", LimbType.Torso, 0)
|
||||
HF.SetAfflictionLimb(target, "tla_amputation", LimbType.Torso, 0)
|
||||
HF.SetAfflictionLimb(target, "tra_amputation", LimbType.Torso, 0)
|
||||
end,
|
||||
--GetValidArguments
|
||||
function()
|
||||
return { DebugConsole.GetCharacterNames() }
|
||||
end,
|
||||
true
|
||||
)
|
||||
end
|
||||
|
||||
Game.AddCommand("nt_debug", "nt_debug : Enables debug neurotrauma commands", function()
|
||||
if not NT.TestingEnabled then
|
||||
print("neurotrauma debug enabled")
|
||||
registerDebugCommands()
|
||||
NT.TestingEnabled = true
|
||||
|
||||
local msg = Networking.Start("NT_debug")
|
||||
Networking.Send(msg)
|
||||
end
|
||||
end, nil, true)
|
||||
|
||||
if CLIENT and Game.IsMultiplayer then Networking.Receive("NT_debug", function(msg)
|
||||
registerDebugCommands()
|
||||
end) end
|
||||
|
||||
if NT.TestingEnabled then registerDebugCommands() end
|
||||
Reference in New Issue
Block a user