Librarian gameplay (DND, but in SS14) (#17041)

* D&D character sheets

* Tabletop improvements

* Grass battlemap

* You can now put shit inside of the board

* change variable name

* make the grass tabletop better, again

* update the damn thing AGAIN

* update the shit AGAIN

* You can now take stuff out of tabletops

* Make it use parenting to avoid zany bugs

* MORE battlemaps! Battlemaps for everyone!

* You can now dump out pieces + cleanup

* All (most) non-game pieces should fall to the ground

* make the verb a bit more responsive

* Librarian content officially done

* fix tests i think

* i forgot the sheet

* Smidgen of refactoring

* You can no longer put high risk items inside of boards

* no boardgame defusal

* minor refactoring

* hoplogrma

* doc

* fix rt
This commit is contained in:
eclips_e
2023-07-17 17:03:18 +08:00
committed by GitHub
parent 73c7ed67fa
commit 01a0e2002a
44 changed files with 720 additions and 83 deletions

View File

@@ -140,8 +140,13 @@
- id: BackgammonBoard
- id: ParchisBoard
- id: CheckerBoard
- id: d6Dice
amount: 4
- id: ShipBattlemap
- id: SnowBattlemap
- id: SandBattlemap
- id: MoonBattlemap
- id: GrassBattlemap
- id: DiceBag
amount: 6
- type: entity
id: CrateFunATV

View File

@@ -1,12 +1,18 @@
- type: vendingMachineInventory
id: GoodCleanFunInventory
startingInventory:
DiceBag: 4
DiceBag: 6
Paper: 8
d6Dice: 8
ChessBoard: 1
BackgammonBoard: 1
ParchisBoard: 1
CheckerBoard: 1
ShipBattlemap: 1
SnowBattlemap: 1
SandBattlemap: 1
MoonBattlemap: 1
GrassBattlemap: 1
PaperCNCSheet: 6
MysteryFigureBox: 2
BooksBag: 3

View File

@@ -1,5 +1,5 @@
- type: entity
parent: BaseItem
parent: BaseBoardEntity
id: BackgammonBoard
name: backgammon board
description: Old fashioned game of dice and pieces.
@@ -12,14 +12,14 @@
size: 550, 410
setup:
!type:TabletopBackgammonSetup
boardPrototype: BackgammonBoardTabletop
- type: entity
id: BackgammonBoardTabletop
name: backgammon
parent: BaseBoardTabletop
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/backgammon_tabletop.rsi
state: backgammonBoard
noRot: false
drawdepth: FloorTiles

View File

@@ -0,0 +1,39 @@
- type: entity
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: entity
id: BaseTabletopPiece # Board piece
parent: BaseItem
abstract: true
components:
- type: TabletopDraggable
- type: Sprite
netsync: false
noRot: true
- type: Appearance
- type: Tag
tags:
- TabletopPiece
- type: entity
id: BaseBoardTabletop
name: baseboard
abstract: true
noSpawn: true
components:
- type: Tag
tags:
- TabletopBoard
- type: Sprite
noRot: false
drawdepth: FloorTiles

View File

@@ -1,6 +1,6 @@
# Uses the chessboard and generic pieces
- type: entity
parent: BaseItem
parent: BaseBoardEntity
id: CheckerBoard
name: checkerboard
description: A checkerboard. Pieces included!
@@ -11,35 +11,26 @@
- type: TabletopGame
boardName: tabletop-checkers-board-name
size: 338, 274
setup: !type:TabletopCheckerSetup
setup:
!type:TabletopCheckerSetup
boardPrototype: CheckerBoardTabletop
# Checkerboard tabletop item (item only visible in tabletop game)
- type: entity
id: CheckerBoardTabletop
name: checkerboard
parent: BaseBoardTabletop
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chessboard_tabletop.rsi
state: chessboard_tabletop
noRot: false
drawdepth: FloorTiles
- type: entity
id: BaseCheckerPiece
parent: BaseItem
noSpawn: true
components:
- type: TabletopDraggable
- type: Sprite
noRot: true
- type: Appearance
# The pieces
- type: entity
id: WhiteCheckerPiece
name: white piece
parent: BaseCheckerPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
@@ -48,7 +39,7 @@
- type: entity
id: WhiteCheckerQueen
name: white queen
parent: BaseCheckerPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
@@ -57,7 +48,7 @@
- type: entity
id: BlackCheckerPiece
name: black piece
parent: BaseCheckerPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
@@ -66,7 +57,7 @@
- type: entity
id: BlackCheckerQueen
name: black queen
parent: BaseCheckerPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/checker_pieces.rsi

View File

@@ -1,6 +1,6 @@
# Chessboard item (normal in game item you can hold in your hand)
- type: entity
parent: BaseItem
parent: BaseBoardEntity
id: ChessBoard
name: chessboard
description: A chessboard. Pieces included!
@@ -11,36 +11,26 @@
- type: TabletopGame
boardName: tabletop-chess-board-name
size: 338, 274
setup: !type:TabletopChessSetup
setup:
!type:TabletopChessSetup
boardPrototype: ChessBoardTabletop
# Chessboard tabletop item (item only visible in tabletop game)
- type: entity
id: ChessBoardTabletop
name: chessboard
parent: BaseBoardTabletop
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chessboard_tabletop.rsi
state: chessboard_tabletop
noRot: false
drawdepth: FloorTiles
## Chess pieces
- type: entity
id: BaseChessPiece
parent: BaseItem
abstract: true
components:
- type: TabletopDraggable
- type: Sprite
noRot: true
- type: Appearance
# White pieces
- type: entity
id: WhiteKing
name: white king
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -49,7 +39,7 @@
- type: entity
id: WhiteQueen
name: white queen
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -58,7 +48,7 @@
- type: entity
id: WhiteRook
name: white rook
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -67,7 +57,7 @@
- type: entity
id: WhiteBishop
name: white bishop
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -76,7 +66,7 @@
- type: entity
id: WhiteKnight
name: white knight
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -85,7 +75,7 @@
- type: entity
id: WhitePawn
name: white pawn
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -95,7 +85,7 @@
- type: entity
id: BlackKing
name: black king
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -104,7 +94,7 @@
- type: entity
id: BlackQueen
name: black queen
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -113,7 +103,7 @@
- type: entity
id: BlackRook
name: black rook
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -122,7 +112,7 @@
- type: entity
id: BlackBishop
name: black bishop
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -131,7 +121,7 @@
- type: entity
id: BlackKnight
name: black knight
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
@@ -140,7 +130,7 @@
- type: entity
id: BlackPawn
name: black pawn
parent: BaseChessPiece
parent: BaseTabletopPiece
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/chess_pieces.rsi

View File

@@ -0,0 +1,135 @@
# Board item (given to players)
- type: entity
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: entity
parent: BaseBattlemap
id: GrassBattlemap
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: entity
parent: BaseBattlemap
id: MoonBattlemap
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: entity
parent: BaseBattlemap
id: SandBattlemap
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: entity
parent: BaseBattlemap
id: SnowBattlemap
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: entity
parent: BaseBattlemap
id: ShipBattlemap
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
# Background entity (actually shown in the board)
- type: entity
parent: BaseBoardTabletop
id: GrassBoardTabletop
name: grass battlemap
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/Battlemaps/grassbm_tabletop.rsi
state: tabletop
noRot: false
drawdepth: FloorTiles
- type: entity
parent: BaseBoardTabletop
id: MoonBoardTabletop
name: grass battlemap
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/Battlemaps/moonbm_tabletop.rsi
state: tabletop
- type: entity
parent: BaseBoardTabletop
id: SandBoardTabletop
name: sand battlemap
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/Battlemaps/sandbm_tabletop.rsi
state: tabletop
- type: entity
parent: BaseBoardTabletop
id: SnowBoardTabletop
name: snow battlemap
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/Battlemaps/snowbm_tabletop.rsi
state: tabletop
- type: entity
parent: BaseBoardTabletop
id: ShipBoardTabletop
name: ship battlemap
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/Battlemaps/shipbm_tabletop.rsi
state: tabletop

View File

@@ -1,6 +1,6 @@
# Parchís board item (normal in game item you can hold in your hand)
- type: entity
parent: BaseItem
parent: BaseBoardEntity
id: ParchisBoard
name: parchís board
description: Cross and circle board game famous for destroying countless friendships.
@@ -13,16 +13,16 @@
size: 574, 574
setup:
!type:TabletopParchisSetup
boardPrototype: ParchisBoardTabletop
# Parchís tabletop item (item only visible in tabletop game)
- type: entity
id: ParchisBoardTabletop
name: parchís
parent: BaseBoardTabletop
noSpawn: true
components:
- type: Sprite
sprite: Objects/Fun/Tabletop/parchis_tabletop.rsi
state: board
noRot: false
drawdepth: FloorTiles

View File

@@ -1,18 +1,16 @@
- type: entity
id: BaseTabletopPiece
parent: BaseItem
id: BaseGenericTabletopPiece
parent: BaseTabletopPiece
abstract: true
components:
- type: TabletopDraggable
- type: Sprite
noRot: true
sprite: Objects/Fun/Tabletop/generic_pieces.rsi
- type: Appearance
- type: entity
id: RedTabletopPiece
name: red piece
parent: BaseTabletopPiece
parent: BaseGenericTabletopPiece
components:
- type: Sprite
state: red
@@ -20,7 +18,7 @@
- type: entity
id: GreenTabletopPiece
name: green piece
parent: BaseTabletopPiece
parent: BaseGenericTabletopPiece
components:
- type: Sprite
state: green
@@ -28,7 +26,7 @@
- type: entity
id: YellowTabletopPiece
name: yellow piece
parent: BaseTabletopPiece
parent: BaseGenericTabletopPiece
components:
- type: Sprite
state: yellow
@@ -36,7 +34,7 @@
- type: entity
id: BlueTabletopPiece
name: blue piece
parent: BaseTabletopPiece
parent: BaseGenericTabletopPiece
components:
- type: Sprite
state: blue
@@ -44,7 +42,7 @@
- type: entity
id: WhiteTabletopPiece
name: white piece
parent: BaseTabletopPiece
parent: BaseGenericTabletopPiece
components:
- type: Sprite
state: white
@@ -52,7 +50,7 @@
- type: entity
id: BlackTabletopPiece
name: black piece
parent: BaseTabletopPiece
parent: BaseGenericTabletopPiece
components:
- type: Sprite
state: black

View File

@@ -140,6 +140,37 @@
guides:
- CargoBounties
- type: entity
name: character sheet
parent: Paper
id: PaperCNCSheet # legally gray zone of using "D&D" and "DND"
description: 'A sheet for your Carps and Crypts characters.'
components:
- type: Paper
contentSize: 10000
escapeFormatting: false
content: book-cnc-sheet
- type: Sprite
sprite: Objects/Misc/bureaucracy.rsi
netsync: false
layers:
- state: paper
color: "#cccccc"
- state: paper_words
map: ["enum.PaperVisualLayers.Writing"]
color: "#cccccc" #aaaaaaaaaaaaaaaaaaaaaaa
visible: false
- state: paper_stamp-generic
map: ["enum.PaperVisualLayers.Stamp"]
visible: false
- type: PaperVisuals
backgroundImagePath: "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png"
contentImagePath: "/Textures/Interface/Paper/paper_content_lined.svg.96dpi.png"
backgroundModulate: "#cccccc"
contentImageModulate: "#cccccc"
backgroundPatchMargin: 16.0, 16.0, 16.0, 16.0
contentMargin: 16.0, 16.0, 16.0, 16.0
- type: entity
parent: Paper
id: PaperWritten

View File

@@ -801,6 +801,12 @@
- type: Tag
id: Taser
- type: Tag
id: TabletopBoard
- type: Tag
id: TabletopPiece
- type: Tag
id: TimerBrigElectronics