From 8b9801a5bbc6be39b399be7c4bda7a2c4275ef50 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C4=81da?= Date: Wed, 7 Jan 2026 15:49:24 -0600 Subject: [PATCH] Reorganize and clean Fun yml (#42184) * don't look at this commit size i'm not proud * self review * more final changes * more comments * review * review --------- Co-authored-by: iaada Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Fun/{ => Figurines}/figurine_boxes.yml | 0 .../Objects/Fun/{ => Figurines}/figurines.yml | 0 .../Fun/{ => Figurines}/mech_figurines.yml | 0 .../Fun/Instruments/base_instruments.yml | 8 +- .../Fun/{ => Plushies}/plushielizard_jobs.yml | 2 +- .../Objects/Fun/{ => Plushies}/plushies.yml | 74 ++ .../Objects/Fun/Tabletop/backgammon.yml | 6 +- .../Entities/Objects/Fun/Tabletop/base.yml | 31 +- .../Objects/Fun/Tabletop/checkers.yml | 24 +- .../Entities/Objects/Fun/Tabletop/chess.yml | 100 +- .../Entities/Objects/Fun/Tabletop/dnd.yml | 92 +- .../Entities/Objects/Fun/Tabletop/parchis.yml | 8 +- .../Objects/Fun/Tabletop/tabletopGeneric.yml | 17 +- .../Entities/Objects/Fun/balloons.yml | 61 + .../Entities/Objects/Fun/bike_horn.yml | 234 ---- .../Entities/Objects/Fun/crayons.yml | 58 +- .../Prototypes/Entities/Objects/Fun/darts.yml | 6 +- .../Prototypes/Entities/Objects/Fun/dice.yml | 43 + .../Entities/Objects/Fun/dice_bag.yml | 40 - .../Prototypes/Entities/Objects/Fun/error.yml | 43 - .../Prototypes/Entities/Objects/Fun/orbs.yml | 106 ++ .../Prototypes/Entities/Objects/Fun/pai.yml | 2 + .../Entities/Objects/Fun/puppet.yml | 42 - .../Prototypes/Entities/Objects/Fun/skub.yml | 38 - .../Entities/Objects/Fun/snap_pops.yml | 62 - .../Entities/Objects/Fun/sound_maker.yml | 493 +++++++ .../Entities/Objects/Fun/spectral_locator.yml | 57 - .../Entities/Objects/Fun/sports.yml | 159 +++ .../Prototypes/Entities/Objects/Fun/toys.yml | 1146 +++-------------- .../Entities/Objects/Fun/weapons.yml | 337 +++++ .../Entities/Objects/Fun/whistles.yml | 58 - .../Objects/{Fun => Magic}/immovable_rod.yml | 4 +- .../Objects/{Fun => Misc}/candy_bucket.yml | 2 +- .../Weapons/Guns/Launchers/launchers.yml | 27 - .../Objects/Weapons/Guns/Rifles/rifles.yml | 36 - .../Prototypes/Entities/Objects/base_item.yml | 22 + 36 files changed, 1645 insertions(+), 1793 deletions(-) rename Resources/Prototypes/Entities/Objects/Fun/{ => Figurines}/figurine_boxes.yml (100%) rename Resources/Prototypes/Entities/Objects/Fun/{ => Figurines}/figurines.yml (100%) rename Resources/Prototypes/Entities/Objects/Fun/{ => Figurines}/mech_figurines.yml (100%) rename Resources/Prototypes/Entities/Objects/Fun/{ => Plushies}/plushielizard_jobs.yml (100%) rename Resources/Prototypes/Entities/Objects/Fun/{ => Plushies}/plushies.yml (94%) create mode 100644 Resources/Prototypes/Entities/Objects/Fun/balloons.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/dice_bag.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/error.yml create mode 100644 Resources/Prototypes/Entities/Objects/Fun/orbs.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/puppet.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/skub.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml create mode 100644 Resources/Prototypes/Entities/Objects/Fun/sound_maker.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/spectral_locator.yml create mode 100644 Resources/Prototypes/Entities/Objects/Fun/sports.yml create mode 100644 Resources/Prototypes/Entities/Objects/Fun/weapons.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/whistles.yml rename Resources/Prototypes/Entities/Objects/{Fun => Magic}/immovable_rod.yml (100%) rename Resources/Prototypes/Entities/Objects/{Fun => Misc}/candy_bucket.yml (97%) diff --git a/Resources/Prototypes/Entities/Objects/Fun/figurine_boxes.yml b/Resources/Prototypes/Entities/Objects/Fun/Figurines/figurine_boxes.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Fun/figurine_boxes.yml rename to Resources/Prototypes/Entities/Objects/Fun/Figurines/figurine_boxes.yml diff --git a/Resources/Prototypes/Entities/Objects/Fun/figurines.yml b/Resources/Prototypes/Entities/Objects/Fun/Figurines/figurines.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Fun/figurines.yml rename to Resources/Prototypes/Entities/Objects/Fun/Figurines/figurines.yml diff --git a/Resources/Prototypes/Entities/Objects/Fun/mech_figurines.yml b/Resources/Prototypes/Entities/Objects/Fun/Figurines/mech_figurines.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Fun/mech_figurines.yml rename to Resources/Prototypes/Entities/Objects/Fun/Figurines/mech_figurines.yml diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml index d6bd2e949a..61b976c4d3 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/base_instruments.yml @@ -23,10 +23,10 @@ #These are for instruments that are larger, can't be picked up, or have collision - type: entity - name: baseinstrument - id: BasePlaceableInstrument - parent: BaseStructureDynamic abstract: true + parent: BaseStructureDynamic + id: BasePlaceableInstrument + name: baseinstrument components: - type: Instrument - type: ActivatableUI @@ -73,10 +73,10 @@ - type: RequireProjectileTarget - type: entity + abstract: true parent: BasePlaceableInstrument id: BasePlaceableInstrumentRotatable name: baseinstrumentrotatable - abstract: true components: - type: Rotatable rotateWhileAnchored: true diff --git a/Resources/Prototypes/Entities/Objects/Fun/plushielizard_jobs.yml b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushielizard_jobs.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Fun/plushielizard_jobs.yml rename to Resources/Prototypes/Entities/Objects/Fun/Plushies/plushielizard_jobs.yml index ddde35195f..77ead8db8a 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/plushielizard_jobs.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushielizard_jobs.yml @@ -1,8 +1,8 @@ # This base is created so we don't have to define the different sprite path for each plushie job. - type: entity + abstract: true parent: PlushieLizard id: BasePlushieLizardJob - abstract: true components: - type: Sprite sprite: Objects/Fun/plushielizard_jobs.rsi diff --git a/Resources/Prototypes/Entities/Objects/Fun/plushies.yml b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml similarity index 94% rename from Resources/Prototypes/Entities/Objects/Fun/plushies.yml rename to Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml index a22d26c6f7..55994be348 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/plushies.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml @@ -1228,3 +1228,77 @@ - type: FoodSequenceElement entries: CottonBurger: PlushieVulp + +- type: entity + parent: BasePlushie + id: ToyIan + name: ian toy + description: Unable to eat, but just as fluffy as the real guy! + components: + - type: Sprite + sprite: Objects/Fun/toy_ian.rsi + state: icon + - type: Clothing + quickEquip: false + sprite: Objects/Fun/toy_ian.rsi + slots: + - HEAD + clothingVisuals: + head: + - state: equipped-HELMET + offset: "0, 0.06" + - type: Item + size: Tiny + - type: EmitSoundOnUse + sound: &SoundIan + - type: EmitSoundOnLand + sound: *SoundIan + - type: EmitSoundOnActivate + sound: *SoundIan + - type: EmitSoundOnTrigger + sound: *SoundIan + - type: EmitSoundOnCollide + sound: *SoundIan + - type: MeleeWeapon + soundHit: *SoundIan + - type: Edible + useSound: *SoundIan + - type: FoodSequenceElement + entries: + CottonBurger: IanPlushie + +- type: entity + parent: BasePlushie + id: ToyAmongPequeno + name: among pequeño + description: Sus! + components: + - type: Sprite + sprite: Objects/Fun/pequeno.rsi + layers: + - state: base + map: [ "enum.DamageStateVisualLayers.Base" ] + - state: visor + - type: Clothing + sprite: Objects/Fun/pequeno.rsi + slots: + - HEAD + clothingVisuals: + head: + - state: equipped-HELMET-body + - state: equipped-HELMET-vis + - type: Item + inhandVisuals: + left: + - state: inhand-left-body + - state: inhand-left-vis + right: + - state: inhand-right-body + - state: inhand-right-vis + - type: RandomSprite + available: + - enum.DamageStateVisualLayers.Base: + base: Sixteen +# - type: FoodSequenceElement - does not work with randomized sprites +# entries: +# CottonBurger: AmongPequeno diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/backgammon.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/backgammon.yml index 965b25dbc0..9eb178c132 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/backgammon.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/backgammon.yml @@ -12,12 +12,12 @@ size: 550, 410 setup: !type:TabletopBackgammonSetup - boardPrototype: BackgammonBoardTabletop + boardPrototype: &BackgammonBoard BackgammonBoardTabletop - type: entity - id: BackgammonBoardTabletop - name: backgammon parent: BaseBoardTabletop + id: *BackgammonBoard + name: backgammon categories: [ HideSpawnMenu ] components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/base.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/base.yml index f9ef69b1d1..5629aee022 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/base.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/base.yml @@ -1,38 +1,39 @@ +# When adding a new board game, also add it to id: AllBoardGamesTable + +# The actual item that players can pick up, or throw when they lose - type: entity + abstract: true parent: BaseItem id: BaseBoardEntity # Board item name: board - abstract: true description: A blank board. components: - - type: TabletopGame - size: 256, 256 - setup: - !type:TabletopEmptySetup - boardPrototype: Crowbar - - type: Tag - tags: - - TabletopBoard + - type: TabletopGame + size: 256, 256 + setup: + !type:TabletopEmptySetup + boardPrototype: Crowbar + - type: Tag + tags: + - TabletopBoard - type: entity - id: BaseTabletopPiece # Board piece - parent: BaseItem abstract: true + parent: BaseItem + id: BaseTabletopPiece # Board piece components: - type: TabletopDraggable - type: Sprite noRot: true - type: Appearance +# Entity which acts as the background sprite in the tabletop game - type: entity + abstract: true id: BaseBoardTabletop name: baseboard - abstract: true categories: [ HideSpawnMenu ] components: - - type: Tag - tags: - - TabletopBoard - type: Sprite noRot: false drawdepth: FloorTiles diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/checkers.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/checkers.yml index 6c206ca26f..20daf02291 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/checkers.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/checkers.yml @@ -36,33 +36,33 @@ name: white checker piece parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/checker_pieces.rsi - state: w_checker_piece + - type: Sprite + sprite: Objects/Fun/Tabletop/checker_pieces.rsi + state: w_checker_piece - type: entity id: *crownWhite name: white checker crown parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/checker_pieces.rsi - state: w_checker_crown + - type: Sprite + sprite: Objects/Fun/Tabletop/checker_pieces.rsi + state: w_checker_crown - type: entity id: *pieceBlack name: black checker piece parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/checker_pieces.rsi - state: b_checker_piece + - type: Sprite + sprite: Objects/Fun/Tabletop/checker_pieces.rsi + state: b_checker_piece - type: entity id: *crownBlack name: black checker crown parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/checker_pieces.rsi - state: b_checker_crown + - type: Sprite + sprite: Objects/Fun/Tabletop/checker_pieces.rsi + state: b_checker_crown diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml index aeba3918c4..6a2793fedd 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml @@ -1,5 +1,4 @@ -# Chessboard item (normal in game item you can hold in your hand) -- type: entity +- type: entity parent: BaseBoardEntity id: ChessBoard name: chessboard @@ -13,13 +12,12 @@ size: 338, 274 setup: !type:TabletopChessSetup - boardPrototype: ChessBoardTabletop + boardPrototype: &ChessBoard ChessBoardTabletop -# Chessboard tabletop item (item only visible in tabletop game) - type: entity - id: ChessBoardTabletop - name: chessboard parent: BaseBoardTabletop + id: *ChessBoard + name: chessboard categories: [ HideSpawnMenu ] components: - type: Sprite @@ -28,110 +26,110 @@ # White pieces - type: entity + parent: BaseTabletopPiece id: WhiteKing name: white king - parent: BaseTabletopPiece components: - type: Sprite sprite: Objects/Fun/Tabletop/chess_pieces.rsi state: w_king - type: entity + parent: BaseTabletopPiece id: WhiteQueen name: white queen - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: w_queen + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: w_queen - type: entity + parent: BaseTabletopPiece id: WhiteRook name: white rook - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: w_rook + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: w_rook - type: entity + parent: BaseTabletopPiece id: WhiteBishop name: white bishop - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: w_bishop + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: w_bishop - type: entity + parent: BaseTabletopPiece id: WhiteKnight name: white knight - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: w_knight + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: w_knight - type: entity + parent: BaseTabletopPiece id: WhitePawn name: white pawn - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: w_pawn + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: w_pawn # Black pieces - type: entity + parent: BaseTabletopPiece id: BlackKing name: black king - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: b_king + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: b_king - type: entity + parent: BaseTabletopPiece id: BlackQueen name: black queen - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: b_queen + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: b_queen - type: entity + parent: BaseTabletopPiece id: BlackRook name: black rook - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: b_rook + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: b_rook - type: entity + parent: BaseTabletopPiece id: BlackBishop name: black bishop - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: b_bishop + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: b_bishop - type: entity + parent: BaseTabletopPiece id: BlackKnight name: black knight - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: b_knight + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: b_knight - type: entity + parent: BaseTabletopPiece id: BlackPawn name: black pawn - parent: BaseTabletopPiece components: - - type: Sprite - sprite: Objects/Fun/Tabletop/chess_pieces.rsi - state: b_pawn + - type: Sprite + sprite: Objects/Fun/Tabletop/chess_pieces.rsi + state: b_pawn diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml index 9b00ef5e01..6eb38c66b7 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml @@ -1,19 +1,17 @@ -# Board item (given to players) +# When adding a new battlemap, also add it to id: AllBattlemapsTable + +# Board item (given to players) - type: entity + abstract: true parent: BaseBoardEntity id: BaseBattlemap name: battlemap - abstract: true description: A battlemap for your epic dungeon exploring to begin, pieces not included! components: - - type: Sprite - sprite: Objects/Fun/Tabletop/grassbm.rsi - state: icon - - type: TabletopGame - boardName: tabletop-battlemap-board-name - setup: - !type:TabletopEmptySetup - boardPrototype: GrassBoardTabletop + - type: Sprite + state: icon + - type: TabletopGame + boardName: tabletop-battlemap-board-name - type: entity parent: BaseBattlemap @@ -21,12 +19,12 @@ name: grass battlemap description: A battlemap for your epic dungeon exploring to begin, pieces not included! components: - - type: Sprite - sprite: Objects/Fun/Tabletop/Battlemaps/grassbm.rsi - - type: TabletopGame - setup: - !type:TabletopEmptySetup - boardPrototype: GrassBoardTabletop + - type: Sprite + sprite: Objects/Fun/Tabletop/Battlemaps/grassbm.rsi + - type: TabletopGame + setup: + !type:TabletopEmptySetup + boardPrototype: &GrassBoard GrassBoardTabletop - type: entity parent: BaseBattlemap @@ -34,12 +32,12 @@ name: moon battlemap description: A battlemap for your epic moon exploring to begin, pieces not included! components: - - type: Sprite - sprite: Objects/Fun/Tabletop/Battlemaps/moonbm.rsi - - type: TabletopGame - setup: - !type:TabletopEmptySetup - boardPrototype: MoonBoardTabletop + - type: Sprite + sprite: Objects/Fun/Tabletop/Battlemaps/moonbm.rsi + - type: TabletopGame + setup: + !type:TabletopEmptySetup + boardPrototype: &MoonBoard MoonBoardTabletop - type: entity parent: BaseBattlemap @@ -47,12 +45,12 @@ name: sand battlemap description: A battlemap for your epic beach episodes to begin, pieces not included! components: - - type: Sprite - sprite: Objects/Fun/Tabletop/Battlemaps/sandbm.rsi - - type: TabletopGame - setup: - !type:TabletopEmptySetup - boardPrototype: SandBoardTabletop + - type: Sprite + sprite: Objects/Fun/Tabletop/Battlemaps/sandbm.rsi + - type: TabletopGame + setup: + !type:TabletopEmptySetup + boardPrototype: &SandBoard SandBoardTabletop - type: entity parent: BaseBattlemap @@ -60,12 +58,12 @@ name: snow battlemap description: A battlemap for your frigid exploring to begin, pieces not included! # if this isn't funny enough i can remove it components: - - type: Sprite - sprite: Objects/Fun/Tabletop/Battlemaps/snowbm.rsi - - type: TabletopGame - setup: - !type:TabletopEmptySetup - boardPrototype: SnowBoardTabletop + - type: Sprite + sprite: Objects/Fun/Tabletop/Battlemaps/snowbm.rsi + - type: TabletopGame + setup: + !type:TabletopEmptySetup + boardPrototype: &SnowBoard SnowBoardTabletop - type: entity parent: BaseBattlemap @@ -73,30 +71,28 @@ name: ship battlemap description: A battlemap for your epic space exploring to begin, pieces not included! components: - - type: Sprite - sprite: Objects/Fun/Tabletop/Battlemaps/shipbm.rsi - - type: TabletopGame - size: 543, 543 - setup: - !type:TabletopEmptySetup - boardPrototype: ShipBoardTabletop + - type: Sprite + sprite: Objects/Fun/Tabletop/Battlemaps/shipbm.rsi + - type: TabletopGame + size: 543, 543 + setup: + !type:TabletopEmptySetup + boardPrototype: &ShipBoard ShipBoardTabletop # Background entity (actually shown in the board) - type: entity parent: BaseBoardTabletop - id: GrassBoardTabletop + id: *GrassBoard name: grass battlemap categories: [ HideSpawnMenu ] components: - type: Sprite sprite: Objects/Fun/Tabletop/Battlemaps/grassbm_tabletop.rsi state: tabletop - noRot: false - drawdepth: FloorTiles - type: entity parent: BaseBoardTabletop - id: MoonBoardTabletop + id: *MoonBoard name: grass battlemap categories: [ HideSpawnMenu ] components: @@ -106,7 +102,7 @@ - type: entity parent: BaseBoardTabletop - id: SandBoardTabletop + id: *SandBoard name: sand battlemap categories: [ HideSpawnMenu ] components: @@ -116,7 +112,7 @@ - type: entity parent: BaseBoardTabletop - id: SnowBoardTabletop + id: *SnowBoard name: snow battlemap categories: [ HideSpawnMenu ] components: @@ -126,7 +122,7 @@ - type: entity parent: BaseBoardTabletop - id: ShipBoardTabletop + id: *ShipBoard name: ship battlemap categories: [ HideSpawnMenu ] components: diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/parchis.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/parchis.yml index b608f4e787..17e4f3392a 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/parchis.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/parchis.yml @@ -1,4 +1,3 @@ -# Parchís board item (normal in game item you can hold in your hand) - type: entity parent: BaseBoardEntity id: ParchisBoard @@ -13,13 +12,12 @@ size: 574, 574 setup: !type:TabletopParchisSetup - boardPrototype: ParchisBoardTabletop + boardPrototype: &ParchisBoard ParchisBoardTabletop -# Parchís tabletop item (item only visible in tabletop game) - type: entity - id: ParchisBoardTabletop - name: parchís parent: BaseBoardTabletop + id: *ParchisBoard + name: parchís categories: [ HideSpawnMenu ] components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/tabletopGeneric.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/tabletopGeneric.yml index 120112b9de..1d16f02fa5 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/tabletopGeneric.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/tabletopGeneric.yml @@ -1,56 +1,55 @@ - type: entity - id: BaseGenericTabletopPiece - parent: BaseTabletopPiece abstract: true + parent: BaseTabletopPiece + id: BaseGenericTabletopPiece components: - type: Sprite - noRot: true sprite: Objects/Fun/Tabletop/generic_pieces.rsi - type: entity + parent: BaseGenericTabletopPiece id: RedTabletopPiece name: red piece - parent: BaseGenericTabletopPiece components: - type: Sprite state: red - type: entity + parent: BaseGenericTabletopPiece id: GreenTabletopPiece name: green piece - parent: BaseGenericTabletopPiece components: - type: Sprite state: green - type: entity + parent: BaseGenericTabletopPiece id: YellowTabletopPiece name: yellow piece - parent: BaseGenericTabletopPiece components: - type: Sprite state: yellow - type: entity + parent: BaseGenericTabletopPiece id: BlueTabletopPiece name: blue piece - parent: BaseGenericTabletopPiece components: - type: Sprite state: blue - type: entity + parent: BaseGenericTabletopPiece id: WhiteTabletopPiece name: white piece - parent: BaseGenericTabletopPiece components: - type: Sprite state: white - type: entity + parent: BaseGenericTabletopPiece id: BlackTabletopPiece name: black piece - parent: BaseGenericTabletopPiece components: - type: Sprite state: black diff --git a/Resources/Prototypes/Entities/Objects/Fun/balloons.yml b/Resources/Prototypes/Entities/Objects/Fun/balloons.yml new file mode 100644 index 0000000000..f5193896a0 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Fun/balloons.yml @@ -0,0 +1,61 @@ +# When adding new balloons, also add it to id: AllMiscToysTable + +- type: entity + abstract: true + parent: BaseItem + id: BaseBalloon + components: + - type: Sprite + noRot: true + - type: Item + size: Small + - type: EmitSoundOnCollide + sound: &SoundBalloonHit + path: /Audio/Effects/balloon_hits.ogg + - type: EmitSoundOnLand + sound: *SoundBalloonHit + - type: Damageable + damageContainer: Inorganic + - type: TileFrictionModifier + modifier: 0.3 + - type: Tag + tags: + - Balloon + +- type: entity + parent: BaseBalloon + id: BalloonSyn + name: syndie balloon + description: Handed out to the bravest souls who survived the "atomic twister" ride at Syndieland. + components: + - type: Sprite + sprite: Objects/Fun/Balloons/syndicate.rsi + state: icon + - type: Item + sprite: Objects/Fun/Balloons/syndicate.rsi + - type: StaticPrice + price: 100 # Entertainment. + +- type: entity + parent: BaseBalloon + id: BalloonNT + name: nanotrasen balloon + description: Specially designed to inflict maximum psychological damage to Syndicate operatives. + components: + - type: Sprite + sprite: Objects/Fun/Balloons/nanotrasen.rsi + state: icon + - type: Item + sprite: Objects/Fun/Balloons/nanotrasen.rsi + +- type: entity + parent: BaseBalloon + id: BalloonCorgi + name: corgi balloon + description: Just like owning a real dog - but a lot floatier. + components: + - type: Sprite + sprite: Objects/Fun/Balloons/corgi.rsi + state: icon + - type: Item + sprite: Objects/Fun/Balloons/corgi.rsi diff --git a/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml b/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml deleted file mode 100644 index e7efa14dc4..0000000000 --- a/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml +++ /dev/null @@ -1,234 +0,0 @@ -- type: entity - parent: BaseItem - id: BikeHorn - name: bike horn - description: A horn off of a bicycle. - components: - - type: Sprite - sprite: Objects/Fun/bikehorn.rsi - state: icon - - type: Item - sprite: Objects/Fun/bikehorn.rsi - size: Tiny - - type: Clothing - sprite: Objects/Fun/bikehorn.rsi - slots: [Belt] - quickEquip: false - - type: UseDelay - delay: 0.5 - - type: EmitSoundOnUse - sound: - collection: BikeHorn - params: - variation: 0.125 - - type: EmitSoundOnLand - sound: - collection: BikeHorn - params: - variation: 0.125 - - type: EmitSoundOnTrigger - sound: - collection: BikeHorn - params: - variation: 0.125 - - type: EmitSoundOnActivate - sound: - collection: BikeHorn - params: - variation: 0.125 - - type: EmitSoundOnCollide - sound: - collection: BikeHorn - params: - variation: 0.125 - - type: Tag - tags: - - Payload # yes, you can make re-usable prank grenades - - BikeHorn - - type: MeleeWeapon - wideAnimationRotation: 135 - soundHit: - collection: BikeHorn - params: - variation: 0.125 - damage: - types: - Blunt: 0 - - type: Tool - qualities: - - Honking - useSound: - collection: BikeHorn - -- type: entity - parent: BaseItem - id: CluwneHorn - name: broken bike horn - description: A broken horn off of a bicycle. - components: - - type: UseDelay - - type: Sprite - sprite: Objects/Fun/cluwnehorn.rsi - state: icon - - type: Item - sprite: Objects/Fun/cluwnehorn.rsi - size: Tiny - - type: Clothing - sprite: Objects/Fun/cluwnehorn.rsi - slots: [Belt] - quickEquip: false - - type: Tag - tags: - - Payload # yes, you can make re-usable prank grenades - - CluwneHorn - - type: EmitSoundOnTrigger - sound: - collection: CluwneHorn - params: - variation: 0.125 - - type: EmitSoundOnUse - sound: - collection: CluwneHorn - params: - variation: 0.125 - - type: EmitSoundOnActivate - sound: - collection: CluwneHorn - params: - variation: 0.125 - - type: EmitSoundOnCollide - sound: - collection: CluwneHorn - params: - variation: 0.125 - - type: EmitSoundOnLand - sound: - collection: CluwneHorn - params: - variation: 0.125 - - type: MeleeWeapon - wideAnimationRotation: 135 - soundHit: - collection: CluwneHorn - params: - variation: 0.125 - damage: - types: - Blunt: 5 - - -- type: entity - parent: BikeHorn - id: GoldenBikeHorn - name: golden honker - categories: [ DoNotMap ] - description: A happy honk prize, pray to the gods for your reward. - components: - - type: Sprite - sprite: Objects/Fun/goldbikehorn.rsi - state: icon - - type: Item - sprite: Objects/Fun/goldbikehorn.rsi - size: Tiny - - type: Clothing - sprite: Objects/Fun/goldbikehorn.rsi - slots: [Belt] - - type: Prayable - - type: StaticPrice - price: 100 # reduced price due to heisentests - - type: PointLight - radius: 1.2 - energy: 2.2 - castShadows: false - color: "#ffca1b" - -- type: entity - parent: BikeHorn - id: BananiumHorn - name: bananium horn - description: An air horn made from bananium. - components: - - type: Sprite - sprite: Objects/Fun/bananiumhorn.rsi - state: icon - - type: Item - sprite: Objects/Fun/bananiumhorn.rsi - size: Small - - type: Clothing - sprite: Objects/Fun/bananiumhorn.rsi - slots: [Belt] - quickEquip: false - - type: UseDelay - delay: 3 - - type: EmitSoundOnUse - sound: - collection: BananiumHorn - params: - variation: 0.246 - - type: EmitSoundOnLand - sound: - collection: BananiumHorn - params: - variation: 0.246 - - type: EmitSoundOnTrigger - sound: - collection: BananiumHorn - params: - variation: 0.246 - - type: EmitSoundOnActivate - sound: - collection: BananiumHorn - params: - variation: 0.246 - - type: EmitSoundOnCollide - sound: - collection: BananiumHorn - params: - variation: 0.246 - - type: MeleeWeapon - wideAnimationRotation: 135 - soundHit: - collection: BananiumHorn - params: - variation: 0.246 - damage: - types: - Blunt: 0 - hidden: true - - type: Construction - graph: BananiumHorn - node: bananiumHorn - -- type: entity - parent: BaseItem - id: PushHorn - name: push horn - description: This powerful bikehorn is sure to blast frowns away. - components: - - type: Sprite - sprite: Objects/Fun/push_horn.rsi - state: icon - - type: Item - sprite: Objects/Fun/push_horn.rsi - size: Tiny - - type: Clothing - sprite: Objects/Fun/push_horn.rsi - slots: [Belt] - quickEquip: false - - type: EmitSoundOnUse - handle: false - sound: "/Audio/Items/Toys/pushHornHonk.ogg" - - type: EmitSoundOnLand - sound: "/Audio/Items/Toys/pushHornFloor.ogg" - - type: UseDelay - delay: 10 - - type: TriggerOnUse - - type: RepulseAttractOnTrigger - speed: 50 - range: 3.5 - whitelist: - components: - - MobMover - - type: SpawnOnTrigger - proto: EffectGravityPulse - predicted: true diff --git a/Resources/Prototypes/Entities/Objects/Fun/crayons.yml b/Resources/Prototypes/Entities/Objects/Fun/crayons.yml index 574d6953f2..2652a8c117 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/crayons.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/crayons.yml @@ -1,9 +1,11 @@ +# When adding new crayons, also add it to id: AllCrayonsTable + - type: entity abstract: true parent: BaseItem id: CrayonInedible name: crayon - description: A colourful crayon. Looks tasty. Mmmm... + description: A colourful crayon. A forbidden flavor. components: - type: Sprite sprite: Objects/Fun/crayons.rsi @@ -15,6 +17,7 @@ - Write - Crayon - Trash + - Recyclable - type: SpaceGarbage - type: UserInterface interfaces: @@ -31,17 +34,8 @@ abstract: true parent: CrayonInedible id: Crayon - name: crayon description: A colourful crayon. Looks tasty. Mmmm... components: - - type: Sprite - sprite: Objects/Fun/crayons.rsi - - type: Item - sprite: Objects/Fun/crayons.rsi - size: Tiny - - type: Tag - tags: - - Recyclable - type: Edible - type: FlavorProfile flavors: @@ -56,24 +50,7 @@ - ReagentId: MindbreakerToxin Quantity: 2 -- type: entity - parent: Crayon - id: CrayonWhite - name: white crayon - components: - - type: Sprite - state: white - - type: Item - heldPrefix: white - - type: Crayon - color: white - - type: Tag - tags: - - Write - - Crayon - - CrayonWhite - - Recyclable - - Trash +# special crayons - type: entity parent: Crayon @@ -108,16 +85,11 @@ selectableColor: true - type: LimitedCharges maxCharges: 30 - - type: Tag - tags: - - Write - - Crayon - - Recyclable - - Trash - type: entity parent: CrayonRainbow id: CrayonInfinite # should not be player available to prevent decal spam + categories: [ DoNotMap ] name: infinite crayon components: - type: Crayon @@ -139,14 +111,28 @@ deleteEmpty: false color: Red selectableColor: true - - type: LimitedCharges - maxCharges: 30 - type: AutoRecharge rechargeDuration: 5 + +# monocolor crayons + +- type: entity + parent: Crayon + id: CrayonWhite + name: white crayon + components: + - type: Sprite + state: white + - type: Item + heldPrefix: white + - type: Crayon + color: white - type: Tag tags: - Write - Crayon + - CrayonWhite + - Recyclable - Trash - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Fun/darts.yml b/Resources/Prototypes/Entities/Objects/Fun/darts.yml index 4230a36108..0890fcffd5 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/darts.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/darts.yml @@ -1,8 +1,8 @@ - type: entity - name: dart - description: Light throwing dart for playing darts. Don't get in the eye! parent: BaseItem id: Dart + name: dart + description: Light throwing dart for playing darts. Don't get in the eye! components: - type: EmbeddableProjectile minimumSpeed: 3 @@ -66,7 +66,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 30 #excess damage avoids cost of spawning entities. + damage: 50 #excess damage avoids cost of spawning entities. behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] diff --git a/Resources/Prototypes/Entities/Objects/Fun/dice.yml b/Resources/Prototypes/Entities/Objects/Fun/dice.yml index 132f92212e..ff6cc22792 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/dice.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/dice.yml @@ -133,3 +133,46 @@ types: Piercing: 5 # I love this + +# bags + +- type: entity + parent: BaseStorageItem + id: DiceBag + name: bag of dice + description: Contains all the luck you'll ever need. + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: d4Dice + - id: d6Dice + - id: d8Dice + - id: d10Dice + - id: d12Dice + - id: d20Dice + - id: PercentileDie + - type: Sprite + sprite: Objects/Fun/dice.rsi + state: dicebag + - type: Item + size: Small + - type: Storage + grid: + - 0,0,3,1 + whitelist: + tags: + - Dice + +- type: entity + parent: DiceBag + id: MagicDiceBag + name: bag of dice + components: + - type: Sprite + sprite: Objects/Fun/dice.rsi + state: magicdicebag + - type: Storage + grid: + - 0,0,4,3 diff --git a/Resources/Prototypes/Entities/Objects/Fun/dice_bag.yml b/Resources/Prototypes/Entities/Objects/Fun/dice_bag.yml deleted file mode 100644 index 41cea1412c..0000000000 --- a/Resources/Prototypes/Entities/Objects/Fun/dice_bag.yml +++ /dev/null @@ -1,40 +0,0 @@ -- type: entity - parent: BaseStorageItem - id: DiceBag - name: bag of dice - description: Contains all the luck you'll ever need. - components: - - type: EntityTableContainerFill - containers: - storagebase: !type:AllSelector - children: - - id: d4Dice - - id: d6Dice - - id: d8Dice - - id: d10Dice - - id: d12Dice - - id: d20Dice - - id: PercentileDie - - type: Sprite - sprite: Objects/Fun/dice.rsi - state: dicebag - - type: Item - size: Small - - type: Storage - grid: - - 0,0,3,1 - whitelist: - tags: - - Dice - -- type: entity - parent: DiceBag - id: MagicDiceBag - name: bag of dice - components: - - type: Sprite - sprite: Objects/Fun/dice.rsi - state: magicdicebag - - type: Storage - grid: - - 0,0,4,3 diff --git a/Resources/Prototypes/Entities/Objects/Fun/error.yml b/Resources/Prototypes/Entities/Objects/Fun/error.yml deleted file mode 100644 index 75507e69f3..0000000000 --- a/Resources/Prototypes/Entities/Objects/Fun/error.yml +++ /dev/null @@ -1,43 +0,0 @@ -- type: entity - parent: BaseItem - id: Error - name: error - description: Hmmmm. Something went wrong. - components: - - type: Sprite - sprite: error.rsi - state: error - - type: Edible - - type: SolutionContainerManager - solutions: - food: - maxVol: 26 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - type: Slippery - slipData: - knockdownTime: 3 - launchForwardsMultiplier: 3 - - type: StepTrigger - intersectRatio: 0.2 - - type: CollisionWake - enabled: false - - type: Physics - bodyType: Dynamic - - type: Fixtures - fixtures: - slips: - shape: - !type:PhysShapeAabb - bounds: "-0.4,-0.3,0.4,0.3" - hard: false - layer: - - SlipLayer - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.4,-0.3,0.4,0.3" - density: 30 - mask: - - ItemMask diff --git a/Resources/Prototypes/Entities/Objects/Fun/orbs.yml b/Resources/Prototypes/Entities/Objects/Fun/orbs.yml new file mode 100644 index 0000000000..d155453186 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Fun/orbs.yml @@ -0,0 +1,106 @@ +# When adding new orbs, also add it to id: AllMiscToysTable +# Spherical objects of incredible* powers + +# Do not make this easily obtainable because if more than 6 of them are on the screen +# at the same time it will break the distortion shader. +- type: entity + parent: BaseItem + id: SingularityToy + name: singuloth-brand toy + description: Mass-produced by a sadistic corporate conglomerate! + components: + - type: Sprite + sprite: Objects/Fun/toy_singularity.rsi + state: icon + - type: Icon + sprite: Objects/Fun/toy_singularity.rsi + state: icon + - type: SingularityDistortion + intensity: 25 + falloffPower: 2.6 + - type: Item + size: Normal + inhandVisuals: + left: + - state: singu-inhand-left + shader: unshaded + right: + - state: singu-inhand-right + shader: unshaded + +- type: entity + parent: BaseItem + id: TeslaToy + name: Teddy Tesla + description: The favorite toy of the great engineer Nikola Tesla. + components: + - type: Sprite + sprite: Structures/Power/Generation/Tesla/energy_miniball.rsi + layers: + - state: tesla_projectile + shader: unshaded + - type: Item + inhandVisuals: + left: + - state: tesla-inhand-left + shader: unshaded + right: + - state: tesla-inhand-right + shader: unshaded + - type: PointLight + enabled: true + radius: 5 + color: "#4080FF" + - type: Electrified + shockDamage: 2 + shockTime: 0.8 + requirePower: false + - type: EmitSoundOnCollide + sound: + path: /Audio/Effects/Lightning/lightningshock.ogg + params: + variation: 0.65 + volume: -10 + +- type: entity + parent: [ BaseItem, BaseMagicalContraband ] + id: PonderingOrb + name: pondering orb + description: Ponderous, man... Really ponderous. + components: + - type: Sprite + sprite: Objects/Fun/pondering_orb.rsi + layers: + - state: icon + shader: unshaded + - type: PointLight + radius: 2 + color: "#00CCFF" + - type: Item + size: Normal + sprite: Objects/Fun/pondering_orb.rsi + - type: TileFrictionModifier + modifier: 0.001 + +# The true orb +- type: entity + parent: PonderingOrb + id: PonderingOrbWizard + name: pondering orb + description: Ponderous, man... Really ponderous. Magically shows the station's camera network. + suffix: Wizard + components: + - type: ActivatableUI + requireActiveHand: false + inHandsOnly: true + key: enum.SurveillanceCameraMonitorUiKey.Key + - type: UserInterface + interfaces: + enum.SurveillanceCameraMonitorUiKey.Key: + type: SurveillanceCameraMonitorBoundUserInterface + - type: DeviceNetwork + deviceNetId: Wired + receiveFrequencyId: SurveillanceCamera + transmitFrequencyId: SurveillanceCamera + - type: WiredNetworkConnection + - type: SurveillanceCameraMonitor diff --git a/Resources/Prototypes/Entities/Objects/Fun/pai.yml b/Resources/Prototypes/Entities/Objects/Fun/pai.yml index 9967eb3a30..f1ae250c54 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/pai.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/pai.yml @@ -188,6 +188,8 @@ graph: PotatoAI node: potatoai +# PAI Actions + - type: entity parent: ActionIntrinsicStore id: ActionPAIOpenShop diff --git a/Resources/Prototypes/Entities/Objects/Fun/puppet.yml b/Resources/Prototypes/Entities/Objects/Fun/puppet.yml deleted file mode 100644 index 01a15d2e5b..0000000000 --- a/Resources/Prototypes/Entities/Objects/Fun/puppet.yml +++ /dev/null @@ -1,42 +0,0 @@ -- type: entity - parent: [ BaseItem, MobCombat ] - id: MrChips - name: mr chips - suffix: Dummy - description: It's a dummy, dummy! - components: - - type: Sprite - sprite: Objects/Fun/mrchips.rsi - layers: - - state: icon - - type: Input - context: "human" - - type: DoAfter - - type: VentriloquistPuppet - - type: Item - size: Normal - - type: Muted - - type: TypingIndicator - proto: robot - - type: Actions - - type: MobState - allowedStates: - - Alive - - type: MeleeWeapon - soundHit: - path: /Audio/Weapons/boxingpunch1.ogg - angle: 30 - animation: WeaponArcPunch - damage: - types: - Blunt: 2 - -- type: entity - parent: MrChips - id: MrDips - name: mr dips - components: - - type: Sprite - sprite: Objects/Fun/mrdips.rsi - layers: - - state: icon diff --git a/Resources/Prototypes/Entities/Objects/Fun/skub.yml b/Resources/Prototypes/Entities/Objects/Fun/skub.yml deleted file mode 100644 index ce73d4f3ef..0000000000 --- a/Resources/Prototypes/Entities/Objects/Fun/skub.yml +++ /dev/null @@ -1,38 +0,0 @@ -- type: entity - parent: BaseItem - id: Skub - name: skub - description: Skub is the fifth Chaos God. - components: - - type: Sprite - sprite: Objects/Misc/skub.rsi - state: icon - - type: Tag - tags: - - Payload - - type: Item - sprite: Objects/Misc/skub.rsi - - type: EmitSoundOnUse - sound: - collection: Skub - - type: EmitSoundOnLand - sound: - collection: Skub - - type: EmitSoundOnTrigger - sound: - collection: Skub - - type: EmitSoundOnActivate - sound: - collection: Skub - - type: EmitSoundOnCollide - sound: - collection: Skub - - type: MeleeWeapon - soundHit: - collection: Skub - damage: - types: - Blunt: 0 - hidden: true - - type: UseDelay - delay: 2.0 diff --git a/Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml b/Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml deleted file mode 100644 index 4392103805..0000000000 --- a/Resources/Prototypes/Entities/Objects/Fun/snap_pops.yml +++ /dev/null @@ -1,62 +0,0 @@ -- type: entity - parent: BaseItem - id: SnapPop - name: snap pop - description: Throw it at the floor and listen to it POP! - components: - - type: Sprite - sprite: Objects/Fun/snap_pops.rsi - state: icon - - type: Item - size: Tiny - - type: Damageable - damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 1 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - !type:PlaySoundBehavior - sound: - path: /Audio/Effects/snap.ogg - - !type:ExplodeBehavior - - type: DamageOnLand - damage: - types: - Blunt: 3 - - type: Explosive - explosionType: Default - # Cosmetic explosion :tf: - maxIntensity: 0.01 - intensitySlope: 1 - totalIntensity: 0.01 - - type: Construction - graph: SnapPopExplosiveGraph - node: snapPop - -- type: entity - parent: BaseStorageItem - id: SnapPopBox - name: snap pop box - description: Contains snap pops for a few minutes of popping fun! - components: - - type: Item - size: Normal - - type: Sprite - sprite: Objects/Fun/snap_pops.rsi - state: box - - type: Storage - grid: - - 0,0,4,3 - areaInsert: true - maxItemSize: Tiny - - type: EntityTableContainerFill - containers: - storagebase: - id: SnapPop - amount: 5 - - type: Dumpable - diff --git a/Resources/Prototypes/Entities/Objects/Fun/sound_maker.yml b/Resources/Prototypes/Entities/Objects/Fun/sound_maker.yml new file mode 100644 index 0000000000..60034f1b01 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Fun/sound_maker.yml @@ -0,0 +1,493 @@ +# When adding new sound makers, also add it to id: AllToySoundMakerTable +# These entities exist to make a (funny) sound and not much else + +## Bike horns + +- type: entity + parent: BaseItem + id: BikeHorn + name: bike horn + description: A horn off of a bicycle. + components: + - type: Sprite + sprite: Objects/Fun/bikehorn.rsi + state: icon + - type: Item + sprite: Objects/Fun/bikehorn.rsi + size: Tiny + - type: Clothing + sprite: Objects/Fun/bikehorn.rsi + slots: [Belt] + quickEquip: false + - type: UseDelay + delay: 0.5 + - type: EmitSoundOnUse + sound: &SoundBikeHorn + collection: BikeHorn + params: + variation: 0.125 + - type: EmitSoundOnLand + sound: *SoundBikeHorn + - type: EmitSoundOnTrigger + sound: *SoundBikeHorn + - type: EmitSoundOnActivate + sound: *SoundBikeHorn + - type: EmitSoundOnCollide + sound: *SoundBikeHorn + - type: Tag + tags: + - Payload # yes, you can make re-usable prank grenades + - BikeHorn + - type: MeleeWeapon + wideAnimationRotation: 135 + soundHit: *SoundBikeHorn + damage: + types: + Blunt: 0 + - type: Tool + qualities: + - Honking + useSound: *SoundBikeHorn + +- type: entity + parent: BaseItem + id: CluwneHorn + name: broken bike horn + description: A broken horn off of a bicycle. + components: + - type: UseDelay + - type: Sprite + sprite: Objects/Fun/cluwnehorn.rsi + state: icon + - type: Item + sprite: Objects/Fun/cluwnehorn.rsi + size: Tiny + - type: Clothing + sprite: Objects/Fun/cluwnehorn.rsi + slots: [Belt] + quickEquip: false + - type: Tag + tags: + - Payload # yes, you can make re-usable prank grenades + - CluwneHorn + - type: EmitSoundOnTrigger + sound: &SoundCluwneHorn + collection: CluwneHorn + params: + variation: 0.125 + - type: EmitSoundOnUse + sound: *SoundCluwneHorn + - type: EmitSoundOnActivate + sound: *SoundCluwneHorn + - type: EmitSoundOnCollide + sound: *SoundCluwneHorn + - type: EmitSoundOnLand + sound: *SoundCluwneHorn + - type: MeleeWeapon + wideAnimationRotation: 135 + soundHit: *SoundCluwneHorn + damage: + types: + Blunt: 5 + +- type: entity + parent: BikeHorn + id: GoldenBikeHorn + name: golden honker + description: A happy honk prize, pray to the gods for your reward. + categories: [ DoNotMap ] + components: + - type: Sprite + sprite: Objects/Fun/goldbikehorn.rsi + state: icon + - type: Item + sprite: Objects/Fun/goldbikehorn.rsi + size: Tiny + - type: Clothing + sprite: Objects/Fun/goldbikehorn.rsi + slots: [Belt] + - type: Prayable + - type: StaticPrice + price: 100 # reduced price due to heisentests + - type: PointLight + radius: 1.2 + energy: 2.2 + castShadows: false + color: "#ffca1b" + +- type: entity + parent: BikeHorn + id: BananiumHorn + name: bananium horn + description: An air horn made from bananium. + components: + - type: Sprite + sprite: Objects/Fun/bananiumhorn.rsi + state: icon + - type: Item + sprite: Objects/Fun/bananiumhorn.rsi + size: Small + - type: Clothing + sprite: Objects/Fun/bananiumhorn.rsi + slots: [Belt] + quickEquip: false + - type: UseDelay + delay: 3 + - type: EmitSoundOnUse + sound: &SoundBananiumHorn + collection: BananiumHorn + params: + variation: 0.246 + - type: EmitSoundOnLand + sound: *SoundBananiumHorn + - type: EmitSoundOnTrigger + sound: *SoundBananiumHorn + - type: EmitSoundOnActivate + sound: *SoundBananiumHorn + - type: EmitSoundOnCollide + sound: *SoundBananiumHorn + - type: MeleeWeapon + wideAnimationRotation: 135 + soundHit: *SoundBananiumHorn + damage: + types: + Blunt: 0 + hidden: true + - type: Construction + graph: BananiumHorn + node: bananiumHorn + - type: Tool + useSound: *SoundBananiumHorn + +- type: entity + parent: BaseItem + id: PushHorn + name: push horn + description: This powerful bikehorn is sure to blast frowns away. + components: + - type: Sprite + sprite: Objects/Fun/push_horn.rsi + state: icon + - type: Item + sprite: Objects/Fun/push_horn.rsi + size: Tiny + - type: Clothing + sprite: Objects/Fun/push_horn.rsi + slots: [Belt] + quickEquip: false + - type: EmitSoundOnUse + handle: false + sound: "/Audio/Items/Toys/pushHornHonk.ogg" + - type: EmitSoundOnLand + sound: "/Audio/Items/Toys/pushHornFloor.ogg" + - type: UseDelay + delay: 10 + - type: TriggerOnUse + - type: RepulseAttractOnTrigger + speed: 50 + range: 3.5 + whitelist: + components: + - MobMover + - type: SpawnOnTrigger + proto: EffectGravityPulse + predicted: true + +## Whistles + +- type: entity + abstract: true + parent: BaseItem + id: BaseWhistle + name: whistle + description: Someone forgot to turn off a kettle? + components: + - type: Item + sprite: Objects/Fun/whistles.rsi + size: Tiny + - type: Sprite + sprite: Objects/Fun/whistles.rsi + - type: Clothing + sprite: Objects/Fun/whistles.rsi + quickEquip: false + slots: neck + - type: UseDelay + delay: 3 + - type: EmitSoundOnUse + sound: + collection: BaseWhistle + - type: Whistle + distance: 3 + +- type: entity + parent: BaseWhistle + id: Whistle + components: + - type: Sprite + state: whistle + +- type: entity + parent: BaseWhistle + id: SecurityWhistle + description: The sound of it brings fear. + components: + - type: Sprite + state: sec + - type: Clothing + equippedPrefix: sec + - type: Whistle + distance: 5 + +- type: entity + parent: [BaseWhistle, BaseMinorContraband] + id: SyndicateWhistle + name: trench whistle + description: A whistle used by Syndicate commanders to draw attention. Avanti! + components: + - type: Sprite + state: trench + - type: Clothing + equippedPrefix: trench + - type: EmitSoundOnUse + sound: + collection: TrenchWhistle + - type: Whistle + distance: 15 # Let your enemies hear the sound of death approaching + +## Other + +- type: entity + abstract: true + parent: [BaseItem, BaseStash] + id: BaseRubberToy + components: + - type: Tag + tags: + - Payload + - type: UseDelay + delay: 1.0 + - type: MeleeWeapon + wideAnimationRotation: 180 + soundHit: + collection: ToySqueak + damage: + types: + Blunt: 0 + hidden: true + - type: PhysicalComposition + materialComposition: + Plastic: 25 + - type: StaticPrice + price: 5 + +- type: entity + parent: BaseRubberToy + id: ToyRubberDuck + name: rubber ducky + description: Not carried here by ocean currents. + components: + - type: Sprite + sprite: Objects/Fun/ducky.rsi + state: icon + - type: Clothing + quickEquip: false + sprite: Objects/Fun/ducky.rsi + slots: + - HEAD + - type: Item + size: Tiny + - type: EmitSoundOnUse + sound: &SoundQuack + path: /Audio/Items/Toys/quack.ogg + - type: EmitSoundOnLand + sound: *SoundQuack + - type: EmitSoundOnActivate + sound: *SoundQuack + - type: EmitSoundOnTrigger + sound: *SoundQuack + - type: EmitSoundOnCollide + sound: *SoundQuack + - type: MeleeWeapon + soundHit: *SoundQuack + - type: Tag + tags: + - ToyRubberDuck + +- type: entity + parent: BaseRubberToy + id: RubberChicken + name: rubber chicken + description: A stress inducing parody of nature's most delectable avian. + components: + - type: Sprite + sprite: Objects/Fun/rubber_chicken.rsi + state: icon + - type: EmitSoundOnUse + sound: &SoundRubberChicken + collection: RubberChicken + params: + variation: 0.125 + - type: EmitSoundOnLand + sound: *SoundRubberChicken + - type: EmitSoundOnActivate + sound: *SoundRubberChicken + - type: EmitSoundOnCollide + sound: *SoundRubberChicken + - type: EmitSoundOnTrigger + sound: *SoundRubberChicken + - type: MeleeWeapon + wideAnimationRotation: 110 + soundHit: *SoundRubberChicken + +- type: entity + parent: BaseItem + id: NewtonCradle + name: newton cradle + description: A device bored paper pushers use to remind themselves that time did not stop yet. Contains gravity. + components: + - type: Sprite + sprite: Objects/Fun/newton_cradle.rsi + state: icon-off + - type: Item + sprite: Objects/Fun/newton_cradle.rsi + storedRotation: -90 + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ToggleableVisuals.Enabled: + enum.ToggleableVisuals.Layer: + True: { state: icon } + False: { state: icon-off } + - type: ItemToggle + - type: UseDelay + delay: 1 + - type: ItemToggleActiveSound + activeSound: + path: /Audio/Items/newton_cradle.ogg + params: + volume: -9 + maxDistance: 3 + +- type: entity + parent: BaseItem + id: ClownRecorder + name: clown recorder + description: When you just can't get those laughs coming the natural way! + components: + - type: Sprite + sprite: Objects/Fun/clownrecorder.rsi + state: icon + - type: EmitSoundOnUse + sound: &SoundClownRecorder + collection: ClownRecorder + - type: EmitSoundOnLand + sound: *SoundClownRecorder + - type: EmitSoundOnActivate + sound: *SoundClownRecorder + - type: EmitSoundOnTrigger + sound: *SoundClownRecorder + - type: EmitSoundOnCollide + sound: *SoundClownRecorder + - type: UseDelay + delay: 30.0 + - type: Tag + tags: + - ClownRecorder + - Payload + +- type: entity + parent: BaseItem + id: WhoopieCushion + name: whoopie cushion + description: A practical joke device involving flatulence humour. + components: + - type: Sprite + sprite: Objects/Fun/whoopie.rsi + state: icon + - type: Tag + tags: + - Payload + - type: EmitSoundOnUse + sound: &SoundParp + collection: Parp + params: + variation: 0.125 + - type: EmitSoundOnLand + sound: *SoundParp + - type: EmitSoundOnActivate + sound: *SoundParp + - type: EmitSoundOnCollide + sound: *SoundParp + - type: UseDelay + delay: 0.8 + - type: Slippery + staminaDamage: 0 + frictionStatusTime: 0 + slipData: + stunTime: 0 + knockdownTime: 0 + launchForwardsMultiplier: 0 + slipSound: *SoundParp + - type: MeleeWeapon + soundHit: *SoundParp + damage: + types: + Blunt: 0 + - type: StepTrigger + intersectRatio: 0.2 + requiredTriggeredSpeed: 2 + - type: TriggerOnStepTrigger # for payloads, that don't work because of trouble with sound prediction + - type: CollisionWake + enabled: false + - type: Physics + bodyType: Dynamic + - type: Fixtures + fixtures: + slips: + shape: + !type:PhysShapeAabb + bounds: "-0.2,-0.2,0.2,0.2" + hard: false + layer: + - SlipLayer + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.2,-0.2,0.2,0.2" + density: 30 + mask: + - ItemMask + +- type: entity + parent: BaseItem + id: Skub + name: skub + description: Skub is the fifth Chaos God. + components: + - type: Sprite + sprite: Objects/Misc/skub.rsi + state: icon + - type: Tag + tags: + - Payload + - type: Item + sprite: Objects/Misc/skub.rsi + - type: EmitSoundOnUse + sound: &SoundSkub + collection: Skub + - type: EmitSoundOnLand + sound: *SoundSkub + - type: EmitSoundOnTrigger + sound: *SoundSkub + - type: EmitSoundOnActivate + sound: *SoundSkub + - type: EmitSoundOnCollide + sound: *SoundSkub + - type: MeleeWeapon + soundHit: *SoundSkub + damage: + types: + Blunt: 0 + hidden: true + - type: UseDelay + delay: 2.0 diff --git a/Resources/Prototypes/Entities/Objects/Fun/spectral_locator.yml b/Resources/Prototypes/Entities/Objects/Fun/spectral_locator.yml deleted file mode 100644 index 329d278bc8..0000000000 --- a/Resources/Prototypes/Entities/Objects/Fun/spectral_locator.yml +++ /dev/null @@ -1,57 +0,0 @@ -- type: entity - id: SpectralLocatorUnpowered - parent: BaseItem - name: spectral locator - description: Appears to be a modified anomaly locator. Seems very old. - suffix: Always Powered - components: - - type: Sprite - sprite: Objects/Fun/spectrallocator.rsi - layers: - - state: icon - - state: screen - shader: unshaded - visible: false - map: ["enum.ToggleableVisuals.Layer"] - - type: Appearance - - type: GenericVisualizer - visuals: - enum.ToggleableVisuals.Enabled: - enum.ToggleableVisuals.Layer: - True: { visible: true } - False: { visible: false } - - type: ItemToggle - - type: ProximityBeeper - - type: ProximityDetector - range: 12 - components: - - type: Spectral # reacts to AI eye, intentional - - type: Beeper - isMuted: true - minBeepInterval: 0.25 - maxBeepInterval: 0.5 - beepSound: - path: "/Audio/Items/locator_beep.ogg" - params: - maxDistance: 1 - volume: -8 - -- type: entity - id: SpectralLocator - parent: [ SpectralLocatorUnpowered, PowerCellSlotSmallItem ] - suffix: "" - components: - - type: PowerCellDraw - drawRate: 1 - useCharge: 0 - - type: ToggleCellDraw - -- type: entity - id: SpectralLocatorEmpty - parent: SpectralLocator - suffix: Empty - components: - - type: ItemSlots - slots: - cell_slot: - name: power-cell-slot-component-slot-name-default diff --git a/Resources/Prototypes/Entities/Objects/Fun/sports.yml b/Resources/Prototypes/Entities/Objects/Fun/sports.yml new file mode 100644 index 0000000000..b78198f83e --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Fun/sports.yml @@ -0,0 +1,159 @@ +# When adding new sports, also add them to id: AllMiscToysTable +# File for SPORTS and the various oddly shaped objects used while playing them + +## Balls + +- type: entity + abstract: true + id: BaseSportsBall # How about that game with the pigskin? + components: + - type: Catchable + catchChance: 0.8 + catchSuccessSound: &SoundSportsBounce + path: /Audio/Effects/Footsteps/bounce.ogg + - type: EmitSoundOnCollide + sound: *SoundSportsBounce + - type: EmitSoundOnLand + sound: *SoundSportsBounce + +- type: entity + parent: [ BaseItem, BaseSportsBall ] + id: Basketball + name: basketball + description: Where dah courts at? + components: + - type: Sprite + sprite: Objects/Fun/Balls/basketball.rsi + state: icon + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeCircle + radius: 0.25 + density: 20 + mask: + - ItemMask + restitution: 0.8 # bouncy + friction: 0.2 + - type: Item + size: Normal + sprite: Objects/Fun/Balls/basketball.rsi + - type: TileFrictionModifier + modifier: 0.5 + +- type: entity + parent: [ BaseItem, BaseSportsBall ] + id: Football + name: football + description: Otherwise known as a handegg. + components: + - type: Sprite + sprite: Objects/Fun/Balls/football.rsi + state: icon + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeCircle + radius: 0.25 + density: 20 + mask: + - ItemMask + restitution: 0.5 # a little bouncy + friction: 0.2 + - type: Item + size: Small + sprite: Objects/Fun/Balls/football.rsi + +- type: entity + parent: [ BaseItem, BaseSportsBall ] + id: TennisBall + name: tennis ball + description: A fuzzy orb of endless betrayal. + components: + - type: Sprite + sprite: Objects/Fun/Balls/tennisball.rsi + state: icon + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeCircle + radius: 0.25 + density: 20 + mask: + - ItemMask + restitution: 0.5 # a little bouncy + friction: 0.2 + - type: Item + size: Small + sprite: Objects/Fun/Balls/tennisball.rsi + - type: EmitSoundOnUse + sound: + collection: ToySqueak + params: + volume: -4 + - type: UseDelay + - type: Clothing + slots: [mask] + - type: Tag + tags: + - PetWearable + +- type: entity + parent: [ BaseItem, BaseSportsBall ] + id: BeachBall + name: beach ball + description: The simple beach ball is one of Nanotrasen's most popular products. 'Why do we make beach balls? Because we can! (TM)' - Nanotrasen + components: + - type: Sprite + sprite: Objects/Fun/Balls/beach_ball.rsi + state: icon + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeCircle + radius: 0.3 + position: "0,-0.2" + density: 20 + mask: + - ItemMask + restitution: 0.2 # not bouncy + friction: 0.2 + - type: Item + size: Normal + sprite: Objects/Fun/Balls/beach_ball.rsi + - type: TileFrictionModifier + modifier: 0.05 + +- type: entity + parent: BeachBall + id: EvilBeachBall + suffix: EVIL/ADMEME + description: Someone's drawn ">:3c" on the side of this beach ball in indelible ink. + components: + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeCircle + radius: 0.3 + position: "0,-0.2" + density: 20 + mask: + - ThrownItem + restitution: 0.5 # very bouncy + friction: 0.2 + - type: LaunchOnTrigger + impulse: 100.0 + keysIn: + - OnCollide + - type: StaminaDamageOnTrigger + stamina: 25.0 + keysIn: + - OnCollide + targetUser: true + - type: DamageOnTrigger + damage: + types: + Blunt: 20 + keysIn: + - OnCollide + targetUser: true diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index 52d13d6214..65c47dfd5c 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -1,974 +1,74 @@ -## Base stash +# When adding new toys, also add it somewhere nested in id: AllToysTable +# Catchall file for toys which don't have a strong grouping (only 1 or 2 prototypes) - type: entity - id: BaseStash - abstract: true - components: - - type: Speech - speechVerb: Default # for pais (In the secret stash) - - type: SecretStash - secretStashName: secret-stash-plushie - blacklist: - components: - - SecretStash # Prevents being able to insert plushies inside each other (infinite plush)! - tags: - - QuantumSpinInverter # It will cause issues with the grinder... - - type: ToolOpenable - openToolQualityNeeded: Slicing - closeToolQualityNeeded: Slicing # Should probably be stitching or something if that gets added - name: secret-stash-plushie - - type: ContainerContainer - containers: - stash: !type:ContainerSlot {} - -## Rubber - -- type: entity - parent: [BaseItem, BaseStash] - id: BaseRubberToy - abstract: true - components: - - type: Tag - tags: - - Payload - - type: UseDelay - delay: 1.0 - - type: MeleeWeapon - wideAnimationRotation: 180 - soundHit: - collection: ToySqueak - damage: - types: - Blunt: 0 - hidden: true - - type: PhysicalComposition - materialComposition: - Plastic: 25 - - type: StaticPrice - price: 5 - - type: ContainerContainer - containers: - stash: !type:ContainerSlot {} - -- type: entity - parent: BaseRubberToy - id: ToyRubberDuck - name: rubber ducky - description: Not carried here by ocean currents. - components: - - type: Sprite - sprite: Objects/Fun/ducky.rsi - state: icon - - type: Clothing - quickEquip: false - sprite: Objects/Fun/ducky.rsi - slots: - - HEAD - - type: Item - size: Tiny - - type: EmitSoundOnUse - sound: - path: /Audio/Items/Toys/quack.ogg - - type: EmitSoundOnLand - sound: - path: /Audio/Items/Toys/quack.ogg - - type: EmitSoundOnActivate - sound: - path: /Audio/Items/Toys/quack.ogg - - type: EmitSoundOnTrigger - sound: - path: /Audio/Items/Toys/quack.ogg - - type: EmitSoundOnCollide - sound: - path: /Audio/Items/Toys/quack.ogg - - type: Tag - tags: - - ToyRubberDuck - -- type: entity - parent: BaseRubberToy - id: RubberChicken - name: rubber chicken - description: A stress inducing parody of nature's most delectable avian. - components: - - type: Sprite - sprite: Objects/Fun/rubber_chicken.rsi - state: icon - - type: EmitSoundOnUse - sound: - collection: RubberChicken - params: - variation: 0.125 - - type: EmitSoundOnLand - sound: - collection: RubberChicken - params: - variation: 0.125 - - type: EmitSoundOnActivate - sound: - collection: RubberChicken - params: - variation: 0.125 - - type: EmitSoundOnCollide - sound: - collection: RubberChicken - params: - variation: 0.125 - - type: EmitSoundOnTrigger - sound: - collection: RubberChicken - params: - variation: 0.125 - - type: MeleeWeapon - wideAnimationRotation: 110 - soundHit: - collection: RubberChicken - params: - variation: 0.125 - -- type: entity - parent: BasePlushie - id: ToyIan - name: ian toy - description: Unable to eat, but just as fluffy as the real guy! - components: - - type: Sprite - sprite: Objects/Fun/toy_ian.rsi - state: icon - - type: Clothing - quickEquip: false - sprite: Objects/Fun/toy_ian.rsi - slots: - - HEAD - clothingVisuals: - head: - - state: equipped-HELMET - offset: "0, 0.06" - - type: Item - size: Tiny - - type: EmitSoundOnUse - sound: - path: /Audio/Items/Toys/ian.ogg - - type: EmitSoundOnLand - sound: - path: /Audio/Items/Toys/ian.ogg - - type: EmitSoundOnActivate - sound: - path: /Audio/Items/Toys/ian.ogg - - type: EmitSoundOnTrigger - sound: - path: /Audio/Items/Toys/ian.ogg - - type: EmitSoundOnCollide - sound: - path: /Audio/Items/Toys/ian.ogg - - type: MeleeWeapon - soundHit: - path: /Audio/Items/Toys/ian.ogg - - type: Edible - useSound: - path: /Audio/Items/Toys/ian.ogg - - type: FoodSequenceElement - entries: - CottonBurger: IanPlushie - -## Toyweapons - -- type: entity - abstract: true parent: BaseItem - id: FoamWeaponBase + id: SnapPop + name: snap pop + description: Throw it at the floor and listen to it POP! components: - type: Sprite - - type: Item - size: Normal - - type: PacifismAllowedGun - -- type: entity - parent: FoamWeaponBase - id: FoamCrossbow - name: foam crossbow - description: Aiming this at Security may get you filled with lead. - components: - - type: Sprite - sprite: Objects/Fun/Foam/foam_crossbow.rsi + sprite: Objects/Fun/snap_pops.rsi state: icon - type: Item - size: Normal - sprite: Objects/Fun/Foam/foam_crossbow.rsi - - type: Gun - fireRate: 0.5 - selectedMode: SemiAuto - availableModes: - - SemiAuto - soundGunshot: - path: /Audio/Weapons/Guns/Gunshots/energycrossbow_shoot.ogg - - type: BallisticAmmoProvider - whitelist: - tags: - - BulletFoam - capacity: 1 - soundInsert: - path: /Audio/Weapons/Guns/MagIn/energycrossbow_reload.ogg - - type: ContainerContainer - containers: - ballistic-ammo: !type:Container - ents: [] - -- type: entity - parent: BaseItem - id: ToyGunBase - name: ToyGunBase - description: A rooty tooty point and shooty. - abstract: true - components: - - type: Sprite - -- type: entity - parent: ToyGunBase - id: RevolverCapGun - name: cap gun - description: Looks almost like the real thing! Ages 8 and up. - components: - - type: Sprite - sprite: Objects/Fun/capgun.rsi - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - type: Item - shape: - - 0,0,1,0 - - 0,1,0,1 - storedOffset: -2,-7 - sprite: Objects/Fun/capgun.rsi - - type: Tag - tags: - - Sidearm - - ToySidearm - - type: Gun - selectedMode: SemiAuto - availableModes: - - SemiAuto - fireRate: 2 - soundGunshot: - path: /Audio/Weapons/Guns/Gunshots/revolver.ogg - params: - volume: 2.25 - clumsyProof: true - - type: RevolverAmmoProvider - whitelist: - tags: - - CartridgeCap - - SpeedLoaderCap - proto: CartridgeCap - capacity: 6 - chambers: [ True, True, True, True, True, True ] - ammoSlots: [ null, null, null, null, null, null ] - soundInsert: - path: /Audio/Weapons/Guns/MagIn/revolver_magin.ogg - - type: ContainerContainer - containers: - revolver-ammo: !type:Container - -- type: entity - parent: RevolverCapGun - id: RevolverCapGunFake - name: cap gun - suffix: Fake - description: Looks almost like the real thing! Ages 8 and up. - components: - - type: RevolverAmmoProvider - whitelist: - tags: - - CartridgeCap - - SpeedLoaderCap - - CartridgeMagnum - - SpeedLoaderMagnum - proto: CartridgeMagnumAP - -- type: entity - parent: BaseItem - id: FoamBlade - name: foamblade - description: It says "Sternside Changs number 1 fan" on it. - components: - - type: Sprite - sprite: Objects/Fun/Foam/foam_blade.rsi - state: icon - - type: MeleeWeapon - attackRate: 1.5 - angle: 0 - animation: WeaponArcThrust - wideAnimationRotation: 90 - damage: - types: - Blunt: 0 - - type: Item - size: Small - sprite: Objects/Fun/Foam/foam_blade.rsi - - type: UseDelay - -# Balloons - -- type: entity - parent: BaseItem - id: BaseBalloon - abstract: true - components: - - type: Sprite - noRot: true - - type: Item - size: Small - - type: EmitSoundOnCollide - sound: - path: /Audio/Effects/balloon_hits.ogg - - type: EmitSoundOnLand - sound: - path: /Audio/Effects/balloon_hits.ogg + size: Tiny - type: Damageable damageContainer: Inorganic - - type: TileFrictionModifier - modifier: 0.3 - - type: Tag - tags: - - Balloon - -- type: entity - parent: BaseBalloon - id: BalloonSyn - name: syndie balloon - description: Handed out to the bravest souls who survived the "atomic twister" ride at Syndieland. - components: - - type: Sprite - sprite: Objects/Fun/Balloons/syndicate.rsi - state: icon - - type: Item - sprite: Objects/Fun/Balloons/syndicate.rsi - - type: StaticPrice - price: 100 # Entertainment. - -- type: entity - parent: BaseBalloon - id: BalloonNT - name: nanotrasen balloon - description: Specially designed to inflict maximum psychological damage to Syndicate operatives. - components: - - type: Sprite - sprite: Objects/Fun/Balloons/nanotrasen.rsi - state: icon - - type: Item - sprite: Objects/Fun/Balloons/nanotrasen.rsi - -- type: entity - parent: BaseBalloon - id: BalloonCorgi - name: corgi balloon - description: Just like owning a real dog - but a lot floatier. - components: - - type: Sprite - sprite: Objects/Fun/Balloons/corgi.rsi - state: icon - - type: Item - sprite: Objects/Fun/Balloons/corgi.rsi - -# MISC - -- type: entity - parent: BaseItem - id: Basketball - name: basketball - description: Where dah courts at? - components: - - type: Sprite - sprite: Objects/Fun/Balls/basketball.rsi - state: icon - - type: Fixtures - fixtures: - fix1: - shape: !type:PhysShapeCircle - radius: 0.25 - density: 20 - mask: - - ItemMask - restitution: 0.8 # bouncy - friction: 0.2 - - type: Catchable - catchChance: 0.8 - catchSuccessSound: - path: /Audio/Effects/Footsteps/bounce.ogg - - type: EmitSoundOnCollide - sound: - path: /Audio/Effects/Footsteps/bounce.ogg - - type: Item - size: Normal - sprite: Objects/Fun/Balls/basketball.rsi - - type: TileFrictionModifier - modifier: 0.5 - -- type: entity - parent: BaseItem - id: Football - name: football - description: Otherwise known as a handegg. - components: - - type: Sprite - sprite: Objects/Fun/Balls/football.rsi - state: icon - - type: Fixtures - fixtures: - fix1: - shape: !type:PhysShapeCircle - radius: 0.25 - density: 20 - mask: - - ItemMask - restitution: 0.5 # a little bouncy - friction: 0.2 - - type: Catchable - catchChance: 0.8 - catchSuccessSound: - path: /Audio/Effects/Footsteps/bounce.ogg - - type: EmitSoundOnCollide - sound: - path: /Audio/Effects/Footsteps/bounce.ogg - - type: Item - size: Small - sprite: Objects/Fun/Balls/football.rsi - -- type: entity - parent: BaseItem - id: TennisBall - name: tennis ball - description: A fuzzy orb of endless betrayal. - components: - - type: Sprite - sprite: Objects/Fun/Balls/tennisball.rsi - state: icon - - type: Fixtures - fixtures: - fix1: - shape: !type:PhysShapeCircle - radius: 0.25 - density: 20 - mask: - - ItemMask - restitution: 0.5 # a little bouncy - friction: 0.2 - - type: Catchable - catchChance: 0.8 - catchSuccessSound: - path: /Audio/Effects/Footsteps/bounce.ogg - - type: EmitSoundOnCollide - sound: - path: /Audio/Effects/Footsteps/bounce.ogg - - type: Item - size: Small - sprite: Objects/Fun/Balls/tennisball.rsi - - type: EmitSoundOnUse - sound: - collection: ToySqueak - params: - volume: -4 - - type: UseDelay - - type: Clothing - slots: [mask] - - type: Tag - tags: - - PetWearable - -- type: entity - parent: BaseItem - id: BeachBall - name: beach ball - description: The simple beach ball is one of Nanotrasen's most popular products. 'Why do we make beach balls? Because we can! (TM)' - Nanotrasen - components: - - type: Sprite - sprite: Objects/Fun/Balls/beach_ball.rsi - state: icon - - type: Fixtures - fixtures: - fix1: - shape: !type:PhysShapeCircle - radius: 0.3 - position: "0,-0.2" - density: 20 - mask: - - ItemMask - restitution: 0.2 # not bouncy - friction: 0.2 - - type: Catchable - catchChance: 0.8 - catchSuccessSound: - path: /Audio/Effects/Footsteps/bounce.ogg - - type: Item - size: Normal - sprite: Objects/Fun/Balls/beach_ball.rsi - - type: TileFrictionModifier - modifier: 0.05 - - type: TriggerOnCollide - fixtureID: fix1 - keyOut: OnCollide - - type: EmitSoundOnTrigger - sound: - path: /Audio/Effects/Footsteps/bounce.ogg - keysIn: - - OnCollide - -- type: entity - parent: BeachBall - id: EvilBeachBall - suffix: EVIL/ADMEME - description: Someone's drawn ">:3c" on the side of this beach ball in indelible ink. - components: - - type: Fixtures - fixtures: - fix1: - shape: !type:PhysShapeCircle - radius: 0.3 - position: "0,-0.2" - density: 20 - mask: - - ThrownItem - restitution: 0.5 # very bouncy - friction: 0.2 - - type: LaunchOnTrigger - impulse: 100.0 - keysIn: - - OnCollide - - type: StaminaDamageOnTrigger - stamina: 25.0 - keysIn: - - OnCollide - targetUser: true - - type: DamageOnTrigger + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 1 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/snap.ogg + - !type:ExplodeBehavior + - type: DamageOnLand damage: types: - Blunt: 20 - keysIn: - - OnCollide - targetUser: true - -- type: entity - parent: BaseItem - id: SingularityToy - name: singuloth-brand toy - description: Mass-produced by a sadistic corporate conglomerate! - components: - - type: Sprite - sprite: Objects/Fun/toy_singularity.rsi - state: icon - - type: Icon - sprite: Objects/Fun/toy_singularity.rsi - state: icon - - type: SingularityDistortion - intensity: 25 - falloffPower: 2.6 - - type: Item - size: Normal - inhandVisuals: - left: - - state: singu-inhand-left - shader: unshaded - right: - - state: singu-inhand-right - shader: unshaded - -- type: entity - parent: BaseItem - id: TeslaToy - name: Teddy Tesla - description: The favorite toy of the great engineer Nikola Tesla. - components: - - type: Sprite - sprite: Structures/Power/Generation/Tesla/energy_miniball.rsi - layers: - - state: tesla_projectile - shader: unshaded - - type: Item - inhandVisuals: - left: - - state: tesla-inhand-left - shader: unshaded - right: - - state: tesla-inhand-right - shader: unshaded - - type: PointLight - enabled: true - radius: 5 - color: "#4080FF" - - type: Electrified - shockDamage: 2 - shockTime: 0.8 - requirePower: false - - type: EmitSoundOnCollide - sound: - path: /Audio/Effects/Lightning/lightningshock.ogg - params: - variation: 0.65 - volume: -10 - -- type: entity - parent: [ BaseItem, BaseMagicalContraband ] - id: PonderingOrb - name: pondering orb - description: Ponderous, man... Really ponderous. - components: - - type: Sprite - sprite: Objects/Fun/pondering_orb.rsi - layers: - - state: icon - shader: unshaded - - type: PointLight - radius: 2 - color: "#00CCFF" - - type: Item - size: Normal - sprite: Objects/Fun/pondering_orb.rsi - - type: TileFrictionModifier - modifier: 0.001 - -- type: entity - parent: PonderingOrb - id: PonderingOrbWizard - name: pondering orb - description: Ponderous, man... Really ponderous. Magically shows the station's camera network. - suffix: Wizard - components: - - type: ActivatableUI - requireActiveHand: false - inHandsOnly: true - key: enum.SurveillanceCameraMonitorUiKey.Key - - type: UserInterface - interfaces: - enum.SurveillanceCameraMonitorUiKey.Key: - type: SurveillanceCameraMonitorBoundUserInterface - - type: DeviceNetwork - deviceNetId: Wired - receiveFrequencyId: SurveillanceCamera - transmitFrequencyId: SurveillanceCamera - - type: WiredNetworkConnection - - type: SurveillanceCameraMonitor - -- type: entity - parent: BaseItem - id: ToySword - name: toy sword - description: New Sandy-Cat plastic sword! Comes with realistic sound and full color! Looks almost like the real thing! - components: - - type: Sprite - sprite: Objects/Weapons/Melee/e_sword.rsi - layers: - - state: e_sword - - state: e_sword_blade - color: "#FFFFFF" - visible: false - shader: unshaded - map: [ "blade" ] - - type: EnergySword - - type: ItemToggle - soundActivate: - path: /Audio/Weapons/ebladeon.ogg - soundDeactivate: - path: /Audio/Weapons/ebladeoff.ogg - - type: ItemToggleActiveSound - activeSound: - path: /Audio/Weapons/ebladehum.ogg - - type: Item - size: Small - sprite: Objects/Weapons/Melee/e_sword-inhands.rsi - - type: UseDelay - delay: 1.0 - - type: PointLight - enabled: false - radius: 2 - energy: 2 - color: white - netsync: false - - type: Appearance - - type: ToggleableVisuals - spriteLayer: blade - inhandVisuals: - left: - - state: inhand-left-blade - shader: unshaded - right: - - state: inhand-right-blade - shader: unshaded - - type: ItemTogglePointLight - - type: DisarmMalus - malus: 0 - - type: StaminaDamageOnHit - damage: 8 - - type: MeleeWeapon - wideAnimationRotation: -135 - damage: - types: - Blunt: 0 - - type: ItemToggleMeleeWeapon - activatedSoundOnHit: - path: /Audio/Weapons/eblade1.ogg - params: - variation: 0.250 - activatedSoundOnHitNoDamage: - path: /Audio/Weapons/eblade1.ogg - params: - variation: 0.250 - activatedSoundOnSwing: - path: /Audio/Weapons/eblademiss.ogg - params: - variation: 0.125 - -- type: entity - parent: BasePlushie - id: ToyAmongPequeno - name: among pequeño - description: Sus! - components: - - type: Sprite - sprite: Objects/Fun/pequeno.rsi - layers: - - state: base - map: [ "enum.DamageStateVisualLayers.Base" ] - - state: visor - - type: Clothing - sprite: Objects/Fun/pequeno.rsi - slots: - - HEAD - clothingVisuals: - head: - - state: equipped-HELMET-body - - state: equipped-HELMET-vis - - type: Item - inhandVisuals: - left: - - state: inhand-left-body - - state: inhand-left-vis - right: - - state: inhand-right-body - - state: inhand-right-vis - - type: RandomSprite - available: - - enum.DamageStateVisualLayers.Base: - base: Sixteen -# - type: FoodSequenceElement - does not work with randomized sprites -# entries: -# CottonBurger: AmongPequeno - - -- type: entity - parent: BaseItem - id: FoamCutlass - name: foam cutlass - description: Cosplay as a pirate and force your friends to walk the plank. - components: - - type: Sprite - sprite: Objects/Weapons/Melee/cutlass.rsi - state: foam_icon - - type: MeleeWeapon - wideAnimationRotation: -135 - attackRate: 1.5 - range: 2.0 - damage: - types: - Blunt: 0 - - type: Item - size: Normal - storedSprite: - state: foam_storage - sprite: Objects/Weapons/Melee/cutlass.rsi - shape: - - 0,0,0,2 - -- type: entity - parent: BaseItem - id: CardSword - name: cardboard sword - description: A cardboard tube fashioned into the shape of a sword. - components: - - type: Sprite - sprite: Objects/Fun/card_sword.rsi - state: icon - - type: Clothing - sprite: Objects/Fun/card_sword.rsi - slots: - - Back - - SuitStorage - - type: StaminaDamageOnHit - damage: 6 - - type: Appearance - - type: DisarmMalus - malus: 0 - - type: MeleeWeapon - wideAnimationRotation: -135 - attackRate: 1.25 - damage: - types: - Blunt: 0.3 - soundHit: - path: /Audio/Items/Toys/card_tube_bonk.ogg + Blunt: 3 + - type: Explosive + explosionType: Default + # Cosmetic explosion :tf: + maxIntensity: 0.01 + intensitySlope: 1 + totalIntensity: 0.01 - type: Construction - graph: CardSword - node: cardSword - - type: Item - size: Normal - storedSprite: - state: icon - sprite: Objects/Fun/card_sword.rsi - shape: - - 0,0,1,3 + graph: SnapPopExplosiveGraph + node: snapPop - type: entity - parent: BaseItem - id: ClownRecorder - name: clown recorder - description: When you just can't get those laughs coming the natural way! + parent: BaseStorageItem + id: SnapPopBox + name: snap pop box + description: Contains snap pops for a few minutes of popping fun! components: - - type: Sprite - sprite: Objects/Fun/clownrecorder.rsi - state: icon - - type: EmitSoundOnUse - sound: - collection: ClownRecorder - - type: EmitSoundOnLand - sound: - collection: ClownRecorder - - type: EmitSoundOnActivate - sound: - collection: ClownRecorder - - type: EmitSoundOnTrigger - sound: - collection: ClownRecorder - - type: EmitSoundOnCollide - sound: - collection: ClownRecorder - - type: UseDelay - delay: 30.0 - - type: Tag - tags: - - ClownRecorder - - Payload - -- type: entity - parent: BaseItem - id: ToyHammer - name: rubber hammer - description: A brightly colored hammer made of rubber. - components: - - type: Sprite - sprite: Objects/Fun/rubber_hammer.rsi - state: icon - - type: WeaponRandom - damageBonus: - types: - Blunt: 1000 - - type: StaminaDamageOnHit - damage: 8 - type: Item - size: Small - sprite: Objects/Fun/rubber_hammer.rsi - - type: Appearance - - type: DisarmMalus - malus: 0 - - type: MeleeWeapon - wideAnimationRotation: -135 - soundHit: - collection: RubberHammer - params: - variation: 0.03 - volume: 3 - soundNoDamage: - collection: RubberHammer - params: - variation: 0.03 - volume: 3 - damage: - types: - Blunt: 0 - -- type: entity - parent: BaseItem - id: WhoopieCushion - name: whoopie cushion - description: A practical joke device involving flatulence humour. - components: + size: Normal - type: Sprite - sprite: Objects/Fun/whoopie.rsi - state: icon - - type: Tag - tags: - - Payload - - type: EmitSoundOnUse - sound: - collection: Parp - params: - variation: 0.125 - - type: EmitSoundOnLand - sound: - collection: Parp - params: - variation: 0.125 - - type: EmitSoundOnActivate - sound: - collection: Parp - params: - variation: 0.125 - - type: EmitSoundOnCollide - sound: - collection: Parp - params: - variation: 0.125 - - type: UseDelay - delay: 0.8 - - type: Slippery - staminaDamage: 0 - frictionStatusTime: 0 - slipData: - stunTime: 0 - knockdownTime: 0 - launchForwardsMultiplier: 0 - slipSound: - collection: Parp - params: - variation: 0.125 - - type: MeleeWeapon - soundHit: - collection: Parp - params: - variation: 0.125 - damage: - types: - Blunt: 0 - - type: StepTrigger - intersectRatio: 0.2 - requiredTriggeredSpeed: 2 - - type: TriggerOnStepTrigger # for payloads - - type: Appearance - - type: CollisionWake - enabled: false - - type: Physics - bodyType: Dynamic - - type: Fixtures - fixtures: - slips: - shape: - !type:PhysShapeAabb - bounds: "-0.2,-0.2,0.2,0.2" - hard: false - layer: - - SlipLayer - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.2,-0.2,0.2,0.2" - density: 30 - mask: - - ItemMask + sprite: Objects/Fun/snap_pops.rsi + state: box + - type: Storage + grid: + - 0,0,4,3 + areaInsert: true + maxItemSize: Tiny + - type: EntityTableContainerFill + containers: + storagebase: + id: SnapPop + amount: 5 + - type: Dumpable - type: entity - name: banana parent: FoodProduceBase id: PlasticBanana - description: A plastic banana. + name: banana suffix: Plastic + description: A plastic banana. components: - type: Sprite sprite: Objects/Specific/Hydroponics/banana.rsi @@ -1055,30 +155,144 @@ solution: drink - type: entity - parent: BaseItem - id: NewtonCradle - name: newton cradle - description: A device bored paper pushers use to remind themselves that time did not stop yet. Contains gravity. + parent: [ BaseItem, MobCombat ] + id: MrChips + name: mr chips + suffix: Dummy + description: It's a dummy, dummy! components: - type: Sprite - sprite: Objects/Fun/newton_cradle.rsi - state: icon-off + sprite: Objects/Fun/mrchips.rsi + layers: + - state: icon + - type: Input + context: "human" + - type: DoAfter + - type: VentriloquistPuppet - type: Item - sprite: Objects/Fun/newton_cradle.rsi - storedRotation: -90 + size: Normal + - type: Muted + - type: TypingIndicator + proto: robot + - type: Actions + - type: MobState + allowedStates: + - Alive + - type: MeleeWeapon + soundHit: + path: /Audio/Weapons/boxingpunch1.ogg + angle: 30 + animation: WeaponArcPunch + damage: + types: + Blunt: 2 + +- type: entity + parent: MrChips + id: MrDips + name: mr dips + components: + - type: Sprite + sprite: Objects/Fun/mrdips.rsi + +- type: entity + parent: BaseItem + id: Error + name: error + description: Hmmmm. Something went wrong. + components: + - type: Sprite + sprite: error.rsi + state: error + - type: Edible + - type: SolutionContainerManager + solutions: + food: + maxVol: 26 + reagents: + - ReagentId: Nutriment + Quantity: 5 + - type: Slippery + slipData: + knockdownTime: 3 + launchForwardsMultiplier: 3 + - type: StepTrigger + intersectRatio: 0.2 + - type: CollisionWake + enabled: false + - type: Physics + bodyType: Dynamic + - type: Fixtures + fixtures: + slips: + shape: + !type:PhysShapeAabb + bounds: "-0.4,-0.3,0.4,0.3" + hard: false + layer: + - SlipLayer + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.4,-0.3,0.4,0.3" + density: 30 + mask: + - ItemMask + +- type: entity + parent: BaseItem + id: SpectralLocatorUnpowered + name: spectral locator + suffix: Always Powered + description: Appears to be a modified anomaly locator. Seems very old. + components: + - type: Sprite + sprite: Objects/Fun/spectrallocator.rsi + layers: + - state: icon + - state: screen + shader: unshaded + visible: false + map: ["enum.ToggleableVisuals.Layer"] - type: Appearance - type: GenericVisualizer visuals: enum.ToggleableVisuals.Enabled: enum.ToggleableVisuals.Layer: - True: { state: icon } - False: { state: icon-off } + True: { visible: true } + False: { visible: false } - type: ItemToggle - - type: UseDelay - delay: 1 - - type: ItemToggleActiveSound - activeSound: - path: /Audio/Items/newton_cradle.ogg + - type: ProximityBeeper + - type: ProximityDetector + range: 12 + components: + - type: Spectral # ghosts, jaunts, reventants + - type: Beeper + isMuted: true + minBeepInterval: 0.25 + maxBeepInterval: 0.5 + beepSound: + path: "/Audio/Items/locator_beep.ogg" params: - volume: -9 - maxDistance: 3 + maxDistance: 1 + volume: -8 + +- type: entity + parent: [ SpectralLocatorUnpowered, PowerCellSlotSmallItem ] + id: SpectralLocator + suffix: "" + components: + - type: PowerCellDraw + drawRate: 1 + useCharge: 0 + - type: ToggleCellDraw + +- type: entity + parent: SpectralLocator + id: SpectralLocatorEmpty + suffix: Empty + components: + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default diff --git a/Resources/Prototypes/Entities/Objects/Fun/weapons.yml b/Resources/Prototypes/Entities/Objects/Fun/weapons.yml new file mode 100644 index 0000000000..f9a6e874ac --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Fun/weapons.yml @@ -0,0 +1,337 @@ +# When adding new "weapons", also add it to id: AllToyWeaponsTable +# File for fun weapons that aren't very dangerous + +## Toy guns + +- type: entity + abstract: true + id: BaseToyGun + components: + - type: PacifismAllowedGun # They don't hurt! + - type: Gun + clumsyProof: true # Clown proficiency + +- type: entity + parent: [ BaseItem, BaseToyGun ] + id: FoamCrossbow + name: foam crossbow + description: Aiming this at Security may get you filled with lead. + components: + - type: Sprite + sprite: Objects/Fun/Foam/foam_crossbow.rsi + state: icon + - type: Item + size: Normal + sprite: Objects/Fun/Foam/foam_crossbow.rsi + - type: Gun + fireRate: 0.5 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/energycrossbow_shoot.ogg + - type: BallisticAmmoProvider + whitelist: &WhitelistFoam + tags: + - BulletFoam + capacity: 1 + soundInsert: + path: /Audio/Weapons/Guns/MagIn/energycrossbow_reload.ogg + - type: ContainerContainer + containers: + ballistic-ammo: !type:Container + ents: [] + +- type: entity + name: Foam Force Astro Ace + parent: [ BaseToyGun, BaseWeaponShotgun, BaseGunWieldable ] + id: WeaponRifleFoam + description: A premium foam rifle of the highest quality. Its plastic feels rugged, and its mechanisms sturdy. + components: + - type: Sprite + sprite: Objects/Fun/Foam/foam_rifle.rsi + - type: Clothing + sprite: Objects/Fun/Foam/foam_rifle.rsi + - type: Item + sprite: Objects/Fun/Foam/foam_rifle_inhand_64x.rsi + size: Normal + shape: + - 0,0,3,0 + - type: BallisticAmmoProvider + whitelist: *WhitelistFoam + capacity: 10 + proto: BulletFoam + - type: GunRequiresWield #remove when inaccuracy on spreads is fixed + - type: Gun + fireRate: 2 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Effects/thunk.ogg + soundEmpty: + path: /Audio/Weapons/Guns/Empty/empty.ogg + - type: StaticPrice + price: 100 + +- type: entity + parent: [ BaseItem, BaseToyGun ] + id: RevolverCapGun + name: cap gun + description: Looks almost like the real thing! Ages 8 and up. + components: + - type: Sprite + sprite: Objects/Fun/capgun.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: Item + shape: + - 0,0,1,0 + - 0,1,0,1 + storedOffset: -2,-7 + sprite: Objects/Fun/capgun.rsi + - type: Tag + tags: + - Sidearm + - ToySidearm + - type: AmmoCounter + - type: Gun + selectedMode: SemiAuto + availableModes: + - SemiAuto + fireRate: 2 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/revolver.ogg + params: + volume: 2.25 + - type: RevolverAmmoProvider + whitelist: + tags: + - CartridgeCap + - SpeedLoaderCap + proto: CartridgeCap + capacity: 6 + chambers: [ True, True, True, True, True, True ] + ammoSlots: [ null, null, null, null, null, null ] + soundInsert: + path: /Audio/Weapons/Guns/MagIn/revolver_magin.ogg + - type: ContainerContainer + containers: + revolver-ammo: !type:Container + +- type: entity + parent: RevolverCapGun + id: RevolverCapGunFake + suffix: Fake + components: + - type: RevolverAmmoProvider + whitelist: + tags: + - CartridgeCap + - SpeedLoaderCap + - CartridgeMagnum + - SpeedLoaderMagnum + proto: CartridgeMagnumAP + +- type: entity + parent: [ BaseItem, BaseToyGun ] + id: WeaponStickyHand + name: sticky hand + description: They're saying you're reaching. They're saying it's a stretch. You'll show them all, and you'll stick it to them. + components: + - type: GrapplingGun + cycleSound: /Audio/Misc/woosh.ogg + ropeSprite: + sprite: Objects/Weapons/Guns/Launchers/sticky_hand.rsi + state: rope + - type: Gun + soundGunshot: /Audio/Misc/stickystretch.ogg + fireRate: 0.5 + soundEmpty: /Audio/Misc/boing.ogg + - type: BasicEntityAmmoProvider + proto: StickyHandPalm + capacity: 1 + - type: Sprite + sprite: Objects/Weapons/Guns/Launchers/sticky_hand.rsi + state: base + - type: UseDelay + delay: 1.5 + +## Toy swords + +- type: entity + abstract: true + id: BaseToySword + components: + - type: DisarmMalus + malus: -0.3 # Easy to disarm for epic reversals + - type: StaminaDamageOnHit + damage: 8 # Too small for real combat, but allows for foam fights to have a conclusion + - type: MeleeWeapon + damage: + types: + Blunt: 0.3 # Not even close to real damage, but creates the red flash to give the illusion of damage + +- type: entity + parent: [ BaseItem, BaseToySword ] + id: FoamBlade + name: foamblade + description: It says "Sternside Changs number 1 fan" on it. + components: + - type: Sprite + sprite: Objects/Fun/Foam/foam_blade.rsi + state: icon + - type: MeleeWeapon + attackRate: 1.5 + angle: 0 + animation: WeaponArcThrust + wideAnimationRotation: 90 + - type: Item + size: Small + sprite: Objects/Fun/Foam/foam_blade.rsi + +- type: entity + parent: [ BaseItem, BaseToySword ] + id: FoamCutlass + name: foam cutlass + description: Cosplay as a pirate and force your friends to walk the plank. + components: + - type: Sprite + sprite: Objects/Weapons/Melee/cutlass.rsi + state: foam_icon + - type: MeleeWeapon + wideAnimationRotation: -135 + attackRate: 1.5 + range: 2.0 + - type: Item + size: Normal + storedSprite: + state: foam_storage + sprite: Objects/Weapons/Melee/cutlass.rsi + shape: + - 0,0,0,2 + +- type: entity + parent: [ BaseItem, BaseToySword ] + id: ToySword + name: toy sword + description: New Sandy-Cat plastic sword! Comes with realistic sound and full color! Looks almost like the real thing! + components: + - type: Sprite + sprite: Objects/Weapons/Melee/e_sword.rsi + layers: + - state: e_sword + - state: e_sword_blade + color: "#FFFFFF" + visible: false + shader: unshaded + map: [ "blade" ] + - type: EnergySword + - type: ItemToggle + soundActivate: + path: /Audio/Weapons/ebladeon.ogg + soundDeactivate: + path: /Audio/Weapons/ebladeoff.ogg + - type: ItemToggleActiveSound + activeSound: + path: /Audio/Weapons/ebladehum.ogg + - type: Item + size: Small + sprite: Objects/Weapons/Melee/e_sword-inhands.rsi + - type: UseDelay + delay: 1.0 + - type: PointLight + enabled: false + radius: 2 + energy: 2 + color: white + netsync: false + - type: Appearance + - type: ToggleableVisuals + spriteLayer: blade + inhandVisuals: + left: + - state: inhand-left-blade + shader: unshaded + right: + - state: inhand-right-blade + shader: unshaded + - type: ItemTogglePointLight + - type: MeleeWeapon + wideAnimationRotation: -135 + damage: + types: + Blunt: 0 + - type: ItemToggleMeleeWeapon + activatedSoundOnHit: + path: /Audio/Weapons/eblade1.ogg + params: + variation: 0.250 + activatedSoundOnHitNoDamage: + path: /Audio/Weapons/eblade1.ogg + params: + variation: 0.250 + activatedSoundOnSwing: + path: /Audio/Weapons/eblademiss.ogg + params: + variation: 0.125 + activatedDamage: + types: + Heat: 0.3 + +- type: entity + parent: [ BaseItem, BaseToySword ] + id: CardSword + name: cardboard sword + description: A cardboard tube fashioned into the shape of a sword. + components: + - type: Sprite + sprite: Objects/Fun/card_sword.rsi + state: icon + - type: Clothing + sprite: Objects/Fun/card_sword.rsi + slots: + - Back + - SuitStorage + - type: Appearance + - type: MeleeWeapon + wideAnimationRotation: -135 + attackRate: 1.25 + soundHit: + path: /Audio/Items/Toys/card_tube_bonk.ogg + - type: Construction + graph: CardSword + node: cardSword + - type: Item + size: Normal + storedSprite: + state: icon + sprite: Objects/Fun/card_sword.rsi + shape: + - 0,0,1,3 + +- type: entity + parent: [ BaseItem, BaseToySword ] + id: ToyHammer + name: rubber hammer + description: A brightly colored hammer made of rubber. + components: + - type: Sprite + sprite: Objects/Fun/rubber_hammer.rsi + state: icon + - type: WeaponRandom # 1 in 100,000 to "win" the "fight" + damageBonus: + types: + Blunt: 1000 + - type: Item + size: Small + sprite: Objects/Fun/rubber_hammer.rsi + - type: MeleeWeapon + wideAnimationRotation: -135 + soundHit: &SoundRubberHammer + collection: RubberHammer + params: + variation: 0.03 + volume: 3 + soundNoDamage: *SoundRubberHammer diff --git a/Resources/Prototypes/Entities/Objects/Fun/whistles.yml b/Resources/Prototypes/Entities/Objects/Fun/whistles.yml deleted file mode 100644 index 6e7fd3d0c1..0000000000 --- a/Resources/Prototypes/Entities/Objects/Fun/whistles.yml +++ /dev/null @@ -1,58 +0,0 @@ -- type: entity - abstract: true - parent: BaseItem - id: BaseWhistle - name: whistle - description: Someone forgot to turn off a kettle? - components: - - type: Item - sprite: Objects/Fun/whistles.rsi - size: Tiny - - type: Sprite - sprite: Objects/Fun/whistles.rsi - - type: Clothing - sprite: Objects/Fun/whistles.rsi - quickEquip: false - slots: neck - - type: UseDelay - delay: 3 - - type: EmitSoundOnUse - sound: - collection: BaseWhistle - - type: Whistle - distance: 3 - -- type: entity - parent: BaseWhistle - id: Whistle - components: - - type: Sprite - state: whistle - -- type: entity - parent: BaseWhistle - id: SecurityWhistle - description: The sound of it brings fear. - components: - - type: Sprite - state: sec - - type: Clothing - equippedPrefix: sec - - type: Whistle - distance: 5 - -- type: entity - parent: [BaseWhistle, BaseMinorContraband] - id: SyndicateWhistle - name: trench whistle - description: A whistle used by Syndicate commanders to draw attention. Avanti! - components: - - type: Sprite - state: trench - - type: Clothing - equippedPrefix: trench - - type: EmitSoundOnUse - sound: - collection: TrenchWhistle - - type: Whistle - distance: 15 # Let your enemies hear the sound of death approaching diff --git a/Resources/Prototypes/Entities/Objects/Fun/immovable_rod.yml b/Resources/Prototypes/Entities/Objects/Magic/immovable_rod.yml similarity index 100% rename from Resources/Prototypes/Entities/Objects/Fun/immovable_rod.yml rename to Resources/Prototypes/Entities/Objects/Magic/immovable_rod.yml index 5fe9a6a68e..200a5d3ee6 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/immovable_rod.yml +++ b/Resources/Prototypes/Entities/Objects/Magic/immovable_rod.yml @@ -41,16 +41,16 @@ - GhostOnlyWarp - type: entity + parent: ImmovableRod id: ImmovableRodDespawn suffix: Despawn - parent: ImmovableRod components: - type: TimedDespawn lifetime: 30.0 - type: entity - id: ImmovableRodSlow parent: ImmovableRodDespawn + id: ImmovableRodSlow suffix: Slow components: - type: ImmovableRod diff --git a/Resources/Prototypes/Entities/Objects/Fun/candy_bucket.yml b/Resources/Prototypes/Entities/Objects/Misc/candy_bucket.yml similarity index 97% rename from Resources/Prototypes/Entities/Objects/Fun/candy_bucket.yml rename to Resources/Prototypes/Entities/Objects/Misc/candy_bucket.yml index 3efba15f93..13be355c5b 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/candy_bucket.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/candy_bucket.yml @@ -1,7 +1,7 @@ - type: entity - name: "candy bucket" parent: BaseItem id: CandyBucket + name: candy bucket description: A festive bucket for all your treats. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 61beb4537d..030966930b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -339,33 +339,6 @@ False: { state: base-unshaded-off } - type: PacifismAllowedGun -- type: entity - parent: BaseItem - id: WeaponStickyHand - name: sticky hand - description: They're saying you're reaching. They're saying it's a stretch. You'll show them all, and you'll stick it to them. - components: - - type: AmmoCounter - - type: GrapplingGun - cycleSound: /Audio/Misc/woosh.ogg - ropeSprite: - sprite: Objects/Weapons/Guns/Launchers/sticky_hand.rsi - state: rope - - type: Gun - soundGunshot: /Audio/Misc/stickystretch.ogg - fireRate: 0.5 - clumsyProof: true - soundEmpty: /Audio/Misc/boing.ogg - - type: BasicEntityAmmoProvider - proto: StickyHandPalm - capacity: 1 - - type: Sprite - sprite: Objects/Weapons/Guns/Launchers/sticky_hand.rsi - state: base - - type: UseDelay - delay: 1.5 - - type: PacifismAllowedGun - # Admeme - type: entity name: tether gun diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index d3887b16dc..8d4a38fb59 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -282,39 +282,3 @@ steps: 1 zeroVisible: true - type: Appearance - -- type: entity - name: Foam Force Astro Ace - parent: [BaseWeaponShotgun, BaseGunWieldable] - id: WeaponRifleFoam - description: A premium foam rifle of the highest quality. Its plastic feels rugged, and its mechanisms sturdy. - components: - - type: Sprite - sprite: Objects/Fun/Foam/foam_rifle.rsi - - type: Clothing - sprite: Objects/Fun/Foam/foam_rifle.rsi - - type: Item - sprite: Objects/Fun/Foam/foam_rifle_inhand_64x.rsi - size: Normal - shape: - - 0,0,3,0 - - type: BallisticAmmoProvider - whitelist: - tags: - - BulletFoam - capacity: 10 - proto: BulletFoam - - type: GunRequiresWield #remove when inaccuracy on spreads is fixed - - type: Gun - fireRate: 2 - selectedMode: SemiAuto - availableModes: - - SemiAuto - soundGunshot: - path: /Audio/Effects/thunk.ogg - soundEmpty: - path: /Audio/Weapons/Guns/Empty/empty.ogg - clumsyProof: true - - type: PacifismAllowedGun - - type: StaticPrice - price: 100 diff --git a/Resources/Prototypes/Entities/Objects/base_item.yml b/Resources/Prototypes/Entities/Objects/base_item.yml index ca7e78033d..5830ad2f14 100644 --- a/Resources/Prototypes/Entities/Objects/base_item.yml +++ b/Resources/Prototypes/Entities/Objects/base_item.yml @@ -170,3 +170,25 @@ cell_slot: name: power-cell-slot-component-slot-name-default startingItem: PowerCellHigh + +# For entities with a hidden container slot that can be opened with a tool +- type: entity + abstract: true + id: BaseStash + components: + - type: Speech + speechVerb: Default # for pais (In the secret stash) + - type: SecretStash + secretStashName: secret-stash-plushie + blacklist: + components: + - SecretStash # Prevents being able to insert plushies inside each other (infinite plush)! + tags: + - QuantumSpinInverter # It will cause issues with the grinder... + - type: ToolOpenable + openToolQualityNeeded: Slicing + closeToolQualityNeeded: Slicing # Should probably be stitching or something if that gets added + name: secret-stash-plushie + - type: ContainerContainer + containers: + stash: !type:ContainerSlot {} -- 2.52.0