init project ep

This commit is contained in:
2026-06-08 16:17:11 +03:00
commit 09c2ae238e
515 changed files with 20648 additions and 0 deletions

BIN
0Harmony.dll Executable file

Binary file not shown.

BIN
BarotraumaCore.dll Normal file

Binary file not shown.

BIN
BarotraumaCore.pdb Normal file

Binary file not shown.

Binary file not shown.

BIN
Concentus.NetStandard.dll Normal file

Binary file not shown.

BIN
Concentus.NetStandard.pdb Normal file

Binary file not shown.

30
Concentus_LICENSE Normal file
View File

@@ -0,0 +1,30 @@
Copyright (c) by various holding parties, including (but not limited to):
Skype Limited, Xiph.Org Foundation, CSIRO, Microsoft Corporation,
Jean-Marc Valin, Gregory Maxwell, Mark Borgerding, Timothy B. Terriberry,
Logan Stromberg. All rights are reserved by their respective holders.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of Internet Society, IETF or IETF Trust, nor the
names of specific contributors, may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

86
Data/campaignsettings.xml Normal file
View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<CampaignSettingPresets>
<CampaignSettingDefinitions>
<StartingBalanceAmount high="10000" medium="8500" low="6000" />
<ExtraEventManagerDifficulty low="-15.0" medium="0.0" high="20.0" hellish="60.0" />
<LevelDifficultyMultiplier low="0.6" medium="1.0" high="1.6" hellish="10.0" />
<PatdownProbabilityMin off="0" low="0.2" medium="0.3" high="0.4" />
<PatdownProbabilityMax off="0" low="0.9" medium="0.9" high="1.0" />
</CampaignSettingDefinitions>
<CampaignSettings
presetname="Easy"
TutorialEnabled="true"
RadiationEnabled="false"
StartingBalanceAmount="high"
StartItemSet="easy"
MaxMissionCount="2"
WorldHostility="low"
CrewVitalityMultiplier="1.1"
NonCrewVitalityMultiplier="1.0"
OxygenMultiplier="1.2"
FuelMultiplier="1.2"
MissionRewardMultiplier="1.0"
ExperienceRewardMultiplier="1.0"
ShopPriceMultiplier="0.9"
ShipyardPriceMultiplier="0.9"
RepairFailMultiplier="1.0"
PatdownProbability="low"
ShowHuskWarning="true"/>
<CampaignSettings
presetname="Normal"
TutorialEnabled="true"
RadiationEnabled="false"
StartingBalanceAmount="medium"
StartItemSet="normal"
MaxMissionCount="2"
WorldHostility="medium"
CrewVitalityMultiplier="1.0"
NonCrewVitalityMultiplier="1.0"
OxygenMultiplier="1.0"
FuelMultiplier="1.0"
MissionRewardMultiplier="1.0"
ExperienceRewardMultiplier="1.0"
ShopPriceMultiplier="1.0"
ShipyardPriceMultiplier="1.0"
RepairFailMultiplier="1.0"
PatdownProbability="medium"
ShowHuskWarning="true"/>
<CampaignSettings
presetname="Hard"
TutorialEnabled="false"
RadiationEnabled="false"
StartingBalanceAmount="low"
StartItemSet="hard"
MaxMissionCount="2"
WorldHostility="high"
CrewVitalityMultiplier="1.0"
NonCrewVitalityMultiplier="1.0"
OxygenMultiplier="0.7"
FuelMultiplier="0.9"
MissionRewardMultiplier="1.0"
ExperienceRewardMultiplier="1.0"
ShopPriceMultiplier="1.5"
ShipyardPriceMultiplier="1.5"
RepairFailMultiplier="2.0"
PatdownProbability="high"
ShowHuskWarning="false"/>
<CampaignSettings
presetname="Abyssal"
TutorialEnabled="false"
RadiationEnabled="false"
StartingBalanceAmount="low"
StartItemSet="hard"
MaxMissionCount="2"
WorldHostility="high"
CrewVitalityMultiplier="0.9"
NonCrewVitalityMultiplier="1.1"
OxygenMultiplier="0.4"
FuelMultiplier="0.8"
MissionRewardMultiplier="0.8"
ExperienceRewardMultiplier="0.8"
ShopPriceMultiplier="2.0"
ShipyardPriceMultiplier="2.0"
RepairFailMultiplier="5.0"
PatdownProbability="high"
ShowHuskWarning="false"/>
</CampaignSettingPresets>

427
Data/forbiddenwordlist.txt Normal file
View File

@@ -0,0 +1,427 @@
4r5e
5h1t
5hit
Dumbcunt
a$$
a$$hole
a2m
a54
a55
a55hole
a_s_s
adolf
ahole
anal
anus
anuses
arrse
arse
ass
asses
asshat
asshole
assshole
b!tch
b17ch
b1tch
ballsack
beatch
bitch
bitchass
bitched
bitcher
bitchers
bitches
bitches
bitching
bitchy
blowjob
blowjobs
bulldyke
bullshit
bullshits
bullshitted
bullturds
bung
bunghole
buttfucker
butthole
buttmuch
buttmunch
c-0-c-k
c.0.c.k
c.o.c.k.
c.u.n.t
c0ck
carpetmuncher
chinc
chincs
chink
chinky
clitoris
cock
cock sucker
cock-sucker
cocks
cocksucker
cocksuckers
cocksucking
cocksucks
coochie
coochy
coon
coonnass
coons
cracker
crackwhore
crap
cumbubble
cumdump
cumdump
cumdumpster
cumguzzler
cumjockey
cummer
cummin
cumming
cums
cumshot
cumshots
cumslut
cumstain
cumtart
cunilingus
cunillingus
cunnie
cunnilingus
cunny
cunt
cuntass
cuntbag
cuntbag
cuntface
cunthole
cunthunter
cuntlick
cuntlick
cuntlicker
cuntlicker
cuntlicking
cuntlicking
cuntrag
cunts
cunts
cuntsicle
cuntsicle
cuntslut
d0uch3
d0uche
d1ck
d1ld0
d1ldo
deepthroat
dick
dick-ish
dick-sneeze
dickbag
dickbeaters
dickdipper
dickface
dickflipper
dickfuck
dickfucker
dickhead
dickheads
dickhole
dickish
dickjuice
dickmilk
dickmonger
dickripper
dicks
dicks
dicksipper
dickslap
dicksucker
dicksucking
dicktickler
dickwad
dickweasel
dickweed
dickwhipper
dickwod
dickzipper
diddle
dike
dildo
dildos
douche
douchebag
dumbass
dumbasses
dumbfuck
dumbshit
dyke
dykes
ejaculate
ejaculated
ejaculates
ejaculates
ejaculating
ejaculating
ejaculatings
ejaculation
ejakulate
erect
f u c k
f u c k e r
f.u.c.k
f4nny
f_u_c_k
fag
fagbag
fagfucker
fagg
fagged
fagging
faggit
faggitt
faggot
faggot*
faggotcock
faggots
faggots
faggs
fagot
fagots
fags
fagtard
fatass
fcuk
fcuker
fcuking
feck
fecker
fistfuck
fistfucked
fistfucked
fistfucker
fistfucker
fistfuckers
fistfuckers
fistfucking
fistfucking
fistfuckings
fistfuckings
fistfucks
fistfucks
fuck
fuck-ass
fuck ass
fuck-bitch
fuck bitch
fucktard
fuck tard
fucka
fuckass
fuckbag
fuckboy
fuckbrain
fuckbutt
fuckbutter
fucked
fuckedup
fucker
fuckers
fuckersucker
fuckface
fuckhead
fuckheads
fuckhole
fuckin
fucking
fuckings
fuckingshitmotherfucker
fuckme
fuckme
fuckmeat
fucknugget
fucknut
fucknutt
fuckoff
fucks
fuckstick
fucktard
fucktards
fucktart
fucktoy
fucktoy
fucktwat
fuckup
fuckwad
fuckwhit
fuckwit
fuckwitt
gay
gayass
gaybob
gaydo
gayfuck
gayfuckist
gaylord
gays
god-dam
god-damned
godamn
godamnit
goddam
goddammit
goddamn
goddamned
goddamnit
godsdamn
hitler
homo
homodumbshit
homoerotic
homoey
homos
honkey
honky
jack-off
jackass
jackass
jackasses
jackasses
jackhole
jackhole
jackoff
jackoff
jaggi
jagoff
jailbait
jailbait
jap
japs
jerk
jerk-off
jerkoff
jerk off
jerk0ff
jerkass
jerked
jerkoff
jew
jews
jism
jiz
jiz
jizm
jizm
jizz
jizzed
kike
kikes
knob
kum
kummer
kumming
kums
lesbian
lesbians
lesbo
lesbos
lez
lezzie
master-bate
master-bate
masterbat*
masterbat3
masterbate
masterbating
masterbation
masterbations
masturbate
masturbating
masturbation
mothafuck
mothafucka
mothafuckas
mothafuckaz
mothafucked
mothafucked
mothafucker
mothafuckers
mothafuckin
mothafucking
mothafuckings
mothafucks
motherfuck
motherfucka
motherfucked
motherfucker
motherfucker
motherfuckers
motherfuckin
motherfucking
motherfuckings
motherfuckka
motherfucks
mudslime*
mudslimes*
nazi
nazis
nig
nig-nog
nigg3r
nigg4h
nigga
nigga
niggah
niggas
niggas
niggaz
nigger
nigger
niggers
niggle
niglet
negroid
negroids
penis
pigfucker
piss
piss-off
pissed
pisser
pissers
pisses
pisses
pissflaps
pissin
pissin
pissing
pissoff
pissoff
pussies
pussy
queaf
queaf
queef
queer
queers
rape
raped
raper
rapey
raping
rapist
slut
sluts
twat
twats
vagina
vaginas
white power
whore
whores

90
Data/karmasettings.xml Normal file
View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<KarmaManager>
<Preset
name="Default"
karmadecay="0.08"
karmadecaythreshold="50"
karmaincrease="0.05"
karmaincreasethreshold="50"
structurerepairkarmaincrease="0.005"
structuredamagekarmadecrease="0.025"
itemrepairkarmaincrease="0.03"
reactoroverheatkarmadecrease="0.5"
reactormeltdownkarmadecrease="30"
damageenemykarmaincrease="0.1"
damagefriendlykarmadecrease="0.15"
extinguishfirekarmaincrease="1"
allowedwiredisconnectionsperminute="5"
wiredisconnectionkarmadecrease="6.0"
steersubkarmaincrease="0.15"
spamfilterkarmadecrease="15"
herpesthreshold="40"
kickbanthreshold="0"
kicksbeforeban="3"
karmanotificationinterval="15"
resetkarmabetweenrounds="true"
dangerousitemstealkarmadecrease="15"
dangerousitemstealbots="false"
ballastflorakarmaincrease="0.05"
dangerousitemcontainkarmadecrease="5.0"
isdangerousitemcontainkarmadecreaseincremental="true"
maxdangerousitemcontainkarmadecrease="30" />
<Preset
name="Strict"
karmadecay="0.08"
karmadecaythreshold="50"
karmaincrease="0.04"
karmaincreasethreshold="45"
structurerepairkarmaincrease="0.005"
structuredamagekarmadecrease="0.1"
itemrepairkarmaincrease="0.03"
reactoroverheatkarmadecrease="1.0"
reactormeltdownkarmadecrease="35"
damageenemykarmaincrease="0.1"
damagefriendlykarmadecrease="0.3"
extinguishfirekarmaincrease="1"
allowedwiredisconnectionsperminute="3"
wiredisconnectionkarmadecrease="10.0"
steersubkarmaincrease="0.15"
spamfilterkarmadecrease="25"
herpesthreshold="40"
kickbanthreshold="1"
kicksbeforeban="1"
karmanotificationinterval="15"
resetkarmabetweenrounds="true"
dangerousitemstealkarmadecrease="15"
dangerousitemstealbots="true"
ballastflorakarmaincrease="0.03"
dangerousitemcontainkarmadecrease="5.0"
isdangerousitemcontainkarmadecreaseincremental="true"
maxdangerousitemcontainkarmadecrease="30" />
<Preset
name="Custom"
karmadecay="0.08"
karmadecaythreshold="50"
karmaincrease="0.05"
karmaincreasethreshold="50"
structurerepairkarmaincrease="0.01"
structuredamagekarmadecrease="0.05"
itemrepairkarmaincrease="0.03"
reactoroverheatkarmadecrease="0.5"
reactormeltdownkarmadecrease="30"
damageenemykarmaincrease="0.1"
damagefriendlykarmadecrease="0.15"
extinguishfirekarmaincrease="1"
allowedwiredisconnectionsperminute="5"
wiredisconnectionkarmadecrease="6.0"
steersubkarmaincrease="0.15"
spamfilterkarmadecrease="15"
herpesthreshold="40"
kickbanthreshold="1"
kicksbeforeban="3"
karmanotificationinterval="15"
resetkarmabetweenrounds="true"
dangerousitemstealkarmadecrease="15"
dangerousitemstealbots="false"
ballastflorakarmaincrease="0.05"
dangerousitemcontainkarmadecrease="5.0"
isdangerousitemcontainkarmadecreaseincremental="true"
maxdangerousitemcontainkarmadecrease="30" />
</KarmaManager>

22
Data/languageoptions.xml Normal file
View File

@@ -0,0 +1,22 @@
<options>
<option label="Português brasileiro" identifier="Brazilian Portuguese" />
<option label="中文" identifier="Chinese" mapsFrom="Simplified Chinese, Traditional Chinese" />
<option label="Čeština" identifier="Czech" />
<option label="Dansk" identifier="Danish" />
<option label="Nederlands" identifier="Dutch" />
<option label="English" identifier="English" />
<option label="Suomi" identifier="Finnish" />
<option label="Français" identifier="French" />
<option label="Deutsch" identifier="German" />
<option label="Italiano" identifier="Italian" />
<option label="日本語" identifier="Japanese" />
<option label="한국어" identifier="Korean" />
<option label="Norska" identifier="Norwegian" />
<option label="Polski" identifier="Polish" />
<option label="Português europeu" identifier="European Portuguese" />
<option label="Русский" identifier="Russian" />
<option label="Español" identifier="Spanish" mapsFrom="Castilian Spanish, Latinamerican Spanish" />
<option label="Svenska" identifier="Swedish" />
<option label="Türkçe" identifier="Turkish" />
<option label="Украї́нська" identifier="Ukrainian" />
</options>

103
Data/permissionpresets.xml Normal file
View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- NOTE: these are the default permission presets used by the game, and this file may get overwritten when game updates are released -->
<!-- If you want to add custom permission presets, please use the file permissionpresets_player.xml -->
<PermissionPresets>
<Preset
name="None"
description="No special privileges."
permissions="None"/>
<Preset
name="Moderator"
description="Allowed to manage round settings, kick players and access server logs."
permissions="ManageRound,Kick,SelectSub,SelectMode,ManageCampaign,ConsoleCommands,ServerLog,ManageSettings,ManageMoney,ManageBotTalents,SpamImmunity">
<Command name="clientlist"/>
<Command name="readycheck"/>
<Command name="autorestart"/>
<Command name="autorestartinterval"/>
<Command name="autorestarttimer"/>
<Command name="botcount"/>
<Command name="botspawnmode"/>
<Command name="gamemode"/>
<Command name="sub"/>
<Command name="shuttle"/>
<Command name="water"/>
<Command name="fire"/>
<Command name="difficulty"/>
<Command name="kick"/>
<Command name="kickid"/>
<Command name="campaigninfo"/>
<Command name="campaigndestination"/>
<Command name="togglekarma"/>
<Command name="setkarma"/>
<Command name="resetkarma"/>
<Command name="showkarma"/>
<Command name="togglekarmatestmode"/>
<Command name="respawnnow"/>
<Command name="traitorlist"/>
<Command name="setsalary"/>
</Preset>
<Preset
name="Admin"
description="Allowed to ban and kick players, manage round settings, access server logs and use nearly all console commands."
permissions="All">
<Command name="clientlist"/>
<Command name="readycheck"/>
<Command name="autorestart"/>
<Command name="autorestartinterval"/>
<Command name="autorestarttimer"/>
<Command name="botcount"/>
<Command name="botspawnmode"/>
<Command name="difficulty"/>
<Command name="kick"/>
<Command name="kickid"/>
<Command name="campaigninfo"/>
<Command name="campaigndestination"/>
<Command name="servermsg"/>
<Command name="showperm"/>
<Command name="spawn"/>
<Command name="spawnitem"/>
<Command name="give"/>
<Command name="disablecrewai"/>
<Command name="gamemode"/>
<Command name="sub"/>
<Command name="shuttle"/>
<Command name="enablecrewai"/>
<Command name="ban"/>
<Command name="banid"/>
<Command name="banip"/>
<Command name="unban"/>
<Command name="unbanaddress"/>
<Command name="teleportcharacter"/>
<Command name="mute"/>
<Command name="unmute"/>
<Command name="godmode"/>
<Command name="godmode_mainsub"/>
<Command name="lock"/>
<Command name="lockx"/>
<Command name="locky"/>
<Command name="water"/>
<Command name="fire"/>
<Command name="heal"/>
<Command name="giveaffliction"/>
<Command name="revive"/>
<Command name="freeze"/>
<Command name="freecam"/>
<Command name="explosion"/>
<Command name="fixitems"/>
<Command name="fixhulls"/>
<Command name="power"/>
<Command name="oxygen"/>
<Command name="setclientcharacter"/>
<Command name="togglekarma"/>
<Command name="setkarma"/>
<Command name="resetkarma"/>
<Command name="showkarma"/>
<Command name="togglekarmatestmode"/>
<Command name="togglecampaignteleport"/>
<Command name="respawnnow"/>
<Command name="traitorlist"/>
<Command name="setsalary"/>
</Preset>
</PermissionPresets>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Custom permission presets, feel free to modify this file to add your own custom presets. -->
<PermissionPresets>
<!--
<Preset
name="Example"
description="Allowed to do e.g. manage round settings, kick players and access server logs."
permissions="ManageRound,Kick,SelectSub,SelectMode,ManageCampaign,ConsoleCommands,ServerLog,ManageSettings,ManageMoney,ManageBotTalents,SpamImmunity">
<Command name="clientlist"/>
<Command name="readycheck"/>
<Command name="autorestart"/>
<Command name="autorestartinterval"/>
<Command name="autorestarttimer"/>
<Command name="botcount"/>
<Command name="botspawnmode"/>
<Command name="gamemode"/>
<Command name="sub"/>
<Command name="shuttle"/>
<Command name="water"/>
<Command name="fire"/>
<Command name="difficulty"/>
<Command name="kick"/>
<Command name="kickid"/>
<Command name="campaigninfo"/>
<Command name="campaigndestination"/>
<Command name="togglekarma"/>
<Command name="setkarma"/>
<Command name="resetkarma"/>
<Command name="showkarma"/>
<Command name="togglekarmatestmode"/>
<Command name="respawnnow"/>
<Command name="traitorlist"/>
<Command name="setsalary"/>
</Preset>
-->
</PermissionPresets>

BIN
DedicatedServer Executable file

Binary file not shown.

1281
DedicatedServer.deps.json Normal file

File diff suppressed because it is too large Load Diff

BIN
DedicatedServer.dll Normal file

Binary file not shown.

2
DedicatedServer.exe Normal file
View File

@@ -0,0 +1,2 @@
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/linux64"
./DedicatedServer

BIN
DedicatedServer.pdb Normal file

Binary file not shown.

View File

@@ -0,0 +1,17 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"includedFrameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.Globalization.Invariant": true,
"System.Globalization.PredefinedCulturesOnly": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

BIN
EosInterface.dll Normal file

Binary file not shown.

BIN
EosInterface.pdb Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

BIN
Farseer.NetStandard.dll Normal file

Binary file not shown.

BIN
Farseer.NetStandard.pdb Normal file

Binary file not shown.

BIN
FluentResults.dll Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

BIN
Lidgren.NetStandard.dll Normal file

Binary file not shown.

BIN
Lidgren.NetStandard.pdb Normal file

Binary file not shown.

BIN
LightInject.dll Executable file

Binary file not shown.

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<Settings>
<Setting Name="HideUserNamesInLogs" Type="bool" Value="true"/>
<Setting Name="CsRunPolicy" Type="listString" Value="Prompt" AllowChangesWhileExecuting="false">
<Values>
<Value Value="Disabled"/>
<Value Value="Prompt"/>
<Value Value="Enabled"/>
</Values>
</Setting>
<Setting Name="UseCaching" Type="bool" Value="true" AllowChangesWhileExecuting="false"/>
<Setting Name="IsCsEnabledForSession" Type="bool" AllowChangesWhileExecuting="false" ShowInMenus="false" Value="false"/>
</Settings>
</Configuration>

View File

@@ -0,0 +1,81 @@
-- Contains things to be removed later, they exist only for compatibility reasons.
local compatibilityLib = {}
-- local networking = LuaUserData.RegisterType("Barotrauma.LuaCsNetworking")
-- LuaUserData.AddMethod(networking, "RequestGetHTTP", Networking.HttpGet)
-- LuaUserData.AddMethod(networking, "RequestPostHTTP", Networking.HttpPost)
compatibilityLib.CreateVector2 = Vector2.__new
compatibilityLib.CreateVector3 = Vector3.__new
compatibilityLib.CreateVector4 = Vector4.__new
local luaRandom = {}
luaRandom.Range = function (min, max)
return math.random(min, max - 1)
end
luaRandom.RangeFloat = function (min, max)
return math.random() + math.random(min, max)
end
compatibilityLib["Random"] = luaRandom
local luaPlayer = {}
luaPlayer.GetAllCharacters = function ()
return Character.CharacterList
end
luaPlayer.GetAllClients = function ()
return Client.ClientList
end
luaPlayer.SetClientCharacter = function (client, character)
client.SetClientCharacter(character)
end
luaPlayer.SetCharacterTeam = function (character, team)
character.TeamID = team
end
luaPlayer.SetClientTeam = function (client, team)
client.TeamID = team
end
luaPlayer.Kick = function (client, reason)
client.Kick(reason)
end
luaPlayer.Ban = function (client, reason, range, seconds)
client.Ban(reason, range, seconds)
end
luaPlayer.UnbanPlayer = function (player, endpoint)
Client.Unban(player, endpoint)
end
luaPlayer.SetSpectatorPos = function ()
end
luaPlayer.SetRadioRange = function (character, range)
if (character.Inventory == nil) then return end
for item in character.Inventory.AllItems do
if item ~= nil and item.Prefab.Identifier == "headset" then
item.GetComponentString("WifiComponent").Range = range;
end
end
end
luaPlayer.CheckPermission = function (client, permissions)
return client.CheckPermission(permissions)
end
compatibilityLib["Player"] = luaPlayer
return compatibilityLib

View File

@@ -0,0 +1,68 @@
Hook.Patch("Barotrauma.Item", "TryInteract",
{
"Barotrauma.Character",
"System.Boolean",
"System.Boolean",
"System.Boolean"
},
function(instance, p)
if Hook.Call("item.interact", instance, p["user"], p["ignoreRequiredItems"], p["forceSelectKey"], p["forceUseKey"]) == true then
p.PreventExecution = true
return false
end
end, Hook.HookMethodType.Before)
Hook.Patch("Barotrauma.Item", "ApplyTreatment",
{
"Barotrauma.Character",
"Barotrauma.Character",
"Barotrauma.Limb"
},
function(instance, p)
if Hook.Call("item.applyTreatment", instance, p["user"], p["character"], p["targetLimb"]) then
p.PreventExecution = true
return false
end
end, Hook.HookMethodType.Before)
Hook.Patch("Barotrauma.Item", "Combine",
{
"Barotrauma.Item",
"Barotrauma.Character"
},
function(instance, p)
if Hook.Call("item.combine", instance, p["item"], p["user"]) == true then
p.PreventExecution = true
return false
end
end, Hook.HookMethodType.Before)
Hook.Patch("Barotrauma.Item", "Drop",
function(instance, p)
if Hook.Call("item.drop", instance, p["dropper"]) == true then
p.PreventExecution = true
return false
end
end, Hook.HookMethodType.Before)
Hook.Patch("Barotrauma.Item", "Equip",
{
"Barotrauma.Character"
},
function(instance, p)
if Hook.Call("item.equip", instance, p["character"]) == true then
p.PreventExecution = true
return false
end
end, Hook.HookMethodType.Before)
Hook.Patch("Barotrauma.Item", "Unequip",
{
"Barotrauma.Character"
},
function(instance, p)
if Hook.Call("item.unequip", instance, p["character"]) == true then
p.PreventExecution = true
return false
end
end, Hook.HookMethodType.Before)

View File

@@ -0,0 +1,90 @@
local defaultLib = {}
local CreateStatic = LuaUserData.CreateStatic
local CreateEnum = LuaUserData.CreateEnumTable
local AddCallMetaTable = LuaUserData.AddCallMetaTable
local localizedStrings = {
"LocalizedString", "LimitLString", "WrappedLString", "AddedPunctuationLString", "CapitalizeLString", "ConcatLString", "FallbackLString", "FormattedLString", "InputTypeLString", "JoinLString", "LowerLString", "RawLString", "ReplaceLString", "ServerMsgLString", "SplitLString", "TagLString", "TrimLString", "UpperLString", "StripRichTagsLString",
}
for key, value in pairs(localizedStrings) do
defaultLib[value] = CreateStatic("Barotrauma." .. value, true)
end
local sounds = {}
sounds.LowpassFilter = CreateStatic("Barotrauma.Sounds.LowpassFilter")
sounds.HighpassFilter = CreateStatic("Barotrauma.Sounds.HighpassFilter")
sounds.BandpassFilter = CreateStatic("Barotrauma.Sounds.BandpassFilter")
sounds.NotchFilter = CreateStatic("Barotrauma.Sounds.NotchFilter")
sounds.LowShelfFilter = CreateStatic("Barotrauma.Sounds.LowShelfFilter")
sounds.HighShelfFilter = CreateStatic("Barotrauma.Sounds.HighShelfFilter")
sounds.PeakFilter = CreateStatic("Barotrauma.Sounds.PeakFilter")
defaultLib["Sounds"] = sounds
defaultLib["SpriteEffects"] = CreateStatic("Microsoft.Xna.Framework.Graphics.SpriteEffects")
defaultLib["SoundPlayer"] = CreateStatic("Barotrauma.SoundPlayer")
defaultLib["SoundPrefab"] = CreateStatic("Barotrauma.SoundPrefab", true)
defaultLib["BackgroundMusic"] = CreateStatic("Barotrauma.BackgroundMusic", true)
defaultLib["GUISound"] = CreateStatic("Barotrauma.GUISound", true)
defaultLib["DamageSound"] = CreateStatic("Barotrauma.DamageSound", true)
defaultLib["WaterRenderer"] = CreateStatic("Barotrauma.WaterRenderer", true)
defaultLib["TextureLoader"] = CreateStatic("Barotrauma.TextureLoader")
defaultLib["Sprite"] = CreateStatic("Barotrauma.Sprite", true)
defaultLib["PlayerInput"] = CreateStatic("Barotrauma.PlayerInput", true)
defaultLib["Keys"] = CreateStatic("Microsoft.Xna.Framework.Input.Keys", true)
defaultLib["GUI"] = {
GUI = CreateStatic("Barotrauma.GUI", true),
Style = CreateStatic("Barotrauma.GUIStyle", true),
Component = CreateStatic("Barotrauma.GUIComponent"),
RectTransform = CreateStatic("Barotrauma.RectTransform", true),
LayoutGroup = CreateStatic("Barotrauma.GUILayoutGroup", true),
Button = CreateStatic("Barotrauma.GUIButton", true),
TextBox = CreateStatic("Barotrauma.GUITextBox", true),
Canvas = CreateStatic("Barotrauma.GUICanvas", true),
Frame = CreateStatic("Barotrauma.GUIFrame", true),
TextBlock = CreateStatic("Barotrauma.GUITextBlock", true),
TickBox = CreateStatic("Barotrauma.GUITickBox", true),
Image = CreateStatic("Barotrauma.GUIImage", true),
ListBox = CreateStatic("Barotrauma.GUIListBox", true),
ScrollBar = CreateStatic("Barotrauma.GUIScrollBar", true),
DropDown = CreateStatic("Barotrauma.GUIDropDown", true),
NumberInput = CreateStatic("Barotrauma.GUINumberInput", true),
MessageBox = CreateStatic("Barotrauma.GUIMessageBox", true),
ColorPicker = CreateStatic("Barotrauma.GUIColorPicker", true),
ProgressBar = CreateStatic("Barotrauma.GUIProgressBar", true),
CustomComponent = CreateStatic("Barotrauma.GUICustomComponent", true),
ScissorComponent = CreateStatic("Barotrauma.GUIScissorComponent", true),
VideoPlayer = CreateStatic("Barotrauma.VideoPlayer", true),
Graph = CreateStatic("Barotrauma.Graph", true),
SerializableEntityEditor = CreateStatic("Barotrauma.SerializableEntityEditor", true),
SlideshowPlayer = CreateStatic("Barotrauma.SlideshowPlayer", true),
CreditsPlayer = CreateStatic("Barotrauma.CreditsPlayer", true),
DragHandle = CreateStatic("Barotrauma.GUIDragHandle", true),
ContextMenu = CreateStatic("Barotrauma.GUIContextMenu", true),
ContextMenuOption = CreateStatic("Barotrauma.ContextMenuOption", true),
Screen = CreateStatic("Barotrauma.Screen"),
Anchor = CreateStatic("Barotrauma.Anchor"),
Alignment = CreateStatic("Barotrauma.Alignment"),
Pivot = CreateStatic("Barotrauma.Pivot"),
SoundType = CreateEnum("Barotrauma.GUISoundType"),
CursorState = CreateEnum("Barotrauma.CursorState"),
GUIStyle = CreateStatic("Barotrauma.GUIStyle", true),
}
local guiFallback = defaultLib["GUI"].GUI
setmetatable(defaultLib["GUI"], {
__index = function(_, key)
return guiFallback[key]
end
})
return defaultLib

View File

@@ -0,0 +1,14 @@
local defaultLib = {}
local CreateStatic = LuaUserData.CreateStatic
local CreateEnum = LuaUserData.CreateEnumTable
local localizedStrings = {
"LocalizedString", "AddedPunctuationLString", "CapitalizeLString", "ConcatLString", "FallbackLString", "FormattedLString", "InputTypeLString", "JoinLString", "LowerLString", "RawLString", "ReplaceLString", "ServerMsgLString", "SplitLString", "TagLString", "TrimLString", "UpperLString", "StripRichTagsLString",
}
for key, value in pairs(localizedStrings) do
defaultLib[value] = CreateStatic("Barotrauma." .. value, true)
end
return defaultLib

View File

@@ -0,0 +1,195 @@
local defaultLib = {}
local AddCallMetaTable = LuaUserData.AddCallMetaTable
local CreateStatic = LuaUserData.CreateStatic
local CreateEnum = LuaUserData.CreateEnumTable
defaultLib["SByte"] = CreateStatic("Barotrauma.LuaSByte", true)
defaultLib["Byte"] = CreateStatic("Barotrauma.LuaByte", true)
defaultLib["Int16"] = CreateStatic("Barotrauma.LuaInt16", true)
defaultLib["UInt16"] = CreateStatic("Barotrauma.LuaUInt16", true)
defaultLib["Int32"] = CreateStatic("Barotrauma.LuaInt32", true)
defaultLib["UInt32"] = CreateStatic("Barotrauma.LuaUInt32", true)
defaultLib["Int64"] = CreateStatic("Barotrauma.LuaInt64", true)
defaultLib["UInt64"] = CreateStatic("Barotrauma.LuaUInt64", true)
defaultLib["Single"] = CreateStatic("Barotrauma.LuaSingle", true)
defaultLib["Double"] = CreateStatic("Barotrauma.LuaDouble", true)
-- Backward compatibility
defaultLib["Float"] = CreateStatic("Barotrauma.LuaSingle", true)
defaultLib["Short"] = CreateStatic("Barotrauma.LuaInt16", true)
defaultLib["UShort"] = CreateStatic("Barotrauma.LuaUInt16", true)
defaultLib["SpawnType"] = CreateEnum("Barotrauma.SpawnType")
defaultLib["ChatMessageType"] = CreateEnum("Barotrauma.Networking.ChatMessageType")
defaultLib["ServerLog_MessageType"] = CreateEnum("Barotrauma.Networking.ServerLog+MessageType")
defaultLib["ServerLogMessageType"] = CreateEnum("Barotrauma.Networking.ServerLog+MessageType")
defaultLib["PositionType"] = CreateEnum("Barotrauma.Level+PositionType")
defaultLib["InvSlotType"] = CreateEnum("Barotrauma.InvSlotType")
defaultLib["LimbType"] = CreateEnum("Barotrauma.LimbType")
defaultLib["ActionType"] = CreateEnum("Barotrauma.ActionType")
defaultLib["AbilityEffectType"] = CreateEnum("Barotrauma.AbilityEffectType")
defaultLib["StatTypes"] = CreateEnum("Barotrauma.StatTypes")
defaultLib["AbilityFlags"] = CreateEnum("Barotrauma.AbilityFlags")
defaultLib["DeliveryMethod"] = CreateEnum("Barotrauma.Networking.DeliveryMethod")
defaultLib["ClientPacketHeader"] = CreateEnum("Barotrauma.Networking.ClientPacketHeader")
defaultLib["ServerPacketHeader"] = CreateEnum("Barotrauma.Networking.ServerPacketHeader")
defaultLib["RandSync"] = CreateEnum("Barotrauma.Rand+RandSync")
defaultLib["DisconnectReason"] = CreateEnum("Barotrauma.Networking.DisconnectReason")
defaultLib["CombatMode"] = CreateEnum("Barotrauma.AIObjectiveCombat+CombatMode")
defaultLib["CauseOfDeathType"] = CreateEnum("Barotrauma.CauseOfDeathType")
defaultLib["CharacterTeamType"] = CreateEnum("Barotrauma.CharacterTeamType")
defaultLib["ClientPermissions"] = CreateEnum("Barotrauma.Networking.ClientPermissions")
defaultLib["OrderCategory"] = CreateEnum("Barotrauma.OrderCategory")
defaultLib["WearableType"] = CreateEnum("Barotrauma.WearableType")
defaultLib["NumberType"] = CreateEnum("Barotrauma.NumberType")
defaultLib["ChatMode"] = CreateEnum("Barotrauma.ChatMode")
defaultLib["CharacterType"] = CreateEnum("Barotrauma.CharacterType")
defaultLib["VoteType"] = CreateEnum("Barotrauma.Networking.VoteType")
defaultLib["CanEnterSubmarine"] = CreateEnum("Barotrauma.CanEnterSubmarine")
defaultLib["InputType"] = CreateStatic("Barotrauma.InputType")
defaultLib["EventPrefab"] = CreateStatic("Barotrauma.EventPrefab", true)
defaultLib["TraitorEventPrefab"] = CreateStatic("Barotrauma.TraitorEventPrefab", true)
defaultLib["TraitorEvent"] = CreateStatic("Barotrauma.TraitorEvent", true)
defaultLib["EventSet"] = CreateStatic("Barotrauma.EventSet", true)
defaultLib["EventManagerSettings"] = CreateStatic("Barotrauma.EventManagerSettings", true)
defaultLib["NetConfig"] = CreateStatic("Barotrauma.Networking.NetConfig")
defaultLib["NetworkConnection"] = CreateStatic("Barotrauma.Networking.NetworkConnection")
defaultLib["Inventory"] = CreateStatic("Barotrauma.Inventory", true)
defaultLib["CharacterInventory"] = CreateStatic("Barotrauma.CharacterInventory", true)
defaultLib["ItemInventory"] = CreateStatic("Barotrauma.ItemInventory", true)
defaultLib["ContentPackageManager"] = CreateStatic("Barotrauma.ContentPackageManager")
defaultLib["GameSettings"] = CreateStatic("Barotrauma.GameSettings")
defaultLib["RichString"] = CreateStatic("Barotrauma.RichString", true)
defaultLib["Identifier"] = CreateStatic("Barotrauma.Identifier", true)
defaultLib["LanguageIdentifier"] = CreateStatic("Barotrauma.LanguageIdentifier", true)
defaultLib["ContentPackage"] = CreateStatic("Barotrauma.ContentPackage", true)
defaultLib["WayPoint"] = CreateStatic("Barotrauma.WayPoint", true)
defaultLib["Submarine"] = CreateStatic("Barotrauma.Submarine", true)
defaultLib["Client"] = CreateStatic("Barotrauma.Networking.Client", true)
defaultLib["Character"] = CreateStatic("Barotrauma.Character")
defaultLib["CharacterHealth"] = CreateStatic("Barotrauma.CharacterHealth", true)
defaultLib["CharacterPrefab"] = CreateStatic("Barotrauma.CharacterPrefab", true)
defaultLib["CharacterInfo"] = CreateStatic("Barotrauma.CharacterInfo", true)
AddCallMetaTable(defaultLib["CharacterInfo"].HeadPreset)
AddCallMetaTable(defaultLib["CharacterInfo"].HeadInfo)
defaultLib["CharacterInfoPrefab"] = CreateStatic("Barotrauma.CharacterInfoPrefab")
defaultLib["Item"] = CreateStatic("Barotrauma.Item", true)
AddCallMetaTable(defaultLib["Item"].ChangePropertyEventData)
defaultLib["MapEntityPrefab"] = CreateStatic("Barotrauma.MapEntityPrefab")
defaultLib["ItemPrefab"] = CreateStatic("Barotrauma.ItemPrefab", true)
defaultLib["TalentTree"] = CreateStatic("Barotrauma.TalentTree", true)
defaultLib["TalentPrefab"] = CreateStatic("Barotrauma.TalentPrefab", true)
defaultLib["FactionPrefab"] = CreateStatic("Barotrauma.FactionPrefab", true)
defaultLib["MissionPrefab"] = CreateStatic("Barotrauma.MissionPrefab", true)
defaultLib["Mission"] = CreateStatic("Barotrauma.Mission", true)
defaultLib["Level"] = CreateStatic("Barotrauma.Level")
defaultLib["LevelGenerationParams"] = CreateStatic("Barotrauma.LevelGenerationParams", true)
defaultLib["OutpostGenerationParams"] = CreateStatic("Barotrauma.OutpostGenerationParams", true)
defaultLib["RuinGenerationParams"] = CreateStatic("Barotrauma.RuinGeneration.RuinGenerationParams", true)
defaultLib["Job"] = CreateStatic("Barotrauma.Job", true)
defaultLib["JobPrefab"] = CreateStatic("Barotrauma.JobPrefab", true)
defaultLib["JobVariant"] = CreateStatic("Barotrauma.JobVariant", true)
defaultLib["AfflictionPrefab"] = CreateStatic("Barotrauma.AfflictionPrefab", true)
defaultLib["SkillSettings"] = CreateStatic("Barotrauma.SkillSettings", true)
defaultLib["ChatMessage"] = CreateStatic("Barotrauma.Networking.ChatMessage")
defaultLib["Structure"] = CreateStatic("Barotrauma.Structure", true)
defaultLib["Hull"] = CreateStatic("Barotrauma.Hull", true)
defaultLib["Gap"] = CreateStatic("Barotrauma.Gap", true)
defaultLib["Signal"] = CreateStatic("Barotrauma.Items.Components.Signal", true)
defaultLib["SubmarineInfo"] = CreateStatic("Barotrauma.SubmarineInfo", true)
defaultLib["Entity"] = CreateStatic("Barotrauma.Entity", true)
defaultLib["MapEntity"] = CreateStatic("Barotrauma.MapEntity", true)
defaultLib["Physics"] = CreateStatic("Barotrauma.Physics")
defaultLib["FireSource"] = CreateStatic("Barotrauma.FireSource", true)
defaultLib["TextManager"] = CreateStatic("Barotrauma.TextManager")
defaultLib["NetEntityEvent"] = CreateStatic("Barotrauma.Networking.NetEntityEvent")
defaultLib["Screen"] = CreateStatic("Barotrauma.Screen")
defaultLib["AttackResult"] = CreateStatic("Barotrauma.AttackResult", true)
defaultLib["TempClient"] = CreateStatic("Barotrauma.Networking.TempClient", true)
defaultLib["DecalManager"] = CreateStatic("Barotrauma.DecalManager", true)
defaultLib["AutoItemPlacer"] = CreateStatic("Barotrauma.AutoItemPlacer")
defaultLib["PropertyConditional"] = CreateStatic("Barotrauma.PropertyConditional", true)
defaultLib["StatusEffect"] = CreateStatic("Barotrauma.StatusEffect", true)
defaultLib["OutpostGenerator"] = CreateStatic("Barotrauma.OutpostGenerator")
defaultLib["DamageModifier"] = CreateStatic("Barotrauma.DamageModifier", true)
defaultLib["TraitorManager"] = CreateStatic("Barotrauma.TraitorManager", true)
AddCallMetaTable(defaultLib["TraitorManager"].TraitorResults)
defaultLib["Md5Hash"] = CreateStatic("Barotrauma.Md5Hash", true)
defaultLib["ContentXElement"] = CreateStatic("Barotrauma.ContentXElement", true)
defaultLib["ContentPath"] = CreateStatic("Barotrauma.ContentPath", true)
defaultLib["XElement"] = CreateStatic("System.Xml.Linq.XElement", true)
defaultLib["XName"] = CreateStatic("System.Xml.Linq.XName", true)
defaultLib["XAttribute"] = CreateStatic("System.Xml.Linq.XAttribute", true)
defaultLib["XContainer"] = CreateStatic("System.Xml.Linq.XContainer", true)
defaultLib["XDocument"] = CreateStatic("System.Xml.Linq.XDocument", true)
defaultLib["XNode"] = CreateStatic("System.Xml.Linq.XNode", true)
defaultLib["SoundsFile"] = CreateStatic("Barotrauma.SoundsFile", true)
defaultLib["Voting"] = CreateStatic("Barotrauma.Voting")
defaultLib["TimeSpan"] = CreateStatic("System.TimeSpan")
defaultLib["IPAddress"] = CreateStatic("System.Net.IPAddress")
defaultLib["ContentPackageId"] = CreateStatic("Barotrauma.ContentPackageId")
defaultLib["Address"] = CreateStatic("Barotrauma.Networking.Address")
defaultLib["AccountId"] = CreateStatic("Barotrauma.Networking.AccountId")
defaultLib["Endpoint"] = CreateStatic("Barotrauma.Networking.Endpoint")
defaultLib["Explosion"] = CreateStatic("Barotrauma.Explosion", true)
defaultLib["ConvertUnits"] = CreateStatic("FarseerPhysics.ConvertUnits")
defaultLib["ToolBox"] = CreateStatic("Barotrauma.ToolBox")
defaultLib["AIObjective"] = CreateStatic("Barotrauma.AIObjective", true)
defaultLib["AIObjectiveChargeBatteries"] = CreateStatic("Barotrauma.AIObjectiveChargeBatteries", true)
defaultLib["AIObjectiveCleanupItem"] = CreateStatic("Barotrauma.AIObjectiveCleanupItem", true)
defaultLib["AIObjectiveCleanupItems"] = CreateStatic("Barotrauma.AIObjectiveCleanupItems", true)
defaultLib["AIObjectiveCombat"] = CreateStatic("Barotrauma.AIObjectiveCombat", true)
defaultLib["AIObjectiveContainItem"] = CreateStatic("Barotrauma.AIObjectiveContainItem", true)
defaultLib["AIObjectiveDeconstructItem"] = CreateStatic("Barotrauma.AIObjectiveDeconstructItem", true)
defaultLib["AIObjectiveDeconstructItems"] = CreateStatic("Barotrauma.AIObjectiveDeconstructItems", true)
defaultLib["AIObjectiveEscapeHandcuffs"] = CreateStatic("Barotrauma.AIObjectiveEscapeHandcuffs", true)
defaultLib["AIObjectiveExtinguishFire"] = CreateStatic("Barotrauma.AIObjectiveExtinguishFire", true)
defaultLib["AIObjectiveExtinguishFires"] = CreateStatic("Barotrauma.AIObjectiveExtinguishFires", true)
defaultLib["AIObjectiveFightIntruders"] = CreateStatic("Barotrauma.AIObjectiveFightIntruders", true)
defaultLib["AIObjectiveFindDivingGear"] = CreateStatic("Barotrauma.AIObjectiveFindDivingGear", true)
defaultLib["AIObjectiveFindSafety"] = CreateStatic("Barotrauma.AIObjectiveFindSafety", true)
defaultLib["AIObjectiveFixLeak"] = CreateStatic("Barotrauma.AIObjectiveFixLeak", true)
defaultLib["AIObjectiveFixLeaks"] = CreateStatic("Barotrauma.AIObjectiveFixLeaks", true)
defaultLib["AIObjectiveGetItem"] = CreateStatic("Barotrauma.AIObjectiveGetItem", true)
defaultLib["AIObjectiveGoTo"] = CreateStatic("Barotrauma.AIObjectiveGoTo", true)
defaultLib["AIObjectiveIdle"] = CreateStatic("Barotrauma.AIObjectiveIdle", true)
defaultLib["AIObjectiveOperateItem"] = CreateStatic("Barotrauma.AIObjectiveOperateItem", true)
defaultLib["AIObjectiveOperateItem"] = CreateStatic("Barotrauma.AIObjectiveOperateItem", true)
defaultLib["AIObjectivePumpWater"] = CreateStatic("Barotrauma.AIObjectivePumpWater", true)
defaultLib["AIObjectiveRepairItem"] = CreateStatic("Barotrauma.AIObjectiveRepairItem", true)
defaultLib["AIObjectiveRepairItems"] = CreateStatic("Barotrauma.AIObjectiveRepairItems", true)
defaultLib["AIObjectiveRescue"] = CreateStatic("Barotrauma.AIObjectiveRescue", true)
defaultLib["AIObjectiveRescueAll"] = CreateStatic("Barotrauma.AIObjectiveRescueAll", true)
defaultLib["AIObjectiveReturn"] = CreateStatic("Barotrauma.AIObjectiveReturn", true)
defaultLib["AITarget"] = CreateStatic("Barotrauma.AITarget", true)
defaultLib["Order"] = CreateStatic("Barotrauma.Order", true)
defaultLib["OrderPrefab"] = CreateStatic("Barotrauma.OrderPrefab", true)
defaultLib["OrderTarget"] = CreateStatic("Barotrauma.OrderTarget", true)
local componentsToReference = { "DockingPort", "Door", "GeneticMaterial", "Growable", "Holdable", "LevelResource", "ItemComponent", "ItemLabel", "LightComponent", "Controller", "Deconstructor", "Engine", "Fabricator", "OutpostTerminal", "Pump", "Reactor", "Steering", "PowerContainer", "Projectile", "Repairable", "Rope", "Scanner", "ButtonTerminal", "ConnectionPanel", "CustomInterface", "MemoryComponent", "Terminal", "WifiComponent", "Wire", "TriggerComponent", "ElectricalDischarger", "EntitySpawnerComponent", "ProducedItem", "VineTile", "GrowthSideExtension", "IdCard", "MeleeWeapon", "Pickable", "Propulsion", "RangedWeapon", "RepairTool", "Sprayer", "Throwable", "ItemContainer", "Ladder", "LimbPos", "MiniMap", "OxygenGenerator", "Sonar", "SonarTransducer", "Vent", "NameTag", "Planter", "Powered", "PowerTransfer", "Quality", "RemoteController", "AdderComponent", "AndComponent", "ArithmeticComponent", "ColorComponent", "ConcatComponent", "Connection", "DelayComponent", "DivideComponent", "EqualsComponent", "ExponentiationComponent", "FunctionComponent", "GreaterComponent", "ModuloComponent", "MotionSensor", "MultiplyComponent", "NotComponent", "OrComponent", "OscillatorComponent", "OxygenDetector", "RegExFindComponent", "RelayComponent", "SignalCheckComponent", "SmokeDetector", "StringComponent", "SubtractComponent", "TrigonometricFunctionComponent", "WaterDetector", "XorComponent", "StatusHUD", "Turret", "Wearable", "CustomInterface"
}
defaultLib["Components"] = {}
for key, value in pairs(componentsToReference) do
defaultLib["Components"][value] = CreateStatic("Barotrauma.Items.Components." .. value, true)
end
defaultLib["Vector2"] = CreateStatic("Microsoft.Xna.Framework.Vector2", true)
defaultLib["Vector3"] = CreateStatic("Microsoft.Xna.Framework.Vector3", true)
defaultLib["Vector4"] = CreateStatic("Microsoft.Xna.Framework.Vector4", true)
defaultLib["Color"] = CreateStatic("Microsoft.Xna.Framework.Color", true)
defaultLib["Point"] = CreateStatic("Microsoft.Xna.Framework.Point", true)
defaultLib["Rectangle"] = CreateStatic("Microsoft.Xna.Framework.Rectangle", true)
defaultLib["Matrix"] = CreateStatic("Microsoft.Xna.Framework.Matrix", true)
return defaultLib

View File

@@ -0,0 +1,40 @@
math.lerp = function (a, b, t)
if type(a) ~= "number" then error(string.format("bad argument #1 to 'lerp' (number expected, got %s)", type(a)), 2) end
if type(b) ~= "number" then error(string.format("bad argument #2 to 'lerp' (number expected, got %s)", type(b)), 2) end
if type(t) ~= "number" then error(string.format("bad argument #3 to 'lerp' (number expected, got %s)", type(t)), 2) end
return a * (1 - t) + b * t
end
math.clamp = function (value, min, max)
if type(value) ~= "number" then error(string.format("bad argument #1 to 'clamp' (number expected, got %s)", type(value)), 2) end
if type(min) ~= "number" then error(string.format("bad argument #2 to 'clamp' (number expected, got %s)", type(min)), 2) end
if type(max) ~= "number" then error(string.format("bad argument #3 to 'clamp' (number expected, got %s)", type(max)), 2) end
return math.max(min, math.min(max, value))
end
math.round = function (value, decimals)
if type(value) ~= "number" then error(string.format("bad argument #1 to 'round' (number expected, got %s)", type(value)), 2) end
if type(decimals) ~= "number" then error(string.format("bad argument #2 to 'round' (number expected, got %s)", type(decimals)), 2) end
decimals = decimals or 0
local mult = 10 ^ decimals
return math.floor(value * mult + 0.5) / mult
end
math.sign = function (value)
if type(value) ~= "number" then error(string.format("bad argument #1 to 'sign' (number expected, got %s)", type(value)), 2) end
return value >= 0 and 1 or -1
end
math.remap = function (value, inMin, inMax, outMin, outMax)
if type(value) ~= "number" then error(string.format("bad argument #1 to 'remap' (number expected, got %s)", type(value)), 2) end
if type(inMin) ~= "number" then error(string.format("bad argument #2 to 'remap' (number expected, got %s)", type(inMin)), 2) end
if type(inMax) ~= "number" then error(string.format("bad argument #3 to 'remap' (number expected, got %s)", type(inMax)), 2) end
if type(outMin) ~= "number" then error(string.format("bad argument #4 to 'remap' (number expected, got %s)", type(outMin)), 2) end
if type(outMax) ~= "number" then error(string.format("bad argument #5 to 'remap' (number expected, got %s)", type(outMax)), 2) end
return outMin + (outMax - outMin) * ((value - inMin) / (inMax - inMin))
end

View File

@@ -0,0 +1,28 @@
if true then return end
local descriptor = LuaUserData.RegisterType("Barotrauma.LuaCsSteam")
LuaUserData.AddMethod(descriptor, "GetWorkshopCollection", function (id, callback)
id = tostring(id)
Networking.RequestPostHTTP("https://api.steampowered.com/ISteamRemoteStorage/GetCollectionDetails/v1/", function (result)
local data = json.parse(result)
if data.response.collectiondetails[1].children == nil then
callback()
return
end
local workshopItems = {}
for key, value in pairs(data.response.collectiondetails[1].children) do
table.insert(workshopItems, value.publishedfileid)
end
if callback then
callback(workshopItems)
end
end,
"collectioncount=1&publishedfileids[0]=" .. id,
"application/x-www-form-urlencoded")
end)

View File

@@ -0,0 +1,13 @@
string.startsWith = function(str, start)
if type(str) ~= "string" then error(string.format("bad argument #1 to 'startsWith' (string expected, got %s)", type(str)), 2) end
if type(start) ~= "string" then error(string.format("bad argument #2 to 'startsWith' (string expected, got %s)", type(start)), 2) end
return string.sub(str, 1, string.len(start)) == start
end
string.endsWith = function(str, ending)
if type(str) ~= "string" then error(string.format("bad argument #1 to 'endsWith' (string expected, got %s)", type(str)), 2) end
if type(ending) ~= "string" then error(string.format("bad argument #2 to 'endsWith' (string expected, got %s)", type(ending)), 2) end
return ending == "" or string.sub(str, -string.len(ending)) == ending
end

View File

@@ -0,0 +1,86 @@
Util = {}
local itemDictionary = {}
local itemGroups = {}
local function AddItem(item)
for _, itemGroup in pairs(itemGroups) do
if itemGroup.func(item) then
table.insert(itemGroup.items, item)
end
end
local id = item.Prefab.Identifier.Value
if itemDictionary[id] == nil then
itemDictionary[id] = {}
end
table.insert(itemDictionary[id], item)
end
Hook.Add("item.created", "luaSetup.util.itemDictionary", function (item)
AddItem(item)
end)
Hook.Add("roundEnd", "luaSetup.util.itemDictionary", function (item)
itemDictionary = {}
for _, itemGroup in pairs(itemGroups) do
itemGroup.items = {}
end
end)
for _, item in pairs(Item.ItemList) do
AddItem(item)
end
Util.RegisterItemGroup = function(groupName, func)
if type(groupName) ~= "string" then
error(string.format("bad argument #1 to 'RegisterItemGroup' (string expected, got %s)", type(groupName)), 2)
end
if type(func) ~= "function" then
error(string.format("bad argument #2 to 'RegisterItemGroup' (function expected, got %s)", type(func)), 2)
end
local items = {}
for _, item in pairs(Item.ItemList) do
if func(item) then
table.insert(items, item)
end
end
itemGroups[groupName] = {
func = func,
items = items
}
end
Util.GetItemGroup = function(groupName)
if type(groupName) ~= "string" then
error(string.format("bad argument #1 to 'GetItemGroup' (string expected, got %s)", type(groupName)), 2)
end
if not itemGroups[groupName] then
error("bad argument #1 to 'GetItemGroup' couldn't find the specified groupName", 2)
end
return itemGroups[groupName].items or {}
end
Util.GetItemsById = function(id)
if id == nil then
error(string.format("bad argument #1 to 'GetItemsById' (string expected, got %s)", type(id)), 2)
end
return itemDictionary[id]
end
Util.FindClientCharacter = function(character)
if CLIENT and Game.IsSingleplayer then return nil end
for _, client in pairs(Client.ClientList) do
if client.Character == character then
return client
end
end
end

View File

@@ -0,0 +1,38 @@
LuaSetup = {}
local path = ...
local function AddTableToGlobal(tbl)
for k, v in pairs(tbl) do
_G[k] = v
end
end
if SERVER then
AddTableToGlobal(dofile(path .. "/Lua/DefaultLib/LibServer.lua"))
else
AddTableToGlobal(dofile(path .. "/Lua/DefaultLib/LibClient.lua"))
end
AddTableToGlobal(dofile(path .. "/Lua/DefaultLib/LibShared.lua"))
AddTableToGlobal(dofile(path .. "/Lua/CompatibilityLib.lua"))
dofile(path .. "/Lua/DefaultHook.lua")
Descriptors = LuaUserData
dofile(path .. "/Lua/DefaultLib/Utils/Math.lua")
dofile(path .. "/Lua/DefaultLib/Utils/String.lua")
dofile(path .. "/Lua/DefaultLib/Utils/Util.lua")
dofile(path .. "/Lua/DefaultLib/Utils/SteamApi.lua")
if not CSActive then
for k, v in pairs(debug) do
if k ~= "getmetatable" and k ~= "setmetatable" and k ~= "traceback" then
debug[k] = nil
end
end
end
LuaSetup = nil

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<ModConfig>
<Lua File="%ModDir%/Lua/LuaSetup.lua" IsAutorun="true" />
<Config File="%ModDir%/Config/SettingsShared.xml"/>
<Assembly File="%ModDir%/Publicized/BarotraumaCore.dll" IsReferenceModeOnly="true"/>
<Assembly File="%ModDir%/Publicized/Barotrauma.dll" Target="Client" IsReferenceModeOnly="true" IsFileRequired="false"/>
<Assembly File="%ModDir%/Publicized/DedicatedServer.dll" Target="Server" IsReferenceModeOnly="true"/>
</ModConfig>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<style>
<SettingsMenuTab.LuaCsSettings color="169,212,187,255" hovercolor="220,220,220,255" selectedcolor="255,255,255,255" pressedcolor="100,100,100,255" disabledcolor="125,125,125,125">
<Sprite name="LuaCsSettings" texture="%ModDir%/LuaCsSettingsIcon.png" sourcerect="0,0,64,64" tile="false" maintainaspectratio="true" origin="0.5,0.5"/>
</SettingsMenuTab.LuaCsSettings>
</style>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<infotexts language="English" nowhitespace="false" translatedname="English">
<LuaCsForBarotrauma.SettingsMenu.ModControlsButton>Mod Controls Settings</LuaCsForBarotrauma.SettingsMenu.ModControlsButton>
<LuaCsForBarotrauma.SettingsMenu.ModGameplayButton>Mod Gameplay Settings</LuaCsForBarotrauma.SettingsMenu.ModGameplayButton>
<LuaCsForBarotrauma.SettingsMenu.ResetVisibleSettings>Reset Displayed Settings</LuaCsForBarotrauma.SettingsMenu.ResetVisibleSettings>
<LuaCsForBarotrauma.SettingsMenu.ResetPrompt.Title>Reset Visible Settings</LuaCsForBarotrauma.SettingsMenu.ResetPrompt.Title>
<LuaCsForBarotrauma.SettingsMenu.ResetPrompt.Message>Are you sure you want to reset the values for currently displayed settings?</LuaCsForBarotrauma.SettingsMenu.ResetPrompt.Message>
<LuaCsForBarotrauma.SettingsMenu.ResetPrompt.Yes>Yes</LuaCsForBarotrauma.SettingsMenu.ResetPrompt.Yes>
<LuaCsForBarotrauma.SettingsMenu.ResetPrompt.No>No</LuaCsForBarotrauma.SettingsMenu.ResetPrompt.No>
<!-- Settings -->
<!-- Is Cs Enabled-->
<LuaCsForBarotrauma.CsRunPolicy.DisplayName>Are C# Mods Allowed</LuaCsForBarotrauma.CsRunPolicy.DisplayName>
<LuaCsForBarotrauma.CsRunPolicy.Tooltip>Should unsandboxed scripts and dlls be allowed to run.</LuaCsForBarotrauma.CsRunPolicy.Tooltip>
<LuaCsForBarotrauma.CsRunPolicy.DisplayCategory>General</LuaCsForBarotrauma.CsRunPolicy.DisplayCategory>
<!-- Use Caching -->
<LuaCsForBarotrauma.UseCaching.DisplayName>Use Pre-Caching</LuaCsForBarotrauma.UseCaching.DisplayName>
<LuaCsForBarotrauma.UseCaching.Tooltip>Should mod files be preloaded to speed up loading. Should only be turned off if you have mods that have issues with this.</LuaCsForBarotrauma.UseCaching.Tooltip>
<LuaCsForBarotrauma.UseCaching.DisplayCategory>General</LuaCsForBarotrauma.UseCaching.DisplayCategory>
<!-- Hide Usernames In Logs-->
<LuaCsForBarotrauma.HideUserNamesInLogs.DisplayName>Hide Local OS Account Name In Logs</LuaCsForBarotrauma.HideUserNamesInLogs.DisplayName>
<LuaCsForBarotrauma.HideUserNamesInLogs.Tooltip>If true, will replace your OS account name with 'USERNAME' in log files' paths.</LuaCsForBarotrauma.HideUserNamesInLogs.Tooltip>
<LuaCsForBarotrauma.HideUserNamesInLogs.DisplayCategory>General</LuaCsForBarotrauma.HideUserNamesInLogs.DisplayCategory>
</infotexts>

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<infotexts language="Portuguese" nowhitespace="false" translatedname="Portuguese">
</infotexts>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="LuaCsForBarotrauma">
<Text file="%ModDir%/Texts/English.xml"/>
<UIStyle file="%ModDir%/Style.xml" />
<!--<Text file="%ModDir%/Texts/Portuguese.xml"/>-->
</contentpackage>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<CrawlerRun footangle="-15.42238" Flip="True" FlipCooldown="1" FlipDelay="0.5" HeadMoveForce="10" TorsoMoveForce="15" FootMoveForce="5" TailTorque="50" LegTorque="0" ColliderStandAngle="90" FootAngles="10: 1.515006,15: 1.5882496,11: 1.9198622" TailAngle="85" StepSize="0.54825926,0.37847614" HeadPosition="0.799391" TorsoPosition="0.9479357" StepLiftHeadMultiplier="0.5" StepLiftAmount="20" MultiplyByDir="True" StepLiftOffset="0.5000001" StepLiftFrequency="1" BackwardsMovementMultiplier="0.75" MovementSpeed="5.024437" CycleSpeed="2" HeadAngle="7" TorsoAngle="4" HeadTorque="400" TorsoTorque="100" FootTorque="25" AnimationType="Run" ArmIKStrength="1" HandIKStrength="1" type="Crawler" />

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<CrawlerSwimFast footangle="0" UseSineMovement="False" Flip="True" FlipCooldown="1" FlipDelay="0.2" Mirror="False" MirrorLerp="True" WaveAmplitude="17.957405" WaveLength="36.39117" RotateTowardsMovement="True" TailTorque="250" TailTorqueMultiplier="1" FootAngles="10: 1.580441,15: 0,11: 0" TailAngle="NaN" SteerTorque="10" LegTorque="25" MovementSpeed="8" CycleSpeed="5" HeadAngle="151" TorsoAngle="59" HeadTorque="25" TorsoTorque="25" FootTorque="10" AnimationType="SwimFast" ArmIKStrength="1" HandIKStrength="1" type="Crawler" />

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<CrawlerSwimSlow footangle="0" UseSineMovement="False" Flip="True" FlipCooldown="2" FlipDelay="0.3" Mirror="False" MirrorLerp="True" WaveAmplitude="5.694347" WaveLength="40.9427" RotateTowardsMovement="True" TailTorque="50" TailTorqueMultiplier="1" FootAngles="10: 1.567869,15: 0,11: 0" TailAngle="NaN" SteerTorque="10" LegTorque="25" MovementSpeed="4" CycleSpeed="5" HeadAngle="141" TorsoAngle="67" HeadTorque="10" TorsoTorque="25" FootTorque="10" AnimationType="SwimSlow" ArmIKStrength="1" HandIKStrength="1" type="Crawler" />

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<CrawlerWalk footangle="-36.14369" Flip="True" FlipCooldown="3" FlipDelay="1" HeadMoveForce="10" TorsoMoveForce="10" FootMoveForce="3" TailTorque="50" LegTorque="0" ColliderStandAngle="90" FootAngles="10: 0.8620372,15: 1.5882496,11: 1.5707964" TailAngle="-0" StepSize="0.45751935,0.55915964" HeadPosition="1.1996936" TorsoPosition="0.70749724" StepLiftHeadMultiplier="0.29999992" StepLiftAmount="20" MultiplyByDir="True" StepLiftOffset="0.5999999" StepLiftFrequency="1" BackwardsMovementMultiplier="0.75" MovementSpeed="1.5456418" CycleSpeed="3.7958877" HeadAngle="0" TorsoAngle="12" HeadTorque="400" TorsoTorque="50" FootTorque="50" AnimationType="Walk" ArmIKStrength="1" HandIKStrength="1" type="Crawler" />

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<override>
<Character visiblity="100" SpeciesName="Crawler" SpeciesTranslationOverride="" DisplayName="" Group="crawler" Humanoid="false" HasInfo="False" CanInteract="False" Husk="False" UseHuskAppendage="False" NeedsAir="False" NeedsWater="False" CanSpeak="False" UseBossHealthBar="False" Noise="100" Visibility="100" BloodDecal="blood" BleedParticleAir="blooddrop" BleedParticleWater="waterblood" BleedParticleMultiplier="1" CanEat="True" EatingSpeed="5" UsePathFinding="True" PathFinderPriority="1" HideInSonar="False" HideInThermalGoggles="False" SonarDisruption="0" DistantSonarRange="0" DisableDistance="25000" SoundInterval="10" DrawLast="False">
<ragdolls folder="default" />
<animations folder="default" />
<damageemitter drawontop="True" Particle="gib" AngleMin="0" AngleMax="360" ScaleMin="0.25" ScaleMax="0.5" VelocityMin="50" VelocityMax="300" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="10" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<bloodemitter Particle="blood" AngleMin="0" AngleMax="0" ScaleMin="1" ScaleMax="1" VelocityMin="0" VelocityMax="0" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="10" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<bloodemitter Particle="waterblood" AngleMin="0" AngleMax="0" ScaleMin="1" ScaleMax="1" VelocityMin="0" VelocityMax="0" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="1" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<gibemitter Particle="gib" AngleMin="0" AngleMax="360" ScaleMin="1" ScaleMax="1" VelocityMin="200" VelocityMax="700" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="20" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<gibemitter Particle="heavygib" AngleMin="0" AngleMax="360" ScaleMin="0.5" ScaleMax="0.8" VelocityMin="50" VelocityMax="500" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="5" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<health Vitality="80" DoesBleed="True" CrushDepth="Infinity" UseHealthWindow="False" BleedingReduction="0.2" BurnReduction="0" ConstantHealthRegeneration="0" HealthRegenerationWhenEating="10" StunImmunity="False" PoisonImmunity="False" ApplyAfflictionColors="False">
<Limb name="Torso">
<VitalityMultiplier type="damage,burn" multiplier="1.0" />
</Limb>
<Limb name="Head">
<VitalityMultiplier type="damage,burn" multiplier="1.5" />
</Limb>
<Limb name="LeftLeg">
<VitalityMultiplier type="damage,burn" multiplier="0.75" />
</Limb>
<Limb name="RightLeg">
<VitalityMultiplier type="damage,burn" multiplier="0.75" />
</Limb>
<Limb>
<!--Tail-->
<VitalityMultiplier type="damage,burn" multiplier="0.75" />
</Limb>
</health>
<sound File="Content/Characters/Crawler/CRAWLER_attack1.ogg" State="Attack" Range="2000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_attack2.ogg" State="Attack" Range="2000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_attack3.ogg" State="Attack" Range="2000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_attack4.ogg" State="Attack" Range="2000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_idle1.ogg" State="Idle" Range="1000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_idle2.ogg" State="Idle" Range="1000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_idle3.ogg" State="Idle" Range="1000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_death1.ogg" State="Die" Range="2000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_death2.ogg" State="Die" Range="2000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_damage1.ogg" State="Damage" Range="2000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_damage2.ogg" State="Damage" Range="2000" Volume="1" Tags="" />
<sound File="Content/Characters/Crawler/CRAWLER_damage3.ogg" State="Damage" Range="2000" Volume="1" Tags="" />
<Inventory slots="Any, Any, Any, Any" accessiblewhenalive="False" commonness="1">
<Item identifier="crawlermask" />
<Item identifier="alienblood" />
</Inventory>
<Inventory slots="Any, Any, Any, Any" accessiblewhenalive="False" commonness="50">
<Item identifier="alienblood" />
</Inventory>
<StatusEffect type="OnDeconstructed" target="Character">
<SpawnItem identifiers="alienblood" spawnposition="ThisInventory" count="3" />
</StatusEffect>
<ai CombatStrength="100" Sight="1" Hearing="1" AggressionHurt="200" AggressionGreed="10" FleeHealthThreshold="10" AttackWhenProvoked="False" AvoidGunfire="True" DamageThreshold="0" AvoidTime="3" MinFleeTime="20" AggressiveBoarding="True" EnforceAggressiveBehaviorForMissions="True" TargetOuterWalls="True" RandomAttack="False" CanOpenDoors="False" KeepDoorsClosed="False" AvoidAbyss="True" StayInAbyss="False" PatrolFlooded="False" PatrolDry="False" StartAggression="0" MaxAggression="100" AggressionCumulation="0" WallTargetingMethod="Target">
<target Tag="decoy" State="Attack" Priority="500" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="True" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="stronger" State="Avoid" Priority="200" ReactDistance="2000" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="husk" State="PassiveAggressive" Priority="200" ReactDistance="2000" AttackDistance="500" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="provocative" State="Attack" Priority="100" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="True" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="weapon" State="Attack" Priority="100" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="True" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="dead" State="Eat" Priority="100" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="weaker" State="Attack" Priority="80" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="human" State="Attack" Priority="80" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="nasonov" State="Attack" Priority="70" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="tool" State="Aggressive" Priority="50" ReactDistance="1000" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="True" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="leucocyte" State="Avoid" Priority="50" ReactDistance="1000" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="engine" State="Avoid" Priority="50" ReactDistance="400" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="True" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="monsterfood" State="Eat" Priority="30" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="room" State="Attack" Priority="30" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="wall" State="Attack" Priority="15" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="door" State="Attack" Priority="5" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="False" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="sonar" State="Attack" Priority="5" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="True" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="turret" State="Attack" Priority="1" ReactDistance="0" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="True" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="crawlerbroodmother" State="Protect" Priority="10" ReactDistance="750" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="True" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="crawler_large" State="Protect" Priority="5" ReactDistance="750" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="True" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<target Tag="watcher" State="Protect" Priority="1" ReactDistance="1000" AttackDistance="0" Timer="0" IgnoreContained="False" IgnoreInside="True" IgnoreOutside="False" IgnoreIfNotInSameSub="False" IgnoreIncapacitated="False" Threshold="0" ThresholdMin="-1" ThresholdMax="-1" Offset="0,0" AttackPattern="Straight" PrioritizeSubCenter="False" SweepDistance="0" SweepStrength="10" SweepSpeed="1" CircleStartDistance="5000" CircleRotationSpeed="1" CircleStrikeDistanceMultiplier="5" CircleMaxRandomOffset="0" />
<chooserandom>
<latchonto attachtowalls="true" attachtosub="true" mindeattachspeed="5.0" maxdeattachspeed="8.0" damageondetach="30" detachstun="5.0" attachlimb="Head" localattachpos="40,10" offset="50" attachlimbrotation="100" />
<latchonto attachtowalls="true" attachtosub="false" mindeattachspeed="5.0" maxdeattachspeed="8.0" damageondetach="30" detachstun="5.0" attachlimb="Head" localattachpos="40,10" offset="50" attachlimbrotation="100" />
</chooserandom>
<SwarmBehavior mindistfromclosest="200" maxdistfromcenter="1000" cohesion="1" />
</ai>
</Character>
</override>

View File

@@ -0,0 +1,127 @@
<Ragdoll type="crawler" Texture="%ModDir%/Characters/Crawler/crawler.png" Color="255,255,255,255" SpritesheetOrientation="90" LimbScale="0.65" JointScale="0.65" TextureScale="0.5" ColliderHeightFromFloor="40" ImpactTolerance="10" CanEnterSubmarine="True" CanWalk="True" Draggable="True" MainLimb="Torso">
<collider height="120" radius="50" name="Main Collider" width="0" />
<!-- Head -->
<limb id="0" radius="40" type="Head" flip="True" steerforce="10" healthindex="1" attackpriority="1" stepoffset="0,0" bodytype="Dynamic" height="0" width="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Head" notes="" spriteorientation="90" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0.8,-1" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="8" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="306,4,204,164" depth="0.1" origin="0.52333707,0.4824578" subdivisions="3,3" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False"></deformablesprite>
<lightsource color="255,255,255,0" range="0" offset="0,6" castshadows="false" scale="2.0" rotation="0" flicker="0" flickerspeed="1" pulsefrequency="0" pulseamount="0" blinkfrequency="0" >
<lighttexture texture="Content/Lights/pointlight_bright.png" origin="0.5,0.5" size="1,1" />
<deformablesprite texture="Content/Characters/Watcher/gazerage.png" sourcerect="0,0,102,82" origin="0.5,0.5" size="1,1" alpha="0.6" />
<conditional watchersgaze="gt 0" />
</lightsource>
</limb>
<!-- BodyUpper (main torso) -->
<limb id="1" width="1.6999927" height="0" type="Torso" flip="True" steerforce="0.1" healthindex="0" attackpriority="1" stepoffset="0,0" bodytype="Dynamic" radius="55" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Torso" notes="" spriteorientation="NaN" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="8" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="72,0,230,226" depth="0.2" origin="0.4606622,0.4951695" subdivisions="5,5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False">
<SpriteDeformation type="inflate" resolution="5,5" frequency="2" scale="0.2" sync="1" stopwhenhostisdead="True" typename="inflate" blendmode="Add" usemovementsine="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
<SpriteDeformation type="custom" resolution="5,5" frequency="0" blendmode="Multiply" row0="0,0 0.5,1 1,1 0.5,1 0,0" row1="0,0 0.5,1 1,1 0.5,1 0,0" row2="0,0 0.5,1 1,1 0.5,1 0,0" row3="0,0 0.5,1 1,1 0.5,1 0,0" row4="0,0 0.5,1 1,1 0.5,1 0,0" amplitude="1" sync="-1" typename="custom" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
<spritedeformation type="bendjoint" resolution="5,5" blendmode="Add" sync="-1" typename="bendjoint" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
</deformablesprite>
</limb>
<limb id="2" width="74.799995" height="68.85" type="Tail" flip="True" healthindex="4" attackpriority="1" steerforce="0" stepoffset="0,0" bodytype="Dynamic" radius="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Limb 2" notes="" spriteorientation="270" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="4" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="334,346,174,162" depth="0.21" origin="0.5457247,0.5583258" subdivisions="5,5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False">
<SpriteDeformation type="inflate" resolution="5,5" frequency="2" scale="0.2" sync="1" stopwhenhostisdead="True" typename="inflate" blendmode="Add" usemovementsine="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
<SpriteDeformation type="custom" resolution="5,5" frequency="0" blendmode="Multiply" row0="0,0 0.5,1 1,1 0.5,1 0,0" row1="0,0 0.5,1 1,1 0.5,1 0,0" row2="0,0 0.5,1 1,1 0.5,1 0,0" row3="0,0 0.5,1 1,1 0.5,1 0,0" row4="0,0 0.5,1 1,1 0.5,1 0,0" amplitude="1" sync="-1" typename="custom" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
<spritedeformation type="bendjoint" resolution="5,5" blendmode="Add" sync="-1" typename="bendjoint" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
</deformablesprite>
</limb>
<limb id="3" width="70.55" height="65.45" type="Tail" flip="True" healthindex="4" attackpriority="1" steerforce="0" stepoffset="0,0" bodytype="Dynamic" radius="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Limb 3" notes="" spriteorientation="270" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="142,358,166,154" depth="0.22" origin="0.5427743,0.5" subdivisions="5,5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False">
<spritedeformation type="bendjoint" resolution="5,5" sync="-1" typename="bendjoint" blendmode="Add" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
</deformablesprite>
</limb>
<limb id="4" width="53.55" height="47.600002" type="Tail" flip="True" healthindex="4" attackpriority="1" steerforce="0" stepoffset="0,0" bodytype="Dynamic" radius="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Limb 4" notes="" spriteorientation="270" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="194,226,126,112" depth="0.023" origin="0.5571429,0.4659517" subdivisions="5,5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False">
<spritedeformation type="bendjoint" resolution="5,5" sync="-1" typename="bendjoint" blendmode="Add" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
</deformablesprite>
</limb>
<limb id="5" width="39.95" height="28.900003" type="Tail" flip="True" healthindex="4" attackpriority="1" steerforce="0" stepoffset="0,0" bodytype="Dynamic" radius="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Limb 5" notes="" spriteorientation="270" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="0,270,94,68" depth="0.24" origin="0.53557885,0.59164065" subdivisions="5,5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False">
<spritedeformation type="bendjoint" resolution="5,5" sync="-1" typename="bendjoint" blendmode="Add" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
</deformablesprite>
</limb>
<limb id="6" width="37.399998" height="23.800001" type="Tail" flip="True" healthindex="4" attackpriority="1" steerforce="0" stepoffset="0,0" bodytype="Dynamic" radius="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Limb 6" notes="" spriteorientation="270" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="100,228,88,56" depth="0.025" origin="0.5984064,0.5294023" subdivisions="5,5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False">
<spritedeformation type="bendjoint" resolution="5,5" sync="-1" typename="bendjoint" blendmode="Add" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
</deformablesprite>
</limb>
<limb id="7" width="39.1" height="20.400002" type="Tail" flip="True" healthindex="4" attackpriority="1" steerforce="0" stepoffset="0,0" bodytype="Dynamic" radius="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Limb 7" notes="" spriteorientation="270" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="94,284,92,48" depth="0.26" origin="0.54265505,0.5360783" subdivisions="5,5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False">
<spritedeformation type="bendjoint" resolution="5,5" sync="-1" typename="bendjoint" blendmode="Add" usemovementsine="False" stopwhenhostisdead="False" sineoffset="0" strength="1" maxrotation="90" onlyinwater="False" />
</deformablesprite>
</limb>
<!-- Jaw -->
<limb id="8" width="53.55" height="38.25" ignorecollisions="True" flip="True" type="Jaw" healthindex="1" attackpriority="2" steerforce="0" stepoffset="0,0" bodytype="Dynamic" radius="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="0,0" refjoint="-1" name="Jaw" notes="" spriteorientation="90" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="322,166,126,90" depth="0.11" origin="0.53524786,0.5846235" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
<attack context="Ground" cooldown="0.5" range="50" damagerange="50" duration="0.25" stun="0" structuredamage="0" itemdamage="0" structuresoundtype="" targetimpulse="0" targetimpulseworld="0,-5" severlimbsprobability="0.1" force="10" torque="100" hitdetectiontype="Distance" onlyhumans="False" targetforce="0" targetforceworld="0,0" priority="0" targettype="Character" secondarycooldown="0" applyforcesonlyonce="False" stickchance="0" cooldownrandomfactor="0.25" afterattack="Pursue" reverse="False" targetlimbtype="None" retreat="False" applyforceonlimbs="0, 8" afterattackdelay="0" rootforceworldstart="0,0" rootforceworldmiddle="0,0" rootforceworldend="0,0" roottransitioneasing="Linear" fullspeedafterattack="False" emitstructuredamageparticles="True" penetration="0" levelwalldamage="0" ranged="False" avoidfriendlyfire="False" requiredangle="20" submarineimpactmultiplier="1" blink="False">
<Affliction identifier="stun" strength="0.1" probability="0.5" />
<Affliction identifier="bitewounds" strength="3" probability="1" />
<Affliction identifier="bleeding" strength="5" probability="0.5" />
<StatusEffect type="OnUse" target="This" disabledeltatime="true">
<ReduceAffliction type="damage" strength="2" />
</StatusEffect>
</attack>
</limb>
<limb id="14" width="25" height="20" name="Jump Attack" type="None" spriteorientation="NaN" flip="True" mirrorvertically="False" mirrorhorizontally="False" hide="True" attackpriority="1" steerforce="0" radius="0" density="1" ignorecollisions="True" angulardamping="7" pullpos="0,0" stepoffset="0,0" refjoint="-1" mouthpos="0,0" notes="" healthindex="0" friction="0.3" restitution="0.05" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<sprite sourcerect="458,128,50,40" origin="0.44604877,0.5119512" depth="0" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
<attack context="Ground" cooldown="5" range="200" damagerange="100" duration="0.5" structuredamage="0" itemdamage="0" structuresoundtype="StructureSlash" targetimpulse="0" targetimpulseworld="0,0" severlimbsprobability="0.5" force="20" rootforceworldstart="0,25" rootforceworldmiddle="10,50" rootforceworldend="10,-50" roottransitioneasing="Smooth" applyforceonlimbs="0, 1, 15, 11" torque="50" hitdetectiontype="Distance" onlyhumans="False" targetforce="20" targetforceworld="0,-15" priority="1" targettype="Character" secondarycooldown="0.01" applyforcesonlyonce="False" stickchance="0" cooldownrandomfactor="0.25" afterattack="PursueIfCanAttack" reverse="False" targetlimbtype="Torso" retreat="False" afterattackdelay="0" stun="0" fullspeedafterattack="False" emitstructuredamageparticles="True" penetration="0" levelwalldamage="0" ranged="False" avoidfriendlyfire="False" requiredangle="20" submarineimpactmultiplier="1" blink="False">
<Affliction identifier="stun" strength="1.5" probability="1" />
<Affliction identifier="bitewounds" strength="12" probability="1" />
</attack>
</limb>
<limb id="16" width="25" height="20" name="Water Attack C" type="None" spriteorientation="NaN" flip="True" mirrorvertically="False" mirrorhorizontally="False" hide="True" attackpriority="1" steerforce="0" radius="0" density="1" ignorecollisions="True" angulardamping="7" pullpos="0,0" stepoffset="0,0" refjoint="-1" mouthpos="0,0" notes="" healthindex="0" friction="0.3" restitution="0.05" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<sprite sourcerect="458,128,50,40" origin="0.44604877,0.5119512" depth="0" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
<attack context="Water" cooldown="3" range="150" damagerange="50" duration="0.5" structuredamage="0" itemdamage="0" structuresoundtype="StructureSlash" targetimpulse="50" targetimpulseworld="0,0" severlimbsprobability="0.5" force="20" applyforceonlimbs="0, 11, 15" torque="0" hitdetectiontype="Distance" onlyhumans="False" targetforce="0" targetforceworld="0,0" priority="0" targettype="Character" secondarycooldown="0.5" applyforcesonlyonce="False" stickchance="0" cooldownrandomfactor="0.25" afterattack="FollowThrough" reverse="False" targetlimbtype="None" retreat="False" afterattackdelay="0" stun="0" rootforceworldstart="0,0" rootforceworldmiddle="0,0" rootforceworldend="0,0" roottransitioneasing="Linear" fullspeedafterattack="False" emitstructuredamageparticles="True" penetration="0" levelwalldamage="0" ranged="False" avoidfriendlyfire="False" requiredangle="20" submarineimpactmultiplier="1" blink="False">
<Affliction identifier="stun" strength="0.25" probability="1" />
<Affliction identifier="bitewounds" strength="12" probability="1" />
<affliction identifier="bleeding" strength="12" probability="0.5" />
<StatusEffect type="OnUse" target="This" disabledeltatime="true">
<ReduceAffliction type="damage" strength="5" />
</StatusEffect>
</attack>
</limb>
<limb id="17" width="25" height="20" name="Structure Attack" type="None" spriteorientation="NaN" flip="True" mirrorvertically="False" mirrorhorizontally="False" hide="True" attackpriority="1" steerforce="0" radius="0" density="1" ignorecollisions="True" angulardamping="7" pullpos="0,0" stepoffset="0,0" refjoint="-1" mouthpos="0,0" notes="" healthindex="0" friction="0.3" restitution="0.05" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<sprite sourcerect="458,128,50,40" origin="0.44604877,0.5119512" depth="0" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
<attack context="Any" cooldown="3" range="100" damagerange="50" duration="0.5" structuredamage="35" itemdamage="10" structuresoundtype="StructureSlash" targetimpulse="40" targetimpulseworld="0,0" severlimbsprobability="0.5" force="20" applyforceonlimbs="0, 11, 15" torque="50" hitdetectiontype="Distance" onlyhumans="False" targetforce="0" targetforceworld="0,0" priority="0" targettype="Structure" secondarycooldown="1" applyforcesonlyonce="False" stickchance="0" cooldownrandomfactor="0.25" afterattack="FallBack" afterattackdelay="0.2" reverse="False" targetlimbtype="None" retreat="False" rootforceworldstart="0,0" rootforceworldmiddle="0,0" rootforceworldend="0,0" roottransitioneasing="Linear" fullspeedafterattack="False" emitstructuredamageparticles="True" penetration="0" levelwalldamage="35" ranged="False" avoidfriendlyfire="False" requiredangle="20" stun="0" submarineimpactmultiplier="1" blink="False" />
</limb>
<limb id="9" width="0" height="0" type="RightThigh" flip="False" healthindex="3" attackpriority="1" steerforce="0" stepoffset="0,0" radius="30" mass="0" friction="0.3" restitution="0.05" density="5" pullpos="0,0" refjoint="-1" ignorecollisions="False" name="Limb 9" notes="" spriteorientation="210" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="0,340,140,174" depth="0.11" origin="0.4472283,0.4274753" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
</limb>
<limb id="10" width="90" height="30" type="RightLeg" flip="False" healthindex="3" attackpriority="1" steerforce="0" stepoffset="0,0" radius="0" mass="0" friction="0.3" restitution="0.05" density="10" pullpos="21.6116,-9.738574" refjoint="8" ignorecollisions="False" name="RightArm" notes="" spriteorientation="90" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="320,260,190,86" depth="0.05" origin="0.452,0.59239936" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
</limb>
<!--Left Claw-->
<limb id="11" width="20" height="87.549995" ignorecollisions="False" flip="False" mass="0.5" type="RightFoot" healthindex="2" attackpriority="1" steerforce="0" stepoffset="0,0" bodytype="Dynamic" radius="0" friction="0.3" restitution="0.05" density="10" pullpos="-3.9884124,-1.8825091" refjoint="0" name="LeftClaw" notes="" spriteorientation="180" mirrorvertically="False" mirrorhorizontally="False" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="0,0,72,206" depth="0.5" origin="0.6944444,0.49514562" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
<sound tag="footstep_crawler" />
</limb>
<limb id="12" radius="0" width="90" height="30" mass="0" name="LeftArm" type="RightLeg" spriteorientation="NaN" flip="False" mirrorvertically="False" mirrorhorizontally="False" healthindex="2" attackpriority="1" steerforce="0" stepoffset="0,0" density="10" pullpos="27.3626,-6.016137" refjoint="-1" ignorecollisions="False" notes="" friction="0.3" restitution="0.05" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="320,260,190,84" origin="0.452,0.592" depth="0.5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
</limb>
<limb id="13" radius="29.750002" width="0" height="0" mass="0" name="Limb 13" type="RightThigh" spriteorientation="210" flip="False" mirrorvertically="False" mirrorhorizontally="False" healthindex="2" attackpriority="1" steerforce="0" stepoffset="0,0" density="10" pullpos="0,0" refjoint="-1" ignorecollisions="False" notes="" friction="0.3" restitution="0.05" hide="False" angulardamping="7" mouthpos="0,0" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="0,340,140,174" origin="0.5574913,0.53277266" depth="0.5" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
</limb>
<!--Right Claw-->
<limb id="15" radius="0" width="20" height="87.549995" name="RightClaw" type="RightFoot" spriteorientation="180" flip="False" mirrorvertically="False" mirrorhorizontally="False" hide="False" attackpriority="1" steerforce="0" density="10" ignorecollisions="False" angulardamping="7" pullpos="-5.450408,-0.114616506" stepoffset="0,0" refjoint="0" mouthpos="0,0" notes="" healthindex="3" friction="0.3" restitution="0.05" constanttorque="0" constantangle="0" scale="1" attackforcemultiplier="1" minseverancedamage="3" inheritlimbdepth="None" severedfadeouttime="10" applytailangle="False" sinefrequencymultiplier="1" sineamplitudemultiplier="1" blinkfrequency="0" blinkdurationin="0.2" blinkdurationout="0.5" blinkholdtime="0" blinkrotationin="0" blinkrotationout="45" blinkforce="50" onlyblinkinwater="False" blinktransitionin="Linear" blinktransitionout="Linear" canbeseveredalive="True">
<deformablesprite sourcerect="0,0,72,206" origin="0.6944444,0.49514562" depth="0" texture="" color="255,255,255,255" deadcolor="255,255,255,255" deadcolortime="0" ignoretint="False" />
<sound tag="footstep_crawler" />
</limb>
<!-- Joints -->
<joint limb1="0" limb2="1" limb1anchor="-21.448105,-10.967147" limb2anchor="47.691612,22.467834" canbesevered="True" limitenabled="True" upperlimit="45" lowerlimit="-30" name="Joint 0 - 1" stiffness="0.25" severanceprobabilitymodifier="0.25" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="1" limb2="2" limb1anchor="-43.57685,-1.7223679" limb2anchor="29.98288,1.783022" canbesevered="True" limitenabled="True" upperlimit="8.367105" lowerlimit="-66.20706" name="Joint 1 - 2" stiffness="0.25" severanceprobabilitymodifier="0" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<!-- Tail -->
<joint limb1="2" limb2="3" limb1anchor="-22.80847,-2.8231318" limb2anchor="31.19618,-1.2611864" canbesevered="True" limitenabled="True" upperlimit="45" lowerlimit="-30" name="Joint 2 - 3" stiffness="0.25" severanceprobabilitymodifier="0.1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="3" limb2="4" limb1anchor="-28.94305,-3.5352855" limb2anchor="19.21655,-1.4235371" canbesevered="True" limitenabled="True" upperlimit="45" lowerlimit="-30" name="Joint 3 - 4" stiffness="0.25" severanceprobabilitymodifier="0.2" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="4" limb2="5" limb1anchor="-26.94205,-2.537231" limb2anchor="15.81753,1.520584" canbesevered="True" limitenabled="True" upperlimit="45" lowerlimit="-30.02529" name="Joint 4 - 5" stiffness="0.25" severanceprobabilitymodifier="0.3" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="5" limb2="6" limb1anchor="-16.309858,-1.172784" limb2anchor="11.703393,0.21717258" canbesevered="True" limitenabled="True" upperlimit="45" lowerlimit="-29.95912" name="Joint 5 - 6" stiffness="0.25" severanceprobabilitymodifier="0.4" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="6" limb2="7" limb1anchor="-19.064672,-0.7376906" limb2anchor="12.628254,-2.6309388" canbesevered="True" limitenabled="True" upperlimit="45" lowerlimit="-30" name="Joint 6 - 7" stiffness="0.25" severanceprobabilitymodifier="0.5" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="0" limb2="8" limb1anchor="-7.662386,-21.138512" limb2anchor="-21.757051,13.208095" canbesevered="True" limitenabled="True" upperlimit="9" lowerlimit="-21.58732" name="Joint 0 - 8" stiffness="0.25" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="1" limb2="9" limb1anchor="-3.5972703,6.2334614" limb2anchor="22.849667,7.519464" canbesevered="True" limitenabled="True" upperlimit="65" lowerlimit="-35" name="Joint 1 - 9" stiffness="0.25" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="9" limb2="10" limb1anchor="-22.397194,-37.906563" limb2anchor="-32.754326,14.481597" canbesevered="True" limitenabled="True" upperlimit="45" lowerlimit="-90" name="Joint 9 - 10" stiffness="0.2" severanceprobabilitymodifier="0" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="1" limb2="13" limb1anchor="19.067951,15.83907" limb2anchor="14.806871,17.870033" name="Joint 1 - 13" canbesevered="True" limitenabled="True" upperlimit="64.97125" lowerlimit="-35" stiffness="0.25" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="13" limb2="12" limb1anchor="-28.900497,-29.457531" limb2anchor="-32.55083,12.579753" name="Joint 13 - 12" canbesevered="True" limitenabled="True" upperlimit="45" lowerlimit="-90" stiffness="0.2" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="14" limb2="0" limb1anchor="0.20820096,0.67279637" limb2anchor="28.857014,-30.433556" name="Joint 14 - 0 (Jump Attack)" canbesevered="False" limitenabled="True" upperlimit="0" lowerlimit="0" stiffness="0.25" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="16" limb2="0" limb1anchor="0.20820096,0.67279637" limb2anchor="28.857014,-30.433556" name="Joint 16 - 0 (Water Attack C)" canbesevered="False" limitenabled="True" upperlimit="0" lowerlimit="0" stiffness="0.25" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="17" limb2="0" limb1anchor="0.20820096,0.67279637" limb2anchor="28.857014,-30.433556" name="Joint 17 - 0 (Water Attack S)" canbesevered="False" limitenabled="True" upperlimit="0" lowerlimit="0" stiffness="0.25" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="12" limb2="11" limb1anchor="35.248386,-7.2936254" limb2anchor="-1.9848251,41.149693" name="Joint 12 - 11" canbesevered="True" limitenabled="True" upperlimit="145" lowerlimit="-45" stiffness="0.25" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
<joint limb1="10" limb2="15" limb1anchor="35.34168,-6.990353" limb2anchor="-2.0823996,41.17109" name="Joint 10 - 15" canbesevered="True" limitenabled="True" upperlimit="145" lowerlimit="-45" stiffness="0.25" severanceprobabilitymodifier="1" scale="1" breaksound="gore" weldjoint="False" clockwiserotation="False" />
</Ragdoll>

View File

@@ -0,0 +1,312 @@
<?xml version="1.0" encoding="utf-8"?>
<Override>
<Character specifiertags="true" skincolors="(#fce1c6, 100); (#f3c696, 100); (#f3c696, 100); (#aa7744, 100); (#f4be98, 100); (#d69a70, 100); (#ab7046, 100); (#774929, 100); (#c8a583, 100); (#a57c53, 100); (#7a5026, 100); (#4a3219, 100); (#957966, 100); (#714d34, 100); (#532d12, 100); (#26190e, 100)" haircolors="(#ded7cc, 100); (#d2a36f, 100); (#c77d52, 100); (#ac4934, 100); (#d8ba85, 100); (#cd975a, 100); (#a15837, 100); (#6a3b37, 100); (#bba981, 100); (#8b7e6c, 100); (#594349, 100); (#473637, 100); (#7b8478, 100); (#494e55, 100); (#3a3a3c, 100); (#343030, 100)" facialhaircolors="(#ded7cc, 100); (#d2a36f, 100); (#c77d52, 100); (#ac4934, 100); (#d8ba85, 100); (#cd975a, 100); (#a15837, 100); (#6a3b37, 100); (#bba981, 100); (#8b7e6c, 100); (#594349, 100); (#473637, 100); (#7b8478, 100); (#494e55, 100); (#3a3a3c, 100); (#343030, 100)" SpeciesName="Human" SpeciesTranslationOverride="" DisplayName="" Group="human" Humanoid="True" HasInfo="True" CanInteract="True" CanClimb="True" Husk="False" UseHuskAppendage="True" NeedsAir="True" NeedsWater="False" CanSpeak="True" UseBossHealthBar="False" Noise="150" Visibility="150" BloodDecal="blood" BleedParticleAir="blooddrop" BleedParticleWater="waterblood" BleedParticleMultiplier="1" CanEat="True" EatingSpeed="10" UsePathFinding="True" PathFinderPriority="1" HideInSonar="False" HideInThermalGoggles="False" SonarDisruption="0" DistantSonarRange="0" DisableDistance="25000" SoundInterval="10">
<names path="Content/Characters/Human/names.xml" />
<!-- ======================= The Bug ======================= -->
<ragdolls folder="Content/Characters/Human/Bugdolls" />
<!-- ======================= The Bug ======================= -->
<animations folder="Content/Characters/Human/Animations" />
<damageemitter drawontop="True" Particle="gib" AngleMin="0" AngleMax="360" ScaleMin="0.25" ScaleMax="0.5" VelocityMin="50" VelocityMax="300" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="10" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<bloodemitter Particle="blood" AngleMin="0" AngleMax="0" ScaleMin="1" ScaleMax="1" VelocityMin="0" VelocityMax="0" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="10" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<bloodemitter Particle="waterblood" AngleMin="0" AngleMax="0" ScaleMin="1" ScaleMax="1" VelocityMin="0" VelocityMax="0" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="1" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<gibemitter Particle="gib" AngleMin="0" AngleMax="360" ScaleMin="1" ScaleMax="1" VelocityMin="200" VelocityMax="700" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="20" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<gibemitter Particle="heavygib" AngleMin="0" AngleMax="360" ScaleMin="1" ScaleMax="1" VelocityMin="50" VelocityMax="500" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="10" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<sound File="Content/Characters/Human/female_damage1.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage2.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage3.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage4.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage5.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage6.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage7.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage8.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage9.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage10.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/male_damage1.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage2.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage3.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage4.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage5.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage6.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage7.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage8.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage9.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage10.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage11.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<health Vitality="100" DoesBleed="True" CrushDepth="6000" UseHealthWindow="True" BleedingReduction="0" BurnReduction="0.075" ConstantHealthRegeneration="0" HealthRegenerationWhenEating="0" StunImmunity="False" PoisonImmunity="False" ApplyAfflictionColors="True">
<MedUISilhouette texture="Content/UI/Health/MedUI_Silhouette.png" columns="8" rows="2" sourcerect="0,0,1008,748" />
<MedUIExtra texture="Content/UI/Health/MedUIExtra.png" columns="4" rows="4" sourcerect="0,0,1024,1024" />
<Limb name="Head">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="1,0,126,374" highlightarea="41,0,45,54" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="1,515,126,374" />
<VitalityMultiplier type="damage" multiplier="2.0" />
</Limb>
<Limb name="Torso">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="631,0,126,374" highlightarea="29,56,70,134" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="631,515,126,374" />
<VitalityMultiplier type="bleeding" multiplier="2.0" />
</Limb>
<Limb name="LeftArm">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="379,0,126,374" highlightarea="1,69,27,140" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="379,515,126,374" />
<VitalityMultiplier type="damage" multiplier="0.5" />
</Limb>
<Limb name="RightArm">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="127,0,126,374" highlightarea="100,69,27,140" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="127,515,126,374" />
<VitalityMultiplier type="damage" multiplier="0.5" />
</Limb>
<Limb name="LeftLeg">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="505,0,126,374" highlightarea="3,180,57,194" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="505,515,126,374" />
<VitalityMultiplier type="damage" multiplier="0.5" />
</Limb>
<Limb name="RightLeg">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="253,0,126,374" highlightarea="68,180,57,194" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="253,515,126,374" />
<VitalityMultiplier type="damage" multiplier="0.5" />
</Limb>
</health>
<inventory arrowslot="9" Slots="Card, Headset, Head, InnerClothes, OuterClothes, LeftHand, RightHand, Bag, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, HealthInterface" AccessibleWhenAlive="True" Commonness="1" />
<Heads>
<Head tags="head1,male" sheetindex="0,0" />
<Head tags="head2,male" sheetindex="1,0" />
<Head tags="head3,male" sheetindex="2,0" />
<Head tags="head4,male" sheetindex="3,0" />
<Head tags="head5,male" sheetindex="0,1" />
<Head tags="head6,male" sheetindex="1,1" />
<Head tags="head7,male" sheetindex="2,1" />
<Head tags="head8,male" sheetindex="3,1" />
<Head tags="head9,male" sheetindex="0,2" />
<Head tags="head10,male" sheetindex="1,2" />
<Head tags="head11,male" sheetindex="2,2" />
<Head tags="head12,male" sheetindex="3,2" />
<Head tags="head13,male" sheetindex="0,3" />
<Head tags="head14,male" sheetindex="1,3" />
<Head tags="head15,male" sheetindex="2,3" />
<Head tags="head16,male" sheetindex="3,3" />
<Head tags="head1,female" sheetindex="0,0" />
<Head tags="head2,female" sheetindex="1,0" />
<Head tags="head3,female" sheetindex="2,0" />
<Head tags="head4,female" sheetindex="3,0" />
<Head tags="head5,female" sheetindex="0,1" />
<Head tags="head6,female" sheetindex="1,1" />
<Head tags="head7,female" sheetindex="2,1" />
<Head tags="head8,female" sheetindex="3,1" />
<Head tags="head9,female" sheetindex="0,2" />
<Head tags="head10,female" sheetindex="1,2" />
<Head tags="head11,female" sheetindex="2,2" />
<Head tags="head12,female" sheetindex="3,2" />
<Head tags="head13,female" sheetindex="0,3" />
<Head tags="head14,female" sheetindex="1,3" />
<Head tags="head15,female" sheetindex="2,3" />
<Head tags="head16,female" sheetindex="3,3" />
</Heads>
<Vars>
<Var var="GENDER" tags="female,male" />
</Vars>
<MenuCategory var="GENDER" />
<Pronouns var="GENDER" />
<HeadAttachments>
<Wearable type="Hair" tags="male">
<sprite name="Hair 1" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="0,0" />
</Wearable>
<Wearable type="Hair" tags="male">
<sprite name="Hair 2" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="1,0" />
</Wearable>
<Wearable type="Hair" tags="male">
<sprite name="Hair 3" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="2,0" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 4" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="3,0" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 5" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="0,1" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 6" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="1,1" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 7" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="2,1" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 8" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="3,1" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 9" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="0,2" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 10" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="1,2" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 11" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="2,2" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 12" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="3,2" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 13" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="0,3" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 14" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="1,3" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 15" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="2,3" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 16" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="3,3" />
</Wearable>
<Wearable type="Hair" tags="female">
<sprite name="Hair 1" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="0,0" />
</Wearable>
<Wearable type="Hair" tags="female">
<sprite name="Hair 2" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="1,0" />
</Wearable>
<Wearable type="Hair" tags="female">
<sprite name="Hair 3" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="2,0" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 4" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="3,0" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 5" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="0,1" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 6" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="1,1" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 7" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="2,1" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 8" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="3,1" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 9" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="0,2" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 10" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="1,2" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 11" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="2,2" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 12" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="3,2" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 13" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="0,3" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 14" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="1,3" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 15" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="2,3" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 16" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="3,3" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 1" texture="Content/Characters/Human/Human_beards.png" sheetindex="0,0" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 2" texture="Content/Characters/Human/Human_beards.png" sheetindex="1,0" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 3" texture="Content/Characters/Human/Human_beards.png" sheetindex="2,0" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 4" texture="Content/Characters/Human/Human_beards.png" sheetindex="3,0" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 5" texture="Content/Characters/Human/Human_beards.png" sheetindex="0,1" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 6" texture="Content/Characters/Human/Human_beards.png" sheetindex="1,1" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 7" texture="Content/Characters/Human/Human_beards.png" sheetindex="2,1" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 8" texture="Content/Characters/Human/Human_beards.png" sheetindex="3,1" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 9" texture="Content/Characters/Human/Human_beards.png" sheetindex="0,2" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 10" texture="Content/Characters/Human/Human_beards.png" sheetindex="1,2" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 11" texture="Content/Characters/Human/Human_beards.png" sheetindex="2,2" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 12" texture="Content/Characters/Human/Human_beards.png" sheetindex="3,2" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 13" texture="Content/Characters/Human/Human_beards.png" sheetindex="0,3" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 14" texture="Content/Characters/Human/Human_beards.png" sheetindex="1,3" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 15" texture="Content/Characters/Human/Human_beards.png" sheetindex="2,3" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 16" texture="Content/Characters/Human/Human_beards.png" sheetindex="3,3" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 1" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="0,0" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 2" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="1,0" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 3" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="2,0" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 4" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="3,0" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 5" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="0,1" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 6" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="1,1" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 7" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="2,1" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 8" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="3,1" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.05">
<sprite name="FaceAttachment 9" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="0,2" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 10" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="1,2" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.03">
<sprite name="FaceAttachment 11" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="2,2" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 12" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="3,2" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 13" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="0,3" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 14" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="1,3" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 15" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="2,3" />
</Wearable>
<!--
<Wearable type="FaceAttachment" commonness="1.0">
<sprite name="FaceAttachment 16" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="3,3"/>
</Wearable>
-->
<Wearable type="Husk">
<sprite name="Husk" texture="Content/Characters/Human/Human_husk.png" hidewearablesoftype="Beard" sheetindex="0,0" />
</Wearable>
<Wearable type="Herpes">
<sprite name="Herpes" texture="Content/Characters/Human/Human_karma.png" sheetindex="0,0" />
</Wearable>
</HeadAttachments>
</Character>
</Override>

View File

@@ -0,0 +1,68 @@
<override>
<Character speciesname="Mudraptor" humanoid="False" group="mudraptor" husk="False" needsair="False" canspeak="False" noise="200" visibility="100" blooddecal="blood" eatingspeed="10" speciestranslationoverride="" displayname="" hasinfo="False" usehuskappendage="False" needswater="False" bleedparticleair="blooddrop" bleedparticlewater="waterblood" pathfinderpriority="1" hideinsonar="False" sonardisruption="0">
<ragdolls file="Content/Characters/Human/Bugdolls.xml"/>
<animations />
<health vitality="150" doesbleed="True" crushdepth="Infinity" usehealthwindow="False" bleedingreduction="1" burnreduction="0" constanthealthregeneration="0" healthregenerationwheneating="1">
<Limb name="Torso" />
<Limb name="Head" />
<Limb name="LeftLeg" />
<Limb name="RightLeg" />
<!--Tail-->
<Limb/>
</health>
<damageemitter particle="gib" particleamount="10" velocitymin="200" velocitymax="300" anglemin="0" anglemax="360" scalemin="0.15" scalemax="0.2" emitinterval="0" particlespersecond="0" highqualitycollisiondetection="False" copyentityangle="False" />
<bloodemitter particle="blood" particleamount="1" anglemin="0" anglemax="0" scalemin="1" scalemax="1" velocitymin="0" velocitymax="0" emitinterval="0" particlespersecond="0" highqualitycollisiondetection="False" copyentityangle="False" />
<bloodemitter particle="waterblood" particleamount="1" anglemin="0" anglemax="0" scalemin="1" scalemax="1" velocitymin="0" velocitymax="0" emitinterval="0" particlespersecond="0" highqualitycollisiondetection="False" copyentityangle="False" />
<gibemitter particle="gib" particleamount="20" velocitymin="200" velocitymax="700" anglemin="0" anglemax="360" scalemin="0.25" scalemax="0.5" emitinterval="0" particlespersecond="0" highqualitycollisiondetection="False" copyentityangle="False" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_attack1.ogg" state="Attack" range="3000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_attack2.ogg" state="Attack" range="3000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_attack3.ogg" state="Attack" range="3000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_damage1.ogg" state="Damage" range="3000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_damage2.ogg" state="Damage" range="3000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_damage3.ogg" state="Damage" range="3000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_idle1.ogg" state="Idle" range="2000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_idle2.ogg" state="Idle" range="2000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_idle3.ogg" state="Idle" range="2000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_idle4.ogg" state="Idle" range="2000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_death1.ogg" state="Die" range="3000" volume="1" />
<sound file="Content/Characters/Mudraptor/MUDRAPTOR_death2.ogg" state="Die" range="3000" volume="1" />
<Inventory slots="Any, Any, Any, Any" accessiblewhenalive="False" commonness="15">
<Item identifier="hydroxyapatite" />
</Inventory>
<Inventory slots="Any, Any, Any, Any" accessiblewhenalive="False" commonness="5">
<Item identifier="hydroxyapatite" />
<Item identifier="diversremains" />
</Inventory>
<Inventory slots="Any, Any, Any, Any" accessiblewhenalive="False" commonness="1">
<Item identifier="hydroxyapatite" />
<Item identifier="mudraptorshell" forcetoslot="true"/>
</Inventory>
<Inventory slots="Any, Any, Any, Any" accessiblewhenalive="False" commonness="1">
<Item identifier="hydroxyapatite" />
<Item identifier="smallmudraptoregg" />
</Inventory>
<ai combatstrength="240" sight="1" hearing="1" aggressiveboarding="True" fleehealththreshold="0" aggressiongreed="20" aggressionhurt="300" attackwhenprovoked="True" avoidgunfire="False" enforceaggressivebehaviorformissions="True" targetouterwalls="True" randomattack="True">
<latchonto attachtowalls="true" attachtosub="false" attachlimb="HeadArmor" />
<target tag="decoy" state="Attack" priority="100" ignoreifnotinsamesub="True" />
<target tag="provocative" state="Attack" priority="100" ignoreifnotinsamesub="True"/>
<target tag="weapon" state="Attack" priority="100" ignoreifnotinsamesub="True"/>
<target tag="nasonov" state="Attack" priority="100" ignoreinside="True"/>
<target tag="stronger" state="Avoid" priority="100" reactdistance="2000" attackdistance="0" />
<target tag="tigerthresher" state="Avoid" priority="100" reactdistance="2000" />
<target tag="human" state="Attack" priority="90" reactdistance="0" attackdistance="0" />
<target tag="tool" state="Aggressive" priority="80" reactdistance="1000" attackdistance="0" ignoreifnotinsamesub="True"/>
<target tag="weaker" state="Attack" priority="60" reactdistance="0" attackdistance="0" />
<target tag="door" state="Attack" priority="30" reactdistance="0" attackdistance="0" />
<target tag="dead" state="Eat" priority="10" reactdistance="0" attackdistance="0" />
<target tag="wall" state="Attack" priority="10" reactdistance="0" attackdistance="0" />
<target tag="room" state="Attack" priority="10" reactdistance="0" attackdistance="0" />
<target tag="sonar" state="Attack" priority="10" reactdistance="0" attackdistance="0" ignoreinside="true"/>
<target tag="turret" state="Attack" priority="1" ignoreinside="true"/>
<target tag="searchlight" state="Attack" priority="1" ignoreinside="true"/>
<target tag="watcher" state="Protect" priority="1" ignoreinside="true"/>
<target tag="mudraptor_veteran" state="Follow" priority="1" ignoreinside="true" reactdistance="750"/>
<target tag="monsterfood" state="Eat" priority="1" />
<SwarmBehavior mindistfromclosest="300" maxdistfromcenter="1000" cohesion="0.25" />
</ai>
</Character>
</override>

View File

@@ -0,0 +1,32 @@
This mod includes a couple of differently configured character overrides and variants:
- Human: overrides the human character with a broken version whose ragdoll fails to load.
- Expected behavior: loading the human character will fail and cause console errors, and the game will load the vanilla version instead.
- Mudraptor: overrides Mudraptor with a broken version whose ragdoll fails to load.
- Expected behavior: loading a Mudraptor will fail and cause console errors, and the game will load the vanilla Crawler ragdoll instead.
- Variants of Mudraptor should fail to load as well, and switch to the Crawler ragdoll instead.
- Crawler: overrides Crawler with a green version with sunglasses.
- Expected behavior: Crawler spawns as a green version with sunglasses.
- This change should also affect variants of Crawler: Crawler_large should also be green and have sunglasses (even though the mod does
not modify it directly).
- Crawler_hatchling (variant of Crawler) should look unchanged, but load correctly (despite it being a vanilla character whose base
character has now been overridden by a mod).
- Testcyborgworm_m: adds a variant of the Cyborgworm (identical to the normal Cyborgworm).
- Expected behavior: Testcyborgworm_m looks identical to Cyborgworm.
- This has previously caused issues, because the Cyborgworm uses multiple textures, some of which aren't in the character folder,
and these used to load incorrectly when the character is a variant.
- Note that the character is configured incorrectly: it's defined to be an override, but there's no character (Testcyborgworm_m) it'd override.
It works regardless, so this can be used as a test case for checking that these incorrectly defined characters still load.
- Testcrawlerhatchling: overrides crawler hatchling with an identical version.
- Expected behavior: crawler hatchling looks normal, the same way as in vanilla game.
- This has previously caused issues, because we incorrectly tried to fetch the texture path from the root <override> element instead
of the <character> element under it.
- Spineling_morbusine_m: adds a variant of Spineling_morbusine (identical to the normal Spineling_morbusine).
- Expected behavior: Spineling_morbusine_m looks identical to Spineling_morbusine.
- This has previously caused issues, because Spineling_morbusine defines the ragdoll slightly differently than other monsters
(not in the usual Ragdoll folder, but a hard-coded path to a ragdoll file in the character's folder).

View File

@@ -0,0 +1 @@
<Charactervariant inherit="Spineling_morbusine" speciesname="Spineling_morbusine_m" />

View File

@@ -0,0 +1,15 @@
<Override>
<Charactervariant inherit="Crawler" speciesname="Crawler_hatchling" speciestranslationoverride="Crawler" texture="Content/Characters/Variants/Crawler_hatchling/crawlerhatchling.png" eatingspeed="1">
<health vitality="40"/>
<ragdoll scalemultiplier="0.5" texturescale="1.0" sourcerectscale="0.5"/>
<attack damagemultiplier="0.5" rangemultiplier="0.5" impactmultiplier="0.5" />
<animations folder="Content/Characters/Variants/Crawler_hatchling/Animations/"/>
<ai combatstrength="50">
<target tag="crawlerbroodmother" state="Protect" priority="10" reactdistance="500" ignoreinside="true"/>
<target tag="crawler_large" state="Protect" priority="5" reactdistance="500" ignoreinside="true"/>
<target tag="crawler" state="Protect" priority="2" reactdistance="500" ignoreinside="true"/>
<target tag="dead" state="Eat" priority="1" />
</ai>
<inventory/>
</Charactervariant>
</Override>

View File

@@ -0,0 +1,3 @@
<Override>
<Charactervariant inherit="Cyborgworm" speciesname="Testcyborgworm_m" />
</Override>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="Character override and variant tests" modversion="1.0.1" corepackage="False" gameversion="1.7.0.0">
<Character file="%ModDir%/Human.xml" />
<Character file="%ModDir%/Mudraptor.xml" />
<Character file="%ModDir%/Testcyborgworm_m.xml" />
<Character file="%ModDir%/Testcrawlerhatchling.xml" />
<Character file="%ModDir%/Characters/Crawler/Crawler.xml" />
<Character file="%ModDir%/Spineling_morbusine_m.xml" />
</contentpackage>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="Lighting stress (10000 lights)" modversion="1.0.0" corepackage="False" gameversion="1.11.5.0">
<Submarine file="%ModDir%/Lighting stress (10000 lights).sub" />
</contentpackage>

View File

@@ -0,0 +1,6 @@
<Missions>
<Mission identifier="missionvariant" variantof="killcrawlerswarm1" name="One Million Crawlers" description=":3" difficulty="4" commonness="100000000" reward="20000" sonarlabel="character.crawler">
<monster min="25" max="50"/>
<Reputation amount="10"/>
</Mission>
</Missions>

View File

@@ -0,0 +1,3 @@
<contentpackage name="Mission Variants Test" modversion="1.0.0" corepackage="False" gameversion="1.10.2.0">
<Missions file="%ModDir%/Missions.xml"/>
</contentpackage>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="[DebugOnlyTest]PipeTestSub" modversion="1.0.0" corepackage="False" gameversion="1.8.4.2">
<Submarine file="%ModDir%/Dugong_PipeTest.sub" />
</contentpackage>

Binary file not shown.

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="[DebugOnlyTest]PowerTestSub" modversion="1.0.9" corepackage="False" gameversion="1.8.0.0">
<Submarine file="%ModDir%/PowerTestSub.sub" />
</contentpackage>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="[DebugOnlyTest]RegEx Timeout Test" modversion="1.0.0" corepackage="False" gameversion="1.9.7.0">
<Submarine file="%ModDir%/RegEx Timeout Test.sub" />
</contentpackage>

View File

@@ -0,0 +1,23 @@
<Items>
<Item
name="Oxygen Dispenser Test"
identifier="oxygendispensertest"
tags="oxygengenerator,refuelableitem,donttakeitemstorefill"
category="Machine"
scale="0.5"
isshootable="true" GrabWhenSelected="true">
<Sprite texture="%ModDir%/EthanolPowerGenerator.png" depth="0.55" sourcerect="0,336,112,128"/>
<Body width="112" height="128" density="25" />
<Holdable selectkey="Select" pickkey="Use" slots="RightHand+LeftHand" msg="ItemMsgDetach" MsgWhenDropped="ItemMsgPickupSelect" PickingTime="5.0" holdpos="0,-80" handle1="-30,14" handle2="30,14" attachable="true" aimable="true" AttachesToFloor="true"
AttachedByDefault="true" DisallowAttachingOverTags="container,planter,refuelableitem" DisallowAttachingOverSize="115,130">
</Holdable>
<ItemContainer hideitems="false" drawinventory="true" ItemsUseInventoryPlacement="true" capacity="1" maxstacksize="1" canbeselected="true" itempos="32,-83" iteminterval="0,0" itemrotation="0" msg="ItemMsgOxygenRefill" containedspritedepth="0.1">
<GuiFrame relativesize="0.2,0.25" anchor="Center" minsize="140,170" maxsize="280,280" style="ItemUI" />
<SlotIcon slotindex="0" texture="Content/UI/StatusMonitorUI.png" sourcerect="64,448,64,64" origin="0.5,0.5" />
<Containable items="oxygensource" />
</ItemContainer>
</Item>
</Items>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<Items>
<Item name="fliptestholdable" identifier="fliptestholdable" Category="Misc" Tags="smallitem" health="35" maxstacksize="1" scale="0.5" isshootable="true" requireaimtouse="true">
<sprite texture="Content/Map/Outposts/Art/FactionItems.png" sourcerect="263,193,38,39" depth="0.2" origin="0.5,0.5" />
<Body radius="28" density="15" />
<LightComponent LightColor="220,150,30,150" range="15" IsOn="true" castshadows="false" lightoffset="40,20" vulnerabletoemp="false" >
<IsActiveConditional HasStatusTag="smoking" />
<StatusEffect OffsetCopiesEntityTransform="true" offset="40,20" type="OnUse" target="This" statuseffecttags="smoking" duration="0.1" stackable="false">
<ParticleEmitter particle="blooddrop" particlespersecond="10" scalemin="3" scalemax="3" velocitymin="0" velocitymax="0" colormultiplier="255,255,255,180" lifetimemultiplier="2"/>
<ParticleEmitter particle="smoke" particlespersecond="3" scalemin="0.35" scalemax="0.5" velocitymin="0" velocitymax="10" colormultiplier="255,255,255,200" />
</StatusEffect>
</LightComponent>
<Holdable slots="Any,RightHand,LeftHand" aimable="false" aimpos="32,21" handle1="0,-22" holdangle="0" aimangle="-25" swingamount="0,0" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickUpSelect">
<StatusEffect type="OnUse" target="This" Condition="-4.0" />
<StatusEffect type="OnUse" target="This">
<Conditional InWater="false" />
<Sound file="Content/Items/Medical/ITEM_cigarette.ogg" range="250" loop="true" selectionmode="Random" />
</StatusEffect>
<StatusEffect type="OnBroken" target="This">
<SpawnItem identifier="bananapeel" spawnposition="SameInventory"/>
<Remove />
</StatusEffect>
</Holdable>
</Item>
<Item name="fliptestlight" identifier="fliptestlighttower" width="176" height="352" texturescale="1.0,1.0" scale="0.5" category="Decorative" subcategory="mining" noninteractable="true">
<sprite texture="Content/Map/Outposts/Art/TunnelWalls.png" sourcerect="849,1697,176,352" depth="0.97" premultiplyalpha="false" origin="0.5,0.5" />
<LightComponent range="160.0" lightcolor="255,234,181,200" IsOn="true" castshadows="false" LightOffset="200,147" allowingameediting="false">
<sprite texture="Content/Map/Outposts/Art/TunnelWalls.png" sourcerect="671,1697,176,62" depth="0.1" origin="0.5,0.5" alpha="1.0" />
<StatusEffect OffsetCopiesEntityTransform="true" offset="200,147" type="OnActive" target="This" duration="0.1" stackable="false">
<ParticleEmitter particle="blooddrop" particlespersecond="10" scalemin="3" scalemax="3" velocitymin="0" velocitymax="0" colormultiplier="255,255,255,180" lifetimemultiplier="2"/>
<ParticleEmitter particle="smoke" particlespersecond="3" scalemin="0.35" scalemax="0.5" velocitymin="0" velocitymax="10" colormultiplier="255,255,255,200" />
</StatusEffect>
</LightComponent>
</Item>
</Items>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="[DebugOnlyTest]RotationAndFlippingTests" modversion="1.0.3" corepackage="False" gameversion="1.11.5.0">
<Item file="%ModDir%/OxygenDispenserTest.xml" />
<Item file="%ModDir%/StatusEffectAndLightTest.xml" />
<Submarine file="%ModDir%/RotationAndFlippingTests.sub" />
</contentpackage>

View File

@@ -0,0 +1,75 @@
print("Hello!")
Hook.Add("character.created", "test", function(character)
print("character.created: ", character)
end)
Hook.Add("character.death", "test", function(character)
print("character.death: ", character)
end)
Hook.Add("character.giveJobItems", "test", function(character)
print("character.giveJobItems: ", character)
end)
Hook.Add("roundStart", "test", function()
print("roundStart")
end)
Hook.Add("roundEnd", "test", function()
print("roundEnd")
end)
Hook.Add("missionsEnded", "test", function()
print("missionsEnded")
end)
-- cfg tests
local str = "CLIENT: "
if SERVER then
str = "SERVER: "
end
function OnChanged(cfg)
print(str, "cfg value for ", cfg.InternalName, " changed to ", cfg.Value)
end
local failed, package = trygetpackage("[DebugOnlyTest]TestLuaMod")
print("packageFailed=", failed)
print("package", package.Name)
local success, config = ConfigService.TryGetConfig(SettingBase.Int32, package, "TestSynchroServer")
local success2, config2 = ConfigService.TryGetConfig(SettingBase.Int32, package, "TestSynchroClient")
if not success or not success2 then
print("Failed to get configs.")
return
end
config.OnValueChanged.add(OnChanged)
config2.OnValueChanged.add(OnChanged)
print(str, " testsynchroclient=", config2.Value)
print(str, " testsynchroserver=", config.Value)
-- The server should keep updating the value and it should show up on the client.
-- The client should try updating and it should fail.
local lastTime = Timer.Time + 30 -- give time to join
Hook.Add("think", "printconfig", function()
if lastTime > Timer.Time then return end
lastTime = Timer.Time + 10
if SERVER then
local succ = config.TrySetValue(config.Value + 1)
print("Success of setting value on server for '", config.InternalName,"': ", succ)
end
if CLIENT then
local succ = config.TrySetValue(config.Value + 1)
print("Success of setting value on client for '", config.InternalName,"': ", succ, " | This should fail if permissions are not set for client.")
end
end)

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ModConfig>
<Lua File="%ModDir%/Lua/init.lua" IsAutorun="true" />
<Config File="%ModDir%/Settings.xml"/>
<Config File="%ModDir%/SettingsClient.xml" Target="Client"/>
<Config File="%ModDir%/SettingsServer.xml" Target="Server"/>
</ModConfig>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<Settings>
<Setting Name="TestTickbox" Type="bool" Value="true"/>
<Setting Name="TestSynchroClient" Type="int" NetSync="TwoWay" Value="40"/>
<Setting Name="TestSynchroServer" Type="int" NetSync="ServerAuthority" Value="25"/>
<Setting Name="TestFloat" Type="float" Value="3498"/>
<Setting Name="TestHidden" Type="bool" ShowInMenus="false" Value="false"/>
<Setting Name="TestRangeFloat" Type="rangeFloat" Min="0" Max="25" Steps="11" Value="4.5"/>
<Setting Name="TestRangeInt" Type="rangeInt" Min="0" Max="10" Steps="11" Value="4"/>
<Setting Name="TestString" Type="string" Value="ok"/>
<Setting Name="TestControl" Type="control" Value="A"/>
<Setting Name="TestDropdownList" Type="listString" Value="Hi">
<Values>
<Value Value="Entry A"/>
<Value Value="Entry B"/>
<Value Value="Hi"/>
<Value Value="YourMom"/>
</Values>
</Setting>
</Settings>
<Profiles>
<Profile Name="default">
<SettingValue Name="TestTickbox" Value="true"/>
<SettingValue Name="TestFloat" Value="5"/>
<SettingValue Name="TestHidden" Value="true"/>
<SettingValue Name="TestRangeFloat" Value="15"/>
<SettingValue Name="TestRangeInt" Value="7"/>
<SettingValue Name="TestString" Value="Hello!"/>
</Profile>
<Profile Name="other">
<SettingValue Name="TestTickbox" Value="false"/>
<SettingValue Name="TestFloat" Value="9"/>
<SettingValue Name="TestHidden" Value="false"/>
<SettingValue Name="TestRangeFloat" Value="4"/>
<SettingValue Name="TestRangeInt" Value="4"/>
<SettingValue Name="TestString" Value="Other loaded!"/>
</Profile>
</Profiles>
</Configuration>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<!-- Should match 'SettingsServer'. We define these on the client and server separately to give different values. -->
<Settings>
<Setting Name="TestSynchroClient" Type="int" NetSync="TwoWay" Value="3545" ShowInMenus="false"/>
<Setting Name="TestSynchroServer" Type="int" NetSync="ServerAuthority" Value="577" ShowInMenus="false"/>
</Settings>
</Configuration>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<!-- Should match 'SettingsClient'. We define these on the client and server separately to give different values. -->
<Settings>
<Setting Name="TestSynchroClient" Type="int" NetSync="TwoWay" Value="40" ShowInMenus="false"/>
<Setting Name="TestSynchroServer" Type="int" NetSync="ServerAuthority" Value="25" ShowInMenus="false"/>
</Settings>
</Configuration>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<infotexts language="English" nowhitespace="false" translatedname="English">
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestTickbox.DisplayName>Test TickBox</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestTickbox.DisplayName>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestTickbox.DisplayCategory>Tests</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestTickbox.DisplayCategory>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestFloat.DisplayName>Test Float</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestFloat.DisplayName>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestFloat.DisplayCategory>Tests</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestFloat.DisplayCategory>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestRangeFloat.DisplayName>Test Range Float</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestRangeFloat.DisplayName>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestRangeFloat.DisplayCategory>Tests</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestRangeFloat.DisplayCategory>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestRangeInt.DisplayName>Test Range Int</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestRangeInt.DisplayName>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestRangeInt.DisplayCategory>Tests</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestRangeInt.DisplayCategory>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestString.DisplayName>Test String</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestString.DisplayName>
<_x005B_DebugOnlyTest_x005D_TestLuaMod.TestString.DisplayCategory>Tests</_x005B_DebugOnlyTest_x005D_TestLuaMod.TestString.DisplayCategory>
</infotexts>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Items>
</Items>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="[DebugOnlyTest]TestLuaMod" >
<Text file="%ModDir%/Texts/English.xml"/>
<Item file="%ModDir%/dummy.xml" />
</contentpackage>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<RandomEvents>
<EventPrefabs>
<ScriptedEvent identifier="testpathfinding1" tags="testpathfinding_colony">
<SpawnAction NPCSetIdentifier="customnpcs1" NPCIdentifier="artiedolittle" TargetTag="npc1" SpawnPointTag="spawnpoint1" />
<SpawnAction NPCSetIdentifier="customnpcs1" NPCIdentifier="clownmessenger" TargetTag="npc2" SpawnPointTag="spawnpoint2" />
<SpawnAction NPCSetIdentifier="customnpcs1" NPCIdentifier="jacovsubra" TargetTag="npc3" SpawnPointTag="spawnpoint3" />
<SpawnAction NPCSetIdentifier="customnpcs1" NPCIdentifier="coalitionspy" TargetTag="npc4" SpawnPointTag="spawnpoint4" />
<SpawnAction NPCSetIdentifier="customnpcs1" NPCIdentifier="raptorowner" TargetTag="npc5" SpawnPointTag="spawnpoint5" />
<SpawnAction NPCSetIdentifier="customnpcs1" NPCIdentifier="hognose" TargetTag="npc6" SpawnPointTag="spawnpoint6" />
<SpawnAction NPCSetIdentifier="customnpcs1" NPCIdentifier="drugdealer" TargetTag="npc7" SpawnPointTag="spawnpoint7" />
<TagAction criteria="hullname:goalroom" tag="goal" />
<NPCFollowAction NPCTag="npc1" TargetTag="goal" />
<NPCFollowAction NPCTag="npc2" TargetTag="goal" />
<NPCFollowAction NPCTag="npc3" TargetTag="goal" />
<NPCFollowAction NPCTag="npc4" TargetTag="goal" />
<NPCFollowAction NPCTag="npc5" TargetTag="goal" forcewalk="true" />
<NPCFollowAction NPCTag="npc6" TargetTag="goal" forcewalk="true" />
<NPCFollowAction NPCTag="npc7" TargetTag="goal" forcewalk="true" />
<ConversationAction Text="Spawned 7 test NPCs. They should now navigate to the furthest module at the right side of the outpost. You may fast-forward by 60 seconds to skip to the end of the test." />
<WaitAction time="60" />
<CheckVisibilityAction EntityTag="npc1" TargetTag="goal" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 1 (Artie Dolittle) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc2" TargetTag="goal" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 2 (Clown Messenger) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc3" TargetTag="goal" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 3 (Jacov Subra) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc4" TargetTag="goal" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 4 (Coalition Operative) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc5" TargetTag="goal" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 5 (Severo Ruiz) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc6" TargetTag="goal" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 6 (Captain Hognose) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc7" TargetTag="goal" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 7 (Drug Dealer) did not make it to the target module in time." />
</Failure>
<Success>
<!-- ALL SUCCEEDED ******************************* -->
<ConversationAction Text="NPC test successful! All NPCs made it to the target module in time." />
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
<ConversationAction Text="Starting second test: making the NPCs navigate back to the left side of the outpost." />
<TagAction criteria="hullname:goalroom2" tag="goal2" />
<NPCFollowAction NPCTag="npc1" TargetTag="goal2" forcewalk="true" />
<WaitAction time="2" />
<NPCFollowAction NPCTag="npc2" TargetTag="goal2" forcewalk="true" />
<WaitAction time="2" />
<!-- follow another NPC instead of going directly for the goal! -->
<NPCFollowAction NPCTag="npc3" TargetTag="npc2" forcewalk="true" />
<WaitAction time="2" />
<NPCFollowAction NPCTag="npc4" TargetTag="goal2" />
<WaitAction time="2" />
<NPCFollowAction NPCTag="npc5" TargetTag="goal2" />
<WaitAction time="2" />
<NPCFollowAction NPCTag="npc6" TargetTag="goal2" />
<WaitAction time="2" />
<!-- follow another NPC instead of going directly for the goal! -->
<NPCFollowAction NPCTag="npc7" TargetTag="npc4" />
<WaitAction time="100" />
<CheckVisibilityAction EntityTag="npc1" TargetTag="goal2" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 1 (Artie Dolittle) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc2" TargetTag="goal2" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 2 (Clown Messenger) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc3" TargetTag="goal2" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 3 (Jacov Subra) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc4" TargetTag="goal2" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 4 (Coalition Operative) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc5" TargetTag="goal2" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 5 (Severo Ruiz) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc6" TargetTag="goal2" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 6 (Captain Hognose) did not make it to the target module in time." />
</Failure>
<Success>
<CheckVisibilityAction EntityTag="npc7" TargetTag="goal2" MaxDistance="500">
<Failure>
<ConversationAction Text="Test failed. NPC 7 (Drug Dealer) did not make it to the target module in time." />
</Failure>
<Success>
<!-- ALL SUCCEEDED ******************************* -->
<ConversationAction Text="NPC test successful! All NPCs made it to the target module in time." />
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</Success>
</CheckVisibilityAction>
</ScriptedEvent>
</EventPrefabs>
</RandomEvents>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="[DebugOnlyTest]TestPathFinding" modversion="1.0.0" corepackage="False" gameversion="1.12.4.0">
<Outpost file="%ModDir%/[DebugOnlyTest]TestPathFinding.sub" />
<RandomEvents file="%ModDir%/Events.xml" />
</contentpackage>

View File

@@ -0,0 +1,40 @@
<TesthumanRun
GetUpForce="0.70000005"
HeadLeanAmount="0.19393511"
TorsoLeanAmount="0.06872561"
FootMoveStrength="9"
FootLiftHorizontalFactor="1"
StepSizeWhenStanding="0,0"
FootAngle="3"
FootMoveOffset="-0.1,0"
LegBendTorque="50"
HandMoveAmount="0.4,0.2"
HandMoveOffset="-0.1,0.1"
HandClampY="-0.4"
ArmMoveStrength="4"
HandMoveStrength="2"
FixedHeadAngle="True"
StepSize="0.9478924,0.42175388"
HeadPosition="3.004777"
TorsoPosition="2.3845234"
StepLiftHeadMultiplier="1"
StepLiftAmount="6.499999"
StepLiftOffset="-0.5"
StepLiftFrequency="2"
BackwardsMovementMultiplier="0.75"
ClimbSpeed="1.5"
SlideSpeed="4"
ClimbBodyMoveForce="10.5"
ClimbHandMoveForce="5.2"
ClimbFootMoveForce="10"
ClimbStepHeight="50"
AnimationType="Run"
MovementSpeed="2.5"
CycleSpeed="2.8"
HeadAngle="0"
TorsoAngle="-10"
HeadTorque="60"
TorsoTorque="200"
FootTorque="80"
ArmIKStrength="3"
HandIKStrength="10" />

View File

@@ -0,0 +1,40 @@
<TesthumanWalk
GetUpForce="1"
HeadLeanAmount="0.1"
TorsoLeanAmount="0.08"
FootMoveStrength="6"
FootLiftHorizontalFactor="0.3"
StepSizeWhenStanding="0,0"
FootAngle="-7.4505806E-08"
FootMoveOffset="0,0"
LegBendTorque="15"
HandMoveAmount="0.6992701,0.04584685"
HandMoveOffset="0,0"
HandClampY="-1"
ArmMoveStrength="1"
HandMoveStrength="1"
FixedHeadAngle="True"
StepSize="0.8188831,0.5763266"
HeadPosition="3.255594"
TorsoPosition="2.486217"
StepLiftHeadMultiplier="1"
StepLiftAmount="4"
StepLiftOffset="-0.50000006"
StepLiftFrequency="2"
BackwardsMovementMultiplier="0.75"
ClimbSpeed="0.8"
SlideSpeed="2"
ClimbBodyMoveForce="10.5"
ClimbHandMoveForce="5.2"
ClimbFootMoveForce="10"
ClimbStepHeight="30"
AnimationType="Walk"
MovementSpeed="1.1"
CycleSpeed="4.05"
HeadAngle="0"
TorsoAngle="-6"
HeadTorque="60"
TorsoTorque="100"
FootTorque="70"
ArmIKStrength="3"
HandIKStrength="10" />

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<TesthumanCrouch footrotatestrength="45" crouchingfootmoveoffset="0,0" MoveDownAmountWhenStationary="0.25" ExtraHeadAngleWhenStationary="0.2" ExtraTorsoAngleWhenStationary="0.4" GetUpForce="1" HeadLeanAmount="0.2" TorsoLeanAmount="0.0063905665" FootMoveStrength="8" FootLiftHorizontalFactor="1" StepSizeWhenStanding="0,0" FootAngle="5" FootMoveOffset="-0.1,0" LegBendTorque="15" HandMoveAmount="0.22999997,0.20780796" HandMoveOffset="0.2,0" HandClampY="-0.2" ArmMoveStrength="1" HandMoveStrength="1" FixedHeadAngle="True" StepSize="0.87660325,0.47976005" HeadPosition="2.788823" TorsoPosition="1.9477382" StepLiftHeadMultiplier="1" StepLiftAmount="3.9999986" StepLiftOffset="-0.5" StepLiftFrequency="2" BackwardsMovementMultiplier="0.6" ClimbSpeed="1" SlideSpeed="2" ClimbBodyMoveForce="10.5" ClimbHandMoveForce="5.2" ClimbFootMoveForce="10" ClimbStepHeight="30" AnimationType="Crouch" MovementSpeed="1.4841671" CycleSpeed="3.528752" HeadAngle="0" TorsoAngle="-10" HeadTorque="50" TorsoTorque="170" FootTorque="25" ArmIKStrength="3" HandIKStrength="2.5" type="Testhuman" />

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<TesthumanRun GetUpForce="0.70000005" HeadLeanAmount="0.12057937" TorsoLeanAmount="0.06872561" FootMoveStrength="9" FootLiftHorizontalFactor="1" StepSizeWhenStanding="0,0" FootAngle="10" FootMoveOffset="-0.1,0" LegBendTorque="50" HandMoveAmount="0.15,0" HandMoveOffset="0.2,0" HandClampY="-0.1" ArmMoveStrength="4" HandMoveStrength="2" FixedHeadAngle="True" StepSize="1.3,0.5" HeadPosition="3.1514897" TorsoPosition="2.4529896" StepLiftHeadMultiplier="1" StepLiftAmount="5" StepLiftOffset="-0.5" StepLiftFrequency="2" BackwardsMovementMultiplier="0.75" ClimbSpeed="2" SlideSpeed="4" ClimbBodyMoveForce="10.5" ClimbHandMoveForce="6" ClimbFootMoveForce="10" ClimbStepHeight="60" AnimationType="Run" MovementSpeed="4.7247353" CycleSpeed="1.8" HeadAngle="0" TorsoAngle="-10" HeadTorque="60" TorsoTorque="200" FootTorque="80" ArmIKStrength="3" HandIKStrength="10" type="Testhuman" />

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<TesthumanSwimFast footrotatestrength="15" LegMoveAmount="1.7241129" LegCycleLength="5.1599464" FootAngle="65" HandMoveAmount="0.53,0.06247859" HandCycleSpeed="2.1006122" HandMoveOffset="0,0" ArmMoveStrength="7" HandMoveStrength="1" FixedHeadAngle="False" SteerTorque="2" LegTorque="12" AnimationType="SwimFast" MovementSpeed="2.5" CycleSpeed="3.640148" HeadAngle="20" TorsoAngle="0" HeadTorque="10" TorsoTorque="40" FootTorque="5" ArmIKStrength="3" HandIKStrength="10" type="Testhuman" />

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<TesthumanSwimSlow footrotatestrength="15" LegMoveAmount="0.37411213" LegCycleLength="8.197446" FootAngle="65" HandMoveAmount="0.53,0.06247859" HandCycleSpeed="2.1006122" HandMoveOffset="0,0" ArmMoveStrength="2" HandMoveStrength="0.5" FixedHeadAngle="False" SteerTorque="2" LegTorque="12" AnimationType="SwimSlow" MovementSpeed="1.5" CycleSpeed="3.640148" HeadAngle="20" TorsoAngle="0" HeadTorque="10" TorsoTorque="20" FootTorque="1" ArmIKStrength="3" HandIKStrength="10" type="Testhuman" />

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<TesthumanWalk GetUpForce="1" HeadLeanAmount="0.05" TorsoLeanAmount="0.05" FootMoveStrength="6" FootLiftHorizontalFactor="0.3" StepSizeWhenStanding="0.01,0" FootAngle="5" FootMoveOffset="0,0" LegBendTorque="15" HandMoveAmount="0.42871723,0.07966587" HandMoveOffset="0,0" HandClampY="-1" ArmMoveStrength="1" HandMoveStrength="1" FixedHeadAngle="True" StepSize="1,0.39" HeadPosition="3.2" TorsoPosition="2.5" StepLiftHeadMultiplier="1" StepLiftAmount="2.999999" StepLiftOffset="-0.5" StepLiftFrequency="2" BackwardsMovementMultiplier="0.75" ClimbSpeed="1" SlideSpeed="2" ClimbBodyMoveForce="10.5" ClimbHandMoveForce="5.2" ClimbFootMoveForce="10" ClimbStepHeight="30" AnimationType="Walk" MovementSpeed="1.7448974" CycleSpeed="3.1523502" HeadAngle="0" TorsoAngle="-5" HeadTorque="60" TorsoTorque="100" FootTorque="70" ArmIKStrength="3" HandIKStrength="10" type="Testhuman" />

View File

@@ -0,0 +1,130 @@
<Ragdoll type="Human" Texture="Content/Characters/Human/Human_[GENDER].png" Color="255,255,255,255" SpritesheetOrientation="180" LimbScale="0.5" JointScale="0.5" TextureScale="1" SourceRectScale="1" ColliderHeightFromFloor="140" ImpactTolerance="7.5" CanEnterSubmarine="True" CanWalk="True" Draggable="True" MainLimb="Torso">
<collider Name="Main Collider" Radius="30" Height="110" Width="0" BodyType="Dynamic" />
<collider Name="Secondary Collider" Radius="30" Height="80" Width="0" BodyType="Dynamic" />
<limb Name="Torso (0)" ID="0" Type="Torso" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="30" Height="70" Width="0" Density="10" IgnoreCollisions="False" AngularDamping="7" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="1" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="160,0,112,192" Origin="0.5,0.5" Depth="0.06" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="160,0,112,192" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="Head (1)" ID="1" Type="Head" SecondaryType="None" Notes="" Scale="0.5" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="0" InheritLimbDepth="None" SteerForce="0" Radius="45" Height="0" Width="0" Density="10" IgnoreCollisions="False" AngularDamping="7" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="0" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="0,0,128,128" Origin="0.5,0.5" Depth="0.05" Texture="Content/Characters/Human/Human_[GENDER]_heads.png" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_heads_mask.png" />
<huskmask texture="Content/Characters/Human/Human_husk_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damage.png" sourcerect="0,0,128,128" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
<StatusEffect type="OnDamaged" target="This">
<RequiredAffliction identifier="internaldamage,blunttrauma,bitewounds,explosiondamage,lacerations" minstrength="5" />
<Affliction identifier="concussion" strength="10" probability="0.25" />
</StatusEffect>
</limb>
<limb Name="RightArm (2)" ID="2" Type="RightArm" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="77" Width="30" Density="12" IgnoreCollisions="False" AngularDamping="50" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="3" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="272,0,64,96" Origin="0.5,0.5" Depth="0.02" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="272,0,64,96" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="RightHand (3)" ID="3" Type="RightHand" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="40" Width="26" Density="12" IgnoreCollisions="False" AngularDamping="50" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="3" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="272,160,64,48" Origin="0.44,0.4" Depth="0.015" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="272,160,64,48" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="LeftArm (4)" ID="4" Type="LeftArm" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="77" Width="30" Density="12" IgnoreCollisions="False" AngularDamping="50" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="2" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="336,0,64,96" Origin="0.5,0.5" Depth="0.14" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="336,0,64,96" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="LeftHand (5)" ID="5" Type="LeftHand" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="40" Width="26" Density="12" IgnoreCollisions="False" AngularDamping="50" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="2" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="336,160,64,48" Origin="0.44,0.4" Depth="0.16" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="336,160,64,48" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="LeftThigh (6)" ID="6" Type="LeftThigh" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="96" Width="40" Density="12" IgnoreCollisions="False" AngularDamping="7" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="4" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="80,0,80,128" Origin="0.5,0.5" Depth="0.13" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="80,0,80,128" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="LeftLeg (7)" ID="7" Type="LeftLeg" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="73" Width="30" Density="12" IgnoreCollisions="False" AngularDamping="7" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="4" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="80,128,80,128" Origin="0.5,0.5" Depth="0.131" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="80,128,80,128" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="LeftFoot (8)" ID="8" Type="LeftFoot" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="90" InheritLimbDepth="None" SteerForce="0" Radius="12" Height="0" Width="32" Density="10" IgnoreCollisions="False" AngularDamping="7" AttackPriority="1" PullPos="-2.8043144,-11.4667225" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="4" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="336,208,64,48" Origin="0.48,0.55" Depth="0.132" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="336,208,64,48" />
<sound Tag="footstep_metal" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="RightThigh (9)" ID="9" Type="RightThigh" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="96" Width="40" Density="12" IgnoreCollisions="False" AngularDamping="7" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="5" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="0,0,80,128" Origin="0.5,0.5" Depth="0.12" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="0,0,80,128" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="RightLeg (10)" ID="10" Type="RightLeg" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="73" Width="30" Density="12" IgnoreCollisions="False" AngularDamping="7" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="5" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="0,128,80,128" Origin="0.5,0.5" Depth="0.121" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="0,128,80,128" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="RightFoot (11)" ID="11" Type="RightFoot" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="90" InheritLimbDepth="None" SteerForce="0" Radius="12" Height="0" Width="32" Density="12" IgnoreCollisions="False" AngularDamping="7" AttackPriority="1" PullPos="-7.0750213,-11.173927" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="5" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="272,208,64,48" Origin="0.48,0.55" Depth="0.122" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="272,208,64,48" />
<sound Tag="footstep_metal" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="Waist (12)" ID="12" Type="Waist" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="25" Height="0" Width="0" Density="10" IgnoreCollisions="False" AngularDamping="1000" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="1" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="160,192,112,64" Origin="0.5,0.5" Depth="0.121" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="160,192,112,64" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="LeftForearm (13)" ID="13" Type="LeftForearm" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="180" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="55" Width="26" Density="12" IgnoreCollisions="False" AngularDamping="50" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="2" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="336,96,64,64" Origin="0.5,0.5" Depth="0.15" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="336,96,64,64" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<limb Name="RightForearm (14)" ID="14" Type="RightForearm" SecondaryType="None" Notes="" Scale="1" Flip="True" MirrorVertically="False" MirrorHorizontally="False" Hide="False" SpriteOrientation="NaN" InheritLimbDepth="None" SteerForce="0" Radius="0" Height="55" Width="26" Density="12" IgnoreCollisions="False" AngularDamping="50" AttackPriority="1" PullPos="0,0" StepOffset="0,0" RefJoint="-1" MouthPos="0,0" EatTorque="50" EatImpulse="2" ConstantTorque="0" ConstantAngle="0" AttackForceMultiplier="1" MinSeveranceDamage="1" CanBeSeveredAlive="True" SeveredFadeOutTime="60" ApplyTailAngle="False" ApplySineMovement="False" SineFrequencyMultiplier="1" SineAmplitudeMultiplier="1" BlinkFrequency="0" BlinkDurationIn="0.2" BlinkDurationOut="0.5" BlinkHoldTime="0" BlinkRotationIn="0" BlinkRotationOut="45" BlinkForce="50" OnlyBlinkInWater="False" UseTextureOffsetForBlinking="False" BlinkTextureOffsetIn="0.5,0.5" BlinkTextureOffsetOut="0.5,0.5" BlinkTransitionIn="Linear" BlinkTransitionOut="Linear" HealthIndex="3" Friction="0.3" Restitution="0.05" CanEnterSubmarine="True" InheritHiding="None">
<sprite SourceRect="272,96,64,64" Origin="0.5,0.5" Depth="0.01" Texture="" IgnoreTint="False" Color="255,255,255,255" DeadColor="255,255,255,255" DeadColorTime="0" />
<tintmask texture="Content/Characters/Human/Human_[GENDER]_mask.png" />
<damagedsprite texture="Content/Characters/Human/Human_damageoverlay.png" sourcerect="272,96,64,64" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.5" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="gunshotwound,lacerations,blunttrauma" AfflictionTypes="" />
<damagemodifier DamageSound="" DamageParticle="" DamageMultiplier="0.75" ProbabilityMultiplier="1" ArmorSector="0,360" DeflectProjectiles="False" AfflictionIdentifiers="bleeding,bitewounds" AfflictionTypes="" />
</limb>
<joint Name="Joint 0 - 1" Limb1="0" Limb2="1" Limb1Anchor="-10.253771,67.140594" Limb2Anchor="-10.745748,-12.599744" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="45" LowerLimit="-20" Stiffness="0.5" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 0 - 12" Limb1="0" Limb2="12" Limb1Anchor="-0.6422227,-53.382404" Limb2Anchor="0.10620385,-0.07190597" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="18" LowerLimit="-43" Stiffness="1000" Scale="1" WeldJoint="True" ClockWiseRotation="False" />
<joint Name="Joint 12 - 6" Limb1="12" Limb2="6" Limb1Anchor="-1.8,-6.7" Limb2Anchor="-2.4,37.57086" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="45" LowerLimit="-12" Stiffness="0.25" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 10 - 11" Limb1="10" Limb2="11" Limb1Anchor="0.5,-41.187973" Limb2Anchor="-10.862407,6.005065" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="30" LowerLimit="-70" Stiffness="0.25" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 12 - 9" Limb1="12" Limb2="9" Limb1Anchor="-1.8046935,-6.683343" Limb2Anchor="-2.423022,37.601402" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="45" LowerLimit="-12" Stiffness="0.25" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 7 - 8" Limb1="7" Limb2="8" Limb1Anchor="0.5,-41.2" Limb2Anchor="-10.937978,6" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="30" LowerLimit="-70" Stiffness="0.25" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 0 - 4" Limb1="0" Limb2="4" Limb1Anchor="-10.37207,43.280663" Limb2Anchor="0.6,28.573063" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="False" UpperLimit="0" LowerLimit="0" Stiffness="0.5" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 4 - 13" Limb1="4" Limb2="13" Limb1Anchor="-1.4478967,-28.244104" Limb2Anchor="-1.2,23.5" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="170" LowerLimit="5" Stiffness="0.2" Scale="1" WeldJoint="False" ClockWiseRotation="True" />
<joint Name="Joint 13 - 5" Limb1="13" Limb2="5" Limb1Anchor="-0.8,-29" Limb2Anchor="-0.5,7.8" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="10" LowerLimit="-30.000021" Stiffness="0.5" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 0 - 2" Limb1="0" Limb2="2" Limb1Anchor="-10.39392,43.006573" Limb2Anchor="0.6395478,28.56819" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="False" UpperLimit="0" LowerLimit="0" Stiffness="0.5" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 2 - 14" Limb1="2" Limb2="14" Limb1Anchor="1.2209377,-28.202503" Limb2Anchor="1.7877463,20.79795" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="170" LowerLimit="5" Stiffness="0.2" Scale="1" WeldJoint="False" ClockWiseRotation="True" />
<joint Name="Joint 14 - 3" Limb1="14" Limb2="3" Limb1Anchor="-0.8303146,-28.958904" Limb2Anchor="-0.51387256,7.8291073" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="10" LowerLimit="-30.000021" Stiffness="0.5" Scale="1" WeldJoint="False" ClockWiseRotation="False" />
<joint Name="Joint 9 - 10" Limb1="9" Limb2="10" Limb1Anchor="-2.1145673,-39.204475" Limb2Anchor="-0.6147495,41.310158" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="-5" LowerLimit="-145" Stiffness="0.25" Scale="1" WeldJoint="False" ClockWiseRotation="True" />
<joint Name="Joint 6 - 7" Limb1="6" Limb2="7" Limb1Anchor="-2.1,-39.2" Limb2Anchor="-0.6,41.3" CanBeSevered="True" SeveranceProbabilityModifier="0" BreakSound="gore" LimitEnabled="True" UpperLimit="-5" LowerLimit="-145" Stiffness="0.25" Scale="1" WeldJoint="False" ClockWiseRotation="True" />
</Ragdoll>

View File

@@ -0,0 +1,308 @@
<?xml version="1.0" encoding="utf-8"?>
<Character specifiertags="true" skincolors="(#fce1c6, 100); (#f3c696, 100); (#f3c696, 100); (#aa7744, 100); (#f4be98, 100); (#d69a70, 100); (#ab7046, 100); (#774929, 100); (#c8a583, 100); (#a57c53, 100); (#7a5026, 100); (#4a3219, 100); (#957966, 100); (#714d34, 100); (#532d12, 100); (#26190e, 100)" haircolors="(#ded7cc, 100); (#d2a36f, 100); (#c77d52, 100); (#ac4934, 100); (#d8ba85, 100); (#cd975a, 100); (#a15837, 100); (#6a3b37, 100); (#bba981, 100); (#8b7e6c, 100); (#594349, 100); (#473637, 100); (#7b8478, 100); (#494e55, 100); (#3a3a3c, 100); (#343030, 100)" facialhaircolors="(#ded7cc, 100); (#d2a36f, 100); (#c77d52, 100); (#ac4934, 100); (#d8ba85, 100); (#cd975a, 100); (#a15837, 100); (#6a3b37, 100); (#bba981, 100); (#8b7e6c, 100); (#594349, 100); (#473637, 100); (#7b8478, 100); (#494e55, 100); (#3a3a3c, 100); (#343030, 100)" SpeciesName="Testhuman" Tags="" SpeciesTranslationOverride="" DisplayName="" Group="" Humanoid="true" HasInfo="True" CanInteract="True" CanClimb="True" ForceSlowClimbing="False" Husk="False" HuskedSpecies="" NonHuskedSpecies="" UseHuskAppendage="True" NeedsAir="True" NeedsWater="False" UseHumanAI="True" IsMachine="False" CanSpeak="True" ShowHealthBar="True" UseBossHealthBar="False" Noise="150" Visibility="150" BloodDecal="blood" BleedParticleAir="blooddrop" BleedParticleWater="waterblood" BleedParticleMultiplier="1" CanEat="True" EatingSpeed="10" UsePathFinding="True" PathFinderPriority="1" HideInSonar="False" HideInThermalGoggles="False" SonarDisruption="0" DistantSonarRange="0" DisableDistance="25000" SoundInterval="10" DrawLast="False" AITurretPriority="1" AISlowTurretPriority="1" DespawnContainer="">
<names path="Content/Characters/Human/names.xml" />
<ragdolls folder="default" />
<animations folder="default" />
<damageemitter drawontop="True" Particle="gib" AngleMin="0" AngleMax="360" ScaleMin="0.25" ScaleMax="0.5" VelocityMin="50" VelocityMax="300" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="10" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<bloodemitter Particle="blood" AngleMin="0" AngleMax="0" ScaleMin="1" ScaleMax="1" VelocityMin="0" VelocityMax="0" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="10" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<bloodemitter Particle="waterblood" AngleMin="0" AngleMax="0" ScaleMin="1" ScaleMax="1" VelocityMin="0" VelocityMax="0" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="1" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<gibemitter Particle="gib" AngleMin="0" AngleMax="360" ScaleMin="1" ScaleMax="1" VelocityMin="200" VelocityMax="700" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="20" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<gibemitter Particle="heavygib" AngleMin="0" AngleMax="360" ScaleMin="1" ScaleMax="1" VelocityMin="50" VelocityMax="500" EmitInterval="0" ParticlesPerSecond="0" ParticleAmount="10" HighQualityCollisionDetection="False" CopyEntityAngle="False" />
<sound File="Content/Characters/Human/female_damage1.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage2.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage3.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage4.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage5.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage6.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage7.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage8.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage9.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/female_damage10.ogg" State="Damage" Range="500" Volume="1" Tags="Female" />
<sound File="Content/Characters/Human/male_damage1.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage2.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage3.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage4.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage5.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage6.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage7.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage8.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage9.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage10.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<sound File="Content/Characters/Human/male_damage11.ogg" State="Damage" Range="500" Volume="1" Tags="Male" />
<health Vitality="100" DoesBleed="True" CrushDepth="6000" UseHealthWindow="True" BleedingReduction="0" BurnReduction="0.075" ConstantHealthRegeneration="0" HealthRegenerationWhenEating="0" StunImmunity="False" PoisonImmunity="False" PoisonVulnerability="1" EmpVulnerability="0" ApplyMovementPenalties="True" DieFromBeheading="True" AllowSeveringLegs="False" ApplyAfflictionColors="True" Immunities="">
<MedUISilhouette texture="Content/UI/Health/MedUI_Silhouette.png" columns="8" rows="2" sourcerect="0,0,1008,748" />
<MedUIExtra texture="Content/UI/Health/MedUIExtra.png" columns="4" rows="4" sourcerect="0,0,1024,1024" />
<Limb name="Head">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="1,0,126,374" highlightarea="41,0,45,54" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="1,515,126,374" />
<VitalityMultiplier type="damage" multiplier="2.0" />
</Limb>
<Limb name="Torso">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="631,0,126,374" highlightarea="29,56,70,134" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="631,515,126,374" />
<VitalityMultiplier type="bleeding" multiplier="2.0" />
</Limb>
<Limb name="LeftArm">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="379,0,126,374" highlightarea="1,69,27,140" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="379,515,126,374" />
<VitalityMultiplier type="damage" multiplier="0.5" />
</Limb>
<Limb name="RightArm">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="127,0,126,374" highlightarea="100,69,27,140" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="127,515,126,374" />
<VitalityMultiplier type="damage" multiplier="0.5" />
</Limb>
<Limb name="LeftLeg">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="505,0,126,374" highlightarea="3,180,57,194" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="505,515,126,374" />
<VitalityMultiplier type="damage" multiplier="0.5" />
</Limb>
<Limb name="RightLeg">
<Sprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="253,0,126,374" highlightarea="68,180,57,194" />
<Highlightsprite texture="Content/UI/Health/MedUIAtlas.png" sourcerect="253,515,126,374" />
<VitalityMultiplier type="damage" multiplier="0.5" />
</Limb>
</health>
<inventory arrowslot="9" Slots="Card, Headset, Head, InnerClothes, OuterClothes, LeftHand, RightHand, Bag, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, HealthInterface" AccessibleWhenAlive="True" Commonness="1" />
<Heads>
<Head tags="head1,male" sheetindex="0,0" />
<Head tags="head2,male" sheetindex="1,0" />
<Head tags="head3,male" sheetindex="2,0" />
<Head tags="head4,male" sheetindex="3,0" />
<Head tags="head5,male" sheetindex="0,1" />
<Head tags="head6,male" sheetindex="1,1" />
<Head tags="head7,male" sheetindex="2,1" />
<Head tags="head8,male" sheetindex="3,1" />
<Head tags="head9,male" sheetindex="0,2" />
<Head tags="head10,male" sheetindex="1,2" />
<Head tags="head11,male" sheetindex="2,2" />
<Head tags="head12,male" sheetindex="3,2" />
<Head tags="head13,male" sheetindex="0,3" />
<Head tags="head14,male" sheetindex="1,3" />
<Head tags="head15,male" sheetindex="2,3" />
<Head tags="head16,male" sheetindex="3,3" />
<Head tags="head1,female" sheetindex="0,0" />
<Head tags="head2,female" sheetindex="1,0" />
<Head tags="head3,female" sheetindex="2,0" />
<Head tags="head4,female" sheetindex="3,0" />
<Head tags="head5,female" sheetindex="0,1" />
<Head tags="head6,female" sheetindex="1,1" />
<Head tags="head7,female" sheetindex="2,1" />
<Head tags="head8,female" sheetindex="3,1" />
<Head tags="head9,female" sheetindex="0,2" />
<Head tags="head10,female" sheetindex="1,2" />
<Head tags="head11,female" sheetindex="2,2" />
<Head tags="head12,female" sheetindex="3,2" />
<Head tags="head13,female" sheetindex="0,3" />
<Head tags="head14,female" sheetindex="1,3" />
<Head tags="head15,female" sheetindex="2,3" />
<Head tags="head16,female" sheetindex="3,3" />
</Heads>
<Vars>
<Var var="GENDER" tags="female,male" />
</Vars>
<MenuCategory var="GENDER" />
<Pronouns var="GENDER" />
<HeadAttachments>
<Wearable type="Hair" tags="male">
<sprite name="Hair 1" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="0,0" />
</Wearable>
<Wearable type="Hair" tags="male">
<sprite name="Hair 2" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="1,0" />
</Wearable>
<Wearable type="Hair" tags="male">
<sprite name="Hair 3" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="2,0" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 4" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="3,0" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 5" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="0,1" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 6" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="1,1" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 7" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="2,1" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 8" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="3,1" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 9" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="0,2" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 10" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="1,2" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 11" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="2,2" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 12" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="3,2" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 13" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="0,3" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 14" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="1,3" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 15" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="2,3" />
</Wearable>
<Wearable type="Hair" tags="male" replacewhenwearinghat="1">
<sprite name="Hair 16" texture="Content/Characters/Human/Human_male_hair.png" sheetindex="3,3" />
</Wearable>
<Wearable type="Hair" tags="female">
<sprite name="Hair 1" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="0,0" />
</Wearable>
<Wearable type="Hair" tags="female">
<sprite name="Hair 2" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="1,0" />
</Wearable>
<Wearable type="Hair" tags="female">
<sprite name="Hair 3" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="2,0" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 4" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="3,0" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 5" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="0,1" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 6" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="1,1" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 7" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="2,1" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 8" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="3,1" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 9" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="0,2" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 10" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="1,2" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 11" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="2,2" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 12" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="3,2" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 13" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="0,3" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 14" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="1,3" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 15" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="2,3" />
</Wearable>
<Wearable type="Hair" tags="female" replacewhenwearinghat="1">
<sprite name="Hair 16" texture="Content/Characters/Human/Human_female_hair.png" sheetindex="3,3" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 1" texture="Content/Characters/Human/Human_beards.png" sheetindex="0,0" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 2" texture="Content/Characters/Human/Human_beards.png" sheetindex="1,0" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 3" texture="Content/Characters/Human/Human_beards.png" sheetindex="2,0" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 4" texture="Content/Characters/Human/Human_beards.png" sheetindex="3,0" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 5" texture="Content/Characters/Human/Human_beards.png" sheetindex="0,1" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 6" texture="Content/Characters/Human/Human_beards.png" sheetindex="1,1" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 7" texture="Content/Characters/Human/Human_beards.png" sheetindex="2,1" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 8" texture="Content/Characters/Human/Human_beards.png" sheetindex="3,1" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 9" texture="Content/Characters/Human/Human_beards.png" sheetindex="0,2" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 10" texture="Content/Characters/Human/Human_beards.png" sheetindex="1,2" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 11" texture="Content/Characters/Human/Human_beards.png" sheetindex="2,2" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 12" texture="Content/Characters/Human/Human_beards.png" sheetindex="3,2" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 13" texture="Content/Characters/Human/Human_beards.png" sheetindex="0,3" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 14" texture="Content/Characters/Human/Human_beards.png" sheetindex="1,3" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 15" texture="Content/Characters/Human/Human_beards.png" sheetindex="2,3" />
</Wearable>
<Wearable type="Beard" tags="male">
<sprite name="Beard 16" texture="Content/Characters/Human/Human_beards.png" sheetindex="3,3" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 1" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="0,0" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 2" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="1,0" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 3" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="2,0" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 4" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="3,0" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 5" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="0,1" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 6" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="1,1" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 7" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="2,1" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 8" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="3,1" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.05">
<sprite name="FaceAttachment 9" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="0,2" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 10" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="1,2" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.03">
<sprite name="FaceAttachment 11" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="2,2" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.02">
<sprite name="FaceAttachment 12" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="3,2" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 13" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="0,3" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 14" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="1,3" />
</Wearable>
<Wearable type="FaceAttachment" commonness="0.01">
<sprite name="FaceAttachment 15" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="2,3" />
</Wearable>
<!--
<Wearable type="FaceAttachment" commonness="1.0">
<sprite name="FaceAttachment 16" texture="Content/Characters/Human/Human_head_accessories.png" sheetindex="3,3"/>
</Wearable>
-->
<Wearable type="Husk">
<sprite name="Husk" texture="Content/Characters/Human/Human_husk.png" hidewearablesoftype="Beard" sheetindex="0,0" />
</Wearable>
<Wearable type="Herpes">
<sprite name="Herpes" texture="Content/Characters/Human/Human_karma.png" sheetindex="0,0" />
</Wearable>
</HeadAttachments>
</Character>

View File

@@ -0,0 +1,8 @@
This mod includes a non-human character copied from a human.
The mod can be used to test whether some normally human-only features work on a non-human character, for example:
- Giving the character a job, name and portrait.
- Giving talents to the character.
- Adding the character to the crew.
- Using human AI on a non-human.
When spawned, the character should behave and look the same way as a human character (depending on the team, it can either befriendly or hostile).

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="[DebugOnlyTest]Testhuman" modversion="1.0.3" corepackage="False" gameversion="1.7.4.0">
<Character file="%ModDir%/Characters/Testhuman/Testhuman.xml" />
</contentpackage>

Some files were not shown because too many files have changed in this diff Show More