Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<Items>
<Item name="[DebugOnlyTest]EXPLOSIONTESTSUIT" identifier="EXPLOSIONTESTSUIT" category="Diving,Equipment" tags="diving,deepdiving,human,respawnsuit" scale="0.5" fireproof="true" description="" allowdroppingonswapwith="diving" impactsoundtag="impact_metal_heavy" botpriority="3" cargocontaineridentifier="">
<Deconstruct time="1"/>
<InventoryIcon texture="Content/Items/InventoryIconAtlas2.png" sourcerect="0,832,128,128" origin="0.5,0.5" />
<Sprite name="Respawn Diving Suit Item" texture="Content/Items/Diving/RespawnSuit_Items.png" sourcerect="0,0,157,121" depth="0.55" origin="0.5,0.5" />
<ContainedSprite name="Respawn Diving Suit In Vertical Locker" allowedcontainertags="divingsuitcontainervertical" texture="Content/Items/Diving/RespawnSuit_Items.png" sourcerect="181,0,70,192" depth="0.55" origin="0.5,0.5" />
<ContainedSprite name="Respawn Diving Suit Behind Window" allowedcontainertags="divingsuitcontainerwindow" texture="Content/Items/Containers/containers.png" sourcerect="118,379,77,214" depth="0.55" origin="-0.12,-0.13" />
<ContainedSprite name="Respawn Diving Suit In Horizontal Locker" allowedcontainertags="divingsuitcontainerhorizontal" texture="Content/Items/Diving/RespawnSuit_Items.png" sourcerect="0,193,230,63" depth="0.55" origin="0.6,0.5" />
<Body radius="45" width="34" density="20" />
<Wearable slots="OuterClothes" msg="ItemMsgEquipSelect" displaycontainedstatus="true" canbeselected="false" canbepicked="true" pickkey="Select">
<sprite texture="Content/Items/Jobgear/headgears.png" limb="Head" inheritlimbdepth="true" inheritscale="true" ignorelimbscale="true" scale="0.65" hidelimb="false" alphaclipotherwearables="true" sourcerect="100,409,103,103" origin="0.5,0.5"/>
<sprite texture="RespawnSuit.png" limb="Torso" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="RightHand" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="LeftHand" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="RightArm" depthlimb="RightForearm" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="LeftArm" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="RightForearm" depthlimb="RightArm" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="LeftForearm" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="Waist" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="RightThigh" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="LeftThigh" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="RightLeg" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="LeftLeg" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="LeftFoot" sound="footstep_armor_heavy" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<sprite texture="RespawnSuit.png" limb="RightFoot" sound="footstep_armor_heavy" hidelimb="true" inherittexturescale="true" hideotherwearables="true" inheritorigin="true" inheritsourcerect="true" />
<damagemodifier armorsector="0.0,360.0" afflictionidentifiers="explosiondamage" damagemultiplier="0" damagesound="LimbArmor" deflectprojectiles="true" />
</Wearable>
<Holdable slots="RightHand+LeftHand" controlpose="true" holdpos="0,-50" handle1="-10,-20" handle2="10,-20" holdangle="45" msg="ItemMsgPickUpUse" canbeselected="false" canbepicked="true" pickkey="Use" />
<aitarget maxsightrange="1500" />
</Item>
<Item name="[DebugOnlyTest]C4WithoutPen" identifier="testC40pen" category="Weapon" Tags="smallitem,explosive,demolitionsexpert" maxstacksize="32" maxstacksizecharacterinventory="8" Scale="0.5" cargocontaineridentifier="explosivecrate" impactsoundtag="impact_soft">
<Upgrade gameversion="0.9.3.0" scale="0.5"/>
<PreferredContainer primary="secarmcab" minamount="1" maxamount="2" spawnprobability="0.5" notcampaign="true" notpvp="true"/>
<PreferredContainer secondary="wreckarmcab,abandonedarmcab,piratearmcab" amount="1" spawnprobability="0.05"/>
<PreferredContainer secondary="armcab"/>
<Price baseprice="160">
<Price storeidentifier="merchantoutpost" sold="false" multiplier="1.4"/>
<Price storeidentifier="merchantcity" multiplier="1.25" minavailable="2" sold="false"/>
<Price storeidentifier="merchantresearch" sold="false" multiplier="1.25"/>
<Price storeidentifier="merchantmilitary" multiplier="0.9" minavailable="3" />
<Price storeidentifier="merchantmine" sold="false" />
<Price storeidentifier="merchantarmory" multiplier="0.9" minavailable="3" />
</Price>
<Fabricate suitablefabricators="fabricator" requiredtime="20">
<RequiredSkill identifier="weapons" level="70" />
<RequiredItem identifier="uex" />
<RequiredItem identifier="plastic" />
</Fabricate>
<InventoryIcon texture="Content/Items/InventoryIconAtlas.png" sourcerect="768,64,64,64" origin="0.5,0.5" />
<Sprite texture="Content/Items/Weapons/weapons_new.png" depth="0.55" sourcerect="51,478,48,33" origin="0.5,0.5" />
<Body width="45" height="30" density="20" />
<Throwable characterusable="false" slots="Any,RightHand,LeftHand" canbecombined="true" removeoncombined="true" throwforce="3.5" aimpos="35,-10" msg="ItemMsgPickUpSelect">
<StatusEffect type="OnUse" target="This" Condition="-100.0" disabledeltatime="true"/>
<StatusEffect type="OnBroken" target="This">
<sound file="Content/Items/Weapons/ExplosionMedium1.ogg" range="8000" />
<sound file="Content/Items/Weapons/ExplosionMedium2.ogg" range="8000" />
<sound file="Content/Items/Weapons/ExplosionMedium3.ogg" range="8000" />
<Explosion range="750.0" ballastfloradamage="150" structuredamage="0" itemdamage="1000" force="20" severlimbsprobability="2" debris="true" decal="explosion" decalsize="0.75">
<Affliction identifier="explosiondamage" strength="250" />
</Explosion>
<Remove />
</StatusEffect>
<StatusEffect type="OnBroken" target="This">
<sound file="Content/Items/Weapons/ExplosionDebris5.ogg" range="6000" />
</StatusEffect>
</Throwable>
<Quality>
<QualityStat stattype="ExplosionRadius" value="0.1"/>
<QualityStat stattype="ExplosionDamage" value="0.1"/>
</Quality>
</Item>
<Item name="[DebugOnlyTest]C4WithPen" identifier="testC41pen" category="Weapon" Tags="smallitem,explosive,demolitionsexpert" maxstacksize="32" maxstacksizecharacterinventory="8" Scale="0.5" cargocontaineridentifier="explosivecrate" impactsoundtag="impact_soft">
<Upgrade gameversion="0.9.3.0" scale="0.5"/>
<PreferredContainer primary="secarmcab" minamount="1" maxamount="2" spawnprobability="0.5" notcampaign="true" notpvp="true"/>
<PreferredContainer secondary="wreckarmcab,abandonedarmcab,piratearmcab" amount="1" spawnprobability="0.05"/>
<PreferredContainer secondary="armcab"/>
<Price baseprice="160">
<Price storeidentifier="merchantoutpost" sold="false" multiplier="1.4"/>
<Price storeidentifier="merchantcity" multiplier="1.25" minavailable="2" sold="false"/>
<Price storeidentifier="merchantresearch" sold="false" multiplier="1.25"/>
<Price storeidentifier="merchantmilitary" multiplier="0.9" minavailable="3" />
<Price storeidentifier="merchantmine" sold="false" />
<Price storeidentifier="merchantarmory" multiplier="0.9" minavailable="3" />
</Price>
<Fabricate suitablefabricators="fabricator" requiredtime="20">
<RequiredSkill identifier="weapons" level="70" />
<RequiredItem identifier="uex" />
<RequiredItem identifier="plastic" />
</Fabricate>
<InventoryIcon texture="Content/Items/InventoryIconAtlas.png" sourcerect="768,64,64,64" origin="0.5,0.5" />
<Sprite texture="Content/Items/Weapons/weapons_new.png" depth="0.55" sourcerect="51,478,48,33" origin="0.5,0.5" />
<Body width="45" height="30" density="20" />
<Throwable characterusable="false" slots="Any,RightHand,LeftHand" canbecombined="true" removeoncombined="true" throwforce="3.5" aimpos="35,-10" msg="ItemMsgPickUpSelect">
<StatusEffect type="OnUse" target="This" Condition="-100.0" disabledeltatime="true"/>
<StatusEffect type="OnBroken" target="This">
<sound file="Content/Items/Weapons/ExplosionMedium1.ogg" range="8000" />
<sound file="Content/Items/Weapons/ExplosionMedium2.ogg" range="8000" />
<sound file="Content/Items/Weapons/ExplosionMedium3.ogg" range="8000" />
<Explosion range="750.0" ballastfloradamage="150" structuredamage="0" itemdamage="1000" force="20" severlimbsprobability="2" debris="true" decal="explosion" decalsize="0.75" penetration="1">
<Affliction identifier="explosiondamage" strength="250" />
</Explosion>
<Remove />
</StatusEffect>
<StatusEffect type="OnBroken" target="This">
<sound file="Content/Items/Weapons/ExplosionDebris5.ogg" range="6000" />
</StatusEffect>
</Throwable>
<Quality>
<QualityStat stattype="ExplosionRadius" value="0.1"/>
<QualityStat stattype="ExplosionDamage" value="0.1"/>
</Quality>
</Item>
<Item name="[DebugOnlyTest]C4With2000range" identifier="testC42000" category="Weapon" Tags="smallitem,explosive,demolitionsexpert" maxstacksize="32" maxstacksizecharacterinventory="8" Scale="0.5" cargocontaineridentifier="explosivecrate" impactsoundtag="impact_soft">
<Upgrade gameversion="0.9.3.0" scale="0.5"/>
<PreferredContainer primary="secarmcab" minamount="1" maxamount="2" spawnprobability="0.5" notcampaign="true" notpvp="true"/>
<PreferredContainer secondary="wreckarmcab,abandonedarmcab,piratearmcab" amount="1" spawnprobability="0.05"/>
<PreferredContainer secondary="armcab"/>
<Price baseprice="160">
<Price storeidentifier="merchantoutpost" sold="false" multiplier="1.4"/>
<Price storeidentifier="merchantcity" multiplier="1.25" minavailable="2" sold="false"/>
<Price storeidentifier="merchantresearch" sold="false" multiplier="1.25"/>
<Price storeidentifier="merchantmilitary" multiplier="0.9" minavailable="3" />
<Price storeidentifier="merchantmine" sold="false" />
<Price storeidentifier="merchantarmory" multiplier="0.9" minavailable="3" />
</Price>
<Fabricate suitablefabricators="fabricator" requiredtime="20">
<RequiredSkill identifier="weapons" level="70" />
<RequiredItem identifier="uex" />
<RequiredItem identifier="plastic" />
</Fabricate>
<InventoryIcon texture="Content/Items/InventoryIconAtlas.png" sourcerect="768,64,64,64" origin="0.5,0.5" />
<Sprite texture="Content/Items/Weapons/weapons_new.png" depth="0.55" sourcerect="51,478,48,33" origin="0.5,0.5" />
<Body width="45" height="30" density="20" />
<Throwable characterusable="false" slots="Any,RightHand,LeftHand" canbecombined="true" removeoncombined="true" throwforce="3.5" aimpos="35,-10" msg="ItemMsgPickUpSelect">
<StatusEffect type="OnUse" target="This" Condition="-100.0" disabledeltatime="true"/>
<StatusEffect type="OnBroken" target="This">
<sound file="Content/Items/Weapons/ExplosionMedium1.ogg" range="8000" />
<sound file="Content/Items/Weapons/ExplosionMedium2.ogg" range="8000" />
<sound file="Content/Items/Weapons/ExplosionMedium3.ogg" range="8000" />
<Explosion range="5000.0" ballastfloradamage="150" structuredamage="1000" itemdamage="1000" force="20" IgnoreCover="true" DistanceFalloff="false" severlimbsprobability="2" debris="true" decal="explosion" decalsize="0.75">
</Explosion>
<Remove />
</StatusEffect>
<StatusEffect type="OnBroken" target="This">
<sound file="Content/Items/Weapons/ExplosionDebris5.ogg" range="6000" />
</StatusEffect>
</Throwable>
<Quality>
<QualityStat stattype="ExplosionRadius" value="0.1"/>
<QualityStat stattype="ExplosionDamage" value="0.1"/>
</Quality>
</Item>
</Items>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<contentpackage name="Explosion Test" modversion="1.0.1" corepackage="False" gameversion="1.11.5.0">
<Item file="%ModDir%/Items.xml" />
<Submarine file="%ModDir%/TestCamel.sub" />
</contentpackage>
Original file line number Diff line number Diff line change
Expand Up @@ -4543,12 +4543,12 @@ public void TrySeverLimbJoints(Limb targetLimb, float severLimbsProbability, flo
}
}

public AttackResult AddDamage(Vector2 worldPosition, IEnumerable<Affliction> afflictions, float stun, bool playSound, Vector2? attackImpulse = null, Character attacker = null, float damageMultiplier = 1f)
public AttackResult AddDamage(Vector2 worldPosition, IEnumerable<Affliction> afflictions, float stun, bool playSound, Vector2? attackImpulse = null, Character attacker = null, float damageMultiplier = 1f, float penetration = 0f)
{
return AddDamage(worldPosition, afflictions, stun, playSound, attackImpulse ?? Vector2.Zero, out _, attacker, damageMultiplier: damageMultiplier);
return AddDamage(worldPosition, afflictions, stun, playSound, attackImpulse ?? Vector2.Zero, out _, attacker, damageMultiplier: damageMultiplier,penetration: penetration);
}

public AttackResult AddDamage(Vector2 worldPosition, IEnumerable<Affliction> afflictions, float stun, bool playSound, Vector2 attackImpulse, out Limb hitLimb, Character attacker = null, float damageMultiplier = 1)
public AttackResult AddDamage(Vector2 worldPosition, IEnumerable<Affliction> afflictions, float stun, bool playSound, Vector2 attackImpulse, out Limb hitLimb, Character attacker = null, float damageMultiplier = 1f, float penetration = 0f)
{
hitLimb = null;

Expand All @@ -4565,7 +4565,7 @@ public AttackResult AddDamage(Vector2 worldPosition, IEnumerable<Affliction> aff
}
}

return DamageLimb(worldPosition, hitLimb, afflictions, stun, playSound, attackImpulse, attacker, damageMultiplier);
return DamageLimb(worldPosition, hitLimb, afflictions, stun, playSound, attackImpulse, attacker, damageMultiplier,penetration: penetration);
}

public void RecordKill(Character target)
Expand Down
5 changes: 2 additions & 3 deletions Barotrauma/BarotraumaShared/SharedSource/Map/Explosion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -589,7 +589,7 @@ private void DamageCharacters(Vector2 worldPosition, Attack attack, float force,
//only play the damage sound on the closest limb (playing it on all just sounds like a mess)
bool playSound = PlayDamageSounds && limb == closestLimb;

AttackResult attackResult = c.AddDamage(hitPos, modifiedAfflictions, attack.Stun * distFactor, playSound: playSound, attacker: attacker, damageMultiplier: attack.DamageMultiplier * attackData.DamageMultiplier);
AttackResult attackResult = c.AddDamage(hitPos, modifiedAfflictions, attack.Stun * distFactor, playSound: playSound, attacker: attacker, damageMultiplier: attack.DamageMultiplier * attackData.DamageMultiplier,penetration: attack.Penetration * distFactor);
damages.Add(limb, attackResult.Damage);
}
}
Expand Down Expand Up @@ -657,15 +657,14 @@ public static Dictionary<Structure, float> RangedStructureDamage(Vector2 worldPo
bool createWallDamageProjectiles = false,
bool distanceFalloff = true)
{
float dist = 600.0f;
damagedStructures.Clear();
foreach (Structure structure in Structure.WallList)
{
if (ignoredSubmarines != null && structure.Submarine != null && ignoredSubmarines.Contains(structure.Submarine)) { continue; }

if (structure.HasBody &&
!structure.IsPlatform &&
Vector2.Distance(structure.WorldPosition, worldPosition) < dist * 3.0f)
Vector2.Distance(structure.WorldPosition, worldPosition) < worldRange)
{
for (int i = 0; i < structure.SectionCount; i++)
{
Expand Down