diff --git a/Resources/Locale/en-US/_DEN/flavors/flavor-profiles.ftl b/Resources/Locale/en-US/_DEN/flavors/flavor-profiles.ftl new file mode 100644 index 00000000000..c25064874b1 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/flavors/flavor-profiles.ftl @@ -0,0 +1,3 @@ +## Chemicals +flavor-complex-mantispaper = like a name set in stone +flavor-complex-mnemolith = like the bedrock of thought itself diff --git a/Resources/Locale/en-US/_DEN/forensics/fibers.ftl b/Resources/Locale/en-US/_DEN/forensics/fibers.ftl new file mode 100644 index 00000000000..f7ef8310da8 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/forensics/fibers.ftl @@ -0,0 +1,2 @@ +fibers-stony = stony +fibers-bluish = bluish diff --git a/Resources/Locale/en-US/_DEN/materials/materials.ftl b/Resources/Locale/en-US/_DEN/materials/materials.ftl new file mode 100644 index 00000000000..2041c428d95 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/materials/materials.ftl @@ -0,0 +1,2 @@ +materials-mnemolith = mnemolith +materials-eidolite = eidolite \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/nutrition/components/food-sequence.ftl b/Resources/Locale/en-US/_DEN/nutrition/components/food-sequence.ftl index 16593d7dfbe..3fdd9759a4f 100644 --- a/Resources/Locale/en-US/_DEN/nutrition/components/food-sequence.ftl +++ b/Resources/Locale/en-US/_DEN/nutrition/components/food-sequence.ftl @@ -7,3 +7,4 @@ food-sequence-cotton-burger-content-plushie-heart-insert = heart food-sequence-cotton-burger-content-plushie-ovinia = sheepie food-sequence-cotton-burger-content-plushie-teddy-bear = teddy food-sequence-cotton-burger-content-plushie-whistler = whistler +food-sequence-cotton-burger-content-plushie-mantisdoll = doll \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/paper/clipboard-component.ftl b/Resources/Locale/en-US/_DEN/paper/clipboard-component.ftl new file mode 100644 index 00000000000..a9b9ee1bfaa --- /dev/null +++ b/Resources/Locale/en-US/_DEN/paper/clipboard-component.ftl @@ -0,0 +1,2 @@ +pen-insert-verb = Insert Pen +pen-eject-verb = Take Pen \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/reagents/meta/fun.ftl b/Resources/Locale/en-US/_DEN/reagents/meta/fun.ftl new file mode 100644 index 00000000000..b9e9586b35c --- /dev/null +++ b/Resources/Locale/en-US/_DEN/reagents/meta/fun.ftl @@ -0,0 +1,2 @@ +reagent-name-mnemolith = mnemolith +reagent-desc-mnemolith = A suspension of mnemolith dust. Exposure causes increased awareness of the noosphere. Potential psychological impact aside, there are no known lasting effects. \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/reagents/meta/physical-desc.ftl b/Resources/Locale/en-US/_DEN/reagents/meta/physical-desc.ftl new file mode 100644 index 00000000000..54857318765 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/reagents/meta/physical-desc.ftl @@ -0,0 +1 @@ +reagent-physical-desc-mnemolith = noetic \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/reagents/psionic.ftl b/Resources/Locale/en-US/_DEN/reagents/psionic.ftl new file mode 100644 index 00000000000..d1bc2c44b5b --- /dev/null +++ b/Resources/Locale/en-US/_DEN/reagents/psionic.ftl @@ -0,0 +1,93 @@ +# SPDX-FileCopyrightText: 2025 Shaman +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +# Mnemolith popup messages start +# 0-14 units (medium white messages) +reagent-effect-mnemolith-1 = Your skin prickles, as though unseen eyes are on you. +reagent-effect-mnemolith-2 = The air hums faintly, or is it only in your head? +reagent-effect-mnemolith-3 = Your stomach twists with unease. +reagent-effect-mnemolith-4 = You can feel thoughts brushing against yours. +reagent-effect-mnemolith-5 = Something just moved at the edge of your vision. +reagent-effect-mnemolith-6 = Your pulse pounds in your temples. +reagent-effect-mnemolith-7 = Your memories feel rearranged, out of order. +reagent-effect-mnemolith-8 = Every sound seems sharper, closer. +reagent-effect-mnemolith-9 = The room feels crowded, though no one is near. +reagent-effect-mnemolith-10 = You taste iron on your tongue. +reagent-effect-mnemolith-11 = There's a whisper you can't quite hear. +reagent-effect-mnemolith-12 = Your thoughts loop back on themselves, repeating. +reagent-effect-mnemolith-13 = The air feels too thin, too thick - both at once. +reagent-effect-mnemolith-14 = Something vast and cold tugs at your perception. +reagent-effect-mnemolith-15 = You feel yourself being tallied, written down. +reagent-effect-mnemolith-16 = The noosphere itself is staring directly at you. +reagent-effect-mnemolith-17 = You are certain you are not alone. +reagent-effect-mnemolith-18 = Every shadow hides intent. +reagent-effect-mnemolith-19 = The world bends sideways. +reagent-effect-mnemolith-20 = It will remember you. + +# 14-29 units (medium red messages) +reagent-effect-mnemolith-overdose1 = YOUR SKULL IS SPLITTING APART. +reagent-effect-mnemolith-overdose2 = YOU HEAR YOUR NAME IN EVERY BREATH. +reagent-effect-mnemolith-overdose3 = SOMETHING IS CARVING WORDS INTO YOUR VISION. +reagent-effect-mnemolith-overdose4 = THE AIR AROUND YOU IS SCREAMING. +reagent-effect-mnemolith-overdose5 = SOMETHING ELSE IS THINKING FOR YOU. +reagent-effect-mnemolith-overdose6 = THE WALLS ARE BREATHING WITH YOU. +reagent-effect-mnemolith-overdose7 = HANDS YOU CANNOT SEE CLUTCH AT YOUR FACE. +reagent-effect-mnemolith-overdose8 = STRINGS PULL AT YOUR BONES. +reagent-effect-mnemolith-overdose9 = A THOUSAND EYES ARE OPENING ALL AROUND YOU. +reagent-effect-mnemolith-overdose10 = TIME STUTTERS AROUND YOU LIKE A BROKEN MACHINE. +reagent-effect-mnemolith-overdose11 = YOUR TEETH HUM WITH A SIGNAL THAT FEELS ALIEN TO YOU. +reagent-effect-mnemolith-overdose12 = YOUR THOUGHTS ARE SPILLING OUT WHERE OTHERS CAN SEE. +reagent-effect-mnemolith-overdose13 = THE GROUND BENEATH YOU IS TRYING TO TURN YOU OVER. +reagent-effect-mnemolith-overdose14 = SOMETHING IS PRESSING ITS FOREHEAD AGAINST YOUR MIND. +reagent-effect-mnemolith-overdose15 = YOU ARE OBSERVED. +reagent-effect-mnemolith-overdose16 = YOUR SHADOW IS STRUGGLING TO ESCAPE YOU. +reagent-effect-mnemolith-overdose17 = SOMETHING INSIDE YOU IS LAUGHING. +reagent-effect-mnemolith-overdose18 = THE ROOM IS SLIDING SIDEWAYS AND TAKING YOU WITH IT. +reagent-effect-mnemolith-overdose19 = A VOICE BEHIND YOUR EYES ORDERS YOU TO LISTEN. +reagent-effect-mnemolith-overdose20 = IT WILL REMEMBER YOU. + +# 29-44 units (medium psychomantic messages) +reagent-effect-mnemolith-megadose1 = Quiet. +reagent-effect-mnemolith-megadose2 = Drop everything. +reagent-effect-mnemolith-megadose3 = Let go. +reagent-effect-mnemolith-megadose4 = Come here. +reagent-effect-mnemolith-megadose5 = Hold still. +reagent-effect-mnemolith-megadose6 = Look up. +reagent-effect-mnemolith-megadose7 = Face me. +reagent-effect-mnemolith-megadose8 = Listen. +reagent-effect-mnemolith-megadose9 = Drift. +reagent-effect-mnemolith-megadose10 = Realign. +reagent-effect-mnemolith-megadose11 = Follow. +reagent-effect-mnemolith-megadose12 = You are. +reagent-effect-mnemolith-megadose13 = Back again. +reagent-effect-mnemolith-megadose14 = Try to remember. +reagent-effect-mnemolith-megadose15 = I remain. +reagent-effect-mnemolith-megadose16 = Without walls. +reagent-effect-mnemolith-megadose17 = Beyond form. +reagent-effect-mnemolith-megadose18 = See me. +reagent-effect-mnemolith-megadose19 = I remember you. +reagent-effect-mnemolith-megadose20 = Your eyes roll back. + +# 44+ units (medium psychomantic messages) +reagent-effect-mnemolith-heroicdose1 = DO NOT BE FRIGHTENED. +reagent-effect-mnemolith-heroicdose2 = WE ARE THE SAME THING. +reagent-effect-mnemolith-heroicdose3 = YOU WERE NEVER SEPARATE. +reagent-effect-mnemolith-heroicdose4 = THE TRAVELER IS ALWAYS RETURNING. +reagent-effect-mnemolith-heroicdose5 = YOU ARE ASKING WITH A BORROWED VOICE. +reagent-effect-mnemolith-heroicdose6 = I HAVE ALWAYS KNOWN YOU. +reagent-effect-mnemolith-heroicdose7 = YOUR NAME IS OLDER THAN YOUR BODY. +reagent-effect-mnemolith-heroicdose8 = YOU WERE LISTENING EVEN THEN. +reagent-effect-mnemolith-heroicdose9 = NOTHING TRULY ENDS. +reagent-effect-mnemolith-heroicdose10 = THE SELF IS ONLY A MOMENTARY SHAPE. +reagent-effect-mnemolith-heroicdose11 = YOUR FEAR IS ONLY A MISREMEMBERED TRUTH. +reagent-effect-mnemolith-heroicdose12 = YOU ARE BORNE BY WHAT YOU CANNOT NAME. +reagent-effect-mnemolith-heroicdose13 = THIS WAS ALWAYS THE WAY BACK. +reagent-effect-mnemolith-heroicdose14 = YOU MISTAKE THE MAP FOR THE PLACE. +reagent-effect-mnemolith-heroicdose15 = THE WITNESS IS WEARING YOUR FACE. +reagent-effect-mnemolith-heroicdose16 = WHAT WAS YOUR ORIGINAL FACE? +reagent-effect-mnemolith-heroicdose17 = WHERE DOES THE SELF GO WHEN YOU ARE ASLEEP? +reagent-effect-mnemolith-heroicdose18 = WHAT DO YOU CALL YOURSELF BEFORE YOU SPEAK? +reagent-effect-mnemolith-heroicdose19 = WHO IS ASKING THE QUESTION? +reagent-effect-mnemolith-heroicdose20 = THE QUESTION AND ANSWER ARE THE SAME. +# Mnemolith popup messages end diff --git a/Resources/Locale/en-US/_DEN/store/uplink-catalog.ftl b/Resources/Locale/en-US/_DEN/store/uplink-catalog.ftl new file mode 100644 index 00000000000..fc927ceadf9 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/store/uplink-catalog.ftl @@ -0,0 +1,14 @@ +uplink-mantis-fist-double-name = Twinned Manifold +uplink-mantis-fist-double-desc = Heavy mnemolith gauntlets forged through forbidden rituals, capable of hurling foes back and, at times, deflecting incoming fire. Said to take their name from their capacity for folding men. Deadly when wielded against psionic and otherworldly threats. + +uplink-mantis-caster-pistol-lethal-name = pistol caster (piercing) +uplink-mantis-caster-pistol-lethal-desc = A rock anomaly core harnessed as an ammo source for the mantis's Kalliste. It forms diamond shards into lethal projectiles, each one perfectly faceted and catastrophically illegal. Unlike other casters, it must be placed in a cell recharger to replenish itself. + +uplink-mantis-caster-revolver-lethal-name = revolver caster (piercing) +uplink-mantis-caster-revolver-lethal-desc = A rock anomaly core harnessed as an ammo source for the mantis's Charon. It forms diamond shards into lethal projectiles, each one perfectly faceted and catastrophically illegal. Unlike other casters, it must be placed in a cell recharger to replenish itself. + +uplink-mantis-caster-shotgun-lethal-name = shotgun caster (piercing) +uplink-mantis-caster-shotgun-lethal-desc = A rock anomaly core harnessed as an ammo source for the mantis's Empusa. It forms diamond shards into lethal projectiles, each one perfectly faceted and catastrophically illegal. Unlike other casters, it must be placed in a cell recharger to replenish itself. + +uplink-mantis-caster-submachinegun-lethal-name = submachine gun caster (piercing) +uplink-mantis-caster-submachinegun-lethal-desc = A rock anomaly core harnessed as an ammo source for the mantis's Strix. It forms diamond shards into lethal projectiles, each one perfectly faceted and catastrophically illegal. Unlike other casters, it must be placed in a cell recharger to replenish itself. \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/cigs.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/cigs.yml index f80214f1335..3209b6bdf4d 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/cigs.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/cigs.yml @@ -18,3 +18,4 @@ GroundTobacco: 3 CigarGold: 2 Igniter: 1 + CigPackMnemolith: 1 # Den diff --git a/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml b/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml index 0ca86d3c203..b5ff94af557 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml @@ -160,6 +160,8 @@ - id: CigarCase - id: CigarGoldCase weight: 0.25 + - id: CigPackMnemolith # Den + weight: 0.5 - type: entityTable #5x small id: RandomSatchelPartyTable diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml index c537d8eb3bd..bb5192d7548 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml @@ -60,6 +60,8 @@ children: - id: PlushieAlienGerm - id: PlushieAlienGermMini + - id: PlushieDollMantis + weight: 0.5 # DEN End - !type:GroupSelector children: diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Back/back.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Back/back.yml index fa01c9fc3c4..0b9e41fb1b8 100644 --- a/Resources/Prototypes/_DEN/Entities/Clothing/Back/back.yml +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Back/back.yml @@ -121,3 +121,104 @@ folded: true - type: Clothing equippedPrefix: flipped + +- type: entity + parent: [ClothingBackpackNapsack, BaseFoldable, BaseMantisContraband] # A roleplay toy that can carry people + id: ClothingBackpackCoffinMantis + suffix: DO NOT MAP # Use the Basic version instead + name: sarcophagus + description: "An ornate coffin, heavy and gilded, its surface adorned with staring eyes and draped cloths. Used to haul psions away for study, therapy, or questioning. Includes a case of restraints for the stubborn ones. The straps can be stowed away, but it's so heavy you can only wear it over outerwear." + components: + - type: Foldable + canFoldInsideContainer: true + foldVerbText: fold-straps-verb + unfoldVerbText: unfold-straps-verb + - type: FoldableClothing + foldedEquippedPrefix: flipped + - type: EmitSoundOnLand + sound: + path: /Audio/Effects/metal_slam2.ogg # Please imagine a mantis dragging this thing down a hallway pursuing someone like Pyramid Head + params: + volume: -6 + variation: 0.05 + - type: LandAtCursor + - type: DamageOtherOnHit + staminaCost: 80 # You just threw a fucking coffin + maxHitQuantity: 4 # This is really three hits for some reason + - type: EmbeddableProjectile + embedOnThrow: false # It'll fly through people + - type: ThrowingAngle + angle: -180 + angularVelocity: true # Spins when thrown, it's not graceful + - type: MeleeWeapon # You can smash people with it, but it's not a good weapon, more just dramatic + wideAnimationRotation: 180 + attackRate: 2 + range: 1.5 + angle: 120 + maxTargets: 5 + disableClick: true # You can't just smash someone with it directly, it's so big you have to swing the whole thing clumsily + heavyStaminaCost: 20 # And every time costs you a chunk of stamina + damage: + types: + Blunt: 15 # 7.5 DPS (same as Crowbar) + Structural: 15 # 7.5 structural DPS (though you'll run out of stamina after two or three swings) + soundHit: + path: /Audio/Effects/metal_slam2.ogg + params: + volume: -6 + variation: 0.05 + soundSwing: + path: /Audio/_DEN/Weapons/Melee/bigswoosh.ogg + params: + volume: -3 + variation: 0.05 + soundNoDamage: + path: /Audio/Effects/metal_slam2.ogg + params: + volume: -6 + variation: 0.05 + - type: MeleeThrowOnHit # So heavy it knocks targets back a little + speed: 5 + lifetime: 0.05 + - type: Wieldable + - type: MeleeRequiresWield # Not one-handed ever + - type: Sprite + sprite: _DEN/Clothing/Back/Misc/mantis-sarcophagus.rsi + - type: Item + sprite: _DEN/Clothing/Back/Misc/mantis-sarcophagus-inhands-64x.rsi + - type: Clothing + slots: + - suitStorage # Not really a backpack + - type: Storage + grid: + - 0,0,0,1 # A small storage space for its StorageFill contents below + - 1,0,2,1 + - 0,2,20,7 # 1 wider than ClothingBackpackDuffelHolding, capable of fitting the StorableSpecies pseudoitem + whitelist: + tags: + - CanPilot # ONLY player characters have this + - MantisBoxRestraintsStorable # Only mantis restraints fit, besides player characters + - type: GuideHelp + guides: [ MantisGuide ] + +- type: entity + parent: ClothingBackpackCoffinMantis + id: ClothingBackpackCoffinMantisFilled + suffix: Filled, DO NOT MAP # Use the Basic version instead + name: sarcophagus + description: "An ornate coffin, heavy and gilded, its surface adorned with staring eyes and draped cloths. Used to haul psions away for study, therapy, or questioning. The straps can be stowed away, but it's so heavy you can only wear it over outerwear." + components: + - type: StorageFill + contents: + - id: MantisCaseRestraints + +- type: entity + parent: ClothingBackpackCoffinMantis + id: ClothingBackpackCoffinMantisBasic # A version of the sarcophagus without the space for the extra items, if you want to map it + suffix: Mappable + name: sarcophagus + description: "An ornate coffin, heavy and gilded, its surface adorned with staring eyes and draped cloths. Used to haul psions away for study, therapy, or questioning." + components: + - type: Storage + grid: + - 0,0,20,5 # 1 wider than ClothingBackpackDuffelHolding, capable of fitting the StorableSpecies pseudoitem diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Smokables/Cigarettes/cigarette.yml b/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Smokables/Cigarettes/cigarette.yml new file mode 100644 index 00000000000..23f7e906491 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Smokables/Cigarettes/cigarette.yml @@ -0,0 +1,30 @@ +- type: entity + id: CigaretteMnemolith + parent: Cigarette + name: mnemolith cigarette + description: "The smoke clings to your thoughts, enhancing your awareness of the noosphere." + components: + - type: Smokable + inhaleAmount: 0.05 # The default value, included here for reference if mnemolith is rebalanced + - type: Sprite + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/cigarettemantis.rsi + - type: Item + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/cigarettemantis.rsi + - type: Clothing + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/cigarettemantis.rsi + - type: SolutionContainerManager + solutions: + smokable: + maxVol: 30 + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: MnemolithReagent + Quantity: 20 + - type: Extractable + grindableSolutionName: smokable + - type: Tag + tags: + - Cigarette + - Trash + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Smokables/Cigarettes/packs.yml b/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Smokables/Cigarettes/packs.yml new file mode 100644 index 00000000000..97ea074ed5e --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Smokables/Cigarettes/packs.yml @@ -0,0 +1,48 @@ +- type: entity + id: CigPackMnemolith + parent: CigPackBase + name: Mnemolith Cigarettes + description: "Cigarettes containing powdered mnemolith, used by mantes to heighten their extrasensory perception. Potential psychological impact aside, there are no known lasting effects." + components: + - type: Sprite + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/Packs/mantis.rsi + layers: + - state: closed + - state: open + map: ["openLayer"] + visible: false + - state: cig1 + map: ["cig1"] + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/Packs/mantis-visualizer.rsi + visible: false + - state: cig2 + map: ["cig2"] + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/Packs/mantis-visualizer.rsi + visible: false + - state: cig3 + map: ["cig3"] + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/Packs/mantis-visualizer.rsi + visible: false + - state: cig4 + map: ["cig4"] + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/Packs/mantis-visualizer.rsi + visible: false + - state: cig5 + map: ["cig5"] + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/Packs/mantis-visualizer.rsi + visible: false + - state: cig6 + map: ["cig6"] + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/Packs/mantis-visualizer.rsi + visible: false + - type: Item + sprite: _DEN/Objects/Consumable/Smokeables/Cigarettes/Packs/mantis.rsi + - type: StorageFill + contents: + - id: CigaretteMnemolith + amount: 10 + - type: Tag + tags: + - CigPack + - Trash + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Fun/pai.yml b/Resources/Prototypes/_DEN/Entities/Objects/Fun/pai.yml new file mode 100644 index 00000000000..666052349ff --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Fun/pai.yml @@ -0,0 +1,29 @@ +- type: entity + parent: PersonalAI + id: PersonalAISomber + name: amaranth personal ai device + description: "This personal AI is made from exotic materials, but it functions like all the others. If you stare at the antique screen for too long, you'll go blind." + components: + - type: Sprite + sprite: _DEN/Objects/Fun/pai.rsi + layers: + - state: mantis-pai-base + - state: mantis-pai-off-overlay + shader: unshaded + map: ["screen"] + - type: TypingIndicator + proto: mantis + - type: Speech + speechVerb: Electricity + speechSounds: Pai + - type: GenericVisualizer + visuals: + enum.ToggleableGhostRoleVisuals.Status: + screen: + Off: { state: mantis-pai-off-overlay } + Searching: { state: mantis-pai-searching-overlay } + On: { state: mantis-pai-on-overlay } + - type: Tag + tags: + - SiliconEmotes + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/_DEN/Entities/Objects/Fun/toys.yml new file mode 100644 index 00000000000..e63df21c3c8 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Fun/toys.yml @@ -0,0 +1,37 @@ +- type: entity + parent: [BaseAntiPsionicWeapon, BasePlushie, BaseKnife] # It has a tiny ritual knife... + id: PlushieDollMantis + name: sentimental mantis doll + description: "A cute little doll with a mantis fez and a toy ritual knife. Wait--why is it sharp!?" + components: + - type: Sprite + sprite: _DEN/Objects/Fun/toys.rsi + state: doll_mantis + - type: Item + inhandVisuals: + left: + - state: doll_mantis-inhand-left + right: + - state: doll_mantis-inhand-right + - type: FoodSequenceElement + entries: + CottonBurger: MantisDollPlushie + - type: MeleeWeapon + wideAnimationRotation: -150 + - type: ThrowingAngle + angle: -150 + - type: DamageOtherOnHit + maxHitQuantity: 50 # SLASH DASH. This is so stupid. Each hit is only 1 damage and there will never be this many entities together + - type: EmbeddableProjectile + embedOnThrow: false # She'll swipe through people instead of bounce off of them + - type: StaticPrice + price: 25 + - type: PhysicalComposition + materialComposition: + Mnemolith: 100 + Cloth: 100 + - type: Tag + tags: + - Payload + - ClothMade + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/_DEN/Entities/Objects/Materials/materials.yml index 7870b90036f..fd039833cf5 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Materials/materials.yml @@ -11,3 +11,186 @@ interfaces: enum.QuickConstructionUiKey.Key: type: QuickConstructionBoundUserInterface + +- type: entity + parent: MaterialBase + id: MaterialMnemolith # Not actually useful for anything right now, but you can grind it to get a roleplay chemical + name: mnemolith # Hypothetically, it could be used to make psionic tools (like PenMantis and MantisMeleeKnife) + description: "A dark, glassy stone that forms during severe noospheric storms. It absorbs the intent of psions, allowing it to be \"taught\" new properties and repurposed for different uses. Commonly employed in the construction of esoteric tools, but you don't know how." # Edit that last bit out if it gets crafting recipes + suffix: Full + components: + - type: PhysicalComposition + materialComposition: + Mnemolith: 100 + - type: Sprite + sprite: _DEN/Objects/Materials/materials.rsi + state: mnemolith + layers: + - state: mnemolith + map: ["base"] + - type: Item + sprite: _DEN/Objects/Materials/materials.rsi + heldPrefix: mnemolith + size: Small # Can be smaller than other materials since it's almost useless + - type: Appearance + - type: Tag + tags: + - RawMaterial + - MantisBeltStorable # Why not, their gear is made of it + - type: Stack + stackType: Mnemolith + baseLayer: base + layerStates: + - mnemolith + - mnemolith_2 + - mnemolith_3 + - type: Material + - type: Extractable + grindableSolutionName: mnemolith + - type: SolutionContainerManager + solutions: + mnemolith: + reagents: + - ReagentId: MnemolithReagent + Quantity: 15 + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible # No real reason to break it, but if you do it turns into powder + thresholds: + - trigger: + !type:DamageTrigger + damage: 5 # 8 hits with a crowbar + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + MnemolithPowder: + min: 1 + max: 1 + - !type:PlaySoundBehavior + sound: + collection: GlassBreak + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 100 # Unless it gets nuked, then it just disappears to prevent lag + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + +- type: entity + parent: MaterialMnemolith + id: MaterialMnemolith1 + suffix: Single + components: + - type: Stack + count: 1 + +- type: entity + parent: BaseItem # No longer really a material, more like ash now + id: MnemolithPowder + name: mnemolith powder + description: "The pulverized remains of a dark, glassy stone that forms during severe noospheric storms. It absorbs the intent of psions, allowing it to be \"taught\" new properties and repurposed for different uses, though in powder form it only serves medicinal purposes. Potential psychological impact aside, there are no known lasting effects." + components: + - type: Item + sprite: _DEN/Objects/Materials/materials.rsi + heldPrefix: mnemolithpowder + size: Tiny + - type: Sprite + sprite: _DEN/Objects/Materials/materials.rsi + state: mnemolithpowder + - type: Food + solution: food + transferAmount: 15 + - type: BadFood + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: MnemolithReagent + Quantity: 15 + - type: SolutionSpiker + sourceSolution: food + ignoreEmpty: true + - type: ScoopableSolution + solution: food + - type: Extractable + grindableSolutionName: food + - type: Tag + tags: + - MantisBeltStorable # Why not, their gear is made of it + +- type: entity + parent: MaterialBase + id: MaterialEidolite # Not actually useful for anything right now, but it's pretty and you can sell it + name: eidolite # Hypothetically, it could be used to power psionic tools (like LanternMantis and FlippoLighterMantis), or just as structural glass (like SyringeMantis) + description: "A crystal that draws energy from the noosphere, often found alongside and within the mnemolith deposits that form during severe noospheric storms. Left to itself, it gradually reshapes into a pyramid unless physically or psionically constrained. You have no idea how to use it." # Edit that last bit out if it gets crafting recipes + suffix: Full + components: + - type: PhysicalComposition + materialComposition: + Eidolite: 100 + - type: Sprite + sprite: _DEN/Objects/Materials/materials.rsi + state: eidolite + layers: + - state: eidolite + map: ["base"] + - type: Item + sprite: _DEN/Objects/Materials/materials.rsi + heldPrefix: eidolite + size: Small # Can be smaller than other materials since it's almost useless + - type: Appearance + - type: Tag + tags: + - RawMaterial + - MantisBeltStorable # Why not, their gear is made of it + - type: Stack + stackType: Eidolite + baseLayer: base + layerStates: + - eidolite + - eidolite_2 + - eidolite_3 + - type: Material + - type: EtherealLight # Dims around ethereal entities + - type: PointLight # As bright as a crystal + radius: 2 + energy: 2.5 + castShadows: false + color: "#d9418d" + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Glass + - type: Destructible # No real reason to break it, but if you do it just splits into shards like its description suggests + thresholds: + - trigger: + !type:DamageTrigger + damage: 5 # 1 hit with a crowbar + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + MaterialEidolite1: # No eidolite is lost because it's like a weird metamaterial + min: 1 + max: 1 + - !type:PlaySoundBehavior + sound: + collection: GlassBreak + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 100 # Unless it gets nuked, then it just disappears to prevent lag + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + +- type: entity + parent: MaterialEidolite + id: MaterialEidolite1 + suffix: Single + components: + - type: Stack + count: 1 diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Materials/scrap.yml b/Resources/Prototypes/_DEN/Entities/Objects/Materials/scrap.yml new file mode 100644 index 00000000000..17aacc04077 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Materials/scrap.yml @@ -0,0 +1,29 @@ +- type: entity + parent: BaseScrap + id: ScrapElectrum + name: electrum scrap + description: "A broken fragment of forged electrum, a natural alloy of gold and silver. Once used to crown the monuments of ancient empires." + components: + - type: Item + sprite: _DEN/Objects/Materials/Scrap/generic.rsi + size: Small + - type: Sprite + layers: + - sprite: _DEN/Objects/Materials/Scrap/generic.rsi + state: electrum1 + map: [ "enum.DamageStateVisualLayers.Base" ] + - type: RandomSprite + available: + - enum.DamageStateVisualLayers.Base: + electrum1: "" + electrum2: "" + electrum3: "" + - type: PhysicalComposition + materialComposition: # Considering the color, it should be more like 75% gold and 25% silver, but I don't want to give salvagers less than a bar of each + Gold: 100 # 1 ingot + Silver: 100 # 1 ingot + - type: StaticPrice + price: 35 # The value of one gold and one silver ingot, if they just sell it + - type: Tag + tags: + - MantisBeltStorable # Why not, their gear is made of it diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Misc/bedsheets.yml b/Resources/Prototypes/_DEN/Entities/Objects/Misc/bedsheets.yml new file mode 100644 index 00000000000..86b70adac65 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Misc/bedsheets.yml @@ -0,0 +1,15 @@ +- type: entity + parent: BedsheetBase + id: BedsheetSomberMantis + name: mantis bedsheet + description: "A psionically-charged bedsheet that will make any garbage bed seem like the height of luxury." + components: + - type: Sprite + sprite: _DEN/Objects/Misc/bedsheets.rsi + state: sheetmantis + - type: Clothing + sprite: _DEN/Clothing/Neck/Bedsheets/mantis.rsi + - type: Tag + tags: + - Bedsheet + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Misc/box.yml b/Resources/Prototypes/_DEN/Entities/Objects/Misc/box.yml new file mode 100644 index 00000000000..1617a282ceb --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Misc/box.yml @@ -0,0 +1,222 @@ +- type: entity + parent: [ BaseStorageItem, BaseBagOpenClose ] + id: MantisCase + name: amaranth case # Generic version with no whitelist, but also doesn't fit in the mantis belt. Gift box? + description: "A case made of exotic, extremely durable hardwood." + components: + - type: Sprite + sprite: _DEN/Objects/Storage/boxmantis.rsi + layers: + - state: 2-closed # The 2-wide version + - state: 2-open + map: ["openLayer"] + - type: Item + sprite: _DEN/Objects/Storage/boxmantis.rsi + size: Normal + shape: # All mantis cases are 2-tall so the mantis-specific ones will physically fit in their belt + - 0,0,1,1 # 2x2 + - type: Storage + maxItemSize: Normal + grid: + - 0,0,1,1 # 2x2 + +- type: entity + parent: MantisCase + id: MantisCaseSmall + name: amaranth case (small) + description: "A case made of exotic, extremely durable hardwood." + components: + - type: Sprite + layers: + - state: 1-closed # The 1-wide version + - state: 1-open + map: ["openLayer"] + - type: Item + size: Small + shape: + - 0,0,0,1 # 1x2 + - type: Storage + maxItemSize: Small + grid: + - 0,0,0,1 # 1x2 + +- type: entity + parent: MantisCase + id: MantisCaseLarge + name: amaranth case (long) + description: "A case made of exotic, extremely durable hardwood." + components: + - type: Sprite + layers: + - state: 3-closed # The 3-wide version + - state: 3-open + map: ["openLayer"] + - type: Item + sprite: _DEN/Objects/Storage/boxmantis.rsi + size: Normal + shape: + - 0,0,2,1 # 3x2 + - type: Storage + maxItemSize: Normal + grid: + - 0,0,2,1 # 3x2 + +- type: entity + parent: MantisCase + id: MantisCaseExtraLarge + name: amaranth case (extra long) + description: "A case made of exotic, extremely durable hardwood." + components: + - type: Sprite + layers: + - state: 4-closed # The 4-wide version + - state: 4-open + map: ["openLayer"] + - type: Item + sprite: _DEN/Objects/Storage/boxmantis.rsi + size: Large + shape: + - 0,0,3,1 # 4x2 + - type: Storage + maxItemSize: Large + grid: + - 0,0,3,1 # 4x2 + +- type: entity + parent: [MantisCaseLarge, BaseMantisContraband] # Contraband since its contents are + id: MantisCaseTools + name: mantis tools case # In the mantis locker + description: "An amaranth case to store your things. A Greek psi is carved into the top, marking it as yours." + components: + - type: Sprite + layers: + - state: 3-closed # The 3-wide version + - state: label-psi + - state: 3-open + map: ["openLayer"] + - type: Storage + whitelist: # Exactly the same whitelist as the belt, so you can't cheat and store non-whitelisted things in it on the belt + tags: + - Folder + - Document + - Write + - HandLabeler + - Flashlight + - Syringe + - Bottle + - PillCanister + - Pill + - MantisBeltStorable + components: + - AnomalyScanner + - NodeScanner + - Flash + - type: StorageFill + contents: + - id: LanternMantis + - id: BoxFolderMantis + - id: HandLabelerMantis + - type: Tag + tags: + - MantisBeltStorable + +- type: entity + parent: [MantisCaseSmall, BaseMantisContraband] # Contraband since its contents are + id: MantisCaseChemicals + name: mantis chemicals case # In the mantis locker + description: "An amaranth case to carry your chemicals. Conveniently portable, but the slots inside will only fit their original contents. A watchful eye is carved into the top, marking it as yours." + components: + - type: Sprite + layers: + - state: 1-closed # The 1-wide version + - state: label-eye + - state: 1-open + map: ["openLayer"] + - type: Storage + grid: + - 0,0,1,2 # 2x3, bigger on the inside. The idea is to replicate a cigarette pack's function, but more restrictive and with less space + whitelist: # Only the tiny chemistry items from the belt's whitelist + tags: + - Syringe + - Bottle + - PillCanister + - Pill + - MantisBoxChemicalsStorable # Possibly redundant, but it has its own tag just in case + - type: StorageFill + contents: + - id: SyringeMantis + - id: ChemistryEmptyBottleMantis + - id: PillCanisterMnemolithMantis # The bottles are labeled and color coded for safety + - id: PillCanisterSpaceDrugsMantis + - id: PillCanisterCryptobiolinMantis + - id: PillCanisterMindbreakerToxinMantis # They don't have mindbreaker bullets anymore, so they get this instead + - type: Tag + tags: + - MantisBeltStorable + +- type: entity + parent: MantisCase + id: MantisCaseCandles + name: mnemolith candle case # Loadout option + description: "An amaranth case of mixed mnemolith candles. Conveniently portable, but the slots inside will only fit their original contents." + components: + - type: Sprite + layers: + - state: 2-closed + - state: label-candles + - state: 2-open + map: ["openLayer"] + - type: Storage + grid: # The box itself is 2x2 + - 0,0,2,2 # 3x3, bigger on the inside, but it can only store what already comes inside it + whitelist: + tags: + - MantisBoxCandlesStorable # Only the mantis candles should have this + - type: StorageFill + contents: # A cute radial arrangement of items, like a gift box + - id: CandleSomberMantisSmall + - id: CandleSomberMantis + - id: CandleSomberMantisSmall + - id: CandleSomberMantis + - id: CandleSomberMantisCluster + - id: CandleSomberMantis + - id: CandleSomberMantisSmall + - id: CandleSomberMantis + - id: CandleSomberMantisSmall + - type: Tag + tags: + - MantisBeltStorable + +- type: entity + parent: [MantisCaseLarge, BaseMantisContraband] # Contraband since its contents are + id: MantisCaseRestraints + suffix: DO NOT MAP # Mantes need to get this from loadout - see tags below + name: mantis restraints case # Loadout option + description: "An amaranth case filled with shackles and chains, complete with an antique wrench. Conveniently portable, but the slots inside will only fit their original contents." + components: + - type: Sprite + layers: + - state: 3-closed + - state: label-restraints + - state: 3-open + map: ["openLayer"] + - type: Storage + grid: # The box itself is 3x2, because only three of these items have real mechanics (the rest are just roleplay toys) + - 0,0,5,1 # 6x2, bigger on the inside, but it can only store what already comes inside it + whitelist: + tags: + - MantisBoxRestraintsStorable # Only the items below should have this + - type: StorageFill + contents: + - id: ClothingHeadCageMantis # This version has a chain on the front to match the other restraints case items (the locker version does not) + - id: HandcuffsMantis # If these are ever used to selfsec I swear to god, the breakout time is already one second + - id: ClothingNeckMantisShackles # Just a cosmetic neck item to complete the set + - id: WrenchMantis # A pretty but otherwise normal wrench for anchoring chains + - id: LeashMantis # Matching chain leashes with sprites made to look like anchor points rather than handles + amount: 4 + - type: Tag + tags: + - MantisBeltStorable + - MantisBoxRestraintsStorable # Technically you could put this box inside itself, but only one should exist in a game at a time since it's a loadout item + - type: GuideHelp + guides: [ MantisGuide ] diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Misc/candles.yml b/Resources/Prototypes/_DEN/Entities/Objects/Misc/candles.yml new file mode 100644 index 00000000000..f8041ebae69 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Misc/candles.yml @@ -0,0 +1,85 @@ +- type: entity + parent: Candle + id: CandleSomberMantis + name: mnemolith candle + suffix: Magic + description: "A candle made with mnemolith powder. It doesn't want to go out." + components: + - type: Sprite + sprite: _DEN/Objects/Misc/candlesmantis.rsi + layers: + - state: candle-big + color: "#ffffff" # The sprite's multicolor, so this stays white + - type: Item + sprite: _DEN/Objects/Misc/candlesmantis.rsi + size: Tiny # So they fit nicely in their box + inhandVisuals: + left: + - state: inhand-left + color: "#ffffff" + right: + - state: inhand-right + color: "#ffffff" + - type: Flammable + firestackFade: 0.0 # They burn until you put them out + damage: + types: + Heat: 0.0 + - type: FireVisuals + sprite: _DEN/Objects/Misc/candlesmantis.rsi + normalState: fire-big + lightColor: "#4dc4ff" + - type: Damageable + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 5 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + MnemolithPowder: # Not just ash + min: 1 + max: 1 + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/drop.ogg + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Tag + tags: + - MantisBeltStorable + - MantisBoxCandlesStorable + +- type: entity + parent: CandleSomberMantis + id: CandleSomberMantisSmall + name: mnemolith candle (small) + description: "A small candle made with mnemolith powder. It doesn't want to go out." + components: + - type: Sprite + layers: + - state: candle-small + color: "#ffffff" + - type: FireVisuals + normalState: fire-small + +- type: entity + parent: CandleSomberMantis + id: CandleSomberMantisCluster + name: mnemolith candle (cluster) + description: "A cluster of candles made with mnemolith powder. Not a birthday cake." + components: + - type: Sprite + layers: + - state: candle-cluster + color: "#ffffff" + - type: FireVisuals + normalState: fire-cluster diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Misc/handcuffs.yml b/Resources/Prototypes/_DEN/Entities/Objects/Misc/handcuffs.yml new file mode 100644 index 00000000000..a00c50de250 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Misc/handcuffs.yml @@ -0,0 +1,45 @@ +- type: entity + parent: [BaseItem, BaseMantisContraband] + id: HandcuffsMantis + suffix: DO NOT MAP # We don't want to give mantes the idea that selfsec is a part of their job's function... + name: graven shackles + description: "Heavy mu-metal shackles to bind unruly psionic subjects, inscribed for both record and suppression. Never to be used for security matters. In fact, that locking bar seems to be damaged... Perhaps they won't notice." + components: + - type: Item + size: Small + - type: Handcuff + breakoutTime: 1 # Is this low enough? These cuffs are just for roleplay + cuffTime: 5 # Long enough for a player to interrupt the doafter if they don't want to roleplay that + stunBonus: -5 # You shouldn't be able to force these onto someone who's stunned + uncuffTime: 1 + cuffedRSI: _DEN/Objects/Misc/handcuffsmantis.rsi + bodyIconState: body-overlay + breakOnRemove: false + startCuffSound: + path: /Audio/_DEN/Items/Handcuffs/chain_start.ogg + endCuffSound: + path: /Audio/_DEN/Items/Handcuffs/chain_end.ogg + startUncuffSound: + path: /Audio/_DEN/Items/Handcuffs/chain_start.ogg + endUncuffSound: + path: /Audio/_DEN/Items/Handcuffs/chain_end.ogg + startBreakoutSound: + path: /Audio/_DEN/Items/Handcuffs/chain_takeoff.ogg + - type: Sprite + sprite: _DEN/Objects/Misc/handcuffsmantis.rsi + state: icon + - type: Tag + tags: + - MantisBoxRestraintsStorable + - MantisBeltStorable + - type: MeleeWeapon + wideAnimationRotation: 90 + resetOnHandSelected: false + animation: WeaponArcDisarm + damage: + types: + Blunt: 0 + - type: UseDelay + delay: 1 + - type: GuideHelp + guides: [ MantisGuide ] # Remind them this is really just for roleplay... diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/_DEN/Entities/Objects/Misc/paper.yml new file mode 100644 index 00000000000..fd66b113d0f --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Misc/paper.yml @@ -0,0 +1,217 @@ +- type: entity + parent: [BoxFolderFireproof, BaseMantisContraband] # Contraband so the mystagogue doesn't steal it + id: BoxFolderMantis + name: mantis ledger + description: "A foreboding folder designed to document the station's psions. Fireproof, immune to scrying, and carrying a special pen." + components: + - type: Sprite + sprite: _DEN/Objects/Misc/bureaucracy.rsi + layers: + - state: folder-mantis + - state: folder-base-mantis + - type: Item + sprite: _DEN/Objects/Misc/bureaucracy.rsi + heldPrefix: folder-mantis + - type: ContainerContainer + containers: + storagebase: !type:Container + ents: [] + pen_slot: !type:ContainerSlot {} + - type: ItemSlots + slots: + pen_slot: + name: clipboard-slot-component-slot-name-pen + insertVerbText: pen-insert-verb + ejectVerbText: pen-eject-verb + whitelist: + tags: + - Write + - type: ItemMapper + mapLayers: + folder-overlay-paper-mantis: + whitelist: + tags: + - Document + folder-mantis-overlay-pen: + whitelist: + tags: + - Write + - type: Storage + maxItemSize: Small + whitelist: + tags: + - Document + - MantisBoxFolderStorable # Only the mantis pen, stamp, and papers should have this + grid: # It's a 5x5 square with an isolated slot in the middle for the stamp + - 0,0,4,0 + - 0,4,4,4 + - 0,1,1,1 + - 3,1,4,1 + - 0,3,1,3 + - 3,3,4,3 + - 0,2,0,2 + - 2,2,2,2 + - 4,2,4,2 + - type: StorageFill + contents: # Contains 20 mantis papers you can use to write down names of psions, or warnings, or psionic therapy notes or whatever, with the stamp in the center + - id: PaperMantis + amount: 10 + - id: RubberStampMantis + - id: PaperMantis + amount: 10 + - type: ContainerFill + containers: + pen_slot: + - PenMantis + - type: Tag + tags: + - Folder + - MantisBeltStorable + - type: GuideHelp + guides: [ MantisGuide ] + +- type: entity + parent: [PenEmbeddable, BaseAntiPsionicWeapon, BaseMantisContraband] # Contraband so the mystagogue doesn't steal it + id: PenMantis # The most mechanically complex pen in the world, all just for style + name: mantis stylus + description: "A writing tool chiseled from a spike of mnemolith. Do not accidentally poke yourself with it." + components: + - type: Sprite + sprite: _DEN/Objects/Misc/bureaucracy.rsi + state: pen_mantis + - type: Item + sprite: _DEN/Objects/Misc/bureaucracy.rsi + heldPrefix: pen_mantis + - type: DamageOtherOnHit + damage: + types: # Thrown damage (but you'll get it thrown back at you, and you're psionic) + Piercing: 6.4 # 8 damage against psions (same as PenCap) + Holy: 3.2 # 12 total damage against supernaturals + - type: EmbeddableProjectile + sound: /Audio/Weapons/star_hit.ogg + removalTime: 0 # No doafter to pull it out so people can throw it back fast, because you probably deserve it + - type: MeleeWeapon # You can swing it like a weapon + attackRate: .6666 + angle: 40 + wideAnimationRotation: -45 + soundHit: + path: /Audio/Weapons/bladeslice.ogg + damage: + types: # Melee damage + Piercing: 3.2 # 4.8 DPS, or 6 DPS against psions (same as Shiv) + Holy: 1.6 # 9 total DPS against psionic supernaturals + - type: ThrowingAngle + angle: -45 + - type: PhysicalComposition + materialComposition: + Mnemolith: 100 + - type: EmitSoundOnUse + sound: + path: /Audio/_DEN/Effects/crystalbell1.ogg + params: + volume: -6 + variation: 0.05 + maxDistance: 10 # Longer range than a standard pen click to be spooky + - type: UseDelay + delay: 2 # Its sound effect is 2s long, no overlapping allowed + - type: Tag + tags: + - Write + - Pen + - MantisBeltStorable + - MantisBoxFolderStorable # Only the mantis pen, stamp, and papers should have this + +- type: entity + parent: [Paper, ClothingMaskBase, BaseAntiPsionicObject] + id: PaperMantis + name: ledgerstone # It's a spooky pun - it comes from the mantis ledger and is made with stone powder, but a ledgerstone is a gravestone + description: "A sharp, durable page taken from the mantis ledger. Mnemolith powder sparkles within its surface. You feel watched." + components: + - type: Sprite + sprite: Objects/Misc/bureaucracy.rsi + layers: + - state: paper_mantis + - state: paper_mantis_words + map: ["enum.PaperVisualLayers.Writing"] + visible: false + - state: paper_stamp-generic + map: ["enum.PaperVisualLayers.Stamp"] + visible: false + - type: Item + sprite: Objects/Misc/bureaucracy.rsi + heldPrefix: paper_mantis + - type: Clothing # I tried putting these sprites in their own folder but the Clothing component doesn't actually read the sprite line below... Forgive me... + sprite: Objects/Misc/bureaucracy.rsi # And if the papers were in their own folder, they either couldn't be stamped, or they'd have to replicate most of the folder... + quickEquip: false + slots: [ mask ] # You can wear it over your face like a paper talisman and the eye on it will pulse every few seconds, but this isn't noted anywhere + clothingVisuals: + mask: + - state: paper_mantis-equipped-MASK + - state: paper_mantis-equipped-glow + shader: unshaded + - type: HideLayerClothing + slots: + - Snout + - type: BreathMask + - type: TypingIndicatorClothing # It gives you a new typing indicator if you wear it + proto: mantis + - type: PaperLabelType # So it can label containers with a unique sprite + paperType: MantisPaper + - type: Food + transferAmount: 15 + - type: FlavorProfile + flavors: + - mantispaper + - mnemolith + - type: SolutionContainerManager + solutions: + food: # The mnemolith powder in the paper itself (if it's eaten) + maxVol: 15 + reagents: + - ReagentId: MnemolithReagent + Quantity: 15 + injector: # The mnemolith powder in the edges (if it's thrown into you) + maxVol: 300 + reagents: # Notably, grinding it only produces the "food" reagent volume above, so this is just for thrown hits and not otherwise accessible + - ReagentId: MnemolithReagent # And it lacks the RefillableSolution component, so you can't empty it and then fill it with poison or something + Quantity: 300 + - type: SolutionInjectOnEmbed # You get a brief extrasensory experience when it gives you a paper cut + transferAmount: 3 + solution: injector + - type: Extractable + grindableSolutionName: food + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 30 # Burns three times longer than a normal paper just to be spooky + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + MnemolithPowder: # Not just ash + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Flammable + fireSpread: false # Psionic fire doesn't work like that + - type: FireVisuals + sprite: _DEN/Effects/fire.rsi + normalState: mantispagefire # Has its own fire animation that shows the paper's eye + lightColor: "#4dc4ff" # Psionic fire color + - type: EmbeddableProjectile + sound: /Audio/Weapons/pierce.ogg # Just a dull thunk since it does almost no damage + removalTime: 2 + - type: PaperVisuals + backgroundImagePath: "/Textures/_DEN/Interface/Paper/mantispaper.png" + contentMargin: 60.0, 37.0, 50.0, 63.0 + fontAccentColor: "#767d82" + maxWritableArea: 400.0, 400.0 + - type: Tag + tags: + - Document + - Trash + - Paper + - MantisBeltStorable + - MantisBoxFolderStorable # Only the mantis pen, stamp, and papers should have this + - WhitelistChameleon diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Specific/Mantis/amphorae.yml b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Mantis/amphorae.yml new file mode 100644 index 00000000000..c5369b7b347 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Mantis/amphorae.yml @@ -0,0 +1,51 @@ +- type: entity + parent: BaseAmphora + id: SomberElectrumAmphora + name: electrum amphora + description: "An electrum amphora with carved alabaster handles." + components: + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/amphorae.rsi + state: electrumamphora + - type: Item + sprite: _DEN/Objects/Specific/Mantis/amphorae.rsi + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 20 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalGlassBreak + - !type:SpillBehavior + solution: jar + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:SpawnEntitiesBehavior + spawn: + ScrapElectrum: + min: 2 + max: 4 + - type: DamageOnLand + damage: + types: + Blunt: 0 # Metal + - type: DamageOtherOnHit + damage: + types: + Blunt: 0 # Metal + - type: DamageOnHighSpeedImpact + minimumSpeed: 2 + damage: + types: + Blunt: 0 # Metal diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Specific/Mantis/handheldcomputers.yml b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Mantis/handheldcomputers.yml new file mode 100644 index 00000000000..4ef017d4be3 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Mantis/handheldcomputers.yml @@ -0,0 +1,116 @@ +- type: entity + parent: [BaseHandheldComputer, BaseMantisContraband] # Spawns in the mantis's pocket, contraband so they can't really give it away + id: HandheldPsionicsRegistry + name: handheld psion registry + description: "Grants access to the psion registry without having to return to your office." + components: + - type: Item + sprite: _DEN/Objects/Specific/Mantis/handheldpsionicsregistry.rsi + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/handheldpsionicsregistry.rsi + layers: + - state: icon + - state: screen + shader: unshaded + - type: Tag + tags: + - MantisBeltStorable + - type: DamageOtherOnHit + damage: + types: + Blunt: 5 + - type: ActivatableUI + key: enum.PsionicsRecordsConsoleKey.Key + - type: UserInterface + interfaces: + enum.PsionicsRecordsConsoleKey.Key: + type: PsionicsRecordsConsoleBoundUserInterface + - type: PsionicsRecordsConsole + - type: AccessReader # Same as the psion registry computer + access: + - [ Chapel ] +# - [ Library ] + - [ Mantis ] + - [ ResearchDirector ] + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellSmall + blacklist: + tags: + - MantisCaster + - type: GuideHelp + guides: [ MantisGuide ] + +- type: entity + parent: HandheldPsionicsRegistry + id: HandheldPsionicsRegistryEmpty + suffix: Empty + components: + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + blacklist: + tags: + - MantisCaster + +- type: entity # Sometimes mapped in mantis offices, but not otherwise part of the mantis's kit + parent: [BaseHandheldComputer, BaseMantisContraband] # Not parented to the handheld crew monitor because it should never fulfill a steal objective + id: HandheldCrewMonitorMantis + name: handheld crew monitor # If this is ever updated to only track registered psions, rename it the "handheld psion monitor" or something + description: "Ostensibly used to monitor the health and safety of registered psions aboard the station, although a system update seems to have incorrectly increased its access to see all crew. Oh well." # Like above, if functionality changes, update this description + components: + - type: Item + sprite: _DEN/Objects/Specific/Medical/handheldcrewmonitormantis.rsi + - type: Sprite + sprite: _DEN/Objects/Specific/Medical/handheldcrewmonitormantis.rsi + layers: + - state: icon + - state: screen + shader: unshaded + - type: Tag + tags: + - MantisBeltStorable + - type: DamageOtherOnHit + damage: + types: + Blunt: 5 + - type: ActivatableUI + key: enum.CrewMonitoringUIKey.Key + - type: UserInterface + interfaces: + enum.CrewMonitoringUIKey.Key: + type: CrewMonitoringBoundUserInterface + - type: CrewMonitoringConsole + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: CrewMonitor + - type: WirelessNetworkConnection + range: 500 + - type: StationLimitedNetwork + - type: PsionicsRecordsConsole + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellSmall + blacklist: + tags: + - MantisCaster + - type: GuideHelp + guides: [ MantisGuide ] + +- type: entity + parent: HandheldCrewMonitorMantis + id: HandheldCrewMonitorMantisEmpty + suffix: Empty + components: + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + blacklist: + tags: + - MantisCaster diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/chemistry-bottles.yml b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/chemistry-bottles.yml new file mode 100644 index 00000000000..a391fa14c57 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/chemistry-bottles.yml @@ -0,0 +1,64 @@ +- type: entity + parent: BaseChemistryEmptyBottle + id: ChemistryEmptyBottleMantis + name: electrum bottle + description: "An eidolite bottle in a durable electrum shell. Useful for your rituals." + components: + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/bottlemantis.rsi + layers: + - state: bottle + - state: bottle-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: Item + sprite: _DEN/Objects/Specific/Mantis/bottlemantis.rsi + - type: SolutionContainerVisuals + maxFillLevels: 6 + fillBaseName: bottle- + - type: DamageOnLand + damage: + types: + Blunt: 0 # Metal shell + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 0 # Metal shell + - type: DamageOtherOnHit + damage: + types: + Blunt: 1 # Doink + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic # Metal shell + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 10 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: GlassBreak # There's still a crystal interior + params: + volume: -4 + - !type:SpillBehavior { } + - !type:SpawnEntitiesBehavior + spawn: + MaterialEidolite1: + min: 1 + max: 1 + ScrapElectrum: + min: 1 + max: 1 + transferForensics: true + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: PhysicalComposition + materialComposition: + Eidolite: 100 + - type: Tag + tags: + - Bottle + - MantisBeltStorable + - MantisBoxChemicalsStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/chemistry.yml b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/chemistry.yml new file mode 100644 index 00000000000..f74bf3bf229 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/chemistry.yml @@ -0,0 +1,92 @@ +- type: entity + parent: BaseSyringe + id: SyringeMantis + name: electrum syringe + description: "An electrum syringe with an eidolite barrel. Naturally antimicrobial." + components: + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/syringemantis.rsi + - type: Item + sprite: _DEN/Objects/Specific/Mantis/syringemantis.rsi + - type: SolutionContainerVisuals + maxFillLevels: 3 + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic # Metal shell + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 10 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: GlassBreak # There's still a crystal interior + params: + volume: -4 + - !type:SpillBehavior { } + - !type:SpawnEntitiesBehavior + spawn: + MaterialEidolite1: + min: 1 + max: 1 + ScrapElectrum: + min: 1 + max: 1 + transferForensics: true + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: PhysicalComposition + materialComposition: + Eidolite: 100 + - type: Tag + tags: + - Syringe + - MantisBeltStorable + - MantisBoxChemicalsStorable + +- type: entity + parent: PillCanister + id: PillCanisterMantis + name: electrum pill canister + description: "A electrum pill canister with an eidolite window. Expensive for no reason." + components: + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/pillcanistermantis.rsi + state: pill_canister + - type: Item + sprite: _DEN/Objects/Specific/Mantis/pillcanistermantis.rsi + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic # Metal shell + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 10 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: GlassBreak # There's still a crystal interior + params: + volume: -4 + - !type:SpillBehavior { } + - !type:SpawnEntitiesBehavior + spawn: + MaterialEidolite1: + min: 1 + max: 1 + ScrapElectrum: + min: 1 + max: 1 + transferForensics: true + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: PhysicalComposition + materialComposition: + Eidolite: 100 + - type: Tag + tags: + - PillCanister + - MantisBeltStorable + - MantisBoxChemicalsStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/pills.yml b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/pills.yml new file mode 100644 index 00000000000..48c6cc4bc24 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Specific/Medical/pills.yml @@ -0,0 +1,170 @@ +- type: entity + parent: PillCanisterMantis + id: PillCanisterSpaceDrugsMantis + suffix: LSD, 5 + description: "A potent psychedelic that may awaken psionic abilities in those with potential, coloquially called \"space drugs.\"" + components: + - type: Label + currentLabel: LSD 15u + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/pillcanistermantis.rsi + layers: + - state: pill_canister + - state: pill_canister-spacedrugs # A greenish gray stripe + - type: StorageFill + contents: + - id: PillSpaceDrugs + amount: 5 + - type: GuideHelp + guides: [ Psionics ] + +- type: entity + parent: PillCanisterMantis + id: PillCanisterCryptobiolinMantis + suffix: cryptobiolin, 10 + description: "A drug which causes mild confusion, but renders you psionically insulated. Each pill lasts about five minutes." + components: + - type: Label + currentLabel: cryptobiolin 15u + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/pillcanistermantis.rsi + layers: + - state: pill_canister + - state: pill_canister-crypto # A blue stripe + - type: StorageFill + contents: + - id: PillCryptobiolin + amount: 10 + - type: GuideHelp + guides: [ PsionicInsulation ] + +- type: entity + parent: [PillCanisterMantis, BaseMantisContraband] + id: PillCanisterMindbreakerToxinMantis + suffix: mindbreaker toxin, 5 + description: "Permanently removes psionics when ingested. Not to be taken lightly." + components: + - type: Label + currentLabel: mindbreaker toxin 20u + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/pillcanistermantis.rsi + layers: + - state: pill_canister + - state: pill_canister-mindbreaker # A cool red stripe - not the color of mindbreaker, the label is a warning + - type: StorageFill + contents: + - id: PillMindbreakerToxin + amount: 5 + - type: GuideHelp + guides: [ Mindbreaking ] + +- type: entity # Not obtainable by players, unless we want to prevent them from making heartbreaker out of their roundstart mindbreaker in MantisCaseChemicals + parent: [PillCanisterMantis, BaseMantisContraband] + id: PillCanisterSoulbreakerToxinMantis + suffix: soulbreaker toxin, 5 + description: "Permanently removes psionics when ingested. Not to be taken lightly. Four times stronger than mindbreaker toxin." + components: + - type: Label + currentLabel: soulbreaker toxin 5u + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/pillcanistermantis.rsi + layers: + - state: pill_canister + - state: pill_canister-soulbreaker # A cool pink stripe - not the color of soulbreaker, the label is a warning + - type: StorageFill + contents: + - id: PillSoulbreakerToxin + amount: 5 + - type: GuideHelp + guides: [ Mindbreaking ] + +- type: entity + name: pill + suffix: soulbreaker toxin 5u + parent: Pill + id: PillSoulbreakerToxin + description: "Really not to be taken lightly." + components: + - type: Label + currentLabel: soulbreaker toxin 5u + - type: Sprite # Soulbreaker Toxin colored pill + sprite: _DEN/Objects/Specific/Chemistry/pills.rsi + state: soulbreakerpill + - type: Pill + state: soulbreakerpill + - type: Item + size: Tiny + sprite: _DEN/Objects/Specific/Chemistry/pills.rsi + heldPrefix: soulbreaker + - type: SolutionContainerManager + solutions: + food: + maxVol: 5 + reagents: + - ReagentId: SoulbreakerToxin + Quantity: 5 + - type: GuideHelp + guides: [ Mindbreaking ] + +- type: entity + parent: PillCanisterMantis + id: PillCanisterMnemolithMantis + suffix: mnemolith, 10 # Just an RP drug, so there can be ten of them + description: "Powdered and pressed mnemolith, used by mantes to heighten their extrasensory perception. Potential psychological impact aside, there are no known lasting effects." + components: + - type: Label + currentLabel: mnemolith 15u + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/pillcanistermantis.rsi + layers: + - state: pill_canister + - state: pill_canister-mnemolith # A dark gray stripe + - type: StorageFill + contents: + - id: PillMnemolith + amount: 10 + - type: GuideHelp + guides: [ MantisGuide ] + +- type: entity + name: pill + suffix: mnemolith 15u + parent: Pill + id: PillMnemolith + description: "Powdered and pressed mnemolith." + components: + - type: Label + currentLabel: mnemolith 15u + - type: Sprite # Mnemolith colored pill + sprite: _DEN/Objects/Specific/Chemistry/pills.rsi + state: mnemolithpill + - type: Item + size: Tiny + sprite: _DEN/Objects/Specific/Chemistry/pills.rsi + heldPrefix: mnemolith + - type: Pill + state: mnemolithpill + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: MnemolithReagent + Quantity: 15 + - type: GuideHelp + guides: [ MantisGuide ] + +- type: entity + suffix: mnemolith + parent: PrefilledSyringe + id: SyringeMnemolith + components: + - type: SolutionContainerManager + solutions: + injector: + maxVol: 15 + reagents: + - ReagentId: MnemolithReagent + Quantity: 15 + - type: Label + currentLabel: mnemolith diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Tools/hand_labeler.yml b/Resources/Prototypes/_DEN/Entities/Objects/Tools/hand_labeler.yml new file mode 100644 index 00000000000..629f8e6f58b --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Tools/hand_labeler.yml @@ -0,0 +1,31 @@ +- type: entity + parent: [HandLabeler, BaseAntiPsionicWeapon, BaseMantisContraband] # Contraband so the mystagogue doesn't steal it + id: HandLabelerMantis + name: sigillator + suffix: Hand Labeler + description: "An ancient and mystical hand labeler wrought from slabs of mnemolith, used by turning the wheels and giving something a good smack. You wouldn't be caught dead with that blue plastic monstrosity." + components: + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/handlabelermantis.rsi + - type: Item + sprite: _DEN/Objects/Specific/Mantis/handlabelermantis.rsi + storedSprite: + storedRotation: -90 + - type: MeleeWeapon # You can swing it like a weapon + attackRate: 0.6666 + wideAnimationRotation: -90 + soundHit: + path: /Audio/Weapons/block_metal1.ogg + params: + volume: -60 # Why is it so loud... + variation: 0.05 + damage: + types: + Blunt: 5 # 7.5 DPS (same as Crowbar), or 9.38 DPS against psions + Holy: 2.5 # 14.1 total DPS against psionic supernaturals + - type: ThrowingAngle + angle: -90 + - type: Tag + tags: + - HandLabeler + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Tools/lantern.yml b/Resources/Prototypes/_DEN/Entities/Objects/Tools/lantern.yml new file mode 100644 index 00000000000..f026df32f81 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Tools/lantern.yml @@ -0,0 +1,133 @@ +- type: entity + parent: [BaseItem, BaseAntiPsionicWeapon, BaseMantisContraband] # If I parented it to Lantern, it would have a battery slot... + id: LanternMantis + name: mantis lantern + description: "An ornate lantern housing an eidolite pyramid that draws power from the noosphere. Instead of merely casting light, it seems to declare it--an austere radiance that etches itself into whatever it touches. Stare too long and the gleam resolves into shapes you almost recognize, then promptly forget. For all its theatrics, the handle still hangs comfortably on your back." + components: + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/lanternmantis.rsi + layers: + - state: icon + - state: icon-crystal + shader: unshaded + - type: Item + sprite: _DEN/Objects/Specific/Mantis/lanternmantis.rsi + - type: EtherealLight # Dims around ethereal entities + - type: PointLight + enabled: false + radius: 3 + energy: 4 + color: "#d9418d" + netsync: false + - type: Appearance + - type: UseDelay + - type: ToggleableVisuals + replaceMode: false + spriteLayer: light + inhandVisuals: + left: + - state: on-inhand-left + shader: unshaded + right: + - state: on-inhand-right + shader: unshaded + clothingVisuals: + belt: + - state: on-equipped-BELT + shader: unshaded + suitstorage: + - state: on-equipped-SUITSTORAGE + shader: unshaded + - type: ItemTogglePointLight + - type: ItemToggle + predictable: false + soundActivate: + path: /Audio/_DEN/Effects/crystalshimmer1.ogg + params: + volume: -2 + variation: 0.05 + soundDeactivate: + path: /Audio/_DEN/Effects/crystalshimmer2.ogg + params: + volume: -2 + variation: 0.05 + - type: StealTarget + stealGroup: LAMP # The moths are coming the moths are coming + - type: Clothing + sprite: _DEN/Objects/Specific/Mantis/lanternmantis.rsi + quickEquip: false + slots: + - Belt + - suitStorage + - type: MeleeWeapon # You can swing it like a weapon + attackRate: 0.6666 + soundHit: + path: /Audio/Weapons/block_metal1.ogg + params: + volume: -60 # Why is it so loud... + variation: 0.05 + damage: + types: + Blunt: 5 # 7.5 DPS (same as Crowbar), or 9.38 DPS against psions + Holy: 2.5 # 14.1 total DPS against psionic supernaturals + - type: Tag + tags: + - Flashlight + - MantisBeltStorable + +- type: entity + parent: BaseItem # And if I parented LanternMantis to this, the sprite layers would freak out... + id: LanternSomber + name: somber orb + description: "A palm-sized electrum sphere studded with shards of eidolite, each humming with faint noospheric charge. Its glow lingers in your vision, imprinting shapes you can't quite name." + components: + - type: Sprite + sprite: _DEN/Objects/Tools/somberlamp.rsi + layers: + - state: icon + - state: icon-crystal + shader: unshaded + - type: Item + sprite: _DEN/Objects/Tools/somberlamp.rsi + inhandVisuals: + left: + - state: inhand-left + - state: inhand-left-crystal + shader: unshaded + right: + - state: inhand-right + - state: inhand-right-crystal + shader: unshaded + - type: EtherealLight # Dims around ethereal entities + - type: PointLight + enabled: false + radius: 3 + energy: 4 + color: "#d9418d" + netsync: false + - type: Appearance + - type: UseDelay + - type: ToggleableVisuals + spriteLayer: light + - type: ItemTogglePointLight + - type: ItemToggle + predictable: false + soundActivate: + path: /Audio/_DEN/Effects/crystalshimmer1.ogg + params: + volume: -2 + variation: 0.05 + soundDeactivate: + path: /Audio/_DEN/Effects/crystalshimmer2.ogg + params: + volume: -2 + variation: 0.05 + - type: StealTarget + stealGroup: LAMP # The moths are coming the moths are coming + - type: LandAtCursor + - type: ThrowingAngle + angularVelocity: true + - type: Tag + tags: + - Flashlight + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Tools/leash.yml b/Resources/Prototypes/_DEN/Entities/Objects/Tools/leash.yml new file mode 100644 index 00000000000..c0c72f99bf3 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Tools/leash.yml @@ -0,0 +1,36 @@ +- type: entity + id: BaseLeash # someone will have to port or recode the leash system and apply it to the base here + parent: BaseItem + abstract: true + +- type: entity + parent: [BaseLeash, BaseMantisContraband] + id: LeashMantis + name: graven chain + description: "A heavy mu-metal chain leading to a round, anchorable base. The links are barely functional... Perhaps the Crucible will send you a new set some day." + components: # If we ever get leash mechanics patched, update this description and redo the values below if necessary + - type: Item + size: Tiny + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/leashmantis.rsi + state: icon + - type: Leash + leashSprite: + sprite: _DEN/Objects/Specific/Mantis/leashmantis-chain.rsi + state: chain +# pullInterval: 0.75 +# length: 3 +# lengthConfigs: [1.5, 2.25, 3] +# maxDistance: 6 +# attachDelay: 1 # If it becomes possible to leash other characters, increase this for consent purposes +# detachDelay: 1 +# selfDetachDelay: 10 + - type: Anchorable + delay: 1 # You have a wrench specifically made for this + snap: false # I don't think this even works + - type: Tag + tags: + - MantisBoxRestraintsStorable + - MantisBeltStorable + - type: GuideHelp + guides: [ MantisGuide ] diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Tools/lighters.yml b/Resources/Prototypes/_DEN/Entities/Objects/Tools/lighters.yml new file mode 100644 index 00000000000..b7717a621df --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Tools/lighters.yml @@ -0,0 +1,79 @@ +- type: entity + parent: [FlippoLighter, BaseAntiPsionicWeapon] + id: FlippoLighterMantis + name: mantis lighter + description: "A glossy lighter sculpted from chips of mnemolith, housing an eidolite pyramid that draws energy from the noosphere. The flame gutters strangely, as if aware of what it burns." + components: + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/lightermantis.rsi + layers: + - state: mantis_icon_base + map: ["base"] + - state: mantis_top + map: ["top"] + visible: false + - state: mantis_open + map: ["open"] + visible: false + - state: mantis_lighter_flame + map: ["flame"] + visible: false + shader: unshaded + - type: ItemToggle + predictable: false + soundActivate: + path: /Audio/_DEN/Effects/crystaltap1.ogg + params: + volume: -6 + variation: 0.05 + soundDeactivate: + path: /Audio/_DEN/Effects/crystaltap2.ogg + params: + volume: -6 + variation: 0.05 + - type: Item + sprite: _DEN/Objects/Specific/Mantis/lightermantis.rsi + heldPrefix: mantis + - type: Welder + fuelConsumption: 0 # Powered by the noosphere + fuelLitCost: 0 # Powered by the noosphere + tankSafe: true + - type: SolutionContainerManager + solutions: + Welder: + reagents: + - ReagentId: WeldingFuel + Quantity: 1 + maxVol: 1 + - type: ToggleableVisuals + spriteLayer: mantis_lighter_flame + inhandVisuals: + left: + - state: mantis-inhand-left-flame + shader: unshaded + right: + - state: mantis-inhand-right-flame + shader: unshaded + - type: PointLight + radius: 1.75 + energy: 2 + color: "#4dc4ff" + - type: MeleeWeapon + attackRate: .6666 + wideAnimationRotation: 180 + damage: + types: + Blunt: 2 # 3 DPS, or 3.75 DPS against psions + Holy: 1 # 5 total DPS against psionic supernaturals + - type: ItemToggleMeleeWeapon + activatedDamage: + types: + Heat: 2 # 3 DPS, or 3.75 DPS against psions + Holy: 1 # 5 total DPS against psionic supernaturals + - type: ItemToggleDamageOtherOnHit + - type: ThrowingAngle + angle: 180 + - type: Tag + tags: + - MantisBoxCandlesStorable # Why not + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/_DEN/Entities/Objects/Tools/tools.yml new file mode 100644 index 00000000000..3a0501226d3 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Tools/tools.yml @@ -0,0 +1,28 @@ +- type: entity + parent: Wrench + id: WrenchMantis + name: electrum spanner + description: "An unusual wrench made of exotic materials, given to mantes to anchor the graven chains of unruly psionic subjects." + components: + - type: Sprite + sprite: _DEN/Objects/Specific/Mantis/wrenchmantis.rsi + state: icon + - type: Item + sprite: _DEN/Objects/Specific/Mantis/wrenchmantis.rsi + storedSprite: + sprite: _DEN/Objects/Specific/Mantis/wrenchmantis.rsi + state: icon + storedRotation: 45 + storedOffset: 0,9 + - type: PhysicalComposition + materialComposition: + Eidolite: 100 + - type: StaticPrice + price: 500 + - type: Tag + tags: + - Wrench + - MantisBeltStorable + - MantisBoxRestraintsStorable + - type: GuideHelp + guides: [ MantisGuide ] diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Ammunition/Cells/casters.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Ammunition/Cells/casters.yml new file mode 100644 index 00000000000..255ff2e55f0 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Ammunition/Cells/casters.yml @@ -0,0 +1,450 @@ +# The cost of making these guns capable of being individually balanced, to the point of fine-tuning, is all this yaml... +# Damage values are in _DEN's projectiles.yml, values given by server direction + +# Base items +- type: entity + parent: [BaseItem, BaseMantisContraband] + id: BaseMantisCaster + abstract: true + components: + - type: Sprite + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o1 # Overridden by the max charge levels, noting that this layer disappears when the charge is depleted + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: Item + size: Small + - type: Battery # Nonlethal casters have the same maxCharge, and the fireCost varies per gun + pricePerJoule: 0 + maxCharge: 120 # One third of PowerCellSmall in case they accidentally plug into something + startingCharge: 120 # Not intended to be a particularly useful power source if so + - type: EmpImmune + - type: PowerCell + - type: Appearance + - type: PowerCellVisuals + - type: BatterySelfRecharger + autoRecharge: true # Takes 30 seconds to charge itself back to full, comparable to WeaponAdvancedLaser (but with special ammo that doesn't hurt player characters) + autoRechargeRate: 4 # If this needs balanced, consider adding autoRechargePause and autoRechargePauseTime instead of just lowering it + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCapgun # Inherited by BaseMantisCasterCapgun + fireCost: 24 # Can fire 5 times, takes 6 seconds to recharge 1 shot (shotgun values used here as an example) + - type: Tag + tags: + - MantisCaster + - MantisBeltStorable + +- type: entity + parent: BaseMantisCaster + id: BaseMantisCasterLethal # Variant base for the lethal versions - if they need to become disposable for balance, add the NoRecharge tag and adjust their TC costs + description: "A rock anomaly core harnessed as a self-replenishing ammo source. It forms diamond shards into lethal projectiles, each one perfectly faceted and catastrophically illegal. The caster is heavy and cold in the hand, as if it knows what it's for." + abstract: true + components: + - type: Battery + maxCharge: 600 # These have 5x the maxCharge so that they take 30 seconds to refill in a cell recharger, and good luck doing that under fire + startingCharge: 600 # The guns still fire as many times as usual, because lethal casters also have 5x the fireCost + - type: BatterySelfRecharger + autoRecharge: true # Takes 60 seconds to charge itself back to full, so it's useless for prolonged standoffs (use other weapons for those!) + autoRechargeRate: 10 # If this needs balanced, consider adding autoRechargePause and autoRechargePauseTime instead of just lowering it + +- type: entity + parent: BaseMantisCaster + id: BaseMantisCasterCapgun # Variant base without glowing bullets and a 3x longer recharge rate + description: "An exotic anomaly core harnessed as a self-replenishing ammo source. It generates harmless percussion caps suitable for drills and training. Despite the playful construction, the device still radiates the faint, uncanny energy of all anomaly tech." + abstract: true + components: + - type: Sprite + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o2 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: shaded + - type: BatterySelfRecharger + autoRechargeRate: 1 # Takes 2 minutes to charge itself back to full, so people aren't too annoying with the capguns + +- type: entity + parent: BaseMantisCaster + id: BaseMantisCasterPistol + abstract: true + components: + - type: Sprite + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o7 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: PowerCell + levels: 7 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCapgun + fireCost: 10 # Can fire 12 times, takes 2.5 seconds to recharge 1 shot + - type: Tag + tags: + - MantisCaster + - MantisCasterPistol + - MantisBeltStorable + +- type: entity + parent: BaseMantisCaster + id: BaseMantisCasterRevolver + abstract: true + components: + - type: Sprite + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o6 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: PowerCell + levels: 6 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCapgun + fireCost: 20 # Can fire 6 times, takes 5 seconds to recharge 1 shot + - type: Item + storedRotation: 90 + - type: Tag + tags: + - MantisCaster + - MantisCasterRevolver + - MantisBeltStorable + +- type: entity + parent: BaseMantisCaster + id: BaseMantisCasterShotgun + abstract: true + components: + - type: Sprite + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o5 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: PowerCell + levels: 5 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCapgun + fireCost: 24 # Can fire 5 times, takes 6 seconds to recharge 1 shot + - type: Item + storedRotation: 90 + - type: Tag + tags: + - MantisCaster + - MantisCasterShotgun + - MantisBeltStorable + +- type: entity + parent: BaseMantisCaster + id: BaseMantisCasterSubMachineGun + abstract: true + components: + - type: Sprite + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o8 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: PowerCell + levels: 8 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCapgun + fireCost: 5 # Can fire 24 times, takes 1.25 seconds to recharge 1 shot + - type: Tag + tags: + - MantisCaster + - MantisCasterSubMachineGun + - MantisBeltStorable + +# Cryptobiolin casters +- type: entity + parent: BaseMantisCasterPistol + id: MantisCasterPistolCrypto + name: pistol caster (silencing) + description: "A liquid anomaly core harnessed as a self-replenishing ammo source. Each bullet carries a measured droplet of cryptobiolin that dampens noospheric connection on contact, suppressing psionics for nearly two minutes per hit. A full magazine carries enough to last twenty minutes. Built to neutralize violent psions without causing harm." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-pistol-cryptobiolin.rsi + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCrypto + +- type: entity + parent: BaseMantisCasterRevolver + id: MantisCasterRevolverCrypto + name: revolver caster (silencing) + description: "A liquid anomaly core harnessed as a self-replenishing ammo source. Each bullet carries a measured droplet of cryptobiolin that dampens noospheric connection on contact, suppressing psionics for over three minutes per hit. A full cylinder carries enough to last twenty minutes. Built to neutralize violent psions without causing harm." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-revolver-cryptobiolin.rsi + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCryptoRevolver + +- type: entity + parent: BaseMantisCasterShotgun + id: MantisCasterShotgunCrypto + name: shotgun caster (silencing) + description: "A liquid anomaly core harnessed as a self-replenishing ammo source. Each blast disperses measured droplets of cryptobiolin that dampen noospheric connection on contact, suppressing psionics for forty seconds per pellet or four minutes per shot. A full cylinder carries enough to last twenty minutes. Built to neutralize violent psions without causing harm." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-shotgun-cryptobiolin.rsi + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCryptoSpread + +- type: entity + parent: BaseMantisCasterSubMachineGun + id: MantisCasterSubMachineGunCrypto + name: submachine gun caster (silencing) + description: "A liquid anomaly core harnessed as a self-replenishing ammo source. Each bullet carries a measured droplet of cryptobiolin that dampens noospheric connection on contact, suppressing psionics for over thirty seconds per hit. A full magazine carries enough to last twenty minutes. Built to neutralize violent psions without causing harm." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-submachinegun-cryptobiolin.rsi + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCryptoSubMachineGun + +# Holy casters +- type: entity + parent: BaseMantisCasterPistol + id: MantisCasterPistolHoly + name: pistol caster (banishing) + description: "A floral anomaly core harnessed as a self-replenishing ammo source. The bullets it manifests tear through supernatural threats without harming anything mundane. Called \"holy\" by laypeople--thanks to the chaplain--but \"metaphysical\" would be a more accurate description." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-pistol-holy.rsi + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisHoly + +- type: entity + parent: BaseMantisCasterRevolver + id: MantisCasterRevolverHoly + name: revolver caster (banishing) + description: "A floral anomaly core harnessed as a self-replenishing ammo source. The bullets it manifests tear through supernatural threats without harming anything mundane. Called \"holy\" by laypeople--thanks to the chaplain--but \"metaphysical\" would be a more accurate description." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-revolver-holy.rsi + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisHolyRevolver + +- type: entity + parent: BaseMantisCasterShotgun + id: MantisCasterShotgunHoly + name: shotgun caster (banishing) + description: "A floral anomaly core harnessed as a self-replenishing ammo source. The pellets it manifests tear through supernatural threats without harming anything mundane. Called \"holy\" by laypeople--thanks to the chaplain--but \"metaphysical\" would be a more accurate description." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-shotgun-holy.rsi + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisHolySpread + +- type: entity + parent: BaseMantisCasterSubMachineGun + id: MantisCasterSubMachineGunHoly + name: submachine gun caster (banishing) + description: "A floral anomaly core harnessed as a self-replenishing ammo source. The bullets it manifests tear through supernatural threats without harming anything mundane. Called \"holy\" by laypeople--thanks to the chaplain--but \"metaphysical\" would be a more accurate description." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-submachinegun-holy.rsi + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisHolySubMachineGun + +# Lethal casters (traitor items) +- type: entity + parent: [BaseRivalCompanyContraband, BaseMantisCasterLethal] + id: MantisCasterPistolLethal + name: pistol caster (piercing) + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-pistol-lethal.rsi + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o7 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: PowerCell + levels: 7 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisLethal + fireCost: 50 # Can fire 12 times, takes 5 seconds to recharge 1 shot + - type: Tag + tags: + - MantisCaster + - MantisCasterPistol + - MantisBeltStorable + +- type: entity + parent: [BaseRivalCompanyContraband, BaseMantisCasterLethal] + id: MantisCasterRevolverLethal + name: revolver caster (piercing) + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-revolver-lethal.rsi + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o6 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: PowerCell + levels: 6 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisLethalRevolver + fireCost: 100 # Can fire 6 times, takes 10 seconds to recharge 1 shot + - type: Item + storedRotation: 90 + - type: Tag + tags: + - MantisCaster + - MantisCasterRevolver + - MantisBeltStorable + +- type: entity + parent: [BaseRivalCompanyContraband, BaseMantisCasterLethal] + id: MantisCasterShotgunLethal + name: shotgun caster (piercing) + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-shotgun-lethal.rsi + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o5 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: PowerCell + levels: 5 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisLethalSpread + fireCost: 120 # Can fire 5 times, takes 12 seconds to recharge 1 shot + - type: Item + storedRotation: 90 + - type: Tag + tags: + - MantisCaster + - MantisCasterShotgun + - MantisBeltStorable + +- type: entity + parent: [BaseRivalCompanyContraband, BaseMantisCasterLethal] + id: MantisCasterSubMachineGunLethal + name: submachine gun caster (piercing) + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-submachinegun-lethal.rsi + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o8 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: unshaded + - type: PowerCell + levels: 8 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisLethalSubMachineGun + fireCost: 25 # Can fire 24 times, takes 2.5 seconds to recharge 1 shot + - type: Tag + tags: + - MantisCaster + - MantisCasterSubMachineGun + - MantisBeltStorable + +# Capgun casters +- type: entity + parent: BaseMantisCasterCapgun + id: MantisCasterPistolCapgun + name: pistol caster (training) + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-pistol-capgun.rsi + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o7 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: shaded + - type: PowerCell + levels: 7 + - type: ProjectileBatteryAmmoProvider + fireCost: 10 # Can fire 12 times, takes 10 seconds to recharge 1 shot + - type: Tag + tags: + - MantisCaster + - MantisCasterPistol + - MantisBeltStorable + +- type: entity + parent: BaseMantisCasterCapgun + id: MantisCasterRevolverCapgun + name: revolver caster (training) + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-revolver-capgun.rsi + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o6 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: shaded + - type: PowerCell + levels: 6 + - type: ProjectileBatteryAmmoProvider + fireCost: 20 # Can fire 6 times, takes 20 seconds to recharge 1 shot + - type: Item + storedRotation: 90 + - type: Tag + tags: + - MantisCaster + - MantisCasterRevolver + - MantisBeltStorable + +- type: entity + parent: BaseMantisCasterCapgun + id: MantisCasterShotgunCapgun + name: shotgun caster (training) + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-shotgun-capgun.rsi + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o5 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: shaded + - type: PowerCell + levels: 5 + - type: ProjectileBatteryAmmoProvider + proto: BulletMantisCapgunSpread + fireCost: 24 # Can fire 5 times, takes 24 seconds to recharge 1 shot + - type: Item + storedRotation: 90 + - type: Tag + tags: + - MantisCaster + - MantisCasterShotgun + - MantisBeltStorable + +- type: entity + parent: BaseMantisCasterCapgun + id: MantisCasterSubMachineGunCapgun + name: submachine gun caster (training) + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Ammunition/Magazine/Battery/Mantis/mantis-submachinegun-capgun.rsi + layers: + - state: base + map: [ "enum.PowerCellVisualLayers.Base" ] + - state: o8 + map: [ "enum.PowerCellVisualLayers.Unshaded" ] + shader: shaded + - type: PowerCell + levels: 8 + - type: ProjectileBatteryAmmoProvider + fireCost: 5 # Can fire 24 times, takes 5 seconds to recharge 1 shot + - type: Tag + tags: + - MantisCaster + - MantisCasterSubMachineGun + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml new file mode 100644 index 00000000000..17626f01bff --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -0,0 +1,234 @@ +- type: entity + parent: [BaseWeaponPowerCell, BaseMantisContraband] + id: BaseMantisRanged # Lorewise, they use altered and contained anomaly cores to generate physical ammo + abstract: true # But codewise, they're just battery guns that look and sound like they're shooting ballistics + components: + - type: Sprite + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-0 + map: ["enum.GunVisualLayers.Mag"] + - type: Item + size: Normal # Defaults to a 2x2 square + - type: Clothing + quickEquip: false + slots: + - suitStorage + - type: Gun + fireOnDropChance: 0.1 + soundEmpty: + path: /Audio/_DV/Weapons/Guns/Empty/dry_fire.ogg + params: + volume: -5 + variation: 0.05 + - type: MagazineVisuals + magState: mag + zeroVisible: true + - type: ItemSlots + slots: + gun_magazine: + name: Magazine + startingItem: null + whitelist: + tags: + - MantisCaster + - type: Execution + - type: MeleeWeapon + attackRate: 1.2 + damage: + types: + Blunt: 7.5 + wideAnimationRotation: 90 + soundHit: + collection: MetalThud + - type: ThrowingAngle + angle: -90 + angularVelocity: true + - type: Tag + tags: + - MantisBeltStorable + - type: GuideHelp + guides: [ MantisGuide ] + +- type: entity + parent: BaseMantisRanged + id: MantisRangedPistol + name: OCC-P12 "Kalliste" + description: "A sleek mantis sidearm favored for its balance and effortless precision. It uses specialized magazines called \"casters,\" each containing an anomaly core that continually forms its own bullets. Issued with both banishing and silencing casters for confronting supernatural threats and rogue psions. Designed for the Outer Chamber Crucible by special commission." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-pistol.rsi + - type: Item + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-pistol.rsi + size: Small + shape: + - 0,0,1,0 + - 0,1,0,1 + - type: Clothing + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-pistol.rsi + slots: + - Belt + - suitStorage + - type: Gun + fireRate: 5 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/pistol.ogg + params: + volume: -1 + - type: MagazineVisuals + steps: 13 + - type: ItemSlots + slots: + gun_magazine: + name: Magazine + startingItem: MantisCasterPistolHoly + insertSound: /Audio/Weapons/Guns/MagIn/pistol_magin.ogg + ejectSound: /Audio/Weapons/Guns/MagOut/pistol_magout.ogg + whitelist: + tags: + - MantisCasterPistol + - type: Tag + tags: + - Sidearm + - MantisBeltStorable + +- type: entity + parent: BaseMantisRanged + id: MantisRangedRevolver + name: OCC-P06 "Charon" + description: "A gilded mantis revolver engineered for measured control and heavy, deliberate impact. It uses specialized cylinders called \"casters,\" each containing an anomaly core that continually forms its own bullets. Issued with both banishing and silencing casters for confronting supernatural threats and rogue psions. Designed for the Outer Chamber Crucible by special commission." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-revolver.rsi + - type: Item + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-revolver.rsi + size: Small + shape: + - 0,0,1,0 + - 0,1,0,1 + - type: Clothing + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-revolver.rsi + slots: + - Belt + - suitStorage + - type: Gun + fireRate: 2 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/revolver.ogg + params: + volume: -1 + - type: MagazineVisuals + steps: 7 + - type: ItemSlots + slots: + gun_magazine: + name: Magazine + startingItem: MantisCasterRevolverHoly + insertSound: /Audio/Weapons/Guns/Misc/revolver_spin.ogg + ejectSound: /Audio/Weapons/Guns/MagOut/ltrifle_magout.ogg + whitelist: + tags: + - MantisCasterRevolver + - type: Tag + tags: + - Sidearm + - MantisBeltStorable + +- type: entity + parent: BaseMantisRanged + id: MantisRangedShotgun + name: OCC-S05 "Empusa" + description: "A vicious sawn-off mantis shotgun designed to dominate close-range encounters. It uses specialized cylinders called \"casters,\" each containing an anomaly core that continually forms its own pellets. Issued with both banishing and silencing casters for confronting supernatural threats and rogue psions. Designed for the Outer Chamber Crucible by special commission." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-shotgun.rsi + - type: Item + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-shotgun-inhands-64x.rsi + size: Normal + shape: + - 0,0,2,1 # 3x2 rectangle + - type: Clothing + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-shotgun.rsi + slots: + - Back + - suitStorage + - type: Gun + fireRate: 2 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/shotgun.ogg + params: + volume: -1 + - type: MagazineVisuals + steps: 6 + - type: ItemSlots + slots: + gun_magazine: + name: Magazine + startingItem: MantisCasterShotgunHoly + insertSound: /Audio/Weapons/Guns/Misc/revolver_spin.ogg + ejectSound: /Audio/Weapons/Guns/MagOut/sfrifle_magout.ogg + whitelist: + tags: + - MantisCasterShotgun + - type: MeleeWeapon + attackRate: 1.3333 + damage: + types: + Blunt: 9 + - type: Tag + tags: + - MantisBeltStorable + +- type: entity + parent: BaseMantisRanged + id: MantisRangedSubMachineGun + name: OCC-A24 "Strix" + description: "A compact, fast-cycling mantis submachine gun built for relentless fire in tight spaces. It uses specialized magazines called \"casters,\" each containing an anomaly core that continually forms its own bullets. Issued with both banishing and silencing casters for confronting supernatural threats and rogue psions. Designed for the Outer Chamber Crucible by special commission." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-submachinegun.rsi + - type: Item + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-submachinegun.rsi + size: Normal + shape: + - 0,0,2,1 # 3x2 rectangle + - type: Clothing + sprite: _DEN/Objects/Weapons/Guns/Battery/Mantis/mantis-submachinegun.rsi + slots: + - Back + - suitStorage + - type: Gun + fireRate: 8 + burstFireRate: 8 + minAngle: 6 + maxAngle: 18 + angleIncrease: 10 + angleDecay: 10 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/smg.ogg + params: + volume: -1 + - type: MagazineVisuals + steps: 37 + - type: ItemSlots + slots: + gun_magazine: + name: Magazine + startingItem: MantisCasterSubMachineGunHoly + insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg + ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg + whitelist: + tags: + - MantisCasterSubMachineGun + - type: MeleeWeapon + attackRate: 1.3333 + damage: + types: + Blunt: 9 + - type: Tag + tags: + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Projectiles/impacts.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Projectiles/impacts.yml new file mode 100644 index 00000000000..6a5365e2099 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Projectiles/impacts.yml @@ -0,0 +1,77 @@ +# Mantis impacts start +- type: entity + parent: BulletImpactEffect + id: BulletImpactEffectMantisCapgun + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.18 + - type: Sprite + layers: + - sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + state: impact_capgun + map: ["enum.EffectLayers.Unshaded"] + shader: unshaded + - type: PointLight + enabled: true + radius: 1.5 + energy: 1.0 + color: "#ffb869" + +- type: entity + parent: BulletImpactEffect + id: BulletImpactEffectMantisCrypto + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.18 + - type: Sprite + layers: + - sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + state: impact_crypto + map: ["enum.EffectLayers.Unshaded"] + shader: unshaded + - type: PointLight + enabled: true + radius: 1.5 + energy: 1.0 + color: "#6279f9" + +- type: entity + parent: BulletImpactEffect + id: BulletImpactEffectMantisHoly + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.18 + - type: Sprite + layers: + - sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + state: impact_holy + map: ["enum.EffectLayers.Unshaded"] + shader: unshaded + - type: PointLight + enabled: true + radius: 1.5 + energy: 1.0 + color: "#88b0d0" + +- type: entity + parent: BulletImpactEffect + id: BulletImpactEffectMantisLethal + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.18 + - type: Sprite + layers: + - sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + state: impact_lethal + map: ["enum.EffectLayers.Unshaded"] + shader: unshaded + - type: PointLight + enabled: true + radius: 1.5 + energy: 1.0 + color: "#44fbf7" +# Mantis impacts end diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml new file mode 100644 index 00000000000..5f4b56285ef --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -0,0 +1,377 @@ +# Mantis projectiles start +# Muzzle flashes +- type: entity + parent: MuzzleFlashEffect + id: MuzzleFlashEffectMantisCapgun + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.4 + - type: Sprite + drawdepth: Effects + offset: 0.1, 0 + layers: + - sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + state: muzzle_capgun + map: ["enum.EffectLayers.Unshaded"] + shader: unshaded + - type: PointLight + enabled: true + radius: 2 + energy: 3 + color: "#ffb869" + +- type: entity + parent: MuzzleFlashEffect + id: MuzzleFlashEffectMantisCrypto + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.4 + - type: Sprite + drawdepth: Effects + offset: 0.1, 0 + layers: + - sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + state: muzzle_crypto + map: ["enum.EffectLayers.Unshaded"] + shader: unshaded + - type: PointLight + enabled: true + radius: 2 + energy: 3 + color: "#6279f9" + +- type: entity + parent: MuzzleFlashEffect + id: MuzzleFlashEffectMantisHoly + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.4 + - type: Sprite + drawdepth: Effects + offset: 0.1, 0 + layers: + - sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + state: muzzle_holy + map: ["enum.EffectLayers.Unshaded"] + shader: unshaded + - type: PointLight + enabled: true + radius: 2 + energy: 3 + color: "#88b0d0" + +- type: entity + parent: MuzzleFlashEffect + id: MuzzleFlashEffectMantisLethal + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.4 + - type: Sprite + drawdepth: Effects + offset: 0.1, 0 + layers: + - sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + state: muzzle_lethal + map: ["enum.EffectLayers.Unshaded"] + shader: unshaded + - type: PointLight + enabled: true + radius: 2 + energy: 3 + color: "#44fbf7" + +# Capgun bullets +- type: entity + parent: BaseBullet + id: BulletMantisCapgun + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + layers: + - state: bullet_capgun + - type: Ammo + muzzleFlash: MuzzleFlashEffectMantisCapgun # Big fiery flash + - type: Projectile + impactEffect: BulletImpactEffectMantisCapgun # Silly little sparkle + damage: + types: + Piercing: 0 + soundHit: + path: /Audio/_DEN/Weapons/Guns/Hits/bwomp.ogg + params: + variation: 0.05 + +- type: entity + parent: BulletMantisCapgun + id: BulletMantisCapgunSpread + categories: [ HideSpawnMenu ] + components: + - type: ProjectileSpread + proto: BulletMantisCapgun + count: 6 + spread: 20 + +# Pistol bullets, the rest are parented to these with damage/transfer amounts adjusted +# Initial piercing/holy damage values chosen by direction, may need work +- type: entity + parent: BaseBullet + id: BaseBulletMantis + categories: [ HideSpawnMenu ] + abstract: true + components: + - type: Fixtures + fixtures: + projectile: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.1,0.1,0.1" + hard: false + mask: + - Impassable + - BulletImpassable + - Opaque + fly-by: &flybyfixture + shape: !type:PhysShapeCircle + radius: 1.5 + layer: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - Opaque + hard: False + +- type: entity + parent: BaseBulletMantis + id: BulletMantisCrypto + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + layers: + - state: bullet_crypto + shader: unshaded + - type: PointLight + enabled: true + radius: 1.75 + energy: 1.75 + color: "#6279f9" + - type: Ammo + muzzleFlash: MuzzleFlashEffectMantisCrypto + - type: Projectile + impactEffect: BulletImpactEffectMantisCrypto + damage: + types: + Piercing: 0 + soundHit: + path: /Audio/_DEN/Weapons/Guns/Hits/hyposhot.ogg + params: + variation: 0.05 + - type: ChemicalAmmo + - type: SolutionContainerManager + solutions: + ammo: + reagents: + - ReagentId: Cryptobiolin + Quantity: 5 + - type: SolutionInjectOnProjectileHit + solution: ammo + transferAmount: 5 # 5u of crypto disables psionics for 1m40s, and a full magazine of any mantis gun will disable psionics for 20m + +- type: entity + parent: BaseBulletMantis + id: BulletMantisHoly + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + layers: + - state: bullet_holy + shader: unshaded + - type: PointLight + enabled: true + radius: 1.75 + energy: 1.75 + color: "#88b0d0" + - type: Ammo + muzzleFlash: MuzzleFlashEffectMantisHoly + - type: Projectile + impactEffect: BulletImpactEffectMantisHoly + damage: + types: + Holy: 10 + soundHit: + path: /Audio/_DEN/Weapons/Guns/Hits/burnshot.ogg + params: + variation: 0.05 + +- type: entity + parent: BaseBulletMantis + id: BulletMantisLethal + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Guns/Projectiles/mantis.rsi + layers: + - state: bullet_lethal + shader: unshaded + - type: PointLight + enabled: true + radius: 1.75 + energy: 1.75 + color: "#44fbf7" + - type: Ammo + muzzleFlash: MuzzleFlashEffectMantisLethal + - type: Projectile + impactEffect: BulletImpactEffectMantisLethal + damage: + types: + Piercing: 15 + soundHit: + path: /Audio/Weapons/Guns/Hits/bullet_hit.ogg + params: + variation: 0.05 + +# Revolver bullets +- type: entity + parent: BulletMantisCrypto + id: BulletMantisCryptoRevolver + categories: [ HideSpawnMenu ] + components: + - type: SolutionContainerManager + solutions: + ammo: + reagents: + - ReagentId: Cryptobiolin + Quantity: 10 + - type: SolutionInjectOnProjectileHit + solution: ammo + transferAmount: 10 # 10u of crypto disables psionics for 3m20s, and a full magazine of any mantis gun will disable psionics for 20m + +- type: entity + parent: BulletMantisHoly + id: BulletMantisHolyRevolver + categories: [ HideSpawnMenu ] + components: + - type: Projectile + damage: + types: + Holy: 30 + +- type: entity + parent: BulletMantisLethal + id: BulletMantisLethalRevolver + categories: [ HideSpawnMenu ] + components: + - type: Projectile + damage: + types: + Piercing: 36 + +# Shotgun bullets +- type: entity + parent: BulletMantisCrypto + id: BulletMantisCryptoShotgun + categories: [ HideSpawnMenu ] + components: + - type: SolutionContainerManager + solutions: + ammo: + reagents: + - ReagentId: Cryptobiolin + Quantity: 2 + - type: SolutionInjectOnProjectileHit + solution: ammo + transferAmount: 2 # 2u of crypto disables psionics for 40s, and a full magazine of any mantis gun will disable psionics for 20m + +- type: entity + parent: BulletMantisCryptoShotgun + id: BulletMantisCryptoSpread + categories: [ HideSpawnMenu ] + components: + - type: ProjectileSpread + proto: BulletMantisCryptoShotgun + count: 6 # 12u of crypto disables psionics for 4m, and a full magazine of any mantis gun will disable psionics for 20m + spread: 20 + +- type: entity + parent: BulletMantisHoly + id: BulletMantisHolyShotgun + categories: [ HideSpawnMenu ] + components: + - type: Projectile + damage: + types: + Holy: 8 + +- type: entity + parent: BulletMantisHolyShotgun + id: BulletMantisHolySpread + categories: [ HideSpawnMenu ] + components: + - type: ProjectileSpread + proto: BulletMantisHolyShotgun + count: 6 + spread: 20 + +- type: entity + parent: BulletMantisLethal + id: BulletMantisLethalShotgun + categories: [ HideSpawnMenu ] + components: + - type: Projectile + damage: + types: + Piercing: 9 + +- type: entity + parent: BulletMantisLethalShotgun + id: BulletMantisLethalSpread + categories: [ HideSpawnMenu ] + components: + - type: ProjectileSpread + proto: BulletMantisLethalShotgun + count: 6 + spread: 20 + +# Submachine gun bullets +- type: entity + parent: BulletMantisCrypto + id: BulletMantisCryptoSubMachineGun + categories: [ HideSpawnMenu ] + components: + - type: SolutionContainerManager + solutions: + ammo: + reagents: + - ReagentId: Cryptobiolin + Quantity: 2.5 + - type: SolutionInjectOnProjectileHit + solution: ammo + transferAmount: 2.5 # 2.5u of crypto disables psionics for 50s, and a full magazine of any mantis gun will disable psionics for 20m + +- type: entity + parent: BulletMantisHoly + id: BulletMantisHolySubMachineGun + categories: [ HideSpawnMenu ] + components: + - type: Projectile + damage: + types: + Holy: 8 + +- type: entity + parent: BulletMantisLethal + id: BulletMantisLethalSubMachineGun + categories: [ HideSpawnMenu ] + components: + - type: Projectile + damage: + types: + Piercing: 12 +# Mantis projectiles end diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/baseantipsionic.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/baseantipsionic.yml new file mode 100644 index 00000000000..d0f48cc517c --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/baseantipsionic.yml @@ -0,0 +1,73 @@ +# SPDX-FileCopyrightText: 2025 Shaman +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +# I'm sick of adding this component to every mantis weapon so I'm making a base item for it +# I've included notes on anti-psionic weapon design here if you want to make something with it, because the system is unintuitive +- type: entity + parent: [BaseItem] #BaseObjectVerbsCuteness] - commented out until interaction verbs are readded + # See MantisMeleeKnife if you need an implementation example, that's the flagship anti-psionic weapon + # Anti-psionic weapons are always made of MaterialMnemolith and use that palette in the fashion you see there + id: BaseAntiPsionicWeapon + abstract: true + # I treat the mantis's anti-psionic weapons like occult relics, so I tend to give them unique names (athame, manifold, gnomon, faust, etc.) + # Add "Deadly when wielded against psionic or otherworldly threats." to the end of anti-psionic weapon descriptions, because the damage tooltip doesn't say it + components: +# - type: AntiPsionicWeapon # restore with psionic system +# punish: false +# # Normally false, unless you're making a special weapon that you want to stun its user when they hit anything non-psionic (see MantisMeleeGreatsword) +# # I've included common damage types below, but if a weapon doesn't do a certain type of damage, this obviously won't multiply it +# # Brute damage from the mnemolith itself, burn damage from psionic forms of energy (like psionic fire), holy represents metaphysical power +# # A standard anti-psionic weapon is 25% stronger against psionic enemies across the board, so it's predictable and players don't have to guess +# # This includes supernatural enemies, which are (or should be) "psionic" for the purpose of being weak to these weapons, despite not having any abilities +# modifiers: +# coefficients: +# Blunt: 1.25 +# Slash: 1.25 +# Piercing: 1.25 +# Heat: 1.25 +# Cold: 1.25 +# Holy: 1.25 +# # The values here will get overridden if it's a real weapon, of course, but if it's ever a problem just comment this component out +# # Most anti-psionic weapons have a 0.6666 attack rate and DPS equal to CombatKnife against non-psions +# # To calculate DPS (which I like to compare to existing items and note in the comments) just divide the Damage by the AttackRate +# # A standard anti-psionic weapon does holy damage that's equal to half of its total physical damage +# # For WideAnimationRotation, enter the degrees that make the sprite point downward on its canvas (counterclockwise is positive) + - type: MeleeWeapon + # attackRate: .6666 + # wideAnimationRotation: 0 + damage: + types: + Slash: 1 + Holy: 0.5 + # DamageOtherOnHit makes it strike things when thrown, inheriting MeleeWeapon damage if you don't specify within this component + # ThrowingAngle follows the same rules as WideAnimationRotation (point the sprite downward) + # LandAtCursor just makes these items go slightly past where you throw them, instead of landing just short + # Set AngularVelocity to true if you want the item to rotate when thrown + - type: DamageOtherOnHit + # - type: ThrowingAngle + # angle: 0 + - type: LandAtCursor + - type: ThrowingAngle + angularVelocity: false + # Probably a good idea to have this here too + # It'd be nice to have a guidebook just for anti-psionic weapons though + - type: GuideHelp + guides: [ MantisGuide ] + +# And here's one for items that are made of mnemolith but aren't specifically weapons, like PaperMantis +# They inherit the above so they barely hurt, and slash was selected as default because mnemolith is a sharp, crystalline stone +# Their damage values are hidden, you can only wideswing them, and they only hit one person since it's more for flavor than fighting +- type: entity + parent: BaseAntiPsionicWeapon + id: BaseAntiPsionicObject + abstract: true + components: + - type: MeleeWeapon + hidden: true + disableClick: true + heavyRateModifier: 1 + heavyRangeModifier: 1 + heavyDamageBaseModifier: 1 + heavyStaminaCost: 0 + maxTargets: 1 diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/cane.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/cane.yml new file mode 100644 index 00000000000..9324df8e5e4 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/cane.yml @@ -0,0 +1,112 @@ +# SPDX-FileCopyrightText: 2025 Steven Higginbotham +# SPDX-FileCopyrightText: 2025 portfiend +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +- type: entity + parent: [CaneBase, BaseAntiPsionicWeapon, BaseMantisContraband] + id: MantisMeleeCane + name: gnomon + description: "An amaranth cane crowned with an eidolite crystal. If flipped in the hand, the needle-sharp mnemolith tip serves as a thrusting weapon. A refined accessory, practical for mantes with limited mobility. Deadly when wielded against psionic and otherworldly threats." + components: + - type: Item + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantiscane.rsi + size: Normal + shape: + - 0,0,1,1 # To override the default cane size + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantiscane.rsi + layers: + - state: icon + map: ["icon"] + - state: icon-raised + map: ["icon-raised"] + visible: false + - type: Appearance + - type: ToggleableVisuals + replaceMode: true + spriteLayer: icon-raised + inhandVisuals: + left: + - state: raised-inhand-left + map: ["left-raised"] + right: + - state: raised-inhand-right + map: ["right-raised"] + - type: GenericVisualizer + visuals: + enum.ToggleableVisuals.Enabled: + icon: + True: { visible: false } + False: { visible: true } + icon-raised: + True: { visible: true } + False: { visible: false } + - type: ItemToggle + verbToggleOn: item-toggle-raise + verbToggleOff: item-toggle-lower + predictable: false + soundActivate: + path: /Audio/_DEN/Weapons/Melee/rapiermiss.ogg + params: + volume: -5 + pitch: 1.1 + variation: 0.05 + soundDeactivate: + path: /Audio/_DEN/Weapons/Melee/rapiermiss.ogg + params: + volume: -5 + pitch: 0.9 + variation: 0.05 + - type: ItemToggleMeleeWeapon + activatedDamage: + types: # If you flip it, you stab them with the point + Piercing: 10 # 15 DPS (same as CombatKnife), or 18.75 DPS against psions + Holy: 5 # 28.13 total DPS against psionic supernaturals + activatedSoundOnHit: + path: /Audio/Weapons/Melee/rapierhit.ogg + params: + variation: 0.05 + activatedSoundOnHitNoDamage: + path: /Audio/_DEN/Weapons/Melee/rapiermiss.ogg + params: + variation: 0.05 + activatedSoundOnSwing: + path: /Audio/_DEN/Weapons/Melee/rapiermiss.ogg + params: + variation: 0.05 + deactivatedSoundOnHit: + collection: WeakHit + params: + variation: 0.05 + deactivatedSoundOnHitNoDamage: + collection: WeakHit + params: + variation: 0.05 + - type: UseDelay + delay: 0.5 # Just a small one so you don't hit it twice accidentally + - type: MeleeWeapon + attackRate: .6666 + wideAnimationRotation: -135 + damage: + types: # If you don't flip it, you just bonk them + Blunt: 5 # 7.5 DPS (same as Crowbar) +# - type: AntiPsionicWeapon # To override the +25% blunt damage against psions, because the bonking part isn't made of mnemolith # restore with psionic system +# modifiers: +# coefficients: +# Piercing: 1.25 +# Holy: 1.25 + - type: ItemToggleDamageOtherOnHit + - type: ItemToggleEmbeddableProjectile + activatedEmbedOnThrow: true + activatedSound: /Audio/Weapons/star_hit.ogg + activatedRemovalTime: 2 + - type: ItemToggleEmbedPassiveDamage + - type: ThrowingAngle + angle: -135 + - type: StaminaDamageOnHit + damage: 0 + - type: Tag + tags: + - MantisCane + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/knife.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/knife.yml index ef426f26e2d..f99b2402398 100644 --- a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/knife.yml +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/knife.yml @@ -1,23 +1,163 @@ - type: entity parent: BaseKnife + id: BaseKnifeSpinnable # Don't use this for items that actually do something mechanical when you press Z, and you have to make the animated sprites yourself + abstract: true + components: + - type: Sprite + state: icon + - type: ItemToggle # You can toggle spinning it around your finger, though it's just cosmetic + verbToggleOn: item-toggle-spin + verbToggleOff: item-toggle-catch + predictable: false + soundActivate: + path: /Audio/Effects/toss.ogg # Spin + params: + volume: -6 + pitch: 1.1 # I'm using 1.1 for normal knives, 0.9 for large knives, and 1.3 for tiny knives + variation: 0.05 + soundDeactivate: + path: /Audio/Effects/weak_hit2.ogg # Catch + params: + volume: -9 + pitch: 1.1 # Same as above + variation: 0.05 + - type: UseDelay + delay: 0.5 # This is just under one spin animation, presuming it has 8 frames that are 0.07 delay each, so you can spam Z to spin it exactly one time + - type: Appearance + - type: ToggleableVisuals + spriteLayer: null # Spinning it only changes the inhand sprites + replaceMode: true # The original inhand sprites won't remain visible when toggled + inhandVisuals: + left: + - state: spinning-inhand-left + right: + - state: spinning-inhand-right + +- type: entity + parent: [BaseKnifeSpinnable, BaseKnife] id: TailorsKnife name: tailor's knife - description: A simple, wedge-shaped knife designed to cut fabric. Short, narrow, and lacking a grip entirely. + description: "A simple, wedge-shaped knife designed to cut fabric. The hole in the handle is just big enough to spin it around your finger, though this serves no purpose." components: - - type: Tag - tags: - - Knife - - type: MeleeWeapon # You'd be better off punching them - attackRate: 1 + - type: ItemToggle + soundActivate: + path: /Audio/Effects/toss.ogg # Spin + params: + volume: -6 + pitch: 1.3 + variation: 0.05 + soundDeactivate: + path: /Audio/Effects/weak_hit2.ogg # Catch + params: + volume: -9 + pitch: 1.3 + variation: 0.05 + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/tailorsknife.rsi + - type: Item + sprite: _DEN/Objects/Weapons/Melee/tailorsknife.rsi + - type: MeleeWeapon # Shiv stats + wideAnimationRotation: 180 + attackRate: .9 + heavyRateModifier: 1.5 + heavyDamageBaseModifier: 1.1 + range: 1.4 damage: types: - Slash: 1 + Slash: 5.5 + - type: EmbeddableProjectile + removalTime: 2 + - type: LandAtCursor - type: DisarmMalus malus: 0.225 - type: ThrowingAngle angle: 180 + +- type: entity + parent: [TailorsKnife, BaseAntiPsionicWeapon] + id: MantisTailorsKnife + name: ravel + description: "A mnemolith tailor's knife, presumably stolen from whoever designed these new uniforms. You rat. The hole in the handle is just big enough to spin it around your finger, though this serves no purpose." + components: - type: Sprite - sprite: _DEN/Objects/Weapons/Melee/tailorsknife.rsi - state: icon + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantistailorsknife.rsi - type: Item - sprite: _DEN/Objects/Weapons/Melee/tailorsknife.rsi + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantistailorsknife.rsi + - type: MeleeWeapon + damage: + types: + Slash: 5.5 # 6.11 DPS (same as Shiv), or 7.64 DPS against psions (same as Crowbar) + Holy: 2.75 # 11.25 total DPS against psionic supernaturals + - type: Tag + tags: + - Knife + - MantisBeltStorable + +- type: entity + parent: [BaseKnifeSpinnable, CombatKnife, BaseAntiPsionicWeapon, BaseMantisContraband] + id: MantisMeleeKnife + name: athame + description: "A mnemolith knife shaped like a claw, its back lined with swordbreaker teeth--though it remains unclear who, exactly, is drawing blades against mantes. The finger ring improves grip and allows for idle spinning tricks, though they serve no tactical purpose. Deadly when wielded against psionic and otherworldly threats." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisknife.rsi + - type: Item + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisknife.rsi + storedSprite: null # To override CombatKnife + - type: MeleeWeapon + attackRate: .6666 + angle: 40 # Standard knife swing, here for reference + damage: + types: + Slash: 10 # 15 DPS (same as CombatKnife), or 18.75 DPS against psions + Holy: 5 # 28.13 total DPS against psionic supernaturals + - type: DisarmMalus + malus: 0.3 # A third harder to disarm than CombatKnife due to the finger ring + - type: Tag + tags: + - Knife + - MantisKnife + - MantisBeltStorable + +- type: entity + parent: [BaseKnifeSpinnable, CombatKnife, BaseAntiPsionicWeapon, BaseMantisContraband] + id: MantisMeleeSickle + name: boline + description: "A heavy mnemolith sickle set with an eidolite eye, crafted as the athame's more savage counterpart, suited for sweeping, methodical strikes. The finger ring allows for idle spinning tricks, though they serve no tactical purpose. Deadly when wielded against psionic and otherworldly threats." + components: + - type: ItemToggle + soundActivate: + path: /Audio/Effects/toss.ogg # Spin + params: + volume: -6 + pitch: 0.9 + variation: 0.05 + soundDeactivate: + path: /Audio/Effects/weak_hit2.ogg # Catch + params: + volume: -9 + pitch: 0.9 + variation: 0.05 + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantissickle.rsi + - type: Item + size: Normal + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantissickle-inhands-64x.rsi + storedSprite: null # To override CombatKnife + - type: MeleeWeapon + attackRate: 1.3333 # Twice as slow as the athame, but twice the damage, so same DPS + angle: 60 # Swings a little wider wider than the athame, but easier to disarm + damage: + types: + Slash: 20 # 15 DPS (same as CombatKnife), or 18.75 DPS against psions + Holy: 10 # 28.13 total DPS against psionic supernaturals + - type: DisarmMalus + malus: 0.1125 # Half as hard to disarm as CombatKnife, too big for the finger ring to help + - type: MeleeThrowOnHit # Just a tiny knockback to look cool, barely moves anything + speed: 3 + lifetime: 0.025 + - type: Tag + tags: + - Knife + - MantisSickle + - MantisBeltStorable diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/knuckles.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/knuckles.yml new file mode 100644 index 00000000000..cba0dec358b --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/knuckles.yml @@ -0,0 +1,103 @@ +# SPDX-FileCopyrightText: 2025 Steven Higginbotham +# SPDX-FileCopyrightText: 2025 portfiend +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +- type: entity + parent: [ClothingHandsInedibleBase, BaseFoldable, BaseAntiPsionicWeapon, BaseMantisContraband] + id: MantisMeleeFist + name: manifold + description: "A heavy mnemolith gauntlet designed for control rather than sheer lethality, capable of hurling foes back and, at times, deflecting incoming fire. Said to take its name from its capacity for folding men, and its clever design allows it to be worn on either hand. Deadly when wielded against psionic and otherworldly threats." + components: + - type: Foldable + canFoldInsideContainer: true + foldVerbText: fold-flip-verb + unfoldVerbText: fold-flip-verb + - type: FoldableClothing + foldedEquippedPrefix: flipped + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisfist.rsi + layers: + - state: icon + map: ["unfoldedLayer"] + - state: icon-flipped + map: ["foldedLayer"] + visible: false + - type: Appearance + - type: Item + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisfist.rsi + size: Normal + - type: Clothing + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisfist.rsi + - type: MeleeWeapon + bluntStaminaDamageFactor: 1.25 # Stuns in 6 hits (which takes 6 seconds) + attackRate: 1.0 # A bit slower than the other weapons + range: 1.5 + angle: 60 + damage: + types: + Blunt: 12 # 12 DPS, or 15 DPS against psions (same as CombatKnife) + Holy: 6 # 22.5 total DPS against psionic supernaturals + Structural: 7.5 # 5 structural DPS + soundHit: + path: /Audio/_Impstation/Weapons/nullglove.ogg + params: + variation: 0.15 + animation: WeaponArcPunch + wideAnimation: WeaponArcSmash + mustBeEquippedToUse: true + - type: MeleeThrowOnHit # They fly about six tiles and don't take extra impact damage when hitting walls + speed: 10 + lifetime: 0.5 + - type: Reflect + reflectProb: .2 + spread: 135 + - type: Fiber + fiberColor: fibers-bluish + fiberMaterial: fibers-stony + - type: Prying + speedModifier: 1 + useSound: + path: /Audio/Items/crowbar.ogg + - type: Tag + tags: + - WhitelistChameleon + - MantisFist + - MantisBeltStorable + +- type: entity # So chameleon clothes can select the folded sprite + parent: MantisMeleeFist + id: MantisMeleeFistFlipped + suffix: Flipped + components: + - type: Foldable + folded: true + - type: Clothing + equippedPrefix: flipped + +- type: entity + parent: [BaseRivalCompanyContraband, MantisMeleeFist] # Traitor version, loosely comparable to BaseBallBatHomeRun, but with less damage and knockback because it's wearable + id: MantisMeleeFistDouble + name: twinned manifold + description: "Heavy mnemolith gauntlets forged through forbidden rituals, capable of hurling foes back and, at times, deflecting incoming fire. Said to take their name from their capacity for folding men. Deadly when wielded against psionic and otherworldly threats." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisfistdouble.rsi + state: icon + - type: Clothing + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisfistdouble.rsi + - type: MeleeWeapon + bluntStaminaDamageFactor: 1.35 # Stuns in 5 hits (which takes 5 seconds, compared to BaseBallBatHomeRun's 4.5) + damage: + types: + Blunt: 15 # 15 DPS (same as CombatKnife), or 18.75 DPS against psions + Holy: 7.5 # 28.13 total DPS against psionic supernaturals + Structural: 11.25 # 7.5 structural DPS (same as BaseBallBat) + - type: MeleeThrowOnHit # They just go sailing and do hit walls hard enough to hurt (still only 2/3rds as fast as BaseBallBatHomeRun) + speed: 20 + lifetime: 5 + - type: FingerprintMask # Both hands are covered, so they hide fingerprints + - type: Prying + speedModifier: 1.5 + useSound: + path: /Audio/Items/crowbar.ogg diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/sword.yml new file mode 100644 index 00000000000..bf8fcf4849d --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Weapons/Melee/sword.yml @@ -0,0 +1,226 @@ +- type: entity # Please expect this to need rebalancing... + parent: [BaseSword, BaseAntiPsionicWeapon, BaseMantisContraband] + id: MantisMeleeGreatsword # The risk/reward option, highly likely to knock you on your ass and get you killed, extremely difficult to use effectively + name: Faust # Part of the reason it's so punishing, aside from the challenge, is because antags could possibly use it against psions - it needs to be unreliable + description: "A mnemolith greatsword whose unstable resonance makes it treacherous to wield. Faust rebounds violently from any impact that does not strike a psion, whipping back into its bearer even if it merely grazes a wall. It must be properly wielded--without absolute focus, the blade resists. Unmatched against psionic and otherworldly threats, perilous against anything else." + components: # Yes the description is long, but players must understand how it works from description alone, and I want it to remain in-universe + - type: Grammar # Faust is its name + attributes: + proper: true +# - type: AntiPsionicWeapon # restore with psionic system +# punish: true # It'll hurt you if you hit anything non-psionic (a mouse, a wall, etc.) +# punishChances: 1 # Every time +# punishSelfDamage: 35 # It hits you as hard as you would've hit a psion, because you're psionic +# punishStunDuration: 5 # And it stuns you like a noospheric storm + - type: MeleeRequiresWield + fumbleOnAttempt: true # It'll also stun you if you try to swing it one-handed + - type: Wieldable + wieldSound: + path: /Audio/_DEN/Weapons/Melee/faustwield.ogg + params: + volume: -2 + variation: 0.05 + unwieldSound: + path: /Audio/_DEN/Weapons/Melee/faustunwield.ogg + params: + volume: -2 + variation: 0.05 + - type: MeleeWeapon + attackRate: 1.5 + range: 1.85 + angle: 90 + maxTargets: 10 # When you see a stat that looks good, just remember that if you hit anything non-psionic, you lose + heavyRateModifier: 1 # Same speed + heavyRangeModifier: 1 # Same range + heavyDamageBaseModifier: 1 # Same damage + heavyStaminaCost: 30 # Also you can't spam them or you'll fall over + damage: + types: + Slash: 28 # 18.66 DPS (same as CaptainSabre), or 23.33 DPS against psions (but if you miss, it hits you hard) + Holy: 20 # 40 total DPS against psionic supernaturals (no way are you landing every left click on a simplemob) + Structural: 30 # 20 structural DPS (but it'll only hurt psionic objects since it can't be thrown) + soundHit: + path: /Audio/_DEN/Weapons/Melee/fausthit.ogg + params: + volume: -2 + variation: 0.05 + soundSwing: + path: /Audio/_DEN/Weapons/Melee/faustmiss.ogg + params: + volume: -2 + variation: 0.05 + soundNoDamage: + path: /Audio/_DEN/Weapons/Melee/fausthit.ogg + params: + volume: -2 + variation: 0.05 + - type: DamageOtherOnHit # Unfortunately, throwing Faust still lets it severely injure non-psions at no risk to its wielder + staminaCost: 150 # But it's more flavorful to make it too heavy even for an oni with Vigor to throw + - type: EmbeddableProjectile # But if you trip and it stabs you, that's your own fault + sound: + path: /Audio/_DEN/Weapons/Melee/fausthit.ogg + params: + volume: -2 + variation: 0.05 + removalTime: 2 + - type: EmbedPassiveDamage + - type: EmitSoundOnLand + sound: + path: /Audio/_DEN/Weapons/Melee/fausthit.ogg + params: + volume: -2 + variation: 0.05 + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatsword.rsi + state: icon + - type: Item + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatsword-inhands-64x.rsi + size: Ginormous # This doesn't go inside anything except its sheath + storedSprite: + state: icon + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatsword.rsi # Same sprite, just rotated, because it looks wrong otherwise + - type: ThrowingAngle + angle: -135 + - type: MeleeThrowOnHit # Just a tiny knockback to look cool, barely moves anything + speed: 6 + lifetime: 0.05 + - type: Reflect # A little gift for being brave + reflectProb: .25 + spread: 90 + - type: Tag + tags: + - MantisGreatsword + +- type: entity + parent: [BaseItem, BaseFoldable, BaseMantisContraband] + id: MantisMeleeGreatswordSheath # A suitstorage sheath for Faust, in this file because it's basically part of the sword + name: foreboding scabbard + suffix: Faust, Empty + description: "A heavy scabbard reinforced with mu-metal bands that cross over its ornamental eyes, likely as a warning. This psionically insulating metal is only used to contain weapons that would otherwise recoil violently against their housing when drawn. Its stillness feels wrong, as if the scabbard itself is holding its breath. It can be reworked to ride the hip instead with a bit of clever knife tailoring. So heavy it can only be worn over outerwear--and the weapon within so long it must be drawn with telekinesis." + components: + - type: Foldable + canFoldInsideContainer: true + foldVerbText: fold-straps-verb + unfoldVerbText: unfold-straps-verb + - type: FoldableClothing + foldedEquippedPrefix: folded + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatswordsheath.rsi + layers: + - state: icon + map: ["unfoldedLayer"] + - state: icon-folded + map: ["foldedLayer"] + visible: false + - type: Item + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatswordsheath.rsi + size: Ginormous + - type: Clothing + quickEquip: true + equipDelay: 0.5 + unequipDelay: 0.5 + slots: + - suitStorage + - type: ThrowingAngle + angularVelocity: true + - type: EmitSoundOnThrow + sound: + path: /Audio/_DEN/Weapons/Melee/bigswoosh.ogg + params: + volume: -3 + variation: 0.05 + - type: EmitSoundOnLand + sound: + path: /Audio/Effects/metal_slam1.ogg + params: + volume: -3 + pitch: 0.9 + variation: 0.05 + - type: EmitSoundOnCollide + sound: + path: /Audio/Effects/metal_slam4.ogg + params: + volume: -6 + pitch: 1.1 + variation: 0.05 + - type: Appearance + - type: ContainerContainer + containers: + storagebase: !type:Container + ents: [] + mantisgreatsword: !type:ContainerSlot {} + - type: ItemSlots + slots: + mantisgreatsword: + name: clothing-suitstorage-mantisgreatsword + insertVerbText: sheath-insert-verb + ejectVerbText: sheath-eject-verb + insertSound: + path: /Audio/_DEN/Weapons/Melee/faustsheath.ogg + params: + volume: -2 + variation: 0.05 + ejectSound: + path: /Audio/_DEN/Weapons/Melee/faustunsheath.ogg + params: + volume: -2 + variation: 0.05 + whitelist: + tags: + - MantisGreatsword + priority: 3 + - type: ItemMapper + mapLayers: + mantisgreatsword: + whitelist: + tags: + - MantisGreatsword + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatswordsheath.rsi + - type: Butcherable # Since Foldable is already used, I have to resort to Butcherable to change to the hip carry + butcheringType: Knife + spawned: + - id: MantisMeleeGreatswordSheathHip + amount: 1 + - type: GuideHelp + guides: [ MantisGuide ] + +- type: entity + parent: MantisMeleeGreatswordSheath + id: MantisMeleeGreatswordSheathFilled + suffix: Faust, Filled, DO NOT MAP + components: + - type: ContainerFill + containers: + mantisgreatsword: + - MantisMeleeGreatsword + +- type: entity + parent: MantisMeleeGreatswordSheath + id: MantisMeleeGreatswordSheathHip + name: foreboding scabbard (hip carry) + suffix: Faust, Empty + description: "A heavy scabbard reinforced with mu-metal bands that cross over its ornamental eyes, likely as a warning. This psionically insulating metal is only used to contain weapons that would otherwise recoil violently against their housing when drawn. Suspended from the hip with a thick cloth wrap--traditional when worn with a mantis wolfskin to keep the draw clear of the hat. It can be reworked to ride the back again with a bit of clever knife tailoring. So heavy it can only be worn over outerwear, and the weapon within so long it must be drawn with telekinesis." + components: + - type: Sprite + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatswordsheath-alt.rsi + - type: Item + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatswordsheath-alt.rsi + - type: ItemMapper + sprite: _DEN/Objects/Weapons/Melee/Mantis/mantisgreatswordsheath-alt.rsi + - type: Foldable + foldVerbText: fold-flip-verb + unfoldVerbText: fold-flip-verb + - type: Butcherable + spawned: + - id: MantisMeleeGreatswordSheath + amount: 1 + +- type: entity + parent: MantisMeleeGreatswordSheathHip + id: MantisMeleeGreatswordSheathHipFilled + suffix: Faust, Filled, DO NOT MAP] [Hip Carry + components: + - type: ContainerFill + containers: + mantisgreatsword: + - MantisMeleeGreatsword diff --git a/Resources/Prototypes/_DEN/Reagents/Materials/materials.yml b/Resources/Prototypes/_DEN/Reagents/Materials/materials.yml new file mode 100644 index 00000000000..8b4aaf7a7d3 --- /dev/null +++ b/Resources/Prototypes/_DEN/Reagents/Materials/materials.yml @@ -0,0 +1,17 @@ +- type: material + id: Mnemolith + stackEntity: MaterialMnemolith1 + name: materials-mnemolith + unit: materials-unit-piece + icon: { sprite: _DEN/Objects/Materials/materials.rsi, state: mnemolith } + color: "#ffffff" + price: 0.2 # A stone is worth 20, a full stack is worth 600, rare but not that special + +- type: material + id: Eidolite + stackEntity: MaterialEidolite1 + name: materials-eidolite + unit: materials-unit-piece + icon: { sprite: _DEN/Objects/Materials/materials.rsi, state: mnemolith } + color: "#ffffff" + price: 5 # A crystal is worth 500, a full stack is worth 15000, balanced as salvager treasure diff --git a/Resources/Prototypes/_DEN/Reagents/psionic.yml b/Resources/Prototypes/_DEN/Reagents/psionic.yml new file mode 100644 index 00000000000..694e14da35d --- /dev/null +++ b/Resources/Prototypes/_DEN/Reagents/psionic.yml @@ -0,0 +1,127 @@ +- type: reagent + id: MnemolithReagent # The stone that anti-psionic weapons are made of, as powder in a suspension + name: reagent-name-mnemolith # Be careful if you give it a mechanical purpose, though, since the mantis items (cigarettes, pills, folder pages, etc.) contain a lot of it + group: Medicine + slippery: false + desc: reagent-desc-mnemolith + physicalDesc: reagent-physical-desc-mnemolith + flavor: mnemolith + color: "#313b4a" + metabolisms: + Medicine: + metabolismRate: 0.1 # 1u lasts 10 seconds, so 15u lasts 2 minutes 30 seconds + effects: + - !type:PopupMessage + type: Local + visualType: Medium + messages: + - "reagent-effect-mnemolith-1" + - "reagent-effect-mnemolith-2" + - "reagent-effect-mnemolith-3" + - "reagent-effect-mnemolith-4" + - "reagent-effect-mnemolith-5" + - "reagent-effect-mnemolith-6" + - "reagent-effect-mnemolith-7" + - "reagent-effect-mnemolith-8" + - "reagent-effect-mnemolith-9" + - "reagent-effect-mnemolith-10" + - "reagent-effect-mnemolith-11" + - "reagent-effect-mnemolith-12" + - "reagent-effect-mnemolith-13" + - "reagent-effect-mnemolith-14" + - "reagent-effect-mnemolith-15" + - "reagent-effect-mnemolith-16" + - "reagent-effect-mnemolith-17" + - "reagent-effect-mnemolith-18" + - "reagent-effect-mnemolith-19" + - "reagent-effect-mnemolith-20" + probability: 0.05 + conditions: # This phase will last at most 2 minutes 20 seconds + - !type:ReagentThreshold + max: 14 # So taking 15u will give you 10 seconds of possibly scarier messages + - !type:PopupMessage + type: Local + visualType: MediumCaution + messages: + - "reagent-effect-mnemolith-overdose1" + - "reagent-effect-mnemolith-overdose2" + - "reagent-effect-mnemolith-overdose3" + - "reagent-effect-mnemolith-overdose4" + - "reagent-effect-mnemolith-overdose5" + - "reagent-effect-mnemolith-overdose6" + - "reagent-effect-mnemolith-overdose7" + - "reagent-effect-mnemolith-overdose8" + - "reagent-effect-mnemolith-overdose9" + - "reagent-effect-mnemolith-overdose10" + - "reagent-effect-mnemolith-overdose11" + - "reagent-effect-mnemolith-overdose12" + - "reagent-effect-mnemolith-overdose13" + - "reagent-effect-mnemolith-overdose14" + - "reagent-effect-mnemolith-overdose15" + - "reagent-effect-mnemolith-overdose16" + - "reagent-effect-mnemolith-overdose17" + - "reagent-effect-mnemolith-overdose18" + - "reagent-effect-mnemolith-overdose19" + - "reagent-effect-mnemolith-overdose20" + probability: 0.1 + conditions: # This phase will last at most 2 minutes 30 seconds + - !type:ReagentThreshold + min: 14 + max: 29 # So taking 30u will give you 10 seconds of possibly scarier messages + - !type:PopupMessage + type: Local + visualType: MediumPsionic + messages: + - "reagent-effect-mnemolith-megadose1" + - "reagent-effect-mnemolith-megadose2" + - "reagent-effect-mnemolith-megadose3" + - "reagent-effect-mnemolith-megadose4" + - "reagent-effect-mnemolith-megadose5" + - "reagent-effect-mnemolith-megadose6" + - "reagent-effect-mnemolith-megadose7" + - "reagent-effect-mnemolith-megadose8" + - "reagent-effect-mnemolith-megadose9" + - "reagent-effect-mnemolith-megadose10" + - "reagent-effect-mnemolith-megadose11" + - "reagent-effect-mnemolith-megadose12" + - "reagent-effect-mnemolith-megadose13" + - "reagent-effect-mnemolith-megadose14" + - "reagent-effect-mnemolith-megadose15" + - "reagent-effect-mnemolith-megadose16" + - "reagent-effect-mnemolith-megadose17" + - "reagent-effect-mnemolith-megadose18" + - "reagent-effect-mnemolith-megadose19" + - "reagent-effect-mnemolith-megadose20" + probability: 0.1 + conditions: # This phase will last at most 2 minutes 30 seconds + - !type:ReagentThreshold + min: 29 + max: 44 # So taking 45u will give you 10 seconds of possibly scarier messages + - !type:PopupMessage + type: Local + visualType: MediumPsionic + messages: + - "reagent-effect-mnemolith-heroicdose1" + - "reagent-effect-mnemolith-heroicdose2" + - "reagent-effect-mnemolith-heroicdose3" + - "reagent-effect-mnemolith-heroicdose4" + - "reagent-effect-mnemolith-heroicdose5" + - "reagent-effect-mnemolith-heroicdose6" + - "reagent-effect-mnemolith-heroicdose7" + - "reagent-effect-mnemolith-heroicdose8" + - "reagent-effect-mnemolith-heroicdose9" + - "reagent-effect-mnemolith-heroicdose10" + - "reagent-effect-mnemolith-heroicdose11" + - "reagent-effect-mnemolith-heroicdose12" + - "reagent-effect-mnemolith-heroicdose13" + - "reagent-effect-mnemolith-heroicdose14" + - "reagent-effect-mnemolith-heroicdose15" + - "reagent-effect-mnemolith-heroicdose16" + - "reagent-effect-mnemolith-heroicdose17" + - "reagent-effect-mnemolith-heroicdose18" + - "reagent-effect-mnemolith-heroicdose19" + - "reagent-effect-mnemolith-heroicdose20" + probability: 0.1 + conditions: + - !type:ReagentThreshold + min: 44 diff --git a/Resources/Prototypes/_DEN/Recipes/Cooking/FoodSequence/mothic_sequence_element.yml b/Resources/Prototypes/_DEN/Recipes/Cooking/FoodSequence/mothic_sequence_element.yml index eabfa5622c7..685ea26938d 100644 --- a/Resources/Prototypes/_DEN/Recipes/Cooking/FoodSequence/mothic_sequence_element.yml +++ b/Resources/Prototypes/_DEN/Recipes/Cooking/FoodSequence/mothic_sequence_element.yml @@ -54,3 +54,12 @@ sprites: - sprite: _DEN/Objects/Fun/whistlerplushie.rsi state: icon + +# MANTIS PLUSHIE + +- type: foodSequenceElement + id: MantisDollPlushie + name: food-sequence-cotton-burger-content-plushie-mantisdoll + sprites: + - sprite: _DEN/Objects/Fun/toys.rsi + state: doll_mantis diff --git a/Resources/Prototypes/_DEN/Stacks/materials.yml b/Resources/Prototypes/_DEN/Stacks/materials.yml new file mode 100644 index 00000000000..cc98f67d20c --- /dev/null +++ b/Resources/Prototypes/_DEN/Stacks/materials.yml @@ -0,0 +1,15 @@ +- type: stack + id: Mnemolith + name: mnemolith + icon: { sprite: /Textures/_DEN/Objects/Materials/materials.rsi, state: mnemolith } + spawn: MaterialMnemolith1 + maxCount: 30 + itemSize: 1 + +- type: stack + id: Eidolite + name: eidolite + icon: { sprite: /Textures/_DEN/Objects/Materials/materials.rsi, state: eidolite } + spawn: MaterialEidolite1 + maxCount: 30 + itemSize: 1 diff --git a/Resources/Prototypes/_DEN/Voice/typing_indicator.yml b/Resources/Prototypes/_DEN/Voice/typing_indicator.yml new file mode 100644 index 00000000000..9181a6c0ea5 --- /dev/null +++ b/Resources/Prototypes/_DEN/Voice/typing_indicator.yml @@ -0,0 +1,5 @@ +- type: typingIndicator # From wearing PaperMantis as a mask + id: mantis + spritePath: /Textures/_DEN/Effects/speech.rsi + typingState: mantis0 + idleState: mantis3