The bleed update (#14814)
* Removed arbitrary modifier scaling. The bleed amount is now 1-1 in units. * Added some comments to explain the blood and bleed code * added some comments * added some comments * profusely bleeding message scales with max bleed rate * Added some comments * Added some comments (tm) * Halved the speed bleed rate heals. * Changed the wording of a comment to make the function of the values more clear * Changed bleed rate values, made heat heal more bleed rate * doubled crit chance, since damage types were reduced * Made iron restore more blood, 2->4u per 1u * Starting to add the blood pack * add bloodlevel to healingcomponent * Created code support in the healing system for restoring blood * first test of blood pack prototype * More pack testing, and defining the yml stack * yml syntax fix * adds bloodpack tag * Successfully added the item, but the effect and deletion after using the item is not working yet. * the blood regen worksgit add -A! * blood pack is entirely functioning * Removed bleed rate healing from brute pack * Comment correction * I tried * Removed bleed stats from corrupted corgi, they inherit same stats from basemob * Removed bleed stats from xeno, they inherit same stats from a base mob * Removed bleed stats from diona, they inherit same stats from a base mob * Removed bleed stats from slimes, they inherit same stats from a base mob * All mobs now heal bloodloss damage at a rate of 1 instead of 0.25 when healthy * The cautery now closes bleed wounds * Nerf blood pack bleed rate heal * Added 2 blood packs to medicine locker * Added 2 blood packs to wall medicine locker * Minor YML fix to chemistry locker, no changes in game * Added tag to medical belt for blood pack, added 2 blood packs to medical belt * Added 1 gauze to medical belt * 5 blood packs addded to nanomed plus * nanomed inventory change * 2 blood packs added to medical supplies crate from cargo * Moved 1 gauze from med kit to advanced med kit * Moved 1 tricord pill from advanced med kit to basic med kit * added 2 ointment to burn kit * Moved ina syringe from burn treatment to oxygen kit * Removed one gauze from brute kit * Added one bloodpack to brute med kit * Moved tranex acid syringe from advanced first aid to brute kit * Poison medipen moved from advanced first aid kit to toxin kit * Removed health analyzer from advanced first aid kit * removed one brute pack from advanced aid kit * added one ointment to advanced aid kit * Added one blood pack to advanced aid kit * Added 2 blood packs to combat med kit * Starting with adding the license for the tg sprite * Adds the blood pack sprite and meta.json code * I forgor to actually code the sprite in * Advanced med kit missing one blood pack * Replaced tricord pill with emergency medipen in cobat kit * Removed emergency pen from combat kit, there's no space for it * Revert "I tried" This reverts commit 94c2e28df3200993d3f09b72ecabc838ea5ae5c0. * Trying to fix yml test fail * Try again * attempt number 3 * Restock crate price was too low * fixing merge conflict without making a HUGE mess this time * ??? * again * again * Can I add the newline now maybe??? * Revert "Can I add the newline now maybe???" This reverts commit 22d26706a65a24633f7da1dea6315012e2d3ac6f. * Adds the doafter fix code from Keron to the blood level healing * minor typo fix * Feedback from Emisse and sloth; Removed chance based feedback on cauterizing * comment fix
This commit is contained in:
@@ -101,7 +101,9 @@ public sealed class BloodstreamSystem : EntitySystem
|
||||
// as well as stop their bleeding to a certain extent.
|
||||
if (bloodstream.BleedAmount > 0)
|
||||
{
|
||||
TryModifyBloodLevel(uid, (-bloodstream.BleedAmount) / 20, bloodstream);
|
||||
// Blood is removed from the bloodstream at a 1-1 rate with the bleed amount
|
||||
TryModifyBloodLevel(uid, (-bloodstream.BleedAmount), bloodstream);
|
||||
// Bleed rate is reduced by the bleed reduction amount in the bloodstream component.
|
||||
TryModifyBleedAmount(uid, -bloodstream.BleedReductionAmount, bloodstream);
|
||||
}
|
||||
|
||||
@@ -160,19 +162,26 @@ public sealed class BloodstreamSystem : EntitySystem
|
||||
if (bloodloss.Empty)
|
||||
return;
|
||||
|
||||
// Does the calculation of how much bleed rate should be added/removed, then applies it
|
||||
var oldBleedAmount = component.BleedAmount;
|
||||
var total = bloodloss.Total;
|
||||
var totalFloat = total.Float();
|
||||
TryModifyBleedAmount(uid, totalFloat, component);
|
||||
|
||||
var prob = Math.Clamp(totalFloat / 50, 0, 1);
|
||||
var healPopupProb = Math.Clamp(Math.Abs(totalFloat) / 25, 0, 1);
|
||||
/// <summary>
|
||||
/// Critical hit. Causes target to lose blood, using the bleed rate modifier of the weapon, currently divided by 5
|
||||
/// The crit chance is currently the bleed rate modifier divided by 25.
|
||||
/// Higher damage weapons have a higher chance to crit!
|
||||
/// </summary>
|
||||
var prob = Math.Clamp(totalFloat / 25, 0, 1);
|
||||
if (totalFloat > 0 && _robustRandom.Prob(prob))
|
||||
{
|
||||
TryModifyBloodLevel(uid, (-total) / 5, component);
|
||||
_audio.PlayPvs(component.InstantBloodSound, uid);
|
||||
}
|
||||
else if (totalFloat < 0 && oldBleedAmount > 0 && _robustRandom.Prob(healPopupProb))
|
||||
|
||||
// Heat damage will cauterize, causing the bleed rate to be reduced.
|
||||
else if (totalFloat < 0 && oldBleedAmount > 0)
|
||||
{
|
||||
// Magically, this damage has healed some bleeding, likely
|
||||
// because it's burn damage that cauterized their wounds.
|
||||
@@ -183,20 +192,25 @@ public sealed class BloodstreamSystem : EntitySystem
|
||||
uid, PopupType.Medium);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows text on health examine, based on bleed rate and blood level.
|
||||
/// </summary>
|
||||
private void OnHealthBeingExamined(EntityUid uid, BloodstreamComponent component, HealthBeingExaminedEvent args)
|
||||
{
|
||||
if (component.BleedAmount > 10)
|
||||
// Shows profusely bleeding at half the max bleed rate.
|
||||
if (component.BleedAmount > component.MaxBleedAmount / 2)
|
||||
{
|
||||
args.Message.PushNewline();
|
||||
args.Message.AddMarkup(Loc.GetString("bloodstream-component-profusely-bleeding", ("target", Identity.Entity(uid, EntityManager))));
|
||||
}
|
||||
// Shows bleeding message when bleeding, but less than profusely.
|
||||
else if (component.BleedAmount > 0)
|
||||
{
|
||||
args.Message.PushNewline();
|
||||
args.Message.AddMarkup(Loc.GetString("bloodstream-component-bleeding", ("target", Identity.Entity(uid, EntityManager))));
|
||||
}
|
||||
|
||||
// If the mob's blood level is below the damage threshhold, the pale message is added.
|
||||
if (GetBloodLevelPercentage(uid, component) < component.BloodlossThreshold)
|
||||
{
|
||||
args.Message.PushNewline();
|
||||
|
||||
Reference in New Issue
Block a user