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-beat-chest-compulsion = {CAPITALIZE(THE($person))} beats {POSS-ADJ($person)} chest.
|
||||||
disease-vomit = {CAPITALIZE(THE($person))} vomits.
|
disease-vomit = {CAPITALIZE(THE($person))} vomits.
|
||||||
disease-think = You feel like you can't think straight.
|
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
|
id: AMIV
|
||||||
name: AMIV
|
name: AMIV
|
||||||
cureResist: 0.10
|
cureResist: 0.10
|
||||||
|
stages:
|
||||||
|
- 0
|
||||||
|
- 120
|
||||||
|
- 780
|
||||||
effects:
|
effects:
|
||||||
|
# compulsion pop ups
|
||||||
- !type:DiseasePopUp
|
- !type:DiseasePopUp
|
||||||
probability: 0.015
|
probability: 0.015
|
||||||
type: Pvs
|
type: Pvs
|
||||||
message: disease-beat-chest-compulsion
|
message: disease-beat-chest-compulsion
|
||||||
visualType: Medium
|
visualType: Medium
|
||||||
|
stages:
|
||||||
|
- 0
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
- !type:DiseasePopUp
|
- !type:DiseasePopUp
|
||||||
probability: 0.03
|
probability: 0.03
|
||||||
message: disease-banana-compulsion
|
message: disease-banana-compulsion
|
||||||
visualType: Medium
|
visualType: Medium
|
||||||
|
stages:
|
||||||
|
- 0
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
# Screeches - spreads disease
|
||||||
|
- !type:DiseaseSnough
|
||||||
|
probability: 0.01
|
||||||
|
snoughMessage: disease-screech
|
||||||
|
snoughSound:
|
||||||
|
collection: MonkeyScreeches
|
||||||
|
stages:
|
||||||
|
- 0
|
||||||
- !type:DiseaseSnough
|
- !type:DiseaseSnough
|
||||||
probability: 0.02
|
probability: 0.02
|
||||||
snoughMessage: disease-screech
|
snoughMessage: disease-screech
|
||||||
snoughSound:
|
snoughSound:
|
||||||
collection: MonkeyScreeches
|
collection: MonkeyScreeches
|
||||||
|
stages:
|
||||||
|
- 1
|
||||||
|
- !type:DiseaseSnough
|
||||||
|
probability: 0.04
|
||||||
|
snoughMessage: disease-screech
|
||||||
|
snoughSound:
|
||||||
|
collection: MonkeyScreeches
|
||||||
|
stages:
|
||||||
|
- 2
|
||||||
|
# monkey accent chance when speaking
|
||||||
- !type:DiseaseGenericStatusEffect
|
- !type:DiseaseGenericStatusEffect
|
||||||
probability: 0.3
|
probability: 0.2
|
||||||
key: Stutter
|
key: Stutter
|
||||||
component: MonkeyAccent
|
component: MonkeyAccent
|
||||||
|
stages:
|
||||||
|
- 1
|
||||||
|
- !type:DiseaseGenericStatusEffect
|
||||||
|
probability: 0.5
|
||||||
|
key: Stutter
|
||||||
|
component: MonkeyAccent
|
||||||
|
stages:
|
||||||
|
- 2
|
||||||
|
# asphyxiation damage, probably from all the screeching
|
||||||
- !type:DiseaseHealthChange
|
- !type:DiseaseHealthChange
|
||||||
probability: 0.53
|
probability: 0.53
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Asphyxiation: 1
|
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:
|
cures:
|
||||||
- !type:DiseaseJustWaitCure
|
- !type:DiseaseJustWaitCure
|
||||||
maxLength: 1600
|
maxLength: 900
|
||||||
|
stages:
|
||||||
|
- 0
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
- !type:DiseaseReagentCure
|
- !type:DiseaseReagentCure
|
||||||
reagent: BananaHonk
|
reagent: BananaHonk
|
||||||
|
stages:
|
||||||
|
- 0
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
|
||||||
- type: disease
|
- type: disease
|
||||||
id: BleedersBite
|
id: BleedersBite
|
||||||
|
|||||||
@@ -844,6 +844,8 @@
|
|||||||
- type: Bloodstream
|
- type: Bloodstream
|
||||||
bloodMaxVolume: 50
|
bloodMaxVolume: 50
|
||||||
- type: DiseaseCarrier #The other class lab animal and disease vector
|
- type: DiseaseCarrier #The other class lab animal and disease vector
|
||||||
|
naturalImmunities:
|
||||||
|
- AMIV
|
||||||
- type: CanEscapeInventory
|
- type: CanEscapeInventory
|
||||||
- type: MobPrice
|
- type: MobPrice
|
||||||
price: 50
|
price: 50
|
||||||
|
|||||||
@@ -43,3 +43,12 @@
|
|||||||
entity: SuperSynthesizerInstrument
|
entity: SuperSynthesizerInstrument
|
||||||
forced: true
|
forced: true
|
||||||
inventory: Drop
|
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