From c8e59ebdd5f7060b8210da9529c17d52e22b832e Mon Sep 17 00:00:00 2001 From: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com> Date: Tue, 3 Sep 2024 06:33:44 -0400 Subject: [PATCH] Add Snails (#30765) * add snails * scuffix * migrate * mo-grate * oopsied the ftls * Revert "oopsied the ftls" This reverts commit 0d3c6c17f31ec904679d6a48799cea71e77c1f99. * the curse of staging the wrong file, resolved. * Snoth * fix my dumbs * reviews 1 * anti space technology * salt hurty * spelling * Its a slotherhouse out here * sequencing * cooked snail * volfix * speed reversal --- .../Mobs/Systems/MobStateActionsSystem.cs | 21 +- .../ghost/roles/ghost-role-component.ftl | 9 + .../nutrition/components/food-sequence.ftl | 1 + Resources/Locale/en-US/species/species.ftl | 4 + .../Prototypes/Entities/Mobs/NPCs/space.yml | 203 ++++++++++++++++++ .../Entities/Objects/Consumable/Food/meat.yml | 63 ++++++ .../Entities/Objects/Consumable/Food/soup.yml | 30 +++ Resources/Prototypes/GameRules/events.yml | 42 ++++ .../Recipes/Cooking/meal_recipes.yml | 23 ++ .../Textures/Mobs/Animals/snail.rsi/dead.png | Bin 0 -> 441 bytes .../Textures/Mobs/Animals/snail.rsi/meta.json | 32 +++ .../Textures/Mobs/Animals/snail.rsi/snail.png | Bin 0 -> 1344 bytes .../Textures/Mobs/Animals/snail.rsi/snoth.png | Bin 0 -> 1532 bytes .../Mobs/Animals/snail.rsi/snothdead.png | Bin 0 -> 503 bytes .../Mobs/Animals/snail.rsi/spacedead.png | Bin 0 -> 478 bytes .../Mobs/Animals/snail.rsi/spacesnail.png | Bin 0 -> 1390 bytes .../Consumable/Food/bowl.rsi/escargot.png | Bin 0 -> 392 bytes .../Consumable/Food/bowl.rsi/meta.json | 5 +- .../Consumable/Food/meat.rsi/meta.json | 8 +- .../Consumable/Food/meat.rsi/snail-cooked.png | Bin 0 -> 290 bytes .../Consumable/Food/meat.rsi/snail.png | Bin 0 -> 307 bytes 21 files changed, 437 insertions(+), 4 deletions(-) create mode 100644 Resources/Textures/Mobs/Animals/snail.rsi/dead.png create mode 100644 Resources/Textures/Mobs/Animals/snail.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Animals/snail.rsi/snail.png create mode 100644 Resources/Textures/Mobs/Animals/snail.rsi/snoth.png create mode 100644 Resources/Textures/Mobs/Animals/snail.rsi/snothdead.png create mode 100644 Resources/Textures/Mobs/Animals/snail.rsi/spacedead.png create mode 100644 Resources/Textures/Mobs/Animals/snail.rsi/spacesnail.png create mode 100644 Resources/Textures/Objects/Consumable/Food/bowl.rsi/escargot.png create mode 100644 Resources/Textures/Objects/Consumable/Food/meat.rsi/snail-cooked.png create mode 100644 Resources/Textures/Objects/Consumable/Food/meat.rsi/snail.png diff --git a/Content.Shared/Mobs/Systems/MobStateActionsSystem.cs b/Content.Shared/Mobs/Systems/MobStateActionsSystem.cs index 5e63171986..9419daf348 100644 --- a/Content.Shared/Mobs/Systems/MobStateActionsSystem.cs +++ b/Content.Shared/Mobs/Systems/MobStateActionsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Mobs.Components; namespace Content.Shared.Mobs.Systems; @@ -14,9 +14,26 @@ public sealed class MobStateActionsSystem : EntitySystem public override void Initialize() { SubscribeLocalEvent(OnMobStateChanged); + SubscribeLocalEvent(OnMobStateComponentInit); } private void OnMobStateChanged(EntityUid uid, MobStateActionsComponent component, MobStateChangedEvent args) + { + ComposeActions(uid, component, args.NewMobState); + } + + private void OnMobStateComponentInit(EntityUid uid, MobStateComponent component, ComponentInit args) + { + if (!TryComp(uid, out var mobStateActionsComp)) + return; + + ComposeActions(uid, mobStateActionsComp, component.CurrentState); + } + + /// + /// Adds or removes actions from a mob based on mobstate. + /// + private void ComposeActions(EntityUid uid, MobStateActionsComponent component, MobState newMobState) { if (!TryComp(uid, out var action)) return; @@ -27,7 +44,7 @@ public sealed class MobStateActionsSystem : EntitySystem } component.GrantedActions.Clear(); - if (!component.Actions.TryGetValue(args.NewMobState, out var toGrant)) + if (!component.Actions.TryGetValue(newMobState, out var toGrant)) return; foreach (var id in toGrant) diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index 79b98691b8..bb816ba297 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -30,6 +30,15 @@ ghost-role-information-mouse-description = A hungry and mischievous mouse. ghost-role-information-mothroach-name = Mothroach ghost-role-information-mothroach-description = A cute but mischievous mothroach. +ghost-role-information-snail-name = Snail +ghost-role-information-snail-description = A little snail who doesn't mind a bit of space. Just stay on grid! + +ghost-role-information-snailspeed-name = Snail +ghost-role-information-snailspeed-description = A little snail with snailborn thrusters. + +ghost-role-information-snoth-name = Snoth +ghost-role-information-snoth-description = A little snoth who doesn't mind a bit of space. Just stay on grid! + ghost-role-information-giant-spider-name = Giant spider ghost-role-information-giant-spider-description = This station's inhabitants look mighty tasty, and your sticky web is perfect to catch them! ghost-role-information-giant-spider-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with all other giant spiders. diff --git a/Resources/Locale/en-US/nutrition/components/food-sequence.ftl b/Resources/Locale/en-US/nutrition/components/food-sequence.ftl index 672b0a0e7a..36ce47d5cf 100644 --- a/Resources/Locale/en-US/nutrition/components/food-sequence.ftl +++ b/Resources/Locale/en-US/nutrition/components/food-sequence.ftl @@ -73,6 +73,7 @@ food-sequence-content-capfruit = capfruit food-sequence-content-berries = berries food-sequence-content-spacemans-trumpet = spacemans trupmet food-sequence-content-cherry = cherry +food-sequence-content-snail = snail # BURGERS diff --git a/Resources/Locale/en-US/species/species.ftl b/Resources/Locale/en-US/species/species.ftl index f31b1fa0f0..bb5c3a67ac 100644 --- a/Resources/Locale/en-US/species/species.ftl +++ b/Resources/Locale/en-US/species/species.ftl @@ -9,3 +9,7 @@ species-name-arachnid = Arachnid species-name-moth = Moth Person species-name-skeleton = Skeleton species-name-vox = Vox + +## Misc species things + +snail-hurt-by-salt-popup = The salty solution burns like acid! \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml index 91f5e952e9..493449e3f3 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml @@ -369,3 +369,206 @@ suffix: "Salvage Ruleset" components: - type: SalvageMobRestrictions + +- type: entity + parent: SimpleSpaceMobBase + id: MobSnail + name: snail + description: Revolting unless you're french. + components: + - type: Body + prototype: Mouse + - type: GhostRole + makeSentient: true + allowSpeech: false + allowMovement: true + name: ghost-role-information-snail-name + description: ghost-role-information-snail-description + rules: ghost-role-information-freeagent-rules + - type: GhostTakeoverAvailable + - type: Sprite + drawdepth: SmallMobs + sprite: Mobs/Animals/snail.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: snail + - type: Item + size: Tiny + - type: NpcFactionMember + factions: + - Mouse + - type: HTN + rootTask: + task: MouseCompound + - type: Physics + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.2 + density: 100 + mask: + - SmallMobMask + layer: + - SmallMobLayer + - type: MobState + - type: Deathgasp + - type: MobStateActions + actions: + Critical: + - ActionCritSuccumb + - ActionCritFakeDeath + - ActionCritLastWords + - type: MobThresholds + thresholds: + 0: Alive + 10: Critical + 20: Dead + - type: MovementSpeedModifier + baseWalkSpeed : 2 + baseSprintSpeed : 3 + - type: DamageStateVisuals + states: + Alive: + Base: snail + Critical: + Base: dead + Dead: + Base: dead + - type: Food + - type: Thirst + startingThirst: 25 # spawn with Okay thirst state + thresholds: + OverHydrated: 35 + Okay: 25 + Thirsty: 15 + Parched: 10 + Dead: 0 + baseDecayRate: 0.04 + - type: Hunger + currentHunger: 25 # spawn with Okay hunger state + thresholds: + Overfed: 35 + Okay: 25 + Peckish: 15 + Starving: 10 + Dead: 0 + baseDecayRate: 0.1 + - type: Extractable + grindableSolutionName: food + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 3 + - type: Butcherable + spawned: + - id: FoodMeatSnail + amount: 1 + - type: Tag + tags: + - Trash + - VimPilot + - ChefPilot + - Meat + - type: CombatMode + combatToggleAction: ActionCombatModeToggleOff + - type: Bloodstream + bloodMaxVolume: 30 + bloodReagent: Cryoxadone + - type: CanEscapeInventory + - type: MobPrice + price: 50 + - type: BadFood + - type: NonSpreaderZombie + - type: PreventSpiller + - type: FireVisuals + sprite: Mobs/Effects/onfire.rsi + normalState: Mouse_burning + - type: Temperature + heatDamageThreshold: 500 + coldDamageThreshold: 0 + - type: Reactive + reactions: + - reagents: [TableSalt, Saline] + methods: [Touch, Ingestion, Injection] + effects: + - !type:HealthChange + scaleByQuantity: true + damage: + types: + Caustic: 1 + - !type:PopupMessage + type: Local + visualType: Large + messages: [ "snail-hurt-by-salt-popup" ] + probability: 0.66 + +- type: entity + parent: MobSnail + id: MobSnailInstantDeath + suffix: Smite + components: + - type: MobStateActions + actions: + Alive: + - ActionSmite + Critical: + - ActionCritSuccumb + - ActionCritFakeDeath + - ActionCritLastWords + - type: Godmode + - type: MovementAlwaysTouching + +- type: entity + parent: MobSnail + id: MobSnailSpeed + suffix: Speed + components: + - type: GhostRole + name: ghost-role-information-snailspeed-name + description: ghost-role-information-snailspeed-description + rules: ghost-role-information-freeagent-rules + - type: Sprite + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: spacesnail + - type: DamageStateVisuals + states: + Alive: + Base: spacesnail + Critical: + Base: spacesnaildead + Dead: + Base: spacesnaildead + - type: MovementSpeedModifier + baseWalkSpeed : 5 #he go fast, also they cant slip so its probably fine. + baseSprintSpeed : 7 +# - type: ActiveJetpack # I think this will need a custom component to not make tests angry. + - type: MovementAlwaysTouching + +- type: entity + parent: MobSnail + id: MobSnailMoth + name: Snoth + components: + - type: Body + prototype: Mothroach + - type: GhostRole + name: ghost-role-information-snoth-name + description: ghost-role-information-snoth-description + rules: ghost-role-information-freeagent-rules + - type: Sprite + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: snoth + - type: DamageStateVisuals + states: + Alive: + Base: snoth + Critical: + Base: snothdead + Dead: + Base: snothdead diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 22ebbda7c9..53fbf62399 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -930,6 +930,35 @@ taco: name: food-sequence-content-slime +- type: entity + name: raw snail meat + parent: FoodMeatRawBase + id: FoodMeatSnail + description: Improved with salt. + components: + - type: Sprite + state: snail + - type: FoodSequenceElement + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: snail + entries: + burger: + name: food-sequence-content-snail + taco: + name: food-sequence-content-snail + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 3 + - ReagentId: Fat + Quantity: 3 + - ReagentId: Water + Quantity: 4 #It makes saline if you add salt! + # Cooked - type: entity @@ -1473,6 +1502,40 @@ sprite: Objects/Consumable/Food/skewer.rsi state: skewer-meat +- type: entity + name: boiled snail + parent: FoodMeatBase + id: FoodMeatSnailCooked + description: Improved with salt. + components: + - type: Tag + tags: + - Cooked + - Meat + - type: Sprite + layers: + - state: snail-cooked + - type: FoodSequenceElement + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: snail-cooked + entries: + burger: + name: food-sequence-content-snail + taco: + name: food-sequence-content-snail + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: Nutriment + Quantity: 3 + - ReagentId: Protein + Quantity: 3 + - ReagentId: Water + Quantity: 4 # makes saline if you add salt! + # Cutlets # Raw diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml index 5c2a87c2b1..d5cb4311c4 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml @@ -1227,3 +1227,33 @@ - Fruit - Soup # Tastes like bungo, hot curry. + +- type: entity + name: escargot + parent: FoodBowlBase + id: FoodSoupEscargot + description: A creamy and rich bowl of snails, bon appetit! + components: + - type: FlavorProfile + flavors: + - creamy + - slimy + - type: Sprite + layers: + - state: bowl + - state: escargot + - type: SolutionContainerManager + solutions: + food: + maxVol: 20 + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Vitamin + Quantity: 6 + - ReagentId: Allicin + Quantity: 3 + - type: Tag + tags: + - Meat + - Soup diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 56ffeda7f0..901fd299e8 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -337,6 +337,48 @@ - id: MobMothroach prob: 0.008 +- type: entity + id: SnailMigrationLowPop + parent: BaseStationEventShortDelay + components: + - type: StationEvent + startAnnouncement: station-event-vent-creatures-start-announcement + startAudio: + path: /Audio/Announcements/attention.ogg + weight: 6 + duration: 50 + - type: VentCrittersRule + entries: + - id: MobSnail + prob: 0.02 + - id: MobSnailSpeed + prob: 0.002 + - id: MobSnailMoth + prob: 0.002 + +- type: entity + id: SnailMigration + parent: BaseStationEventShortDelay + components: + - type: StationEvent + startAnnouncement: station-event-vent-creatures-start-announcement + startAudio: + path: /Audio/Announcements/attention.ogg + earliestStart: 15 + weight: 6 + duration: 50 + minimumPlayers: 30 + - type: VentCrittersRule + entries: + - id: MobSnail + prob: 0.02 + - id: MobSnailSpeed + prob: 0.002 + - id: MobSnailMoth + prob: 0.002 + - id: MobSnailInstantDeath + prob: 0.00001 # ~ 1:2000 snails + - type: entity id: PowerGridCheck parent: BaseStationEventShortDelay diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index bf39e1487b..fb1280daff 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -957,6 +957,29 @@ FoodBungo: 2 FoodChiliPepper: 1 +- type: microwaveMealRecipe + id: RecipeBoiledSnail + name: boiled snail recipe + result: FoodMeatSnailCooked + time: 5 + reagents: + Water: 10 + solids: + FoodMeatSnail: 1 + +- type: microwaveMealRecipe + id: RecipeEscargotSoup + name: escargot recipe + result: FoodSoupEscargot + time: 10 + reagents: + Water: 5 + solids: + FoodBowlBig: 1 + FoodOnionSlice: 1 + FoodButter: 1 + FoodMeatSnailCooked: 1 + #Pies - type: microwaveMealRecipe diff --git a/Resources/Textures/Mobs/Animals/snail.rsi/dead.png b/Resources/Textures/Mobs/Animals/snail.rsi/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..bdaecdab58b41dd322d8fadc8c6793d6ff97e814 GIT binary patch literal 441 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 Ux`ylM1ONa407*qoM6N<$f>Dpl#sB~S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Animals/snail.rsi/spacesnail.png b/Resources/Textures/Mobs/Animals/snail.rsi/spacesnail.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2d97c62220c1da37ebdff0cdc6d4b514d214d2 GIT binary patch literal 1390 zcmV-!1(EuRP)oH(PSCMKf&YzN(zj?2IG%t+-6XFt5$47OBFnO&>mWqrnl{Fd^n%vr01O5 z`}_UQ_nv$1&HWvK!C){L3otX{r7pqw$!}JU#u~t#Bx&W ziWX?KdJ@{sNumHR`Uil4AHGhG0J7(fw`|`Z()%l9T0J2X-Lhl|pxrlyf~M10c4dV2 zUAgoNJb>sJ0z)+xJs(q(r9GlY*wxII^Put)P4vY$ARNG zG#qTBB1k5{)-^kyJ59yt&yKL)OYMiSb&+X`z$!DF6WS%}b$FE{36K4J}ILVi;>Sq0W?-lsCeI1s+lT340Hy zGvyJ(=6v`A0Sx}*#Ok+~&KXk3@uA^;)B&Wbbwu)+aOKP8$l$`m|Ly!=(!U5jCBQ5p zP$=XW`d6U+vm}-qDn9%^9~280KJ)+haZENu-2zpuBeD*D=$Z5BKv?T}*))g(UtiP^y0g<1@*L`+8Z2JB2)2`RzBV;^r zrHFB2Fc>g0GD`b87imbb&qbZx5+1-|H<4gHQAD!axky9o*>ee+yu4fh$4Rsz$i)nv z=Xvb57Gbxw2!h~*ea}gBF4BalU#MG7OEBnoaM(>G)aFZr-*Xaz;G}W!JP(7x@Y1Y^ zS%B;fd+FdS>&@tC^Ws=TFDmQJ5CkWxN*m$U<`Re9L{#cbnlc9f`PCcoFH#{k`kQ&E z)R}PDO~kFuB~_)35CkVG>&-aU(2JfnFDmQJRD|pedr3lOKzDaH0)8*81E3;=vMP(i zT8jbw%{=;>d91Y<;uhdVd#kdzu;anOhsGB0ducsx0j9k!SZzjRs5P*Zl)-8<0syXF z{4rwCfps}>435VwfMakRfps|%#SF$`wHaY4DMN-@1FOv#)nvW0g+>f?or9&M468SqVYL}iTX8BX`%wib)9Ok7`cl*!E~S0t+p4i7 zM~6=@*5HHk^~lUrL8;_`r%wO?F|)JSNXp6q0vz?>@g|3*hzoasU1!{CTto zXFjUMgWK0|^z?zS3pUhqDyq#AQ3Y6M$|JUcbS%>r(!Su}^XRCi-x&z!O!nR2I$PgLT_Ldf2h~ wc4SDErJXM;9VsrBF=j9r3f(Fu>&55SfYboi_pY!qAyFQuwPW?$ zf@&&>c`GdPR#=>@rDgJ^?F#@*-NnIq7J%tsH--D6)cd+xh$aI(9v7G#Ii&8ah-td9 zG9mG`sH!9Q=)Ampqp==6h==Voe_&D_=8b|R4LL6DfSucd zx>()=12f+YbM74&5ClOG1VMN+!JwgnK|}qXzg;jH_WxWw9r+4iGVH5zT<7;NUX}aJ z3INL_$8T1cE!IXUEwgU*gkjmJ?7;SDvP^R3-}}2R^HsU$wlB#}=K!AD#%bkj;uOQO zi|#BN$3hqR?*hC|UCTee3UN6f2d+N1iBp_b4FHuLbP|EC2ui literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/snail.png b/Resources/Textures/Objects/Consumable/Food/meat.rsi/snail.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c7ffcef5080cc864319a50041473bf5376867d GIT binary patch literal 307 zcmV-30nGl1P)@q?B8$zca!kDpb&-IU|ajCWec;Ib9}0! z;K$cF0P1jkZ+Fx1;X??7D>q?mU+To(UtebBX9^+2T0fd+RvTEp{N4Zn002ovPDHLk FV1f>BkY4}* literal 0 HcmV?d00001 -- 2.51.2