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
@@ -44,8 +44,9 @@ namespace Content.Client.Tabletop
|
|||||||
UpdatesOutsidePrediction = true;
|
UpdatesOutsidePrediction = true;
|
||||||
|
|
||||||
CommandBinds.Builder
|
CommandBinds.Builder
|
||||||
.Bind(EngineKeyFunctions.Use, new PointerInputCmdHandler(OnUse, false, true))
|
.Bind(EngineKeyFunctions.Use, new PointerInputCmdHandler(OnUse, false, true))
|
||||||
.Register<TabletopSystem>();
|
.Bind(EngineKeyFunctions.UseSecondary, new PointerInputCmdHandler(OnUseSecondary, true, true))
|
||||||
|
.Register<TabletopSystem>();
|
||||||
|
|
||||||
SubscribeNetworkEvent<TabletopPlayEvent>(OnTabletopPlay);
|
SubscribeNetworkEvent<TabletopPlayEvent>(OnTabletopPlay);
|
||||||
SubscribeLocalEvent<TabletopDraggableComponent, ComponentHandleState>(HandleComponentState);
|
SubscribeLocalEvent<TabletopDraggableComponent, ComponentHandleState>(HandleComponentState);
|
||||||
@@ -177,6 +178,17 @@ namespace Content.Client.Tabletop
|
|||||||
_ => false
|
_ => false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
private bool OnUseSecondary(in PointerInputCmdArgs args)
|
||||||
|
{
|
||||||
|
if (_draggedEntity != null && _table != null)
|
||||||
|
{
|
||||||
|
var ev = new TabletopRequestTakeOut();
|
||||||
|
ev.Entity = _draggedEntity.Value;
|
||||||
|
ev.TableUid = _table.Value;
|
||||||
|
RaiseNetworkEvent(ev);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private bool OnMouseDown(in PointerInputCmdArgs args)
|
private bool OnMouseDown(in PointerInputCmdArgs args)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
|
using Vector2 = System.Numerics.Vector2;
|
||||||
|
|
||||||
namespace Content.Server.Tabletop.Components
|
namespace Content.Server.Tabletop.Components
|
||||||
{
|
{
|
||||||
@@ -8,18 +9,33 @@ namespace Content.Server.Tabletop.Components
|
|||||||
[RegisterComponent, Access(typeof(TabletopSystem))]
|
[RegisterComponent, Access(typeof(TabletopSystem))]
|
||||||
public sealed class TabletopGameComponent : Component
|
public sealed class TabletopGameComponent : Component
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The localized name of the board. Shown in the UI.
|
||||||
|
/// </summary>
|
||||||
[DataField("boardName")]
|
[DataField("boardName")]
|
||||||
public string BoardName { get; } = "tabletop-default-board-name";
|
public string BoardName { get; } = "tabletop-default-board-name";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The type of method used to set up a tabletop.
|
||||||
|
/// </summary>
|
||||||
[DataField("setup", required: true)]
|
[DataField("setup", required: true)]
|
||||||
public TabletopSetup Setup { get; } = new TabletopChessSetup();
|
public TabletopSetup Setup { get; } = new TabletopChessSetup();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The size of the viewport being opened. Must match the board dimensions otherwise you'll get the space parallax (unless that's what you want).
|
||||||
|
/// </summary>
|
||||||
[DataField("size")]
|
[DataField("size")]
|
||||||
public Vector2i Size { get; } = (300, 300);
|
public Vector2i Size { get; } = (300, 300);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The zoom of the viewport camera.
|
||||||
|
/// </summary>
|
||||||
[DataField("cameraZoom")]
|
[DataField("cameraZoom")]
|
||||||
public Vector2 CameraZoom { get; } = Vector2.One;
|
public Vector2 CameraZoom { get; } = Vector2.One;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The specific session of this tabletop.
|
||||||
|
/// </summary>
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public TabletopSession? Session { get; set; } = null;
|
public TabletopSession? Session { get; set; } = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ namespace Content.Server.Tabletop
|
|||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public sealed class TabletopBackgammonSetup : TabletopSetup
|
public sealed class TabletopBackgammonSetup : TabletopSetup
|
||||||
{
|
{
|
||||||
[DataField("boardPrototype")]
|
|
||||||
public string BackgammonBoardPrototype { get; } = "BackgammonBoardTabletop";
|
|
||||||
|
|
||||||
[DataField("whitePiecePrototype")]
|
[DataField("whitePiecePrototype")]
|
||||||
public string WhitePiecePrototype { get; } = "WhiteTabletopPiece";
|
public string WhitePiecePrototype { get; } = "WhiteTabletopPiece";
|
||||||
@@ -15,7 +13,7 @@ namespace Content.Server.Tabletop
|
|||||||
public string BlackPiecePrototype { get; } = "BlackTabletopPiece";
|
public string BlackPiecePrototype { get; } = "BlackTabletopPiece";
|
||||||
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
||||||
{
|
{
|
||||||
var board = entityManager.SpawnEntity(BackgammonBoardPrototype, session.Position);
|
var board = entityManager.SpawnEntity(BoardPrototype, session.Position);
|
||||||
|
|
||||||
const float borderLengthX = 7.35f; //BORDER
|
const float borderLengthX = 7.35f; //BORDER
|
||||||
const float borderLengthY = 5.60f; //BORDER
|
const float borderLengthY = 5.60f; //BORDER
|
||||||
|
|||||||
@@ -8,14 +8,12 @@ namespace Content.Server.Tabletop
|
|||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public sealed class TabletopCheckerSetup : TabletopSetup
|
public sealed class TabletopCheckerSetup : TabletopSetup
|
||||||
{
|
{
|
||||||
[DataField("boardPrototype", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
|
|
||||||
public string CheckerBoardPrototype { get; } = "CheckerBoardTabletop";
|
|
||||||
|
|
||||||
// TODO: Un-hardcode the rest of entity prototype IDs, probably.
|
// TODO: Un-hardcode the rest of entity prototype IDs, probably.
|
||||||
|
|
||||||
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
||||||
{
|
{
|
||||||
var checkerboard = entityManager.SpawnEntity(CheckerBoardPrototype, session.Position.Offset(-1, 0));
|
var checkerboard = entityManager.SpawnEntity(BoardPrototype, session.Position.Offset(-1, 0));
|
||||||
|
|
||||||
session.Entities.Add(checkerboard);
|
session.Entities.Add(checkerboard);
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,12 @@ namespace Content.Server.Tabletop
|
|||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public sealed class TabletopChessSetup : TabletopSetup
|
public sealed class TabletopChessSetup : TabletopSetup
|
||||||
{
|
{
|
||||||
[DataField("boardPrototype", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
|
|
||||||
public string ChessBoardPrototype { get; } = "ChessBoardTabletop";
|
|
||||||
|
|
||||||
// TODO: Un-hardcode the rest of entity prototype IDs, probably.
|
// TODO: Un-hardcode the rest of entity prototype IDs, probably.
|
||||||
|
|
||||||
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
||||||
{
|
{
|
||||||
var chessboard = entityManager.SpawnEntity(ChessBoardPrototype, session.Position.Offset(-1, 0));
|
var chessboard = entityManager.SpawnEntity(BoardPrototype, session.Position.Offset(-1, 0));
|
||||||
|
|
||||||
session.Entities.Add(chessboard);
|
session.Entities.Add(chessboard);
|
||||||
|
|
||||||
|
|||||||
14
Content.Server/Tabletop/TabletopEmptySetup.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using JetBrains.Annotations;
|
||||||
|
|
||||||
|
namespace Content.Server.Tabletop
|
||||||
|
{
|
||||||
|
[UsedImplicitly]
|
||||||
|
public sealed class TabletopEmptySetup : TabletopSetup
|
||||||
|
{
|
||||||
|
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
||||||
|
{
|
||||||
|
var board = entityManager.SpawnEntity(BoardPrototype, session.Position.Offset(0, 0));
|
||||||
|
session.Entities.Add(board);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
10
Content.Server/Tabletop/TabletopHologramComponent.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Content.Server.Tabletop;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This is used for tracking pieces that are simply "holograms" shown on the tabletop
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class TabletopHologramComponent : Component
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -7,8 +7,6 @@ namespace Content.Server.Tabletop
|
|||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public sealed class TabletopParchisSetup : TabletopSetup
|
public sealed class TabletopParchisSetup : TabletopSetup
|
||||||
{
|
{
|
||||||
[DataField("boardPrototype", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
|
|
||||||
public string ParchisBoardPrototype { get; } = "ParchisBoardTabletop";
|
|
||||||
|
|
||||||
[DataField("redPiecePrototype", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
|
[DataField("redPiecePrototype", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||||
public string RedPiecePrototype { get; } = "RedTabletopPiece";
|
public string RedPiecePrototype { get; } = "RedTabletopPiece";
|
||||||
@@ -24,7 +22,7 @@ namespace Content.Server.Tabletop
|
|||||||
|
|
||||||
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
public override void SetupTabletop(TabletopSession session, IEntityManager entityManager)
|
||||||
{
|
{
|
||||||
var board = entityManager.SpawnEntity(ParchisBoardPrototype, session.Position);
|
var board = entityManager.SpawnEntity(BoardPrototype, session.Position);
|
||||||
|
|
||||||
const float x1 = 6.25f;
|
const float x1 = 6.25f;
|
||||||
const float x2 = 4.25f;
|
const float x2 = 4.25f;
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
|
|
||||||
namespace Content.Server.Tabletop
|
namespace Content.Server.Tabletop
|
||||||
{
|
{
|
||||||
[ImplicitDataDefinitionForInheritors]
|
[ImplicitDataDefinitionForInheritors]
|
||||||
@@ -10,5 +13,8 @@ namespace Content.Server.Tabletop
|
|||||||
/// <param name="session">Tabletop session to set up. You'll want to grab the tabletop center position here for spawning entities.</param>
|
/// <param name="session">Tabletop session to set up. You'll want to grab the tabletop center position here for spawning entities.</param>
|
||||||
/// <param name="entityManager">Dependency that can be used for spawning entities.</param>
|
/// <param name="entityManager">Dependency that can be used for spawning entities.</param>
|
||||||
public abstract void SetupTabletop(TabletopSession session, IEntityManager entityManager);
|
public abstract void SetupTabletop(TabletopSession session, IEntityManager entityManager);
|
||||||
|
|
||||||
|
[DataField("boardPrototype", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||||
|
public string BoardPrototype = default!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
|
using Content.Server.Popups;
|
||||||
using Content.Server.Tabletop.Components;
|
using Content.Server.Tabletop.Components;
|
||||||
|
using Content.Shared.Examine;
|
||||||
|
using Content.Shared.Hands.Components;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
|
using Content.Shared.Item;
|
||||||
using Content.Shared.Tabletop;
|
using Content.Shared.Tabletop;
|
||||||
|
using Content.Shared.Tabletop.Components;
|
||||||
using Content.Shared.Tabletop.Events;
|
using Content.Shared.Tabletop.Events;
|
||||||
using Content.Shared.Verbs;
|
using Content.Shared.Verbs;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
@@ -16,7 +21,9 @@ namespace Content.Server.Tabletop
|
|||||||
public sealed partial class TabletopSystem : SharedTabletopSystem
|
public sealed partial class TabletopSystem : SharedTabletopSystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
[Dependency] private readonly IMapManager _mapManager = default!;
|
||||||
|
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||||
[Dependency] private readonly ViewSubscriberSystem _viewSubscriberSystem = default!;
|
[Dependency] private readonly ViewSubscriberSystem _viewSubscriberSystem = default!;
|
||||||
|
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -27,10 +34,73 @@ namespace Content.Server.Tabletop
|
|||||||
SubscribeLocalEvent<TabletopGamerComponent, PlayerDetachedEvent>(OnPlayerDetached);
|
SubscribeLocalEvent<TabletopGamerComponent, PlayerDetachedEvent>(OnPlayerDetached);
|
||||||
SubscribeLocalEvent<TabletopGamerComponent, ComponentShutdown>(OnGamerShutdown);
|
SubscribeLocalEvent<TabletopGamerComponent, ComponentShutdown>(OnGamerShutdown);
|
||||||
SubscribeLocalEvent<TabletopGameComponent, GetVerbsEvent<ActivationVerb>>(AddPlayGameVerb);
|
SubscribeLocalEvent<TabletopGameComponent, GetVerbsEvent<ActivationVerb>>(AddPlayGameVerb);
|
||||||
|
SubscribeLocalEvent<TabletopGameComponent, InteractUsingEvent>(OnInteractUsing);
|
||||||
|
|
||||||
|
SubscribeNetworkEvent<TabletopRequestTakeOut>(OnTabletopRequestTakeOut);
|
||||||
|
|
||||||
InitializeMap();
|
InitializeMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnTabletopRequestTakeOut(TabletopRequestTakeOut msg, EntitySessionEventArgs args)
|
||||||
|
{
|
||||||
|
if (args.SenderSession is not IPlayerSession playerSession)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!TryComp(msg.TableUid, out TabletopGameComponent? tabletop) || tabletop.Session is not { } session)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
if (!msg.Entity.IsValid())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!TryComp(msg.Entity, out TabletopHologramComponent? hologram))
|
||||||
|
{
|
||||||
|
_popupSystem.PopupEntity(Loc.GetString("tabletop-error-remove-non-hologram"), msg.TableUid, args.SenderSession);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if player is actually playing at this table
|
||||||
|
if (!session.Players.ContainsKey(playerSession))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Find the entity, remove it from the session and set it's position to the tabletop
|
||||||
|
session.Entities.TryGetValue(msg.Entity, out var result);
|
||||||
|
session.Entities.Remove(result);
|
||||||
|
_entityManager.QueueDeleteEntity(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnInteractUsing(EntityUid uid, TabletopGameComponent component, InteractUsingEvent args)
|
||||||
|
{
|
||||||
|
if (!EntityManager.TryGetComponent(args.User, out HandsComponent? hands))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (component.Session is not { } session)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (hands.ActiveHand == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (hands.ActiveHand.HeldEntity == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var handEnt = hands.ActiveHand.HeldEntity.Value;
|
||||||
|
|
||||||
|
if (!TryComp<ItemComponent>(handEnt, out var item))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var meta = MetaData(handEnt);
|
||||||
|
var protoId = meta.EntityPrototype?.ID;
|
||||||
|
|
||||||
|
var hologram = _entityManager.SpawnEntity(protoId, session.Position.Offset(-1, 0));
|
||||||
|
|
||||||
|
// Make sure the entity can be dragged and can be removed, move it into the board game world and add it to the Entities hashmap
|
||||||
|
EnsureComp<TabletopDraggableComponent>(hologram);
|
||||||
|
EnsureComp<TabletopHologramComponent>(hologram);
|
||||||
|
session.Entities.Add(hologram);
|
||||||
|
|
||||||
|
_popupSystem.PopupEntity(Loc.GetString("tabletop-added-piece"), uid, args.User);
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnTabletopMove(TabletopMoveEvent msg, EntitySessionEventArgs args)
|
protected override void OnTabletopMove(TabletopMoveEvent msg, EntitySessionEventArgs args)
|
||||||
{
|
{
|
||||||
if (args.SenderSession is not IPlayerSession playerSession)
|
if (args.SenderSession is not IPlayerSession playerSession)
|
||||||
@@ -57,11 +127,14 @@ namespace Content.Server.Tabletop
|
|||||||
if (!EntityManager.TryGetComponent<ActorComponent?>(args.User, out var actor))
|
if (!EntityManager.TryGetComponent<ActorComponent?>(args.User, out var actor))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ActivationVerb verb = new();
|
var playVerb = new ActivationVerb()
|
||||||
verb.Text = Loc.GetString("tabletop-verb-play-game");
|
{
|
||||||
verb.Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/die.svg.192dpi.png"));
|
Text = Loc.GetString("tabletop-verb-play-game"),
|
||||||
verb.Act = () => OpenSessionFor(actor.PlayerSession, uid);
|
Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/die.svg.192dpi.png")),
|
||||||
args.Verbs.Add(verb);
|
Act = () => OpenSessionFor(actor.PlayerSession, uid)
|
||||||
|
};
|
||||||
|
|
||||||
|
args.Verbs.Add(playVerb);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTabletopActivate(EntityUid uid, TabletopGameComponent component, ActivateInWorldEvent args)
|
private void OnTabletopActivate(EntityUid uid, TabletopGameComponent component, ActivateInWorldEvent args)
|
||||||
|
|||||||
@@ -86,6 +86,13 @@ namespace Content.Shared.Tabletop
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class TabletopRequestTakeOut : EntityEventArgs
|
||||||
|
{
|
||||||
|
public EntityUid Entity;
|
||||||
|
public EntityUid TableUid;
|
||||||
|
}
|
||||||
|
|
||||||
#region Utility
|
#region Utility
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
155
Resources/Locale/en-US/paper/book-dnd.ftl
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
book-cnc-sheet = C&C 5e Character Sheet
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
SECTION 1: THE BASICS
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
Character Name :
|
||||||
|
Race / Class :
|
||||||
|
Level / Exp Pts :
|
||||||
|
Background :
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
SECTION 2: ABILITIES
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
Strength = 10 (+0) 10 Base
|
||||||
|
Dexterity = 10 (+0) 10 Base
|
||||||
|
Constitution = 10 (+0) 10 Base
|
||||||
|
Intelligence = 10 (+0) 10 Base
|
||||||
|
Wisdom = 10 (+0) 10 Base
|
||||||
|
Charisma = 10 (+0) 10 Base
|
||||||
|
|
||||||
|
Proficiency Bonus =
|
||||||
|
Perception (passive wisdom) =
|
||||||
|
|
||||||
|
Racial (Race)
|
||||||
|
|
||||||
|
Class (Class)
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
SECTION 3: SAVING THROWS
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
( )Strength = +0
|
||||||
|
( )Dexterity = +0
|
||||||
|
( )Constitution = +0
|
||||||
|
( )Intelligence = +0
|
||||||
|
( )Wisdom = +0
|
||||||
|
( )Charisma = +0
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
SECTION 4: SKILLS
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
( ) Acrobatics (Dex) +0 ( ) Medicine (Wis) +0
|
||||||
|
( ) Animal Handling (Wis) +0 ( ) Nature (Int) +0
|
||||||
|
( ) Arcana (Int) +0 ( ) Perception (Wis) +0
|
||||||
|
( ) Athletics (Str) +0 ( ) Performance (Cha) +0
|
||||||
|
( ) Deception (Cha) +0 ( ) Persuasion (Cha) +0
|
||||||
|
( ) History (Int) +0 ( ) Religion (Int) +0
|
||||||
|
( ) Insight (Wis) +0 ( ) Sleight of Hand (Dex) +0
|
||||||
|
( ) Intimidation (Cha) +0 ( ) Stealth (Dex) +0
|
||||||
|
( ) Investigation (Int) +0 ( ) Survival (Wis) +0
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
SECTION 5: COMBAT & HEALTH
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Armor Class :
|
||||||
|
Initiative (passive) :
|
||||||
|
Speed :
|
||||||
|
|
||||||
|
Hit Dice :
|
||||||
|
Max Hit Points :
|
||||||
|
Current Hit Points :
|
||||||
|
Temporary Hit Points :
|
||||||
|
|
||||||
|
ATTACKS
|
||||||
|
Weapon type(Melee or Ranged) / Bonus / Damage (Type)
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
SECTION 6: BACKGROUND
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Age / Gender :
|
||||||
|
Height / Weight :
|
||||||
|
Eyes / Skin / Hair :
|
||||||
|
Description :
|
||||||
|
|
||||||
|
Background :
|
||||||
|
Skill Proficiencies :
|
||||||
|
Tool Proficiencies :
|
||||||
|
Languages :
|
||||||
|
|
||||||
|
Features :
|
||||||
|
Con of Choice :
|
||||||
|
Traits :
|
||||||
|
Ideal :
|
||||||
|
Bonds :
|
||||||
|
Flaws :
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
SECTION 7: EXTRAS
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
Equipment List
|
||||||
|
Description Cost Weight
|
||||||
|
|
||||||
|
|
||||||
|
lbs
|
||||||
|
|
||||||
|
Wealth
|
||||||
|
PP :
|
||||||
|
EP :
|
||||||
|
GP :
|
||||||
|
SP :
|
||||||
|
CP :
|
||||||
|
|
||||||
|
Gems :
|
||||||
|
Jewelry :
|
||||||
|
Other :
|
||||||
|
Magic Items :
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
SECTION 8: SPELLCASTING
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Spell Level:
|
||||||
|
Spell Save DC:
|
||||||
|
Spell Attack Mod:
|
||||||
|
Spell Slots:
|
||||||
|
1: (MAX) (USED)
|
||||||
|
2: (MAX) (USED)
|
||||||
|
3: (MAX) (USED)
|
||||||
|
4: (MAX) (USED)
|
||||||
|
5: (MAX) (USED)
|
||||||
|
6: (MAX) (USED)
|
||||||
|
7: (MAX) (USED)
|
||||||
|
8: (MAX) (USED)
|
||||||
|
9: (MAX) (USED)
|
||||||
|
|
||||||
|
Cantrips
|
||||||
|
Name Casting Time Range Duration Components
|
||||||
|
|
||||||
|
1: Name Casting Time Range Duration Components Ritual?
|
||||||
|
|
||||||
|
2: Name Casting Time Range Duration Components Ritual?
|
||||||
|
|
||||||
|
3: Name Casting Time Range Duration Components Ritual?
|
||||||
|
|
||||||
|
4: Name Casting Time Range Duration Components Ritual?
|
||||||
|
|
||||||
|
5: Name Casting Time Range Duration Components Ritual?
|
||||||
|
|
||||||
|
6: Name Casting Time Range Duration Components Ritual?
|
||||||
|
|
||||||
|
7: Name Casting Time Range Duration Components Ritual?
|
||||||
|
|
||||||
|
8: Name Casting Time Range Duration Components Ritual?
|
||||||
|
|
||||||
|
9: Name Casting Time Range Duration Components Ritual?
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
Carps and Crypts 5e
|
||||||
|
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
## TabletopGameComponent
|
## TabletopGameComponent
|
||||||
tabletop-verb-play-game = Play Game
|
tabletop-verb-play-game = Play Game
|
||||||
|
tabletop-verb-dump-pieces = Dump Pieces
|
||||||
tabletop-default-board-name = Board Game
|
tabletop-default-board-name = Board Game
|
||||||
|
tabletop-error-remove-non-hologram = You cant remove a built in piece!
|
||||||
|
tabletop-added-piece = The board shimmers brightly!
|
||||||
|
|
||||||
## Chess
|
## Chess
|
||||||
tabletop-chess-board-name = Chess
|
tabletop-chess-board-name = Chess
|
||||||
@@ -14,3 +17,6 @@ tabletop-backgammon-board-name = Backgammon
|
|||||||
|
|
||||||
## Checkers
|
## Checkers
|
||||||
tabletop-checkers-board-name = Checkers
|
tabletop-checkers-board-name = Checkers
|
||||||
|
|
||||||
|
## Battlemap
|
||||||
|
tabletop-battlemap-board-name = Battlemap
|
||||||
|
|||||||
@@ -140,8 +140,13 @@
|
|||||||
- id: BackgammonBoard
|
- id: BackgammonBoard
|
||||||
- id: ParchisBoard
|
- id: ParchisBoard
|
||||||
- id: CheckerBoard
|
- id: CheckerBoard
|
||||||
- id: d6Dice
|
- id: ShipBattlemap
|
||||||
amount: 4
|
- id: SnowBattlemap
|
||||||
|
- id: SandBattlemap
|
||||||
|
- id: MoonBattlemap
|
||||||
|
- id: GrassBattlemap
|
||||||
|
- id: DiceBag
|
||||||
|
amount: 6
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: CrateFunATV
|
id: CrateFunATV
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
- type: vendingMachineInventory
|
- type: vendingMachineInventory
|
||||||
id: GoodCleanFunInventory
|
id: GoodCleanFunInventory
|
||||||
startingInventory:
|
startingInventory:
|
||||||
DiceBag: 4
|
DiceBag: 6
|
||||||
Paper: 8
|
Paper: 8
|
||||||
d6Dice: 8
|
d6Dice: 8
|
||||||
ChessBoard: 1
|
ChessBoard: 1
|
||||||
BackgammonBoard: 1
|
BackgammonBoard: 1
|
||||||
ParchisBoard: 1
|
ParchisBoard: 1
|
||||||
CheckerBoard: 1
|
CheckerBoard: 1
|
||||||
|
ShipBattlemap: 1
|
||||||
|
SnowBattlemap: 1
|
||||||
|
SandBattlemap: 1
|
||||||
|
MoonBattlemap: 1
|
||||||
|
GrassBattlemap: 1
|
||||||
|
PaperCNCSheet: 6
|
||||||
MysteryFigureBox: 2
|
MysteryFigureBox: 2
|
||||||
BooksBag: 3
|
BooksBag: 3
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseItem
|
parent: BaseBoardEntity
|
||||||
id: BackgammonBoard
|
id: BackgammonBoard
|
||||||
name: backgammon board
|
name: backgammon board
|
||||||
description: Old fashioned game of dice and pieces.
|
description: Old fashioned game of dice and pieces.
|
||||||
@@ -12,14 +12,14 @@
|
|||||||
size: 550, 410
|
size: 550, 410
|
||||||
setup:
|
setup:
|
||||||
!type:TabletopBackgammonSetup
|
!type:TabletopBackgammonSetup
|
||||||
|
boardPrototype: BackgammonBoardTabletop
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: BackgammonBoardTabletop
|
id: BackgammonBoardTabletop
|
||||||
name: backgammon
|
name: backgammon
|
||||||
|
parent: BaseBoardTabletop
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/backgammon_tabletop.rsi
|
sprite: Objects/Fun/Tabletop/backgammon_tabletop.rsi
|
||||||
state: backgammonBoard
|
state: backgammonBoard
|
||||||
noRot: false
|
|
||||||
drawdepth: FloorTiles
|
|
||||||
|
|||||||
39
Resources/Prototypes/Entities/Objects/Fun/Tabletop/base.yml
Normal 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
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Uses the chessboard and generic pieces
|
# Uses the chessboard and generic pieces
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseItem
|
parent: BaseBoardEntity
|
||||||
id: CheckerBoard
|
id: CheckerBoard
|
||||||
name: checkerboard
|
name: checkerboard
|
||||||
description: A checkerboard. Pieces included!
|
description: A checkerboard. Pieces included!
|
||||||
@@ -11,35 +11,26 @@
|
|||||||
- type: TabletopGame
|
- type: TabletopGame
|
||||||
boardName: tabletop-checkers-board-name
|
boardName: tabletop-checkers-board-name
|
||||||
size: 338, 274
|
size: 338, 274
|
||||||
setup: !type:TabletopCheckerSetup
|
setup:
|
||||||
|
!type:TabletopCheckerSetup
|
||||||
|
boardPrototype: CheckerBoardTabletop
|
||||||
|
|
||||||
# Checkerboard tabletop item (item only visible in tabletop game)
|
# Checkerboard tabletop item (item only visible in tabletop game)
|
||||||
- type: entity
|
- type: entity
|
||||||
id: CheckerBoardTabletop
|
id: CheckerBoardTabletop
|
||||||
name: checkerboard
|
name: checkerboard
|
||||||
|
parent: BaseBoardTabletop
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chessboard_tabletop.rsi
|
sprite: Objects/Fun/Tabletop/chessboard_tabletop.rsi
|
||||||
state: chessboard_tabletop
|
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
|
# The pieces
|
||||||
- type: entity
|
- type: entity
|
||||||
id: WhiteCheckerPiece
|
id: WhiteCheckerPiece
|
||||||
name: white piece
|
name: white piece
|
||||||
parent: BaseCheckerPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
|
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
|
||||||
@@ -48,7 +39,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: WhiteCheckerQueen
|
id: WhiteCheckerQueen
|
||||||
name: white queen
|
name: white queen
|
||||||
parent: BaseCheckerPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
|
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
|
||||||
@@ -57,7 +48,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackCheckerPiece
|
id: BlackCheckerPiece
|
||||||
name: black piece
|
name: black piece
|
||||||
parent: BaseCheckerPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
|
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
|
||||||
@@ -66,7 +57,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackCheckerQueen
|
id: BlackCheckerQueen
|
||||||
name: black queen
|
name: black queen
|
||||||
parent: BaseCheckerPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
|
sprite: Objects/Fun/Tabletop/checker_pieces.rsi
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Chessboard item (normal in game item you can hold in your hand)
|
# Chessboard item (normal in game item you can hold in your hand)
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseItem
|
parent: BaseBoardEntity
|
||||||
id: ChessBoard
|
id: ChessBoard
|
||||||
name: chessboard
|
name: chessboard
|
||||||
description: A chessboard. Pieces included!
|
description: A chessboard. Pieces included!
|
||||||
@@ -11,36 +11,26 @@
|
|||||||
- type: TabletopGame
|
- type: TabletopGame
|
||||||
boardName: tabletop-chess-board-name
|
boardName: tabletop-chess-board-name
|
||||||
size: 338, 274
|
size: 338, 274
|
||||||
setup: !type:TabletopChessSetup
|
setup:
|
||||||
|
!type:TabletopChessSetup
|
||||||
|
boardPrototype: ChessBoardTabletop
|
||||||
|
|
||||||
# Chessboard tabletop item (item only visible in tabletop game)
|
# Chessboard tabletop item (item only visible in tabletop game)
|
||||||
- type: entity
|
- type: entity
|
||||||
id: ChessBoardTabletop
|
id: ChessBoardTabletop
|
||||||
name: chessboard
|
name: chessboard
|
||||||
|
parent: BaseBoardTabletop
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chessboard_tabletop.rsi
|
sprite: Objects/Fun/Tabletop/chessboard_tabletop.rsi
|
||||||
state: chessboard_tabletop
|
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
|
# White pieces
|
||||||
- type: entity
|
- type: entity
|
||||||
id: WhiteKing
|
id: WhiteKing
|
||||||
name: white king
|
name: white king
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -49,7 +39,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: WhiteQueen
|
id: WhiteQueen
|
||||||
name: white queen
|
name: white queen
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -58,7 +48,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: WhiteRook
|
id: WhiteRook
|
||||||
name: white rook
|
name: white rook
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -67,7 +57,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: WhiteBishop
|
id: WhiteBishop
|
||||||
name: white bishop
|
name: white bishop
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -76,7 +66,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: WhiteKnight
|
id: WhiteKnight
|
||||||
name: white knight
|
name: white knight
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -85,7 +75,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: WhitePawn
|
id: WhitePawn
|
||||||
name: white pawn
|
name: white pawn
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -95,7 +85,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackKing
|
id: BlackKing
|
||||||
name: black king
|
name: black king
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -104,7 +94,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackQueen
|
id: BlackQueen
|
||||||
name: black queen
|
name: black queen
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -113,7 +103,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackRook
|
id: BlackRook
|
||||||
name: black rook
|
name: black rook
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -122,7 +112,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackBishop
|
id: BlackBishop
|
||||||
name: black bishop
|
name: black bishop
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -131,7 +121,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackKnight
|
id: BlackKnight
|
||||||
name: black knight
|
name: black knight
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
@@ -140,7 +130,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackPawn
|
id: BlackPawn
|
||||||
name: black pawn
|
name: black pawn
|
||||||
parent: BaseChessPiece
|
parent: BaseTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
sprite: Objects/Fun/Tabletop/chess_pieces.rsi
|
||||||
|
|||||||
135
Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml
Normal 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
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Parchís board item (normal in game item you can hold in your hand)
|
# Parchís board item (normal in game item you can hold in your hand)
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseItem
|
parent: BaseBoardEntity
|
||||||
id: ParchisBoard
|
id: ParchisBoard
|
||||||
name: parchís board
|
name: parchís board
|
||||||
description: Cross and circle board game famous for destroying countless friendships.
|
description: Cross and circle board game famous for destroying countless friendships.
|
||||||
@@ -13,16 +13,16 @@
|
|||||||
size: 574, 574
|
size: 574, 574
|
||||||
setup:
|
setup:
|
||||||
!type:TabletopParchisSetup
|
!type:TabletopParchisSetup
|
||||||
|
boardPrototype: ParchisBoardTabletop
|
||||||
|
|
||||||
# Parchís tabletop item (item only visible in tabletop game)
|
# Parchís tabletop item (item only visible in tabletop game)
|
||||||
- type: entity
|
- type: entity
|
||||||
id: ParchisBoardTabletop
|
id: ParchisBoardTabletop
|
||||||
name: parchís
|
name: parchís
|
||||||
|
parent: BaseBoardTabletop
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Fun/Tabletop/parchis_tabletop.rsi
|
sprite: Objects/Fun/Tabletop/parchis_tabletop.rsi
|
||||||
state: board
|
state: board
|
||||||
noRot: false
|
|
||||||
drawdepth: FloorTiles
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BaseTabletopPiece
|
id: BaseGenericTabletopPiece
|
||||||
parent: BaseItem
|
parent: BaseTabletopPiece
|
||||||
abstract: true
|
abstract: true
|
||||||
components:
|
components:
|
||||||
- type: TabletopDraggable
|
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
noRot: true
|
noRot: true
|
||||||
sprite: Objects/Fun/Tabletop/generic_pieces.rsi
|
sprite: Objects/Fun/Tabletop/generic_pieces.rsi
|
||||||
- type: Appearance
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: RedTabletopPiece
|
id: RedTabletopPiece
|
||||||
name: red piece
|
name: red piece
|
||||||
parent: BaseTabletopPiece
|
parent: BaseGenericTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: red
|
state: red
|
||||||
@@ -20,7 +18,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: GreenTabletopPiece
|
id: GreenTabletopPiece
|
||||||
name: green piece
|
name: green piece
|
||||||
parent: BaseTabletopPiece
|
parent: BaseGenericTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: green
|
state: green
|
||||||
@@ -28,7 +26,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: YellowTabletopPiece
|
id: YellowTabletopPiece
|
||||||
name: yellow piece
|
name: yellow piece
|
||||||
parent: BaseTabletopPiece
|
parent: BaseGenericTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: yellow
|
state: yellow
|
||||||
@@ -36,7 +34,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlueTabletopPiece
|
id: BlueTabletopPiece
|
||||||
name: blue piece
|
name: blue piece
|
||||||
parent: BaseTabletopPiece
|
parent: BaseGenericTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: blue
|
state: blue
|
||||||
@@ -44,7 +42,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: WhiteTabletopPiece
|
id: WhiteTabletopPiece
|
||||||
name: white piece
|
name: white piece
|
||||||
parent: BaseTabletopPiece
|
parent: BaseGenericTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: white
|
state: white
|
||||||
@@ -52,7 +50,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: BlackTabletopPiece
|
id: BlackTabletopPiece
|
||||||
name: black piece
|
name: black piece
|
||||||
parent: BaseTabletopPiece
|
parent: BaseGenericTabletopPiece
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: black
|
state: black
|
||||||
|
|||||||
@@ -140,6 +140,37 @@
|
|||||||
guides:
|
guides:
|
||||||
- CargoBounties
|
- 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
|
- type: entity
|
||||||
parent: Paper
|
parent: Paper
|
||||||
id: PaperWritten
|
id: PaperWritten
|
||||||
|
|||||||
@@ -801,6 +801,12 @@
|
|||||||
- type: Tag
|
- type: Tag
|
||||||
id: Taser
|
id: Taser
|
||||||
|
|
||||||
|
- type: Tag
|
||||||
|
id: TabletopBoard
|
||||||
|
|
||||||
|
- type: Tag
|
||||||
|
id: TabletopPiece
|
||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: TimerBrigElectronics
|
id: TimerBrigElectronics
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 235 B |
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/discordia-space/CEV-Eris/commit/026ee3250ac1de938b503e3eb46ad73dd9c3ca82",
|
||||||
|
"size": {
|
||||||
|
"x": 18,
|
||||||
|
"y": 18
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/discordia-space/CEV-Eris/commit/026ee3250ac1de938b503e3eb46ad73dd9c3ca82",
|
||||||
|
|
||||||
|
"size": {
|
||||||
|
"x": 288,
|
||||||
|
"y": 288
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "tabletop"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 399 B |
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/vgstation-coders/vgstation13/tree/e4d3ea7f69d21c3667be12b114fa935c4640cb05",
|
||||||
|
"size": {
|
||||||
|
"x": 18,
|
||||||
|
"y": 18
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/vgstation-coders/vgstation13/tree/e4d3ea7f69d21c3667be12b114fa935c4640cb05",
|
||||||
|
|
||||||
|
"size": {
|
||||||
|
"x": 288,
|
||||||
|
"y": 288
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "tabletop"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 767 B |
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/discordia-space/CEV-Eris/commit/026ee3250ac1de938b503e3eb46ad73dd9c3ca82",
|
||||||
|
"size": {
|
||||||
|
"x": 18,
|
||||||
|
"y": 18
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/discordia-space/CEV-Eris/commit/026ee3250ac1de938b503e3eb46ad73dd9c3ca82",
|
||||||
|
|
||||||
|
"size": {
|
||||||
|
"x": 288,
|
||||||
|
"y": 288
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "tabletop"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 463 B |
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://opengameart.org/content/seamless-space-backgrounds",
|
||||||
|
"size": {
|
||||||
|
"x": 18,
|
||||||
|
"y": 18
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, parallax from https://opengameart.org/content/seamless-space-backgrounds",
|
||||||
|
|
||||||
|
"size": {
|
||||||
|
"x": 543,
|
||||||
|
"y": 543
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "tabletop"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 256 KiB |
|
After Width: | Height: | Size: 471 B |
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/tgstation/tgstation/tree/8abb19545828230d92ba18827feeb42a67a55d49",
|
||||||
|
"size": {
|
||||||
|
"x": 18,
|
||||||
|
"y": 18
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/tgstation/tgstation/tree/8abb19545828230d92ba18827feeb42a67a55d49",
|
||||||
|
|
||||||
|
"size": {
|
||||||
|
"x": 288,
|
||||||
|
"y": 288
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "tabletop"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 3.7 KiB |