Stunned Status and Knockdown Meth fix. (#39547)
* Init Commit * Remove unused code, fix stun visuals bug * Update Content.Shared/Stunnable/SharedStunSystem.cs * Some initial changes * first batch of changes * Commit * One line cleanup * KnockdownStatusEffect ain't worth it. * Fix 2 bugs * Fixes * Remove that actually, * Maybe this? * Meff fix * Meff fix * alert cleanup and API * I expect update loops to be at the top. * Fix LOC * Address review * Address review x 2 * Merg my PR * Fix * Update Content.Shared/Alert/AlertsSystem.cs webedit Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com> * FIX THAT TEST FAIL!!!! * Me when I forget to actually give you alerts * Push * Tests are not failing locally why are they dying on github??? * Fix test fails (real) --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
abff932ca8
commit
141d903125
@@ -69,6 +69,7 @@ public sealed partial class GenericStatusEffect : EntityEffect
|
|||||||
|
|
||||||
public enum StatusEffectMetabolismType
|
public enum StatusEffectMetabolismType
|
||||||
{
|
{
|
||||||
|
Update,
|
||||||
Add,
|
Add,
|
||||||
Remove,
|
Remove,
|
||||||
Set
|
Set
|
||||||
|
|||||||
@@ -0,0 +1,99 @@
|
|||||||
|
using Content.Shared.Stunnable;
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
|
namespace Content.Shared.EntityEffects.Effects.StatusEffects;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Changes the knockdown timer on an entity or causes knockdown.
|
||||||
|
/// </summary>
|
||||||
|
[UsedImplicitly]
|
||||||
|
public sealed partial class ModifyKnockdown : EntityEffect
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Should we only affect those with crawler component? Note if this is false, it will paralyze non-crawler's instead.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public bool Crawling;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should we drop items when we fall?
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public bool Drop;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Time for which knockdown should be applied. Behaviour changes according to <see cref="StatusEffectMetabolismType"/>.
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public TimeSpan Time = TimeSpan.FromSeconds(0.5);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should this effect add the status effect, remove time from it, or set its cooldown?
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public StatusEffectMetabolismType Type = StatusEffectMetabolismType.Add;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should this effect add knockdown?, remove time from it?, or set its cooldown?
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public bool Refresh = true;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void Effect(EntityEffectBaseArgs args)
|
||||||
|
{
|
||||||
|
var stunSys = args.EntityManager.EntitySysManager.GetEntitySystem<SharedStunSystem>();
|
||||||
|
|
||||||
|
var time = Time;
|
||||||
|
if (args is EntityEffectReagentArgs reagentArgs)
|
||||||
|
time *= reagentArgs.Scale.Float();
|
||||||
|
|
||||||
|
switch (Type)
|
||||||
|
{
|
||||||
|
case StatusEffectMetabolismType.Update:
|
||||||
|
if (Crawling)
|
||||||
|
{
|
||||||
|
stunSys.TryCrawling(args.TargetEntity, time, drop: Drop);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stunSys.TryKnockdown(args.TargetEntity, time, drop: Drop);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case StatusEffectMetabolismType.Add:
|
||||||
|
if (Crawling)
|
||||||
|
{
|
||||||
|
stunSys.TryCrawling(args.TargetEntity, time, false, drop: Drop);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stunSys.TryKnockdown(args.TargetEntity, time, false, drop: Drop);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case StatusEffectMetabolismType.Remove:
|
||||||
|
stunSys.AddKnockdownTime(args.TargetEntity, -time);
|
||||||
|
break;
|
||||||
|
case StatusEffectMetabolismType.Set:
|
||||||
|
if (Crawling)
|
||||||
|
{
|
||||||
|
stunSys.TryCrawling(args.TargetEntity, time, drop: Drop);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stunSys.TryKnockdown(args.TargetEntity, time, drop: Drop);
|
||||||
|
}
|
||||||
|
stunSys.SetKnockdownTime(args.TargetEntity, time);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
|
||||||
|
=> Loc.GetString(
|
||||||
|
"reagent-effect-guidebook-knockdown",
|
||||||
|
("chance", Probability),
|
||||||
|
("type", Type),
|
||||||
|
("time", Time.TotalSeconds)
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -25,12 +25,6 @@ public sealed partial class ModifyStatusEffect : EntityEffect
|
|||||||
[DataField]
|
[DataField]
|
||||||
public float Delay = 0f;
|
public float Delay = 0f;
|
||||||
|
|
||||||
/// <remarks>
|
|
||||||
/// true - refresh status effect time (update to greater value), false - accumulate status effect time.
|
|
||||||
/// </remarks>
|
|
||||||
[DataField]
|
|
||||||
public bool Refresh = true;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Should this effect add the status effect, remove time from it, or set its cooldown?
|
/// Should this effect add the status effect, remove time from it, or set its cooldown?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -49,11 +43,11 @@ public sealed partial class ModifyStatusEffect : EntityEffect
|
|||||||
var duration = TimeSpan.FromSeconds(time);
|
var duration = TimeSpan.FromSeconds(time);
|
||||||
switch (Type)
|
switch (Type)
|
||||||
{
|
{
|
||||||
|
case StatusEffectMetabolismType.Update:
|
||||||
|
statusSys.TryUpdateStatusEffectDuration(args.TargetEntity, EffectProto, duration, Delay > 0 ? TimeSpan.FromSeconds(Delay) : null);
|
||||||
|
break;
|
||||||
case StatusEffectMetabolismType.Add:
|
case StatusEffectMetabolismType.Add:
|
||||||
if (Refresh)
|
statusSys.TryAddStatusEffectDuration(args.TargetEntity, EffectProto, duration, Delay > 0 ? TimeSpan.FromSeconds(Delay) : null);
|
||||||
statusSys.TryUpdateStatusEffectDuration(args.TargetEntity, EffectProto, duration, Delay > 0 ? TimeSpan.FromSeconds(Delay) : null);
|
|
||||||
else
|
|
||||||
statusSys.TryAddStatusEffectDuration(args.TargetEntity, EffectProto, duration, Delay > 0 ? TimeSpan.FromSeconds(Delay) : null);
|
|
||||||
break;
|
break;
|
||||||
case StatusEffectMetabolismType.Remove:
|
case StatusEffectMetabolismType.Remove:
|
||||||
statusSys.TryAddTime(args.TargetEntity, EffectProto, -duration);
|
statusSys.TryAddTime(args.TargetEntity, EffectProto, -duration);
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ public abstract partial class SharedStunSystem
|
|||||||
|
|
||||||
private void OnRejuvenate(Entity<KnockedDownComponent> entity, ref RejuvenateEvent args)
|
private void OnRejuvenate(Entity<KnockedDownComponent> entity, ref RejuvenateEvent args)
|
||||||
{
|
{
|
||||||
SetKnockdownTime(entity, GameTiming.CurTime);
|
SetKnockdownNextUpdate((entity, entity), GameTiming.CurTime);
|
||||||
|
|
||||||
if (entity.Comp.AutoStand)
|
if (entity.Comp.AutoStand)
|
||||||
RemComp<KnockedDownComponent>(entity);
|
RemComp<KnockedDownComponent>(entity);
|
||||||
@@ -156,6 +156,19 @@ public abstract partial class SharedStunSystem
|
|||||||
DirtyField(entity, entity.Comp, nameof(KnockedDownComponent.DoAfterId));
|
DirtyField(entity, entity.Comp, nameof(KnockedDownComponent.DoAfterId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the time left of the knockdown timer to the inputted value.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity">Entity who's knockdown time we're updating.</param>
|
||||||
|
/// <param name="time">The time we're updating with.</param>
|
||||||
|
public void SetKnockdownTime(Entity<KnockedDownComponent?> entity, TimeSpan time)
|
||||||
|
{
|
||||||
|
if (!Resolve(entity, ref entity.Comp, false))
|
||||||
|
return;
|
||||||
|
|
||||||
|
SetKnockdownNextUpdate(entity, GameTiming.CurTime + time);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates the knockdown timer of a knocked down entity with a given inputted time, then dirties the time.
|
/// Updates the knockdown timer of a knocked down entity with a given inputted time, then dirties the time.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -170,18 +183,6 @@ public abstract partial class SharedStunSystem
|
|||||||
AddKnockdownTime(entity, time);
|
AddKnockdownTime(entity, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sets the next update datafield of an entity's <see cref="KnockedDownComponent"/> to a specific time.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="entity">Entity whose timer we're updating</param>
|
|
||||||
/// <param name="time">The exact time we're setting the next update to.</param>
|
|
||||||
public void SetKnockdownTime(Entity<KnockedDownComponent> entity, TimeSpan time)
|
|
||||||
{
|
|
||||||
entity.Comp.NextUpdate = time;
|
|
||||||
DirtyField(entity, entity.Comp, nameof(KnockedDownComponent.NextUpdate));
|
|
||||||
Alerts.ShowAlert(entity.Owner, KnockdownAlert, null, (GameTiming.CurTime, entity.Comp.NextUpdate));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Refreshes the amount of time an entity is knocked down to the inputted time, if it is greater than
|
/// Refreshes the amount of time an entity is knocked down to the inputted time, if it is greater than
|
||||||
/// the current time left.
|
/// the current time left.
|
||||||
@@ -195,7 +196,7 @@ public abstract partial class SharedStunSystem
|
|||||||
|
|
||||||
var knockedTime = GameTiming.CurTime + time;
|
var knockedTime = GameTiming.CurTime + time;
|
||||||
if (entity.Comp.NextUpdate < knockedTime)
|
if (entity.Comp.NextUpdate < knockedTime)
|
||||||
SetKnockdownTime((entity, entity.Comp), knockedTime);
|
SetKnockdownNextUpdate((entity, entity.Comp), knockedTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -210,19 +211,35 @@ public abstract partial class SharedStunSystem
|
|||||||
|
|
||||||
if (entity.Comp.NextUpdate < GameTiming.CurTime)
|
if (entity.Comp.NextUpdate < GameTiming.CurTime)
|
||||||
{
|
{
|
||||||
SetKnockdownTime((entity, entity.Comp), GameTiming.CurTime + time);
|
SetKnockdownNextUpdate((entity, entity.Comp), GameTiming.CurTime + time);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
entity.Comp.NextUpdate += time;
|
SetKnockdownNextUpdate((entity, entity.Comp), entity.Comp.NextUpdate + time);
|
||||||
DirtyField(entity, entity.Comp, nameof(KnockedDownComponent.NextUpdate));
|
|
||||||
Alerts.ShowAlert(entity.Owner, KnockdownAlert, null, (GameTiming.CurTime, entity.Comp.NextUpdate));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Knockdown Logic
|
#region Knockdown Logic
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the next update datafield of an entity's <see cref="KnockedDownComponent"/> to a specific time.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity">Entity whose timer we're updating</param>
|
||||||
|
/// <param name="time">The exact time we're setting the next update to.</param>
|
||||||
|
private void SetKnockdownNextUpdate(Entity<KnockedDownComponent?> entity, TimeSpan time)
|
||||||
|
{
|
||||||
|
if (!Resolve(entity, ref entity.Comp, false))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (GameTiming.CurTime > time)
|
||||||
|
time = GameTiming.CurTime;
|
||||||
|
|
||||||
|
entity.Comp.NextUpdate = time;
|
||||||
|
DirtyField(entity, entity.Comp, nameof(KnockedDownComponent.NextUpdate));
|
||||||
|
Alerts.UpdateAlert(entity.Owner, KnockdownAlert, null, entity.Comp.NextUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
private void HandleToggleKnockdown(ICommonSession? session)
|
private void HandleToggleKnockdown(ICommonSession? session)
|
||||||
{
|
{
|
||||||
if (session is not { } playerSession)
|
if (session is not { } playerSession)
|
||||||
|
|||||||
@@ -104,6 +104,10 @@ reagent-effect-guidebook-even-health-change =
|
|||||||
|
|
||||||
reagent-effect-guidebook-status-effect =
|
reagent-effect-guidebook-status-effect =
|
||||||
{ $type ->
|
{ $type ->
|
||||||
|
[update]{ $chance ->
|
||||||
|
[1] Causes
|
||||||
|
*[other] cause
|
||||||
|
} {LOC($key)} for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} without accumulation
|
||||||
[add] { $chance ->
|
[add] { $chance ->
|
||||||
[1] Causes
|
[1] Causes
|
||||||
*[other] cause
|
*[other] cause
|
||||||
@@ -134,6 +138,26 @@ reagent-effect-guidebook-status-effect-delay =
|
|||||||
} {NATURALFIXED($time, 3)} {MANY("second", $time)} of {LOC($key)}
|
} {NATURALFIXED($time, 3)} {MANY("second", $time)} of {LOC($key)}
|
||||||
} after a {NATURALFIXED($delay, 3)} second delay
|
} after a {NATURALFIXED($delay, 3)} second delay
|
||||||
|
|
||||||
|
reagent-effect-guidebook-knockdown =
|
||||||
|
{ $type ->
|
||||||
|
[update]{ $chance ->
|
||||||
|
[1] Causes
|
||||||
|
*[other] cause
|
||||||
|
} {LOC($key)} for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} without accumulation
|
||||||
|
[add] { $chance ->
|
||||||
|
[1] Causes
|
||||||
|
*[other] cause
|
||||||
|
} knockdown for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} with accumulation
|
||||||
|
*[set] { $chance ->
|
||||||
|
[1] Causes
|
||||||
|
*[other] cause
|
||||||
|
} knockdown for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} without accumulation
|
||||||
|
[remove]{ $chance ->
|
||||||
|
[1] Removes
|
||||||
|
*[other] remove
|
||||||
|
} {NATURALFIXED($time, 3)} {MANY("second", $time)} of knockdown
|
||||||
|
}
|
||||||
|
|
||||||
reagent-effect-guidebook-set-solution-temperature-effect =
|
reagent-effect-guidebook-set-solution-temperature-effect =
|
||||||
{ $chance ->
|
{ $chance ->
|
||||||
[1] Sets
|
[1] Sets
|
||||||
|
|||||||
@@ -34,7 +34,6 @@
|
|||||||
min: 10
|
min: 10
|
||||||
type: Add
|
type: Add
|
||||||
time: 5
|
time: 5
|
||||||
refresh: false
|
|
||||||
- !type:PopupMessage
|
- !type:PopupMessage
|
||||||
type: Local
|
type: Local
|
||||||
messages:
|
messages:
|
||||||
|
|||||||
@@ -114,7 +114,6 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
time: 5
|
time: 5
|
||||||
type: Add
|
type: Add
|
||||||
refresh: false
|
|
||||||
Drink:
|
Drink:
|
||||||
effects:
|
effects:
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
|
|||||||
@@ -372,7 +372,7 @@
|
|||||||
shouldHave: false
|
shouldHave: false
|
||||||
effectProto: StatusEffectForcedSleeping
|
effectProto: StatusEffectForcedSleeping
|
||||||
time: 3
|
time: 3
|
||||||
type: Add
|
type: Update
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
- !type:ReagentThreshold
|
- !type:ReagentThreshold
|
||||||
@@ -412,7 +412,6 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
type: Add
|
type: Add
|
||||||
time: 15
|
time: 15
|
||||||
refresh: false
|
|
||||||
- !type:Drunk
|
- !type:Drunk
|
||||||
boozePower: 15
|
boozePower: 15
|
||||||
- !type:PopupMessage
|
- !type:PopupMessage
|
||||||
@@ -452,7 +451,6 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
type: Add
|
type: Add
|
||||||
time: 500
|
time: 500
|
||||||
refresh: false
|
|
||||||
- !type:Drunk
|
- !type:Drunk
|
||||||
boozePower: 500
|
boozePower: 500
|
||||||
conditions:
|
conditions:
|
||||||
|
|||||||
@@ -89,7 +89,6 @@
|
|||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
time: 1.5
|
time: 1.5
|
||||||
type: Add
|
type: Add
|
||||||
refresh: false
|
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
@@ -364,12 +363,11 @@
|
|||||||
min: 1
|
min: 1
|
||||||
reagent: Histamine
|
reagent: Histamine
|
||||||
amount: 4
|
amount: 4
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
key: Stun
|
effectProto: StatusEffectStunned
|
||||||
time: 0.75
|
time: 0.75
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyKnockdown
|
||||||
key: KnockedDown
|
|
||||||
time: 0.75
|
time: 0.75
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
@@ -744,12 +742,11 @@
|
|||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Poison: 2
|
Poison: 2
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
key: Stun
|
effectProto: StatusEffectStunned
|
||||||
time: 3.0
|
time: 3.0
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyKnockdown
|
||||||
key: KnockedDown
|
|
||||||
time: 3.0
|
time: 3.0
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
@@ -1354,7 +1351,6 @@
|
|||||||
min: 30
|
min: 30
|
||||||
type: Add
|
type: Add
|
||||||
time: 8
|
time: 8
|
||||||
refresh: false
|
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
key: Jitter
|
key: Jitter
|
||||||
time: 2.0
|
time: 2.0
|
||||||
@@ -1416,7 +1412,6 @@
|
|||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
time: 4
|
time: 4
|
||||||
type: Add
|
type: Add
|
||||||
refresh: false
|
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
key: Jitter
|
key: Jitter
|
||||||
time: 4.0
|
time: 4.0
|
||||||
|
|||||||
@@ -33,12 +33,11 @@
|
|||||||
key: Stutter
|
key: Stutter
|
||||||
component: StutteringAccent
|
component: StutteringAccent
|
||||||
- !type:Jitter
|
- !type:Jitter
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
key: Stun
|
effectProto: StatusEffectStunned
|
||||||
time: 3
|
time: 3
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyKnockdown
|
||||||
key: KnockedDown
|
|
||||||
time: 3
|
time: 3
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
@@ -82,12 +81,11 @@
|
|||||||
Poison: 2 # this is added to the base damage of the meth.
|
Poison: 2 # this is added to the base damage of the meth.
|
||||||
Asphyxiation: 2
|
Asphyxiation: 2
|
||||||
- !type:Jitter
|
- !type:Jitter
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
key: Stun
|
effectProto: StatusEffectStunned
|
||||||
time: 1
|
time: 1
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyKnockdown
|
||||||
key: KnockedDown
|
|
||||||
time: 1
|
time: 1
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:ModifyStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
@@ -142,12 +140,11 @@
|
|||||||
min: 1
|
min: 1
|
||||||
reagent: ChloralHydrate
|
reagent: ChloralHydrate
|
||||||
amount: -10
|
amount: -10
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyStatusEffect
|
||||||
key: Stun
|
effectProto: StatusEffectStunned
|
||||||
time: 3
|
time: 3
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:GenericStatusEffect
|
- !type:ModifyKnockdown
|
||||||
key: KnockedDown
|
|
||||||
time: 3
|
time: 3
|
||||||
type: Remove
|
type: Remove
|
||||||
- !type:GenericStatusEffect
|
- !type:GenericStatusEffect
|
||||||
@@ -205,7 +202,6 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
time: 16
|
time: 16
|
||||||
type: Add
|
type: Add
|
||||||
refresh: false
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Nicotine
|
id: Nicotine
|
||||||
@@ -243,7 +239,6 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
time: 10
|
time: 10
|
||||||
type: Add
|
type: Add
|
||||||
refresh: false
|
|
||||||
- !type:ChemVomit # Vomiting is a symptom of brain damage
|
- !type:ChemVomit # Vomiting is a symptom of brain damage
|
||||||
probability: 0.05
|
probability: 0.05
|
||||||
- !type:Drunk # Headaches and slurring are major symptoms of brain damage, this is close enough
|
- !type:Drunk # Headaches and slurring are major symptoms of brain damage, this is close enough
|
||||||
@@ -264,7 +259,6 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
type: Add
|
type: Add
|
||||||
time: 5
|
time: 5
|
||||||
refresh: false
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: Bananadine
|
id: Bananadine
|
||||||
@@ -281,7 +275,6 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
type: Add
|
type: Add
|
||||||
time: 5
|
time: 5
|
||||||
refresh: false
|
|
||||||
|
|
||||||
# Probably replace this one with sleeping chem when putting someone in a comatose state is easier
|
# Probably replace this one with sleeping chem when putting someone in a comatose state is easier
|
||||||
- type: reagent
|
- type: reagent
|
||||||
@@ -325,7 +318,6 @@
|
|||||||
component: Muted
|
component: Muted
|
||||||
type: Add
|
type: Add
|
||||||
time: 10
|
time: 10
|
||||||
refresh: false
|
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
id: NorepinephricAcid
|
id: NorepinephricAcid
|
||||||
@@ -477,4 +469,3 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
type: Add
|
type: Add
|
||||||
time: 5
|
time: 5
|
||||||
refresh: false
|
|
||||||
|
|||||||
@@ -74,7 +74,6 @@
|
|||||||
effectProto: StatusEffectDrowsiness
|
effectProto: StatusEffectDrowsiness
|
||||||
time: 4
|
time: 4
|
||||||
type: Add
|
type: Add
|
||||||
refresh: false
|
|
||||||
- !type:HealthChange
|
- !type:HealthChange
|
||||||
conditions:
|
conditions:
|
||||||
- !type:ReagentThreshold
|
- !type:ReagentThreshold
|
||||||
@@ -359,7 +358,6 @@
|
|||||||
effectProto: StatusEffectSeeingRainbow
|
effectProto: StatusEffectSeeingRainbow
|
||||||
type: Add
|
type: Add
|
||||||
time: 10
|
time: 10
|
||||||
refresh: false
|
|
||||||
# TODO: PROPER hallucinations
|
# TODO: PROPER hallucinations
|
||||||
|
|
||||||
- type: reagent
|
- type: reagent
|
||||||
|
|||||||
Reference in New Issue
Block a user