aboutsummaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-14 22:38:23 -0400
committerhistoria <[not public]>2026-06-14 22:38:23 -0400
commita6f0ad79e2e3a5b7c11eef1ffc3233f3a2766f77 (patch)
tree89601a502bbfcb50302cf03f09b6febc6040eeb0 /data
parent1aba2bdd23aebed4032333e74aa553c40a31fcbd (diff)
downloadthehouseoficarus-a6f0ad79e2e3a5b7c11eef1ffc3233f3a2766f77.tar.gz
feat: fractional ticks and server game_speed implemented. potentially insanely janky.
Diffstat (limited to 'data')
-rw-r--r--data/drops/christmas_cracker_hat.yaml14
-rw-r--r--data/drops/christmas_cracker_misc.yaml10
-rw-r--r--data/help/actions.yaml35
-rw-r--r--data/help/left_tinymap.yaml (renamed from data/help/left-tinymap.yaml)4
-rw-r--r--data/help/queue_actions_silently.yaml15
-rw-r--r--data/help/queued.yaml17
-rw-r--r--data/help/search.yaml17
-rw-r--r--data/help/ticks.yaml24
-rw-r--r--data/items/birds_nest.yaml3
-rw-r--r--data/items/bread.yaml6
-rw-r--r--data/items/christmas_cracker.yaml10
-rw-r--r--data/items/party_hat_blue.yaml7
-rw-r--r--data/items/party_hat_green.yaml7
-rw-r--r--data/items/party_hat_pink.yaml7
-rw-r--r--data/items/party_hat_red.yaml7
-rw-r--r--data/items/party_hat_white.yaml7
-rw-r--r--data/items/party_hat_yellow.yaml7
17 files changed, 190 insertions, 7 deletions
diff --git a/data/drops/christmas_cracker_hat.yaml b/data/drops/christmas_cracker_hat.yaml
new file mode 100644
index 0000000..bb7bde8
--- /dev/null
+++ b/data/drops/christmas_cracker_hat.yaml
@@ -0,0 +1,14 @@
+id: christmas_cracker_hat
+drops:
+ - item_id: party_hat_blue
+ weight: 1
+ - item_id: party_hat_pink
+ weight: 1
+ - item_id: party_hat_yellow
+ weight: 1
+ - item_id: party_hat_green
+ weight: 1
+ - item_id: party_hat_red
+ weight: 1
+ - item_id: party_hat_white
+ weight: 1
diff --git a/data/drops/christmas_cracker_misc.yaml b/data/drops/christmas_cracker_misc.yaml
new file mode 100644
index 0000000..6ee6979
--- /dev/null
+++ b/data/drops/christmas_cracker_misc.yaml
@@ -0,0 +1,10 @@
+id: christmas_cracker_misc
+drops:
+ - item_id: ashes
+ weight: 1
+ - item_id: bread
+ weight: 1
+ - item_id: bronze_pickaxe
+ weight: 1
+ - item_id: ""
+ weight: 3
diff --git a/data/help/actions.yaml b/data/help/actions.yaml
new file mode 100644
index 0000000..7a2cbd3
--- /dev/null
+++ b/data/help/actions.yaml
@@ -0,0 +1,35 @@
+name: "actions"
+category: "General"
+description: |
+ The action queue system resolves all gameplay commands on the 600ms game tick
+ instead of instantly. Commands fall into three classes:
+
+ Instant actions — execute immediately, bypassing the tick queue entirely:
+ say, score, inventory, equipment, look, exits, help, map, option,
+ alias, unalias, description, queued
+
+ Free actions — stackable, all execute before active actions:
+ wear, wield, remove, unwear, unwield, style
+ You can queue multiple free actions. They execute in the order you typed them.
+
+ Active actions — only the most recent survives:
+ All other commands (move, attack, mine, chop, fish, cut, use, talk,
+ pull, push, burn, stoke, get, drop, search, quit)
+ If you queue two active actions, the newer one replaces the older one.
+
+ Order of execution each tick:
+ 1. Free actions (per player, in order)
+ 2. Active actions (globally, sorted by real-time timestamp)
+
+ This means free actions always take effect before active actions, even if
+ you typed the active one first. For example, "attack goblin" then "style
+ aggressive" in the same tick means style applies first, then combat starts.
+
+ Conflict resolution:
+ - If two players attack the same mob on the same tick, the first to
+ queue the command gets the kill.
+ - If multiple players successfully harvest a shared-resource object on
+ the same tick, ALL players get their drops.
+ - If two players try to pick up the same item, the first queued gets it.
+
+ See also: help queued
diff --git a/data/help/left-tinymap.yaml b/data/help/left_tinymap.yaml
index 689aa89..6810dd1 100644
--- a/data/help/left-tinymap.yaml
+++ b/data/help/left_tinymap.yaml
@@ -1,4 +1,4 @@
-name: "left-tinymap"
+name: "left_tinymap"
category: "Options"
description: |
Show the mini-map on the left side of room descriptions.
@@ -6,6 +6,6 @@ description: |
Type: boolean (on/off)
Default: off
- When both tinymap and left-tinymap are enabled, the
+ When both tinymap and left_tinymap are enabled, the
mini-map appears on the left side of the room description
rather than the right.
diff --git a/data/help/queue_actions_silently.yaml b/data/help/queue_actions_silently.yaml
new file mode 100644
index 0000000..8101c5c
--- /dev/null
+++ b/data/help/queue_actions_silently.yaml
@@ -0,0 +1,15 @@
+name: "queue_actions_silently"
+category: "Options"
+description: |
+ Controls whether queued game actions produce confirmation messages.
+
+ When on (default): No message is shown when you queue an action. The action
+ simply executes on the next game tick without fanfare.
+
+ When off: A brief "You prepare to X." message is shown for each queued
+ action, confirming that it has been added to the queue.
+
+ Usage: option queue_actions_silently on
+ option queue_actions_silently off
+
+ See also: help queued, help actions, help option
diff --git a/data/help/queued.yaml b/data/help/queued.yaml
new file mode 100644
index 0000000..6859b65
--- /dev/null
+++ b/data/help/queued.yaml
@@ -0,0 +1,17 @@
+name: "queued"
+category: "General"
+description: |
+ Shows your pending actions that will execute on the next game tick.
+
+ Usage: queued
+
+ All gameplay actions are resolved once per tick (600ms). Free actions
+ stack (you can queue several), while active actions replace each other.
+ Instant actions execute immediately.
+
+ The queued command shows:
+ - Free actions you've stacked up (e.g. wear, remove, style)
+ - Your active action that will execute after all free actions
+ - Your position in the global active action queue (for conflict resolution)
+
+ See also: help actions
diff --git a/data/help/search.yaml b/data/help/search.yaml
index 42eec52..96bd008 100644
--- a/data/help/search.yaml
+++ b/data/help/search.yaml
@@ -1,12 +1,19 @@
name: "search"
category: "Items"
description: |
- Search an item in your inventory.
+ Search a searchable item in your inventory.
Usage: search <item>
- Example: search nest, search birds nest
+ Example: search nest, search cracker
- Opens a searchable item (currently only bird's nests) and rolls on its
- drop table for loot. The item is consumed in the process. Items found
- go to inventory or fall to the ground if full.
+ Searching takes a few game ticks to complete. On each tick, you will
+ see progress messages until the action finishes and you receive your
+ reward. If you are interrupted during a search (by combat, movement,
+ or another action), the item is NOT consumed.
+
+ Currently searchable items:
+ bird's nest - Credits (various amounts)
+ christmas cracker - Random party hat + bonus item
+
+ Items found go to inventory or fall to the ground if full.
diff --git a/data/help/ticks.yaml b/data/help/ticks.yaml
new file mode 100644
index 0000000..fd128c2
--- /dev/null
+++ b/data/help/ticks.yaml
@@ -0,0 +1,24 @@
+name: "ticks"
+category: "General"
+description: |
+ All timed game actions use a tick-based system. Each game tick runs at a
+ configurable interval (default 600ms). Actions like gathering, combat, and
+ crafting advance on each tick.
+
+ Fractional ticks allow tool speeds and timers to be non-integer values.
+ For example, a tool with speed 4.5 has a 50% chance of taking 4 ticks
+ and a 50% chance of taking 5 ticks per action cycle. The average
+ converges to 4.5 over many actions. This applies to:
+
+ - Tool speed (gathering, firemaking)
+ - Weapon speed (combat)
+ - Production wait timers (use behaviors)
+ - Search timers
+ - Depletion and respawn timers
+
+ The game_speed config option scales ALL tick timers proportionally.
+ A game_speed of 2.0 makes everything resolve twice as fast; 0.5 makes
+ everything twice as slow.
+
+ Use the "option" command to configure tick-related display settings.
+ Use "help option" for a list of all player options.
diff --git a/data/items/birds_nest.yaml b/data/items/birds_nest.yaml
index 674cdaa..844426f 100644
--- a/data/items/birds_nest.yaml
+++ b/data/items/birds_nest.yaml
@@ -4,3 +4,6 @@ aliases: ["nest", "birds", "bird"]
description: "A bird's nest. You can search it for treasure."
value: 5
stackable: false
+search_table: birds_nest_drop
+search_ticks: 3
+search_message: "digging through the bird's nest"
diff --git a/data/items/bread.yaml b/data/items/bread.yaml
new file mode 100644
index 0000000..f1c64f1
--- /dev/null
+++ b/data/items/bread.yaml
@@ -0,0 +1,6 @@
+id: bread
+name: bread
+aliases: ["loaf", "bread"]
+description: "A fresh loaf of bread. Smells wonderful."
+value: 2
+stackable: false
diff --git a/data/items/christmas_cracker.yaml b/data/items/christmas_cracker.yaml
new file mode 100644
index 0000000..42dbf26
--- /dev/null
+++ b/data/items/christmas_cracker.yaml
@@ -0,0 +1,10 @@
+id: christmas_cracker
+name: christmas cracker
+aliases: ["cracker", "christmas"]
+description: "A festive party cracker. Pull it apart to see what's inside!"
+value: 10
+stackable: true
+search_table: christmas_cracker_hat
+search_misc_table: christmas_cracker_misc
+search_ticks: 3
+search_message: "digging through the christmas cracker"
diff --git a/data/items/party_hat_blue.yaml b/data/items/party_hat_blue.yaml
new file mode 100644
index 0000000..81ad988
--- /dev/null
+++ b/data/items/party_hat_blue.yaml
@@ -0,0 +1,7 @@
+id: party_hat_blue
+name: blue party hat
+aliases: ["party hat", "blue hat"]
+description: "A festive blue party hat."
+value: 2
+equip_slot: head
+stackable: false
diff --git a/data/items/party_hat_green.yaml b/data/items/party_hat_green.yaml
new file mode 100644
index 0000000..907da90
--- /dev/null
+++ b/data/items/party_hat_green.yaml
@@ -0,0 +1,7 @@
+id: party_hat_green
+name: green party hat
+aliases: ["party hat", "green hat"]
+description: "A festive green party hat."
+value: 2
+equip_slot: head
+stackable: false
diff --git a/data/items/party_hat_pink.yaml b/data/items/party_hat_pink.yaml
new file mode 100644
index 0000000..accd9a0
--- /dev/null
+++ b/data/items/party_hat_pink.yaml
@@ -0,0 +1,7 @@
+id: party_hat_pink
+name: pink party hat
+aliases: ["party hat", "pink hat"]
+description: "A festive pink party hat."
+value: 2
+equip_slot: head
+stackable: false
diff --git a/data/items/party_hat_red.yaml b/data/items/party_hat_red.yaml
new file mode 100644
index 0000000..911d07b
--- /dev/null
+++ b/data/items/party_hat_red.yaml
@@ -0,0 +1,7 @@
+id: party_hat_red
+name: red party hat
+aliases: ["party hat", "red hat"]
+description: "A festive red party hat."
+value: 2
+equip_slot: head
+stackable: false
diff --git a/data/items/party_hat_white.yaml b/data/items/party_hat_white.yaml
new file mode 100644
index 0000000..e4bd555
--- /dev/null
+++ b/data/items/party_hat_white.yaml
@@ -0,0 +1,7 @@
+id: party_hat_white
+name: white party hat
+aliases: ["party hat", "white hat"]
+description: "A festive white party hat."
+value: 2
+equip_slot: head
+stackable: false
diff --git a/data/items/party_hat_yellow.yaml b/data/items/party_hat_yellow.yaml
new file mode 100644
index 0000000..eabd3e8
--- /dev/null
+++ b/data/items/party_hat_yellow.yaml
@@ -0,0 +1,7 @@
+id: party_hat_yellow
+name: yellow party hat
+aliases: ["party hat", "yellow hat"]
+description: "A festive yellow party hat."
+value: 2
+equip_slot: head
+stackable: false