This commit is contained in:
36
.gitea/workflows/deploy.yml
Normal file
36
.gitea/workflows/deploy.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
name: Build & Deploy
|
||||
on:
|
||||
push:
|
||||
branches: [release]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build Docker image
|
||||
run: docker build -t barotrauma-server:${{ github.sha }} .
|
||||
|
||||
- name: Tag and push to local registry
|
||||
run: |
|
||||
docker tag barotrauma-server:${{ github.sha }} \
|
||||
${{ secrets.REGISTRY_ADDR }}/barotrauma-server:latest
|
||||
docker push ${{ secrets.REGISTRY_ADDR }}/barotrauma-server:latest
|
||||
|
||||
- name: Deploy via SSH
|
||||
uses: appleboy/ssh-action@v1
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
script: |
|
||||
docker pull ${{ secrets.REGISTRY_ADDR }}/barotrauma-server:latest
|
||||
docker stop barotrauma 2>/dev/null || true
|
||||
docker rm barotrauma 2>/dev/null || true
|
||||
docker run -d --name barotrauma \
|
||||
--restart unless-stopped \
|
||||
-p 27015:27015/udp \
|
||||
-p 27015:27015/tcp \
|
||||
${{ secrets.REGISTRY_ADDR }}/barotrauma-server:latest
|
||||
docker system prune -f
|
||||
13
Dockerfile
Normal file
13
Dockerfile
Normal file
@@ -0,0 +1,13 @@
|
||||
FROM ubuntu:24.04
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
lib32gcc-s1 lib32stdc++6 ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /server
|
||||
COPY . .
|
||||
|
||||
EXPOSE 27015/udp
|
||||
EXPOSE 27015/tcp
|
||||
|
||||
CMD ["./DedicatedServer"]
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,82 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,127 +0,0 @@
|
||||
<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>
|
||||
@@ -1,312 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,68 +0,0 @@
|
||||
<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>
|
||||
@@ -1,32 +0,0 @@
|
||||
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).
|
||||
@@ -1 +0,0 @@
|
||||
<Charactervariant inherit="Spineling_morbusine" speciesname="Spineling_morbusine_m" />
|
||||
@@ -1,15 +0,0 @@
|
||||
<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>
|
||||
@@ -1,3 +0,0 @@
|
||||
<Override>
|
||||
<Charactervariant inherit="Cyborgworm" speciesname="Testcyborgworm_m" />
|
||||
</Override>
|
||||
@@ -1,9 +0,0 @@
|
||||
<?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>
|
||||
Binary file not shown.
@@ -1,4 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,6 +0,0 @@
|
||||
<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>
|
||||
@@ -1,3 +0,0 @@
|
||||
<contentpackage name="Mission Variants Test" modversion="1.0.0" corepackage="False" gameversion="1.10.2.0">
|
||||
<Missions file="%ModDir%/Missions.xml"/>
|
||||
</contentpackage>
|
||||
Binary file not shown.
@@ -1,4 +0,0 @@
|
||||
<?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.
@@ -1,4 +0,0 @@
|
||||
<?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>
|
||||
Binary file not shown.
@@ -1,4 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,23 +0,0 @@
|
||||
<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>
|
||||
Binary file not shown.
@@ -1,36 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,75 +0,0 @@
|
||||
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)
|
||||
@@ -1,7 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,40 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Items>
|
||||
|
||||
</Items>
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<contentpackage name="[DebugOnlyTest]TestLuaMod" >
|
||||
<Text file="%ModDir%/Texts/English.xml"/>
|
||||
<Item file="%ModDir%/dummy.xml" />
|
||||
</contentpackage>
|
||||
@@ -1,159 +0,0 @@
|
||||
<?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>
|
||||
Binary file not shown.
@@ -1,8 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,40 +0,0 @@
|
||||
<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" />
|
||||
@@ -1,40 +0,0 @@
|
||||
<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" />
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,2 +0,0 @@
|
||||
<?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" />
|
||||
@@ -1,130 +0,0 @@
|
||||
<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>
|
||||
@@ -1,308 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,8 +0,0 @@
|
||||
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).
|
||||
@@ -1,4 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<contentpackage name="[DebugOnlyTest]testGapSub" modversion="1.0.4" corepackage="False" gameversion="1.10.4.0">
|
||||
<Submarine file="%ModDir%/testGapSub.sub" />
|
||||
</contentpackage>
|
||||
Binary file not shown.
9
config_player.xml
Normal file
9
config_player.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Barotrauma>
|
||||
<contentpackages>
|
||||
<corepackage path="Content/ContentPackages/Vanilla.xml" />
|
||||
<regularpackages>
|
||||
<package path="LocalMods/LuaCsForBarotrauma/filelist.xml" />
|
||||
</regularpackages>
|
||||
</contentpackages>
|
||||
</Barotrauma>
|
||||
9
docker-compose.yml
Normal file
9
docker-compose.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
barotrauma:
|
||||
build: .
|
||||
ports:
|
||||
- "27015:27015/udp"
|
||||
- "27015:27015/tcp"
|
||||
restart: unless-stopped
|
||||
167
docs/CI_CD_GUIDE.md
Normal file
167
docs/CI_CD_GUIDE.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# CI/CD для Barotrauma Dedicated Server
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
ПК (разработка):
|
||||
Barotrauma + моды → autogen_config.py → git commit → push в release
|
||||
|
||||
Gitea Actions (CI):
|
||||
Триггер: push в release → docker build → push в локальный registry → SSH деплой
|
||||
|
||||
Сервер Ubuntu 24.04:
|
||||
Docker → docker run barotrauma-server → порт 27015 UDP/TCP
|
||||
```
|
||||
|
||||
## 1. Подготовка сервера (Ubuntu 24.04)
|
||||
|
||||
### 1.1. Установка Docker
|
||||
|
||||
```bash
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
sudo usermod -aG docker $USER
|
||||
# Выйти и зайти заново (или newgrp docker)
|
||||
```
|
||||
|
||||
### 1.2. Запуск локального Docker registry
|
||||
|
||||
```bash
|
||||
docker run -d --restart always -p 5000:5000 --name registry registry:2
|
||||
```
|
||||
|
||||
### 1.3. Настройка insecure registry
|
||||
|
||||
Создать/редактировать `/etc/docker/daemon.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"insecure-registries": ["<IP_СЕРВЕРА>:5000"]
|
||||
}
|
||||
```
|
||||
|
||||
Перезапустить Docker:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
|
||||
### 1.4. Добавление SSH ключа для CI
|
||||
|
||||
Сгенерировать ключ (если нет):
|
||||
|
||||
```bash
|
||||
ssh-keygen -t ed25519 -f ~/.ssh/ci_deploy -N ""
|
||||
cat ~/.ssh/ci_deploy.pub >> ~/.ssh/authorized_keys
|
||||
chmod 600 ~/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
Приватный ключ (`~/.ssh/ci_deploy`) понадобится в Gitea Secrets.
|
||||
|
||||
## 2. Настройка Gitea Actions
|
||||
|
||||
### 2.1. Включить Actions в Gitea
|
||||
|
||||
`Site Administration → Actions → Enable Actions`
|
||||
|
||||
Убедиться, что есть Gitea Runner. Если нет — установить:
|
||||
|
||||
```bash
|
||||
# На сервере или отдельной машине:
|
||||
sudo wget -O /usr/local/bin/act_runner https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-linux-amd64
|
||||
sudo chmod +x /usr/local/bin/act_runner
|
||||
act_runner register --instance https://<ВАШ_GITEA> --token <TOKEN>
|
||||
act_runner daemon
|
||||
```
|
||||
|
||||
### 2.2. Добавить Secrets в Gitea
|
||||
|
||||
В репозитории: `Settings → Secrets → Add secret`
|
||||
|
||||
| Secret | Значение |
|
||||
|--------|----------|
|
||||
| `REGISTRY_ADDR` | `<IP_СЕРВЕРА>:5000` (например `192.168.1.100:5000`) |
|
||||
| `SERVER_HOST` | IP-адрес сервера |
|
||||
| `SERVER_USER` | Пользователь для SSH (обычно `root` или ваш user) |
|
||||
| `SSH_KEY` | **Приватный** ключ из `~/.ssh/ci_deploy` |
|
||||
|
||||
## 3. Рабочий процесс
|
||||
|
||||
### 3.1. На ПК: подготовка сборки
|
||||
|
||||
```bash
|
||||
# 1. Скопировать моды из Steam Workshop в LocalMods/:
|
||||
# Каждый мод — отдельная папка, внутри filelist.xml
|
||||
# Пример: LocalMods/MyMod/filelist.xml
|
||||
|
||||
# 2. Сгенерировать конфиг:
|
||||
python3 scripts/autogen_config.py
|
||||
# → Будет создан config_player.xml с путями ко всем модам
|
||||
|
||||
# 3. (Опционально) Проверить локально:
|
||||
# docker compose up --build
|
||||
|
||||
# 4. Закоммитить и запушить:
|
||||
git add -A
|
||||
git commit -m "feat: update mods"
|
||||
git push origin release
|
||||
```
|
||||
|
||||
### 3.2. CI: автоматический деплой
|
||||
|
||||
После push в `release` Gitea Actions автоматически:
|
||||
|
||||
1. Собирает Docker образ (`Dockerfile`)
|
||||
2. Пушит образ в локальный registry (`<SERVER>:5000/barotrauma-server:latest`)
|
||||
3. По SSH подключается к серверу
|
||||
4. Останавливает старый контейнер
|
||||
5. Запускает новый контейнер с пробросом порта `27015`
|
||||
|
||||
### 3.3. Проверка сервера
|
||||
|
||||
```bash
|
||||
# На сервере:
|
||||
docker logs -f barotrauma
|
||||
# Или через Steam, подключившись к <IP_СЕРВЕРА>:27015
|
||||
```
|
||||
|
||||
## 4. Структура файлов
|
||||
|
||||
```
|
||||
BarotraumaMod/
|
||||
├── scripts/
|
||||
│ └── autogen_config.py # Скрипт генерации config_player.xml
|
||||
├── .gitea/workflows/
|
||||
│ └── deploy.yml # Gitea Actions workflow
|
||||
├── Dockerfile # Сборка Docker образа
|
||||
├── docker-compose.yml # Локальное тестирование
|
||||
├── config_player.xml # Конфиг (генерируется autogen_config.py)
|
||||
├── LocalMods/ # Моды (каждый мод в своей папке)
|
||||
│ ├── LuaCsForBarotrauma/
|
||||
│ │ └── filelist.xml
|
||||
│ ├── Mod1/
|
||||
│ │ └── filelist.xml
|
||||
│ └── ...
|
||||
└── ... # Остальные файлы сервера
|
||||
```
|
||||
|
||||
## 5. Порты
|
||||
|
||||
| Порт | Протокол | Назначение |
|
||||
|------|----------|-----------|
|
||||
| 27015 | UDP | Основной игровой трафик Barotrauma |
|
||||
| 27015 | TCP | Steam-подключения |
|
||||
| 5000 | TCP | Локальный Docker registry |
|
||||
|
||||
## 6. Полезные команды
|
||||
|
||||
```bash
|
||||
# На сервере:
|
||||
docker logs barotrauma # Логи сервера
|
||||
docker restart barotrauma # Перезапуск
|
||||
docker stop barotrauma && docker rm barotrauma # Удаление
|
||||
docker pull <IP>:5000/barotrauma-server:latest # Ручное обновление
|
||||
|
||||
# На ПК:
|
||||
python3 scripts/autogen_config.py # Обновить config_player.xml
|
||||
docker compose up --build # Локальный тест
|
||||
```
|
||||
164
docs/Info.md
Normal file
164
docs/Info.md
Normal file
@@ -0,0 +1,164 @@
|
||||
Ниже — рабочая инструкция для **Ubuntu 24.04** по запуску **Barotrauma Dedicated Server** с **модами** и **Lua for Barotrauma**. Для обычных модов на выделенном сервере нужно, чтобы файлы модов были доступны на сервере и были прописаны в `config_player.xml`; для Lua дополнительно нужно включить Lua Patch/скриптинг и затем активировать C#-скриптинг в клиенте/лаунче сервера[2][4][8].
|
||||
|
||||
## 1) Что нужно заранее
|
||||
|
||||
- Сервер **Barotrauma Dedicated Server** установлен через Steam/SteamCMD[11].
|
||||
- Есть **клиентская** копия Barotrauma на вашем ПК, где вы можете подписаться на моды в Workshop, чтобы они скачались локально[2][4].
|
||||
- Моды, которые вы хотите использовать, совместимы между собой и с вашей версией игры.
|
||||
- Для **Lua for Barotrauma** сервер должен уметь загрузить Lua Patch; в хостинге это обычно отдельный переключатель, а в локальной установке — это делается через загрузку/установку Lua из консоли и последующее включение скриптинга в игре[1][8].
|
||||
|
||||
## 2) Установка самого выделенного сервера на Ubuntu 24.04
|
||||
|
||||
Официальная инструкция рекомендует запускать сервер из каталога `Barotrauma Dedicated Server` после установки, например через `./DedicatedServer`[11].
|
||||
|
||||
- Обновите систему и установите базовые зависимости:
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y lib32gcc-s1 lib32stdc++6 tmux screen wget
|
||||
```
|
||||
|
||||
- Если сервер не стартует из-за старых библиотек, на wiki Barotrauma отдельно упоминается `libssl1.0.0` для некоторых Linux-сборок[11].
|
||||
На Ubuntu 24.04 этот пакет обычно **не нужен** и может отсутствовать в стандартных репозиториях, поэтому сначала проверьте запуск без него.
|
||||
|
||||
- Зайдите в каталог сервера:
|
||||
```bash
|
||||
cd ~/.steam/steamapps/common/Barotrauma\ Dedicated\ Server
|
||||
```
|
||||
|
||||
- Запустите сервер:
|
||||
```bash
|
||||
./DedicatedServer
|
||||
```
|
||||
Это соответствует официальному способу запуска на Linux/nix[11].
|
||||
|
||||
## 3) Как поставить обычные моды на сервер
|
||||
|
||||
Официальная wiki описывает такой путь: подписаться на моды в Steam Workshop на своём клиенте, затем скопировать файлы модов на сервер и включить их через `config_player.xml`[2][4].
|
||||
|
||||
### Шаг 3.1 — скачать моды на клиенте
|
||||
- На вашем ПК откройте Steam Workshop Barotrauma.
|
||||
- Подпишитесь на нужные моды.
|
||||
- Запустите Barotrauma, чтобы Steam скачал файлы модов локально[2][4].
|
||||
|
||||
### Шаг 3.2 — найти файлы модов
|
||||
На клиенте моды обычно лежат в каталоге WorkshopMods/Installed, а для сервера их часто копируют в `LocalMods`[10].
|
||||
Встречающийся рабочий путь на Linux-серверах и в гайдах:
|
||||
- `LocalMods/<ИмяМода>/filelist.xml`[10]
|
||||
- либо содержимое, которое соответствует `WorkshopMods/Installed` на клиенте[10]
|
||||
|
||||
### Шаг 3.3 — скопировать моды на сервер
|
||||
Скопируйте папку мода на сервер в каталог `LocalMods`.
|
||||
Пример:
|
||||
```bash
|
||||
/home/container/LocalMods/MyMod/filelist.xml
|
||||
```
|
||||
или
|
||||
```bash
|
||||
/path/to/barotrauma-server/LocalMods/MyMod/filelist.xml
|
||||
```
|
||||
В гайдах и инструкциях для dedicated server именно `LocalMods` используется как место, откуда сервер подхватывает установленный мод[10].
|
||||
|
||||
### Шаг 3.4 — прописать моды в `config_player.xml`
|
||||
Официальная wiki говорит, что активные пакеты контента нужно добавить в `config_player.xml` на сервере[2][4].
|
||||
|
||||
Откройте файл:
|
||||
```bash
|
||||
nano /path/to/barotrauma-server/config_player.xml
|
||||
```
|
||||
|
||||
Найдите блок с контент-пакетами и добавьте строки вида:
|
||||
```xml
|
||||
<contentpackages>
|
||||
<corepackage path="Content/ContentPackages/Vanilla.xml" />
|
||||
<regularpackages>
|
||||
<package path="LocalMods/MyMod/filelist.xml" />
|
||||
<package path="LocalMods/AnotherMod/filelist.xml" />
|
||||
</regularpackages>
|
||||
</contentpackages>
|
||||
```
|
||||
|
||||
Для отдельных сборок и серверных конфигураций встречается и замена стандартного ванильного пакета на путь из `LocalMods/.../filelist.xml`, если это именно кор-пакет сборки[7][10]. Но для обычных модов безопаснее не заменять ванильный пакет, а добавлять моды в `regularpackages`[4][10].
|
||||
|
||||
### Шаг 3.5 — перезапустить сервер
|
||||
После сохранения `config_player.xml` перезапустите сервер.
|
||||
После этого моды должны быть доступны на сервере[2][4].
|
||||
|
||||
## 4) Как включить Lua for Barotrauma
|
||||
|
||||
По результатам найденных инструкций, Lua для Barotrauma обычно включается так: сервер запускается с Lua Patch, после чего в игре/консоли выполняется установка, а затем активируется C# scripting[1][8].
|
||||
|
||||
### Вариант для локального/самостоятельно запущенного сервера
|
||||
- Запустите сервер с нужными модами.
|
||||
- Подключитесь к нему клиентом.
|
||||
- Откройте консоль на сервере/в игре и выполните команду установки Lua, которую в видео-гайде показывают как `install cl lua` или аналогичную команду установки Lua Patch[1].
|
||||
- После установки перезапустите игру/сервер.
|
||||
- Затем в интерфейсе игры включите **C# scripting** / **Enable C Sharp scripting**[1].
|
||||
|
||||
### Важное замечание
|
||||
В разных гайдах и сборках команда/механика установки Lua может отличаться, а у хостингов это часто делается отдельной настройкой **Install Lua Patch = Enabled**[8].
|
||||
Для вашего случая на Ubuntu 24.04 я бы ориентировался на такой порядок:
|
||||
- сначала установить и проверить обычный сервер;
|
||||
- затем включить/установить Lua Patch;
|
||||
- затем включить моды;
|
||||
- затем включить скриптинг.
|
||||
|
||||
## 5) Практический рабочий порядок установки
|
||||
|
||||
1. Установить Barotrauma Dedicated Server на Ubuntu 24.04[11].
|
||||
2. Запустить сервер один раз, чтобы он создал конфиги[11].
|
||||
3. На клиенте подписаться на нужные моды в Workshop и дождаться загрузки[2][4].
|
||||
4. Скопировать файлы модов на сервер в `LocalMods`[10].
|
||||
5. Отредактировать `config_player.xml`, добавив моды в `<regularpackages>`[2][4][10].
|
||||
6. Запустить сервер и проверить, что моды загрузились[11].
|
||||
7. Установить/включить **Lua Patch**[1][8].
|
||||
8. Подключиться клиентом, включить **C# scripting** в интерфейсе игры, если это требуется вашей сборкой Lua[1].
|
||||
9. Проверить логи сервера, если мод не подхватился.
|
||||
|
||||
## 6) Частые проблемы
|
||||
|
||||
- **Сервер стартует, но модов нет**
|
||||
Обычно это означает, что моды не скопированы на сервер или не прописаны в `config_player.xml`[2][4][10].
|
||||
|
||||
- **Не совпадают пути к файлам**
|
||||
Проверьте, что путь указывает именно на `LocalMods/<ИмяМода>/filelist.xml` или на тот путь, который использует ваша сборка[7][10].
|
||||
|
||||
- **Lua не активируется**
|
||||
Для Lua часто нужен не только пакет модов, но и отдельная активация patch/скриптинга, как показано в гайдах и у хостеров[1][8].
|
||||
|
||||
- **На Ubuntu 24.04 не запускается бинарник**
|
||||
Сначала проверьте стандартный запуск `./DedicatedServer`; проблема с дополнительными библиотеками встречается не у всех, и не все старые зависимости актуальны для 24.04[11].
|
||||
|
||||
## 7) Минимальный пример структуры
|
||||
|
||||
```text
|
||||
Barotrauma Dedicated Server/
|
||||
├─ DedicatedServer
|
||||
├─ config_player.xml
|
||||
├─ LocalMods/
|
||||
│ ├─ ModA/
|
||||
│ │ └─ filelist.xml
|
||||
│ └─ ModB/
|
||||
│ └─ filelist.xml
|
||||
└─ ...
|
||||
```
|
||||
|
||||
И фрагмент `config_player.xml`:
|
||||
```xml
|
||||
<contentpackages>
|
||||
<corepackage path="Content/ContentPackages/Vanilla.xml" />
|
||||
<regularpackages>
|
||||
<package path="LocalMods/ModA/filelist.xml" />
|
||||
<package path="LocalMods/ModB/filelist.xml" />
|
||||
</regularpackages>
|
||||
</contentpackages>
|
||||
```
|
||||
|
||||
## 8) Что я могу сделать дальше
|
||||
|
||||
Если хотите, я могу сразу написать **готовый bash-скрипт для Ubuntu 24.04**, который:
|
||||
- создаст пользователя для сервера,
|
||||
- скачает/обновит Dedicated Server,
|
||||
- разложит папки `LocalMods`,
|
||||
- и покажет, как автоматически править `config_player.xml`.
|
||||
|
||||
**Источники:** [1], [2], [4], [8], [10], [11]
|
||||
39
scripts/autogen_config.py
Executable file
39
scripts/autogen_config.py
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Scan LocalMods/ and generate config_player.xml with content packages."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
MODS_DIR = os.path.join(BASE, "LocalMods")
|
||||
OUTPUT = os.path.join(BASE, "config_player.xml")
|
||||
|
||||
|
||||
def find_mods():
|
||||
if not os.path.isdir(MODS_DIR):
|
||||
return []
|
||||
return sorted(
|
||||
d for d in os.listdir(MODS_DIR)
|
||||
if os.path.isfile(os.path.join(MODS_DIR, d, "filelist.xml"))
|
||||
)
|
||||
|
||||
|
||||
def build_config(mods):
|
||||
root = ET.Element("Barotrauma")
|
||||
cp = ET.SubElement(root, "contentpackages")
|
||||
ET.SubElement(cp, "corepackage", path="Content/ContentPackages/Vanilla.xml")
|
||||
reg = ET.SubElement(cp, "regularpackages")
|
||||
for m in mods:
|
||||
ET.SubElement(reg, "package", path=f"LocalMods/{m}/filelist.xml")
|
||||
ET.indent(root)
|
||||
return ET.tostring(root, encoding="unicode", xml_declaration=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
mods = find_mods()
|
||||
print(f"Found {len(mods)} mod(s): {mods}")
|
||||
xml = build_config(mods)
|
||||
with open(OUTPUT, "w") as f:
|
||||
f.write(xml)
|
||||
print(f"Generated {OUTPUT}")
|
||||
Reference in New Issue
Block a user