Add AMIV disease stages (#9637)
* Add AMIV disease stages * remove unused import * move stages to top for readability * monkey immunity to amiv * Update to use time instead of index * Revert "Update to use time instead of index" This reverts commit 6bc83b0d48c167fe30437fa94272a00ed1633c5d. * add comments * rerun test
This commit is contained in:
41
Content.Server/Disease/Effects/DiseasePolymorph.cs
Normal file
41
Content.Server/Disease/Effects/DiseasePolymorph.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using Content.Server.Polymorph.Systems;
|
||||
using Content.Shared.Audio;
|
||||
using Content.Shared.Disease;
|
||||
using Content.Shared.Disease.Components;
|
||||
using Content.Shared.Polymorph;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Sound;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
|
||||
namespace Content.Server.Disease.Effects
|
||||
{
|
||||
[UsedImplicitly]
|
||||
public sealed class DiseasePolymorph : DiseaseEffect
|
||||
{
|
||||
[DataField("polymorphId", required: true, customTypeSerializer: typeof(PrototypeIdSerializer<PolymorphPrototype>))]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public readonly string PolymorphId = default!;
|
||||
|
||||
[DataField("polymorphSound")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public SoundSpecifier? PolymorphSound;
|
||||
|
||||
[DataField("polymorphMessage")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public string? PolymorphMessage;
|
||||
|
||||
public override void Effect(DiseaseEffectArgs args)
|
||||
{
|
||||
EntityUid? polyUid = EntitySystem.Get<PolymorphableSystem>().PolymorphEntity(args.DiseasedEntity, PolymorphId);
|
||||
|
||||
if (PolymorphSound != null && polyUid != null)
|
||||
SoundSystem.Play(PolymorphSound.GetSound(), Filter.Pvs(polyUid.Value), polyUid.Value, AudioHelpers.WithVariation(0.2f));
|
||||
|
||||
if (PolymorphMessage != null && polyUid != null)
|
||||
EntitySystem.Get<SharedPopupSystem>().PopupEntity(Loc.GetString(PolymorphMessage), polyUid.Value, Filter.Entities(polyUid.Value), Shared.Popups.PopupType.Large);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,3 +11,4 @@ disease-banana-compulsion = You really want to eat some bananas.
|
||||
disease-beat-chest-compulsion = {CAPITALIZE(THE($person))} beats {POSS-ADJ($person)} chest.
|
||||
disease-vomit = {CAPITALIZE(THE($person))} vomits.
|
||||
disease-think = You feel like you can't think straight.
|
||||
disease-polymorph = You feel your body twist and change form!
|
||||
@@ -118,35 +118,95 @@
|
||||
id: AMIV
|
||||
name: AMIV
|
||||
cureResist: 0.10
|
||||
stages:
|
||||
- 0
|
||||
- 120
|
||||
- 780
|
||||
effects:
|
||||
# compulsion pop ups
|
||||
- !type:DiseasePopUp
|
||||
probability: 0.015
|
||||
type: Pvs
|
||||
message: disease-beat-chest-compulsion
|
||||
visualType: Medium
|
||||
stages:
|
||||
- 0
|
||||
- 1
|
||||
- 2
|
||||
- !type:DiseasePopUp
|
||||
probability: 0.03
|
||||
message: disease-banana-compulsion
|
||||
visualType: Medium
|
||||
stages:
|
||||
- 0
|
||||
- 1
|
||||
- 2
|
||||
# Screeches - spreads disease
|
||||
- !type:DiseaseSnough
|
||||
probability: 0.01
|
||||
snoughMessage: disease-screech
|
||||
snoughSound:
|
||||
collection: MonkeyScreeches
|
||||
stages:
|
||||
- 0
|
||||
- !type:DiseaseSnough
|
||||
probability: 0.02
|
||||
snoughMessage: disease-screech
|
||||
snoughSound:
|
||||
collection: MonkeyScreeches
|
||||
stages:
|
||||
- 1
|
||||
- !type:DiseaseSnough
|
||||
probability: 0.04
|
||||
snoughMessage: disease-screech
|
||||
snoughSound:
|
||||
collection: MonkeyScreeches
|
||||
stages:
|
||||
- 2
|
||||
# monkey accent chance when speaking
|
||||
- !type:DiseaseGenericStatusEffect
|
||||
probability: 0.3
|
||||
probability: 0.2
|
||||
key: Stutter
|
||||
component: MonkeyAccent
|
||||
stages:
|
||||
- 1
|
||||
- !type:DiseaseGenericStatusEffect
|
||||
probability: 0.5
|
||||
key: Stutter
|
||||
component: MonkeyAccent
|
||||
stages:
|
||||
- 2
|
||||
# asphyxiation damage, probably from all the screeching
|
||||
- !type:DiseaseHealthChange
|
||||
probability: 0.53
|
||||
damage:
|
||||
types:
|
||||
Asphyxiation: 1
|
||||
stages:
|
||||
- 1
|
||||
- 2
|
||||
# possible monkefication if ignored too long
|
||||
- !type:DiseasePolymorph
|
||||
probability: 0.000427 ## ~5% chance over 120 secs
|
||||
polymorphId: AMIVMorph
|
||||
polymorphMessage: disease-polymorph
|
||||
polymorphSound:
|
||||
path: /Audio/Animals/monkey_scream.ogg
|
||||
stages:
|
||||
- 2
|
||||
cures:
|
||||
- !type:DiseaseJustWaitCure
|
||||
maxLength: 1600
|
||||
maxLength: 900
|
||||
stages:
|
||||
- 0
|
||||
- 1
|
||||
- 2
|
||||
- !type:DiseaseReagentCure
|
||||
reagent: BananaHonk
|
||||
stages:
|
||||
- 0
|
||||
- 1
|
||||
- 2
|
||||
|
||||
- type: disease
|
||||
id: BleedersBite
|
||||
|
||||
@@ -844,6 +844,8 @@
|
||||
- type: Bloodstream
|
||||
bloodMaxVolume: 50
|
||||
- type: DiseaseCarrier #The other class lab animal and disease vector
|
||||
naturalImmunities:
|
||||
- AMIV
|
||||
- type: CanEscapeInventory
|
||||
- type: MobPrice
|
||||
price: 50
|
||||
|
||||
@@ -43,3 +43,12 @@
|
||||
entity: SuperSynthesizerInstrument
|
||||
forced: true
|
||||
inventory: Drop
|
||||
|
||||
- type: polymorph
|
||||
id: AMIVMorph
|
||||
entity: MobMonkey
|
||||
forced: true
|
||||
inventory: Transfer
|
||||
transferName: true
|
||||
revertOnCrit: false
|
||||
revertOnDeath: false
|
||||
Reference in New Issue
Block a user