aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-25 04:46:40 -0400
committerhistoria <[not public]>2026-06-25 04:46:40 -0400
commit2725e2927a1595c7b100d942d1f14146252adeb7 (patch)
treee8bc2292634a2d686c751981ddb3097517cccc6a
parent94a06fbbe682701ca4d4bd2a70cd74d8df29c932 (diff)
downloadthehouseoficarus-2725e2927a1595c7b100d942d1f14146252adeb7.tar.gz
feat: who, global chat, removed redundant YAML IDs
-rw-r--r--AGENTS.md8
-rw-r--r--building_guide/bank.md3
-rw-r--r--building_guide/behaviors.md11
-rw-r--r--building_guide/construction.md9
-rw-r--r--building_guide/courses.md5
-rw-r--r--building_guide/doors.md8
-rw-r--r--building_guide/drops.md6
-rw-r--r--building_guide/hacking.md3
-rw-r--r--building_guide/hazards.md3
-rw-r--r--building_guide/hidden_objects.md5
-rw-r--r--building_guide/items.md11
-rw-r--r--building_guide/mobs.md11
-rw-r--r--building_guide/objects.md29
-rw-r--r--building_guide/quests.md6
-rw-r--r--building_guide/recipes.md3
-rw-r--r--building_guide/rooms.md7
-rw-r--r--building_guide/wandering_mobs.md2
-rw-r--r--building_guide/wandering_objects.md3
-rw-r--r--data/courses/reactor.yaml1
-rw-r--r--data/courses/rooftop.yaml1
-rw-r--r--data/courses/vent_shaft.yaml1
-rw-r--r--data/drops/bioengineer_steal.yaml1
-rw-r--r--data/drops/birds_nest_drop.yaml1
-rw-r--r--data/drops/christmas_cracker_hat.yaml1
-rw-r--r--data/drops/christmas_cracker_misc.yaml1
-rw-r--r--data/drops/credit_stick_drop.yaml1
-rw-r--r--data/drops/farmer_steal.yaml1
-rw-r--r--data/drops/gem_table.yaml1
-rw-r--r--data/drops/herb_table_high.yaml1
-rw-r--r--data/drops/herb_table_low.yaml1
-rw-r--r--data/drops/herb_table_mid.yaml1
-rw-r--r--data/drops/man_steal.yaml1
-rw-r--r--data/drops/market_stall_steal.yaml1
-rw-r--r--data/hazards/solar_radiation.yaml1
-rw-r--r--data/help/agility.yaml1
-rw-r--r--data/help/global.yaml8
-rw-r--r--data/help/hacking.yaml1
-rw-r--r--data/help/jack.yaml1
-rw-r--r--data/help/who.yaml9
-rw-r--r--data/items/ammo/adamant_arrow.yaml1
-rw-r--r--data/items/ammo/adamant_arrowtips.yaml1
-rw-r--r--data/items/ammo/adamant_bolts.yaml1
-rw-r--r--data/items/ammo/adamant_bolts_unf.yaml1
-rw-r--r--data/items/ammo/arrow_shaft.yaml1
-rw-r--r--data/items/ammo/bronze_arrow.yaml1
-rw-r--r--data/items/ammo/bronze_arrowtips.yaml1
-rw-r--r--data/items/ammo/bronze_bolts.yaml1
-rw-r--r--data/items/ammo/bronze_bolts_unf.yaml1
-rw-r--r--data/items/ammo/diamond_bolt_tips.yaml1
-rw-r--r--data/items/ammo/diamond_bolts.yaml1
-rw-r--r--data/items/ammo/diamond_bolts_e.yaml1
-rw-r--r--data/items/ammo/emerald_bolt_tips.yaml1
-rw-r--r--data/items/ammo/emerald_bolts.yaml1
-rw-r--r--data/items/ammo/emerald_bolts_e.yaml1
-rw-r--r--data/items/ammo/headless_arrow.yaml1
-rw-r--r--data/items/ammo/iron_arrow.yaml1
-rw-r--r--data/items/ammo/iron_arrowtips.yaml1
-rw-r--r--data/items/ammo/iron_bolts.yaml1
-rw-r--r--data/items/ammo/iron_bolts_unf.yaml1
-rw-r--r--data/items/ammo/mithril_arrow.yaml1
-rw-r--r--data/items/ammo/mithril_arrowtips.yaml1
-rw-r--r--data/items/ammo/mithril_bolts.yaml1
-rw-r--r--data/items/ammo/mithril_bolts_unf.yaml1
-rw-r--r--data/items/ammo/ruby_bolt_tips.yaml1
-rw-r--r--data/items/ammo/ruby_bolts.yaml1
-rw-r--r--data/items/ammo/ruby_bolts_e.yaml1
-rw-r--r--data/items/ammo/rune_arrow.yaml1
-rw-r--r--data/items/ammo/rune_arrowtips.yaml1
-rw-r--r--data/items/ammo/rune_bolts.yaml1
-rw-r--r--data/items/ammo/rune_bolts_unf.yaml1
-rw-r--r--data/items/ammo/sapphire_bolt_tips.yaml1
-rw-r--r--data/items/ammo/sapphire_bolts.yaml1
-rw-r--r--data/items/ammo/sapphire_bolts_e.yaml1
-rw-r--r--data/items/ammo/steel_arrow.yaml1
-rw-r--r--data/items/ammo/steel_arrowtips.yaml1
-rw-r--r--data/items/ammo/steel_bolts.yaml1
-rw-r--r--data/items/ammo/steel_bolts_unf.yaml1
-rw-r--r--data/items/consumables/acid_vial.yaml1
-rw-r--r--data/items/consumables/amp_potion.yaml1
-rw-r--r--data/items/consumables/anchovies.yaml1
-rw-r--r--data/items/consumables/antitoxin_powder.yaml1
-rw-r--r--data/items/consumables/apple.yaml1
-rw-r--r--data/items/consumables/avantoe_potion_unf.yaml1
-rw-r--r--data/items/consumables/bio_serum.yaml1
-rw-r--r--data/items/consumables/blight_spore.yaml1
-rw-r--r--data/items/consumables/bread.yaml1
-rw-r--r--data/items/consumables/bread_dough.yaml1
-rw-r--r--data/items/consumables/bucket_of_water.yaml1
-rw-r--r--data/items/consumables/burnt_fish.yaml1
-rw-r--r--data/items/consumables/burnt_meat.yaml1
-rw-r--r--data/items/consumables/cabbage.yaml1
-rw-r--r--data/items/consumables/cadantine_potion_unf.yaml1
-rw-r--r--data/items/consumables/catalyst_wine.yaml1
-rw-r--r--data/items/consumables/cheese.yaml1
-rw-r--r--data/items/consumables/dwarf_weed_potion_unf.yaml1
-rw-r--r--data/items/consumables/full_restore.yaml1
-rw-r--r--data/items/consumables/guam_potion_unf.yaml1
-rw-r--r--data/items/consumables/harralander_potion_unf.yaml1
-rw-r--r--data/items/consumables/herring.yaml1
-rw-r--r--data/items/consumables/irit_potion_unf.yaml1
-rw-r--r--data/items/consumables/jug_of_water.yaml1
-rw-r--r--data/items/consumables/kwuarm_potion_unf.yaml1
-rw-r--r--data/items/consumables/lantadyme_potion_unf.yaml1
-rw-r--r--data/items/consumables/marrentill_potion_unf.yaml1
-rw-r--r--data/items/consumables/nano_restore.yaml1
-rw-r--r--data/items/consumables/onion.yaml1
-rw-r--r--data/items/consumables/pastry_dough.yaml1
-rw-r--r--data/items/consumables/pie_dish.yaml1
-rw-r--r--data/items/consumables/pizza_dough.yaml1
-rw-r--r--data/items/consumables/plant_cure.yaml1
-rw-r--r--data/items/consumables/pot_of_flour.yaml1
-rw-r--r--data/items/consumables/potato.yaml1
-rw-r--r--data/items/consumables/ranarr_potion_unf.yaml1
-rw-r--r--data/items/consumables/raw_anchovies.yaml1
-rw-r--r--data/items/consumables/raw_anglerfish.yaml1
-rw-r--r--data/items/consumables/raw_bass.yaml1
-rw-r--r--data/items/consumables/raw_beef.yaml1
-rw-r--r--data/items/consumables/raw_cave_eel.yaml1
-rw-r--r--data/items/consumables/raw_cod.yaml1
-rw-r--r--data/items/consumables/raw_herring.yaml1
-rw-r--r--data/items/consumables/raw_lobster.yaml1
-rw-r--r--data/items/consumables/raw_mackerel.yaml1
-rw-r--r--data/items/consumables/raw_pike.yaml1
-rw-r--r--data/items/consumables/raw_rainbow_fish.yaml1
-rw-r--r--data/items/consumables/raw_salmon.yaml1
-rw-r--r--data/items/consumables/raw_sardine.yaml1
-rw-r--r--data/items/consumables/raw_shark.yaml1
-rw-r--r--data/items/consumables/raw_shrimps.yaml1
-rw-r--r--data/items/consumables/raw_slimy_eel.yaml1
-rw-r--r--data/items/consumables/raw_swordfish.yaml1
-rw-r--r--data/items/consumables/raw_trout.yaml1
-rw-r--r--data/items/consumables/raw_tuna.yaml1
-rw-r--r--data/items/consumables/restoration_compound.yaml1
-rw-r--r--data/items/consumables/salmon.yaml1
-rw-r--r--data/items/consumables/sardine.yaml1
-rw-r--r--data/items/consumables/science_serum.yaml1
-rw-r--r--data/items/consumables/shield_potion.yaml1
-rw-r--r--data/items/consumables/shrimps.yaml1
-rw-r--r--data/items/consumables/snapdragon_potion_unf.yaml1
-rw-r--r--data/items/consumables/stim_potion.yaml1
-rw-r--r--data/items/consumables/strawberry.yaml1
-rw-r--r--data/items/consumables/super_amp.yaml1
-rw-r--r--data/items/consumables/super_bio_serum.yaml1
-rw-r--r--data/items/consumables/super_shield.yaml1
-rw-r--r--data/items/consumables/super_stim.yaml1
-rw-r--r--data/items/consumables/super_stim_cell.yaml1
-rw-r--r--data/items/consumables/sweetcorn.yaml1
-rw-r--r--data/items/consumables/targeting_serum.yaml1
-rw-r--r--data/items/consumables/tarromin_potion_unf.yaml1
-rw-r--r--data/items/consumables/tech_serum.yaml1
-rw-r--r--data/items/consumables/toadflax_potion_unf.yaml1
-rw-r--r--data/items/consumables/tomato.yaml1
-rw-r--r--data/items/consumables/torstol_potion_unf.yaml1
-rw-r--r--data/items/consumables/trout.yaml1
-rw-r--r--data/items/consumables/vial_of_water.yaml1
-rw-r--r--data/items/consumables/watermelon.yaml1
-rw-r--r--data/items/decks/advanced_bio_deck.yaml1
-rw-r--r--data/items/decks/advanced_eco_deck.yaml1
-rw-r--r--data/items/decks/advanced_hydro_deck.yaml1
-rw-r--r--data/items/decks/advanced_solar_deck.yaml1
-rw-r--r--data/items/decks/basic_deck.yaml1
-rw-r--r--data/items/decks/bio_deck.yaml1
-rw-r--r--data/items/decks/bio_identifier.yaml1
-rw-r--r--data/items/decks/biojunk.yaml1
-rw-r--r--data/items/decks/blood_identifier.yaml1
-rw-r--r--data/items/decks/bloodjunk.yaml1
-rw-r--r--data/items/decks/chaos_identifier.yaml1
-rw-r--r--data/items/decks/chaosjunk.yaml1
-rw-r--r--data/items/decks/cosmic_identifier.yaml1
-rw-r--r--data/items/decks/cosmicjunk.yaml1
-rw-r--r--data/items/decks/death_identifier.yaml1
-rw-r--r--data/items/decks/deathjunk.yaml1
-rw-r--r--data/items/decks/eco_deck.yaml1
-rw-r--r--data/items/decks/eco_identifier.yaml1
-rw-r--r--data/items/decks/ecojunk.yaml1
-rw-r--r--data/items/decks/hydro_deck.yaml1
-rw-r--r--data/items/decks/hydro_identifier.yaml1
-rw-r--r--data/items/decks/hydrojunk.yaml1
-rw-r--r--data/items/decks/law_identifier.yaml1
-rw-r--r--data/items/decks/lawjunk.yaml1
-rw-r--r--data/items/decks/nature_identifier.yaml1
-rw-r--r--data/items/decks/naturejunk.yaml1
-rw-r--r--data/items/decks/solar_deck.yaml1
-rw-r--r--data/items/decks/solar_identifier.yaml1
-rw-r--r--data/items/decks/solarjunk.yaml1
-rw-r--r--data/items/equipment/abyssal_bracelet.yaml1
-rw-r--r--data/items/equipment/adamant_dagger.yaml1
-rw-r--r--data/items/equipment/adamant_full_helm.yaml1
-rw-r--r--data/items/equipment/adamant_med_helm.yaml1
-rw-r--r--data/items/equipment/adamant_platebody.yaml1
-rw-r--r--data/items/equipment/adamant_sword.yaml1
-rw-r--r--data/items/equipment/binding_necklace.yaml1
-rw-r--r--data/items/equipment/black_axe.yaml1
-rw-r--r--data/items/equipment/bracelet_of_clay.yaml1
-rw-r--r--data/items/equipment/bracelet_of_slaughter.yaml1
-rw-r--r--data/items/equipment/bronze_dagger.yaml1
-rw-r--r--data/items/equipment/bronze_full_helm.yaml1
-rw-r--r--data/items/equipment/bronze_med_helm.yaml1
-rw-r--r--data/items/equipment/bronze_platebody.yaml1
-rw-r--r--data/items/equipment/bronze_sword.yaml1
-rw-r--r--data/items/equipment/capacitor_gloves.yaml1
-rw-r--r--data/items/equipment/cape_of_agility.yaml1
-rw-r--r--data/items/equipment/chitin_plate.yaml1
-rw-r--r--data/items/equipment/coif.yaml1
-rw-r--r--data/items/equipment/diamond_amulet_u.yaml1
-rw-r--r--data/items/equipment/diamond_bracelet.yaml1
-rw-r--r--data/items/equipment/diamond_necklace.yaml1
-rw-r--r--data/items/equipment/diamond_ring.yaml1
-rw-r--r--data/items/equipment/digsite_pendant.yaml1
-rw-r--r--data/items/equipment/dragon_axe.yaml1
-rw-r--r--data/items/equipment/emerald_amulet_u.yaml1
-rw-r--r--data/items/equipment/emerald_bracelet.yaml1
-rw-r--r--data/items/equipment/emerald_necklace.yaml1
-rw-r--r--data/items/equipment/emerald_ring.yaml1
-rw-r--r--data/items/equipment/gold_amulet_u.yaml1
-rw-r--r--data/items/equipment/gold_bracelet.yaml1
-rw-r--r--data/items/equipment/gold_necklace.yaml1
-rw-r--r--data/items/equipment/gold_ring.yaml1
-rw-r--r--data/items/equipment/graceful_boots.yaml1
-rw-r--r--data/items/equipment/graceful_cape.yaml1
-rw-r--r--data/items/equipment/graceful_gloves.yaml1
-rw-r--r--data/items/equipment/graceful_hat.yaml1
-rw-r--r--data/items/equipment/graceful_legs.yaml1
-rw-r--r--data/items/equipment/graceful_torso.yaml1
-rw-r--r--data/items/equipment/hard_leather_body.yaml1
-rw-r--r--data/items/equipment/hard_leather_shield.yaml1
-rw-r--r--data/items/equipment/inoculation_bracelet.yaml1
-rw-r--r--data/items/equipment/insulated_gloves.yaml1
-rw-r--r--data/items/equipment/iron_dagger.yaml1
-rw-r--r--data/items/equipment/iron_full_helm.yaml1
-rw-r--r--data/items/equipment/iron_med_helm.yaml1
-rw-r--r--data/items/equipment/iron_platebody.yaml1
-rw-r--r--data/items/equipment/iron_sword.yaml1
-rw-r--r--data/items/equipment/leather_body.yaml1
-rw-r--r--data/items/equipment/leather_boots.yaml1
-rw-r--r--data/items/equipment/leather_chaps.yaml1
-rw-r--r--data/items/equipment/leather_cowl.yaml1
-rw-r--r--data/items/equipment/leather_gloves.yaml1
-rw-r--r--data/items/equipment/leather_vambraces.yaml1
-rw-r--r--data/items/equipment/longbow.yaml1
-rw-r--r--data/items/equipment/longbow_u.yaml1
-rw-r--r--data/items/equipment/magic_longbow.yaml1
-rw-r--r--data/items/equipment/magic_longbow_u.yaml1
-rw-r--r--data/items/equipment/magic_shortbow.yaml1
-rw-r--r--data/items/equipment/magic_shortbow_u.yaml1
-rw-r--r--data/items/equipment/maple_longbow.yaml1
-rw-r--r--data/items/equipment/maple_longbow_u.yaml1
-rw-r--r--data/items/equipment/maple_shortbow.yaml1
-rw-r--r--data/items/equipment/maple_shortbow_u.yaml1
-rw-r--r--data/items/equipment/mithril_dagger.yaml1
-rw-r--r--data/items/equipment/mithril_full_helm.yaml1
-rw-r--r--data/items/equipment/mithril_med_helm.yaml1
-rw-r--r--data/items/equipment/mithril_platebody.yaml1
-rw-r--r--data/items/equipment/mithril_sword.yaml1
-rw-r--r--data/items/equipment/necklace_of_passage.yaml1
-rw-r--r--data/items/equipment/neural_headband.yaml1
-rw-r--r--data/items/equipment/oak_longbow.yaml1
-rw-r--r--data/items/equipment/oak_longbow_u.yaml1
-rw-r--r--data/items/equipment/oak_shortbow.yaml1
-rw-r--r--data/items/equipment/oak_shortbow_u.yaml1
-rw-r--r--data/items/equipment/party_hat_blue.yaml1
-rw-r--r--data/items/equipment/party_hat_green.yaml1
-rw-r--r--data/items/equipment/party_hat_pink.yaml1
-rw-r--r--data/items/equipment/party_hat_red.yaml1
-rw-r--r--data/items/equipment/party_hat_white.yaml1
-rw-r--r--data/items/equipment/party_hat_yellow.yaml1
-rw-r--r--data/items/equipment/phoenix_necklace.yaml1
-rw-r--r--data/items/equipment/power_amulet.yaml1
-rw-r--r--data/items/equipment/ring_of_dueling.yaml1
-rw-r--r--data/items/equipment/ring_of_forging.yaml1
-rw-r--r--data/items/equipment/ring_of_life.yaml1
-rw-r--r--data/items/equipment/ring_of_recoil.yaml1
-rw-r--r--data/items/equipment/ruby_amulet_u.yaml1
-rw-r--r--data/items/equipment/ruby_bracelet.yaml1
-rw-r--r--data/items/equipment/ruby_necklace.yaml1
-rw-r--r--data/items/equipment/ruby_ring.yaml1
-rw-r--r--data/items/equipment/rune_dagger.yaml1
-rw-r--r--data/items/equipment/rune_full_helm.yaml1
-rw-r--r--data/items/equipment/rune_med_helm.yaml1
-rw-r--r--data/items/equipment/rune_platebody.yaml1
-rw-r--r--data/items/equipment/rune_sword.yaml1
-rw-r--r--data/items/equipment/sapphire_amulet_u.yaml1
-rw-r--r--data/items/equipment/sapphire_bracelet.yaml1
-rw-r--r--data/items/equipment/sapphire_necklace.yaml1
-rw-r--r--data/items/equipment/sapphire_ring.yaml1
-rw-r--r--data/items/equipment/shortbow.yaml1
-rw-r--r--data/items/equipment/shortbow_u.yaml1
-rw-r--r--data/items/equipment/spectral_visor.yaml1
-rw-r--r--data/items/equipment/steel_dagger.yaml1
-rw-r--r--data/items/equipment/steel_full_helm.yaml1
-rw-r--r--data/items/equipment/steel_med_helm.yaml1
-rw-r--r--data/items/equipment/steel_platebody.yaml1
-rw-r--r--data/items/equipment/steel_sword.yaml1
-rw-r--r--data/items/equipment/willow_longbow.yaml1
-rw-r--r--data/items/equipment/willow_longbow_u.yaml1
-rw-r--r--data/items/equipment/willow_shortbow.yaml1
-rw-r--r--data/items/equipment/willow_shortbow_u.yaml1
-rw-r--r--data/items/equipment/yew_longbow.yaml1
-rw-r--r--data/items/equipment/yew_longbow_u.yaml1
-rw-r--r--data/items/equipment/yew_shortbow.yaml1
-rw-r--r--data/items/equipment/yew_shortbow_u.yaml1
-rw-r--r--data/items/materials/adamant_nails.yaml1
-rw-r--r--data/items/materials/adamantite_bar.yaml1
-rw-r--r--data/items/materials/adamantite_ore.yaml1
-rw-r--r--data/items/materials/arachnid_enzyme.yaml1
-rw-r--r--data/items/materials/ashes.yaml1
-rw-r--r--data/items/materials/avantoe.yaml1
-rw-r--r--data/items/materials/ball_of_wool.yaml1
-rw-r--r--data/items/materials/bones.yaml1
-rw-r--r--data/items/materials/bowstring.yaml1
-rw-r--r--data/items/materials/bronze_bar.yaml1
-rw-r--r--data/items/materials/bronze_nails.yaml1
-rw-r--r--data/items/materials/cadantine.yaml1
-rw-r--r--data/items/materials/chocolate_dust.yaml1
-rw-r--r--data/items/materials/clay.yaml1
-rw-r--r--data/items/materials/coal.yaml1
-rw-r--r--data/items/materials/copper_ore.yaml1
-rw-r--r--data/items/materials/cowhide.yaml1
-rw-r--r--data/items/materials/crushed_nest.yaml1
-rw-r--r--data/items/materials/diamond.yaml1
-rw-r--r--data/items/materials/dwarf_weed.yaml1
-rw-r--r--data/items/materials/ectoplasm.yaml1
-rw-r--r--data/items/materials/emerald.yaml1
-rw-r--r--data/items/materials/eye_of_newt.yaml1
-rw-r--r--data/items/materials/feather.yaml1
-rw-r--r--data/items/materials/flax.yaml1
-rw-r--r--data/items/materials/gold_bar.yaml1
-rw-r--r--data/items/materials/gold_ore.yaml1
-rw-r--r--data/items/materials/grimy_avantoe.yaml1
-rw-r--r--data/items/materials/grimy_cadantine.yaml1
-rw-r--r--data/items/materials/grimy_dwarf_weed.yaml1
-rw-r--r--data/items/materials/grimy_guam.yaml1
-rw-r--r--data/items/materials/grimy_harralander.yaml1
-rw-r--r--data/items/materials/grimy_irit.yaml1
-rw-r--r--data/items/materials/grimy_kwuarm.yaml1
-rw-r--r--data/items/materials/grimy_lantadyme.yaml1
-rw-r--r--data/items/materials/grimy_marrentill.yaml1
-rw-r--r--data/items/materials/grimy_ranarr.yaml1
-rw-r--r--data/items/materials/grimy_snapdragon.yaml1
-rw-r--r--data/items/materials/grimy_tarromin.yaml1
-rw-r--r--data/items/materials/grimy_toadflax.yaml1
-rw-r--r--data/items/materials/grimy_torstol.yaml1
-rw-r--r--data/items/materials/guam.yaml1
-rw-r--r--data/items/materials/hard_leather.yaml1
-rw-r--r--data/items/materials/harralander.yaml1
-rw-r--r--data/items/materials/irit.yaml1
-rw-r--r--data/items/materials/iron_bar.yaml1
-rw-r--r--data/items/materials/iron_nails.yaml1
-rw-r--r--data/items/materials/iron_ore.yaml1
-rw-r--r--data/items/materials/kwuarm.yaml1
-rw-r--r--data/items/materials/lantadyme.yaml1
-rw-r--r--data/items/materials/leather.yaml1
-rw-r--r--data/items/materials/limpwurt_root.yaml1
-rw-r--r--data/items/materials/logs.yaml1
-rw-r--r--data/items/materials/magic_logs.yaml1
-rw-r--r--data/items/materials/mahogany_logs.yaml1
-rw-r--r--data/items/materials/mahogany_planks.yaml1
-rw-r--r--data/items/materials/maple_logs.yaml1
-rw-r--r--data/items/materials/marrentill.yaml1
-rw-r--r--data/items/materials/mithril_bar.yaml1
-rw-r--r--data/items/materials/mithril_nails.yaml1
-rw-r--r--data/items/materials/mithril_ore.yaml1
-rw-r--r--data/items/materials/oak_logs.yaml1
-rw-r--r--data/items/materials/oak_planks.yaml1
-rw-r--r--data/items/materials/planks.yaml1
-rw-r--r--data/items/materials/potato_cactus.yaml1
-rw-r--r--data/items/materials/ranarr.yaml1
-rw-r--r--data/items/materials/redwood_logs.yaml1
-rw-r--r--data/items/materials/ruby.yaml1
-rw-r--r--data/items/materials/rune_nails.yaml1
-rw-r--r--data/items/materials/runite_bar.yaml1
-rw-r--r--data/items/materials/runite_ore.yaml1
-rw-r--r--data/items/materials/sacred_eel.yaml1
-rw-r--r--data/items/materials/salt.yaml1
-rw-r--r--data/items/materials/sapphire.yaml1
-rw-r--r--data/items/materials/silver_bar.yaml1
-rw-r--r--data/items/materials/silver_ore.yaml1
-rw-r--r--data/items/materials/slug_mucus.yaml1
-rw-r--r--data/items/materials/snapdragon.yaml1
-rw-r--r--data/items/materials/snape_grass.yaml1
-rw-r--r--data/items/materials/soft_clay.yaml1
-rw-r--r--data/items/materials/steel_bar.yaml1
-rw-r--r--data/items/materials/steel_nails.yaml1
-rw-r--r--data/items/materials/stim_cell.yaml1
-rw-r--r--data/items/materials/tarromin.yaml1
-rw-r--r--data/items/materials/teak_logs.yaml1
-rw-r--r--data/items/materials/teak_planks.yaml1
-rw-r--r--data/items/materials/thread.yaml1
-rw-r--r--data/items/materials/tin_ore.yaml1
-rw-r--r--data/items/materials/toadflax.yaml1
-rw-r--r--data/items/materials/torstol.yaml1
-rw-r--r--data/items/materials/uncut_diamond.yaml1
-rw-r--r--data/items/materials/uncut_emerald.yaml1
-rw-r--r--data/items/materials/uncut_ruby.yaml1
-rw-r--r--data/items/materials/uncut_sapphire.yaml1
-rw-r--r--data/items/materials/vial.yaml1
-rw-r--r--data/items/materials/white_berries.yaml1
-rw-r--r--data/items/materials/willow_logs.yaml1
-rw-r--r--data/items/materials/wool.yaml1
-rw-r--r--data/items/materials/yew_logs.yaml1
-rw-r--r--data/items/misc/birds_nest.yaml1
-rw-r--r--data/items/misc/christmas_cracker.yaml1
-rw-r--r--data/items/misc/circuit_board.yaml1
-rw-r--r--data/items/misc/credit_stick.yaml1
-rw-r--r--data/items/misc/credits.yaml1
-rw-r--r--data/items/misc/mahogany_table.yaml1
-rw-r--r--data/items/misc/nutrient_bar.yaml1
-rw-r--r--data/items/misc/oak_shelf.yaml1
-rw-r--r--data/items/misc/oak_table.yaml1
-rw-r--r--data/items/misc/pass_stub.yaml1
-rw-r--r--data/items/misc/scrap.yaml1
-rw-r--r--data/items/misc/teak_table.yaml1
-rw-r--r--data/items/misc/wooden_chair.yaml1
-rw-r--r--data/items/misc/wooden_shelf.yaml1
-rw-r--r--data/items/misc/wooden_table.yaml1
-rw-r--r--data/items/seeds/avantoe_seed.yaml1
-rw-r--r--data/items/seeds/cabbage_seed.yaml1
-rw-r--r--data/items/seeds/cadantine_seed.yaml1
-rw-r--r--data/items/seeds/dwarf_weed_seed.yaml1
-rw-r--r--data/items/seeds/guam_seed.yaml1
-rw-r--r--data/items/seeds/harralander_seed.yaml1
-rw-r--r--data/items/seeds/irit_seed.yaml1
-rw-r--r--data/items/seeds/kwuarm_seed.yaml1
-rw-r--r--data/items/seeds/lantadyme_seed.yaml1
-rw-r--r--data/items/seeds/marrentill_seed.yaml1
-rw-r--r--data/items/seeds/onion_seed.yaml1
-rw-r--r--data/items/seeds/potato_seed.yaml1
-rw-r--r--data/items/seeds/ranarr_seed.yaml1
-rw-r--r--data/items/seeds/snapdragon_seed.yaml1
-rw-r--r--data/items/seeds/strawberry_seed.yaml1
-rw-r--r--data/items/seeds/sweetcorn_seed.yaml1
-rw-r--r--data/items/seeds/tarromin_seed.yaml1
-rw-r--r--data/items/seeds/toadflax_seed.yaml1
-rw-r--r--data/items/seeds/tomato_seed.yaml1
-rw-r--r--data/items/seeds/torstol_seed.yaml1
-rw-r--r--data/items/seeds/watermelon_seed.yaml1
-rw-r--r--data/items/tools/adamant_axe.yaml1
-rw-r--r--data/items/tools/adamant_pickaxe.yaml1
-rw-r--r--data/items/tools/amulet_mould.yaml1
-rw-r--r--data/items/tools/big_fishing_net.yaml1
-rw-r--r--data/items/tools/black_pickaxe.yaml1
-rw-r--r--data/items/tools/bracelet_mould.yaml1
-rw-r--r--data/items/tools/bronze_axe.yaml1
-rw-r--r--data/items/tools/bronze_pickaxe.yaml1
-rw-r--r--data/items/tools/chisel.yaml1
-rw-r--r--data/items/tools/dragon_pickaxe.yaml1
-rw-r--r--data/items/tools/empty_bucket.yaml1
-rw-r--r--data/items/tools/empty_jug.yaml1
-rw-r--r--data/items/tools/empty_pot.yaml1
-rw-r--r--data/items/tools/firesteel.yaml1
-rw-r--r--data/items/tools/fishing_bait.yaml1
-rw-r--r--data/items/tools/fishing_rod.yaml1
-rw-r--r--data/items/tools/fly_fishing_rod.yaml1
-rw-r--r--data/items/tools/hammer.yaml1
-rw-r--r--data/items/tools/harpoon.yaml1
-rw-r--r--data/items/tools/iron_axe.yaml1
-rw-r--r--data/items/tools/iron_pickaxe.yaml1
-rw-r--r--data/items/tools/knife.yaml1
-rw-r--r--data/items/tools/lighter.yaml1
-rw-r--r--data/items/tools/lobster_pot.yaml1
-rw-r--r--data/items/tools/matches.yaml1
-rw-r--r--data/items/tools/mithril_axe.yaml1
-rw-r--r--data/items/tools/mithril_pickaxe.yaml1
-rw-r--r--data/items/tools/necklace_mould.yaml1
-rw-r--r--data/items/tools/needle.yaml1
-rw-r--r--data/items/tools/plant_pot.yaml1
-rw-r--r--data/items/tools/rake.yaml1
-rw-r--r--data/items/tools/ring_mould.yaml1
-rw-r--r--data/items/tools/rune_axe.yaml1
-rw-r--r--data/items/tools/rune_pickaxe.yaml1
-rw-r--r--data/items/tools/saw.yaml1
-rw-r--r--data/items/tools/shears.yaml1
-rw-r--r--data/items/tools/small_fishing_net.yaml1
-rw-r--r--data/items/tools/spade.yaml1
-rw-r--r--data/items/tools/steel_axe.yaml1
-rw-r--r--data/items/tools/steel_pickaxe.yaml1
-rw-r--r--data/items/tools/unfired_pie_dish.yaml1
-rw-r--r--data/items/tools/unfired_plant_pot.yaml1
-rw-r--r--data/items/tools/unfired_pot.yaml1
-rw-r--r--data/items/tools/watering_can.yaml1
-rw-r--r--data/mobs/ancient_construct.yaml1
-rw-r--r--data/mobs/bandit.yaml1
-rw-r--r--data/mobs/bioengineer.yaml1
-rw-r--r--data/mobs/client.yaml1
-rw-r--r--data/mobs/corrupted_scientist.yaml1
-rw-r--r--data/mobs/cow.yaml1
-rw-r--r--data/mobs/crawler.yaml1
-rw-r--r--data/mobs/drone.yaml1
-rw-r--r--data/mobs/elite_synth.yaml1
-rw-r--r--data/mobs/enforcer_bot.yaml1
-rw-r--r--data/mobs/estate_broker.yaml1
-rw-r--r--data/mobs/farmer.yaml1
-rw-r--r--data/mobs/feral_cyborg.yaml1
-rw-r--r--data/mobs/general_store_clerk.yaml1
-rw-r--r--data/mobs/ghoul.yaml1
-rw-r--r--data/mobs/goblin.yaml1
-rw-r--r--data/mobs/greater_drone.yaml1
-rw-r--r--data/mobs/guard.yaml1
-rw-r--r--data/mobs/heavy_mech.yaml1
-rw-r--r--data/mobs/iron_sentinel.yaml1
-rw-r--r--data/mobs/lesser_drone.yaml1
-rw-r--r--data/mobs/man.yaml1
-rw-r--r--data/mobs/molten_elemental.yaml1
-rw-r--r--data/mobs/moss_giant.yaml1
-rw-r--r--data/mobs/mutant_rat.yaml1
-rw-r--r--data/mobs/newbie_trainer.yaml1
-rw-r--r--data/mobs/phantom.yaml1
-rw-r--r--data/mobs/plasma_wraith.yaml1
-rw-r--r--data/mobs/psionic_entity.yaml1
-rw-r--r--data/mobs/rat.yaml1
-rw-r--r--data/mobs/sawmill_operator.yaml1
-rw-r--r--data/mobs/scrap_bot.yaml1
-rw-r--r--data/mobs/security_turret.yaml1
-rw-r--r--data/mobs/skeleton.yaml1
-rw-r--r--data/mobs/slug.yaml1
-rw-r--r--data/mobs/solar_panel_frame.yaml1
-rw-r--r--data/mobs/tanner.yaml1
-rw-r--r--data/mobs/titan_sentinel.yaml1
-rw-r--r--data/mobs/veteran_merc.yaml1
-rw-r--r--data/mobs/void_reaper.yaml1
-rw-r--r--data/mobs/war_drone.yaml1
-rw-r--r--data/mobs/weapons_smith.yaml1
-rw-r--r--data/mobs/zombie.yaml1
-rw-r--r--data/modules/bio_blast.yaml1
-rw-r--r--data/modules/bio_bolt.yaml1
-rw-r--r--data/modules/bio_strike.yaml1
-rw-r--r--data/modules/bio_surge.yaml1
-rw-r--r--data/modules/bio_wave.yaml1
-rw-r--r--data/modules/bones_to_nutrients.yaml1
-rw-r--r--data/modules/chip_diamond.yaml1
-rw-r--r--data/modules/chip_emerald.yaml1
-rw-r--r--data/modules/chip_ruby.yaml1
-rw-r--r--data/modules/chip_sapphire.yaml1
-rw-r--r--data/modules/eco_blast.yaml1
-rw-r--r--data/modules/eco_bolt.yaml1
-rw-r--r--data/modules/eco_strike.yaml1
-rw-r--r--data/modules/eco_surge.yaml1
-rw-r--r--data/modules/eco_wave.yaml1
-rw-r--r--data/modules/em_grab.yaml1
-rw-r--r--data/modules/enchant_1.yaml1
-rw-r--r--data/modules/enchant_2.yaml1
-rw-r--r--data/modules/enchant_3.yaml1
-rw-r--r--data/modules/enchant_4.yaml1
-rw-r--r--data/modules/high_process.yaml1
-rw-r--r--data/modules/hydro_blast.yaml1
-rw-r--r--data/modules/hydro_bolt.yaml1
-rw-r--r--data/modules/hydro_strike.yaml1
-rw-r--r--data/modules/hydro_surge.yaml1
-rw-r--r--data/modules/hydro_wave.yaml1
-rw-r--r--data/modules/low_process.yaml1
-rw-r--r--data/modules/plank_make.yaml1
-rw-r--r--data/modules/solar_blast.yaml1
-rw-r--r--data/modules/solar_bolt.yaml1
-rw-r--r--data/modules/solar_strike.yaml1
-rw-r--r--data/modules/solar_surge.yaml1
-rw-r--r--data/modules/solar_wave.yaml1
-rw-r--r--data/modules/superheat.yaml1
-rw-r--r--data/modules/transport_deep_mine.yaml1
-rw-r--r--data/modules/transport_fishing.yaml1
-rw-r--r--data/modules/transport_forest.yaml1
-rw-r--r--data/modules/transport_forge.yaml1
-rw-r--r--data/modules/transport_mine.yaml1
-rw-r--r--data/modules/transport_scavenge.yaml1
-rw-r--r--data/modules/transport_town.yaml1
-rw-r--r--data/objects/adamantite_rock.yaml1
-rw-r--r--data/objects/allotment_patch.yaml1
-rw-r--r--data/objects/anglerfish_spot.yaml1
-rw-r--r--data/objects/anvil.yaml1
-rw-r--r--data/objects/aps_tower.yaml1
-rw-r--r--data/objects/bait_fishing_spot.yaml1
-rw-r--r--data/objects/bank_booth.yaml1
-rw-r--r--data/objects/bio_altar.yaml1
-rw-r--r--data/objects/blood_altar.yaml1
-rw-r--r--data/objects/cage_fishing_spot.yaml1
-rw-r--r--data/objects/chaos_altar.yaml1
-rw-r--r--data/objects/charging_station.yaml1
-rw-r--r--data/objects/clay_rock.yaml1
-rw-r--r--data/objects/coal_rock.yaml1
-rw-r--r--data/objects/cooking_range.yaml1
-rw-r--r--data/objects/copper_rock.yaml1
-rw-r--r--data/objects/cosmic_altar.yaml1
-rw-r--r--data/objects/death_altar.yaml1
-rw-r--r--data/objects/eco_altar.yaml1
-rw-r--r--data/objects/estate_directory.yaml1
-rw-r--r--data/objects/fence_post.yaml1
-rw-r--r--data/objects/fire.yaml1
-rw-r--r--data/objects/flower_patch.yaml1
-rw-r--r--data/objects/fly_fishing_spot.yaml1
-rw-r--r--data/objects/furnace.yaml1
-rw-r--r--data/objects/gold_rock.yaml1
-rw-r--r--data/objects/harpoon_fishing_spot.yaml1
-rw-r--r--data/objects/herb_patch.yaml1
-rw-r--r--data/objects/hydro_altar.yaml1
-rw-r--r--data/objects/iron_gate.yaml1
-rw-r--r--data/objects/iron_rock.yaml1
-rw-r--r--data/objects/law_altar.yaml1
-rw-r--r--data/objects/lumby_fountain.yaml1
-rw-r--r--data/objects/magic_tree.yaml1
-rw-r--r--data/objects/mahogany_tree.yaml1
-rw-r--r--data/objects/maple_tree.yaml1
-rw-r--r--data/objects/market_stall.yaml1
-rw-r--r--data/objects/mithril_rock.yaml1
-rw-r--r--data/objects/nature_altar.yaml1
-rw-r--r--data/objects/net_fishing_spot.yaml1
-rw-r--r--data/objects/netrunner.yaml1
-rw-r--r--data/objects/oak_tree.yaml1
-rw-r--r--data/objects/pottery_oven.yaml1
-rw-r--r--data/objects/pottery_wheel.yaml1
-rw-r--r--data/objects/redwood_tree.yaml1
-rw-r--r--data/objects/rock_outcrop.yaml1
-rw-r--r--data/objects/runite_rock.yaml1
-rw-r--r--data/objects/sacred_eel_spot.yaml1
-rw-r--r--data/objects/scrap_pile.yaml1
-rw-r--r--data/objects/sheep.yaml1
-rw-r--r--data/objects/silver_rock.yaml1
-rw-r--r--data/objects/simple_rock.yaml1
-rw-r--r--data/objects/solar_altar.yaml1
-rw-r--r--data/objects/spinning_wheel.yaml1
-rw-r--r--data/objects/swamp_fishing_spot.yaml1
-rw-r--r--data/objects/teak_tree.yaml1
-rw-r--r--data/objects/terminal_advanced.yaml1
-rw-r--r--data/objects/terminal_basic.yaml1
-rw-r--r--data/objects/terminal_secure.yaml1
-rw-r--r--data/objects/tin_rock.yaml1
-rw-r--r--data/objects/tool_shed.yaml1
-rw-r--r--data/objects/tree.yaml1
-rw-r--r--data/objects/tutorial_lever.yaml1
-rw-r--r--data/objects/unique/1001_sign.yaml24
-rw-r--r--data/objects/unique/1002_crowd.yaml (renamed from data/objects/1002_crowd.yaml)1
-rw-r--r--data/objects/unique/1002_pilot.yaml (renamed from data/objects/1002_pilot.yaml)1
-rw-r--r--data/objects/unique/1002_shuttle.yaml (renamed from data/objects/1002_shuttle.yaml)1
-rw-r--r--data/objects/willow_tree.yaml1
-rw-r--r--data/objects/workbench.yaml1
-rw-r--r--data/objects/yew_tree.yaml1
-rw-r--r--data/rooms/example_unused/agility/99999200.yaml (renamed from data/rooms/example/agility/99999200.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999201.yaml (renamed from data/rooms/example/agility/99999201.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999202.yaml (renamed from data/rooms/example/agility/99999202.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999203.yaml (renamed from data/rooms/example/agility/99999203.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999204.yaml (renamed from data/rooms/example/agility/99999204.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999205.yaml (renamed from data/rooms/example/agility/99999205.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999210.yaml (renamed from data/rooms/example/agility/99999210.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999211.yaml (renamed from data/rooms/example/agility/99999211.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999212.yaml (renamed from data/rooms/example/agility/99999212.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999213.yaml (renamed from data/rooms/example/agility/99999213.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999214.yaml (renamed from data/rooms/example/agility/99999214.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999215.yaml (renamed from data/rooms/example/agility/99999215.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999220.yaml (renamed from data/rooms/example/agility/99999220.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999221.yaml (renamed from data/rooms/example/agility/99999221.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999222.yaml (renamed from data/rooms/example/agility/99999222.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999223.yaml (renamed from data/rooms/example/agility/99999223.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999224.yaml (renamed from data/rooms/example/agility/99999224.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999225.yaml (renamed from data/rooms/example/agility/99999225.yaml)1
-rw-r--r--data/rooms/example_unused/agility/99999226.yaml (renamed from data/rooms/example/agility/99999226.yaml)1
-rw-r--r--data/rooms/example_unused/player_housing/99999300.yaml (renamed from data/rooms/example/player_housing/99999300.yaml)1
-rw-r--r--data/rooms/example_unused/player_housing/99999301.yaml (renamed from data/rooms/example/player_housing/99999301.yaml)1
-rw-r--r--data/rooms/example_unused/town/999991.yaml (renamed from data/rooms/example/town/999991.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999910.yaml (renamed from data/rooms/example/town/9999910.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999911.yaml (renamed from data/rooms/example/town/9999911.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999912.yaml (renamed from data/rooms/example/town/9999912.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999913.yaml (renamed from data/rooms/example/town/9999913.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999914.yaml (renamed from data/rooms/example/town/9999914.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999915.yaml (renamed from data/rooms/example/town/9999915.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999916.yaml (renamed from data/rooms/example/town/9999916.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999917.yaml (renamed from data/rooms/example/town/9999917.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999918.yaml (renamed from data/rooms/example/town/9999918.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999919.yaml (renamed from data/rooms/example/town/9999919.yaml)1
-rw-r--r--data/rooms/example_unused/town/999992.yaml (renamed from data/rooms/example/town/999992.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999920.yaml (renamed from data/rooms/example/town/9999920.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999921.yaml (renamed from data/rooms/example/town/9999921.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999922.yaml (renamed from data/rooms/example/town/9999922.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999923.yaml (renamed from data/rooms/example/town/9999923.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999924.yaml (renamed from data/rooms/example/town/9999924.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999925.yaml (renamed from data/rooms/example/town/9999925.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999926.yaml (renamed from data/rooms/example/town/9999926.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999927.yaml (renamed from data/rooms/example/town/9999927.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999928.yaml (renamed from data/rooms/example/town/9999928.yaml)1
-rw-r--r--data/rooms/example_unused/town/999993.yaml (renamed from data/rooms/example/town/999993.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999930.yaml (renamed from data/rooms/example/town/9999930.yaml)1
-rw-r--r--data/rooms/example_unused/town/9999931.yaml (renamed from data/rooms/example/town/9999931.yaml)1
-rw-r--r--data/rooms/example_unused/town/999994.yaml (renamed from data/rooms/example/town/999994.yaml)1
-rw-r--r--data/rooms/example_unused/town/999995.yaml (renamed from data/rooms/example/town/999995.yaml)1
-rw-r--r--data/rooms/example_unused/town/999996.yaml (renamed from data/rooms/example/town/999996.yaml)1
-rw-r--r--data/rooms/example_unused/town/999997.yaml (renamed from data/rooms/example/town/999997.yaml)1
-rw-r--r--data/rooms/example_unused/town/999998.yaml (renamed from data/rooms/example/town/999998.yaml)1
-rw-r--r--data/rooms/example_unused/town/999999.yaml (renamed from data/rooms/example/town/999999.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999950.yaml (renamed from data/rooms/example/underground/9999950.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999951.yaml (renamed from data/rooms/example/underground/9999951.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999952.yaml (renamed from data/rooms/example/underground/9999952.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999953.yaml (renamed from data/rooms/example/underground/9999953.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999954.yaml (renamed from data/rooms/example/underground/9999954.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999955.yaml (renamed from data/rooms/example/underground/9999955.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999956.yaml (renamed from data/rooms/example/underground/9999956.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999957.yaml (renamed from data/rooms/example/underground/9999957.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999958.yaml (renamed from data/rooms/example/underground/9999958.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999959.yaml (renamed from data/rooms/example/underground/9999959.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999960.yaml (renamed from data/rooms/example/underground/9999960.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999961.yaml (renamed from data/rooms/example/underground/9999961.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999962.yaml (renamed from data/rooms/example/underground/9999962.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999963.yaml (renamed from data/rooms/example/underground/9999963.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999964.yaml (renamed from data/rooms/example/underground/9999964.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999965.yaml (renamed from data/rooms/example/underground/9999965.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999966.yaml (renamed from data/rooms/example/underground/9999966.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999967.yaml (renamed from data/rooms/example/underground/9999967.yaml)1
-rw-r--r--data/rooms/example_unused/underground/9999968.yaml (renamed from data/rooms/example/underground/9999968.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999150.yaml (renamed from data/rooms/example/wilderness/99999150.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999151.yaml (renamed from data/rooms/example/wilderness/99999151.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999152.yaml (renamed from data/rooms/example/wilderness/99999152.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999160.yaml (renamed from data/rooms/example/wilderness/99999160.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999161.yaml (renamed from data/rooms/example/wilderness/99999161.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999162.yaml (renamed from data/rooms/example/wilderness/99999162.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999170.yaml (renamed from data/rooms/example/wilderness/99999170.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999171.yaml (renamed from data/rooms/example/wilderness/99999171.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999180.yaml (renamed from data/rooms/example/wilderness/99999180.yaml)1
-rw-r--r--data/rooms/example_unused/wilderness/99999181.yaml (renamed from data/rooms/example/wilderness/99999181.yaml)1
-rw-r--r--data/rooms/intro/1001.yaml9
-rw-r--r--data/rooms/intro/1002.yaml31
-rw-r--r--data/rooms/intro/1003.yaml1
-rw-r--r--data/techs/amplifier_1.yaml1
-rw-r--r--data/techs/amplifier_2.yaml1
-rw-r--r--data/techs/amplifier_3.yaml1
-rw-r--r--data/techs/clarity_1.yaml1
-rw-r--r--data/techs/clarity_2.yaml1
-rw-r--r--data/techs/clarity_3.yaml1
-rw-r--r--data/techs/focus_1.yaml1
-rw-r--r--data/techs/focus_2.yaml1
-rw-r--r--data/techs/focus_3.yaml1
-rw-r--r--data/techs/fortify.yaml1
-rw-r--r--data/techs/overclock.yaml1
-rw-r--r--data/techs/preserve.yaml1
-rw-r--r--data/techs/protect_melee.yaml1
-rw-r--r--data/techs/protect_ranged.yaml1
-rw-r--r--data/techs/protect_science.yaml1
-rw-r--r--data/techs/rapid_heal.yaml1
-rw-r--r--data/techs/regen.yaml1
-rw-r--r--data/techs/retribution.yaml1
-rw-r--r--data/techs/shield_1.yaml1
-rw-r--r--data/techs/shield_2.yaml1
-rw-r--r--data/techs/shield_3.yaml1
-rw-r--r--data/techs/targeting_1.yaml1
-rw-r--r--data/techs/targeting_2.yaml1
-rw-r--r--data/techs/targeting_3.yaml1
-rw-r--r--internal/action/action.go1
-rw-r--r--internal/color/color.go42
-rw-r--r--internal/color/color_test.go55
-rw-r--r--internal/config/config.go1
-rw-r--r--internal/game/cmd_color.go1
-rw-r--r--internal/game/cmd_global.go36
-rw-r--r--internal/game/cmd_look.go88
-rw-r--r--internal/game/cmd_registry.go2
-rw-r--r--internal/game/cmd_verbs.go2
-rw-r--r--internal/game/cmd_who.go32
-rw-r--r--internal/game/core_course.go1
-rw-r--r--internal/game/sys_science.go1
-rw-r--r--internal/game/sys_technology.go1
-rw-r--r--internal/game/ui_help.go2
-rw-r--r--internal/net/server.go22
-rw-r--r--internal/object/item_store.go2
-rw-r--r--internal/object/store.go1
-rw-r--r--internal/player/player.go1
-rw-r--r--internal/world/hazard.go2
760 files changed, 367 insertions, 858 deletions
diff --git a/AGENTS.md b/AGENTS.md
index 99cac55..2353b4a 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -53,7 +53,7 @@ internal/
## Key Conventions
-**YAML-driven.** Rooms, items, objects, mobs, drops, modules, courses are YAML files under `data/`. Read from disk on every access — edit and it takes effect immediately, no restart. Crafting information lives in `craft:` blocks on item YAML files — no separate recipe directory. Items are organized into subdirectories by category (items: `equipment/`, `tools/`, etc.; rooms: `town/`, `wilderness/`, etc.). All IDs remain globally unique across subdirectories via path-indexed loading.
+**YAML-driven.** Rooms, items, objects, mobs, drops, modules, courses are YAML files under `data/`. Read from disk on every access — edit and it takes effect immediately, no restart. Crafting information lives in `craft:` blocks on item YAML files — no separate recipe directory. Items are organized into subdirectories by category (items: `equipment/`, `tools/`, etc.; rooms: `town/`, `wilderness/`, etc.; objects: room-specific one-offs in `unique/`, generic shared objects flat). **The filename is the ID for every data type** (objects, items, mobs, rooms, drops, courses, techs, modules, hazards, help): lookup is by filename stem via the recursive path index, and every loader derives the struct's `ID` from that filename. **Do not put a top-level `id:` field in any data file — it is ignored.** (A nested `- id:` under a room's `objects:`/`mobs:` list is different: a *reference* to an object/mob by its filename, and is still required.) All IDs are globally unique across subdirectories via path-indexed loading; subdirectories are organizational only and do not namespace IDs.
**Live state.** Player data (characters, accounts) is written to YAML on every state change. Ground items, mob instances, and object states live in memory only and are lost on restart.
@@ -101,11 +101,12 @@ data/rooms/player_housing/ Player house rooms
data/items/<id>.yaml Item definitions (stats, equip_slot, tool_type, craft, burn_ticks, search_table, etc.)
data/mobs/<id>.yaml Mob definitions (combat stats, drops, behavior, steal config; kind: task for worksites)
data/objects/<id>.yaml Object definitions (name, aliases, behavior, hidden, inroom_description, descriptions, removal_item)
+data/objects/unique/ Room-specific one-off objects, prefixed with the room number (e.g. unique/1001_sign.yaml)
data/drops/<id>.yaml Shared drop tables (weighted item lists, sub-table references)
data/hazards/<id>.yaml Shared room hazard definitions (attack_type, attack, max_hit, speed, messages, required_item)
data/help/<id>.yaml Help topics
-data/modules/<id>.yaml Science module definitions (id, level, max_hit, base_xp, junk_cost, category)
-data/techs/<id>.yaml Technology definitions (id, name, level, drain_rate, category, group, effects)
+data/modules/<id>.yaml Science module definitions (level, max_hit, base_xp, junk_cost, category)
+data/techs/<id>.yaml Technology definitions (name, level, drain_rate, category, group, effects)
data/courses/<id>.yaml Agility course definitions (name, required_level, start_room, obstacles)
data/players/accounts/ Account YAML (gitignored)
data/players/characters/ Character YAML (gitignored)
@@ -442,6 +443,7 @@ Account-wide options set via `option <name> <value>`. Stored in account YAML, sh
| `queue_silently` | bool | true | Suppress queue messages |
| `danger_warning` | bool | true | Confirm `[Y/n]` before entering a hazardous area from a safe one |
| `room_desc_width` | int | 70 | Room desc line wrap width |
+| `wrap_width` | int | 120 | Wrap ALL output to this many columns (clamped to min 80; applied in `net.Session.WriteLine/WriteLines/Writef`, not `Write`) |
| `unicode` | bool | true | Unicode box-drawing characters |
| `run_countdown` | bool | false | Flee countdown messages |
| `visual_ticks` | bool | false | Tick marker display |
diff --git a/building_guide/bank.md b/building_guide/bank.md
index 0a5ec88..ec03a5a 100644
--- a/building_guide/bank.md
+++ b/building_guide/bank.md
@@ -6,10 +6,9 @@ The bank system allows players to store items permanently, freeing up inventory
### bank_booth
-A bank terminal that players can interact with. Has no special behavior — the `bank` command checks for any `bank_booth` object in the room.
+A bank terminal that players can interact with. Has no special behavior — the `bank` command checks for any `bank_booth` object in the room. (**The filename is the ID** — `bank_booth.yaml` → `bank_booth`; no `id:` field.)
```yaml
-id: bank_booth
name: bank booth
color: "226"
description: "..."
diff --git a/building_guide/behaviors.md b/building_guide/behaviors.md
index 22e97fe..438e859 100644
--- a/building_guide/behaviors.md
+++ b/building_guide/behaviors.md
@@ -3,11 +3,12 @@
Behaviors are **inline configs** placed directly inside object YAML (`gather:`, `talk:`,
`use:`, `safespot:`) or mob YAML (`talk:`). Each section below shows the keys you can use under each behavior type.
+The examples below are object/mob files; remember **the filename is the ID** — don't include an `id:` field (see `objects.md` / `mobs.md`).
+
### Gather (mining, fishing, woodcutting)
Mining — per-drop depletion on a rock object:
```yaml
-id: copper_rock
name: copper rock
color: "178"
gather:
@@ -41,7 +42,6 @@ index to match its display color. Gradients also work: `{g:196,82}text{/}`.
Non-depleting gather (fishing on a fishing spot object):
```yaml
-id: bait_fishing_spot
name: fishing spot
gather:
skill: fishing
@@ -66,7 +66,6 @@ gather:
Woodcutting with shared depletion and bird's nests:
```yaml
-id: oak_tree
name: oak tree
color: "113"
gather:
@@ -95,7 +94,6 @@ gather:
Regular tree — always depletes on first gather, no shared timer, no nests:
```yaml
-id: tree
name: tree
gather:
skill: woodcutting
@@ -189,7 +187,6 @@ Talk configs go under the `talk:` key on objects or mobs. Full conversation with
conditions, actions, and player flag tracking:
```yaml
-id: guard
name: Guard
talk:
nodes:
@@ -308,7 +305,6 @@ When the player leaves the shop, they return to the talk node's options.
Full example — General Store:
```yaml
-id: general_store_clerk
name: General Store Clerk
talk:
nodes:
@@ -346,7 +342,6 @@ Entries with no `item` field are bare interactions triggered by "use"
or "push"/"pull":
```yaml
-id: iron_gate
name: iron gate
hidden: true
description: "A heavy iron gate set into the north wall."
@@ -363,7 +358,6 @@ use_interactions:
Item-specific interaction:
```yaml
-id: bookshelf
name: bookshelf
use_interactions:
- item: dusty_tome
@@ -378,7 +372,6 @@ use_interactions:
Use configs go under the `use:` key on objects (e.g. furnaces, ranges):
```yaml
-id: furnace
name: furnace
color: "208"
use:
diff --git a/building_guide/construction.md b/building_guide/construction.md
index d9c991a..81e4249 100644
--- a/building_guide/construction.md
+++ b/building_guide/construction.md
@@ -2,6 +2,8 @@
The Construction skill allows players to process logs into planks and assemble planks into furniture at a workbench. Higher-tier logs produce more valuable planks and furniture.
+> **Filenames are IDs.** The item/object YAML shown below have no `id:` field — each file's name is its ID (e.g. `construct_oak_planks.yaml` → `construct_oak_planks`). See `items.md` / `objects.md`.
+
## Skill
- Skill name: `construction`
@@ -24,7 +26,6 @@ The Construction skill allows players to process logs into planks and assemble p
The primary construction station. Placed in rooms to enable construction.
```yaml
-id: workbench
name: workbench
color: "172"
description: "A sturdy wooden workbench..."
@@ -36,7 +37,6 @@ inroom_description: "A workbench stands against the wall..."
A terminal that shows registered homeowners and lets them enter their house. Handled entirely in Go code (`internal/game/cmd_estate_directory.go`), not via YAML behaviors.
```yaml
-id: estate_directory
name: Estate Directory
color: "39"
description: "A holographic terminal displaying property records..."
@@ -52,7 +52,6 @@ When a player looks at the directory, it scans `data/players/characters/*.yaml`
Required tool for cutting logs into planks at the workbench.
```yaml
-id: saw
name: saw
tool_type: saw
value: 30
@@ -87,7 +86,6 @@ All recipes use `type: construction` and `station: [workbench]`. Log-to-plank re
Example plank recipe:
```yaml
-id: construct_oak_planks
type: construction
level: 15
xp: 10
@@ -103,7 +101,6 @@ message: "You saw the oak logs into sturdy oak planks."
Example furniture recipe:
```yaml
-id: construct_wooden_table
type: construction
level: 6
xp: 25
@@ -123,7 +120,6 @@ message: "You build a sturdy wooden table."
Located in room 16 (Construction Site). Talk behavior sells a house plot for 10 credits via `cost` + `set_player_flags`. Sets `owns_house_local_neighborhood: "local_neighborhood"` on purchase.
```yaml
-id: estate_broker
name: estate broker
talk:
nodes:
@@ -170,7 +166,6 @@ Player houses are real YAML rooms stored in `data/rooms/player_housing/`. Each h
House room files follow the same format as world rooms:
```yaml
-id: 200
name: "Player House: Entrance Hall"
description: "..."
exits:
diff --git a/building_guide/courses.md b/building_guide/courses.md
index 491e2bd..e11f909 100644
--- a/building_guide/courses.md
+++ b/building_guide/courses.md
@@ -2,10 +2,11 @@
Agility courses are defined in `data/courses/<id>.yaml`. Each course defines a sequence of obstacle rooms, each with a specific verb the player must type to advance. Obstacle rooms themselves are standard room YAML files (typically in `data/rooms/agility/`).
+**The filename is the ID** (`vent_shaft.yaml` → `vent_shaft`); the loader derives it from the filename. Do not put an `id:` field in the file — it is ignored.
+
### Course YAML
```yaml
-id: "vent_shaft"
name: "Ventilation Shaft Course"
required_level: 1
start_room: 200
@@ -79,7 +80,6 @@ Completing all obstacles in a course increments a lap counter stored as a player
Each obstacle room should have an `on_enter` message telling the player which verb to use, and a `down` exit back to the course hub:
```yaml
-id: 201
name: "Ventilation Shaft - Corroded Wall"
description: "A towering wall of corroded ventilation panels..."
on_enter:
@@ -93,7 +93,6 @@ exits:
The hub room (e.g. room 200) links to the first obstacle of each course:
```yaml
-id: 200
name: "Agility Training Grounds"
exits:
south: 17
diff --git a/building_guide/doors.md b/building_guide/doors.md
index 1e9fb7a..3756a13 100644
--- a/building_guide/doors.md
+++ b/building_guide/doors.md
@@ -1,12 +1,13 @@
## Global vs Player State: Door Examples
+> **Filenames are IDs.** Object and room YAML below carry no `id:` field — the filename is the ID (e.g. `door_button.yaml` → `door_button`). A nested `- id:` under a room's `objects:` list is a *reference* and stays.
+
### Example A: Door with a button in another room (GLOBAL)
A button in room 3 opens a door in room 7. Anyone can press it. Once pressed, the door is open for everyone.
**Button object** (`data/objects/door_button.yaml`):
```yaml
-id: door_button
name: stone button
hidden: true
use_interactions:
@@ -21,7 +22,6 @@ use_interactions:
**Room 3** — contains the button:
```yaml
-id: 3
name: "Button Chamber"
description: "A small stone chamber. A button protrudes from the east wall."
exits:
@@ -32,7 +32,6 @@ objects:
**Room 7** — contains the door:
```yaml
-id: 7
name: "Hidden Passage"
description: "A dusty corridor. A heavy stone door blocks the way north."
exits:
@@ -54,7 +53,6 @@ A locked door that only opens for a player carrying the key. Each player must fi
**Key item** (`data/items/rusty_key.yaml`):
```yaml
-id: rusty_key
name: rusty key
description: "An old iron key, still functional."
value: 0
@@ -63,7 +61,6 @@ stackable: false
**Room 5** — locked door:
```yaml
-id: 5
name: "Locked Storage"
description: "A small storage room. The way east is blocked by a locked iron door."
exits:
@@ -80,7 +77,6 @@ objects:
**Room 6** — the other side (no key needed to exit):
```yaml
-id: 6
name: "Storage Closet"
description: "Shelves of dusty crates."
exits:
diff --git a/building_guide/drops.md b/building_guide/drops.md
index e5a17ff..f71f712 100644
--- a/building_guide/drops.md
+++ b/building_guide/drops.md
@@ -1,9 +1,12 @@
## Drop Tables
+**The filename is the ID.** A drop table is looked up by its filename stem
+(`gem_table.yaml` → `gem_table`); reference it from behaviors/mobs by that name. Do not put
+an `id:` field in the file — it is ignored.
+
Shared drop tables can be referenced by multiple behaviors:
```yaml
# data/drops/gem_table.yaml
-id: gem_table
drops:
- item_id: uncut_sapphire
weight: 47
@@ -18,7 +21,6 @@ drops:
Bird's nest drop table:
```yaml
# data/drops/birds_nest_drop.yaml
-id: birds_nest_drop
drops:
- item_id: credits
weight: 50
diff --git a/building_guide/hacking.md b/building_guide/hacking.md
index 8927b3e..c17d11a 100644
--- a/building_guide/hacking.md
+++ b/building_guide/hacking.md
@@ -2,10 +2,11 @@
Hacking minigames are played by jacking into terminal objects. Terminals are YAML objects that are registered in Go's `terminalDefs` map.
+**The filename is the ID** (`terminal_basic.yaml` → `terminal_basic`); like all objects, the loader derives the ID from the filename — don't add an `id:` field (see `objects.md`).
+
### Terminal Object YAML
```yaml
-id: terminal_basic
name: basic terminal
color: "40"
description: "A battered terminal with a cracked screen. {40}[Level 1 Hacking]{/}"
diff --git a/building_guide/hazards.md b/building_guide/hazards.md
index 453ca18..26fdccc 100644
--- a/building_guide/hazards.md
+++ b/building_guide/hazards.md
@@ -13,8 +13,9 @@ define a hazard once in `data/hazards/<id>.yaml`, then reference it from any num
of rooms with `hazard: <id>` (see `rooms.md`). This makes one hazard reusable
across a whole area and lets a future `examine` command resolve it by name.
+**The filename is the ID** (`solar_radiation.yaml` → reference it as `hazard: solar_radiation`); the loader derives it from the filename. Do not put an `id:` field in the file — it is ignored.
+
```yaml
-id: solar_radiation
name: scorching solar radiation
description: "Unfiltered sunlight pours through a gap in the dome, burning exposed skin."
attack_type: science # stab/slash/crush/ranged/science — picks player defense + protect tech
diff --git a/building_guide/hidden_objects.md b/building_guide/hidden_objects.md
index e79c026..65940d6 100644
--- a/building_guide/hidden_objects.md
+++ b/building_guide/hidden_objects.md
@@ -2,9 +2,10 @@
Objects with `hidden: true` don't appear in the room's object listing. Players discover them by reading room descriptions or trying commands. The object is still fully interactable — `push gate`, `look gate`, etc.
+**The filename is the ID** (`secret_lever.yaml` → `secret_lever`); don't add an `id:` field (see `objects.md`).
+
```yaml
# data/objects/secret_lever.yaml
-id: secret_lever
name: stone lever
hidden: true
description: "A cleverly concealed lever behind a loose stone."
@@ -30,7 +31,6 @@ By default an object matches its `name` (word-prefix matching) and the words in
its `id`. Add `aliases` to accept extra names:
```yaml
-id: 1002_shuttle
name: landing craft # matches "landing", "craft", "landing craft"
aliases: [shuttle, ship] # also matches "shuttle" and "ship"
hidden: true
@@ -53,7 +53,6 @@ same shared object can appear only while a player's flags warrant it (e.g. durin
an intro) and vanish on return visits.
```yaml
-id: 1002_crowd
name: crowd of people
aliases: [people, crowd, passengers]
hidden: true
diff --git a/building_guide/items.md b/building_guide/items.md
index 52bfa7d..658acb9 100644
--- a/building_guide/items.md
+++ b/building_guide/items.md
@@ -1,7 +1,11 @@
## Items
+**The filename is the ID.** An item is looked up by its filename stem
+(`bronze_pickaxe.yaml` → `bronze_pickaxe`); the loader derives `ItemDef.ID` from it. Do not
+put an `id:` field in the file — it is ignored. Anything that references this item (drop
+tables, craft `consume`, room `item_spawns`) uses that filename.
+
```yaml
-id: bronze_pickaxe
name: bronze pickaxe
color: "178" # xterm-256 color index (0-255)
aliases: ["pick", "pickaxe"]
@@ -85,7 +89,6 @@ Standard tiers: bronze/iron (none), steel (5), black (10), mithril (20), adamant
Arrows and bolts use `ranged_strength` for damage. Accuracy comes from the bow:
```yaml
-id: iron_arrow
name: iron arrow
stackable: true
equip_slot: ammo
@@ -107,7 +110,6 @@ In ANSI mode, extended colors (16-255) automatically downgrade to the nearest AN
Key item (quest token, not equippable):
```yaml
-id: pass_stub
name: pass stub
description: "A crumpled slip of paper stamped with the guard's seal."
value: 0
@@ -119,7 +121,6 @@ stackable: false
## Firemaking
```yaml
-id: logs
name: logs
fire_level: 1 # firemaking level required
fire_xp: 40 # XP for burning/stoking
@@ -129,7 +130,6 @@ burn_ticks: 24 # how long the fire burns
## Food / Healing
```yaml
-id: bread
name: bread
color: "222"
description: "A fresh loaf of bread, still warm from the oven."
@@ -143,7 +143,6 @@ eat_message: "You eat the bread. Warm and satisfying."
Define what items combine to make this item. Used by the `use` command. Combinations run through the production system — players are prompted "How many?" and the action loops with a timer.
```yaml
-id: bread_dough
name: bread dough
color: "222"
ticks: 2
diff --git a/building_guide/mobs.md b/building_guide/mobs.md
index c1f9332..88e80ce 100644
--- a/building_guide/mobs.md
+++ b/building_guide/mobs.md
@@ -1,8 +1,11 @@
## Mobs
+**The filename is the ID.** A mob is looked up by its filename stem (`goblin.yaml` →
+`goblin`), and the loader derives `MobDef.ID` from it. Do not put an `id:` field in the file
+— it is ignored. Rooms reference mobs by that filename.
+
Basic combat mob with per-type defense bonuses:
```yaml
-id: "man"
name: "man"
description: "A shabby-looking man."
attack: 1
@@ -39,7 +42,6 @@ combat_descriptions:
Mobs with `aggressive: true` auto-attack players entering their room (1-tick delay). Only aggros if the player's combat level is at most double the mob's combat level. Checked on room enter and login.
```yaml
-id: goblin
name: goblin
aggressive: true # attacks players on sight
attack: 1
@@ -77,7 +79,6 @@ ranged_defense: 3
Mob with talk behavior — can be talked to via `talk:` inline config:
```yaml
-id: "guard"
name: "Guard"
talk: # inline talk config (no separate behavior file)
nodes:
@@ -116,7 +117,6 @@ is per-instance in the room YAML (see Rooms > Mobs section above).
Mobs can be stealable via the `steal` command. On failure, the mob turns hostile and attacks.
```yaml
-id: farmer
name: Farmer
steal_table: farmer_steal # Drop table for steal loot
steal_level: 10 # Required thieving level
@@ -136,7 +136,6 @@ steal_speed: 4 # Ticks per steal attempt
Assassin (Slayer) mobs restrict combat by assassin level and introduce finishing blows and protective equipment:
```yaml
-id: slug
name: slug
assassin_level: 1 # required assassin level to attack
finishing_blow: salt # item required to kill (mob stays at 1 HP otherwise)
@@ -155,7 +154,6 @@ drops:
Damage-without mobs deal 1.5x damage unless the player has the specified item equipped:
```yaml
-id: drone
name: drone
assassin_level: 15
damage_without: insulated_gloves # 1.5x damage without this item equipped
@@ -180,7 +178,6 @@ Mobs without these fields work normally (assassin_level defaults to 0, finishing
A task mob is a non-violent "worksite" — build a solar panel, survey flora, prospect a rock — that reuses the entire combat engine. Set `kind: task`. Mechanically its `hp` is a hidden work pool that drains to 0 to **complete** the work; the player sees a progress bar filling toward 100%. A task mob **never attacks back** — the danger (if any) comes from a room `hazard:` (see `hazards.md`). Use the `work` command (or `attack`) on it.
```yaml
-id: solar_panel_frame
name: solar panel frame
kind: task # "" / "combat" (default) or "task"
verb: assemble # flavor verb shown in messages (default: "work on")
diff --git a/building_guide/objects.md b/building_guide/objects.md
index 427968a..110eb56 100644
--- a/building_guide/objects.md
+++ b/building_guide/objects.md
@@ -4,9 +4,28 @@ Objects interact with the world through **inline behavior configs** under
`gather:`, `talk:`, or `use:` keys. There is no separate behavior
directory — everything goes directly in the object's YAML.
+### Naming & file organization
+
+**The filename is the ID.** An object is looked up by its filename stem
+(`copper_rock.yaml` → `copper_rock`), and the loader derives `ObjectDef.ID` from that
+filename. Rooms reference the object by this bare ID regardless of which folder the file
+lives in. **Do not put an `id:` field in the file** — it is ignored. (A nested `- id:` under
+a room's `objects:` list is a different thing: a *reference* to an object by its filename,
+and is still required there.)
+
+- **Generic, shared objects** (rocks, trees, altars, stations) use a semantic name and live
+ flat in `data/objects/` — e.g. `data/objects/copper_rock.yaml`.
+- **Room-specific one-offs** (signs, set-dressing, scenery for a single room) are prefixed
+ with the room number and placed in `data/objects/unique/` — e.g.
+ `data/objects/unique/1001_sign.yaml` (ID `1001_sign`, referenced from room `1001`).
+
+Loading walks `data/objects/` recursively, so subdirectories are purely organizational and
+need no changes to room references when a file is moved. They do **not** namespace IDs: every
+filename stem must be globally unique across all of `data/objects/`. Use `hidden: true` for
+signage/scenery so it doesn't appear in room listings.
+
Gathering object (mining):
```yaml
-id: copper_rock
name: copper rock
color: "178" # xterm-256 color index (0-255)
gather:
@@ -37,7 +56,6 @@ gather:
Tree object (woodcutting with shared depletion):
```yaml
-id: oak_tree
name: oak tree
color: "113"
gather:
@@ -70,7 +88,6 @@ ANSI color.
Object interaction (gate, lever — uses `use_interactions:` key):
```yaml
-id: iron_gate
name: iron gate
hidden: true
description: "A heavy iron gate set into the north wall."
@@ -87,14 +104,12 @@ use_interactions:
Decorative object (no behavior keys — just a name/description):
```yaml
-id: lumby_fountain
name: town fountain
description: "Clear water sparkles in the sunlight."
```
Talk object (NPC conversations — uses `talk:` key):
```yaml
-id: tool_shed
name: Tool Shed
description: "A small shed with an open window."
talk:
@@ -121,7 +136,6 @@ Entries are checked top-to-bottom; the first match with a passing condition wins
Simple message (no action):
```yaml
-id: anvil
name: anvil
use_interactions:
- item_id: silver_bar
@@ -132,7 +146,6 @@ use_interactions:
Puzzle interaction (take item, set flag):
```yaml
-id: crystal_slot
name: crystal slot
use_interactions:
- item_id: crystal_key
@@ -201,7 +214,6 @@ use_interactions:
Objects can be stealable via the `steal` command. These use the same drop table system as mobs and searches.
```yaml
-id: market_stall
name: Market Stall
description: "A wooden stall piled with food and sundries."
steal_table: market_stall_steal
@@ -234,7 +246,6 @@ crouch behind them and attack with ranged or science weapons. Melee attacks forc
out of cover.
```yaml
-id: rock_outcrop
name: rock outcrop
color: "248"
hidden: true
diff --git a/building_guide/quests.md b/building_guide/quests.md
index b5f18fa..a764f8e 100644
--- a/building_guide/quests.md
+++ b/building_guide/quests.md
@@ -1,8 +1,9 @@
## Complete Quest Example: "Clear the Rats"
+> **Filenames are IDs.** Every mob/object/room file below has no `id:` field — its filename is its ID (e.g. `quest_giver.yaml` → `quest_giver`). Nested `- id:` under a room's `objects:`/`mobs:` are references and stay.
+
### 1. Quest giver mob (`data/mobs/quest_giver.yaml`)
```yaml
-id: "quest_giver"
name: "Elder"
unique: true
protected: true
@@ -57,7 +58,6 @@ Talk configs are inline on the mob under the `talk:` key. No separate behavior f
### 2. Rat mobs (`data/mobs/rat.yaml`)
```yaml
-id: "rat"
name: "giant rat"
attack: 2
strength: 1
@@ -72,7 +72,6 @@ drops:
### 3. Cellar room (`data/rooms/20.yaml`)
```yaml
-id: 20
name: "Cellar"
description: "A damp, dark cellar. The floor scuttles with movement."
exits:
@@ -87,7 +86,6 @@ mobs:
### 4. Room 1 with quest giver (`data/rooms/1.yaml`)
```yaml
-id: 1
name: "Town Square"
description: "Cobblestone paths lead in all directions. The Elder stands near the fountain."
exits:
diff --git a/building_guide/recipes.md b/building_guide/recipes.md
index 450ded9..43b1cf4 100644
--- a/building_guide/recipes.md
+++ b/building_guide/recipes.md
@@ -2,7 +2,7 @@
## Crafting
-Crafting information lives on the **output item's YAML file** via the `craft:` block. There is no separate recipe directory. To find out how to make `bronze_dagger`, open `data/items/equipment/bronze_dagger.yaml` and look for the `craft:` block.
+Crafting information lives on the **output item's YAML file** via the `craft:` block. There is no separate recipe directory. To find out how to make `bronze_dagger`, open `data/items/equipment/bronze_dagger.yaml` and look for the `craft:` block. (The item's **filename is its ID** — `bronze_dagger.yaml` → `bronze_dagger`; there is no `id:` field. `consume`/output entries reference items by filename.)
### Craft YAML Reference
@@ -257,7 +257,6 @@ craft:
Items with `heal_value` and `eat_message` can be consumed via the `eat` command.
```yaml
-id: bread
name: bread
color: "222"
description: "A fresh loaf of bread, still warm from the oven."
diff --git a/building_guide/rooms.md b/building_guide/rooms.md
index 735a6b4..e1408c5 100644
--- a/building_guide/rooms.md
+++ b/building_guide/rooms.md
@@ -1,8 +1,12 @@
## Rooms
+**The filename is the ID.** A room's numeric filename is its ID (`1.yaml` → room `1`); the
+loader derives it from the filename. Do not put an `id:` field in the file — it is ignored.
+Exits and other rooms reference a room by that number. (A nested `- id:` under `objects:` or
+`mobs:` is a *reference* to an object/mob by its filename, and is still required.)
+
Minimal room:
```yaml
-id: 1
name: "Town Square"
description: "Cobblestone paths lead in all directions. A fountain gurgles peacefully."
exits:
@@ -186,7 +190,6 @@ A room can reference a shared hazard by ID. The hazard rolls an attack against
everyone in the room every few ticks using the combat formulas (see `hazards.md`).
```yaml
-id: 99999181
name: "Exposed Solar Array"
hazard: solar_radiation # ID of a data/hazards/<id>.yaml definition
exits:
diff --git a/building_guide/wandering_mobs.md b/building_guide/wandering_mobs.md
index 8d49ed9..7e2bfb6 100644
--- a/building_guide/wandering_mobs.md
+++ b/building_guide/wandering_mobs.md
@@ -1,6 +1,6 @@
## Wandering Mobs
-Mob wandering is configured per-instance in the room YAML, not on the mob definition:
+Mob wandering is configured per-instance in the room YAML, not on the mob definition. (`- id: man` here references the mob whose **filename** is `man.yaml`.)
```yaml
# In a room:
mobs:
diff --git a/building_guide/wandering_objects.md b/building_guide/wandering_objects.md
index f1f91c5..a181218 100644
--- a/building_guide/wandering_objects.md
+++ b/building_guide/wandering_objects.md
@@ -1,9 +1,8 @@
## Wandering Objects
-Fishing spots that move between rooms:
+Fishing spots that move between rooms (**the filename is the ID** — `fishing_spot.yaml` → `fishing_spot`, no `id:` field):
```yaml
# data/objects/fishing_spot.yaml
-id: fishing_spot
name: fishing spot
gather:
skill: fishing
diff --git a/data/courses/reactor.yaml b/data/courses/reactor.yaml
index 22d1a2b..c9c78d3 100644
--- a/data/courses/reactor.yaml
+++ b/data/courses/reactor.yaml
@@ -1,4 +1,3 @@
-id: "reactor"
name: "Reactor Course"
required_level: 50
start_room: 99999200
diff --git a/data/courses/rooftop.yaml b/data/courses/rooftop.yaml
index 3a24f89..fcf1006 100644
--- a/data/courses/rooftop.yaml
+++ b/data/courses/rooftop.yaml
@@ -1,4 +1,3 @@
-id: "rooftop"
name: "Rooftop Course"
required_level: 20
start_room: 99999200
diff --git a/data/courses/vent_shaft.yaml b/data/courses/vent_shaft.yaml
index 643b39f..766a961 100644
--- a/data/courses/vent_shaft.yaml
+++ b/data/courses/vent_shaft.yaml
@@ -1,4 +1,3 @@
-id: "vent_shaft"
name: "Ventilation Shaft Course"
required_level: 1
start_room: 99999200
diff --git a/data/drops/bioengineer_steal.yaml b/data/drops/bioengineer_steal.yaml
index 3e5e7ce..aab5a7b 100644
--- a/data/drops/bioengineer_steal.yaml
+++ b/data/drops/bioengineer_steal.yaml
@@ -1,4 +1,3 @@
-id: bioengineer_steal
drops:
- item_id: sweetcorn_seed
weight: 25
diff --git a/data/drops/birds_nest_drop.yaml b/data/drops/birds_nest_drop.yaml
index d573d66..d42330c 100644
--- a/data/drops/birds_nest_drop.yaml
+++ b/data/drops/birds_nest_drop.yaml
@@ -1,4 +1,3 @@
-id: birds_nest_drop
drops:
- item_id: credits
weight: 50
diff --git a/data/drops/christmas_cracker_hat.yaml b/data/drops/christmas_cracker_hat.yaml
index bb7bde8..e9f7a77 100644
--- a/data/drops/christmas_cracker_hat.yaml
+++ b/data/drops/christmas_cracker_hat.yaml
@@ -1,4 +1,3 @@
-id: christmas_cracker_hat
drops:
- item_id: party_hat_blue
weight: 1
diff --git a/data/drops/christmas_cracker_misc.yaml b/data/drops/christmas_cracker_misc.yaml
index 6ee6979..94debfd 100644
--- a/data/drops/christmas_cracker_misc.yaml
+++ b/data/drops/christmas_cracker_misc.yaml
@@ -1,4 +1,3 @@
-id: christmas_cracker_misc
drops:
- item_id: ashes
weight: 1
diff --git a/data/drops/credit_stick_drop.yaml b/data/drops/credit_stick_drop.yaml
index d78dc57..09ad76a 100644
--- a/data/drops/credit_stick_drop.yaml
+++ b/data/drops/credit_stick_drop.yaml
@@ -1,4 +1,3 @@
-id: credit_stick_drop
drops:
- item_id: credits
weight: 40
diff --git a/data/drops/farmer_steal.yaml b/data/drops/farmer_steal.yaml
index e64f245..2f49397 100644
--- a/data/drops/farmer_steal.yaml
+++ b/data/drops/farmer_steal.yaml
@@ -1,4 +1,3 @@
-id: farmer_steal
drops:
- item_id: potato_seed
weight: 30
diff --git a/data/drops/gem_table.yaml b/data/drops/gem_table.yaml
index 9410ba1..4b54c69 100644
--- a/data/drops/gem_table.yaml
+++ b/data/drops/gem_table.yaml
@@ -1,4 +1,3 @@
-id: gem_table
drops:
- item_id: uncut_sapphire
weight: 47
diff --git a/data/drops/herb_table_high.yaml b/data/drops/herb_table_high.yaml
index f0f9cd2..8631a3c 100644
--- a/data/drops/herb_table_high.yaml
+++ b/data/drops/herb_table_high.yaml
@@ -1,4 +1,3 @@
-id: herb_table_high
entries:
- item_id: grimy_kwuarm
weight: 7
diff --git a/data/drops/herb_table_low.yaml b/data/drops/herb_table_low.yaml
index 2ed4114..7c20bb6 100644
--- a/data/drops/herb_table_low.yaml
+++ b/data/drops/herb_table_low.yaml
@@ -1,4 +1,3 @@
-id: herb_table_low
entries:
- item_id: grimy_guam
weight: 10
diff --git a/data/drops/herb_table_mid.yaml b/data/drops/herb_table_mid.yaml
index 0661e6c..17e3275 100644
--- a/data/drops/herb_table_mid.yaml
+++ b/data/drops/herb_table_mid.yaml
@@ -1,4 +1,3 @@
-id: herb_table_mid
entries:
- item_id: grimy_harralander
weight: 8
diff --git a/data/drops/man_steal.yaml b/data/drops/man_steal.yaml
index d0ec45f..fd94280 100644
--- a/data/drops/man_steal.yaml
+++ b/data/drops/man_steal.yaml
@@ -1,4 +1,3 @@
-id: man_steal
drops:
- item_id: credit_stick
weight: 80
diff --git a/data/drops/market_stall_steal.yaml b/data/drops/market_stall_steal.yaml
index e45c878..bfd4670 100644
--- a/data/drops/market_stall_steal.yaml
+++ b/data/drops/market_stall_steal.yaml
@@ -1,4 +1,3 @@
-id: market_stall_steal
drops:
- item_id: bread
weight: 40
diff --git a/data/hazards/solar_radiation.yaml b/data/hazards/solar_radiation.yaml
index 40afee6..1b4b009 100644
--- a/data/hazards/solar_radiation.yaml
+++ b/data/hazards/solar_radiation.yaml
@@ -1,4 +1,3 @@
-id: solar_radiation
name: scorching solar radiation
description: "Unfiltered sunlight hammers down through a gap in the atmospheric dome. Without shade or shielding, the radiation burns exposed skin and overheats equipment."
attack_type: science
diff --git a/data/help/agility.yaml b/data/help/agility.yaml
index 2dc298e..5f3747c 100644
--- a/data/help/agility.yaml
+++ b/data/help/agility.yaml
@@ -1,4 +1,3 @@
-id: agility
title: "Agility"
body: |
Agility is trained by completing obstacle courses. Each course is a sequence
diff --git a/data/help/global.yaml b/data/help/global.yaml
new file mode 100644
index 0000000..b302ae0
--- /dev/null
+++ b/data/help/global.yaml
@@ -0,0 +1,8 @@
+name: "global"
+category: "Communication"
+description: |
+ Send a message to every player connected to the world.
+
+ Usage: global <message>
+
+ Everyone online, including you, sees it as "[Global] <name>: <message>".
diff --git a/data/help/hacking.yaml b/data/help/hacking.yaml
index c3aa67a..67803cc 100644
--- a/data/help/hacking.yaml
+++ b/data/help/hacking.yaml
@@ -1,4 +1,3 @@
-id: hacking
title: "Hacking"
body: |
Hacking is trained by jacking into terminals and completing
diff --git a/data/help/jack.yaml b/data/help/jack.yaml
index 33f404a..11e9f75 100644
--- a/data/help/jack.yaml
+++ b/data/help/jack.yaml
@@ -1,4 +1,3 @@
-id: jack
title: "Jack"
body: |
Jack into a terminal to start a hacking minigame.
diff --git a/data/help/who.yaml b/data/help/who.yaml
new file mode 100644
index 0000000..d9b12c3
--- /dev/null
+++ b/data/help/who.yaml
@@ -0,0 +1,9 @@
+name: "who"
+category: "Communication"
+description: |
+ List everyone currently connected to the world.
+
+ Usage: who
+
+ Each player is shown with their combat level in parentheses, colored
+ relative to your own combat level the same way mobs are.
diff --git a/data/items/ammo/adamant_arrow.yaml b/data/items/ammo/adamant_arrow.yaml
index 72f9470..ebf1cef 100644
--- a/data/items/ammo/adamant_arrow.yaml
+++ b/data/items/ammo/adamant_arrow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 10
description: An adamant-tipped arrow.
equip_slot: ammo
-id: adamant_arrow
name: adamant arrow
stackable: true
recoverable: true
diff --git a/data/items/ammo/adamant_arrowtips.yaml b/data/items/ammo/adamant_arrowtips.yaml
index 989a954..96a0b8f 100644
--- a/data/items/ammo/adamant_arrowtips.yaml
+++ b/data/items/ammo/adamant_arrowtips.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 62
description: A set of adamant arrowtips.
-id: adamant_arrowtips
name: adamant arrowtips
stackable: true
value: 16
diff --git a/data/items/ammo/adamant_bolts.yaml b/data/items/ammo/adamant_bolts.yaml
index d1404d1..de68db1 100644
--- a/data/items/ammo/adamant_bolts.yaml
+++ b/data/items/ammo/adamant_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 70
description: Adamant crossbow bolts.
equip_slot: ammo
-id: adamant_bolts
name: adamant bolts
stackable: true
stats:
diff --git a/data/items/ammo/adamant_bolts_unf.yaml b/data/items/ammo/adamant_bolts_unf.yaml
index 9173679..a220d36 100644
--- a/data/items/ammo/adamant_bolts_unf.yaml
+++ b/data/items/ammo/adamant_bolts_unf.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 62
description: Unfinished adamant crossbow bolts.
-id: adamant_bolts_unf
name: adamant bolts (unf)
stackable: true
value: 20
diff --git a/data/items/ammo/arrow_shaft.yaml b/data/items/ammo/arrow_shaft.yaml
index ec2d625..9b81f5c 100644
--- a/data/items/ammo/arrow_shaft.yaml
+++ b/data/items/ammo/arrow_shaft.yaml
@@ -67,7 +67,6 @@ craft:
wait: 5
xp: 30
description: A wooden arrow shaft. Needs feathers and a head.
-id: arrow_shaft
name: arrow shaft
stackable: true
value: 1
diff --git a/data/items/ammo/bronze_arrow.yaml b/data/items/ammo/bronze_arrow.yaml
index a61823b..03039cc 100644
--- a/data/items/ammo/bronze_arrow.yaml
+++ b/data/items/ammo/bronze_arrow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 1
description: A bronze-tipped arrow.
equip_slot: ammo
-id: bronze_arrow
name: bronze arrow
stackable: true
recoverable: true
diff --git a/data/items/ammo/bronze_arrowtips.yaml b/data/items/ammo/bronze_arrowtips.yaml
index 2a453ce..1e9c8d5 100644
--- a/data/items/ammo/bronze_arrowtips.yaml
+++ b/data/items/ammo/bronze_arrowtips.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 12
description: A set of bronze arrowtips.
-id: bronze_arrowtips
name: bronze arrowtips
stackable: true
value: 1
diff --git a/data/items/ammo/bronze_bolts.yaml b/data/items/ammo/bronze_bolts.yaml
index 7cf0776..7ce97fb 100644
--- a/data/items/ammo/bronze_bolts.yaml
+++ b/data/items/ammo/bronze_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 5
description: Bronze crossbow bolts.
equip_slot: ammo
-id: bronze_bolts
name: bronze bolts
stackable: true
stats:
diff --git a/data/items/ammo/bronze_bolts_unf.yaml b/data/items/ammo/bronze_bolts_unf.yaml
index 169b19a..63ca713 100644
--- a/data/items/ammo/bronze_bolts_unf.yaml
+++ b/data/items/ammo/bronze_bolts_unf.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 12
description: Unfinished bronze crossbow bolts.
-id: bronze_bolts_unf
name: bronze bolts (unf)
stackable: true
value: 1
diff --git a/data/items/ammo/diamond_bolt_tips.yaml b/data/items/ammo/diamond_bolt_tips.yaml
index 1c925d6..49aae84 100644
--- a/data/items/ammo/diamond_bolt_tips.yaml
+++ b/data/items/ammo/diamond_bolt_tips.yaml
@@ -12,7 +12,6 @@ craft:
wait: 5
xp: 7
description: Bolt tips cut from a diamond.
-id: diamond_bolt_tips
name: diamond bolt tips
stackable: true
value: 200
diff --git a/data/items/ammo/diamond_bolts.yaml b/data/items/ammo/diamond_bolts.yaml
index e20349c..58a3257 100644
--- a/data/items/ammo/diamond_bolts.yaml
+++ b/data/items/ammo/diamond_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 7
description: Bolts tipped with diamond. Can be enchanted via science.
equip_slot: ammo
-id: diamond_bolts
name: diamond bolts
stackable: true
stats:
diff --git a/data/items/ammo/diamond_bolts_e.yaml b/data/items/ammo/diamond_bolts_e.yaml
index 93ade4c..f299da3 100644
--- a/data/items/ammo/diamond_bolts_e.yaml
+++ b/data/items/ammo/diamond_bolts_e.yaml
@@ -1,4 +1,3 @@
-id: diamond_bolts_e
name: diamond bolts e
color: "255 bold"
description: "Enchanted diamond-tipped bolts. Have a chance to ignore the target's defense."
diff --git a/data/items/ammo/emerald_bolt_tips.yaml b/data/items/ammo/emerald_bolt_tips.yaml
index 068f3b6..4f9b223 100644
--- a/data/items/ammo/emerald_bolt_tips.yaml
+++ b/data/items/ammo/emerald_bolt_tips.yaml
@@ -12,7 +12,6 @@ craft:
wait: 5
xp: 5
description: Bolt tips cut from an emerald.
-id: emerald_bolt_tips
name: emerald bolt tips
stackable: true
value: 50
diff --git a/data/items/ammo/emerald_bolts.yaml b/data/items/ammo/emerald_bolts.yaml
index e90a562..e468b76 100644
--- a/data/items/ammo/emerald_bolts.yaml
+++ b/data/items/ammo/emerald_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 5
description: Bolts tipped with emerald. Can be enchanted via science.
equip_slot: ammo
-id: emerald_bolts
name: emerald bolts
stackable: true
stats:
diff --git a/data/items/ammo/emerald_bolts_e.yaml b/data/items/ammo/emerald_bolts_e.yaml
index 4cb7cbd..9bebd40 100644
--- a/data/items/ammo/emerald_bolts_e.yaml
+++ b/data/items/ammo/emerald_bolts_e.yaml
@@ -1,4 +1,3 @@
-id: emerald_bolts_e
name: emerald bolts e
color: "34 bold"
description: "Enchanted emerald-tipped bolts. Have a chance to poison the target."
diff --git a/data/items/ammo/headless_arrow.yaml b/data/items/ammo/headless_arrow.yaml
index f2095c2..4cc506b 100644
--- a/data/items/ammo/headless_arrow.yaml
+++ b/data/items/ammo/headless_arrow.yaml
@@ -15,7 +15,6 @@ craft:
wait: 2
xp: 1
description: An arrow shaft with feathers attached. Needs a head.
-id: headless_arrow
name: headless arrow
stackable: true
value: 1
diff --git a/data/items/ammo/iron_arrow.yaml b/data/items/ammo/iron_arrow.yaml
index 9e15967..e3a749c 100644
--- a/data/items/ammo/iron_arrow.yaml
+++ b/data/items/ammo/iron_arrow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 2
description: An iron-tipped arrow.
equip_slot: ammo
-id: iron_arrow
name: iron arrow
stackable: true
recoverable: true
diff --git a/data/items/ammo/iron_arrowtips.yaml b/data/items/ammo/iron_arrowtips.yaml
index dd7e6d5..7254cae 100644
--- a/data/items/ammo/iron_arrowtips.yaml
+++ b/data/items/ammo/iron_arrowtips.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 25
description: A set of iron arrowtips.
-id: iron_arrowtips
name: iron arrowtips
stackable: true
value: 2
diff --git a/data/items/ammo/iron_bolts.yaml b/data/items/ammo/iron_bolts.yaml
index d2aeb62..6a40aa2 100644
--- a/data/items/ammo/iron_bolts.yaml
+++ b/data/items/ammo/iron_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 15
description: Iron crossbow bolts.
equip_slot: ammo
-id: iron_bolts
name: iron bolts
stackable: true
stats:
diff --git a/data/items/ammo/iron_bolts_unf.yaml b/data/items/ammo/iron_bolts_unf.yaml
index 78746a8..ac42f85 100644
--- a/data/items/ammo/iron_bolts_unf.yaml
+++ b/data/items/ammo/iron_bolts_unf.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 25
description: Unfinished iron crossbow bolts.
-id: iron_bolts_unf
name: iron bolts (unf)
stackable: true
value: 2
diff --git a/data/items/ammo/mithril_arrow.yaml b/data/items/ammo/mithril_arrow.yaml
index 3eef148..5d0a3c5 100644
--- a/data/items/ammo/mithril_arrow.yaml
+++ b/data/items/ammo/mithril_arrow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 7
description: A mithril-tipped arrow.
equip_slot: ammo
-id: mithril_arrow
name: mithril arrow
stackable: true
recoverable: true
diff --git a/data/items/ammo/mithril_arrowtips.yaml b/data/items/ammo/mithril_arrowtips.yaml
index 8dca92c..6b74864 100644
--- a/data/items/ammo/mithril_arrowtips.yaml
+++ b/data/items/ammo/mithril_arrowtips.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 50
description: A set of mithril arrowtips.
-id: mithril_arrowtips
name: mithril arrowtips
stackable: true
value: 8
diff --git a/data/items/ammo/mithril_bolts.yaml b/data/items/ammo/mithril_bolts.yaml
index d9b4183..6e3afda 100644
--- a/data/items/ammo/mithril_bolts.yaml
+++ b/data/items/ammo/mithril_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 50
description: Mithril crossbow bolts.
equip_slot: ammo
-id: mithril_bolts
name: mithril bolts
stackable: true
stats:
diff --git a/data/items/ammo/mithril_bolts_unf.yaml b/data/items/ammo/mithril_bolts_unf.yaml
index 93a5358..ad7f16a 100644
--- a/data/items/ammo/mithril_bolts_unf.yaml
+++ b/data/items/ammo/mithril_bolts_unf.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 50
description: Unfinished mithril crossbow bolts.
-id: mithril_bolts_unf
name: mithril bolts (unf)
stackable: true
value: 10
diff --git a/data/items/ammo/ruby_bolt_tips.yaml b/data/items/ammo/ruby_bolt_tips.yaml
index c5bc88c..e5b9b0d 100644
--- a/data/items/ammo/ruby_bolt_tips.yaml
+++ b/data/items/ammo/ruby_bolt_tips.yaml
@@ -12,7 +12,6 @@ craft:
wait: 5
xp: 6
description: Bolt tips cut from a ruby.
-id: ruby_bolt_tips
name: ruby bolt tips
stackable: true
value: 100
diff --git a/data/items/ammo/ruby_bolts.yaml b/data/items/ammo/ruby_bolts.yaml
index f10be7e..9f6132d 100644
--- a/data/items/ammo/ruby_bolts.yaml
+++ b/data/items/ammo/ruby_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 6
description: Bolts tipped with ruby. Can be enchanted via science.
equip_slot: ammo
-id: ruby_bolts
name: ruby bolts
stackable: true
stats:
diff --git a/data/items/ammo/ruby_bolts_e.yaml b/data/items/ammo/ruby_bolts_e.yaml
index 14954c2..b8d6bc3 100644
--- a/data/items/ammo/ruby_bolts_e.yaml
+++ b/data/items/ammo/ruby_bolts_e.yaml
@@ -1,4 +1,3 @@
-id: ruby_bolts_e
name: ruby bolts e
color: "196 bold"
description: "Enchanted ruby-tipped bolts. Have a chance to deal extra damage based on the target's remaining HP."
diff --git a/data/items/ammo/rune_arrow.yaml b/data/items/ammo/rune_arrow.yaml
index 4876472..fce1c30 100644
--- a/data/items/ammo/rune_arrow.yaml
+++ b/data/items/ammo/rune_arrow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 12
description: A rune-tipped arrow.
equip_slot: ammo
-id: rune_arrow
name: rune arrow
stackable: true
recoverable: true
diff --git a/data/items/ammo/rune_arrowtips.yaml b/data/items/ammo/rune_arrowtips.yaml
index e1cd229..7c96cc6 100644
--- a/data/items/ammo/rune_arrowtips.yaml
+++ b/data/items/ammo/rune_arrowtips.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 75
description: A set of rune arrowtips.
-id: rune_arrowtips
name: rune arrowtips
stackable: true
value: 30
diff --git a/data/items/ammo/rune_bolts.yaml b/data/items/ammo/rune_bolts.yaml
index f92a49e..64ffd86 100644
--- a/data/items/ammo/rune_bolts.yaml
+++ b/data/items/ammo/rune_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 100
description: Rune crossbow bolts.
equip_slot: ammo
-id: rune_bolts
name: rune bolts
stackable: true
stats:
diff --git a/data/items/ammo/rune_bolts_unf.yaml b/data/items/ammo/rune_bolts_unf.yaml
index 20f0e1a..4bc0e27 100644
--- a/data/items/ammo/rune_bolts_unf.yaml
+++ b/data/items/ammo/rune_bolts_unf.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 75
description: Unfinished rune crossbow bolts.
-id: rune_bolts_unf
name: rune bolts (unf)
stackable: true
value: 40
diff --git a/data/items/ammo/sapphire_bolt_tips.yaml b/data/items/ammo/sapphire_bolt_tips.yaml
index 0469bb0..95fa0d5 100644
--- a/data/items/ammo/sapphire_bolt_tips.yaml
+++ b/data/items/ammo/sapphire_bolt_tips.yaml
@@ -12,7 +12,6 @@ craft:
wait: 5
xp: 4
description: Bolt tips cut from a sapphire.
-id: sapphire_bolt_tips
name: sapphire bolt tips
stackable: true
value: 25
diff --git a/data/items/ammo/sapphire_bolts.yaml b/data/items/ammo/sapphire_bolts.yaml
index 5443347..6dddf4d 100644
--- a/data/items/ammo/sapphire_bolts.yaml
+++ b/data/items/ammo/sapphire_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 4
description: Bolts tipped with sapphire. Can be enchanted via science.
equip_slot: ammo
-id: sapphire_bolts
name: sapphire bolts
stackable: true
stats:
diff --git a/data/items/ammo/sapphire_bolts_e.yaml b/data/items/ammo/sapphire_bolts_e.yaml
index dc378cc..b8efc4f 100644
--- a/data/items/ammo/sapphire_bolts_e.yaml
+++ b/data/items/ammo/sapphire_bolts_e.yaml
@@ -1,4 +1,3 @@
-id: sapphire_bolts_e
name: sapphire bolts e
color: "39 bold"
description: "Enchanted sapphire-tipped bolts. Have a chance to drain the target's Science level."
diff --git a/data/items/ammo/steel_arrow.yaml b/data/items/ammo/steel_arrow.yaml
index 916a2f3..23a0efb 100644
--- a/data/items/ammo/steel_arrow.yaml
+++ b/data/items/ammo/steel_arrow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 5
description: A steel-tipped arrow.
equip_slot: ammo
-id: steel_arrow
name: steel arrow
stackable: true
recoverable: true
diff --git a/data/items/ammo/steel_arrowtips.yaml b/data/items/ammo/steel_arrowtips.yaml
index 140fb9a..319e448 100644
--- a/data/items/ammo/steel_arrowtips.yaml
+++ b/data/items/ammo/steel_arrowtips.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 37
description: A set of steel arrowtips.
-id: steel_arrowtips
name: steel arrowtips
stackable: true
value: 4
diff --git a/data/items/ammo/steel_bolts.yaml b/data/items/ammo/steel_bolts.yaml
index 1e19e64..f4b55f4 100644
--- a/data/items/ammo/steel_bolts.yaml
+++ b/data/items/ammo/steel_bolts.yaml
@@ -15,7 +15,6 @@ craft:
xp: 35
description: Steel crossbow bolts.
equip_slot: ammo
-id: steel_bolts
name: steel bolts
stackable: true
stats:
diff --git a/data/items/ammo/steel_bolts_unf.yaml b/data/items/ammo/steel_bolts_unf.yaml
index 2404129..971e047 100644
--- a/data/items/ammo/steel_bolts_unf.yaml
+++ b/data/items/ammo/steel_bolts_unf.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 37
description: Unfinished steel crossbow bolts.
-id: steel_bolts_unf
name: steel bolts (unf)
stackable: true
value: 5
diff --git a/data/items/consumables/acid_vial.yaml b/data/items/consumables/acid_vial.yaml
index 7a49e2d..0f8295f 100644
--- a/data/items/consumables/acid_vial.yaml
+++ b/data/items/consumables/acid_vial.yaml
@@ -1,4 +1,3 @@
-id: acid_vial
name: acid vial
color: "46"
description: "A small vial of concentrated acid. Used to dissolve crawlers."
diff --git a/data/items/consumables/amp_potion.yaml b/data/items/consumables/amp_potion.yaml
index bce0752..1468b28 100644
--- a/data/items/consumables/amp_potion.yaml
+++ b/data/items/consumables/amp_potion.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 50
description: A glowing gold potion that amplifies physical strength.
-id: amp_potion
name: amp potion
potion_bonus: 10
potion_duration: 200
diff --git a/data/items/consumables/anchovies.yaml b/data/items/consumables/anchovies.yaml
index a8c88f1..0cfb47a 100644
--- a/data/items/consumables/anchovies.yaml
+++ b/data/items/consumables/anchovies.yaml
@@ -17,7 +17,6 @@ craft:
description: Some nicely cooked anchovies.
eat_message: You eat the anchovies.
heal_value: 3
-id: anchovies
name: anchovies
stackable: false
value: 5
diff --git a/data/items/consumables/antitoxin_powder.yaml b/data/items/consumables/antitoxin_powder.yaml
index dedba43..c7a1d4c 100644
--- a/data/items/consumables/antitoxin_powder.yaml
+++ b/data/items/consumables/antitoxin_powder.yaml
@@ -1,4 +1,3 @@
-id: antitoxin_powder
name: "antitoxin powder"
color: "255"
description: "A fine white powder derived from synthetic horn material. Neutralizes biological toxins."
diff --git a/data/items/consumables/apple.yaml b/data/items/consumables/apple.yaml
index 10c09c1..e04a1d9 100644
--- a/data/items/consumables/apple.yaml
+++ b/data/items/consumables/apple.yaml
@@ -1,4 +1,3 @@
-id: apple
name: apple
color: "196"
description: "A bright red apple."
diff --git a/data/items/consumables/avantoe_potion_unf.yaml b/data/items/consumables/avantoe_potion_unf.yaml
index 868dd6f..3f3460d 100644
--- a/data/items/consumables/avantoe_potion_unf.yaml
+++ b/data/items/consumables/avantoe_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with avantoe floating in water.
-id: avantoe_potion_unf
name: avantoe potion (unf)
stackable: false
value: 50
diff --git a/data/items/consumables/bio_serum.yaml b/data/items/consumables/bio_serum.yaml
index 0ef934c..6023f28 100644
--- a/data/items/consumables/bio_serum.yaml
+++ b/data/items/consumables/bio_serum.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 38
description: A green serum that neutralizes biological toxins and restores health.
-id: bio_serum
name: bio serum
potion_bonus: 60
potion_duration: 0
diff --git a/data/items/consumables/blight_spore.yaml b/data/items/consumables/blight_spore.yaml
index add0f6e..7b5d345 100644
--- a/data/items/consumables/blight_spore.yaml
+++ b/data/items/consumables/blight_spore.yaml
@@ -1,4 +1,3 @@
-id: blight_spore
name: "blight spore"
color: "58"
description: "A desiccated fungal spore from the deadlands. Pulsing with residual bio-energy."
diff --git a/data/items/consumables/bread.yaml b/data/items/consumables/bread.yaml
index 9268822..a34eb97 100644
--- a/data/items/consumables/bread.yaml
+++ b/data/items/consumables/bread.yaml
@@ -17,7 +17,6 @@ craft:
description: A fresh loaf of bread, still warm from the oven.
eat_message: You eat the bread. Warm and satisfying.
heal_value: 5
-id: bread
name: bread
stackable: false
value: 5
diff --git a/data/items/consumables/bread_dough.yaml b/data/items/consumables/bread_dough.yaml
index 7e09f3d..c19232c 100644
--- a/data/items/consumables/bread_dough.yaml
+++ b/data/items/consumables/bread_dough.yaml
@@ -16,7 +16,6 @@ craft:
quantity: 1
wait: 2
description: A ball of uncooked bread dough. It needs to be baked.
-id: bread_dough
name: bread dough
stackable: false
value: 3
diff --git a/data/items/consumables/bucket_of_water.yaml b/data/items/consumables/bucket_of_water.yaml
index 3449cdd..93345b9 100644
--- a/data/items/consumables/bucket_of_water.yaml
+++ b/data/items/consumables/bucket_of_water.yaml
@@ -1,4 +1,3 @@
-id: bucket_of_water
name: bucket of water
color: "81"
description: "A wooden bucket filled with fresh water."
diff --git a/data/items/consumables/burnt_fish.yaml b/data/items/consumables/burnt_fish.yaml
index 7af9f03..fdfee11 100644
--- a/data/items/consumables/burnt_fish.yaml
+++ b/data/items/consumables/burnt_fish.yaml
@@ -1,4 +1,3 @@
-id: burnt_fish
name: burnt fish
color: "243"
description: "A badly burnt fish. Completely inedible."
diff --git a/data/items/consumables/burnt_meat.yaml b/data/items/consumables/burnt_meat.yaml
index 92c339c..e02e657 100644
--- a/data/items/consumables/burnt_meat.yaml
+++ b/data/items/consumables/burnt_meat.yaml
@@ -1,4 +1,3 @@
-id: burnt_meat
name: burnt meat
color: "243"
description: "A piece of badly burnt meat. Completely inedible."
diff --git a/data/items/consumables/cabbage.yaml b/data/items/consumables/cabbage.yaml
index c04fd4e..6c9194b 100644
--- a/data/items/consumables/cabbage.yaml
+++ b/data/items/consumables/cabbage.yaml
@@ -1,4 +1,3 @@
-id: cabbage
name: cabbage
color: "71"
description: "A freshly harvested cabbage."
diff --git a/data/items/consumables/cadantine_potion_unf.yaml b/data/items/consumables/cadantine_potion_unf.yaml
index d39c1af..4936c86 100644
--- a/data/items/consumables/cadantine_potion_unf.yaml
+++ b/data/items/consumables/cadantine_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with cadantine floating in water.
-id: cadantine_potion_unf
name: cadantine potion (unf)
stackable: false
value: 72
diff --git a/data/items/consumables/catalyst_wine.yaml b/data/items/consumables/catalyst_wine.yaml
index fcfe1a0..fa2be1a 100644
--- a/data/items/consumables/catalyst_wine.yaml
+++ b/data/items/consumables/catalyst_wine.yaml
@@ -1,4 +1,3 @@
-id: catalyst_wine
name: "catalyst wine"
color: "124"
description: "A volatile crimson wine infused with unstable compounds. Handle with care."
diff --git a/data/items/consumables/cheese.yaml b/data/items/consumables/cheese.yaml
index 79d9fe8..d426657 100644
--- a/data/items/consumables/cheese.yaml
+++ b/data/items/consumables/cheese.yaml
@@ -1,4 +1,3 @@
-id: cheese
name: cheese
color: "226"
description: "A wedge of sharp cheese."
diff --git a/data/items/consumables/dwarf_weed_potion_unf.yaml b/data/items/consumables/dwarf_weed_potion_unf.yaml
index 6314187..3bce0ca 100644
--- a/data/items/consumables/dwarf_weed_potion_unf.yaml
+++ b/data/items/consumables/dwarf_weed_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with dwarf weed floating in water.
-id: dwarf_weed_potion_unf
name: dwarf weed potion (unf)
stackable: false
value: 88
diff --git a/data/items/consumables/full_restore.yaml b/data/items/consumables/full_restore.yaml
index 2e1c234..1535a4d 100644
--- a/data/items/consumables/full_restore.yaml
+++ b/data/items/consumables/full_restore.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 143
description: A powerful orange potion that completely restores health.
-id: full_restore
name: full restore
potion_bonus: 500
potion_duration: 0
diff --git a/data/items/consumables/guam_potion_unf.yaml b/data/items/consumables/guam_potion_unf.yaml
index 6387f21..c333837 100644
--- a/data/items/consumables/guam_potion_unf.yaml
+++ b/data/items/consumables/guam_potion_unf.yaml
@@ -11,7 +11,6 @@ craft:
wait: 0
message: "You mix %i1 and %i2 into %n!!!"
description: An unfinished potion with guam floating in water.
-id: guam_potion_unf
name: guam potion (unf)
stackable: false
value: 5
diff --git a/data/items/consumables/harralander_potion_unf.yaml b/data/items/consumables/harralander_potion_unf.yaml
index f4a768c..8ca53f4 100644
--- a/data/items/consumables/harralander_potion_unf.yaml
+++ b/data/items/consumables/harralander_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with harralander floating in water.
-id: harralander_potion_unf
name: harralander potion (unf)
stackable: false
value: 18
diff --git a/data/items/consumables/herring.yaml b/data/items/consumables/herring.yaml
index 1baaaa0..9c483ab 100644
--- a/data/items/consumables/herring.yaml
+++ b/data/items/consumables/herring.yaml
@@ -17,7 +17,6 @@ craft:
description: A nicely cooked herring.
eat_message: You eat the herring.
heal_value: 5
-id: herring
name: herring
stackable: false
value: 7
diff --git a/data/items/consumables/irit_potion_unf.yaml b/data/items/consumables/irit_potion_unf.yaml
index 8d7c7e6..2e3bc0b 100644
--- a/data/items/consumables/irit_potion_unf.yaml
+++ b/data/items/consumables/irit_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with irit floating in water.
-id: irit_potion_unf
name: irit potion (unf)
stackable: false
value: 42
diff --git a/data/items/consumables/jug_of_water.yaml b/data/items/consumables/jug_of_water.yaml
index 04d3b8f..4031084 100644
--- a/data/items/consumables/jug_of_water.yaml
+++ b/data/items/consumables/jug_of_water.yaml
@@ -1,4 +1,3 @@
-id: jug_of_water
name: jug of water
color: "81"
description: "A ceramic jug filled with fresh water."
diff --git a/data/items/consumables/kwuarm_potion_unf.yaml b/data/items/consumables/kwuarm_potion_unf.yaml
index 75feea4..c7ab59e 100644
--- a/data/items/consumables/kwuarm_potion_unf.yaml
+++ b/data/items/consumables/kwuarm_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with kwuarm floating in water.
-id: kwuarm_potion_unf
name: kwuarm potion (unf)
stackable: false
value: 56
diff --git a/data/items/consumables/lantadyme_potion_unf.yaml b/data/items/consumables/lantadyme_potion_unf.yaml
index addbce0..4d1cc13 100644
--- a/data/items/consumables/lantadyme_potion_unf.yaml
+++ b/data/items/consumables/lantadyme_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with lantadyme floating in water.
-id: lantadyme_potion_unf
name: lantadyme potion (unf)
stackable: false
value: 80
diff --git a/data/items/consumables/marrentill_potion_unf.yaml b/data/items/consumables/marrentill_potion_unf.yaml
index f3ccdd8..833e96f 100644
--- a/data/items/consumables/marrentill_potion_unf.yaml
+++ b/data/items/consumables/marrentill_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with marrentill floating in water.
-id: marrentill_potion_unf
name: marrentill potion (unf)
stackable: false
value: 8
diff --git a/data/items/consumables/nano_restore.yaml b/data/items/consumables/nano_restore.yaml
index 9bea071..7aeb1c2 100644
--- a/data/items/consumables/nano_restore.yaml
+++ b/data/items/consumables/nano_restore.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 63
description: An orange potion containing nanobots that restore diminished attributes.
-id: nano_restore
name: nano restore
potion_bonus: 100
potion_duration: 0
diff --git a/data/items/consumables/onion.yaml b/data/items/consumables/onion.yaml
index 0d0aca7..87ecd55 100644
--- a/data/items/consumables/onion.yaml
+++ b/data/items/consumables/onion.yaml
@@ -1,4 +1,3 @@
-id: onion
name: onion
color: "229"
description: "A freshly harvested onion."
diff --git a/data/items/consumables/pastry_dough.yaml b/data/items/consumables/pastry_dough.yaml
index 0bacf84..6fc48f0 100644
--- a/data/items/consumables/pastry_dough.yaml
+++ b/data/items/consumables/pastry_dough.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 2
description: A ball of uncooked pastry dough. It needs to be baked.
-id: pastry_dough
name: pastry dough
stackable: false
value: 3
diff --git a/data/items/consumables/pie_dish.yaml b/data/items/consumables/pie_dish.yaml
index 338ce52..0446482 100644
--- a/data/items/consumables/pie_dish.yaml
+++ b/data/items/consumables/pie_dish.yaml
@@ -18,6 +18,5 @@ craft:
wait: 4
xp: 10
description: A clay pie dish for baking pies.
-id: pie_dish
name: pie dish
value: 5
diff --git a/data/items/consumables/pizza_dough.yaml b/data/items/consumables/pizza_dough.yaml
index bb69aca..0ed73bd 100644
--- a/data/items/consumables/pizza_dough.yaml
+++ b/data/items/consumables/pizza_dough.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 2
description: A ball of uncooked pizza dough. It needs to be baked.
-id: pizza_dough
name: pizza dough
stackable: false
value: 3
diff --git a/data/items/consumables/plant_cure.yaml b/data/items/consumables/plant_cure.yaml
index 64ebe91..47530ff 100644
--- a/data/items/consumables/plant_cure.yaml
+++ b/data/items/consumables/plant_cure.yaml
@@ -1,4 +1,3 @@
-id: plant_cure
name: plant cure
color: "120"
description: "A bio-engineered solution that cures diseased plants."
diff --git a/data/items/consumables/pot_of_flour.yaml b/data/items/consumables/pot_of_flour.yaml
index c05c065..3e1c4e5 100644
--- a/data/items/consumables/pot_of_flour.yaml
+++ b/data/items/consumables/pot_of_flour.yaml
@@ -1,4 +1,3 @@
-id: pot_of_flour
name: pot of flour
color: "255"
description: "A clay pot filled with finely ground flour."
diff --git a/data/items/consumables/potato.yaml b/data/items/consumables/potato.yaml
index d9f521a..7efeb69 100644
--- a/data/items/consumables/potato.yaml
+++ b/data/items/consumables/potato.yaml
@@ -1,4 +1,3 @@
-id: potato
name: potato
color: "180"
description: "A freshly harvested potato."
diff --git a/data/items/consumables/ranarr_potion_unf.yaml b/data/items/consumables/ranarr_potion_unf.yaml
index 6e8359e..1c85fc0 100644
--- a/data/items/consumables/ranarr_potion_unf.yaml
+++ b/data/items/consumables/ranarr_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with ranarr floating in water.
-id: ranarr_potion_unf
name: ranarr potion (unf)
stackable: false
value: 38
diff --git a/data/items/consumables/raw_anchovies.yaml b/data/items/consumables/raw_anchovies.yaml
index cf5b75f..ae5ff32 100644
--- a/data/items/consumables/raw_anchovies.yaml
+++ b/data/items/consumables/raw_anchovies.yaml
@@ -1,4 +1,3 @@
-id: raw_anchovies
name: raw anchovies
color: "75"
description: "Some tiny raw anchovies."
diff --git a/data/items/consumables/raw_anglerfish.yaml b/data/items/consumables/raw_anglerfish.yaml
index b1c7262..b09c313 100644
--- a/data/items/consumables/raw_anglerfish.yaml
+++ b/data/items/consumables/raw_anglerfish.yaml
@@ -1,4 +1,3 @@
-id: raw_anglerfish
name: raw anglerfish
color: "80"
description: "An ugly but delicious raw anglerfish."
diff --git a/data/items/consumables/raw_bass.yaml b/data/items/consumables/raw_bass.yaml
index 34dddc1..aed7413 100644
--- a/data/items/consumables/raw_bass.yaml
+++ b/data/items/consumables/raw_bass.yaml
@@ -1,4 +1,3 @@
-id: raw_bass
name: raw bass
color: "69"
description: "A freshly caught raw bass."
diff --git a/data/items/consumables/raw_beef.yaml b/data/items/consumables/raw_beef.yaml
index 59695b0..5823e27 100644
--- a/data/items/consumables/raw_beef.yaml
+++ b/data/items/consumables/raw_beef.yaml
@@ -1,4 +1,3 @@
-id: raw_beef
name: raw beef
color: "196"
description: "A slab of raw beef."
diff --git a/data/items/consumables/raw_cave_eel.yaml b/data/items/consumables/raw_cave_eel.yaml
index 000f93c..6361475 100644
--- a/data/items/consumables/raw_cave_eel.yaml
+++ b/data/items/consumables/raw_cave_eel.yaml
@@ -1,4 +1,3 @@
-id: raw_cave_eel
name: raw cave eel
color: "80"
description: "A pale eel from deep underground waters."
diff --git a/data/items/consumables/raw_cod.yaml b/data/items/consumables/raw_cod.yaml
index fe94f35..61c5885 100644
--- a/data/items/consumables/raw_cod.yaml
+++ b/data/items/consumables/raw_cod.yaml
@@ -1,4 +1,3 @@
-id: raw_cod
name: raw cod
color: "69"
description: "A freshly caught raw cod."
diff --git a/data/items/consumables/raw_herring.yaml b/data/items/consumables/raw_herring.yaml
index 730eca5..3201e4f 100644
--- a/data/items/consumables/raw_herring.yaml
+++ b/data/items/consumables/raw_herring.yaml
@@ -1,4 +1,3 @@
-id: raw_herring
name: raw herring
color: "75"
description: "A freshly caught raw herring."
diff --git a/data/items/consumables/raw_lobster.yaml b/data/items/consumables/raw_lobster.yaml
index 908c931..4917873 100644
--- a/data/items/consumables/raw_lobster.yaml
+++ b/data/items/consumables/raw_lobster.yaml
@@ -1,4 +1,3 @@
-id: raw_lobster
name: raw lobster
color: "33"
description: "A freshly caught raw lobster."
diff --git a/data/items/consumables/raw_mackerel.yaml b/data/items/consumables/raw_mackerel.yaml
index 42e1d09..f948bb8 100644
--- a/data/items/consumables/raw_mackerel.yaml
+++ b/data/items/consumables/raw_mackerel.yaml
@@ -1,4 +1,3 @@
-id: raw_mackerel
name: raw mackerel
color: "69"
description: "A freshly caught raw mackerel."
diff --git a/data/items/consumables/raw_pike.yaml b/data/items/consumables/raw_pike.yaml
index 625c019..98cc27d 100644
--- a/data/items/consumables/raw_pike.yaml
+++ b/data/items/consumables/raw_pike.yaml
@@ -1,4 +1,3 @@
-id: raw_pike
name: raw pike
color: "69"
description: "A freshly caught raw pike."
diff --git a/data/items/consumables/raw_rainbow_fish.yaml b/data/items/consumables/raw_rainbow_fish.yaml
index 311c9f1..2e3e197 100644
--- a/data/items/consumables/raw_rainbow_fish.yaml
+++ b/data/items/consumables/raw_rainbow_fish.yaml
@@ -1,4 +1,3 @@
-id: raw_rainbow_fish
name: raw rainbow fish
color: "177"
description: "A shimmering raw rainbow fish."
diff --git a/data/items/consumables/raw_salmon.yaml b/data/items/consumables/raw_salmon.yaml
index d5ae9bd..268e017 100644
--- a/data/items/consumables/raw_salmon.yaml
+++ b/data/items/consumables/raw_salmon.yaml
@@ -1,4 +1,3 @@
-id: raw_salmon
name: raw salmon
color: "69"
description: "A freshly caught raw salmon."
diff --git a/data/items/consumables/raw_sardine.yaml b/data/items/consumables/raw_sardine.yaml
index d27a155..cd59e71 100644
--- a/data/items/consumables/raw_sardine.yaml
+++ b/data/items/consumables/raw_sardine.yaml
@@ -1,4 +1,3 @@
-id: raw_sardine
name: raw sardine
color: "75"
description: "A freshly caught raw sardine."
diff --git a/data/items/consumables/raw_shark.yaml b/data/items/consumables/raw_shark.yaml
index 999ccb9..4b8e731 100644
--- a/data/items/consumables/raw_shark.yaml
+++ b/data/items/consumables/raw_shark.yaml
@@ -1,4 +1,3 @@
-id: raw_shark
name: raw shark
color: "27"
description: "A freshly caught raw shark."
diff --git a/data/items/consumables/raw_shrimps.yaml b/data/items/consumables/raw_shrimps.yaml
index 1127fda..f31772b 100644
--- a/data/items/consumables/raw_shrimps.yaml
+++ b/data/items/consumables/raw_shrimps.yaml
@@ -1,4 +1,3 @@
-id: raw_shrimps
name: raw shrimps
color: "75"
description: "Some small raw shrimps."
diff --git a/data/items/consumables/raw_slimy_eel.yaml b/data/items/consumables/raw_slimy_eel.yaml
index 40820e5..044732f 100644
--- a/data/items/consumables/raw_slimy_eel.yaml
+++ b/data/items/consumables/raw_slimy_eel.yaml
@@ -1,4 +1,3 @@
-id: raw_slimy_eel
name: raw slimy eel
color: "108"
description: "A slippery raw eel covered in slime."
diff --git a/data/items/consumables/raw_swordfish.yaml b/data/items/consumables/raw_swordfish.yaml
index e162460..6ecdc96 100644
--- a/data/items/consumables/raw_swordfish.yaml
+++ b/data/items/consumables/raw_swordfish.yaml
@@ -1,4 +1,3 @@
-id: raw_swordfish
name: raw swordfish
color: "33"
description: "A freshly caught raw swordfish."
diff --git a/data/items/consumables/raw_trout.yaml b/data/items/consumables/raw_trout.yaml
index c1d98aa..be6465b 100644
--- a/data/items/consumables/raw_trout.yaml
+++ b/data/items/consumables/raw_trout.yaml
@@ -1,4 +1,3 @@
-id: raw_trout
name: raw trout
color: "69"
description: "A freshly caught trout. Needs cooking."
diff --git a/data/items/consumables/raw_tuna.yaml b/data/items/consumables/raw_tuna.yaml
index 6079f92..f448e79 100644
--- a/data/items/consumables/raw_tuna.yaml
+++ b/data/items/consumables/raw_tuna.yaml
@@ -1,4 +1,3 @@
-id: raw_tuna
name: raw tuna
color: "33"
description: "A freshly caught raw tuna."
diff --git a/data/items/consumables/restoration_compound.yaml b/data/items/consumables/restoration_compound.yaml
index d1f9035..6a62d8a 100644
--- a/data/items/consumables/restoration_compound.yaml
+++ b/data/items/consumables/restoration_compound.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 180
description: A teal compound that enhances all combat capabilities.
-id: restoration_compound
name: restoration compound
potion_bonus: 15
potion_duration: 150
diff --git a/data/items/consumables/salmon.yaml b/data/items/consumables/salmon.yaml
index dabc280..36b93e3 100644
--- a/data/items/consumables/salmon.yaml
+++ b/data/items/consumables/salmon.yaml
@@ -17,7 +17,6 @@ craft:
description: A nicely cooked salmon.
eat_message: You eat the salmon. Savory and satisfying!
heal_value: 9
-id: salmon
name: salmon
stackable: false
value: 10
diff --git a/data/items/consumables/sardine.yaml b/data/items/consumables/sardine.yaml
index 885d0f4..28ecfb5 100644
--- a/data/items/consumables/sardine.yaml
+++ b/data/items/consumables/sardine.yaml
@@ -17,7 +17,6 @@ craft:
description: A nicely cooked sardine.
eat_message: You eat the sardine.
heal_value: 4
-id: sardine
name: sardine
stackable: false
value: 5
diff --git a/data/items/consumables/science_serum.yaml b/data/items/consumables/science_serum.yaml
index 4763e1d..496fe7f 100644
--- a/data/items/consumables/science_serum.yaml
+++ b/data/items/consumables/science_serum.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 173
description: A violet serum that heightens scientific cognition.
-id: science_serum
name: science serum
potion_bonus: 10
potion_duration: 200
diff --git a/data/items/consumables/shield_potion.yaml b/data/items/consumables/shield_potion.yaml
index 3b8b1c7..61c327c 100644
--- a/data/items/consumables/shield_potion.yaml
+++ b/data/items/consumables/shield_potion.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 75
description: A deep blue potion that reinforces defensive capability.
-id: shield_potion
name: shield potion
potion_bonus: 10
potion_duration: 200
diff --git a/data/items/consumables/shrimps.yaml b/data/items/consumables/shrimps.yaml
index dcfc0c4..1f2e979 100644
--- a/data/items/consumables/shrimps.yaml
+++ b/data/items/consumables/shrimps.yaml
@@ -17,7 +17,6 @@ craft:
description: Some nicely cooked shrimps.
eat_message: You eat the shrimps. Tasty!
heal_value: 3
-id: shrimps
name: shrimps
stackable: false
value: 5
diff --git a/data/items/consumables/snapdragon_potion_unf.yaml b/data/items/consumables/snapdragon_potion_unf.yaml
index a49de71..3856944 100644
--- a/data/items/consumables/snapdragon_potion_unf.yaml
+++ b/data/items/consumables/snapdragon_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with snapdragon floating in water.
-id: snapdragon_potion_unf
name: snapdragon potion (unf)
stackable: false
value: 68
diff --git a/data/items/consumables/stim_potion.yaml b/data/items/consumables/stim_potion.yaml
index 4ae10ff..241ffa4 100644
--- a/data/items/consumables/stim_potion.yaml
+++ b/data/items/consumables/stim_potion.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 25
description: A bubbling red potion that temporarily boosts attack capability.
-id: stim_potion
name: stim potion
potion_bonus: 10
potion_duration: 200
diff --git a/data/items/consumables/strawberry.yaml b/data/items/consumables/strawberry.yaml
index 337a65e..16828c4 100644
--- a/data/items/consumables/strawberry.yaml
+++ b/data/items/consumables/strawberry.yaml
@@ -1,4 +1,3 @@
-id: strawberry
name: strawberry
color: "197"
description: "A freshly harvested strawberry."
diff --git a/data/items/consumables/super_amp.yaml b/data/items/consumables/super_amp.yaml
index 6105611..0a80808 100644
--- a/data/items/consumables/super_amp.yaml
+++ b/data/items/consumables/super_amp.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 125
description: A concentrated gold potion that significantly amplifies physical strength.
-id: super_amp
name: super amp
potion_bonus: 20
potion_duration: 200
diff --git a/data/items/consumables/super_bio_serum.yaml b/data/items/consumables/super_bio_serum.yaml
index 5e4a9cd..9a7cec6 100644
--- a/data/items/consumables/super_bio_serum.yaml
+++ b/data/items/consumables/super_bio_serum.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 106
description: A concentrated green serum that powerfully restores health.
-id: super_bio_serum
name: super bio serum
potion_bonus: 120
potion_duration: 0
diff --git a/data/items/consumables/super_shield.yaml b/data/items/consumables/super_shield.yaml
index 9d0f8dd..d208b8b 100644
--- a/data/items/consumables/super_shield.yaml
+++ b/data/items/consumables/super_shield.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 150
description: A concentrated blue potion that provides significant defensive enhancement.
-id: super_shield
name: super shield
potion_bonus: 20
potion_duration: 200
diff --git a/data/items/consumables/super_stim.yaml b/data/items/consumables/super_stim.yaml
index f8e4756..965af49 100644
--- a/data/items/consumables/super_stim.yaml
+++ b/data/items/consumables/super_stim.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 100
description: A potent red potion that dramatically boosts attack capability.
-id: super_stim
name: super stim
potion_bonus: 20
potion_duration: 200
diff --git a/data/items/consumables/super_stim_cell.yaml b/data/items/consumables/super_stim_cell.yaml
index 6879a87..a372736 100644
--- a/data/items/consumables/super_stim_cell.yaml
+++ b/data/items/consumables/super_stim_cell.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 118
description: A concentrated yellow energy supplement that fully restores stamina.
-id: super_stim_cell
name: super stim cell
potion_bonus: 50
potion_duration: 0
diff --git a/data/items/consumables/sweetcorn.yaml b/data/items/consumables/sweetcorn.yaml
index 32f5a70..b1e0a78 100644
--- a/data/items/consumables/sweetcorn.yaml
+++ b/data/items/consumables/sweetcorn.yaml
@@ -1,4 +1,3 @@
-id: sweetcorn
name: sweetcorn
color: "226"
description: "A freshly harvested ear of sweetcorn."
diff --git a/data/items/consumables/targeting_serum.yaml b/data/items/consumables/targeting_serum.yaml
index 1d61b64..6355679 100644
--- a/data/items/consumables/targeting_serum.yaml
+++ b/data/items/consumables/targeting_serum.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 163
description: A pink serum that sharpens ranged targeting.
-id: targeting_serum
name: targeting serum
potion_bonus: 10
potion_duration: 200
diff --git a/data/items/consumables/tarromin_potion_unf.yaml b/data/items/consumables/tarromin_potion_unf.yaml
index 5c15bd9..0bec707 100644
--- a/data/items/consumables/tarromin_potion_unf.yaml
+++ b/data/items/consumables/tarromin_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with tarromin floating in water.
-id: tarromin_potion_unf
name: tarromin potion (unf)
stackable: false
value: 12
diff --git a/data/items/consumables/tech_serum.yaml b/data/items/consumables/tech_serum.yaml
index 1ce7d15..7ba4b3f 100644
--- a/data/items/consumables/tech_serum.yaml
+++ b/data/items/consumables/tech_serum.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 88
description: A cyan serum that enhances technology interface.
-id: tech_serum
name: tech serum
potion_bonus: 10
potion_duration: 200
diff --git a/data/items/consumables/toadflax_potion_unf.yaml b/data/items/consumables/toadflax_potion_unf.yaml
index fce21ec..5fdbd74 100644
--- a/data/items/consumables/toadflax_potion_unf.yaml
+++ b/data/items/consumables/toadflax_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with toadflax floating in water.
-id: toadflax_potion_unf
name: toadflax potion (unf)
stackable: false
value: 28
diff --git a/data/items/consumables/tomato.yaml b/data/items/consumables/tomato.yaml
index d2ad349..314a43e 100644
--- a/data/items/consumables/tomato.yaml
+++ b/data/items/consumables/tomato.yaml
@@ -1,4 +1,3 @@
-id: tomato
name: tomato
color: "196"
description: "A freshly harvested tomato."
diff --git a/data/items/consumables/torstol_potion_unf.yaml b/data/items/consumables/torstol_potion_unf.yaml
index ace9c6e..ae8cff6 100644
--- a/data/items/consumables/torstol_potion_unf.yaml
+++ b/data/items/consumables/torstol_potion_unf.yaml
@@ -10,7 +10,6 @@ craft:
quantity: 1
wait: 0
description: An unfinished potion with torstol floating in water.
-id: torstol_potion_unf
name: torstol potion (unf)
stackable: false
value: 102
diff --git a/data/items/consumables/trout.yaml b/data/items/consumables/trout.yaml
index 4811991..97f5142 100644
--- a/data/items/consumables/trout.yaml
+++ b/data/items/consumables/trout.yaml
@@ -17,7 +17,6 @@ craft:
description: A nicely cooked trout.
eat_message: You eat the trout. Delicious!
heal_value: 7
-id: trout
name: trout
stackable: false
value: 8
diff --git a/data/items/consumables/vial_of_water.yaml b/data/items/consumables/vial_of_water.yaml
index c3e2995..c75ffeb 100644
--- a/data/items/consumables/vial_of_water.yaml
+++ b/data/items/consumables/vial_of_water.yaml
@@ -1,4 +1,3 @@
-id: vial_of_water
name: "vial of water"
color: "39"
description: "A small glass vial filled with purified water. The base for all potions."
diff --git a/data/items/consumables/watermelon.yaml b/data/items/consumables/watermelon.yaml
index 3374687..ef83eed 100644
--- a/data/items/consumables/watermelon.yaml
+++ b/data/items/consumables/watermelon.yaml
@@ -1,4 +1,3 @@
-id: watermelon
name: watermelon
color: "34"
description: "A freshly harvested watermelon."
diff --git a/data/items/decks/advanced_bio_deck.yaml b/data/items/decks/advanced_bio_deck.yaml
index 1411a16..83d7abc 100644
--- a/data/items/decks/advanced_bio_deck.yaml
+++ b/data/items/decks/advanced_bio_deck.yaml
@@ -1,4 +1,3 @@
-id: advanced_bio_deck
name: advanced bio deck
color: "196 bold"
description: "A high-powered bio deck with enhanced circuitry. Provides unlimited biojunk and removes the scrap requirement."
diff --git a/data/items/decks/advanced_eco_deck.yaml b/data/items/decks/advanced_eco_deck.yaml
index c844f47..082e295 100644
--- a/data/items/decks/advanced_eco_deck.yaml
+++ b/data/items/decks/advanced_eco_deck.yaml
@@ -1,4 +1,3 @@
-id: advanced_eco_deck
name: advanced eco deck
color: "34 bold"
description: "A high-powered eco deck with enhanced circuitry. Provides unlimited ecojunk and removes the scrap requirement."
diff --git a/data/items/decks/advanced_hydro_deck.yaml b/data/items/decks/advanced_hydro_deck.yaml
index 2910931..0dbcd79 100644
--- a/data/items/decks/advanced_hydro_deck.yaml
+++ b/data/items/decks/advanced_hydro_deck.yaml
@@ -1,4 +1,3 @@
-id: advanced_hydro_deck
name: advanced hydro deck
color: "39 bold"
description: "A high-powered hydro deck with enhanced circuitry. Provides unlimited hydrojunk and removes the scrap requirement."
diff --git a/data/items/decks/advanced_solar_deck.yaml b/data/items/decks/advanced_solar_deck.yaml
index 002845c..1b55dac 100644
--- a/data/items/decks/advanced_solar_deck.yaml
+++ b/data/items/decks/advanced_solar_deck.yaml
@@ -1,4 +1,3 @@
-id: advanced_solar_deck
name: advanced solar deck
color: "220 bold"
description: "A high-powered solar deck with enhanced circuitry. Provides unlimited solarjunk and removes the scrap requirement."
diff --git a/data/items/decks/basic_deck.yaml b/data/items/decks/basic_deck.yaml
index ef2549a..3df319e 100644
--- a/data/items/decks/basic_deck.yaml
+++ b/data/items/decks/basic_deck.yaml
@@ -1,4 +1,3 @@
-id: basic_deck
name: basic deck
color: "245"
description: "A simple programmable deck. Removes the scrap requirement for triggering mods, but provides no elemental junk."
diff --git a/data/items/decks/bio_deck.yaml b/data/items/decks/bio_deck.yaml
index 8de2036..91042be 100644
--- a/data/items/decks/bio_deck.yaml
+++ b/data/items/decks/bio_deck.yaml
@@ -1,4 +1,3 @@
-id: bio_deck
name: bio deck
color: "196"
description: "A programmable deck infused with bio-synthetic membranes. Provides unlimited biojunk and removes the scrap requirement."
diff --git a/data/items/decks/bio_identifier.yaml b/data/items/decks/bio_identifier.yaml
index 52fceb3..a396acf 100644
--- a/data/items/decks/bio_identifier.yaml
+++ b/data/items/decks/bio_identifier.yaml
@@ -1,4 +1,3 @@
-id: bio_identifier
name: bio identifier
color: "196"
description: "A handheld scanner calibrated to isolate bio-frequency signatures in scrap. Required to produce biojunk at a bio altar."
diff --git a/data/items/decks/biojunk.yaml b/data/items/decks/biojunk.yaml
index 8832a20..0281673 100644
--- a/data/items/decks/biojunk.yaml
+++ b/data/items/decks/biojunk.yaml
@@ -1,4 +1,3 @@
-id: biojunk
name: biojunk
color: "196"
description: "A fragment of reclaimed bio circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/blood_identifier.yaml b/data/items/decks/blood_identifier.yaml
index d2ba170..ca9f05f 100644
--- a/data/items/decks/blood_identifier.yaml
+++ b/data/items/decks/blood_identifier.yaml
@@ -1,4 +1,3 @@
-id: blood_identifier
name: blood identifier
color: "124"
description: "A handheld scanner calibrated to isolate blood-frequency signatures in scrap. Required to produce bloodjunk at a blood altar."
diff --git a/data/items/decks/bloodjunk.yaml b/data/items/decks/bloodjunk.yaml
index b837137..77abcb8 100644
--- a/data/items/decks/bloodjunk.yaml
+++ b/data/items/decks/bloodjunk.yaml
@@ -1,4 +1,3 @@
-id: bloodjunk
name: bloodjunk
color: "124"
description: "A fragment of reclaimed blood circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/chaos_identifier.yaml b/data/items/decks/chaos_identifier.yaml
index fcb4df7..4b2a07b 100644
--- a/data/items/decks/chaos_identifier.yaml
+++ b/data/items/decks/chaos_identifier.yaml
@@ -1,4 +1,3 @@
-id: chaos_identifier
name: chaos identifier
color: "226"
description: "A handheld scanner calibrated to isolate chaos-frequency signatures in scrap. Required to produce chaosjunk at a chaos altar."
diff --git a/data/items/decks/chaosjunk.yaml b/data/items/decks/chaosjunk.yaml
index 99515df..37efa1f 100644
--- a/data/items/decks/chaosjunk.yaml
+++ b/data/items/decks/chaosjunk.yaml
@@ -1,4 +1,3 @@
-id: chaosjunk
name: chaosjunk
color: "226"
description: "A fragment of reclaimed chaos circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/cosmic_identifier.yaml b/data/items/decks/cosmic_identifier.yaml
index 51e80e5..abb1d5b 100644
--- a/data/items/decks/cosmic_identifier.yaml
+++ b/data/items/decks/cosmic_identifier.yaml
@@ -1,4 +1,3 @@
-id: cosmic_identifier
name: cosmic identifier
color: "201"
description: "A handheld scanner calibrated to isolate cosmic-frequency signatures in scrap. Required to produce cosmicjunk at a cosmic altar."
diff --git a/data/items/decks/cosmicjunk.yaml b/data/items/decks/cosmicjunk.yaml
index d9acc21..7e25019 100644
--- a/data/items/decks/cosmicjunk.yaml
+++ b/data/items/decks/cosmicjunk.yaml
@@ -1,4 +1,3 @@
-id: cosmicjunk
name: cosmicjunk
color: "201"
description: "A fragment of reclaimed cosmic circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/death_identifier.yaml b/data/items/decks/death_identifier.yaml
index 7cc3f3b..7868095 100644
--- a/data/items/decks/death_identifier.yaml
+++ b/data/items/decks/death_identifier.yaml
@@ -1,4 +1,3 @@
-id: death_identifier
name: death identifier
color: "52"
description: "A handheld scanner calibrated to isolate death-frequency signatures in scrap. Required to produce deathjunk at a death altar."
diff --git a/data/items/decks/deathjunk.yaml b/data/items/decks/deathjunk.yaml
index 7dcaba8..7cece3a 100644
--- a/data/items/decks/deathjunk.yaml
+++ b/data/items/decks/deathjunk.yaml
@@ -1,4 +1,3 @@
-id: deathjunk
name: deathjunk
color: "52"
description: "A fragment of reclaimed death circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/eco_deck.yaml b/data/items/decks/eco_deck.yaml
index ef1a991..5a9bfeb 100644
--- a/data/items/decks/eco_deck.yaml
+++ b/data/items/decks/eco_deck.yaml
@@ -1,4 +1,3 @@
-id: eco_deck
name: eco deck
color: "34"
description: "A programmable deck threaded with eco-organic circuits. Provides unlimited ecojunk and removes the scrap requirement."
diff --git a/data/items/decks/eco_identifier.yaml b/data/items/decks/eco_identifier.yaml
index 90f5f28..27fe55d 100644
--- a/data/items/decks/eco_identifier.yaml
+++ b/data/items/decks/eco_identifier.yaml
@@ -1,4 +1,3 @@
-id: eco_identifier
name: eco identifier
color: "34"
description: "A handheld scanner calibrated to isolate eco-frequency signatures in scrap. Required to produce ecojunk at an eco altar."
diff --git a/data/items/decks/ecojunk.yaml b/data/items/decks/ecojunk.yaml
index c050049..e8d465e 100644
--- a/data/items/decks/ecojunk.yaml
+++ b/data/items/decks/ecojunk.yaml
@@ -1,4 +1,3 @@
-id: ecojunk
name: ecojunk
color: "34"
description: "A fragment of reclaimed eco circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/hydro_deck.yaml b/data/items/decks/hydro_deck.yaml
index 0e417a2..3f1b030 100644
--- a/data/items/decks/hydro_deck.yaml
+++ b/data/items/decks/hydro_deck.yaml
@@ -1,4 +1,3 @@
-id: hydro_deck
name: hydro deck
color: "39"
description: "A programmable deck infused with hydro circuitry. Provides unlimited hydrojunk and removes the scrap requirement."
diff --git a/data/items/decks/hydro_identifier.yaml b/data/items/decks/hydro_identifier.yaml
index 61217a3..ebf273e 100644
--- a/data/items/decks/hydro_identifier.yaml
+++ b/data/items/decks/hydro_identifier.yaml
@@ -1,4 +1,3 @@
-id: hydro_identifier
name: hydro identifier
color: "39"
description: "A handheld scanner calibrated to isolate hydro-frequency signatures in scrap. Required to produce hydrojunk at a hydro altar."
diff --git a/data/items/decks/hydrojunk.yaml b/data/items/decks/hydrojunk.yaml
index bfcd64a..3af658a 100644
--- a/data/items/decks/hydrojunk.yaml
+++ b/data/items/decks/hydrojunk.yaml
@@ -1,4 +1,3 @@
-id: hydrojunk
name: hydrojunk
color: "39"
description: "A fragment of reclaimed hydro circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/law_identifier.yaml b/data/items/decks/law_identifier.yaml
index 8a8e02a..1a72c0e 100644
--- a/data/items/decks/law_identifier.yaml
+++ b/data/items/decks/law_identifier.yaml
@@ -1,4 +1,3 @@
-id: law_identifier
name: law identifier
color: "27"
description: "A handheld scanner calibrated to isolate law-frequency signatures in scrap. Required to produce lawjunk at a law altar."
diff --git a/data/items/decks/lawjunk.yaml b/data/items/decks/lawjunk.yaml
index b46bf9e..85b2b9f 100644
--- a/data/items/decks/lawjunk.yaml
+++ b/data/items/decks/lawjunk.yaml
@@ -1,4 +1,3 @@
-id: lawjunk
name: lawjunk
color: "27"
description: "A fragment of reclaimed law circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/nature_identifier.yaml b/data/items/decks/nature_identifier.yaml
index 0eb48ad..25882fb 100644
--- a/data/items/decks/nature_identifier.yaml
+++ b/data/items/decks/nature_identifier.yaml
@@ -1,4 +1,3 @@
-id: nature_identifier
name: nature identifier
color: "46"
description: "A handheld scanner calibrated to isolate nature-frequency signatures in scrap. Required to produce naturejunk at a nature altar."
diff --git a/data/items/decks/naturejunk.yaml b/data/items/decks/naturejunk.yaml
index 49ed1ff..f7be5d0 100644
--- a/data/items/decks/naturejunk.yaml
+++ b/data/items/decks/naturejunk.yaml
@@ -1,4 +1,3 @@
-id: naturejunk
name: naturejunk
color: "46"
description: "A fragment of reclaimed nature circuitry. Used as a universal energy medium."
diff --git a/data/items/decks/solar_deck.yaml b/data/items/decks/solar_deck.yaml
index 72b7e9e..a116627 100644
--- a/data/items/decks/solar_deck.yaml
+++ b/data/items/decks/solar_deck.yaml
@@ -1,4 +1,3 @@
-id: solar_deck
name: solar deck
color: "220"
description: "A programmable deck pulsing with solar energy. Provides unlimited solarjunk and removes the scrap requirement."
diff --git a/data/items/decks/solar_identifier.yaml b/data/items/decks/solar_identifier.yaml
index 0a0f108..d525b40 100644
--- a/data/items/decks/solar_identifier.yaml
+++ b/data/items/decks/solar_identifier.yaml
@@ -1,4 +1,3 @@
-id: solar_identifier
name: solar identifier
color: "220"
description: "A handheld scanner calibrated to isolate solar-frequency signatures in scrap. Required to produce solarjunk at a solar altar."
diff --git a/data/items/decks/solarjunk.yaml b/data/items/decks/solarjunk.yaml
index ab4d5d5..b294b5c 100644
--- a/data/items/decks/solarjunk.yaml
+++ b/data/items/decks/solarjunk.yaml
@@ -1,4 +1,3 @@
-id: solarjunk
name: solarjunk
color: "220"
description: "A fragment of reclaimed solar circuitry. Used as a universal energy medium."
diff --git a/data/items/equipment/abyssal_bracelet.yaml b/data/items/equipment/abyssal_bracelet.yaml
index 3b424c3..1598e66 100644
--- a/data/items/equipment/abyssal_bracelet.yaml
+++ b/data/items/equipment/abyssal_bracelet.yaml
@@ -1,4 +1,3 @@
-id: abyssal_bracelet
name: abyssal bracelet
color: "255"
description: "An enchanted diamond bracelet that increases scavenging output."
diff --git a/data/items/equipment/adamant_dagger.yaml b/data/items/equipment/adamant_dagger.yaml
index 7875c3a..d040cfd 100644
--- a/data/items/equipment/adamant_dagger.yaml
+++ b/data/items/equipment/adamant_dagger.yaml
@@ -14,7 +14,6 @@ craft:
xp: 62
description: A small adamant dagger.
equip_slot: main_hand
-id: adamant_dagger
name: adamant dagger
requirements:
accuracy: 30
diff --git a/data/items/equipment/adamant_full_helm.yaml b/data/items/equipment/adamant_full_helm.yaml
index 0b0f367..09b955a 100644
--- a/data/items/equipment/adamant_full_helm.yaml
+++ b/data/items/equipment/adamant_full_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 125
description: An adamant full helmet.
equip_slot: head
-id: adamant_full_helm
name: adamant full helm
requirements:
defense: 30
diff --git a/data/items/equipment/adamant_med_helm.yaml b/data/items/equipment/adamant_med_helm.yaml
index 5058f37..8c60d1e 100644
--- a/data/items/equipment/adamant_med_helm.yaml
+++ b/data/items/equipment/adamant_med_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 62
description: An adamant medium helmet.
equip_slot: head
-id: adamant_med_helm
name: adamant med helm
requirements:
defense: 30
diff --git a/data/items/equipment/adamant_platebody.yaml b/data/items/equipment/adamant_platebody.yaml
index d2bf9cb..fee9a9f 100644
--- a/data/items/equipment/adamant_platebody.yaml
+++ b/data/items/equipment/adamant_platebody.yaml
@@ -13,7 +13,6 @@ craft:
xp: 312
description: An adamant platebody.
equip_slot: torso
-id: adamant_platebody
name: adamant platebody
requirements:
defense: 30
diff --git a/data/items/equipment/adamant_sword.yaml b/data/items/equipment/adamant_sword.yaml
index b1aaccd..ef2351c 100644
--- a/data/items/equipment/adamant_sword.yaml
+++ b/data/items/equipment/adamant_sword.yaml
@@ -14,7 +14,6 @@ craft:
xp: 62
description: An adamant sword.
equip_slot: main_hand
-id: adamant_sword
name: adamant sword
requirements:
accuracy: 30
diff --git a/data/items/equipment/binding_necklace.yaml b/data/items/equipment/binding_necklace.yaml
index e9e7559..f2baee1 100644
--- a/data/items/equipment/binding_necklace.yaml
+++ b/data/items/equipment/binding_necklace.yaml
@@ -1,4 +1,3 @@
-id: binding_necklace
name: binding necklace
color: "34"
description: "An enchanted emerald necklace. Provides a 100 percent success rate when identifying junk at altars."
diff --git a/data/items/equipment/black_axe.yaml b/data/items/equipment/black_axe.yaml
index 49fc8f5..89956c1 100644
--- a/data/items/equipment/black_axe.yaml
+++ b/data/items/equipment/black_axe.yaml
@@ -1,4 +1,3 @@
-id: black_axe
name: black axe
color: "240"
description: "A black axe, good for woodcutting."
diff --git a/data/items/equipment/bracelet_of_clay.yaml b/data/items/equipment/bracelet_of_clay.yaml
index d8cd881..c97fa3e 100644
--- a/data/items/equipment/bracelet_of_clay.yaml
+++ b/data/items/equipment/bracelet_of_clay.yaml
@@ -1,4 +1,3 @@
-id: bracelet_of_clay
name: bracelet of clay
color: "39"
description: "An enchanted sapphire bracelet. Softens clay for easier crafting."
diff --git a/data/items/equipment/bracelet_of_slaughter.yaml b/data/items/equipment/bracelet_of_slaughter.yaml
index 2bbbbec..d882d6b 100644
--- a/data/items/equipment/bracelet_of_slaughter.yaml
+++ b/data/items/equipment/bracelet_of_slaughter.yaml
@@ -1,4 +1,3 @@
-id: bracelet_of_slaughter
name: bracelet of slaughter
color: "34"
description: "An enchanted emerald bracelet that provides bonus XP on kills."
diff --git a/data/items/equipment/bronze_dagger.yaml b/data/items/equipment/bronze_dagger.yaml
index 8a3d2ec..3306e87 100644
--- a/data/items/equipment/bronze_dagger.yaml
+++ b/data/items/equipment/bronze_dagger.yaml
@@ -14,7 +14,6 @@ craft:
xp: 12
description: A small bronze dagger.
equip_slot: main_hand
-id: bronze_dagger
name: bronze dagger
speed: 3
stackable: false
diff --git a/data/items/equipment/bronze_full_helm.yaml b/data/items/equipment/bronze_full_helm.yaml
index 1d82567..2fac2a1 100644
--- a/data/items/equipment/bronze_full_helm.yaml
+++ b/data/items/equipment/bronze_full_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 25
description: A bronze full helmet.
equip_slot: head
-id: bronze_full_helm
name: bronze full helm
stackable: false
stats:
diff --git a/data/items/equipment/bronze_med_helm.yaml b/data/items/equipment/bronze_med_helm.yaml
index b1cb0db..525adef 100644
--- a/data/items/equipment/bronze_med_helm.yaml
+++ b/data/items/equipment/bronze_med_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 12
description: A bronze medium helmet.
equip_slot: head
-id: bronze_med_helm
name: bronze med helm
stackable: false
stats:
diff --git a/data/items/equipment/bronze_platebody.yaml b/data/items/equipment/bronze_platebody.yaml
index 95bc528..2fb1c9c 100644
--- a/data/items/equipment/bronze_platebody.yaml
+++ b/data/items/equipment/bronze_platebody.yaml
@@ -13,7 +13,6 @@ craft:
xp: 62
description: A bronze platebody.
equip_slot: torso
-id: bronze_platebody
name: bronze platebody
stackable: false
stats:
diff --git a/data/items/equipment/bronze_sword.yaml b/data/items/equipment/bronze_sword.yaml
index 7645076..af6b3dd 100644
--- a/data/items/equipment/bronze_sword.yaml
+++ b/data/items/equipment/bronze_sword.yaml
@@ -14,7 +14,6 @@ craft:
xp: 12
description: A basic bronze sword.
equip_slot: main_hand
-id: bronze_sword
name: bronze sword
speed: 4
stackable: false
diff --git a/data/items/equipment/capacitor_gloves.yaml b/data/items/equipment/capacitor_gloves.yaml
index e5af9ed..eb51783 100644
--- a/data/items/equipment/capacitor_gloves.yaml
+++ b/data/items/equipment/capacitor_gloves.yaml
@@ -1,4 +1,3 @@
-id: capacitor_gloves
name: Capacitor Gloves
description: "Gloves woven with superconducting filaments."
color: "250"
diff --git a/data/items/equipment/cape_of_agility.yaml b/data/items/equipment/cape_of_agility.yaml
index 5567e73..1927e58 100644
--- a/data/items/equipment/cape_of_agility.yaml
+++ b/data/items/equipment/cape_of_agility.yaml
@@ -1,4 +1,3 @@
-id: cape_of_agility
name: cape of agility
color: "g:223,231,223"
description: "A lightweight cape that allows the wearer to move with extraordinary speed."
diff --git a/data/items/equipment/chitin_plate.yaml b/data/items/equipment/chitin_plate.yaml
index 4148a2a..0dd8b4e 100644
--- a/data/items/equipment/chitin_plate.yaml
+++ b/data/items/equipment/chitin_plate.yaml
@@ -1,4 +1,3 @@
-id: chitin_plate
name: chitin plate
color: "130"
description: "A thick plate of biological armor from a crawler's exoskeleton."
diff --git a/data/items/equipment/coif.yaml b/data/items/equipment/coif.yaml
index 111788e..d640abd 100644
--- a/data/items/equipment/coif.yaml
+++ b/data/items/equipment/coif.yaml
@@ -15,7 +15,6 @@ craft:
xp: 37
description: A hard leather coif.
equip_slot: head
-id: coif
name: coif
requirements:
defense: 20
diff --git a/data/items/equipment/diamond_amulet_u.yaml b/data/items/equipment/diamond_amulet_u.yaml
index 7370c66..ac8d612 100644
--- a/data/items/equipment/diamond_amulet_u.yaml
+++ b/data/items/equipment/diamond_amulet_u.yaml
@@ -20,6 +20,5 @@ craft:
wait: 4
xp: 100
description: An unstrung gold amulet set with a diamond.
-id: diamond_amulet_u
name: diamond amulet (u)
value: 200
diff --git a/data/items/equipment/diamond_bracelet.yaml b/data/items/equipment/diamond_bracelet.yaml
index 96be95b..59c022b 100644
--- a/data/items/equipment/diamond_bracelet.yaml
+++ b/data/items/equipment/diamond_bracelet.yaml
@@ -21,6 +21,5 @@ craft:
xp: 95
description: A bracelet set with a diamond. Can be enchanted.
equip_slot: hands
-id: diamond_bracelet
name: diamond bracelet
value: 1500
diff --git a/data/items/equipment/diamond_necklace.yaml b/data/items/equipment/diamond_necklace.yaml
index 8cf6c9f..ae99799 100644
--- a/data/items/equipment/diamond_necklace.yaml
+++ b/data/items/equipment/diamond_necklace.yaml
@@ -21,6 +21,5 @@ craft:
xp: 90
description: A necklace set with a diamond. Can be enchanted.
equip_slot: neck
-id: diamond_necklace
name: diamond necklace
value: 1600
diff --git a/data/items/equipment/diamond_ring.yaml b/data/items/equipment/diamond_ring.yaml
index 67e6599..b935b94 100644
--- a/data/items/equipment/diamond_ring.yaml
+++ b/data/items/equipment/diamond_ring.yaml
@@ -21,6 +21,5 @@ craft:
xp: 85
description: A ring set with a diamond. Can be enchanted.
equip_slot: ring
-id: diamond_ring
name: diamond ring
value: 1500
diff --git a/data/items/equipment/digsite_pendant.yaml b/data/items/equipment/digsite_pendant.yaml
index b28e3e3..cb71364 100644
--- a/data/items/equipment/digsite_pendant.yaml
+++ b/data/items/equipment/digsite_pendant.yaml
@@ -1,4 +1,3 @@
-id: digsite_pendant
name: digsite pendant
color: "196"
description: "An enchanted ruby necklace that can teleport you to dig sites."
diff --git a/data/items/equipment/dragon_axe.yaml b/data/items/equipment/dragon_axe.yaml
index caef5bb..653a67d 100644
--- a/data/items/equipment/dragon_axe.yaml
+++ b/data/items/equipment/dragon_axe.yaml
@@ -1,4 +1,3 @@
-id: dragon_axe
name: dragon axe
color: "196"
description: "A powerful dragon axe."
diff --git a/data/items/equipment/emerald_amulet_u.yaml b/data/items/equipment/emerald_amulet_u.yaml
index f493825..8155583 100644
--- a/data/items/equipment/emerald_amulet_u.yaml
+++ b/data/items/equipment/emerald_amulet_u.yaml
@@ -20,6 +20,5 @@ craft:
wait: 4
xp: 70
description: An unstrung gold amulet set with a emerald.
-id: emerald_amulet_u
name: emerald amulet (u)
value: 110
diff --git a/data/items/equipment/emerald_bracelet.yaml b/data/items/equipment/emerald_bracelet.yaml
index a29424e..3df4ddc 100644
--- a/data/items/equipment/emerald_bracelet.yaml
+++ b/data/items/equipment/emerald_bracelet.yaml
@@ -21,6 +21,5 @@ craft:
xp: 65
description: A bracelet set with an emerald. Can be enchanted.
equip_slot: hands
-id: emerald_bracelet
name: emerald bracelet
value: 400
diff --git a/data/items/equipment/emerald_necklace.yaml b/data/items/equipment/emerald_necklace.yaml
index 22d1544..6c44a93 100644
--- a/data/items/equipment/emerald_necklace.yaml
+++ b/data/items/equipment/emerald_necklace.yaml
@@ -21,6 +21,5 @@ craft:
xp: 60
description: A necklace set with an emerald. Can be enchanted.
equip_slot: neck
-id: emerald_necklace
name: emerald necklace
value: 450
diff --git a/data/items/equipment/emerald_ring.yaml b/data/items/equipment/emerald_ring.yaml
index 3b1a436..ce0ca84 100644
--- a/data/items/equipment/emerald_ring.yaml
+++ b/data/items/equipment/emerald_ring.yaml
@@ -21,6 +21,5 @@ craft:
xp: 55
description: A ring set with an emerald. Can be enchanted.
equip_slot: ring
-id: emerald_ring
name: emerald ring
value: 400
diff --git a/data/items/equipment/gold_amulet_u.yaml b/data/items/equipment/gold_amulet_u.yaml
index 91ae98d..d63bdd5 100644
--- a/data/items/equipment/gold_amulet_u.yaml
+++ b/data/items/equipment/gold_amulet_u.yaml
@@ -17,6 +17,5 @@ craft:
wait: 4
xp: 30
description: An unstrung gold amulet.
-id: gold_amulet_u
name: gold amulet (u)
value: 70
diff --git a/data/items/equipment/gold_bracelet.yaml b/data/items/equipment/gold_bracelet.yaml
index a5a19e0..d2bb491 100644
--- a/data/items/equipment/gold_bracelet.yaml
+++ b/data/items/equipment/gold_bracelet.yaml
@@ -18,6 +18,5 @@ craft:
xp: 25
description: A gold bracelet.
equip_slot: hands
-id: gold_bracelet
name: gold bracelet
value: 65
diff --git a/data/items/equipment/gold_necklace.yaml b/data/items/equipment/gold_necklace.yaml
index 7174f8e..a3cc023 100644
--- a/data/items/equipment/gold_necklace.yaml
+++ b/data/items/equipment/gold_necklace.yaml
@@ -18,6 +18,5 @@ craft:
xp: 20
description: A gold necklace.
equip_slot: neck
-id: gold_necklace
name: gold necklace
value: 60
diff --git a/data/items/equipment/gold_ring.yaml b/data/items/equipment/gold_ring.yaml
index 600ac60..0694631 100644
--- a/data/items/equipment/gold_ring.yaml
+++ b/data/items/equipment/gold_ring.yaml
@@ -18,6 +18,5 @@ craft:
xp: 15
description: A simple gold ring.
equip_slot: ring
-id: gold_ring
name: gold ring
value: 50
diff --git a/data/items/equipment/graceful_boots.yaml b/data/items/equipment/graceful_boots.yaml
index 71e8f84..6541497 100644
--- a/data/items/equipment/graceful_boots.yaml
+++ b/data/items/equipment/graceful_boots.yaml
@@ -1,4 +1,3 @@
-id: graceful_boots
name: graceful boots
color: "230"
description: "Lightweight boots. Part of the graceful set."
diff --git a/data/items/equipment/graceful_cape.yaml b/data/items/equipment/graceful_cape.yaml
index 1d7c8f0..24776c2 100644
--- a/data/items/equipment/graceful_cape.yaml
+++ b/data/items/equipment/graceful_cape.yaml
@@ -1,4 +1,3 @@
-id: graceful_cape
name: graceful cape
color: "230"
description: "A lightweight cape. Part of the graceful set."
diff --git a/data/items/equipment/graceful_gloves.yaml b/data/items/equipment/graceful_gloves.yaml
index 311ded5..23977e1 100644
--- a/data/items/equipment/graceful_gloves.yaml
+++ b/data/items/equipment/graceful_gloves.yaml
@@ -1,4 +1,3 @@
-id: graceful_gloves
name: graceful gloves
color: "230"
description: "Lightweight gloves. Part of the graceful set."
diff --git a/data/items/equipment/graceful_hat.yaml b/data/items/equipment/graceful_hat.yaml
index faec1e3..499445c 100644
--- a/data/items/equipment/graceful_hat.yaml
+++ b/data/items/equipment/graceful_hat.yaml
@@ -1,4 +1,3 @@
-id: graceful_hat
name: graceful hat
color: "230"
description: "A lightweight hat. Part of the graceful set."
diff --git a/data/items/equipment/graceful_legs.yaml b/data/items/equipment/graceful_legs.yaml
index 31eeebf..b375017 100644
--- a/data/items/equipment/graceful_legs.yaml
+++ b/data/items/equipment/graceful_legs.yaml
@@ -1,4 +1,3 @@
-id: graceful_legs
name: graceful legs
color: "230"
description: "Lightweight leg armour. Part of the graceful set."
diff --git a/data/items/equipment/graceful_torso.yaml b/data/items/equipment/graceful_torso.yaml
index ec1edb7..a9fa512 100644
--- a/data/items/equipment/graceful_torso.yaml
+++ b/data/items/equipment/graceful_torso.yaml
@@ -1,4 +1,3 @@
-id: graceful_torso
name: graceful torso
color: "230"
description: "A lightweight top. Part of the graceful set."
diff --git a/data/items/equipment/hard_leather_body.yaml b/data/items/equipment/hard_leather_body.yaml
index d100299..656aa10 100644
--- a/data/items/equipment/hard_leather_body.yaml
+++ b/data/items/equipment/hard_leather_body.yaml
@@ -15,7 +15,6 @@ craft:
xp: 35
description: A hardened leather body armour.
equip_slot: torso
-id: hard_leather_body
name: hard leather body
requirements:
defense: 10
diff --git a/data/items/equipment/hard_leather_shield.yaml b/data/items/equipment/hard_leather_shield.yaml
index b21bff3..1b7042d 100644
--- a/data/items/equipment/hard_leather_shield.yaml
+++ b/data/items/equipment/hard_leather_shield.yaml
@@ -15,7 +15,6 @@ craft:
xp: 40
description: A shield made of hardened leather.
equip_slot: off_hand
-id: hard_leather_shield
name: hard leather shield
requirements:
defense: 10
diff --git a/data/items/equipment/inoculation_bracelet.yaml b/data/items/equipment/inoculation_bracelet.yaml
index 9a3a149..06d01ff 100644
--- a/data/items/equipment/inoculation_bracelet.yaml
+++ b/data/items/equipment/inoculation_bracelet.yaml
@@ -1,4 +1,3 @@
-id: inoculation_bracelet
name: inoculation bracelet
color: "196"
description: "An enchanted ruby bracelet that provides resistance to poison."
diff --git a/data/items/equipment/insulated_gloves.yaml b/data/items/equipment/insulated_gloves.yaml
index 3e53614..d969ba0 100644
--- a/data/items/equipment/insulated_gloves.yaml
+++ b/data/items/equipment/insulated_gloves.yaml
@@ -1,4 +1,3 @@
-id: insulated_gloves
name: insulated gloves
color: "214"
description: "Heavy rubber gloves that protect against electrical attacks. Essential when fighting drones."
diff --git a/data/items/equipment/iron_dagger.yaml b/data/items/equipment/iron_dagger.yaml
index 5c332e2..df82d4f 100644
--- a/data/items/equipment/iron_dagger.yaml
+++ b/data/items/equipment/iron_dagger.yaml
@@ -14,7 +14,6 @@ craft:
xp: 25
description: A small iron dagger.
equip_slot: main_hand
-id: iron_dagger
name: iron dagger
speed: 3
stackable: false
diff --git a/data/items/equipment/iron_full_helm.yaml b/data/items/equipment/iron_full_helm.yaml
index 6f96338..38b0ed5 100644
--- a/data/items/equipment/iron_full_helm.yaml
+++ b/data/items/equipment/iron_full_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 50
description: An iron full helmet.
equip_slot: head
-id: iron_full_helm
name: iron full helm
stackable: false
stats:
diff --git a/data/items/equipment/iron_med_helm.yaml b/data/items/equipment/iron_med_helm.yaml
index 7f6aef5..087bcbc 100644
--- a/data/items/equipment/iron_med_helm.yaml
+++ b/data/items/equipment/iron_med_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 25
description: An iron medium helmet.
equip_slot: head
-id: iron_med_helm
name: iron med helm
stackable: false
stats:
diff --git a/data/items/equipment/iron_platebody.yaml b/data/items/equipment/iron_platebody.yaml
index 8d5d300..bda1ed9 100644
--- a/data/items/equipment/iron_platebody.yaml
+++ b/data/items/equipment/iron_platebody.yaml
@@ -13,7 +13,6 @@ craft:
xp: 125
description: An iron platebody.
equip_slot: torso
-id: iron_platebody
name: iron platebody
stackable: false
stats:
diff --git a/data/items/equipment/iron_sword.yaml b/data/items/equipment/iron_sword.yaml
index a975cc4..ba5979d 100644
--- a/data/items/equipment/iron_sword.yaml
+++ b/data/items/equipment/iron_sword.yaml
@@ -14,7 +14,6 @@ craft:
xp: 25
description: An iron sword.
equip_slot: main_hand
-id: iron_sword
name: iron sword
speed: 4
stackable: false
diff --git a/data/items/equipment/leather_body.yaml b/data/items/equipment/leather_body.yaml
index cf628b4..5f8035d 100644
--- a/data/items/equipment/leather_body.yaml
+++ b/data/items/equipment/leather_body.yaml
@@ -15,7 +15,6 @@ craft:
xp: 25
description: A leather body armour.
equip_slot: torso
-id: leather_body
name: leather body
stats:
crush_defense: 5
diff --git a/data/items/equipment/leather_boots.yaml b/data/items/equipment/leather_boots.yaml
index 40c499b..361ed12 100644
--- a/data/items/equipment/leather_boots.yaml
+++ b/data/items/equipment/leather_boots.yaml
@@ -15,7 +15,6 @@ craft:
xp: 16
description: A pair of leather boots.
equip_slot: feet
-id: leather_boots
name: leather boots
stats:
crush_defense: 1
diff --git a/data/items/equipment/leather_chaps.yaml b/data/items/equipment/leather_chaps.yaml
index fd98c09..c8d3498 100644
--- a/data/items/equipment/leather_chaps.yaml
+++ b/data/items/equipment/leather_chaps.yaml
@@ -15,7 +15,6 @@ craft:
xp: 27
description: A pair of leather chaps.
equip_slot: legs
-id: leather_chaps
name: leather chaps
stats:
crush_defense: 3
diff --git a/data/items/equipment/leather_cowl.yaml b/data/items/equipment/leather_cowl.yaml
index 95b75c5..4164ec1 100644
--- a/data/items/equipment/leather_cowl.yaml
+++ b/data/items/equipment/leather_cowl.yaml
@@ -15,7 +15,6 @@ craft:
xp: 19
description: A leather cowl.
equip_slot: head
-id: leather_cowl
name: leather cowl
stats:
crush_defense: 1
diff --git a/data/items/equipment/leather_gloves.yaml b/data/items/equipment/leather_gloves.yaml
index 805605f..6de332a 100644
--- a/data/items/equipment/leather_gloves.yaml
+++ b/data/items/equipment/leather_gloves.yaml
@@ -15,7 +15,6 @@ craft:
xp: 14
description: A pair of leather gloves.
equip_slot: hands
-id: leather_gloves
name: leather gloves
stats:
crush_defense: 1
diff --git a/data/items/equipment/leather_vambraces.yaml b/data/items/equipment/leather_vambraces.yaml
index 50b84cc..1e53180 100644
--- a/data/items/equipment/leather_vambraces.yaml
+++ b/data/items/equipment/leather_vambraces.yaml
@@ -15,7 +15,6 @@ craft:
xp: 22
description: A pair of leather vambraces.
equip_slot: hands
-id: leather_vambraces
name: leather vambraces
stats:
crush_defense: 2
diff --git a/data/items/equipment/longbow.yaml b/data/items/equipment/longbow.yaml
index ee6f68b..8c9d85a 100644
--- a/data/items/equipment/longbow.yaml
+++ b/data/items/equipment/longbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 10
description: A longbow.
equip_slot: main_hand
-id: longbow
name: longbow
speed: 6
stats:
diff --git a/data/items/equipment/longbow_u.yaml b/data/items/equipment/longbow_u.yaml
index d368141..8024835 100644
--- a/data/items/equipment/longbow_u.yaml
+++ b/data/items/equipment/longbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 10
description: An unstrung longbow.
-id: longbow_u
name: longbow (u)
value: 10
diff --git a/data/items/equipment/magic_longbow.yaml b/data/items/equipment/magic_longbow.yaml
index ebc6adc..a5230f2 100644
--- a/data/items/equipment/magic_longbow.yaml
+++ b/data/items/equipment/magic_longbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 91
description: A magic longbow.
equip_slot: main_hand
-id: magic_longbow
name: magic longbow
requirements:
ranged: 50
diff --git a/data/items/equipment/magic_longbow_u.yaml b/data/items/equipment/magic_longbow_u.yaml
index 45a211b..c0172a4 100644
--- a/data/items/equipment/magic_longbow_u.yaml
+++ b/data/items/equipment/magic_longbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 91
description: An unstrung magic longbow.
-id: magic_longbow_u
name: magic longbow (u)
value: 3000
diff --git a/data/items/equipment/magic_shortbow.yaml b/data/items/equipment/magic_shortbow.yaml
index ad28f22..2b2c013 100644
--- a/data/items/equipment/magic_shortbow.yaml
+++ b/data/items/equipment/magic_shortbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 83
description: A magic shortbow.
equip_slot: main_hand
-id: magic_shortbow
name: magic shortbow
requirements:
ranged: 50
diff --git a/data/items/equipment/magic_shortbow_u.yaml b/data/items/equipment/magic_shortbow_u.yaml
index fa301b2..efdbe9f 100644
--- a/data/items/equipment/magic_shortbow_u.yaml
+++ b/data/items/equipment/magic_shortbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 83
description: An unstrung magic shortbow.
-id: magic_shortbow_u
name: magic shortbow (u)
value: 2000
diff --git a/data/items/equipment/maple_longbow.yaml b/data/items/equipment/maple_longbow.yaml
index 5ceeab6..153fe29 100644
--- a/data/items/equipment/maple_longbow.yaml
+++ b/data/items/equipment/maple_longbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 58
description: A maple longbow.
equip_slot: main_hand
-id: maple_longbow
name: maple longbow
requirements:
ranged: 30
diff --git a/data/items/equipment/maple_longbow_u.yaml b/data/items/equipment/maple_longbow_u.yaml
index 3eb4f4d..d51611e 100644
--- a/data/items/equipment/maple_longbow_u.yaml
+++ b/data/items/equipment/maple_longbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 58
description: An unstrung maple longbow.
-id: maple_longbow_u
name: maple longbow (u)
value: 640
diff --git a/data/items/equipment/maple_shortbow.yaml b/data/items/equipment/maple_shortbow.yaml
index 0d02157..9f7d46e 100644
--- a/data/items/equipment/maple_shortbow.yaml
+++ b/data/items/equipment/maple_shortbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 50
description: A maple shortbow.
equip_slot: main_hand
-id: maple_shortbow
name: maple shortbow
requirements:
ranged: 30
diff --git a/data/items/equipment/maple_shortbow_u.yaml b/data/items/equipment/maple_shortbow_u.yaml
index c734aad..d0e9c9a 100644
--- a/data/items/equipment/maple_shortbow_u.yaml
+++ b/data/items/equipment/maple_shortbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 50
description: An unstrung maple shortbow.
-id: maple_shortbow_u
name: maple shortbow (u)
value: 320
diff --git a/data/items/equipment/mithril_dagger.yaml b/data/items/equipment/mithril_dagger.yaml
index 8543198..6eba272 100644
--- a/data/items/equipment/mithril_dagger.yaml
+++ b/data/items/equipment/mithril_dagger.yaml
@@ -14,7 +14,6 @@ craft:
xp: 50
description: A small mithril dagger.
equip_slot: main_hand
-id: mithril_dagger
name: mithril dagger
requirements:
accuracy: 20
diff --git a/data/items/equipment/mithril_full_helm.yaml b/data/items/equipment/mithril_full_helm.yaml
index bf69b5f..22a7604 100644
--- a/data/items/equipment/mithril_full_helm.yaml
+++ b/data/items/equipment/mithril_full_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 100
description: A mithril full helmet.
equip_slot: head
-id: mithril_full_helm
name: mithril full helm
requirements:
defense: 20
diff --git a/data/items/equipment/mithril_med_helm.yaml b/data/items/equipment/mithril_med_helm.yaml
index c680ff4..2809bba 100644
--- a/data/items/equipment/mithril_med_helm.yaml
+++ b/data/items/equipment/mithril_med_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 50
description: A mithril medium helmet.
equip_slot: head
-id: mithril_med_helm
name: mithril med helm
requirements:
defense: 20
diff --git a/data/items/equipment/mithril_platebody.yaml b/data/items/equipment/mithril_platebody.yaml
index 1ff3d03..53df342 100644
--- a/data/items/equipment/mithril_platebody.yaml
+++ b/data/items/equipment/mithril_platebody.yaml
@@ -13,7 +13,6 @@ craft:
xp: 250
description: A mithril platebody.
equip_slot: torso
-id: mithril_platebody
name: mithril platebody
requirements:
defense: 20
diff --git a/data/items/equipment/mithril_sword.yaml b/data/items/equipment/mithril_sword.yaml
index 397d044..59ffc1d 100644
--- a/data/items/equipment/mithril_sword.yaml
+++ b/data/items/equipment/mithril_sword.yaml
@@ -14,7 +14,6 @@ craft:
xp: 50
description: A mithril sword.
equip_slot: main_hand
-id: mithril_sword
name: mithril sword
requirements:
accuracy: 20
diff --git a/data/items/equipment/necklace_of_passage.yaml b/data/items/equipment/necklace_of_passage.yaml
index b5630ed..f399345 100644
--- a/data/items/equipment/necklace_of_passage.yaml
+++ b/data/items/equipment/necklace_of_passage.yaml
@@ -1,4 +1,3 @@
-id: necklace_of_passage
name: necklace of passage
color: "39"
description: "An enchanted sapphire necklace that can teleport the wearer to various locations."
diff --git a/data/items/equipment/neural_headband.yaml b/data/items/equipment/neural_headband.yaml
index e01e57d..a167283 100644
--- a/data/items/equipment/neural_headband.yaml
+++ b/data/items/equipment/neural_headband.yaml
@@ -1,4 +1,3 @@
-id: neural_headband
name: Neural Headband
description: "A thin band of circuitry that amplifies neural signals, reducing battery drain."
color: "39"
diff --git a/data/items/equipment/oak_longbow.yaml b/data/items/equipment/oak_longbow.yaml
index 07848d0..79806b7 100644
--- a/data/items/equipment/oak_longbow.yaml
+++ b/data/items/equipment/oak_longbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 25
description: An oak longbow.
equip_slot: main_hand
-id: oak_longbow
name: oak longbow
requirements:
ranged: 5
diff --git a/data/items/equipment/oak_longbow_u.yaml b/data/items/equipment/oak_longbow_u.yaml
index 5ed7742..0756662 100644
--- a/data/items/equipment/oak_longbow_u.yaml
+++ b/data/items/equipment/oak_longbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 25
description: An unstrung oak longbow.
-id: oak_longbow_u
name: oak longbow (u)
value: 40
diff --git a/data/items/equipment/oak_shortbow.yaml b/data/items/equipment/oak_shortbow.yaml
index 187970f..afb05c3 100644
--- a/data/items/equipment/oak_shortbow.yaml
+++ b/data/items/equipment/oak_shortbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 16
description: An oak shortbow.
equip_slot: main_hand
-id: oak_shortbow
name: oak shortbow
requirements:
ranged: 5
diff --git a/data/items/equipment/oak_shortbow_u.yaml b/data/items/equipment/oak_shortbow_u.yaml
index 1d6d8ee..03bf70a 100644
--- a/data/items/equipment/oak_shortbow_u.yaml
+++ b/data/items/equipment/oak_shortbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 16
description: An unstrung oak shortbow.
-id: oak_shortbow_u
name: oak shortbow (u)
value: 20
diff --git a/data/items/equipment/party_hat_blue.yaml b/data/items/equipment/party_hat_blue.yaml
index 42d6bb5..e62bde8 100644
--- a/data/items/equipment/party_hat_blue.yaml
+++ b/data/items/equipment/party_hat_blue.yaml
@@ -1,4 +1,3 @@
-id: party_hat_blue
name: blue party hat
color: "69"
description: "A festive blue party hat."
diff --git a/data/items/equipment/party_hat_green.yaml b/data/items/equipment/party_hat_green.yaml
index 82c3bc7..f4ee6d3 100644
--- a/data/items/equipment/party_hat_green.yaml
+++ b/data/items/equipment/party_hat_green.yaml
@@ -1,4 +1,3 @@
-id: party_hat_green
name: green party hat
color: "83"
description: "A festive green party hat."
diff --git a/data/items/equipment/party_hat_pink.yaml b/data/items/equipment/party_hat_pink.yaml
index 006e261..1c3bcdb 100644
--- a/data/items/equipment/party_hat_pink.yaml
+++ b/data/items/equipment/party_hat_pink.yaml
@@ -1,4 +1,3 @@
-id: party_hat_pink
name: pink party hat
color: "213"
description: "A festive pink party hat."
diff --git a/data/items/equipment/party_hat_red.yaml b/data/items/equipment/party_hat_red.yaml
index 005b3dd..833bb96 100644
--- a/data/items/equipment/party_hat_red.yaml
+++ b/data/items/equipment/party_hat_red.yaml
@@ -1,4 +1,3 @@
-id: party_hat_red
name: red party hat
color: "196"
description: "A festive red party hat."
diff --git a/data/items/equipment/party_hat_white.yaml b/data/items/equipment/party_hat_white.yaml
index c8e8f86..633113b 100644
--- a/data/items/equipment/party_hat_white.yaml
+++ b/data/items/equipment/party_hat_white.yaml
@@ -1,4 +1,3 @@
-id: party_hat_white
name: white party hat
color: "255"
description: "A festive white party hat."
diff --git a/data/items/equipment/party_hat_yellow.yaml b/data/items/equipment/party_hat_yellow.yaml
index 33a85f8..0366b7f 100644
--- a/data/items/equipment/party_hat_yellow.yaml
+++ b/data/items/equipment/party_hat_yellow.yaml
@@ -1,4 +1,3 @@
-id: party_hat_yellow
name: yellow party hat
color: "226"
description: "A festive yellow party hat."
diff --git a/data/items/equipment/phoenix_necklace.yaml b/data/items/equipment/phoenix_necklace.yaml
index b53fafb..53088ef 100644
--- a/data/items/equipment/phoenix_necklace.yaml
+++ b/data/items/equipment/phoenix_necklace.yaml
@@ -1,4 +1,3 @@
-id: phoenix_necklace
name: phoenix necklace
color: "255"
description: "An enchanted diamond necklace that restores HP when you drop below 20 percent health."
diff --git a/data/items/equipment/power_amulet.yaml b/data/items/equipment/power_amulet.yaml
index bd136a4..0a9aedf 100644
--- a/data/items/equipment/power_amulet.yaml
+++ b/data/items/equipment/power_amulet.yaml
@@ -1,4 +1,3 @@
-id: power_amulet
name: Power Amulet
description: "A pendant containing a miniature power cell that augments tech efficiency."
color: "220"
diff --git a/data/items/equipment/ring_of_dueling.yaml b/data/items/equipment/ring_of_dueling.yaml
index 0c11e87..29d4af4 100644
--- a/data/items/equipment/ring_of_dueling.yaml
+++ b/data/items/equipment/ring_of_dueling.yaml
@@ -1,4 +1,3 @@
-id: ring_of_dueling
name: ring of dueling
color: "34"
description: "An enchanted emerald ring used for teleporting to dueling arenas."
diff --git a/data/items/equipment/ring_of_forging.yaml b/data/items/equipment/ring_of_forging.yaml
index d0792a1..77e8750 100644
--- a/data/items/equipment/ring_of_forging.yaml
+++ b/data/items/equipment/ring_of_forging.yaml
@@ -1,4 +1,3 @@
-id: ring_of_forging
name: ring of forging
color: "196"
description: "An enchanted ruby ring that prevents ore from failing to smelt."
diff --git a/data/items/equipment/ring_of_life.yaml b/data/items/equipment/ring_of_life.yaml
index ab0b6e3..fe8e181 100644
--- a/data/items/equipment/ring_of_life.yaml
+++ b/data/items/equipment/ring_of_life.yaml
@@ -1,4 +1,3 @@
-id: ring_of_life
name: ring of life
color: "255"
description: "An enchanted diamond ring that teleports you to safety when your HP drops critically low."
diff --git a/data/items/equipment/ring_of_recoil.yaml b/data/items/equipment/ring_of_recoil.yaml
index c143f68..ff8b433 100644
--- a/data/items/equipment/ring_of_recoil.yaml
+++ b/data/items/equipment/ring_of_recoil.yaml
@@ -1,4 +1,3 @@
-id: ring_of_recoil
name: ring of recoil
color: "39"
description: "An enchanted sapphire ring that reflects a portion of melee damage back to the attacker."
diff --git a/data/items/equipment/ruby_amulet_u.yaml b/data/items/equipment/ruby_amulet_u.yaml
index fe9f6c2..54833c4 100644
--- a/data/items/equipment/ruby_amulet_u.yaml
+++ b/data/items/equipment/ruby_amulet_u.yaml
@@ -20,6 +20,5 @@ craft:
wait: 4
xp: 85
description: An unstrung gold amulet set with a ruby.
-id: ruby_amulet_u
name: ruby amulet (u)
value: 145
diff --git a/data/items/equipment/ruby_bracelet.yaml b/data/items/equipment/ruby_bracelet.yaml
index 8721d12..2bc342a 100644
--- a/data/items/equipment/ruby_bracelet.yaml
+++ b/data/items/equipment/ruby_bracelet.yaml
@@ -21,6 +21,5 @@ craft:
xp: 80
description: A bracelet set with a ruby. Can be enchanted.
equip_slot: hands
-id: ruby_bracelet
name: ruby bracelet
value: 800
diff --git a/data/items/equipment/ruby_necklace.yaml b/data/items/equipment/ruby_necklace.yaml
index b66f3e9..563990a 100644
--- a/data/items/equipment/ruby_necklace.yaml
+++ b/data/items/equipment/ruby_necklace.yaml
@@ -21,6 +21,5 @@ craft:
xp: 75
description: A necklace set with a ruby. Can be enchanted.
equip_slot: neck
-id: ruby_necklace
name: ruby necklace
value: 850
diff --git a/data/items/equipment/ruby_ring.yaml b/data/items/equipment/ruby_ring.yaml
index 01bd441..1fc7436 100644
--- a/data/items/equipment/ruby_ring.yaml
+++ b/data/items/equipment/ruby_ring.yaml
@@ -21,6 +21,5 @@ craft:
xp: 70
description: A ring set with a ruby. Can be enchanted.
equip_slot: ring
-id: ruby_ring
name: ruby ring
value: 800
diff --git a/data/items/equipment/rune_dagger.yaml b/data/items/equipment/rune_dagger.yaml
index 2068380..dd89ee1 100644
--- a/data/items/equipment/rune_dagger.yaml
+++ b/data/items/equipment/rune_dagger.yaml
@@ -14,7 +14,6 @@ craft:
xp: 75
description: A small rune dagger.
equip_slot: main_hand
-id: rune_dagger
name: rune dagger
requirements:
accuracy: 40
diff --git a/data/items/equipment/rune_full_helm.yaml b/data/items/equipment/rune_full_helm.yaml
index 273bfab..d92c8a7 100644
--- a/data/items/equipment/rune_full_helm.yaml
+++ b/data/items/equipment/rune_full_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 150
description: A rune full helmet.
equip_slot: head
-id: rune_full_helm
name: rune full helm
requirements:
defense: 40
diff --git a/data/items/equipment/rune_med_helm.yaml b/data/items/equipment/rune_med_helm.yaml
index 1b70577..1d1ef6e 100644
--- a/data/items/equipment/rune_med_helm.yaml
+++ b/data/items/equipment/rune_med_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 75
description: A rune medium helmet.
equip_slot: head
-id: rune_med_helm
name: rune med helm
requirements:
defense: 40
diff --git a/data/items/equipment/rune_platebody.yaml b/data/items/equipment/rune_platebody.yaml
index ce63d76..e3155e5 100644
--- a/data/items/equipment/rune_platebody.yaml
+++ b/data/items/equipment/rune_platebody.yaml
@@ -13,7 +13,6 @@ craft:
xp: 375
description: A rune platebody.
equip_slot: torso
-id: rune_platebody
name: rune platebody
requirements:
defense: 40
diff --git a/data/items/equipment/rune_sword.yaml b/data/items/equipment/rune_sword.yaml
index 12daf4d..fb14c6d 100644
--- a/data/items/equipment/rune_sword.yaml
+++ b/data/items/equipment/rune_sword.yaml
@@ -14,7 +14,6 @@ craft:
xp: 75
description: A rune sword.
equip_slot: main_hand
-id: rune_sword
name: rune sword
requirements:
accuracy: 40
diff --git a/data/items/equipment/sapphire_amulet_u.yaml b/data/items/equipment/sapphire_amulet_u.yaml
index 71462c4..f1ebce4 100644
--- a/data/items/equipment/sapphire_amulet_u.yaml
+++ b/data/items/equipment/sapphire_amulet_u.yaml
@@ -20,6 +20,5 @@ craft:
wait: 4
xp: 65
description: An unstrung gold amulet set with a sapphire.
-id: sapphire_amulet_u
name: sapphire amulet (u)
value: 100
diff --git a/data/items/equipment/sapphire_bracelet.yaml b/data/items/equipment/sapphire_bracelet.yaml
index ffcf8d7..c19e091 100644
--- a/data/items/equipment/sapphire_bracelet.yaml
+++ b/data/items/equipment/sapphire_bracelet.yaml
@@ -21,6 +21,5 @@ craft:
xp: 60
description: A bracelet set with a sapphire. Can be enchanted.
equip_slot: hands
-id: sapphire_bracelet
name: sapphire bracelet
value: 200
diff --git a/data/items/equipment/sapphire_necklace.yaml b/data/items/equipment/sapphire_necklace.yaml
index f9a3576..9597826 100644
--- a/data/items/equipment/sapphire_necklace.yaml
+++ b/data/items/equipment/sapphire_necklace.yaml
@@ -21,6 +21,5 @@ craft:
xp: 55
description: A necklace set with a sapphire. Can be enchanted.
equip_slot: neck
-id: sapphire_necklace
name: sapphire necklace
value: 250
diff --git a/data/items/equipment/sapphire_ring.yaml b/data/items/equipment/sapphire_ring.yaml
index f410593..4248693 100644
--- a/data/items/equipment/sapphire_ring.yaml
+++ b/data/items/equipment/sapphire_ring.yaml
@@ -21,6 +21,5 @@ craft:
xp: 40
description: A ring set with a sapphire. Can be enchanted.
equip_slot: ring
-id: sapphire_ring
name: sapphire ring
value: 200
diff --git a/data/items/equipment/shortbow.yaml b/data/items/equipment/shortbow.yaml
index 50c77fe..59aba67 100644
--- a/data/items/equipment/shortbow.yaml
+++ b/data/items/equipment/shortbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 5
description: A shortbow.
equip_slot: main_hand
-id: shortbow
name: shortbow
speed: 4
stats:
diff --git a/data/items/equipment/shortbow_u.yaml b/data/items/equipment/shortbow_u.yaml
index 2d4e615..fa07c2b 100644
--- a/data/items/equipment/shortbow_u.yaml
+++ b/data/items/equipment/shortbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 5
description: An unstrung shortbow.
-id: shortbow_u
name: shortbow (u)
value: 5
diff --git a/data/items/equipment/spectral_visor.yaml b/data/items/equipment/spectral_visor.yaml
index 851a929..9d022fb 100644
--- a/data/items/equipment/spectral_visor.yaml
+++ b/data/items/equipment/spectral_visor.yaml
@@ -1,4 +1,3 @@
-id: spectral_visor
name: spectral visor
color: "141"
description: "A visor fitted with spectral frequency filters. Dampens psychic attacks from phantoms."
diff --git a/data/items/equipment/steel_dagger.yaml b/data/items/equipment/steel_dagger.yaml
index fc9f81f..6d1cbef 100644
--- a/data/items/equipment/steel_dagger.yaml
+++ b/data/items/equipment/steel_dagger.yaml
@@ -14,7 +14,6 @@ craft:
xp: 37
description: A small steel dagger.
equip_slot: main_hand
-id: steel_dagger
name: steel dagger
requirements:
accuracy: 5
diff --git a/data/items/equipment/steel_full_helm.yaml b/data/items/equipment/steel_full_helm.yaml
index af6a113..2442282 100644
--- a/data/items/equipment/steel_full_helm.yaml
+++ b/data/items/equipment/steel_full_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 75
description: A steel full helmet.
equip_slot: head
-id: steel_full_helm
name: steel full helm
requirements:
defense: 5
diff --git a/data/items/equipment/steel_med_helm.yaml b/data/items/equipment/steel_med_helm.yaml
index 1a6a768..5e61e24 100644
--- a/data/items/equipment/steel_med_helm.yaml
+++ b/data/items/equipment/steel_med_helm.yaml
@@ -13,7 +13,6 @@ craft:
xp: 37
description: A steel medium helmet.
equip_slot: head
-id: steel_med_helm
name: steel med helm
requirements:
defense: 5
diff --git a/data/items/equipment/steel_platebody.yaml b/data/items/equipment/steel_platebody.yaml
index 0769c55..750ac4c 100644
--- a/data/items/equipment/steel_platebody.yaml
+++ b/data/items/equipment/steel_platebody.yaml
@@ -13,7 +13,6 @@ craft:
xp: 187
description: A steel platebody.
equip_slot: torso
-id: steel_platebody
name: steel platebody
requirements:
defense: 5
diff --git a/data/items/equipment/steel_sword.yaml b/data/items/equipment/steel_sword.yaml
index 66023f4..d1616cc 100644
--- a/data/items/equipment/steel_sword.yaml
+++ b/data/items/equipment/steel_sword.yaml
@@ -14,7 +14,6 @@ craft:
xp: 37
description: A steel sword.
equip_slot: main_hand
-id: steel_sword
name: steel sword
requirements:
accuracy: 5
diff --git a/data/items/equipment/willow_longbow.yaml b/data/items/equipment/willow_longbow.yaml
index 6b9c4c0..a618a93 100644
--- a/data/items/equipment/willow_longbow.yaml
+++ b/data/items/equipment/willow_longbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 41
description: A willow longbow.
equip_slot: main_hand
-id: willow_longbow
name: willow longbow
requirements:
ranged: 20
diff --git a/data/items/equipment/willow_longbow_u.yaml b/data/items/equipment/willow_longbow_u.yaml
index 3812dfa..14e995f 100644
--- a/data/items/equipment/willow_longbow_u.yaml
+++ b/data/items/equipment/willow_longbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 41
description: An unstrung willow longbow.
-id: willow_longbow_u
name: willow longbow (u)
value: 160
diff --git a/data/items/equipment/willow_shortbow.yaml b/data/items/equipment/willow_shortbow.yaml
index 8289742..177c561 100644
--- a/data/items/equipment/willow_shortbow.yaml
+++ b/data/items/equipment/willow_shortbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 33
description: A willow shortbow.
equip_slot: main_hand
-id: willow_shortbow
name: willow shortbow
requirements:
ranged: 20
diff --git a/data/items/equipment/willow_shortbow_u.yaml b/data/items/equipment/willow_shortbow_u.yaml
index 642665a..fbb8276 100644
--- a/data/items/equipment/willow_shortbow_u.yaml
+++ b/data/items/equipment/willow_shortbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 33
description: An unstrung willow shortbow.
-id: willow_shortbow_u
name: willow shortbow (u)
value: 80
diff --git a/data/items/equipment/yew_longbow.yaml b/data/items/equipment/yew_longbow.yaml
index b550e1f..ceadae1 100644
--- a/data/items/equipment/yew_longbow.yaml
+++ b/data/items/equipment/yew_longbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 75
description: A yew longbow.
equip_slot: main_hand
-id: yew_longbow
name: yew longbow
requirements:
ranged: 40
diff --git a/data/items/equipment/yew_longbow_u.yaml b/data/items/equipment/yew_longbow_u.yaml
index 53f9f79..fbc1104 100644
--- a/data/items/equipment/yew_longbow_u.yaml
+++ b/data/items/equipment/yew_longbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 75
description: An unstrung yew longbow.
-id: yew_longbow_u
name: yew longbow (u)
value: 1000
diff --git a/data/items/equipment/yew_shortbow.yaml b/data/items/equipment/yew_shortbow.yaml
index 8d41739..efa56b3 100644
--- a/data/items/equipment/yew_shortbow.yaml
+++ b/data/items/equipment/yew_shortbow.yaml
@@ -15,7 +15,6 @@ craft:
xp: 67
description: A yew shortbow.
equip_slot: main_hand
-id: yew_shortbow
name: yew shortbow
requirements:
ranged: 40
diff --git a/data/items/equipment/yew_shortbow_u.yaml b/data/items/equipment/yew_shortbow_u.yaml
index 2096ae9..95f82cb 100644
--- a/data/items/equipment/yew_shortbow_u.yaml
+++ b/data/items/equipment/yew_shortbow_u.yaml
@@ -11,6 +11,5 @@ craft:
wait: 3
xp: 67
description: An unstrung yew shortbow.
-id: yew_shortbow_u
name: yew shortbow (u)
value: 800
diff --git a/data/items/materials/adamant_nails.yaml b/data/items/materials/adamant_nails.yaml
index 4c16f8d..662a57b 100644
--- a/data/items/materials/adamant_nails.yaml
+++ b/data/items/materials/adamant_nails.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 62
description: A set of adamant nails.
-id: adamant_nails
name: adamant nails
stackable: true
value: 16
diff --git a/data/items/materials/adamantite_bar.yaml b/data/items/materials/adamantite_bar.yaml
index 2d2dad5..8743af5 100644
--- a/data/items/materials/adamantite_bar.yaml
+++ b/data/items/materials/adamantite_bar.yaml
@@ -16,7 +16,6 @@ craft:
wait: 4
xp: 37
description: A bar of adamantite metal, extremely durable.
-id: adamantite_bar
name: adamantite bar
stackable: false
value: 200
diff --git a/data/items/materials/adamantite_ore.yaml b/data/items/materials/adamantite_ore.yaml
index fabe0da..025cbae 100644
--- a/data/items/materials/adamantite_ore.yaml
+++ b/data/items/materials/adamantite_ore.yaml
@@ -1,4 +1,3 @@
-id: adamantite_ore
name: adamantite ore
color: "120"
description: "A chunk of dark green adamantite ore."
diff --git a/data/items/materials/arachnid_enzyme.yaml b/data/items/materials/arachnid_enzyme.yaml
index 4be2f65..049cd76 100644
--- a/data/items/materials/arachnid_enzyme.yaml
+++ b/data/items/materials/arachnid_enzyme.yaml
@@ -1,4 +1,3 @@
-id: arachnid_enzyme
name: "arachnid enzyme"
color: "196"
description: "A viscous red enzyme harvested from spider egg sacs. Potent catalytic agent."
diff --git a/data/items/materials/ashes.yaml b/data/items/materials/ashes.yaml
index 0b83f77..63a3643 100644
--- a/data/items/materials/ashes.yaml
+++ b/data/items/materials/ashes.yaml
@@ -1,4 +1,3 @@
-id: ashes
name: ashes
color: "243"
description: "A pile of cold ashes. What was once ablaze is now mere dust."
diff --git a/data/items/materials/avantoe.yaml b/data/items/materials/avantoe.yaml
index 328ada2..d40c2fb 100644
--- a/data/items/materials/avantoe.yaml
+++ b/data/items/materials/avantoe.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 10
description: A clean avantoe leaf, ready for use in pharmacy.
-id: avantoe
name: avantoe
stackable: true
value: 48
diff --git a/data/items/materials/ball_of_wool.yaml b/data/items/materials/ball_of_wool.yaml
index 7c17ffe..b1ec0ca 100644
--- a/data/items/materials/ball_of_wool.yaml
+++ b/data/items/materials/ball_of_wool.yaml
@@ -13,7 +13,6 @@ craft:
wait: 3
xp: 3
description: A ball of spun wool.
-id: ball_of_wool
name: ball of wool
stackable: false
value: 5
diff --git a/data/items/materials/bones.yaml b/data/items/materials/bones.yaml
index 25097d3..69c3b7c 100644
--- a/data/items/materials/bones.yaml
+++ b/data/items/materials/bones.yaml
@@ -1,4 +1,3 @@
-id: bones
name: bones
color: "253"
description: "A pile of bones."
diff --git a/data/items/materials/bowstring.yaml b/data/items/materials/bowstring.yaml
index 4b2b18e..a7c05a8 100644
--- a/data/items/materials/bowstring.yaml
+++ b/data/items/materials/bowstring.yaml
@@ -13,6 +13,5 @@ craft:
wait: 3
xp: 15
description: A string used for stringing bows.
-id: bowstring
name: bowstring
value: 10
diff --git a/data/items/materials/bronze_bar.yaml b/data/items/materials/bronze_bar.yaml
index 0eb7316..de3aa32 100644
--- a/data/items/materials/bronze_bar.yaml
+++ b/data/items/materials/bronze_bar.yaml
@@ -16,7 +16,6 @@ craft:
wait: 4
xp: 6
description: A bar of bronze metal, smelted from copper and tin ore.
-id: bronze_bar
name: bronze bar
stackable: false
value: 4
diff --git a/data/items/materials/bronze_nails.yaml b/data/items/materials/bronze_nails.yaml
index 634c658..114accf 100644
--- a/data/items/materials/bronze_nails.yaml
+++ b/data/items/materials/bronze_nails.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 12
description: A set of bronze nails.
-id: bronze_nails
name: bronze nails
stackable: true
value: 1
diff --git a/data/items/materials/cadantine.yaml b/data/items/materials/cadantine.yaml
index 10a99f9..57e7105 100644
--- a/data/items/materials/cadantine.yaml
+++ b/data/items/materials/cadantine.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 13
description: A clean cadantine leaf, ready for use in pharmacy.
-id: cadantine
name: cadantine
stackable: true
value: 70
diff --git a/data/items/materials/chocolate_dust.yaml b/data/items/materials/chocolate_dust.yaml
index 56a6666..05f35df 100644
--- a/data/items/materials/chocolate_dust.yaml
+++ b/data/items/materials/chocolate_dust.yaml
@@ -1,4 +1,3 @@
-id: chocolate_dust
name: "chocolate dust"
color: "94"
description: "Finely ground chocolate. A surprisingly effective pharmaceutical binding agent."
diff --git a/data/items/materials/clay.yaml b/data/items/materials/clay.yaml
index 55c9b2b..9355f22 100644
--- a/data/items/materials/clay.yaml
+++ b/data/items/materials/clay.yaml
@@ -1,4 +1,3 @@
-id: clay
name: clay
color: "173"
description: "Some soft clay, useful for crafting and pottery."
diff --git a/data/items/materials/coal.yaml b/data/items/materials/coal.yaml
index 7b79f08..6e130c8 100644
--- a/data/items/materials/coal.yaml
+++ b/data/items/materials/coal.yaml
@@ -1,4 +1,3 @@
-id: coal
name: coal
color: "240"
description: "A lump of coal, useful for smelting."
diff --git a/data/items/materials/copper_ore.yaml b/data/items/materials/copper_ore.yaml
index 392879a..2c46960 100644
--- a/data/items/materials/copper_ore.yaml
+++ b/data/items/materials/copper_ore.yaml
@@ -1,4 +1,3 @@
-id: copper_ore
name: copper ore
color: "178"
description: "A chunk of copper-bearing rock. Can be smelted into a bronze bar."
diff --git a/data/items/materials/cowhide.yaml b/data/items/materials/cowhide.yaml
index 2cb192e..29e8593 100644
--- a/data/items/materials/cowhide.yaml
+++ b/data/items/materials/cowhide.yaml
@@ -1,4 +1,3 @@
-id: cowhide
name: cowhide
color: "130"
description: "A fresh cowhide. A tanner can turn this into leather."
diff --git a/data/items/materials/crushed_nest.yaml b/data/items/materials/crushed_nest.yaml
index 533d942..8cef179 100644
--- a/data/items/materials/crushed_nest.yaml
+++ b/data/items/materials/crushed_nest.yaml
@@ -1,4 +1,3 @@
-id: crushed_nest
name: "crushed nest"
color: "94"
description: "Finely crushed bird's nest material. Contains trace minerals used in advanced pharmacy."
diff --git a/data/items/materials/diamond.yaml b/data/items/materials/diamond.yaml
index 8372d79..558d4b4 100644
--- a/data/items/materials/diamond.yaml
+++ b/data/items/materials/diamond.yaml
@@ -12,7 +12,6 @@ craft:
wait: 3
xp: 108
description: A beautifully cut diamond.
-id: diamond
name: diamond
stackable: false
value: 400
diff --git a/data/items/materials/dwarf_weed.yaml b/data/items/materials/dwarf_weed.yaml
index f9d7011..9d0ea29 100644
--- a/data/items/materials/dwarf_weed.yaml
+++ b/data/items/materials/dwarf_weed.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 14
description: A clean dwarf weed leaf, ready for use in pharmacy.
-id: dwarf_weed
name: dwarf weed
stackable: true
value: 85
diff --git a/data/items/materials/ectoplasm.yaml b/data/items/materials/ectoplasm.yaml
index 8417e2d..70eca01 100644
--- a/data/items/materials/ectoplasm.yaml
+++ b/data/items/materials/ectoplasm.yaml
@@ -1,4 +1,3 @@
-id: ectoplasm
name: ectoplasm
color: "159"
description: "A shimmering residue left behind by a destroyed phantom."
diff --git a/data/items/materials/emerald.yaml b/data/items/materials/emerald.yaml
index 424e5c0..3be0b44 100644
--- a/data/items/materials/emerald.yaml
+++ b/data/items/materials/emerald.yaml
@@ -12,7 +12,6 @@ craft:
wait: 3
xp: 68
description: A beautifully cut emerald.
-id: emerald
name: emerald
stackable: false
value: 100
diff --git a/data/items/materials/eye_of_newt.yaml b/data/items/materials/eye_of_newt.yaml
index baf5ebe..bcd2663 100644
--- a/data/items/materials/eye_of_newt.yaml
+++ b/data/items/materials/eye_of_newt.yaml
@@ -1,4 +1,3 @@
-id: eye_of_newt
name: "eye of newt"
color: "215"
description: "A preserved eye of newt, suspended in synthetic fluid. Used in pharmacy."
diff --git a/data/items/materials/feather.yaml b/data/items/materials/feather.yaml
index 25afc2a..bf8e8e6 100644
--- a/data/items/materials/feather.yaml
+++ b/data/items/materials/feather.yaml
@@ -1,4 +1,3 @@
-id: feather
name: feather
color: "230"
description: "A colorful feather. Used as fly fishing bait."
diff --git a/data/items/materials/flax.yaml b/data/items/materials/flax.yaml
index 36f7082..a9c5211 100644
--- a/data/items/materials/flax.yaml
+++ b/data/items/materials/flax.yaml
@@ -1,4 +1,3 @@
-id: flax
name: flax
color: "113"
description: "A bundle of flax. Can be spun into a bowstring."
diff --git a/data/items/materials/gold_bar.yaml b/data/items/materials/gold_bar.yaml
index ae39ece..0a001e4 100644
--- a/data/items/materials/gold_bar.yaml
+++ b/data/items/materials/gold_bar.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 22
description: A bar of gold metal.
-id: gold_bar
name: gold bar
stackable: false
value: 50
diff --git a/data/items/materials/gold_ore.yaml b/data/items/materials/gold_ore.yaml
index e45ca03..9a7aac0 100644
--- a/data/items/materials/gold_ore.yaml
+++ b/data/items/materials/gold_ore.yaml
@@ -1,4 +1,3 @@
-id: gold_ore
name: gold ore
color: "220"
description: "A glittering chunk of gold ore."
diff --git a/data/items/materials/grimy_avantoe.yaml b/data/items/materials/grimy_avantoe.yaml
index 4f84679..fcc6816 100644
--- a/data/items/materials/grimy_avantoe.yaml
+++ b/data/items/materials/grimy_avantoe.yaml
@@ -1,4 +1,3 @@
-id: grimy_avantoe
name: "grimy avantoe"
color: "65"
description: "A grimy avantoe leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_cadantine.yaml b/data/items/materials/grimy_cadantine.yaml
index 0eb88f8..8509e52 100644
--- a/data/items/materials/grimy_cadantine.yaml
+++ b/data/items/materials/grimy_cadantine.yaml
@@ -1,4 +1,3 @@
-id: grimy_cadantine
name: "grimy cadantine"
color: "65"
description: "A grimy cadantine leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_dwarf_weed.yaml b/data/items/materials/grimy_dwarf_weed.yaml
index 8f24595..c488547 100644
--- a/data/items/materials/grimy_dwarf_weed.yaml
+++ b/data/items/materials/grimy_dwarf_weed.yaml
@@ -1,4 +1,3 @@
-id: grimy_dwarf_weed
name: "grimy dwarf weed"
color: "65"
description: "A grimy dwarf weed leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_guam.yaml b/data/items/materials/grimy_guam.yaml
index fb408af..98b6f3b 100644
--- a/data/items/materials/grimy_guam.yaml
+++ b/data/items/materials/grimy_guam.yaml
@@ -1,4 +1,3 @@
-id: grimy_guam
name: "grimy guam"
color: "65"
description: "A grimy guam leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_harralander.yaml b/data/items/materials/grimy_harralander.yaml
index deea973..579dc7b 100644
--- a/data/items/materials/grimy_harralander.yaml
+++ b/data/items/materials/grimy_harralander.yaml
@@ -1,4 +1,3 @@
-id: grimy_harralander
name: "grimy harralander"
color: "65"
description: "A grimy harralander leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_irit.yaml b/data/items/materials/grimy_irit.yaml
index 54f66f8..512a7dd 100644
--- a/data/items/materials/grimy_irit.yaml
+++ b/data/items/materials/grimy_irit.yaml
@@ -1,4 +1,3 @@
-id: grimy_irit
name: "grimy irit"
color: "65"
description: "A grimy irit leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_kwuarm.yaml b/data/items/materials/grimy_kwuarm.yaml
index 88630f8..40de9f2 100644
--- a/data/items/materials/grimy_kwuarm.yaml
+++ b/data/items/materials/grimy_kwuarm.yaml
@@ -1,4 +1,3 @@
-id: grimy_kwuarm
name: "grimy kwuarm"
color: "65"
description: "A grimy kwuarm leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_lantadyme.yaml b/data/items/materials/grimy_lantadyme.yaml
index 8003931..e8c6324 100644
--- a/data/items/materials/grimy_lantadyme.yaml
+++ b/data/items/materials/grimy_lantadyme.yaml
@@ -1,4 +1,3 @@
-id: grimy_lantadyme
name: "grimy lantadyme"
color: "65"
description: "A grimy lantadyme leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_marrentill.yaml b/data/items/materials/grimy_marrentill.yaml
index 7548fe5..0f1b002 100644
--- a/data/items/materials/grimy_marrentill.yaml
+++ b/data/items/materials/grimy_marrentill.yaml
@@ -1,4 +1,3 @@
-id: grimy_marrentill
name: "grimy marrentill"
color: "65"
description: "A grimy marrentill leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_ranarr.yaml b/data/items/materials/grimy_ranarr.yaml
index 1f82277..065a0de 100644
--- a/data/items/materials/grimy_ranarr.yaml
+++ b/data/items/materials/grimy_ranarr.yaml
@@ -1,4 +1,3 @@
-id: grimy_ranarr
name: "grimy ranarr"
color: "65"
description: "A grimy ranarr leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_snapdragon.yaml b/data/items/materials/grimy_snapdragon.yaml
index f15c604..2603700 100644
--- a/data/items/materials/grimy_snapdragon.yaml
+++ b/data/items/materials/grimy_snapdragon.yaml
@@ -1,4 +1,3 @@
-id: grimy_snapdragon
name: "grimy snapdragon"
color: "65"
description: "A grimy snapdragon leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_tarromin.yaml b/data/items/materials/grimy_tarromin.yaml
index 712061c..ea66203 100644
--- a/data/items/materials/grimy_tarromin.yaml
+++ b/data/items/materials/grimy_tarromin.yaml
@@ -1,4 +1,3 @@
-id: grimy_tarromin
name: "grimy tarromin"
color: "65"
description: "A grimy tarromin leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_toadflax.yaml b/data/items/materials/grimy_toadflax.yaml
index c489566..2c99aca 100644
--- a/data/items/materials/grimy_toadflax.yaml
+++ b/data/items/materials/grimy_toadflax.yaml
@@ -1,4 +1,3 @@
-id: grimy_toadflax
name: "grimy toadflax"
color: "65"
description: "A grimy toadflax leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/grimy_torstol.yaml b/data/items/materials/grimy_torstol.yaml
index 47db8d7..5791d27 100644
--- a/data/items/materials/grimy_torstol.yaml
+++ b/data/items/materials/grimy_torstol.yaml
@@ -1,4 +1,3 @@
-id: grimy_torstol
name: "grimy torstol"
color: "65"
description: "A grimy torstol leaf. It needs to be cleaned before it can be used."
diff --git a/data/items/materials/guam.yaml b/data/items/materials/guam.yaml
index 9bfe8b9..756e477 100644
--- a/data/items/materials/guam.yaml
+++ b/data/items/materials/guam.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 3
description: A clean guam leaf, ready for use in pharmacy.
-id: guam
name: guam
stackable: true
value: 3
diff --git a/data/items/materials/hard_leather.yaml b/data/items/materials/hard_leather.yaml
index e04030c..1e0bfb7 100644
--- a/data/items/materials/hard_leather.yaml
+++ b/data/items/materials/hard_leather.yaml
@@ -1,4 +1,3 @@
-id: hard_leather
name: hard leather
color: "94"
description: "A piece of hardened leather, suitable for sturdy armour."
diff --git a/data/items/materials/harralander.yaml b/data/items/materials/harralander.yaml
index 8f965e5..d3b7fc1 100644
--- a/data/items/materials/harralander.yaml
+++ b/data/items/materials/harralander.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 6
description: A clean harralander leaf, ready for use in pharmacy.
-id: harralander
name: harralander
stackable: true
value: 16
diff --git a/data/items/materials/irit.yaml b/data/items/materials/irit.yaml
index 147e28d..23930bd 100644
--- a/data/items/materials/irit.yaml
+++ b/data/items/materials/irit.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 9
description: A clean irit leaf, ready for use in pharmacy.
-id: irit
name: irit
stackable: true
value: 40
diff --git a/data/items/materials/iron_bar.yaml b/data/items/materials/iron_bar.yaml
index 5ca3635..eeb40eb 100644
--- a/data/items/materials/iron_bar.yaml
+++ b/data/items/materials/iron_bar.yaml
@@ -17,7 +17,6 @@ craft:
wait: 4
xp: 12
description: A bar of iron metal.
-id: iron_bar
name: iron bar
stackable: false
value: 12
diff --git a/data/items/materials/iron_nails.yaml b/data/items/materials/iron_nails.yaml
index 3a15192..f568ae2 100644
--- a/data/items/materials/iron_nails.yaml
+++ b/data/items/materials/iron_nails.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 25
description: A set of iron nails.
-id: iron_nails
name: iron nails
stackable: true
value: 2
diff --git a/data/items/materials/iron_ore.yaml b/data/items/materials/iron_ore.yaml
index 78e82a5..9200111 100644
--- a/data/items/materials/iron_ore.yaml
+++ b/data/items/materials/iron_ore.yaml
@@ -1,4 +1,3 @@
-id: iron_ore
name: iron ore
color: "250"
description: "A chunk of iron ore, ready for smelting."
diff --git a/data/items/materials/kwuarm.yaml b/data/items/materials/kwuarm.yaml
index 8d7a9f2..a67b6c1 100644
--- a/data/items/materials/kwuarm.yaml
+++ b/data/items/materials/kwuarm.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 11
description: A clean kwuarm leaf, ready for use in pharmacy.
-id: kwuarm
name: kwuarm
stackable: true
value: 54
diff --git a/data/items/materials/lantadyme.yaml b/data/items/materials/lantadyme.yaml
index 1444874..3f4b7ee 100644
--- a/data/items/materials/lantadyme.yaml
+++ b/data/items/materials/lantadyme.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 13
description: A clean lantadyme leaf, ready for use in pharmacy.
-id: lantadyme
name: lantadyme
stackable: true
value: 78
diff --git a/data/items/materials/leather.yaml b/data/items/materials/leather.yaml
index 82d0696..64971e4 100644
--- a/data/items/materials/leather.yaml
+++ b/data/items/materials/leather.yaml
@@ -1,4 +1,3 @@
-id: leather
name: leather
color: "130"
description: "A piece of tanned leather, ready for crafting."
diff --git a/data/items/materials/limpwurt_root.yaml b/data/items/materials/limpwurt_root.yaml
index 49dd0dc..98c7d62 100644
--- a/data/items/materials/limpwurt_root.yaml
+++ b/data/items/materials/limpwurt_root.yaml
@@ -1,4 +1,3 @@
-id: limpwurt_root
name: "limpwurt root"
color: "130"
description: "A thick, gnarled root with natural stimulant properties."
diff --git a/data/items/materials/logs.yaml b/data/items/materials/logs.yaml
index 1395d94..2010d35 100644
--- a/data/items/materials/logs.yaml
+++ b/data/items/materials/logs.yaml
@@ -1,4 +1,3 @@
-id: logs
name: logs
color: "107"
description: "Some regular logs, good for firemaking and fletching."
diff --git a/data/items/materials/magic_logs.yaml b/data/items/materials/magic_logs.yaml
index 01a804e..2cc4567 100644
--- a/data/items/materials/magic_logs.yaml
+++ b/data/items/materials/magic_logs.yaml
@@ -1,4 +1,3 @@
-id: magic_logs
name: magic logs
color: "135"
description: "Some mystical magic logs."
diff --git a/data/items/materials/mahogany_logs.yaml b/data/items/materials/mahogany_logs.yaml
index 67b9a6c..d45c696 100644
--- a/data/items/materials/mahogany_logs.yaml
+++ b/data/items/materials/mahogany_logs.yaml
@@ -1,4 +1,3 @@
-id: mahogany_logs
name: mahogany logs
color: "131"
description: "Some rich mahogany logs."
diff --git a/data/items/materials/mahogany_planks.yaml b/data/items/materials/mahogany_planks.yaml
index f24ea08..2a3fb5c 100644
--- a/data/items/materials/mahogany_planks.yaml
+++ b/data/items/materials/mahogany_planks.yaml
@@ -14,7 +14,6 @@ craft:
wait: 20
xp: 30
description: Luxurious mahogany planks with a deep reddish hue.
-id: mahogany_planks
name: mahogany planks
stackable: false
value: 120
diff --git a/data/items/materials/maple_logs.yaml b/data/items/materials/maple_logs.yaml
index 6b081e1..e132b3d 100644
--- a/data/items/materials/maple_logs.yaml
+++ b/data/items/materials/maple_logs.yaml
@@ -1,4 +1,3 @@
-id: maple_logs
name: maple logs
color: "173"
description: "Some smooth maple logs."
diff --git a/data/items/materials/marrentill.yaml b/data/items/materials/marrentill.yaml
index 771c3f3..e3e044f 100644
--- a/data/items/materials/marrentill.yaml
+++ b/data/items/materials/marrentill.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 4
description: A clean marrentill leaf, ready for use in pharmacy.
-id: marrentill
name: marrentill
stackable: true
value: 6
diff --git a/data/items/materials/mithril_bar.yaml b/data/items/materials/mithril_bar.yaml
index 55d35e9..af5c15e 100644
--- a/data/items/materials/mithril_bar.yaml
+++ b/data/items/materials/mithril_bar.yaml
@@ -16,7 +16,6 @@ craft:
wait: 4
xp: 30
description: A bar of mithril metal, light and strong.
-id: mithril_bar
name: mithril bar
stackable: false
value: 100
diff --git a/data/items/materials/mithril_nails.yaml b/data/items/materials/mithril_nails.yaml
index 4fef9d0..25457a4 100644
--- a/data/items/materials/mithril_nails.yaml
+++ b/data/items/materials/mithril_nails.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 50
description: A set of mithril nails.
-id: mithril_nails
name: mithril nails
stackable: true
value: 8
diff --git a/data/items/materials/mithril_ore.yaml b/data/items/materials/mithril_ore.yaml
index 55d8d2c..35aa648 100644
--- a/data/items/materials/mithril_ore.yaml
+++ b/data/items/materials/mithril_ore.yaml
@@ -1,4 +1,3 @@
-id: mithril_ore
name: mithril ore
color: "75"
description: "A piece of light blue mithril ore."
diff --git a/data/items/materials/oak_logs.yaml b/data/items/materials/oak_logs.yaml
index 840ebfd..1b408fc 100644
--- a/data/items/materials/oak_logs.yaml
+++ b/data/items/materials/oak_logs.yaml
@@ -1,4 +1,3 @@
-id: oak_logs
name: oak logs
color: "113"
description: "Some sturdy oak logs."
diff --git a/data/items/materials/oak_planks.yaml b/data/items/materials/oak_planks.yaml
index 9a35533..4158d2d 100644
--- a/data/items/materials/oak_planks.yaml
+++ b/data/items/materials/oak_planks.yaml
@@ -14,7 +14,6 @@ craft:
wait: 20
xp: 10
description: Sturdy oak planks, ideal for furniture.
-id: oak_planks
name: oak planks
stackable: false
value: 40
diff --git a/data/items/materials/planks.yaml b/data/items/materials/planks.yaml
index 44017b2..4a4776c 100644
--- a/data/items/materials/planks.yaml
+++ b/data/items/materials/planks.yaml
@@ -14,7 +14,6 @@ craft:
wait: 20
xp: 5
description: Some regular wooden planks, ready for construction.
-id: planks
name: planks
stackable: false
value: 20
diff --git a/data/items/materials/potato_cactus.yaml b/data/items/materials/potato_cactus.yaml
index 1178727..3e641b9 100644
--- a/data/items/materials/potato_cactus.yaml
+++ b/data/items/materials/potato_cactus.yaml
@@ -1,4 +1,3 @@
-id: potato_cactus
name: "potato cactus"
color: "106"
description: "A bulbous cactus with medicinal properties. Thrives in the arid zones."
diff --git a/data/items/materials/ranarr.yaml b/data/items/materials/ranarr.yaml
index 090df69..0b66d97 100644
--- a/data/items/materials/ranarr.yaml
+++ b/data/items/materials/ranarr.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 8
description: A clean ranarr leaf, ready for use in pharmacy.
-id: ranarr
name: ranarr
stackable: true
value: 35
diff --git a/data/items/materials/redwood_logs.yaml b/data/items/materials/redwood_logs.yaml
index 5ea1ab0..a264e7e 100644
--- a/data/items/materials/redwood_logs.yaml
+++ b/data/items/materials/redwood_logs.yaml
@@ -1,4 +1,3 @@
-id: redwood_logs
name: redwood logs
color: "131"
description: "Some rare redwood logs."
diff --git a/data/items/materials/ruby.yaml b/data/items/materials/ruby.yaml
index 4bfbc9c..b86aefc 100644
--- a/data/items/materials/ruby.yaml
+++ b/data/items/materials/ruby.yaml
@@ -12,7 +12,6 @@ craft:
wait: 3
xp: 85
description: A beautifully cut ruby.
-id: ruby
name: ruby
stackable: false
value: 200
diff --git a/data/items/materials/rune_nails.yaml b/data/items/materials/rune_nails.yaml
index ce12da1..f6dc5b2 100644
--- a/data/items/materials/rune_nails.yaml
+++ b/data/items/materials/rune_nails.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 75
description: A set of rune nails.
-id: rune_nails
name: rune nails
stackable: true
value: 30
diff --git a/data/items/materials/runite_bar.yaml b/data/items/materials/runite_bar.yaml
index b04bf92..e86b3b5 100644
--- a/data/items/materials/runite_bar.yaml
+++ b/data/items/materials/runite_bar.yaml
@@ -16,7 +16,6 @@ craft:
wait: 4
xp: 50
description: A bar of runite metal, the finest alloy known.
-id: runite_bar
name: runite bar
stackable: false
value: 500
diff --git a/data/items/materials/runite_ore.yaml b/data/items/materials/runite_ore.yaml
index 05d3248..d04a858 100644
--- a/data/items/materials/runite_ore.yaml
+++ b/data/items/materials/runite_ore.yaml
@@ -1,4 +1,3 @@
-id: runite_ore
name: runite ore
color: "87"
description: "A rare piece of light blue runite ore."
diff --git a/data/items/materials/sacred_eel.yaml b/data/items/materials/sacred_eel.yaml
index 9a03940..0fc4945 100644
--- a/data/items/materials/sacred_eel.yaml
+++ b/data/items/materials/sacred_eel.yaml
@@ -1,4 +1,3 @@
-id: sacred_eel
name: sacred eel
color: "177"
description: "A glowing eel imbued with sacred energy."
diff --git a/data/items/materials/salt.yaml b/data/items/materials/salt.yaml
index d9c1b2a..0c99900 100644
--- a/data/items/materials/salt.yaml
+++ b/data/items/materials/salt.yaml
@@ -1,4 +1,3 @@
-id: salt
name: salt
color: "255"
description: "A packet of coarse industrial salt. Used to destroy slugs."
diff --git a/data/items/materials/sapphire.yaml b/data/items/materials/sapphire.yaml
index aaa5607..17048ad 100644
--- a/data/items/materials/sapphire.yaml
+++ b/data/items/materials/sapphire.yaml
@@ -12,7 +12,6 @@ craft:
wait: 3
xp: 50
description: A beautifully cut sapphire.
-id: sapphire
name: sapphire
stackable: false
value: 50
diff --git a/data/items/materials/silver_bar.yaml b/data/items/materials/silver_bar.yaml
index 04c0982..e09c4c0 100644
--- a/data/items/materials/silver_bar.yaml
+++ b/data/items/materials/silver_bar.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 14
description: A bar of silver metal.
-id: silver_bar
name: silver bar
stackable: false
value: 20
diff --git a/data/items/materials/silver_ore.yaml b/data/items/materials/silver_ore.yaml
index 5b40ff0..e88c59e 100644
--- a/data/items/materials/silver_ore.yaml
+++ b/data/items/materials/silver_ore.yaml
@@ -1,4 +1,3 @@
-id: silver_ore
name: silver ore
color: "253"
description: "A piece of silver ore with a faint metallic sheen."
diff --git a/data/items/materials/slug_mucus.yaml b/data/items/materials/slug_mucus.yaml
index 620038a..6f9f33d 100644
--- a/data/items/materials/slug_mucus.yaml
+++ b/data/items/materials/slug_mucus.yaml
@@ -1,4 +1,3 @@
-id: slug_mucus
name: slug mucus
color: "82"
description: "A glob of toxic slug mucus. Unpleasant."
diff --git a/data/items/materials/snapdragon.yaml b/data/items/materials/snapdragon.yaml
index 8dbbac1..6cd8534 100644
--- a/data/items/materials/snapdragon.yaml
+++ b/data/items/materials/snapdragon.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 12
description: A clean snapdragon leaf, ready for use in pharmacy.
-id: snapdragon
name: snapdragon
stackable: true
value: 65
diff --git a/data/items/materials/snape_grass.yaml b/data/items/materials/snape_grass.yaml
index 59a9b30..621d2f5 100644
--- a/data/items/materials/snape_grass.yaml
+++ b/data/items/materials/snape_grass.yaml
@@ -1,4 +1,3 @@
-id: snape_grass
name: "snape grass"
color: "120"
description: "A long blade of snape grass. It crackles with faint static charge."
diff --git a/data/items/materials/soft_clay.yaml b/data/items/materials/soft_clay.yaml
index 9a4dbe5..afa2efe 100644
--- a/data/items/materials/soft_clay.yaml
+++ b/data/items/materials/soft_clay.yaml
@@ -14,7 +14,6 @@ craft:
quantity: 1
wait: 2
description: Soft, workable clay ready for shaping on a pottery wheel.
-id: soft_clay
name: soft clay
stackable: false
value: 2
diff --git a/data/items/materials/steel_bar.yaml b/data/items/materials/steel_bar.yaml
index ee300c1..fcaf55a 100644
--- a/data/items/materials/steel_bar.yaml
+++ b/data/items/materials/steel_bar.yaml
@@ -16,7 +16,6 @@ craft:
wait: 4
xp: 17
description: A bar of steel, forged from iron ore and coal.
-id: steel_bar
name: steel bar
stackable: false
value: 30
diff --git a/data/items/materials/steel_nails.yaml b/data/items/materials/steel_nails.yaml
index e9f9813..d5025c3 100644
--- a/data/items/materials/steel_nails.yaml
+++ b/data/items/materials/steel_nails.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 37
description: A set of steel nails.
-id: steel_nails
name: steel nails
stackable: true
value: 4
diff --git a/data/items/materials/stim_cell.yaml b/data/items/materials/stim_cell.yaml
index 5b2f670..bbcb277 100644
--- a/data/items/materials/stim_cell.yaml
+++ b/data/items/materials/stim_cell.yaml
@@ -13,7 +13,6 @@ craft:
wait: 4
xp: 68
description: A bright yellow energy supplement that restores stamina.
-id: stim_cell
name: stim cell
potion_bonus: 25
potion_duration: 0
diff --git a/data/items/materials/tarromin.yaml b/data/items/materials/tarromin.yaml
index 33a06c7..a927bdd 100644
--- a/data/items/materials/tarromin.yaml
+++ b/data/items/materials/tarromin.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 5
description: A clean tarromin leaf, ready for use in pharmacy.
-id: tarromin
name: tarromin
stackable: true
value: 10
diff --git a/data/items/materials/teak_logs.yaml b/data/items/materials/teak_logs.yaml
index c69f807..15e7f6d 100644
--- a/data/items/materials/teak_logs.yaml
+++ b/data/items/materials/teak_logs.yaml
@@ -1,4 +1,3 @@
-id: teak_logs
name: teak logs
color: "179"
description: "Some solid teak logs."
diff --git a/data/items/materials/teak_planks.yaml b/data/items/materials/teak_planks.yaml
index ea4d470..66b961a 100644
--- a/data/items/materials/teak_planks.yaml
+++ b/data/items/materials/teak_planks.yaml
@@ -14,7 +14,6 @@ craft:
wait: 20
xp: 20
description: Fine teak planks with a rich grain.
-id: teak_planks
name: teak planks
stackable: false
value: 80
diff --git a/data/items/materials/thread.yaml b/data/items/materials/thread.yaml
index 3a9a4f7..9c048a6 100644
--- a/data/items/materials/thread.yaml
+++ b/data/items/materials/thread.yaml
@@ -1,4 +1,3 @@
-id: thread
name: thread
color: "230"
description: "A spool of thread used for leatherworking."
diff --git a/data/items/materials/tin_ore.yaml b/data/items/materials/tin_ore.yaml
index 0ae1cd0..a7dbdd5 100644
--- a/data/items/materials/tin_ore.yaml
+++ b/data/items/materials/tin_ore.yaml
@@ -1,4 +1,3 @@
-id: tin_ore
name: tin ore
color: "253"
description: "A lump of tin ore, ready for smelting."
diff --git a/data/items/materials/toadflax.yaml b/data/items/materials/toadflax.yaml
index 24aae74..9ec6e00 100644
--- a/data/items/materials/toadflax.yaml
+++ b/data/items/materials/toadflax.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 8
description: A clean toadflax leaf, ready for use in pharmacy.
-id: toadflax
name: toadflax
stackable: true
value: 25
diff --git a/data/items/materials/torstol.yaml b/data/items/materials/torstol.yaml
index 859c279..bba12cb 100644
--- a/data/items/materials/torstol.yaml
+++ b/data/items/materials/torstol.yaml
@@ -10,7 +10,6 @@ craft:
wait: 2
xp: 15
description: A clean torstol leaf, ready for use in pharmacy.
-id: torstol
name: torstol
stackable: true
value: 100
diff --git a/data/items/materials/uncut_diamond.yaml b/data/items/materials/uncut_diamond.yaml
index cf41d70..7bce1f8 100644
--- a/data/items/materials/uncut_diamond.yaml
+++ b/data/items/materials/uncut_diamond.yaml
@@ -1,4 +1,3 @@
-id: uncut_diamond
name: uncut diamond
color: "255"
description: "An uncut diamond. Can be cut with a chisel."
diff --git a/data/items/materials/uncut_emerald.yaml b/data/items/materials/uncut_emerald.yaml
index 1ea217a..6843b4f 100644
--- a/data/items/materials/uncut_emerald.yaml
+++ b/data/items/materials/uncut_emerald.yaml
@@ -1,4 +1,3 @@
-id: uncut_emerald
name: uncut emerald
color: "83"
description: "An uncut emerald. Can be cut with a chisel."
diff --git a/data/items/materials/uncut_ruby.yaml b/data/items/materials/uncut_ruby.yaml
index dfa8188..207bc4e 100644
--- a/data/items/materials/uncut_ruby.yaml
+++ b/data/items/materials/uncut_ruby.yaml
@@ -1,4 +1,3 @@
-id: uncut_ruby
name: uncut ruby
color: "196"
description: "An uncut ruby. Can be cut with a chisel."
diff --git a/data/items/materials/uncut_sapphire.yaml b/data/items/materials/uncut_sapphire.yaml
index bf073fa..9ea4f54 100644
--- a/data/items/materials/uncut_sapphire.yaml
+++ b/data/items/materials/uncut_sapphire.yaml
@@ -1,4 +1,3 @@
-id: uncut_sapphire
name: uncut sapphire
color: "69"
description: "An uncut sapphire. Can be cut with a chisel."
diff --git a/data/items/materials/vial.yaml b/data/items/materials/vial.yaml
index 2a5260a..f15c896 100644
--- a/data/items/materials/vial.yaml
+++ b/data/items/materials/vial.yaml
@@ -1,4 +1,3 @@
-id: vial
name: "vial"
color: "253"
description: "An empty glass vial."
diff --git a/data/items/materials/white_berries.yaml b/data/items/materials/white_berries.yaml
index bdaa993..45611d5 100644
--- a/data/items/materials/white_berries.yaml
+++ b/data/items/materials/white_berries.yaml
@@ -1,4 +1,3 @@
-id: white_berries
name: "white berries"
color: "255"
description: "Pale berries from a hardy bush. They have defensive biochemical properties."
diff --git a/data/items/materials/willow_logs.yaml b/data/items/materials/willow_logs.yaml
index dbd315b..d14012b 100644
--- a/data/items/materials/willow_logs.yaml
+++ b/data/items/materials/willow_logs.yaml
@@ -1,4 +1,3 @@
-id: willow_logs
name: willow logs
color: "114"
description: "Some flexible willow logs."
diff --git a/data/items/materials/wool.yaml b/data/items/materials/wool.yaml
index f557aaf..9b97734 100644
--- a/data/items/materials/wool.yaml
+++ b/data/items/materials/wool.yaml
@@ -1,4 +1,3 @@
-id: wool
name: wool
color: "255"
description: "A tuft of sheep's wool. Can be spun into a ball of wool."
diff --git a/data/items/materials/yew_logs.yaml b/data/items/materials/yew_logs.yaml
index a5a86a2..7d4a849 100644
--- a/data/items/materials/yew_logs.yaml
+++ b/data/items/materials/yew_logs.yaml
@@ -1,4 +1,3 @@
-id: yew_logs
name: yew logs
color: "108"
description: "Some high-quality yew logs."
diff --git a/data/items/misc/birds_nest.yaml b/data/items/misc/birds_nest.yaml
index 1366b5d..9f561c6 100644
--- a/data/items/misc/birds_nest.yaml
+++ b/data/items/misc/birds_nest.yaml
@@ -1,4 +1,3 @@
-id: birds_nest
name: bird's nest
color: "179"
description: "A bird's nest. You can search it for treasure."
diff --git a/data/items/misc/christmas_cracker.yaml b/data/items/misc/christmas_cracker.yaml
index c296443..30a9832 100644
--- a/data/items/misc/christmas_cracker.yaml
+++ b/data/items/misc/christmas_cracker.yaml
@@ -1,4 +1,3 @@
-id: christmas_cracker
name: christmas cracker
color: "196"
description: "A festive party cracker. Pull it apart to see what's inside!"
diff --git a/data/items/misc/circuit_board.yaml b/data/items/misc/circuit_board.yaml
index 5b4db83..a8bd9fd 100644
--- a/data/items/misc/circuit_board.yaml
+++ b/data/items/misc/circuit_board.yaml
@@ -1,4 +1,3 @@
-id: circuit_board
name: circuit board
color: "40"
description: "A scorched circuit board salvaged from a destroyed drone."
diff --git a/data/items/misc/credit_stick.yaml b/data/items/misc/credit_stick.yaml
index 46b3050..140bff2 100644
--- a/data/items/misc/credit_stick.yaml
+++ b/data/items/misc/credit_stick.yaml
@@ -1,4 +1,3 @@
-id: credit_stick
name: credit stick
color: "220"
description: "A small electronic stick loaded with credits. You can search it to extract the credits."
diff --git a/data/items/misc/credits.yaml b/data/items/misc/credits.yaml
index 7e2de10..dbb0e61 100644
--- a/data/items/misc/credits.yaml
+++ b/data/items/misc/credits.yaml
@@ -1,4 +1,3 @@
-id: credits
name: credits
color: "220"
description: "A handful of universal credits."
diff --git a/data/items/misc/mahogany_table.yaml b/data/items/misc/mahogany_table.yaml
index c52bf86..ce3c68d 100644
--- a/data/items/misc/mahogany_table.yaml
+++ b/data/items/misc/mahogany_table.yaml
@@ -12,7 +12,6 @@ craft:
wait: 6
xp: 120
description: A luxurious mahogany table, the centerpiece of any room.
-id: mahogany_table
name: mahogany table
stackable: false
value: 240
diff --git a/data/items/misc/nutrient_bar.yaml b/data/items/misc/nutrient_bar.yaml
index d33d7de..6060ed6 100644
--- a/data/items/misc/nutrient_bar.yaml
+++ b/data/items/misc/nutrient_bar.yaml
@@ -1,4 +1,3 @@
-id: nutrient_bar
name: nutrient bar
color: "220"
description: "A compressed bar of processed nutrients. Restores a small amount of health."
diff --git a/data/items/misc/oak_shelf.yaml b/data/items/misc/oak_shelf.yaml
index cb607b2..997b1fd 100644
--- a/data/items/misc/oak_shelf.yaml
+++ b/data/items/misc/oak_shelf.yaml
@@ -12,7 +12,6 @@ craft:
wait: 6
xp: 40
description: A solid oak shelf, built to last.
-id: oak_shelf
name: oak shelf
stackable: false
value: 80
diff --git a/data/items/misc/oak_table.yaml b/data/items/misc/oak_table.yaml
index 7a715a8..7fa1d86 100644
--- a/data/items/misc/oak_table.yaml
+++ b/data/items/misc/oak_table.yaml
@@ -12,7 +12,6 @@ craft:
wait: 6
xp: 50
description: A fine oak table with carved legs.
-id: oak_table
name: oak table
stackable: false
value: 100
diff --git a/data/items/misc/pass_stub.yaml b/data/items/misc/pass_stub.yaml
index 1068190..c593dad 100644
--- a/data/items/misc/pass_stub.yaml
+++ b/data/items/misc/pass_stub.yaml
@@ -1,4 +1,3 @@
-id: pass_stub
name: pass stub
color: "222"
description: "A crumpled slip of paper stamped with the guard's seal. Grants one-time access past the gate."
diff --git a/data/items/misc/scrap.yaml b/data/items/misc/scrap.yaml
index c53932f..2effc7f 100644
--- a/data/items/misc/scrap.yaml
+++ b/data/items/misc/scrap.yaml
@@ -1,4 +1,3 @@
-id: scrap
name: scrap
color: "243"
description: "A chunk of salvaged scrap."
diff --git a/data/items/misc/teak_table.yaml b/data/items/misc/teak_table.yaml
index bc5e19b..288faf0 100644
--- a/data/items/misc/teak_table.yaml
+++ b/data/items/misc/teak_table.yaml
@@ -12,7 +12,6 @@ craft:
wait: 6
xp: 80
description: An elegant teak table with a polished surface.
-id: teak_table
name: teak table
stackable: false
value: 160
diff --git a/data/items/misc/wooden_chair.yaml b/data/items/misc/wooden_chair.yaml
index 04d39df..96ff918 100644
--- a/data/items/misc/wooden_chair.yaml
+++ b/data/items/misc/wooden_chair.yaml
@@ -12,7 +12,6 @@ craft:
wait: 6
xp: 30
description: A comfortable wooden chair with a smooth finish.
-id: wooden_chair
name: wooden chair
stackable: false
value: 35
diff --git a/data/items/misc/wooden_shelf.yaml b/data/items/misc/wooden_shelf.yaml
index c691bf4..9c4c578 100644
--- a/data/items/misc/wooden_shelf.yaml
+++ b/data/items/misc/wooden_shelf.yaml
@@ -12,7 +12,6 @@ craft:
wait: 6
xp: 20
description: A simple wooden shelf, useful for storing small items.
-id: wooden_shelf
name: wooden shelf
stackable: false
value: 40
diff --git a/data/items/misc/wooden_table.yaml b/data/items/misc/wooden_table.yaml
index a1c71d4..5b36c20 100644
--- a/data/items/misc/wooden_table.yaml
+++ b/data/items/misc/wooden_table.yaml
@@ -12,7 +12,6 @@ craft:
wait: 6
xp: 25
description: A sturdy wooden table, perfect for dining or displaying objects.
-id: wooden_table
name: wooden table
stackable: false
value: 50
diff --git a/data/items/seeds/avantoe_seed.yaml b/data/items/seeds/avantoe_seed.yaml
index fb7b427..efa707a 100644
--- a/data/items/seeds/avantoe_seed.yaml
+++ b/data/items/seeds/avantoe_seed.yaml
@@ -1,4 +1,3 @@
-id: avantoe_seed
name: avantoe seed
color: "34"
description: "An avantoe seed for planting in a herb patch."
diff --git a/data/items/seeds/cabbage_seed.yaml b/data/items/seeds/cabbage_seed.yaml
index 8a6db33..263abca 100644
--- a/data/items/seeds/cabbage_seed.yaml
+++ b/data/items/seeds/cabbage_seed.yaml
@@ -1,4 +1,3 @@
-id: cabbage_seed
name: cabbage seed
color: "71"
description: "A seed for growing cabbages."
diff --git a/data/items/seeds/cadantine_seed.yaml b/data/items/seeds/cadantine_seed.yaml
index 8326033..2458304 100644
--- a/data/items/seeds/cadantine_seed.yaml
+++ b/data/items/seeds/cadantine_seed.yaml
@@ -1,4 +1,3 @@
-id: cadantine_seed
name: cadantine seed
color: "30"
description: "A cadantine seed for planting in a herb patch."
diff --git a/data/items/seeds/dwarf_weed_seed.yaml b/data/items/seeds/dwarf_weed_seed.yaml
index c8ba6f2..b3494b1 100644
--- a/data/items/seeds/dwarf_weed_seed.yaml
+++ b/data/items/seeds/dwarf_weed_seed.yaml
@@ -1,4 +1,3 @@
-id: dwarf_weed_seed
name: dwarf weed seed
color: "100"
description: "A dwarf weed seed for planting in a herb patch."
diff --git a/data/items/seeds/guam_seed.yaml b/data/items/seeds/guam_seed.yaml
index b55e1a8..8f3b22b 100644
--- a/data/items/seeds/guam_seed.yaml
+++ b/data/items/seeds/guam_seed.yaml
@@ -1,4 +1,3 @@
-id: guam_seed
name: guam seed
color: "34"
description: "A guam seed for planting in a herb patch."
diff --git a/data/items/seeds/harralander_seed.yaml b/data/items/seeds/harralander_seed.yaml
index 5be3571..1f50916 100644
--- a/data/items/seeds/harralander_seed.yaml
+++ b/data/items/seeds/harralander_seed.yaml
@@ -1,4 +1,3 @@
-id: harralander_seed
name: harralander seed
color: "70"
description: "A harralander seed for planting in a herb patch."
diff --git a/data/items/seeds/irit_seed.yaml b/data/items/seeds/irit_seed.yaml
index 4b8bad2..61db407 100644
--- a/data/items/seeds/irit_seed.yaml
+++ b/data/items/seeds/irit_seed.yaml
@@ -1,4 +1,3 @@
-id: irit_seed
name: irit seed
color: "114"
description: "An irit seed for planting in a herb patch."
diff --git a/data/items/seeds/kwuarm_seed.yaml b/data/items/seeds/kwuarm_seed.yaml
index 053c2f3..c7ad287 100644
--- a/data/items/seeds/kwuarm_seed.yaml
+++ b/data/items/seeds/kwuarm_seed.yaml
@@ -1,4 +1,3 @@
-id: kwuarm_seed
name: kwuarm seed
color: "178"
description: "A kwuarm seed for planting in a herb patch."
diff --git a/data/items/seeds/lantadyme_seed.yaml b/data/items/seeds/lantadyme_seed.yaml
index f4be89c..8bb2cc1 100644
--- a/data/items/seeds/lantadyme_seed.yaml
+++ b/data/items/seeds/lantadyme_seed.yaml
@@ -1,4 +1,3 @@
-id: lantadyme_seed
name: lantadyme seed
color: "36"
description: "A lantadyme seed for planting in a herb patch."
diff --git a/data/items/seeds/marrentill_seed.yaml b/data/items/seeds/marrentill_seed.yaml
index 4b42353..2d518e4 100644
--- a/data/items/seeds/marrentill_seed.yaml
+++ b/data/items/seeds/marrentill_seed.yaml
@@ -1,4 +1,3 @@
-id: marrentill_seed
name: marrentill seed
color: "34"
description: "A marrentill seed for planting in a herb patch."
diff --git a/data/items/seeds/onion_seed.yaml b/data/items/seeds/onion_seed.yaml
index a1231ad..6ec432f 100644
--- a/data/items/seeds/onion_seed.yaml
+++ b/data/items/seeds/onion_seed.yaml
@@ -1,4 +1,3 @@
-id: onion_seed
name: onion seed
color: "229"
description: "A seed for growing onions."
diff --git a/data/items/seeds/potato_seed.yaml b/data/items/seeds/potato_seed.yaml
index 9daee8a..4d24343 100644
--- a/data/items/seeds/potato_seed.yaml
+++ b/data/items/seeds/potato_seed.yaml
@@ -1,4 +1,3 @@
-id: potato_seed
name: potato seed
color: "94"
description: "A seed for growing potatoes."
diff --git a/data/items/seeds/ranarr_seed.yaml b/data/items/seeds/ranarr_seed.yaml
index ef54c0d..afa84ad 100644
--- a/data/items/seeds/ranarr_seed.yaml
+++ b/data/items/seeds/ranarr_seed.yaml
@@ -1,4 +1,3 @@
-id: ranarr_seed
name: ranarr seed
color: "28"
description: "A rare herb seed with potent alchemical properties."
diff --git a/data/items/seeds/snapdragon_seed.yaml b/data/items/seeds/snapdragon_seed.yaml
index 06f2a9e..df36d01 100644
--- a/data/items/seeds/snapdragon_seed.yaml
+++ b/data/items/seeds/snapdragon_seed.yaml
@@ -1,4 +1,3 @@
-id: snapdragon_seed
name: snapdragon seed
color: "161"
description: "A bright red snapdragon seed, prized by pharma-crafters."
diff --git a/data/items/seeds/strawberry_seed.yaml b/data/items/seeds/strawberry_seed.yaml
index 8b2f45c..528c395 100644
--- a/data/items/seeds/strawberry_seed.yaml
+++ b/data/items/seeds/strawberry_seed.yaml
@@ -1,4 +1,3 @@
-id: strawberry_seed
name: strawberry seed
color: "197"
description: "A seed for growing strawberries."
diff --git a/data/items/seeds/sweetcorn_seed.yaml b/data/items/seeds/sweetcorn_seed.yaml
index d85b35b..294f29f 100644
--- a/data/items/seeds/sweetcorn_seed.yaml
+++ b/data/items/seeds/sweetcorn_seed.yaml
@@ -1,4 +1,3 @@
-id: sweetcorn_seed
name: sweetcorn seed
color: "226"
description: "A seed for growing sweetcorn."
diff --git a/data/items/seeds/tarromin_seed.yaml b/data/items/seeds/tarromin_seed.yaml
index c10483a..8438c9a 100644
--- a/data/items/seeds/tarromin_seed.yaml
+++ b/data/items/seeds/tarromin_seed.yaml
@@ -1,4 +1,3 @@
-id: tarromin_seed
name: tarromin seed
color: "34"
description: "A tarromin seed for planting in a herb patch."
diff --git a/data/items/seeds/toadflax_seed.yaml b/data/items/seeds/toadflax_seed.yaml
index 1ef6cb2..334bcd4 100644
--- a/data/items/seeds/toadflax_seed.yaml
+++ b/data/items/seeds/toadflax_seed.yaml
@@ -1,4 +1,3 @@
-id: toadflax_seed
name: toadflax seed
color: "106"
description: "A toadflax seed for planting in a herb patch."
diff --git a/data/items/seeds/tomato_seed.yaml b/data/items/seeds/tomato_seed.yaml
index c1db131..77e570d 100644
--- a/data/items/seeds/tomato_seed.yaml
+++ b/data/items/seeds/tomato_seed.yaml
@@ -1,4 +1,3 @@
-id: tomato_seed
name: tomato seed
color: "196"
description: "A seed for growing tomatoes."
diff --git a/data/items/seeds/torstol_seed.yaml b/data/items/seeds/torstol_seed.yaml
index 2dfd60c..213b679 100644
--- a/data/items/seeds/torstol_seed.yaml
+++ b/data/items/seeds/torstol_seed.yaml
@@ -1,4 +1,3 @@
-id: torstol_seed
name: torstol seed
color: "46"
description: "The rarest of herb seeds. Worth a small fortune."
diff --git a/data/items/seeds/watermelon_seed.yaml b/data/items/seeds/watermelon_seed.yaml
index 7ea59c6..02ae08c 100644
--- a/data/items/seeds/watermelon_seed.yaml
+++ b/data/items/seeds/watermelon_seed.yaml
@@ -1,4 +1,3 @@
-id: watermelon_seed
name: watermelon seed
color: "34"
description: "A seed for growing watermelons."
diff --git a/data/items/tools/adamant_axe.yaml b/data/items/tools/adamant_axe.yaml
index 0172019..adbb129 100644
--- a/data/items/tools/adamant_axe.yaml
+++ b/data/items/tools/adamant_axe.yaml
@@ -1,4 +1,3 @@
-id: adamant_axe
name: adamant axe
color: "120"
description: "A sturdy adamant axe, good for woodcutting."
diff --git a/data/items/tools/adamant_pickaxe.yaml b/data/items/tools/adamant_pickaxe.yaml
index 862f6e6..befef60 100644
--- a/data/items/tools/adamant_pickaxe.yaml
+++ b/data/items/tools/adamant_pickaxe.yaml
@@ -1,4 +1,3 @@
-id: adamant_pickaxe
name: adamant pickaxe
color: "120"
description: "A sturdy adamant pickaxe, good for mining."
diff --git a/data/items/tools/amulet_mould.yaml b/data/items/tools/amulet_mould.yaml
index a8153cb..9e3a1f9 100644
--- a/data/items/tools/amulet_mould.yaml
+++ b/data/items/tools/amulet_mould.yaml
@@ -1,4 +1,3 @@
-id: amulet_mould
name: amulet mould
color: "250"
description: "A mould for casting amulets."
diff --git a/data/items/tools/big_fishing_net.yaml b/data/items/tools/big_fishing_net.yaml
index a8b5352..7f04229 100644
--- a/data/items/tools/big_fishing_net.yaml
+++ b/data/items/tools/big_fishing_net.yaml
@@ -1,4 +1,3 @@
-id: big_fishing_net
name: big fishing net
color: "230"
description: "A larger fishing net for catching bigger fish."
diff --git a/data/items/tools/black_pickaxe.yaml b/data/items/tools/black_pickaxe.yaml
index 083ad3a..eb81e59 100644
--- a/data/items/tools/black_pickaxe.yaml
+++ b/data/items/tools/black_pickaxe.yaml
@@ -1,4 +1,3 @@
-id: black_pickaxe
name: black pickaxe
color: "240"
description: "A black pickaxe, good for mining."
diff --git a/data/items/tools/bracelet_mould.yaml b/data/items/tools/bracelet_mould.yaml
index 78bc099..ff4d109 100644
--- a/data/items/tools/bracelet_mould.yaml
+++ b/data/items/tools/bracelet_mould.yaml
@@ -1,4 +1,3 @@
-id: bracelet_mould
name: bracelet mould
color: "250"
description: "A mould for casting bracelets."
diff --git a/data/items/tools/bronze_axe.yaml b/data/items/tools/bronze_axe.yaml
index 84b2762..8e85378 100644
--- a/data/items/tools/bronze_axe.yaml
+++ b/data/items/tools/bronze_axe.yaml
@@ -1,4 +1,3 @@
-id: bronze_axe
name: bronze axe
color: "178"
description: "A sturdy bronze axe, good for woodcutting."
diff --git a/data/items/tools/bronze_pickaxe.yaml b/data/items/tools/bronze_pickaxe.yaml
index b581fc0..0d020ff 100644
--- a/data/items/tools/bronze_pickaxe.yaml
+++ b/data/items/tools/bronze_pickaxe.yaml
@@ -1,4 +1,3 @@
-id: bronze_pickaxe
name: bronze pickaxe
color: "178"
description: "A sturdy bronze pickaxe, good for mining."
diff --git a/data/items/tools/chisel.yaml b/data/items/tools/chisel.yaml
index a99c828..3beabac 100644
--- a/data/items/tools/chisel.yaml
+++ b/data/items/tools/chisel.yaml
@@ -1,4 +1,3 @@
-id: chisel
name: chisel
color: "250"
description: "A chisel used for cutting gems."
diff --git a/data/items/tools/dragon_pickaxe.yaml b/data/items/tools/dragon_pickaxe.yaml
index 20b43b1..5a2164f 100644
--- a/data/items/tools/dragon_pickaxe.yaml
+++ b/data/items/tools/dragon_pickaxe.yaml
@@ -1,4 +1,3 @@
-id: dragon_pickaxe
name: dragon pickaxe
color: "196"
description: "A powerful dragon pickaxe."
diff --git a/data/items/tools/empty_bucket.yaml b/data/items/tools/empty_bucket.yaml
index 6debb02..df5a691 100644
--- a/data/items/tools/empty_bucket.yaml
+++ b/data/items/tools/empty_bucket.yaml
@@ -1,4 +1,3 @@
-id: empty_bucket
name: empty bucket
color: "137"
description: "An empty wooden bucket."
diff --git a/data/items/tools/empty_jug.yaml b/data/items/tools/empty_jug.yaml
index c6774a5..2a6bc4e 100644
--- a/data/items/tools/empty_jug.yaml
+++ b/data/items/tools/empty_jug.yaml
@@ -1,4 +1,3 @@
-id: empty_jug
name: empty jug
color: "137"
description: "An empty ceramic jug."
diff --git a/data/items/tools/empty_pot.yaml b/data/items/tools/empty_pot.yaml
index b780af1..efe7a9e 100644
--- a/data/items/tools/empty_pot.yaml
+++ b/data/items/tools/empty_pot.yaml
@@ -18,7 +18,6 @@ craft:
wait: 4
xp: 6
description: An empty clay pot.
-id: empty_pot
name: empty pot
stackable: false
value: 1
diff --git a/data/items/tools/firesteel.yaml b/data/items/tools/firesteel.yaml
index b3f9302..fdb4105 100644
--- a/data/items/tools/firesteel.yaml
+++ b/data/items/tools/firesteel.yaml
@@ -1,4 +1,3 @@
-id: firesteel
name: firesteel
color: "250"
description: "A rugged firesteel that never wears out."
diff --git a/data/items/tools/fishing_bait.yaml b/data/items/tools/fishing_bait.yaml
index 2336a7d..f7195e1 100644
--- a/data/items/tools/fishing_bait.yaml
+++ b/data/items/tools/fishing_bait.yaml
@@ -1,4 +1,3 @@
-id: fishing_bait
name: fishing bait
color: "222"
description: "A handful of wriggling bait. Used with a fishing rod."
diff --git a/data/items/tools/fishing_rod.yaml b/data/items/tools/fishing_rod.yaml
index a48c0a1..d732b59 100644
--- a/data/items/tools/fishing_rod.yaml
+++ b/data/items/tools/fishing_rod.yaml
@@ -1,4 +1,3 @@
-id: fishing_rod
name: fishing rod
color: "107"
description: "A simple fishing rod. Use with fishing bait."
diff --git a/data/items/tools/fly_fishing_rod.yaml b/data/items/tools/fly_fishing_rod.yaml
index c0f3f78..202513d 100644
--- a/data/items/tools/fly_fishing_rod.yaml
+++ b/data/items/tools/fly_fishing_rod.yaml
@@ -1,4 +1,3 @@
-id: fly_fishing_rod
name: fly fishing rod
color: "107"
description: "A flexible rod for fly fishing with artificial flies."
diff --git a/data/items/tools/hammer.yaml b/data/items/tools/hammer.yaml
index 74302a4..0db22bb 100644
--- a/data/items/tools/hammer.yaml
+++ b/data/items/tools/hammer.yaml
@@ -1,4 +1,3 @@
-id: hammer
name: hammer
color: "250"
description: "A sturdy hammer for smithing metal on an anvil."
diff --git a/data/items/tools/harpoon.yaml b/data/items/tools/harpoon.yaml
index 1412d5c..6679592 100644
--- a/data/items/tools/harpoon.yaml
+++ b/data/items/tools/harpoon.yaml
@@ -1,4 +1,3 @@
-id: harpoon
name: harpoon
color: "250"
description: "A barbed harpoon for spearing large fish."
diff --git a/data/items/tools/iron_axe.yaml b/data/items/tools/iron_axe.yaml
index 3f989ca..b00474f 100644
--- a/data/items/tools/iron_axe.yaml
+++ b/data/items/tools/iron_axe.yaml
@@ -1,4 +1,3 @@
-id: iron_axe
name: iron axe
color: "250"
description: "A sturdy iron axe, good for woodcutting."
diff --git a/data/items/tools/iron_pickaxe.yaml b/data/items/tools/iron_pickaxe.yaml
index d120fde..f2869dc 100644
--- a/data/items/tools/iron_pickaxe.yaml
+++ b/data/items/tools/iron_pickaxe.yaml
@@ -1,4 +1,3 @@
-id: iron_pickaxe
name: iron pickaxe
color: "250"
description: "A sturdy iron pickaxe, good for mining."
diff --git a/data/items/tools/knife.yaml b/data/items/tools/knife.yaml
index fddf120..0f8e7dc 100644
--- a/data/items/tools/knife.yaml
+++ b/data/items/tools/knife.yaml
@@ -1,4 +1,3 @@
-id: knife
name: knife
color: "250"
description: "A small knife used for cutting wood and fletching."
diff --git a/data/items/tools/lighter.yaml b/data/items/tools/lighter.yaml
index 567f42e..7dbc7b5 100644
--- a/data/items/tools/lighter.yaml
+++ b/data/items/tools/lighter.yaml
@@ -1,4 +1,3 @@
-id: lighter
name: lighter
color: "81"
description: "A reliable butane lighter."
diff --git a/data/items/tools/lobster_pot.yaml b/data/items/tools/lobster_pot.yaml
index 79771c1..3c31891 100644
--- a/data/items/tools/lobster_pot.yaml
+++ b/data/items/tools/lobster_pot.yaml
@@ -1,4 +1,3 @@
-id: lobster_pot
name: lobster pot
color: "250"
description: "A wire cage for trapping lobsters."
diff --git a/data/items/tools/matches.yaml b/data/items/tools/matches.yaml
index d816cbc..a7c507e 100644
--- a/data/items/tools/matches.yaml
+++ b/data/items/tools/matches.yaml
@@ -1,4 +1,3 @@
-id: matches
name: matches
color: "196"
description: "A small box of matches for starting fires."
diff --git a/data/items/tools/mithril_axe.yaml b/data/items/tools/mithril_axe.yaml
index f153f12..bd0616d 100644
--- a/data/items/tools/mithril_axe.yaml
+++ b/data/items/tools/mithril_axe.yaml
@@ -1,4 +1,3 @@
-id: mithril_axe
name: mithril axe
color: "75"
description: "A sturdy mithril axe, good for woodcutting."
diff --git a/data/items/tools/mithril_pickaxe.yaml b/data/items/tools/mithril_pickaxe.yaml
index 81da209..239ffad 100644
--- a/data/items/tools/mithril_pickaxe.yaml
+++ b/data/items/tools/mithril_pickaxe.yaml
@@ -1,4 +1,3 @@
-id: mithril_pickaxe
name: mithril pickaxe
color: "75"
description: "A sturdy mithril pickaxe, good for mining."
diff --git a/data/items/tools/necklace_mould.yaml b/data/items/tools/necklace_mould.yaml
index bc4df45..05abf9a 100644
--- a/data/items/tools/necklace_mould.yaml
+++ b/data/items/tools/necklace_mould.yaml
@@ -1,4 +1,3 @@
-id: necklace_mould
name: necklace mould
color: "250"
description: "A mould for casting necklaces."
diff --git a/data/items/tools/needle.yaml b/data/items/tools/needle.yaml
index 5f53bf3..aa88d31 100644
--- a/data/items/tools/needle.yaml
+++ b/data/items/tools/needle.yaml
@@ -1,4 +1,3 @@
-id: needle
name: needle
color: "250"
description: "A needle for crafting leather goods."
diff --git a/data/items/tools/plant_pot.yaml b/data/items/tools/plant_pot.yaml
index abe9610..7925d4f 100644
--- a/data/items/tools/plant_pot.yaml
+++ b/data/items/tools/plant_pot.yaml
@@ -18,6 +18,5 @@ craft:
wait: 4
xp: 18
description: A clay plant pot for growing plants.
-id: plant_pot
name: plant pot
value: 5
diff --git a/data/items/tools/rake.yaml b/data/items/tools/rake.yaml
index 5949626..90fe183 100644
--- a/data/items/tools/rake.yaml
+++ b/data/items/tools/rake.yaml
@@ -1,4 +1,3 @@
-id: rake
name: rake
color: "94"
description: "A sturdy rake for clearing weeds and dead plants from farming patches."
diff --git a/data/items/tools/ring_mould.yaml b/data/items/tools/ring_mould.yaml
index d7846c8..41c3a5e 100644
--- a/data/items/tools/ring_mould.yaml
+++ b/data/items/tools/ring_mould.yaml
@@ -1,4 +1,3 @@
-id: ring_mould
name: ring mould
color: "250"
description: "A mould for casting rings."
diff --git a/data/items/tools/rune_axe.yaml b/data/items/tools/rune_axe.yaml
index bc99732..daadcb2 100644
--- a/data/items/tools/rune_axe.yaml
+++ b/data/items/tools/rune_axe.yaml
@@ -1,4 +1,3 @@
-id: rune_axe
name: rune axe
color: "87"
description: "A sturdy rune axe, good for woodcutting."
diff --git a/data/items/tools/rune_pickaxe.yaml b/data/items/tools/rune_pickaxe.yaml
index 7691513..2eafd4d 100644
--- a/data/items/tools/rune_pickaxe.yaml
+++ b/data/items/tools/rune_pickaxe.yaml
@@ -1,4 +1,3 @@
-id: rune_pickaxe
name: rune pickaxe
color: "87"
description: "A sturdy rune pickaxe, good for mining."
diff --git a/data/items/tools/saw.yaml b/data/items/tools/saw.yaml
index 4a7ad6a..a0f71d2 100644
--- a/data/items/tools/saw.yaml
+++ b/data/items/tools/saw.yaml
@@ -1,4 +1,3 @@
-id: saw
name: saw
tool_type: saw
color: "152"
diff --git a/data/items/tools/shears.yaml b/data/items/tools/shears.yaml
index 4166be3..28bf885 100644
--- a/data/items/tools/shears.yaml
+++ b/data/items/tools/shears.yaml
@@ -1,4 +1,3 @@
-id: shears
name: shears
color: "250"
description: "A pair of shears for shearing sheep."
diff --git a/data/items/tools/small_fishing_net.yaml b/data/items/tools/small_fishing_net.yaml
index 9e91f8f..3aabddb 100644
--- a/data/items/tools/small_fishing_net.yaml
+++ b/data/items/tools/small_fishing_net.yaml
@@ -1,4 +1,3 @@
-id: small_fishing_net
name: small fishing net
color: "230"
description: "A small hand-held fishing net."
diff --git a/data/items/tools/spade.yaml b/data/items/tools/spade.yaml
index 7d0b465..8f35940 100644
--- a/data/items/tools/spade.yaml
+++ b/data/items/tools/spade.yaml
@@ -1,4 +1,3 @@
-id: spade
name: spade
color: "241"
description: "A metal spade used for planting seeds and harvesting crops."
diff --git a/data/items/tools/steel_axe.yaml b/data/items/tools/steel_axe.yaml
index 1f62e33..287cf49 100644
--- a/data/items/tools/steel_axe.yaml
+++ b/data/items/tools/steel_axe.yaml
@@ -1,4 +1,3 @@
-id: steel_axe
name: steel axe
color: "253"
description: "A sturdy steel axe, good for woodcutting."
diff --git a/data/items/tools/steel_pickaxe.yaml b/data/items/tools/steel_pickaxe.yaml
index 560da07..b256b50 100644
--- a/data/items/tools/steel_pickaxe.yaml
+++ b/data/items/tools/steel_pickaxe.yaml
@@ -1,4 +1,3 @@
-id: steel_pickaxe
name: steel pickaxe
color: "253"
description: "A sturdy steel pickaxe, good for mining."
diff --git a/data/items/tools/unfired_pie_dish.yaml b/data/items/tools/unfired_pie_dish.yaml
index 0b3049b..f7d56a7 100644
--- a/data/items/tools/unfired_pie_dish.yaml
+++ b/data/items/tools/unfired_pie_dish.yaml
@@ -13,6 +13,5 @@ craft:
wait: 4
xp: 15
description: An unfired clay pie dish. It needs to be fired in a pottery oven.
-id: unfired_pie_dish
name: unfired pie dish
value: 1
diff --git a/data/items/tools/unfired_plant_pot.yaml b/data/items/tools/unfired_plant_pot.yaml
index 943cd67..5eeb3d2 100644
--- a/data/items/tools/unfired_plant_pot.yaml
+++ b/data/items/tools/unfired_plant_pot.yaml
@@ -13,6 +13,5 @@ craft:
wait: 4
xp: 18
description: An unfired clay plant pot. It needs to be fired in a pottery oven.
-id: unfired_plant_pot
name: unfired plant pot
value: 1
diff --git a/data/items/tools/unfired_pot.yaml b/data/items/tools/unfired_pot.yaml
index 5c6b446..7170179 100644
--- a/data/items/tools/unfired_pot.yaml
+++ b/data/items/tools/unfired_pot.yaml
@@ -13,6 +13,5 @@ craft:
wait: 4
xp: 6
description: An unfired clay pot. It needs to be fired in a pottery oven.
-id: unfired_pot
name: unfired pot
value: 1
diff --git a/data/items/tools/watering_can.yaml b/data/items/tools/watering_can.yaml
index 4a75de9..8b0aa53 100644
--- a/data/items/tools/watering_can.yaml
+++ b/data/items/tools/watering_can.yaml
@@ -1,4 +1,3 @@
-id: watering_can
name: watering can
color: "39"
description: "A watering can for hydrating farming patches. Watering eliminates disease risk."
diff --git a/data/mobs/ancient_construct.yaml b/data/mobs/ancient_construct.yaml
index 530146a..190e8c2 100644
--- a/data/mobs/ancient_construct.yaml
+++ b/data/mobs/ancient_construct.yaml
@@ -1,4 +1,3 @@
-id: ancient_construct
name: ancient construct
description: "An impossibly old machine from before the regression, still operational. Its design is alien even by modern standards, covered in glowing runes that predate recorded history."
attack: 58
diff --git a/data/mobs/bandit.yaml b/data/mobs/bandit.yaml
index 7efb481..51e4b8e 100644
--- a/data/mobs/bandit.yaml
+++ b/data/mobs/bandit.yaml
@@ -1,4 +1,3 @@
-id: bandit
name: bandit
description: "A scrappy outlaw with a cybernetic arm and patched armor. He eyes you with predatory intent."
attack: 10
diff --git a/data/mobs/bioengineer.yaml b/data/mobs/bioengineer.yaml
index 5c67643..4761991 100644
--- a/data/mobs/bioengineer.yaml
+++ b/data/mobs/bioengineer.yaml
@@ -1,4 +1,3 @@
-id: bioengineer
name: Bioengineer
description: "A lab-coated scientist carrying a satchel of genetically modified seeds. Her pockets are stuffed with rare specimens."
combat_descriptions:
diff --git a/data/mobs/client.yaml b/data/mobs/client.yaml
index 8e8ba9b..678ba41 100644
--- a/data/mobs/client.yaml
+++ b/data/mobs/client.yaml
@@ -3,7 +3,6 @@ attack: 1
defense: 1
description: A shadowy figure in a dark coat. They speak in clipped, measured tones and seem to know everything about every creature in the sector.
hp: 100
-id: client
idle_descriptions:
- reviews a holographic dossier
- marks a location on a worn star chart
diff --git a/data/mobs/corrupted_scientist.yaml b/data/mobs/corrupted_scientist.yaml
index cb7461e..2083c03 100644
--- a/data/mobs/corrupted_scientist.yaml
+++ b/data/mobs/corrupted_scientist.yaml
@@ -1,4 +1,3 @@
-id: corrupted_scientist
name: corrupted scientist
description: "A researcher whose mind was consumed by their own experiments. Energy crackles around their fingertips and their lab coat is singed and tattered."
attack: 1
diff --git a/data/mobs/cow.yaml b/data/mobs/cow.yaml
index bf97360..7f1ee3c 100644
--- a/data/mobs/cow.yaml
+++ b/data/mobs/cow.yaml
@@ -1,4 +1,3 @@
-id: cow
name: cow
description: "A placid dairy cow, chewing cud."
attack: 1
diff --git a/data/mobs/crawler.yaml b/data/mobs/crawler.yaml
index 6253836..9021c51 100644
--- a/data/mobs/crawler.yaml
+++ b/data/mobs/crawler.yaml
@@ -1,4 +1,3 @@
-id: crawler
name: crawler
description: "A heavily armored bio-mechanical creature with a chitinous exoskeleton. Its regenerative biology prevents death unless dissolved with acid."
assassin_level: 30
diff --git a/data/mobs/drone.yaml b/data/mobs/drone.yaml
index 7737294..5ac6552 100644
--- a/data/mobs/drone.yaml
+++ b/data/mobs/drone.yaml
@@ -1,4 +1,3 @@
-id: drone
name: drone
description: "A malfunctioning security drone crackling with electrical discharge. Its attacks are especially dangerous to anyone not wearing insulated gloves."
assassin_level: 15
diff --git a/data/mobs/elite_synth.yaml b/data/mobs/elite_synth.yaml
index e858b03..b095716 100644
--- a/data/mobs/elite_synth.yaml
+++ b/data/mobs/elite_synth.yaml
@@ -1,4 +1,3 @@
-id: elite_synth
name: elite synth
description: "A sleek combat android with glowing blue optics and a compact energy weapon. Its chassis is polished alloy and its movements are disturbingly fluid."
attack: 1
diff --git a/data/mobs/enforcer_bot.yaml b/data/mobs/enforcer_bot.yaml
index 28508f7..78150c3 100644
--- a/data/mobs/enforcer_bot.yaml
+++ b/data/mobs/enforcer_bot.yaml
@@ -1,4 +1,3 @@
-id: enforcer_bot
name: enforcer bot
description: "A heavy riot control automaton with impact shields and a shock baton. It moves with deliberate, crushing steps."
attack: 30
diff --git a/data/mobs/estate_broker.yaml b/data/mobs/estate_broker.yaml
index 451ffe8..3196012 100644
--- a/data/mobs/estate_broker.yaml
+++ b/data/mobs/estate_broker.yaml
@@ -1,6 +1,5 @@
color: "227"
description: A sharply-dressed real estate agent with a datapad and a practiced smile.
-id: estate_broker
idle: The estate broker flashes a professional smile.
name: estate broker
talk:
diff --git a/data/mobs/farmer.yaml b/data/mobs/farmer.yaml
index 65fb430..591f1a3 100644
--- a/data/mobs/farmer.yaml
+++ b/data/mobs/farmer.yaml
@@ -1,4 +1,3 @@
-id: farmer
name: Farmer
description: "A weathered farmer in muddy overalls, pockets bulging with seeds."
combat_descriptions:
diff --git a/data/mobs/feral_cyborg.yaml b/data/mobs/feral_cyborg.yaml
index 1b01d1b..8b30cc3 100644
--- a/data/mobs/feral_cyborg.yaml
+++ b/data/mobs/feral_cyborg.yaml
@@ -1,4 +1,3 @@
-id: feral_cyborg
name: feral cyborg
description: "A heavily augmented human whose implants have driven them to madness. Razor-sharp blades extend from their forearms and their optical implant glows red."
attack: 34
diff --git a/data/mobs/general_store_clerk.yaml b/data/mobs/general_store_clerk.yaml
index 518ffba..351b4c0 100644
--- a/data/mobs/general_store_clerk.yaml
+++ b/data/mobs/general_store_clerk.yaml
@@ -5,7 +5,6 @@ crush_defense: 0
defense: 1
description: A friendly merchant with a tidy apron, standing behind a well-stocked counter.
hp: 50
-id: general_store_clerk
idle_descriptions:
- arranges items on the shelves
- polishes the counter
diff --git a/data/mobs/ghoul.yaml b/data/mobs/ghoul.yaml
index cd50a7e..ae8fed6 100644
--- a/data/mobs/ghoul.yaml
+++ b/data/mobs/ghoul.yaml
@@ -1,4 +1,3 @@
-id: ghoul
name: ghoul
description: "A radiation-scarred crew member, barely recognizable as human. Its flesh glows faintly and its eyes are hollow sockets."
attack: 22
diff --git a/data/mobs/goblin.yaml b/data/mobs/goblin.yaml
index 0d09654..a02c112 100644
--- a/data/mobs/goblin.yaml
+++ b/data/mobs/goblin.yaml
@@ -1,4 +1,3 @@
-id: goblin
name: goblin
description: "A small green-skinned goblin with a rusty blade."
attack: 1
diff --git a/data/mobs/greater_drone.yaml b/data/mobs/greater_drone.yaml
index d11827f..11cf8e2 100644
--- a/data/mobs/greater_drone.yaml
+++ b/data/mobs/greater_drone.yaml
@@ -1,4 +1,3 @@
-id: greater_drone
name: greater drone
description: "A large, heavily armored drone with multiple energy emitters. Red warning lights pulse along its hull."
attack: 1
diff --git a/data/mobs/guard.yaml b/data/mobs/guard.yaml
index b834d9b..46c235c 100644
--- a/data/mobs/guard.yaml
+++ b/data/mobs/guard.yaml
@@ -6,7 +6,6 @@ crush_defense: 10
defense: 5
description: A stern-looking guard in weathered armor.
hp: 30
-id: guard
idle_descriptions:
- scans the area with a watchful eye
- adjusts the grip on his weapon
diff --git a/data/mobs/heavy_mech.yaml b/data/mobs/heavy_mech.yaml
index 7cc1028..e2f5f5a 100644
--- a/data/mobs/heavy_mech.yaml
+++ b/data/mobs/heavy_mech.yaml
@@ -1,4 +1,3 @@
-id: heavy_mech
name: heavy mech
description: "A lumbering assault mech with layered armor plating and a rotary cannon arm. Steam vents from its exhaust ports with each step."
attack: 40
diff --git a/data/mobs/iron_sentinel.yaml b/data/mobs/iron_sentinel.yaml
index 5026e17..bf8b9b5 100644
--- a/data/mobs/iron_sentinel.yaml
+++ b/data/mobs/iron_sentinel.yaml
@@ -1,4 +1,3 @@
-id: iron_sentinel
name: iron sentinel
description: "A massive bipedal automaton forged from pre-regression alloys. Its joints grind with each deliberate step."
attack: 25
diff --git a/data/mobs/lesser_drone.yaml b/data/mobs/lesser_drone.yaml
index e49e946..c9e50a5 100644
--- a/data/mobs/lesser_drone.yaml
+++ b/data/mobs/lesser_drone.yaml
@@ -1,4 +1,3 @@
-id: lesser_drone
name: lesser drone
description: "A floating metallic drone with a pulsing energy core. Its surface crackles with electric discharge."
attack: 1
diff --git a/data/mobs/man.yaml b/data/mobs/man.yaml
index e710349..8478f41 100644
--- a/data/mobs/man.yaml
+++ b/data/mobs/man.yaml
@@ -1,4 +1,3 @@
-id: man
name: man
description: "A shabby-looking man loitering in the town square."
combat_descriptions:
diff --git a/data/mobs/molten_elemental.yaml b/data/mobs/molten_elemental.yaml
index 3c02979..9c46ccb 100644
--- a/data/mobs/molten_elemental.yaml
+++ b/data/mobs/molten_elemental.yaml
@@ -1,4 +1,3 @@
-id: molten_elemental
name: molten elemental
description: "A flowing mass of liquid metal and superheated slag, roughly humanoid. The air around it shimmers with heat and droplets of molten alloy drip to the floor."
attack: 48
diff --git a/data/mobs/moss_giant.yaml b/data/mobs/moss_giant.yaml
index 0499572..f19f0a3 100644
--- a/data/mobs/moss_giant.yaml
+++ b/data/mobs/moss_giant.yaml
@@ -1,4 +1,3 @@
-id: moss_giant
name: moss giant
description: "A towering creature covered in moss and vines, its rocky skin dripping with moisture."
attack: 12
diff --git a/data/mobs/mutant_rat.yaml b/data/mobs/mutant_rat.yaml
index 38c5624..7836ef9 100644
--- a/data/mobs/mutant_rat.yaml
+++ b/data/mobs/mutant_rat.yaml
@@ -1,4 +1,3 @@
-id: mutant_rat
name: mutant rat
description: "A bloated rodent with glowing green eyes and exposed muscle tissue. Bio-engineering runoff has made it unnaturally aggressive."
attack: 13
diff --git a/data/mobs/newbie_trainer.yaml b/data/mobs/newbie_trainer.yaml
index 6da23a4..3897dba 100644
--- a/data/mobs/newbie_trainer.yaml
+++ b/data/mobs/newbie_trainer.yaml
@@ -1,4 +1,3 @@
-id: newbie_trainer
name: Newbie Trainer
description: "A friendly-looking instructor ready to help new adventurers."
unique: true
diff --git a/data/mobs/phantom.yaml b/data/mobs/phantom.yaml
index d9953fa..d871b76 100644
--- a/data/mobs/phantom.yaml
+++ b/data/mobs/phantom.yaml
@@ -1,4 +1,3 @@
-id: phantom
name: phantom
description: "A semi-transparent entity that phases in and out of visible light. Its psychic attacks are devastating to anyone without a spectral visor."
assassin_level: 45
diff --git a/data/mobs/plasma_wraith.yaml b/data/mobs/plasma_wraith.yaml
index adfc83a..c4ced2b 100644
--- a/data/mobs/plasma_wraith.yaml
+++ b/data/mobs/plasma_wraith.yaml
@@ -1,4 +1,3 @@
-id: plasma_wraith
name: plasma wraith
description: "A shimmering entity of contained plasma, vaguely humanoid in shape. It radiates intense heat and hums with barely contained energy."
attack: 1
diff --git a/data/mobs/psionic_entity.yaml b/data/mobs/psionic_entity.yaml
index f1e3b7b..1c518bf 100644
--- a/data/mobs/psionic_entity.yaml
+++ b/data/mobs/psionic_entity.yaml
@@ -1,4 +1,3 @@
-id: psionic_entity
name: psionic entity
description: "A barely visible distortion in the air, only detectable by the pressure it exerts on your mind. When it focuses, you see a shimmering outline of something vast and ancient."
attack: 1
diff --git a/data/mobs/rat.yaml b/data/mobs/rat.yaml
index c1f8466..4265674 100644
--- a/data/mobs/rat.yaml
+++ b/data/mobs/rat.yaml
@@ -1,4 +1,3 @@
-id: rat
name: rat
description: "A large, mangy rat with beady red eyes."
attack: 1
diff --git a/data/mobs/sawmill_operator.yaml b/data/mobs/sawmill_operator.yaml
index 03416ab..81521bd 100644
--- a/data/mobs/sawmill_operator.yaml
+++ b/data/mobs/sawmill_operator.yaml
@@ -1,6 +1,5 @@
color: "186"
description: A burly worker in a thick apron, covered in sawdust. He operates the industrial sawmill.
-id: sawmill_operator
idle: The sawmill operator wipes sawdust from his goggles.
name: sawmill operator
talk:
diff --git a/data/mobs/scrap_bot.yaml b/data/mobs/scrap_bot.yaml
index 560bffd..a8b34d8 100644
--- a/data/mobs/scrap_bot.yaml
+++ b/data/mobs/scrap_bot.yaml
@@ -1,4 +1,3 @@
-id: scrap_bot
name: scrap bot
description: "A malfunctioning maintenance robot that has gone rogue. Its chassis is covered in dents and rust, and one optical sensor flickers erratically."
attack: 15
diff --git a/data/mobs/security_turret.yaml b/data/mobs/security_turret.yaml
index dca9e4a..9929106 100644
--- a/data/mobs/security_turret.yaml
+++ b/data/mobs/security_turret.yaml
@@ -1,4 +1,3 @@
-id: security_turret
name: security turret
description: "A ceiling-mounted auto-turret with twin barrels and a red targeting laser. It tracks you with mechanical precision."
attack: 1
diff --git a/data/mobs/skeleton.yaml b/data/mobs/skeleton.yaml
index d3b1440..ba82afc 100644
--- a/data/mobs/skeleton.yaml
+++ b/data/mobs/skeleton.yaml
@@ -1,4 +1,3 @@
-id: skeleton
name: skeleton
description: "An animated pile of bones, held together by dark energy."
attack: 8
diff --git a/data/mobs/slug.yaml b/data/mobs/slug.yaml
index dd88cfc..64082ec 100644
--- a/data/mobs/slug.yaml
+++ b/data/mobs/slug.yaml
@@ -1,4 +1,3 @@
-id: slug
name: slug
description: "A bloated, translucent slug the size of a dog. Its skin glistens with toxic mucus. It cannot be killed by conventional means — only salt can destroy it."
assassin_level: 1
diff --git a/data/mobs/solar_panel_frame.yaml b/data/mobs/solar_panel_frame.yaml
index 4270bda..90269f2 100644
--- a/data/mobs/solar_panel_frame.yaml
+++ b/data/mobs/solar_panel_frame.yaml
@@ -1,4 +1,3 @@
-id: solar_panel_frame
name: solar panel frame
description: "A half-assembled photovoltaic array on a steel frame. Panels, brackets and cabling are laid out, waiting to be fitted. This is work, not a fight — fix the panels into place to complete the array."
kind: task
diff --git a/data/mobs/tanner.yaml b/data/mobs/tanner.yaml
index 3689e81..1325468 100644
--- a/data/mobs/tanner.yaml
+++ b/data/mobs/tanner.yaml
@@ -5,7 +5,6 @@ crush_defense: 0
defense: 1
description: A weathered craftsman with stained hands and a leather apron.
hp: 50
-id: tanner
idle_descriptions:
- scrapes at a piece of hide
- examines a stack of leathers
diff --git a/data/mobs/titan_sentinel.yaml b/data/mobs/titan_sentinel.yaml
index 9a7154b..32ddcc2 100644
--- a/data/mobs/titan_sentinel.yaml
+++ b/data/mobs/titan_sentinel.yaml
@@ -1,4 +1,3 @@
-id: titan_sentinel
name: titan sentinel
description: "A colossal automaton, the bigger brother of the iron sentinel. Its armor is reinforced adamantite alloy and its optics burn with crimson fire."
attack: 50
diff --git a/data/mobs/veteran_merc.yaml b/data/mobs/veteran_merc.yaml
index b3b7926..88238b6 100644
--- a/data/mobs/veteran_merc.yaml
+++ b/data/mobs/veteran_merc.yaml
@@ -1,4 +1,3 @@
-id: veteran_merc
name: veteran merc
description: "A battle-hardened soldier with a high-powered rifle and tactical armor covered in campaign patches. Their cybernetic eye locks onto you instantly."
attack: 1
diff --git a/data/mobs/void_reaper.yaml b/data/mobs/void_reaper.yaml
index 6180cba..e54d776 100644
--- a/data/mobs/void_reaper.yaml
+++ b/data/mobs/void_reaper.yaml
@@ -1,4 +1,3 @@
-id: void_reaper
name: void reaper
description: "A shadowy figure that seems to absorb light itself. Its form shifts between a hooded specter and an armored construct. A scythe of dark energy flickers in its grasp."
attack: 62
diff --git a/data/mobs/war_drone.yaml b/data/mobs/war_drone.yaml
index c785092..587ad09 100644
--- a/data/mobs/war_drone.yaml
+++ b/data/mobs/war_drone.yaml
@@ -1,4 +1,3 @@
-id: war_drone
name: war drone
description: "An upgraded combat drone with reinforced plating and a heavier weapons array. Its targeting systems whir as it locks onto you."
attack: 25
diff --git a/data/mobs/weapons_smith.yaml b/data/mobs/weapons_smith.yaml
index d9566a5..2af6299 100644
--- a/data/mobs/weapons_smith.yaml
+++ b/data/mobs/weapons_smith.yaml
@@ -5,7 +5,6 @@ crush_defense: 0
defense: 1
description: A burly smith with soot-stained hands and a heavy leather apron, standing proudly by the forge.
hp: 80
-id: weapons_smith
idle_descriptions:
- hammers at a glowing blade on the anvil
- wipes soot from his brow
diff --git a/data/mobs/zombie.yaml b/data/mobs/zombie.yaml
index 67e9b11..f5989e0 100644
--- a/data/mobs/zombie.yaml
+++ b/data/mobs/zombie.yaml
@@ -1,4 +1,3 @@
-id: zombie
name: zombie
description: "A shambling corpse reanimated by residual asteroid radiation."
attack: 10
diff --git a/data/modules/bio_blast.yaml b/data/modules/bio_blast.yaml
index e20ed53..371e7e4 100644
--- a/data/modules/bio_blast.yaml
+++ b/data/modules/bio_blast.yaml
@@ -1,4 +1,3 @@
-id: bio_blast
name: Bio Blast
level: 41
max_hit: 13
diff --git a/data/modules/bio_bolt.yaml b/data/modules/bio_bolt.yaml
index 02ef9f6..0e156ff 100644
--- a/data/modules/bio_bolt.yaml
+++ b/data/modules/bio_bolt.yaml
@@ -1,4 +1,3 @@
-id: bio_bolt
name: Bio Bolt
level: 17
max_hit: 9
diff --git a/data/modules/bio_strike.yaml b/data/modules/bio_strike.yaml
index f76ca39..792fc45 100644
--- a/data/modules/bio_strike.yaml
+++ b/data/modules/bio_strike.yaml
@@ -1,4 +1,3 @@
-id: bio_strike
name: Bio Strike
level: 1
max_hit: 4
diff --git a/data/modules/bio_surge.yaml b/data/modules/bio_surge.yaml
index 5bd6ec5..9b5b2d6 100644
--- a/data/modules/bio_surge.yaml
+++ b/data/modules/bio_surge.yaml
@@ -1,4 +1,3 @@
-id: bio_surge
name: Bio Surge
level: 81
max_hit: 21
diff --git a/data/modules/bio_wave.yaml b/data/modules/bio_wave.yaml
index 527b525..6dbe3df 100644
--- a/data/modules/bio_wave.yaml
+++ b/data/modules/bio_wave.yaml
@@ -1,4 +1,3 @@
-id: bio_wave
name: Bio Wave
level: 62
max_hit: 17
diff --git a/data/modules/bones_to_nutrients.yaml b/data/modules/bones_to_nutrients.yaml
index 73ac469..5b22c85 100644
--- a/data/modules/bones_to_nutrients.yaml
+++ b/data/modules/bones_to_nutrients.yaml
@@ -1,4 +1,3 @@
-id: bones_to_nutrients
name: Bones to Nutrients
level: 15
max_hit: 0
diff --git a/data/modules/chip_diamond.yaml b/data/modules/chip_diamond.yaml
index 3edde7c..0fce036 100644
--- a/data/modules/chip_diamond.yaml
+++ b/data/modules/chip_diamond.yaml
@@ -1,4 +1,3 @@
-id: chip_diamond
name: Chip Diamond Bolts
level: 57
max_hit: 0
diff --git a/data/modules/chip_emerald.yaml b/data/modules/chip_emerald.yaml
index b5514d2..20774bb 100644
--- a/data/modules/chip_emerald.yaml
+++ b/data/modules/chip_emerald.yaml
@@ -1,4 +1,3 @@
-id: chip_emerald
name: Chip Emerald Bolts
level: 27
max_hit: 0
diff --git a/data/modules/chip_ruby.yaml b/data/modules/chip_ruby.yaml
index 4001515..4752d90 100644
--- a/data/modules/chip_ruby.yaml
+++ b/data/modules/chip_ruby.yaml
@@ -1,4 +1,3 @@
-id: chip_ruby
name: Chip Ruby Bolts
level: 49
max_hit: 0
diff --git a/data/modules/chip_sapphire.yaml b/data/modules/chip_sapphire.yaml
index b12b5de..cb678fd 100644
--- a/data/modules/chip_sapphire.yaml
+++ b/data/modules/chip_sapphire.yaml
@@ -1,4 +1,3 @@
-id: chip_sapphire
name: Chip Sapphire Bolts
level: 4
max_hit: 0
diff --git a/data/modules/eco_blast.yaml b/data/modules/eco_blast.yaml
index aef98f5..946fa1b 100644
--- a/data/modules/eco_blast.yaml
+++ b/data/modules/eco_blast.yaml
@@ -1,4 +1,3 @@
-id: eco_blast
name: Eco Blast
level: 53
max_hit: 15
diff --git a/data/modules/eco_bolt.yaml b/data/modules/eco_bolt.yaml
index bccdc8f..23b8ff7 100644
--- a/data/modules/eco_bolt.yaml
+++ b/data/modules/eco_bolt.yaml
@@ -1,4 +1,3 @@
-id: eco_bolt
name: Eco Bolt
level: 29
max_hit: 11
diff --git a/data/modules/eco_strike.yaml b/data/modules/eco_strike.yaml
index f94ef96..ee927f0 100644
--- a/data/modules/eco_strike.yaml
+++ b/data/modules/eco_strike.yaml
@@ -1,4 +1,3 @@
-id: eco_strike
name: Eco Strike
level: 9
max_hit: 7
diff --git a/data/modules/eco_surge.yaml b/data/modules/eco_surge.yaml
index 41b4d2c..51b5c7d 100644
--- a/data/modules/eco_surge.yaml
+++ b/data/modules/eco_surge.yaml
@@ -1,4 +1,3 @@
-id: eco_surge
name: Eco Surge
level: 90
max_hit: 23
diff --git a/data/modules/eco_wave.yaml b/data/modules/eco_wave.yaml
index 20ef041..bb8940b 100644
--- a/data/modules/eco_wave.yaml
+++ b/data/modules/eco_wave.yaml
@@ -1,4 +1,3 @@
-id: eco_wave
name: Eco Wave
level: 70
max_hit: 19
diff --git a/data/modules/em_grab.yaml b/data/modules/em_grab.yaml
index 217e5f5..6c97314 100644
--- a/data/modules/em_grab.yaml
+++ b/data/modules/em_grab.yaml
@@ -1,4 +1,3 @@
-id: em_grab
name: Electromagnetic Grab
level: 33
max_hit: 0
diff --git a/data/modules/enchant_1.yaml b/data/modules/enchant_1.yaml
index 8f23336..4df0478 100644
--- a/data/modules/enchant_1.yaml
+++ b/data/modules/enchant_1.yaml
@@ -1,4 +1,3 @@
-id: enchant_1
name: Enchant Level 1
level: 7
max_hit: 0
diff --git a/data/modules/enchant_2.yaml b/data/modules/enchant_2.yaml
index b9fa09f..cb775e0 100644
--- a/data/modules/enchant_2.yaml
+++ b/data/modules/enchant_2.yaml
@@ -1,4 +1,3 @@
-id: enchant_2
name: Enchant Level 2
level: 27
max_hit: 0
diff --git a/data/modules/enchant_3.yaml b/data/modules/enchant_3.yaml
index 92a898c..28ee450 100644
--- a/data/modules/enchant_3.yaml
+++ b/data/modules/enchant_3.yaml
@@ -1,4 +1,3 @@
-id: enchant_3
name: Enchant Level 3
level: 49
max_hit: 0
diff --git a/data/modules/enchant_4.yaml b/data/modules/enchant_4.yaml
index 63b2096..95c702b 100644
--- a/data/modules/enchant_4.yaml
+++ b/data/modules/enchant_4.yaml
@@ -1,4 +1,3 @@
-id: enchant_4
name: Enchant Level 4
level: 57
max_hit: 0
diff --git a/data/modules/high_process.yaml b/data/modules/high_process.yaml
index 447b4ce..5b44fa2 100644
--- a/data/modules/high_process.yaml
+++ b/data/modules/high_process.yaml
@@ -1,4 +1,3 @@
-id: high_process
name: High Level Processing
level: 55
max_hit: 0
diff --git a/data/modules/hydro_blast.yaml b/data/modules/hydro_blast.yaml
index c9981db..7991308 100644
--- a/data/modules/hydro_blast.yaml
+++ b/data/modules/hydro_blast.yaml
@@ -1,4 +1,3 @@
-id: hydro_blast
name: Hydro Blast
level: 47
max_hit: 14
diff --git a/data/modules/hydro_bolt.yaml b/data/modules/hydro_bolt.yaml
index 5907943..58e3d7a 100644
--- a/data/modules/hydro_bolt.yaml
+++ b/data/modules/hydro_bolt.yaml
@@ -1,4 +1,3 @@
-id: hydro_bolt
name: Hydro Bolt
level: 23
max_hit: 10
diff --git a/data/modules/hydro_strike.yaml b/data/modules/hydro_strike.yaml
index 41bcbbc..fc38b34 100644
--- a/data/modules/hydro_strike.yaml
+++ b/data/modules/hydro_strike.yaml
@@ -1,4 +1,3 @@
-id: hydro_strike
name: Hydro Strike
level: 5
max_hit: 6
diff --git a/data/modules/hydro_surge.yaml b/data/modules/hydro_surge.yaml
index 5d32607..04c91a1 100644
--- a/data/modules/hydro_surge.yaml
+++ b/data/modules/hydro_surge.yaml
@@ -1,4 +1,3 @@
-id: hydro_surge
name: Hydro Surge
level: 85
max_hit: 22
diff --git a/data/modules/hydro_wave.yaml b/data/modules/hydro_wave.yaml
index 8a37538..7c49ad1 100644
--- a/data/modules/hydro_wave.yaml
+++ b/data/modules/hydro_wave.yaml
@@ -1,4 +1,3 @@
-id: hydro_wave
name: Hydro Wave
level: 65
max_hit: 18
diff --git a/data/modules/low_process.yaml b/data/modules/low_process.yaml
index e0e5e9b..f7a8fd7 100644
--- a/data/modules/low_process.yaml
+++ b/data/modules/low_process.yaml
@@ -1,4 +1,3 @@
-id: low_process
name: Low Level Processing
level: 21
max_hit: 0
diff --git a/data/modules/plank_make.yaml b/data/modules/plank_make.yaml
index bdfbcad..9909589 100644
--- a/data/modules/plank_make.yaml
+++ b/data/modules/plank_make.yaml
@@ -1,4 +1,3 @@
-id: plank_make
name: Plank Make
level: 86
max_hit: 0
diff --git a/data/modules/solar_blast.yaml b/data/modules/solar_blast.yaml
index e3da213..54b1ae8 100644
--- a/data/modules/solar_blast.yaml
+++ b/data/modules/solar_blast.yaml
@@ -1,4 +1,3 @@
-id: solar_blast
name: Solar Blast
level: 59
max_hit: 16
diff --git a/data/modules/solar_bolt.yaml b/data/modules/solar_bolt.yaml
index a75e98e..6ac3e8f 100644
--- a/data/modules/solar_bolt.yaml
+++ b/data/modules/solar_bolt.yaml
@@ -1,4 +1,3 @@
-id: solar_bolt
name: Solar Bolt
level: 35
max_hit: 12
diff --git a/data/modules/solar_strike.yaml b/data/modules/solar_strike.yaml
index 365cc13..1045324 100644
--- a/data/modules/solar_strike.yaml
+++ b/data/modules/solar_strike.yaml
@@ -1,4 +1,3 @@
-id: solar_strike
name: Solar Strike
level: 13
max_hit: 8
diff --git a/data/modules/solar_surge.yaml b/data/modules/solar_surge.yaml
index 08b8f00..4d2e211 100644
--- a/data/modules/solar_surge.yaml
+++ b/data/modules/solar_surge.yaml
@@ -1,4 +1,3 @@
-id: solar_surge
name: Solar Surge
level: 95
max_hit: 24
diff --git a/data/modules/solar_wave.yaml b/data/modules/solar_wave.yaml
index 905fc38..bbdb60e 100644
--- a/data/modules/solar_wave.yaml
+++ b/data/modules/solar_wave.yaml
@@ -1,4 +1,3 @@
-id: solar_wave
name: Solar Wave
level: 75
max_hit: 20
diff --git a/data/modules/superheat.yaml b/data/modules/superheat.yaml
index 9579e52..4c33bd1 100644
--- a/data/modules/superheat.yaml
+++ b/data/modules/superheat.yaml
@@ -1,4 +1,3 @@
-id: superheat
name: Superheat Item
level: 43
max_hit: 0
diff --git a/data/modules/transport_deep_mine.yaml b/data/modules/transport_deep_mine.yaml
index b88988d..22d39b5 100644
--- a/data/modules/transport_deep_mine.yaml
+++ b/data/modules/transport_deep_mine.yaml
@@ -1,4 +1,3 @@
-id: transport_deep_mine
name: "Transport: Deep Mine"
level: 61
max_hit: 0
diff --git a/data/modules/transport_fishing.yaml b/data/modules/transport_fishing.yaml
index 1b47bbb..26f02cd 100644
--- a/data/modules/transport_fishing.yaml
+++ b/data/modules/transport_fishing.yaml
@@ -1,4 +1,3 @@
-id: transport_fishing
name: "Transport: Fishing Dock"
level: 55
max_hit: 0
diff --git a/data/modules/transport_forest.yaml b/data/modules/transport_forest.yaml
index 8e71b26..10f0fe3 100644
--- a/data/modules/transport_forest.yaml
+++ b/data/modules/transport_forest.yaml
@@ -1,4 +1,3 @@
-id: transport_forest
name: "Transport: Forest"
level: 45
max_hit: 0
diff --git a/data/modules/transport_forge.yaml b/data/modules/transport_forge.yaml
index 18fee17..958a0da 100644
--- a/data/modules/transport_forge.yaml
+++ b/data/modules/transport_forge.yaml
@@ -1,4 +1,3 @@
-id: transport_forge
name: "Transport: Forge"
level: 31
max_hit: 0
diff --git a/data/modules/transport_mine.yaml b/data/modules/transport_mine.yaml
index 331cba4..3dc5838 100644
--- a/data/modules/transport_mine.yaml
+++ b/data/modules/transport_mine.yaml
@@ -1,4 +1,3 @@
-id: transport_mine
name: "Transport: Mining Pit"
level: 37
max_hit: 0
diff --git a/data/modules/transport_scavenge.yaml b/data/modules/transport_scavenge.yaml
index f178149..fd2401d 100644
--- a/data/modules/transport_scavenge.yaml
+++ b/data/modules/transport_scavenge.yaml
@@ -1,4 +1,3 @@
-id: transport_scavenge
name: "Transport: Scavenging Post"
level: 51
max_hit: 0
diff --git a/data/modules/transport_town.yaml b/data/modules/transport_town.yaml
index de3aaf9..a539779 100644
--- a/data/modules/transport_town.yaml
+++ b/data/modules/transport_town.yaml
@@ -1,4 +1,3 @@
-id: transport_town
name: "Transport: Town Square"
level: 25
max_hit: 0
diff --git a/data/objects/adamantite_rock.yaml b/data/objects/adamantite_rock.yaml
index 4869a77..b7d03bf 100644
--- a/data/objects/adamantite_rock.yaml
+++ b/data/objects/adamantite_rock.yaml
@@ -19,5 +19,4 @@ gather:
tools:
- pickaxe
xp: 95
-id: adamantite_rock
name: adamantite rock
diff --git a/data/objects/allotment_patch.yaml b/data/objects/allotment_patch.yaml
index 1074abe..c028ab6 100644
--- a/data/objects/allotment_patch.yaml
+++ b/data/objects/allotment_patch.yaml
@@ -1,4 +1,3 @@
-id: allotment_patch
name: allotment patch
color: "94"
hidden: false
diff --git a/data/objects/anglerfish_spot.yaml b/data/objects/anglerfish_spot.yaml
index 4829307..b1d132b 100644
--- a/data/objects/anglerfish_spot.yaml
+++ b/data/objects/anglerfish_spot.yaml
@@ -19,5 +19,4 @@ gather:
per_level: 0.005
tools:
- fishing_rod
-id: anglerfish_spot
name: anglerfish spot
diff --git a/data/objects/anvil.yaml b/data/objects/anvil.yaml
index ab5a79f..af6e88b 100644
--- a/data/objects/anvil.yaml
+++ b/data/objects/anvil.yaml
@@ -1,4 +1,3 @@
-id: anvil
name: anvil
color: "250"
description: "A heavy iron anvil for hammering metal into shape."
diff --git a/data/objects/aps_tower.yaml b/data/objects/aps_tower.yaml
index 8f2548e..3993f66 100644
--- a/data/objects/aps_tower.yaml
+++ b/data/objects/aps_tower.yaml
@@ -1,4 +1,3 @@
-id: aps_tower
name: APS Tower
color: "33"
description: "A tall, skeletal metal tower with a pulsing cyan beacon at its apex. A datapad sync panel glows softly at the base."
diff --git a/data/objects/bait_fishing_spot.yaml b/data/objects/bait_fishing_spot.yaml
index 8e506a8..a6a27cd 100644
--- a/data/objects/bait_fishing_spot.yaml
+++ b/data/objects/bait_fishing_spot.yaml
@@ -29,5 +29,4 @@ gather:
per_level: 0.005
tools:
- fishing_rod
-id: bait_fishing_spot
name: bait fishing spot
diff --git a/data/objects/bank_booth.yaml b/data/objects/bank_booth.yaml
index 0cc9fc7..eefda88 100644
--- a/data/objects/bank_booth.yaml
+++ b/data/objects/bank_booth.yaml
@@ -1,4 +1,3 @@
-id: bank_booth
name: bank booth
color: "226"
description: "A sleek terminal with a biometric scanner. You can deposit or withdraw items here. Type 'bank' to access it."
diff --git a/data/objects/bio_altar.yaml b/data/objects/bio_altar.yaml
index 37618bc..2ae480e 100644
--- a/data/objects/bio_altar.yaml
+++ b/data/objects/bio_altar.yaml
@@ -1,4 +1,3 @@
-id: bio_altar
name: bio altar
color: "196"
description: "A sinister altar of red biological interfaces. Place scrap here with a bio identifier to produce biojunk. Type 'id' to begin."
diff --git a/data/objects/blood_altar.yaml b/data/objects/blood_altar.yaml
index 49b6beb..fb051bc 100644
--- a/data/objects/blood_altar.yaml
+++ b/data/objects/blood_altar.yaml
@@ -1,4 +1,3 @@
-id: blood_altar
name: blood altar
color: "124"
description: "A pulsing altar of {124 bold}crimson crystal{/}, warm to the touch. Place scrap here with a blood identifier to produce bloodjunk. Type 'id' to begin."
diff --git a/data/objects/cage_fishing_spot.yaml b/data/objects/cage_fishing_spot.yaml
index 691bb54..ef8e359 100644
--- a/data/objects/cage_fishing_spot.yaml
+++ b/data/objects/cage_fishing_spot.yaml
@@ -18,5 +18,4 @@ gather:
per_level: 0.005
tools:
- lobster_pot
-id: cage_fishing_spot
name: cage fishing spot
diff --git a/data/objects/chaos_altar.yaml b/data/objects/chaos_altar.yaml
index 384105f..89088c7 100644
--- a/data/objects/chaos_altar.yaml
+++ b/data/objects/chaos_altar.yaml
@@ -1,4 +1,3 @@
-id: chaos_altar
name: chaos altar
color: "226"
description: "A crackling altar of {226 bold}chaotic energy{/}. Place scrap here with a chaos identifier to produce chaosjunk. Type 'id' to begin."
diff --git a/data/objects/charging_station.yaml b/data/objects/charging_station.yaml
index ef63c7d..e4199f1 100644
--- a/data/objects/charging_station.yaml
+++ b/data/objects/charging_station.yaml
@@ -1,4 +1,3 @@
-id: charging_station
name: Charging Station
description: "A humming terminal with exposed capacitor banks. Its indicator light pulses with stored energy. You could recharge your battery here."
inroom_description: "A charging station hums quietly against the wall."
diff --git a/data/objects/clay_rock.yaml b/data/objects/clay_rock.yaml
index 70cfc4e..b2131e6 100644
--- a/data/objects/clay_rock.yaml
+++ b/data/objects/clay_rock.yaml
@@ -20,5 +20,4 @@ gather:
tools:
- pickaxe
xp: 5
-id: clay_rock
name: clay rock
diff --git a/data/objects/coal_rock.yaml b/data/objects/coal_rock.yaml
index f033965..6c4b0c6 100644
--- a/data/objects/coal_rock.yaml
+++ b/data/objects/coal_rock.yaml
@@ -19,5 +19,4 @@ gather:
tools:
- pickaxe
xp: 50
-id: coal_rock
name: coal rock
diff --git a/data/objects/cooking_range.yaml b/data/objects/cooking_range.yaml
index f70b7fd..d19c790 100644
--- a/data/objects/cooking_range.yaml
+++ b/data/objects/cooking_range.yaml
@@ -1,4 +1,3 @@
-id: cooking_range
name: cooking range
color: "253"
description: "A sturdy iron range with multiple burners. Perfect for cooking."
diff --git a/data/objects/copper_rock.yaml b/data/objects/copper_rock.yaml
index aa2a5cc..a81c164 100644
--- a/data/objects/copper_rock.yaml
+++ b/data/objects/copper_rock.yaml
@@ -24,5 +24,4 @@ gather:
tools:
- pickaxe
xp: 17
-id: copper_rock
name: copper rock
diff --git a/data/objects/cosmic_altar.yaml b/data/objects/cosmic_altar.yaml
index 11ba761..3990cdf 100644
--- a/data/objects/cosmic_altar.yaml
+++ b/data/objects/cosmic_altar.yaml
@@ -1,4 +1,3 @@
-id: cosmic_altar
name: cosmic altar
color: "201"
description: "A floating altar of {201 bold}shimmering pink crystal{/}, surrounded by pinpricks of light like distant stars. Place scrap here with a cosmic identifier to produce cosmicjunk. Type 'id' to begin."
diff --git a/data/objects/death_altar.yaml b/data/objects/death_altar.yaml
index 89bfd87..39190a5 100644
--- a/data/objects/death_altar.yaml
+++ b/data/objects/death_altar.yaml
@@ -1,4 +1,3 @@
-id: death_altar
name: death altar
color: "52"
description: "A silent altar of {52 bold}dark obsidian{/}, cold to the touch. Place scrap here with a death identifier to produce deathjunk. Type 'id' to begin."
diff --git a/data/objects/eco_altar.yaml b/data/objects/eco_altar.yaml
index 18c90cf..28d3353 100644
--- a/data/objects/eco_altar.yaml
+++ b/data/objects/eco_altar.yaml
@@ -1,4 +1,3 @@
-id: eco_altar
name: eco altar
color: "34"
description: "A thrumming altar of green organic circuits. Place scrap here with an eco identifier to produce ecojunk. Type 'id' to begin."
diff --git a/data/objects/estate_directory.yaml b/data/objects/estate_directory.yaml
index 3c1ecec..930e6cd 100644
--- a/data/objects/estate_directory.yaml
+++ b/data/objects/estate_directory.yaml
@@ -1,4 +1,3 @@
-id: estate_directory
name: Estate Directory
color: "39"
description: "A holographic terminal displaying property records. The screen glows with a soft cyan light."
diff --git a/data/objects/fence_post.yaml b/data/objects/fence_post.yaml
index 11f6160..cc92425 100644
--- a/data/objects/fence_post.yaml
+++ b/data/objects/fence_post.yaml
@@ -1,4 +1,3 @@
-id: fence_post
name: fence post
color: "137"
hidden: true
diff --git a/data/objects/fire.yaml b/data/objects/fire.yaml
index 864b7a8..85043f8 100644
--- a/data/objects/fire.yaml
+++ b/data/objects/fire.yaml
@@ -1,4 +1,3 @@
-id: fire
name: fire
color: "208"
hidden: false
diff --git a/data/objects/flower_patch.yaml b/data/objects/flower_patch.yaml
index 6d4ee70..c7268b8 100644
--- a/data/objects/flower_patch.yaml
+++ b/data/objects/flower_patch.yaml
@@ -1,4 +1,3 @@
-id: flower_patch
name: flower patch
color: "213"
hidden: false
diff --git a/data/objects/fly_fishing_spot.yaml b/data/objects/fly_fishing_spot.yaml
index 88fc61b..8d12a80 100644
--- a/data/objects/fly_fishing_spot.yaml
+++ b/data/objects/fly_fishing_spot.yaml
@@ -29,5 +29,4 @@ gather:
per_level: 0.005
tools:
- fly_rod
-id: fly_fishing_spot
name: fly fishing spot
diff --git a/data/objects/furnace.yaml b/data/objects/furnace.yaml
index 29a8552..ed25583 100644
--- a/data/objects/furnace.yaml
+++ b/data/objects/furnace.yaml
@@ -1,4 +1,3 @@
-id: furnace
name: furnace
color: "196"
description: "A blazing hot furnace for smelting ores into bars."
diff --git a/data/objects/gold_rock.yaml b/data/objects/gold_rock.yaml
index cc3c816..6eea033 100644
--- a/data/objects/gold_rock.yaml
+++ b/data/objects/gold_rock.yaml
@@ -19,5 +19,4 @@ gather:
tools:
- pickaxe
xp: 65
-id: gold_rock
name: gold rock
diff --git a/data/objects/harpoon_fishing_spot.yaml b/data/objects/harpoon_fishing_spot.yaml
index 2a059e9..625235a 100644
--- a/data/objects/harpoon_fishing_spot.yaml
+++ b/data/objects/harpoon_fishing_spot.yaml
@@ -28,5 +28,4 @@ gather:
per_level: 0.005
tools:
- harpoon
-id: harpoon_fishing_spot
name: harpoon fishing spot
diff --git a/data/objects/herb_patch.yaml b/data/objects/herb_patch.yaml
index 81acaf3..7ba0b25 100644
--- a/data/objects/herb_patch.yaml
+++ b/data/objects/herb_patch.yaml
@@ -1,4 +1,3 @@
-id: herb_patch
name: herb patch
color: "28"
hidden: false
diff --git a/data/objects/hydro_altar.yaml b/data/objects/hydro_altar.yaml
index ced7c4d..4f4d433 100644
--- a/data/objects/hydro_altar.yaml
+++ b/data/objects/hydro_altar.yaml
@@ -1,4 +1,3 @@
-id: hydro_altar
name: hydro altar
color: "39"
description: "A pulsing altar of blue crystalline conduits. Place scrap here with a hydro identifier to produce hydrojunk. Type 'id' to begin."
diff --git a/data/objects/iron_gate.yaml b/data/objects/iron_gate.yaml
index 8193f0a..9ed87d4 100644
--- a/data/objects/iron_gate.yaml
+++ b/data/objects/iron_gate.yaml
@@ -1,7 +1,6 @@
color: "250"
description: A heavy iron gate. It looks like it can be pushed open.
hidden: true
-id: iron_gate
name: iron gate
use_interactions:
- condition:
diff --git a/data/objects/iron_rock.yaml b/data/objects/iron_rock.yaml
index b66bd03..c78312d 100644
--- a/data/objects/iron_rock.yaml
+++ b/data/objects/iron_rock.yaml
@@ -19,5 +19,4 @@ gather:
tools:
- pickaxe
xp: 35
-id: iron_rock
name: iron rock
diff --git a/data/objects/law_altar.yaml b/data/objects/law_altar.yaml
index 870f6e8..955ff9e 100644
--- a/data/objects/law_altar.yaml
+++ b/data/objects/law_altar.yaml
@@ -1,4 +1,3 @@
-id: law_altar
name: law altar
color: "27"
description: "An imposing altar of {27 bold}pristine blue stone{/}, inscribed with orderly geometric patterns. Place scrap here with a law identifier to produce lawjunk. Type 'id' to begin."
diff --git a/data/objects/lumby_fountain.yaml b/data/objects/lumby_fountain.yaml
index 1c5fd94..ec7a04c 100644
--- a/data/objects/lumby_fountain.yaml
+++ b/data/objects/lumby_fountain.yaml
@@ -1,4 +1,3 @@
-id: lumby_fountain
name: town fountain
color: "81"
description: "Clear water sparkles in the sunlight."
diff --git a/data/objects/magic_tree.yaml b/data/objects/magic_tree.yaml
index 7e1a37b..c6ee43a 100644
--- a/data/objects/magic_tree.yaml
+++ b/data/objects/magic_tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 250
-id: magic_tree
name: magic tree
diff --git a/data/objects/mahogany_tree.yaml b/data/objects/mahogany_tree.yaml
index 5e84b2b..1d8d486 100644
--- a/data/objects/mahogany_tree.yaml
+++ b/data/objects/mahogany_tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 125
-id: mahogany_tree
name: mahogany tree
diff --git a/data/objects/maple_tree.yaml b/data/objects/maple_tree.yaml
index 1c11e82..6bb41de 100644
--- a/data/objects/maple_tree.yaml
+++ b/data/objects/maple_tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 100
-id: maple_tree
name: maple tree
diff --git a/data/objects/market_stall.yaml b/data/objects/market_stall.yaml
index a94d5cb..e438898 100644
--- a/data/objects/market_stall.yaml
+++ b/data/objects/market_stall.yaml
@@ -1,4 +1,3 @@
-id: market_stall
name: Market Stall
description: "A wooden stall piled with food and sundries. The vendor doesn't seem particularly attentive."
color: "179"
diff --git a/data/objects/mithril_rock.yaml b/data/objects/mithril_rock.yaml
index ffd2a74..f79d205 100644
--- a/data/objects/mithril_rock.yaml
+++ b/data/objects/mithril_rock.yaml
@@ -19,5 +19,4 @@ gather:
tools:
- pickaxe
xp: 80
-id: mithril_rock
name: mithril rock
diff --git a/data/objects/nature_altar.yaml b/data/objects/nature_altar.yaml
index 2f102ed..1dd2f56 100644
--- a/data/objects/nature_altar.yaml
+++ b/data/objects/nature_altar.yaml
@@ -1,4 +1,3 @@
-id: nature_altar
name: nature altar
color: "46"
description: "A verdant altar of {46 bold}living green stone{/}, covered in moss and tiny flowers. Place scrap here with a nature identifier to produce naturejunk. Type 'id' to begin."
diff --git a/data/objects/net_fishing_spot.yaml b/data/objects/net_fishing_spot.yaml
index 11263a9..e5d7d03 100644
--- a/data/objects/net_fishing_spot.yaml
+++ b/data/objects/net_fishing_spot.yaml
@@ -40,5 +40,4 @@ gather:
tools:
- small_net
- big_net
-id: net_fishing_spot
name: net fishing spot
diff --git a/data/objects/netrunner.yaml b/data/objects/netrunner.yaml
index dcb7d40..21049e9 100644
--- a/data/objects/netrunner.yaml
+++ b/data/objects/netrunner.yaml
@@ -1,6 +1,5 @@
color: "39"
description: A wiry figure hunched over a custom rig, fingers dancing across holographic keys. Cables snake from the back of their neck into the terminal. They glance up at you with augmented eyes.
-id: netrunner
inroom_description: A {39}Netrunner{/} sits cross-legged on the floor, wired into the network.
name: Netrunner
talk:
diff --git a/data/objects/oak_tree.yaml b/data/objects/oak_tree.yaml
index 0d42dab..40d1cd2 100644
--- a/data/objects/oak_tree.yaml
+++ b/data/objects/oak_tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 37
-id: oak_tree
name: oak tree
diff --git a/data/objects/pottery_oven.yaml b/data/objects/pottery_oven.yaml
index c86e409..52c920b 100644
--- a/data/objects/pottery_oven.yaml
+++ b/data/objects/pottery_oven.yaml
@@ -1,4 +1,3 @@
-id: pottery_oven
name: pottery oven
color: "196"
description: "A kiln for firing pottery."
diff --git a/data/objects/pottery_wheel.yaml b/data/objects/pottery_wheel.yaml
index cc2e225..feaac95 100644
--- a/data/objects/pottery_wheel.yaml
+++ b/data/objects/pottery_wheel.yaml
@@ -1,4 +1,3 @@
-id: pottery_wheel
name: pottery wheel
color: "173"
description: "A foot-powered pottery wheel for shaping clay."
diff --git a/data/objects/redwood_tree.yaml b/data/objects/redwood_tree.yaml
index cf16e86..a5861fb 100644
--- a/data/objects/redwood_tree.yaml
+++ b/data/objects/redwood_tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 380
-id: redwood_tree
name: redwood tree
diff --git a/data/objects/rock_outcrop.yaml b/data/objects/rock_outcrop.yaml
index 57b71d8..e11423b 100644
--- a/data/objects/rock_outcrop.yaml
+++ b/data/objects/rock_outcrop.yaml
@@ -1,4 +1,3 @@
-id: rock_outcrop
name: rock outcrop
color: "248"
hidden: true
diff --git a/data/objects/runite_rock.yaml b/data/objects/runite_rock.yaml
index abfb06c..b44c5f8 100644
--- a/data/objects/runite_rock.yaml
+++ b/data/objects/runite_rock.yaml
@@ -19,5 +19,4 @@ gather:
tools:
- pickaxe
xp: 125
-id: runite_rock
name: runite rock
diff --git a/data/objects/sacred_eel_spot.yaml b/data/objects/sacred_eel_spot.yaml
index 07c1388..ab351ee 100644
--- a/data/objects/sacred_eel_spot.yaml
+++ b/data/objects/sacred_eel_spot.yaml
@@ -19,5 +19,4 @@ gather:
per_level: 0.005
tools:
- fishing_rod
-id: sacred_eel_spot
name: sacred eel spot
diff --git a/data/objects/scrap_pile.yaml b/data/objects/scrap_pile.yaml
index 27481a7..71752a6 100644
--- a/data/objects/scrap_pile.yaml
+++ b/data/objects/scrap_pile.yaml
@@ -15,5 +15,4 @@ gather:
tools:
- pickaxe
xp: 5
-id: scrap_pile
name: scrap pile
diff --git a/data/objects/sheep.yaml b/data/objects/sheep.yaml
index 865c20e..aff4f52 100644
--- a/data/objects/sheep.yaml
+++ b/data/objects/sheep.yaml
@@ -20,6 +20,5 @@ gather:
tools:
- shears
xp: 0
-id: sheep
inroom_description: A fluffy sheep is wandering around here.
name: sheep
diff --git a/data/objects/silver_rock.yaml b/data/objects/silver_rock.yaml
index 9cc7d22..7f16598 100644
--- a/data/objects/silver_rock.yaml
+++ b/data/objects/silver_rock.yaml
@@ -19,5 +19,4 @@ gather:
tools:
- pickaxe
xp: 40
-id: silver_rock
name: silver rock
diff --git a/data/objects/simple_rock.yaml b/data/objects/simple_rock.yaml
index 4c03308..85ecb2e 100644
--- a/data/objects/simple_rock.yaml
+++ b/data/objects/simple_rock.yaml
@@ -1,4 +1,3 @@
-id: simple_rock
name: rock formation
color: "248"
hidden: true
diff --git a/data/objects/solar_altar.yaml b/data/objects/solar_altar.yaml
index fd67f27..84f8e4e 100644
--- a/data/objects/solar_altar.yaml
+++ b/data/objects/solar_altar.yaml
@@ -1,4 +1,3 @@
-id: solar_altar
name: solar altar
color: "220"
description: "A humming altar of golden circuitry. Place scrap here with a solar identifier to produce solarjunk. Type 'id' to begin."
diff --git a/data/objects/spinning_wheel.yaml b/data/objects/spinning_wheel.yaml
index 683f0b6..96ff1cb 100644
--- a/data/objects/spinning_wheel.yaml
+++ b/data/objects/spinning_wheel.yaml
@@ -1,4 +1,3 @@
-id: spinning_wheel
name: spinning wheel
color: "130"
description: "A wooden spinning wheel for spinning wool and flax."
diff --git a/data/objects/swamp_fishing_spot.yaml b/data/objects/swamp_fishing_spot.yaml
index e05b424..5747753 100644
--- a/data/objects/swamp_fishing_spot.yaml
+++ b/data/objects/swamp_fishing_spot.yaml
@@ -24,5 +24,4 @@ gather:
per_level: 0.005
tools:
- fishing_rod
-id: swamp_fishing_spot
name: swamp fishing spot
diff --git a/data/objects/teak_tree.yaml b/data/objects/teak_tree.yaml
index f234f17..d84d785 100644
--- a/data/objects/teak_tree.yaml
+++ b/data/objects/teak_tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 85
-id: teak_tree
name: teak tree
diff --git a/data/objects/terminal_advanced.yaml b/data/objects/terminal_advanced.yaml
index ca2cde7..467168d 100644
--- a/data/objects/terminal_advanced.yaml
+++ b/data/objects/terminal_advanced.yaml
@@ -1,4 +1,3 @@
-id: terminal_advanced
name: advanced terminal
color: "33"
description: "A sleek terminal with a holographic display. Encrypted data streams flow across the screen in complex patterns. {33}[Level 20 Hacking]{/}"
diff --git a/data/objects/terminal_basic.yaml b/data/objects/terminal_basic.yaml
index 3e1b35a..162e1e7 100644
--- a/data/objects/terminal_basic.yaml
+++ b/data/objects/terminal_basic.yaml
@@ -1,4 +1,3 @@
-id: terminal_basic
name: basic terminal
color: "40"
description: "A battered terminal with a cracked screen. Faded text scrolls across the display -- it looks like it's running some kind of legacy intrusion detection system. {40}[Level 1 Hacking]{/}"
diff --git a/data/objects/terminal_secure.yaml b/data/objects/terminal_secure.yaml
index f196a86..91282e5 100644
--- a/data/objects/terminal_secure.yaml
+++ b/data/objects/terminal_secure.yaml
@@ -1,4 +1,3 @@
-id: terminal_secure
name: secure terminal
color: "196"
description: "A heavily reinforced terminal embedded in the wall. Warning glyphs pulse across its surface. A bluffing protocol runs on loop -- it's probing you as much as you're probing it. {196}[Level 40 Hacking]{/}"
diff --git a/data/objects/tin_rock.yaml b/data/objects/tin_rock.yaml
index baa5caf..bf60388 100644
--- a/data/objects/tin_rock.yaml
+++ b/data/objects/tin_rock.yaml
@@ -19,5 +19,4 @@ gather:
tools:
- pickaxe
xp: 17
-id: tin_rock
name: tin rock
diff --git a/data/objects/tool_shed.yaml b/data/objects/tool_shed.yaml
index 9b59682..583becb 100644
--- a/data/objects/tool_shed.yaml
+++ b/data/objects/tool_shed.yaml
@@ -1,7 +1,6 @@
color: "94"
description: A small shed for storing farming tools. Talk to it to store or retrieve tools.
hidden: false
-id: tool_shed
inroom_description: A weathered tool shed stands against the wall.
name: tool shed
talk:
diff --git a/data/objects/tree.yaml b/data/objects/tree.yaml
index 1d4bdee..5e14733 100644
--- a/data/objects/tree.yaml
+++ b/data/objects/tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 25
-id: tree
name: tree
diff --git a/data/objects/tutorial_lever.yaml b/data/objects/tutorial_lever.yaml
index 894dd07..35886f6 100644
--- a/data/objects/tutorial_lever.yaml
+++ b/data/objects/tutorial_lever.yaml
@@ -1,4 +1,3 @@
-id: tutorial_lever
name: stone lever
color: "250"
hidden: true
diff --git a/data/objects/unique/1001_sign.yaml b/data/objects/unique/1001_sign.yaml
new file mode 100644
index 0000000..83b6a9c
--- /dev/null
+++ b/data/objects/unique/1001_sign.yaml
@@ -0,0 +1,24 @@
+name: sign
+hidden: true
+description: |-
+ We hope you enjoy your trip on our shuttle. Your pilot is [TYLER].
+
+ When you arrive at your final destination, please be aware of the following basic commands:
+
+ {11 bold}Movement:{/} {10}north{/}, {10}south{/}, {10}east{/}, {10}west{/}, {10}up{/}, {10}down{/}
+ {11 bold}Look:{/} {10}look{/}, {10}look <item/object/mob>{/}, and {10}map{/}
+ {11 bold}Items:{/} {10}inv{/} to see your 28-slot inventory
+ {10}get <item>{/}, {10}drop <item>{/}, {10}wear <item>{/}, {10}remove <item>{/}
+ {10}use <item> on <item/object>{/}
+ {10}eq{/} for equiped gear
+ {11 bold}Comms:{/} {10}talk <mob>{/} for NPC chat
+ {10}say <msg>{/} and {10}global <msg>{/} for human chat
+ {11 bold}Character:{/} {10}score{/} and {10}skills{/} for stats.
+ {11 bold}Combat{/} {10}attack <mob>{/}
+ {11 bold}Skills{/} Many skills have shortcuts like {10}mine{/}, {10}fish{/}, or {10}chop{/}
+ {11 bold}Options{/} {10}options{/} for a list of account options
+ {10}options <opt> <value>{/} to change an option
+
+ Type {12 bold}what{/} for a list of possible common actions
+
+ Make sure to check the {10}help{/} pages, especially {10}help newplayer{/}!
diff --git a/data/objects/1002_crowd.yaml b/data/objects/unique/1002_crowd.yaml
index 8f8f099..7ce41f2 100644
--- a/data/objects/1002_crowd.yaml
+++ b/data/objects/unique/1002_crowd.yaml
@@ -1,4 +1,3 @@
-id: 1002_crowd
name: crowd of people
aliases: [people, crowd, group, passengers]
hidden: true
diff --git a/data/objects/1002_pilot.yaml b/data/objects/unique/1002_pilot.yaml
index 61264b2..edf3a20 100644
--- a/data/objects/1002_pilot.yaml
+++ b/data/objects/unique/1002_pilot.yaml
@@ -1,4 +1,3 @@
-id: 1002_pilot
name: pilot
hidden: true
descriptions:
diff --git a/data/objects/1002_shuttle.yaml b/data/objects/unique/1002_shuttle.yaml
index 6ac3a90..03296b3 100644
--- a/data/objects/1002_shuttle.yaml
+++ b/data/objects/unique/1002_shuttle.yaml
@@ -1,4 +1,3 @@
-id: 1002_shuttle
name: landing craft
aliases: [shuttle, ship]
hidden: true
diff --git a/data/objects/willow_tree.yaml b/data/objects/willow_tree.yaml
index a4db0cf..3bd8574 100644
--- a/data/objects/willow_tree.yaml
+++ b/data/objects/willow_tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 67
-id: willow_tree
name: willow tree
diff --git a/data/objects/workbench.yaml b/data/objects/workbench.yaml
index d3dd396..cea484f 100644
--- a/data/objects/workbench.yaml
+++ b/data/objects/workbench.yaml
@@ -1,4 +1,3 @@
-id: workbench
name: workbench
color: "172"
description: "A sturdy wooden workbench covered in sawdust, nails, and blueprints. The surface is worn from years of crafting."
diff --git a/data/objects/yew_tree.yaml b/data/objects/yew_tree.yaml
index b521052..4b2b2f3 100644
--- a/data/objects/yew_tree.yaml
+++ b/data/objects/yew_tree.yaml
@@ -21,5 +21,4 @@ gather:
tools:
- axe
xp: 175
-id: yew_tree
name: yew tree
diff --git a/data/rooms/example/agility/99999200.yaml b/data/rooms/example_unused/agility/99999200.yaml
index c44cb6a..7397d5d 100644
--- a/data/rooms/example/agility/99999200.yaml
+++ b/data/rooms/example_unused/agility/99999200.yaml
@@ -1,4 +1,3 @@
-id: 99999200
name: "Agility Training Grounds"
description: "A cavernous space beneath the asteroid's surface, repurposed as a training facility. Scaffolding, pipes, and platforms fill the chamber. Signs point to three courses of increasing difficulty: {33}Ventilation Shaft{/} (beginner), {214}Rooftop{/} (intermediate), and {196}Reactor{/} (advanced)."
exits:
diff --git a/data/rooms/example/agility/99999201.yaml b/data/rooms/example_unused/agility/99999201.yaml
index f551fe1..fcc25c1 100644
--- a/data/rooms/example/agility/99999201.yaml
+++ b/data/rooms/example_unused/agility/99999201.yaml
@@ -1,4 +1,3 @@
-id: 99999201
name: "Ventilation Shaft - Corroded Wall"
description: "A towering wall of corroded ventilation panels rises before you. Rust-eaten handholds and buckled seams offer a treacherous path upward. The air smells of old metal and recycled atmosphere."
on_enter:
diff --git a/data/rooms/example/agility/99999202.yaml b/data/rooms/example_unused/agility/99999202.yaml
index 1d33043..7b4c6f9 100644
--- a/data/rooms/example/agility/99999202.yaml
+++ b/data/rooms/example_unused/agility/99999202.yaml
@@ -1,4 +1,3 @@
-id: 99999202
name: "Ventilation Shaft - Coolant Pipe Walkway"
description: "A narrow coolant pipe stretches across a dark chasm. Condensation drips from its surface, making it slick. Far below, you can hear the distant hum of machinery."
on_enter:
diff --git a/data/rooms/example/agility/99999203.yaml b/data/rooms/example_unused/agility/99999203.yaml
index 529bad6..f1d1a7f 100644
--- a/data/rooms/example/agility/99999203.yaml
+++ b/data/rooms/example_unused/agility/99999203.yaml
@@ -1,4 +1,3 @@
-id: 99999203
name: "Ventilation Shaft - Shaft Gap"
description: "The ventilation shaft floor is missing here -- a jagged gap drops into darkness. The far side is just barely within jumping distance. Exposed wiring sparks intermittently below."
on_enter:
diff --git a/data/rooms/example/agility/99999204.yaml b/data/rooms/example_unused/agility/99999204.yaml
index 7ddf6a1..1555dbc 100644
--- a/data/rooms/example/agility/99999204.yaml
+++ b/data/rooms/example_unused/agility/99999204.yaml
@@ -1,4 +1,3 @@
-id: 99999204
name: "Ventilation Shaft - Narrow Vent"
description: "The passage narrows dramatically here, becoming a tight rectangular vent barely wide enough to fit through. Scratches on the metal walls suggest others have squeezed through before you."
on_enter:
diff --git a/data/rooms/example/agility/99999205.yaml b/data/rooms/example_unused/agility/99999205.yaml
index 3810925..2fc75c2 100644
--- a/data/rooms/example/agility/99999205.yaml
+++ b/data/rooms/example_unused/agility/99999205.yaml
@@ -1,4 +1,3 @@
-id: 99999205
name: "Ventilation Shaft - Emergency Chute"
description: "A smooth metal chute angles steeply downward, polished by countless slides. An old emergency evacuation sign hangs crookedly on the wall. This is the final obstacle -- the chute leads back to the training grounds."
on_enter:
diff --git a/data/rooms/example/agility/99999210.yaml b/data/rooms/example_unused/agility/99999210.yaml
index 0ecfb1a..de1d928 100644
--- a/data/rooms/example/agility/99999210.yaml
+++ b/data/rooms/example_unused/agility/99999210.yaml
@@ -1,4 +1,3 @@
-id: 99999210
name: "Rooftop Course - Hab Block Wall"
description: "The exterior wall of Hab Block 7 rises three stories above the street. Rough permacrete and maintenance handholds provide a challenging climb. The city spreads out below, neon signs flickering in the perpetual twilight."
on_enter:
diff --git a/data/rooms/example/agility/99999211.yaml b/data/rooms/example_unused/agility/99999211.yaml
index 99497e5..88fa6a9 100644
--- a/data/rooms/example/agility/99999211.yaml
+++ b/data/rooms/example_unused/agility/99999211.yaml
@@ -1,4 +1,3 @@
-id: 99999211
name: "Rooftop Course - Building Gap"
description: "You stand on the edge of Hab Block 7's roof. Across a three-meter gap, the roof of Hab Block 8 awaits. The street below is a dizzying drop. A few old bootprints mark the takeoff point."
on_enter:
diff --git a/data/rooms/example/agility/99999212.yaml b/data/rooms/example_unused/agility/99999212.yaml
index c4bc14d..2477956 100644
--- a/data/rooms/example/agility/99999212.yaml
+++ b/data/rooms/example_unused/agility/99999212.yaml
@@ -1,4 +1,3 @@
-id: 99999212
name: "Rooftop Course - Cable Array"
description: "A tangle of power cables and data lines stretches between two antenna towers. One thick cable hangs low enough to grab. The gap below drops to a dark alleyway between hab blocks."
on_enter:
diff --git a/data/rooms/example/agility/99999213.yaml b/data/rooms/example_unused/agility/99999213.yaml
index 79da0d2..8918dbe 100644
--- a/data/rooms/example/agility/99999213.yaml
+++ b/data/rooms/example_unused/agility/99999213.yaml
@@ -1,4 +1,3 @@
-id: 99999213
name: "Rooftop Course - Narrow Beam"
description: "A structural I-beam extends across the gap between two buildings, no wider than your foot. It sways slightly in the recycled air currents. Someone has scratched tally marks into the near end."
on_enter:
diff --git a/data/rooms/example/agility/99999214.yaml b/data/rooms/example_unused/agility/99999214.yaml
index 8a040cd..13f759a 100644
--- a/data/rooms/example/agility/99999214.yaml
+++ b/data/rooms/example_unused/agility/99999214.yaml
@@ -1,4 +1,3 @@
-id: 99999214
name: "Rooftop Course - Maintenance Railing"
description: "A high maintenance railing blocks the path forward, topped with sensor equipment and warning labels. It's too high to step over but the right technique could clear it. Beyond the railing, the course continues."
on_enter:
diff --git a/data/rooms/example/agility/99999215.yaml b/data/rooms/example_unused/agility/99999215.yaml
index 4a740f7..062d4a1 100644
--- a/data/rooms/example/agility/99999215.yaml
+++ b/data/rooms/example_unused/agility/99999215.yaml
@@ -1,4 +1,3 @@
-id: 99999215
name: "Rooftop Course - Rooftop Edge"
description: "The final jump. The gap here is wider than any before -- a full four meters of empty air between you and the landing platform. Far below, the streets of the asteroid colony pulse with dim light. This is the last obstacle."
on_enter:
diff --git a/data/rooms/example/agility/99999220.yaml b/data/rooms/example_unused/agility/99999220.yaml
index f063231..7fa4b8d 100644
--- a/data/rooms/example/agility/99999220.yaml
+++ b/data/rooms/example_unused/agility/99999220.yaml
@@ -1,4 +1,3 @@
-id: 99999220
name: "Reactor Course - Scaffolding"
description: "Massive metal scaffolding surrounds the outer reactor housing. The structure vibrates with the reactor's pulse. Heat radiates from every surface, and warning klaxons sound periodically in the distance."
on_enter:
diff --git a/data/rooms/example/agility/99999221.yaml b/data/rooms/example_unused/agility/99999221.yaml
index bebfcf1..010bd44 100644
--- a/data/rooms/example/agility/99999221.yaml
+++ b/data/rooms/example_unused/agility/99999221.yaml
@@ -1,4 +1,3 @@
-id: 99999221
name: "Reactor Course - Coolant Chain"
description: "A heavy chain hangs from an overhead crane, suspended above the reactor cooling pit. The pit glows with an eerie blue-green light. The chain is your only way across -- the gantry ahead is the landing zone."
on_enter:
diff --git a/data/rooms/example/agility/99999222.yaml b/data/rooms/example_unused/agility/99999222.yaml
index 17d6395..0f8f4b9 100644
--- a/data/rooms/example/agility/99999222.yaml
+++ b/data/rooms/example_unused/agility/99999222.yaml
@@ -1,4 +1,3 @@
-id: 99999222
name: "Reactor Course - Steam Pipe"
description: "An enormous steam pipe, two meters in diameter, stretches across the reactor chamber. Steam vents periodically blast from pressure valves along its length. The pipe's surface is warm but not scalding -- yet."
on_enter:
diff --git a/data/rooms/example/agility/99999223.yaml b/data/rooms/example_unused/agility/99999223.yaml
index b945e7e..5eccf14 100644
--- a/data/rooms/example/agility/99999223.yaml
+++ b/data/rooms/example_unused/agility/99999223.yaml
@@ -1,4 +1,3 @@
-id: 99999223
name: "Reactor Course - Platform Gap"
description: "A section of the reactor maintenance platform has collapsed into the void below. Emergency barriers block the edges, but someone has moved them aside here. The gap is intimidating but clearable."
on_enter:
diff --git a/data/rooms/example/agility/99999224.yaml b/data/rooms/example_unused/agility/99999224.yaml
index 0c9f2e0..274c425 100644
--- a/data/rooms/example/agility/99999224.yaml
+++ b/data/rooms/example_unused/agility/99999224.yaml
@@ -1,4 +1,3 @@
-id: 99999224
name: "Reactor Course - Service Conduit"
description: "A narrow service conduit leads through the reactor shielding. Radiation warning symbols are painted on every surface. Damaged wiring hangs from the ceiling, sparking occasionally. It's the only way forward."
on_enter:
diff --git a/data/rooms/example/agility/99999225.yaml b/data/rooms/example_unused/agility/99999225.yaml
index feb32e9..e4aa70e 100644
--- a/data/rooms/example/agility/99999225.yaml
+++ b/data/rooms/example_unused/agility/99999225.yaml
@@ -1,4 +1,3 @@
-id: 99999225
name: "Reactor Course - Radiation Barrier"
description: "A containment barrier hums with energy, its surface shimmering with a faint purple glow. It pulses on and off in a regular cycle. Beyond it, the final stretch of the course is visible."
on_enter:
diff --git a/data/rooms/example/agility/99999226.yaml b/data/rooms/example_unused/agility/99999226.yaml
index cd1c979..6c35e88 100644
--- a/data/rooms/example/agility/99999226.yaml
+++ b/data/rooms/example_unused/agility/99999226.yaml
@@ -1,4 +1,3 @@
-id: 99999226
name: "Reactor Course - Reactor Chasm"
description: "The final obstacle. A massive chasm separates you from the exit platform, the reactor's coolant pool churning far below in shades of luminous green. A narrow runway of grating leads to the edge. This is the longest leap on the course."
on_enter:
diff --git a/data/rooms/example/player_housing/99999300.yaml b/data/rooms/example_unused/player_housing/99999300.yaml
index 124b278..986d1dd 100644
--- a/data/rooms/example/player_housing/99999300.yaml
+++ b/data/rooms/example_unused/player_housing/99999300.yaml
@@ -1,4 +1,3 @@
-id: 99999300
name: "Player House: Entrance Hall"
description: "A cozy entrance hall with polished floors and warm lighting. A welcome mat greets visitors at the door."
exits:
diff --git a/data/rooms/example/player_housing/99999301.yaml b/data/rooms/example_unused/player_housing/99999301.yaml
index ebaba3d..7341508 100644
--- a/data/rooms/example/player_housing/99999301.yaml
+++ b/data/rooms/example_unused/player_housing/99999301.yaml
@@ -1,4 +1,3 @@
-id: 99999301
name: "Player House: Workshop"
description: "A well-lit workshop with a sturdy workbench covered in tools and blueprints. Wood shavings litter the floor around the bench."
exits:
diff --git a/data/rooms/example/town/999991.yaml b/data/rooms/example_unused/town/999991.yaml
index 0231940..9f2fae4 100644
--- a/data/rooms/example/town/999991.yaml
+++ b/data/rooms/example_unused/town/999991.yaml
@@ -1,4 +1,3 @@
-id: 999991
name: "Town Square"
description: "The central square of Lumbridge. A fountain gurgles peacefully in the center. Paths lead west toward the gathering grounds and east toward the production district."
exits:
diff --git a/data/rooms/example/town/9999910.yaml b/data/rooms/example_unused/town/9999910.yaml
index 7dcbc2e..6c9614a 100644
--- a/data/rooms/example/town/9999910.yaml
+++ b/data/rooms/example_unused/town/9999910.yaml
@@ -1,4 +1,3 @@
-id: 9999910
name: "Farming Plot"
description: "A small patch of tilled soil behind a weathered fence. This area is not yet accessible."
exits:
diff --git a/data/rooms/example/town/9999911.yaml b/data/rooms/example_unused/town/9999911.yaml
index 72b5337..cc39328 100644
--- a/data/rooms/example/town/9999911.yaml
+++ b/data/rooms/example_unused/town/9999911.yaml
@@ -1,4 +1,3 @@
-id: 9999911
name: "Kitchen"
description: "A warm kitchen with a stone hearth and wooden counters. A large iron cooking range dominates one wall, and shelves are stocked with ingredients."
exits:
diff --git a/data/rooms/example/town/9999912.yaml b/data/rooms/example_unused/town/9999912.yaml
index eee3aeb..60d55a2 100644
--- a/data/rooms/example/town/9999912.yaml
+++ b/data/rooms/example_unused/town/9999912.yaml
@@ -1,4 +1,3 @@
-id: 9999912
name: "Forge"
description: "A blazing forge and anvil dominate this smoky workshop. The heat from the furnace is intense."
exits:
diff --git a/data/rooms/example/town/9999913.yaml b/data/rooms/example_unused/town/9999913.yaml
index 369fb66..24339bf 100644
--- a/data/rooms/example/town/9999913.yaml
+++ b/data/rooms/example_unused/town/9999913.yaml
@@ -1,4 +1,3 @@
-id: 9999913
name: "Crafting Workshop"
description: "A bustling workshop filled with crafting stations. A {130}spinning wheel{/} sits in one corner, a {173}pottery wheel{/} and {196}pottery oven{/} in another. Racks of tools and raw materials line the walls. The forge is just to the west."
exits:
diff --git a/data/rooms/example/town/9999914.yaml b/data/rooms/example_unused/town/9999914.yaml
index c003cf7..e2cd310 100644
--- a/data/rooms/example/town/9999914.yaml
+++ b/data/rooms/example_unused/town/9999914.yaml
@@ -1,4 +1,3 @@
-id: 9999914
name: "Fletching Bench"
description: "A workbench covered in wood shavings, feathers, and arrowheads. Racks of unfinished bows line the walls, and a pile of bowstrings sits in the corner."
exits:
diff --git a/data/rooms/example/town/9999915.yaml b/data/rooms/example_unused/town/9999915.yaml
index f632f3e..19e2d76 100644
--- a/data/rooms/example/town/9999915.yaml
+++ b/data/rooms/example_unused/town/9999915.yaml
@@ -1,4 +1,3 @@
-id: 9999915
name: "Pharmacy Lab"
description: "Shelves lined with glass vials, dried herbs, and bubbling cauldrons. This area is not yet accessible."
exits:
diff --git a/data/rooms/example/town/9999916.yaml b/data/rooms/example_unused/town/9999916.yaml
index 0a8fb95..5d3c3c2 100644
--- a/data/rooms/example/town/9999916.yaml
+++ b/data/rooms/example_unused/town/9999916.yaml
@@ -1,4 +1,3 @@
-id: 9999916
name: "Construction Site"
description: "A half-built structure surrounded by planks, nails, and blueprints. A workbench stands ready for crafting. Signs point north toward the Local Neighborhood and east toward the lumberyard."
exits:
diff --git a/data/rooms/example/town/9999917.yaml b/data/rooms/example_unused/town/9999917.yaml
index 82ff07d..5980181 100644
--- a/data/rooms/example/town/9999917.yaml
+++ b/data/rooms/example_unused/town/9999917.yaml
@@ -1,4 +1,3 @@
-id: 9999917
name: "Bonfire"
description: "A ring of stones surrounds a bed of ash. A few unlit logs wait nearby. A narrow passage leads north toward what sounds like echoing footsteps and clanging metal."
exits:
diff --git a/data/rooms/example/town/9999918.yaml b/data/rooms/example_unused/town/9999918.yaml
index baa21f4..1afdc73 100644
--- a/data/rooms/example/town/9999918.yaml
+++ b/data/rooms/example_unused/town/9999918.yaml
@@ -1,4 +1,3 @@
-id: 9999918
name: "Thieves' Den"
description: "A shadowy hideout with lockpicks, dark cloaks, and wanted posters on the walls. This area is not yet accessible."
exits:
diff --git a/data/rooms/example/town/9999919.yaml b/data/rooms/example_unused/town/9999919.yaml
index 2fd5c5d..2b199ef 100644
--- a/data/rooms/example/town/9999919.yaml
+++ b/data/rooms/example_unused/town/9999919.yaml
@@ -1,4 +1,3 @@
-id: 9999919
name: "Agility Course"
description: "A training ground with balance beams, monkey bars, and climbing nets. This area is not yet accessible."
exits:
diff --git a/data/rooms/example/town/999992.yaml b/data/rooms/example_unused/town/999992.yaml
index 90bacac..f37ec6a 100644
--- a/data/rooms/example/town/999992.yaml
+++ b/data/rooms/example_unused/town/999992.yaml
@@ -1,4 +1,3 @@
-id: 999992
name: "Fishing Spot"
description: "A quiet spot along the riverbank. The water is clear and fish can be seen swimming beneath the surface. You can cast a line here with a fishing rod and bait."
exits:
diff --git a/data/rooms/example/town/9999920.yaml b/data/rooms/example_unused/town/9999920.yaml
index 88a2e3c..f097b04 100644
--- a/data/rooms/example/town/9999920.yaml
+++ b/data/rooms/example_unused/town/9999920.yaml
@@ -1,4 +1,3 @@
-id: 9999920
name: "Assassin's Bureau"
description: "A discreet office with job postings pinned to a corkboard. This area is not yet accessible."
exits:
diff --git a/data/rooms/example/town/9999921.yaml b/data/rooms/example_unused/town/9999921.yaml
index 8c399fe..5d7b270 100644
--- a/data/rooms/example/town/9999921.yaml
+++ b/data/rooms/example_unused/town/9999921.yaml
@@ -1,4 +1,3 @@
-id: 9999921
name: "Combat Arena"
description: "A sandy training ground with practice dummies and sparring rings. Several men wander here looking for a fight."
exits:
diff --git a/data/rooms/example/town/9999922.yaml b/data/rooms/example_unused/town/9999922.yaml
index fb2fe9f..7084650 100644
--- a/data/rooms/example/town/9999922.yaml
+++ b/data/rooms/example_unused/town/9999922.yaml
@@ -1,4 +1,3 @@
-id: 9999922
name: "West of Town Square"
description: ""
exits:
diff --git a/data/rooms/example/town/9999923.yaml b/data/rooms/example_unused/town/9999923.yaml
index 6160f00..95f8b2f 100644
--- a/data/rooms/example/town/9999923.yaml
+++ b/data/rooms/example_unused/town/9999923.yaml
@@ -1,4 +1,3 @@
-id: 9999923
name: "West of West of Town Square"
description: "Here is a description of where we are!"
exits:
diff --git a/data/rooms/example/town/9999924.yaml b/data/rooms/example_unused/town/9999924.yaml
index 4c4592f..78ce26f 100644
--- a/data/rooms/example/town/9999924.yaml
+++ b/data/rooms/example_unused/town/9999924.yaml
@@ -1,4 +1,3 @@
-id: 9999924
name: "South of West of West of Town Square"
description: "Here is a description of where we are!"
exits:
diff --git a/data/rooms/example/town/9999925.yaml b/data/rooms/example_unused/town/9999925.yaml
index b9ad750..50c2a5d 100644
--- a/data/rooms/example/town/9999925.yaml
+++ b/data/rooms/example_unused/town/9999925.yaml
@@ -1,4 +1,3 @@
-id: 9999925
name: "East of South of West of West of Town Square"
description: "Here is a description of where we are!"
exits:
diff --git a/data/rooms/example/town/9999926.yaml b/data/rooms/example_unused/town/9999926.yaml
index f776337..72c6d5b 100644
--- a/data/rooms/example/town/9999926.yaml
+++ b/data/rooms/example_unused/town/9999926.yaml
@@ -1,4 +1,3 @@
-id: 9999926
name: "East of South of West of West of Town Square"
description: "Here is a description of where we are!"
exits:
diff --git a/data/rooms/example/town/9999927.yaml b/data/rooms/example_unused/town/9999927.yaml
index 1c108e6..145e1bd 100644
--- a/data/rooms/example/town/9999927.yaml
+++ b/data/rooms/example_unused/town/9999927.yaml
@@ -1,4 +1,3 @@
-id: 9999927
name: "East of South of West of West of Town Square"
description: "Here is a description of where we are!"
exits:
diff --git a/data/rooms/example/town/9999928.yaml b/data/rooms/example_unused/town/9999928.yaml
index 79917f1..40f92ec 100644
--- a/data/rooms/example/town/9999928.yaml
+++ b/data/rooms/example_unused/town/9999928.yaml
@@ -1,4 +1,3 @@
-id: 9999928
name: "East of South of West of West of Town Square"
description: "Here is a description of where we are!"
exits:
diff --git a/data/rooms/example/town/999993.yaml b/data/rooms/example_unused/town/999993.yaml
index 078da89..1759e4e 100644
--- a/data/rooms/example/town/999993.yaml
+++ b/data/rooms/example_unused/town/999993.yaml
@@ -1,4 +1,3 @@
-id: 999993
name: "Fly Fishing Pool"
description: "A calm pool where insects hover over the water. Perfect for fly fishing."
exits:
diff --git a/data/rooms/example/town/9999930.yaml b/data/rooms/example_unused/town/9999930.yaml
index 6e8a4c2..f12b710 100644
--- a/data/rooms/example/town/9999930.yaml
+++ b/data/rooms/example_unused/town/9999930.yaml
@@ -1,4 +1,3 @@
-id: 9999930
name: "Above Town Square"
description: "The central square of Lumbridge. A fountain gurgles peacefully in the center. Paths lead west toward the gathering grounds and east toward the production district."
exits:
diff --git a/data/rooms/example/town/9999931.yaml b/data/rooms/example_unused/town/9999931.yaml
index 9a93023..f4d0215 100644
--- a/data/rooms/example/town/9999931.yaml
+++ b/data/rooms/example_unused/town/9999931.yaml
@@ -1,4 +1,3 @@
-id: 9999931
name: "Below Town Square"
description: "The central square of Lumbridge. A fountain gurgles peacefully in the center. Paths lead west toward the gathering grounds and east toward the production district."
exits:
diff --git a/data/rooms/example/town/999994.yaml b/data/rooms/example_unused/town/999994.yaml
index e8c3453..8b9ee4c 100644
--- a/data/rooms/example/town/999994.yaml
+++ b/data/rooms/example_unused/town/999994.yaml
@@ -1,4 +1,3 @@
-id: 999994
name: "Woodcutting Glade"
description: "A sunny glade at the edge of the forest. A sturdy tree stands here, perfect for practicing woodcutting. A solid rock formation near the edge of the glade looks like it could provide cover."
exits:
diff --git a/data/rooms/example/town/999995.yaml b/data/rooms/example_unused/town/999995.yaml
index 767fe73..3c1defb 100644
--- a/data/rooms/example/town/999995.yaml
+++ b/data/rooms/example_unused/town/999995.yaml
@@ -1,4 +1,3 @@
-id: 999995
name: "Oak Grove"
description: "A stand of young oak trees. The wood here is tougher but more valuable."
exits:
diff --git a/data/rooms/example/town/999996.yaml b/data/rooms/example_unused/town/999996.yaml
index 86b1b26..22a2cb5 100644
--- a/data/rooms/example/town/999996.yaml
+++ b/data/rooms/example_unused/town/999996.yaml
@@ -1,4 +1,3 @@
-id: 999996
name: "Mining Pit"
description: "A small mining pit. The rocky walls glint with veins of copper ore."
exits:
diff --git a/data/rooms/example/town/999997.yaml b/data/rooms/example_unused/town/999997.yaml
index 847da5c..aff9a6c 100644
--- a/data/rooms/example/town/999997.yaml
+++ b/data/rooms/example_unused/town/999997.yaml
@@ -1,4 +1,3 @@
-id: 999997
name: "Deep Mine"
description: "A deeper mine shaft. Higher quality ores can be found here. This area is not yet accessible."
exits:
diff --git a/data/rooms/example/town/999998.yaml b/data/rooms/example_unused/town/999998.yaml
index 6700e9a..1fd0de5 100644
--- a/data/rooms/example/town/999998.yaml
+++ b/data/rooms/example_unused/town/999998.yaml
@@ -1,4 +1,3 @@
-id: 999998
name: "Hacking Lab"
description: "A dimly lit room filled with old terminals and flickering screens. Cables dangle from the ceiling, some still sparking. The air smells of ozone and burnt circuitry. A {40}basic terminal{/} against the far wall still has power."
exits:
diff --git a/data/rooms/example/town/999999.yaml b/data/rooms/example_unused/town/999999.yaml
index 71b7f5f..3bc9938 100644
--- a/data/rooms/example/town/999999.yaml
+++ b/data/rooms/example_unused/town/999999.yaml
@@ -1,4 +1,3 @@
-id: 999999
name: "Scavenging Post"
description: "A cluttered yard full of {243}scrap{/} and discarded technology. Piles of salvageable debris are scattered across the ground. The air smells of ozone and rust."
exits:
diff --git a/data/rooms/example/underground/9999950.yaml b/data/rooms/example_unused/underground/9999950.yaml
index adbad79..8701533 100644
--- a/data/rooms/example/underground/9999950.yaml
+++ b/data/rooms/example_unused/underground/9999950.yaml
@@ -1,4 +1,3 @@
-id: 9999950
name: "The Assassin's Den"
description: "A dimly lit basement accessible through a trapdoor. Tactical maps and bounty posters line the walls. The air smells of gun oil and burnt ozone. {141}The Client{/} sits behind a reinforced desk."
exits:
diff --git a/data/rooms/example/underground/9999951.yaml b/data/rooms/example_unused/underground/9999951.yaml
index 4dbd966..9c7707a 100644
--- a/data/rooms/example/underground/9999951.yaml
+++ b/data/rooms/example_unused/underground/9999951.yaml
@@ -1,4 +1,3 @@
-id: 9999951
name: "Sewer Tunnels"
description: "Dark, damp tunnels beneath the settlement. The floor is slick with moisture and something {82}slimy{/}. The smell is indescribable."
exits:
diff --git a/data/rooms/example/underground/9999952.yaml b/data/rooms/example_unused/underground/9999952.yaml
index 7c8d871..40c89a9 100644
--- a/data/rooms/example/underground/9999952.yaml
+++ b/data/rooms/example_unused/underground/9999952.yaml
@@ -1,4 +1,3 @@
-id: 9999952
name: "Abandoned Sector"
description: "A decommissioned sector of the asteroid's infrastructure. Broken monitors flicker and exposed wiring {214}sparks{/} dangerously."
exits:
diff --git a/data/rooms/example/underground/9999953.yaml b/data/rooms/example_unused/underground/9999953.yaml
index bad2d27..4396cfb 100644
--- a/data/rooms/example/underground/9999953.yaml
+++ b/data/rooms/example_unused/underground/9999953.yaml
@@ -1,4 +1,3 @@
-id: 9999953
name: "Deep Tunnels"
description: "The tunnels descend deeper into the asteroid's core. Strange chitinous scraping echoes from the darkness. The walls are scarred with {130}claw marks{/}."
exits:
diff --git a/data/rooms/example/underground/9999954.yaml b/data/rooms/example_unused/underground/9999954.yaml
index 315a831..8348801 100644
--- a/data/rooms/example/underground/9999954.yaml
+++ b/data/rooms/example_unused/underground/9999954.yaml
@@ -1,4 +1,3 @@
-id: 9999954
name: "The Void Chamber"
description: "A vast cavern where reality seems to thin. The air shimmers with {141}spectral energy{/} and strange whispers fill your mind."
exits:
diff --git a/data/rooms/example/underground/9999955.yaml b/data/rooms/example_unused/underground/9999955.yaml
index 63f9dbd..2cce00a 100644
--- a/data/rooms/example/underground/9999955.yaml
+++ b/data/rooms/example_unused/underground/9999955.yaml
@@ -1,4 +1,3 @@
-id: 9999955
name: "The Deeper Tunnels"
description: "A junction deep beneath the void chamber. The walls here are reinforced with pre-regression alloys. Several passages branch off into the darkness, and you can hear the sounds of machinery echoing from all directions. A steep shaft descends further into the depths."
exits:
diff --git a/data/rooms/example/underground/9999956.yaml b/data/rooms/example_unused/underground/9999956.yaml
index 74b75a9..b5996ae 100644
--- a/data/rooms/example/underground/9999956.yaml
+++ b/data/rooms/example_unused/underground/9999956.yaml
@@ -1,4 +1,3 @@
-id: 9999956
name: "Irradiated Sector"
description: "Warning symbols cover every surface, their paint long since faded. A faint green glow emanates from cracks in the walls. The air is thick with the taste of old radiation."
exits:
diff --git a/data/rooms/example/underground/9999957.yaml b/data/rooms/example_unused/underground/9999957.yaml
index b32c7aa..be20359 100644
--- a/data/rooms/example/underground/9999957.yaml
+++ b/data/rooms/example_unused/underground/9999957.yaml
@@ -1,4 +1,3 @@
-id: 9999957
name: "Drone Assembly"
description: "A long-abandoned drone manufacturing bay. Conveyor belts lie still, and half-assembled drone chassis hang from the ceiling. A few of them still twitch with residual power."
exits:
diff --git a/data/rooms/example/underground/9999958.yaml b/data/rooms/example_unused/underground/9999958.yaml
index 1834260..09bd869 100644
--- a/data/rooms/example/underground/9999958.yaml
+++ b/data/rooms/example_unused/underground/9999958.yaml
@@ -1,4 +1,3 @@
-id: 9999958
name: "Security Checkpoint"
description: "A fortified security station with blast shields and a decommissioned weapons locker. Scorch marks on the walls tell the story of a last stand."
exits:
diff --git a/data/rooms/example/underground/9999959.yaml b/data/rooms/example_unused/underground/9999959.yaml
index 21f526b..29ca4fc 100644
--- a/data/rooms/example/underground/9999959.yaml
+++ b/data/rooms/example_unused/underground/9999959.yaml
@@ -1,4 +1,3 @@
-id: 9999959
name: "Plasma Core"
description: "A massive plasma containment chamber with cracked magnetic coils lining the walls. Streams of superheated gas leak from the containment vessel, forming shimmering wraith-like shapes in the air."
exits:
diff --git a/data/rooms/example/underground/9999960.yaml b/data/rooms/example_unused/underground/9999960.yaml
index 9a45e32..56cca24 100644
--- a/data/rooms/example/underground/9999960.yaml
+++ b/data/rooms/example_unused/underground/9999960.yaml
@@ -1,4 +1,3 @@
-id: 9999960
name: "Heavy Mech Bay"
description: "An enormous maintenance bay built to house assault mechs. A gantry crane hangs overhead, and hydraulic lifts dot the floor. The bay's occupant is still active — and it has noticed you."
exits:
diff --git a/data/rooms/example/underground/9999961.yaml b/data/rooms/example_unused/underground/9999961.yaml
index caf4eab..2d1e75c 100644
--- a/data/rooms/example/underground/9999961.yaml
+++ b/data/rooms/example_unused/underground/9999961.yaml
@@ -1,4 +1,3 @@
-id: 9999961
name: "Synth Lab"
description: "A sterile laboratory where combat androids were designed and assembled. White panels line the walls, some splattered with old coolant stains. Diagnostic screens flicker with corrupted data."
exits:
diff --git a/data/rooms/example/underground/9999962.yaml b/data/rooms/example_unused/underground/9999962.yaml
index 531ead1..b5b89c4 100644
--- a/data/rooms/example/underground/9999962.yaml
+++ b/data/rooms/example_unused/underground/9999962.yaml
@@ -1,4 +1,3 @@
-id: 9999962
name: "Abandoned Bunker"
description: "A fortified bunker from some forgotten conflict. Sandbags are piled in the corners and spent shell casings litter the floor. A solitary figure stands watch over the remains."
exits:
diff --git a/data/rooms/example/underground/9999963.yaml b/data/rooms/example_unused/underground/9999963.yaml
index 99b8f90..fca468e 100644
--- a/data/rooms/example/underground/9999963.yaml
+++ b/data/rooms/example_unused/underground/9999963.yaml
@@ -1,4 +1,3 @@
-id: 9999963
name: "Magma Conduit"
description: "A geothermal vent has been tapped and routed through industrial conduits. The heat is oppressive, and molten rivulets course through channels in the floor. Something moves within the glowing flow."
exits:
diff --git a/data/rooms/example/underground/9999964.yaml b/data/rooms/example_unused/underground/9999964.yaml
index 6bac466..4e74383 100644
--- a/data/rooms/example/underground/9999964.yaml
+++ b/data/rooms/example_unused/underground/9999964.yaml
@@ -1,4 +1,3 @@
-id: 9999964
name: "The Foundry"
description: "A vast smelting facility where sentinels were once forged. Massive crucibles hang from chains, and rivers of cooled slag form a maze-like floor. A single iron sentinel stands guard over the dormant machinery."
exits:
diff --git a/data/rooms/example/underground/9999965.yaml b/data/rooms/example_unused/underground/9999965.yaml
index 47aed6b..424a4cd 100644
--- a/data/rooms/example/underground/9999965.yaml
+++ b/data/rooms/example_unused/underground/9999965.yaml
@@ -1,4 +1,3 @@
-id: 65
name: "Titan's Rest"
description: "A colossal vault built to house something immense. The ceiling vanishes into darkness above, and the walls are etched with maintenance schematics for a machine of staggering proportions. At the center, a titan sentinel awakens."
exits:
diff --git a/data/rooms/example/underground/9999966.yaml b/data/rooms/example_unused/underground/9999966.yaml
index 755d5e2..a876453 100644
--- a/data/rooms/example/underground/9999966.yaml
+++ b/data/rooms/example_unused/underground/9999966.yaml
@@ -1,4 +1,3 @@
-id: 66
name: "Psionic Nexus"
description: "Reality grows thin here. The walls are covered in strange geometric patterns that hurt to look at directly. A low hum vibrates through your skull, and the air seems to bend around a central point of unseen pressure."
exits:
diff --git a/data/rooms/example/underground/9999967.yaml b/data/rooms/example_unused/underground/9999967.yaml
index 6b8d663..494fe9e 100644
--- a/data/rooms/example/underground/9999967.yaml
+++ b/data/rooms/example_unused/underground/9999967.yaml
@@ -1,4 +1,3 @@
-id: 67
name: "Ancient Chamber"
description: "A perfectly spherical room carved from an unknown black metal. Glowing runes spiral across every surface in patterns that predate the asteroid itself. At the center, an ancient construct stirs from its eons-long vigil."
exits:
diff --git a/data/rooms/example/underground/9999968.yaml b/data/rooms/example_unused/underground/9999968.yaml
index f631981..6fe1aa0 100644
--- a/data/rooms/example/underground/9999968.yaml
+++ b/data/rooms/example_unused/underground/9999968.yaml
@@ -1,4 +1,3 @@
-id: 68
name: "The Void"
description: "The bottom of the world. Light itself seems to hesitate before entering this place. The floor is unnaturally smooth black glass, and the only sound is the beating of your own heart. Something waits in the darkness — something that was here before the asteroid, before the colony, before anything."
exits:
diff --git a/data/rooms/example/wilderness/99999150.yaml b/data/rooms/example_unused/wilderness/99999150.yaml
index 3e74da2..f11610f 100644
--- a/data/rooms/example/wilderness/99999150.yaml
+++ b/data/rooms/example_unused/wilderness/99999150.yaml
@@ -1,4 +1,3 @@
-id: 150
name: "Hydroponics Bay"
description: "A large enclosed area with climate-controlled growing stations. {34}Lush green patches{/} of soil are laid out in neat rows under artificial UV lamps. A {94}tool shed{/} stands near the entrance. Exits lead to specialized growing areas."
exits:
diff --git a/data/rooms/example/wilderness/99999151.yaml b/data/rooms/example_unused/wilderness/99999151.yaml
index 4242270..88c1452 100644
--- a/data/rooms/example/wilderness/99999151.yaml
+++ b/data/rooms/example_unused/wilderness/99999151.yaml
@@ -1,4 +1,3 @@
-id: 151
name: "Herb Garden"
description: "A dedicated section of the hydroponics bay for growing herbs. {28}Herb patches{/} are arranged in two rows under specialized grow lights. The air here smells faintly of fresh vegetation."
exits:
diff --git a/data/rooms/example/wilderness/99999152.yaml b/data/rooms/example_unused/wilderness/99999152.yaml
index 787bbbd..6a23990 100644
--- a/data/rooms/example/wilderness/99999152.yaml
+++ b/data/rooms/example_unused/wilderness/99999152.yaml
@@ -1,4 +1,3 @@
-id: 152
name: "Allotment Field"
description: "A section with larger soil beds for growing vegetables. {94}Allotment patches{/} stretch across the floor under warm overhead lamps. A single {213}flower patch{/} sits in the corner."
exits:
diff --git a/data/rooms/example/wilderness/99999160.yaml b/data/rooms/example_unused/wilderness/99999160.yaml
index 7f30c34..e90f19a 100644
--- a/data/rooms/example/wilderness/99999160.yaml
+++ b/data/rooms/example_unused/wilderness/99999160.yaml
@@ -1,4 +1,3 @@
-id: 160
name: "Market Square"
description: "A noisy open-air market wedged between crumbling hab-blocks. Vendors hawk salvaged tech and reconstituted food from makeshift stalls. A {220 bold}Guard{/} watches over the area with a stern expression."
exits:
diff --git a/data/rooms/example/wilderness/99999161.yaml b/data/rooms/example_unused/wilderness/99999161.yaml
index 7c2c140..a82c5f1 100644
--- a/data/rooms/example/wilderness/99999161.yaml
+++ b/data/rooms/example_unused/wilderness/99999161.yaml
@@ -1,4 +1,3 @@
-id: 161
name: "Farm Outpost"
description: "A cluster of hydroponic grow-pods on the asteroid's surface, shielded by a flickering atmospheric dome. Rows of bio-luminescent crops stretch into the distance."
exits:
diff --git a/data/rooms/example/wilderness/99999162.yaml b/data/rooms/example_unused/wilderness/99999162.yaml
index 6aab585..292e6fa 100644
--- a/data/rooms/example/wilderness/99999162.yaml
+++ b/data/rooms/example_unused/wilderness/99999162.yaml
@@ -1,4 +1,3 @@
-id: 162
name: "Detention Cell"
description: "A small, grimy holding cell. The walls are scratched with tally marks from previous occupants. A heavy door bars the only exit."
exits:
diff --git a/data/rooms/example/wilderness/99999170.yaml b/data/rooms/example_unused/wilderness/99999170.yaml
index 35d539f..3ad1581 100644
--- a/data/rooms/example/wilderness/99999170.yaml
+++ b/data/rooms/example_unused/wilderness/99999170.yaml
@@ -1,4 +1,3 @@
-id: 170
name: "Local Neighborhood"
description: "A quiet cul-de-sac of modest homes, each with a small garden plot. An estate directory terminal glows in the center, listing residents and property information."
exits:
diff --git a/data/rooms/example/wilderness/99999171.yaml b/data/rooms/example_unused/wilderness/99999171.yaml
index 552ccd4..012849c 100644
--- a/data/rooms/example/wilderness/99999171.yaml
+++ b/data/rooms/example_unused/wilderness/99999171.yaml
@@ -1,4 +1,3 @@
-id: 171
name: "Lumberyard"
description: "Stacks of fresh-cut timber fill the air with the scent of pine. A massive industrial sawmill hums in the background, operated by a burly worker."
exits:
diff --git a/data/rooms/example/wilderness/99999180.yaml b/data/rooms/example_unused/wilderness/99999180.yaml
index 866d658..de7773d 100644
--- a/data/rooms/example/wilderness/99999180.yaml
+++ b/data/rooms/example_unused/wilderness/99999180.yaml
@@ -1,4 +1,3 @@
-id: 99999180
name: "Construction Yard Entrance"
description: "A fenced staging area at the edge of the terraforming works. Crates of brackets and coils of cable are stacked under a sturdy section of atmospheric dome. To the {220}north{/} the dome shielding gives out and the open solar array field begins."
exits:
diff --git a/data/rooms/example/wilderness/99999181.yaml b/data/rooms/example_unused/wilderness/99999181.yaml
index aae861b..a5af7be 100644
--- a/data/rooms/example/wilderness/99999181.yaml
+++ b/data/rooms/example_unused/wilderness/99999181.yaml
@@ -1,4 +1,3 @@
-id: 99999181
name: "Exposed Solar Array"
description: "A wide field of steel frames stretches under a torn section of the atmospheric dome. Raw sunlight blazes down with nothing to filter it. Half-built {220}solar panel frames{/} wait to be finished. A jagged {248}rock outcrop{/} on the south edge throws a patch of shade. The yard entrance lies back to the {34}south{/}."
hazard: solar_radiation
diff --git a/data/rooms/intro/1001.yaml b/data/rooms/intro/1001.yaml
index 7ad95fa..543acea 100644
--- a/data/rooms/intro/1001.yaml
+++ b/data/rooms/intro/1001.yaml
@@ -1,5 +1,6 @@
-id: 1001
-name: "Inside the Landing Craft"
-description: "Rows of sturdy metal seats fill the cramped cabin of the landing craft, harnesses still swinging from the descent. A thin haze of recycled air hangs in the light spilling through the open hatch. The only way out is north, onto the landing pad."
+name: "Inside Transport Shuttle"
+description: "A dim, metallic shuttle interior with a few uncomfortable rows of steel seats. A large framed sign hangs next to the closed cockpit door. A piston-powered staircase leads down out the back of the small craft."
+objects:
+ - id: 1001_sign
exits:
- north: 1002
+ down: 1002
diff --git a/data/rooms/intro/1002.yaml b/data/rooms/intro/1002.yaml
index 2c9bb4f..9bcbd76 100644
--- a/data/rooms/intro/1002.yaml
+++ b/data/rooms/intro/1002.yaml
@@ -1,11 +1,10 @@
-id: 1002
name: "Landing Pad"
-description: "A large, empty concrete pad in the middle of the ocean. The horizon stretches out in all directions."
+description: "A large, circular, concrete landing pad sits empty in the middle of a blue ocean surrounded by black netting to catch anyone careless enough to fall off. Waves quietly lick the structural pylons as they roll towards the nearby beach. North is a short, wide concrete through a small, doorless red building with a wooden sign above the entryway reading \"Vesta Customs\""
descriptions:
- condition:
- player_flag: denali_intro_done
+ player_flag: 1002_intro_done
not: true
- text: "A large concrete pad sits in the middle of an endless ocean. A mass of a couple dozen people spill from a small building to the north, their faces a churn of anxiety, impatience, and relief."
+ text: "A large, circular, concrete landing pad sits in the middle of a blue ocean with a transport shuttle taking up nearly all of the walkable area. A crowd of perhaps a dozen people are shambling of a squat, doorless building to the north. A sign above the entryway reads \"Vesta Customs\""
objects:
- id: 1002_crowd
- id: 1002_shuttle
@@ -14,30 +13,30 @@ exits:
south:
room: 1001
condition:
- player_flag: has_ticket
+ player_flag: always_false
blocked_message: "You don't have a ticket!"
north:
room: 1003
condition:
- player_flag: denali_lined_up
- blocked_message: "A mass of people blocks the way."
+ player_flag: 1002_lined_up
+ blocked_message: "A mass of people is still pouring out of the building!"
set_player_flags:
- denali_intro_done: true
+ 1002_intro_done: true
on_enter:
- condition:
- player_flag: denali_lined_up
+ player_flag: 1002_lined_up
not: true
delay: 5
- message: "Some of the group look you up and down."
+ message: "A few in the crowd openly look you up and down consideringly, as if you're heading the wrong direction."
- condition:
- player_flag: denali_lined_up
+ player_flag: 1002_lined_up
not: true
delay: 5
- message: "The pilot pops out of the hatch of the craft and calls out, \"Shuttle to Passenger Liner Denali. Tickets out, please! Nice and orderly!\""
+ message: "The pilot pops out of the hatch of the craft and calls out, \"Shuttle to Passenger Barge Denali. Tickets out, please! Nice and orderly!\""
set_player_flags:
- denali_lined_up: true
+ 1002_lined_up: true
- condition:
- player_flag: denali_lined_up
+ player_flag: 1002_lined up
not: true
- delay: 0
- message: "The people line up single file."
+ delay: 3
+ message: "The people shamble into a line, dragging their luggage out of the narrow path to clear the way for you."
diff --git a/data/rooms/intro/1003.yaml b/data/rooms/intro/1003.yaml
index a3fd89f..fba85c6 100644
--- a/data/rooms/intro/1003.yaml
+++ b/data/rooms/intro/1003.yaml
@@ -1,4 +1,3 @@
-id: 1003
name: "Customs Building"
description: "A cramped customs checkpoint lit by flickering panels. Officials in grey uniforms wave the new arrivals through, one at a time. (This area is still under construction.)"
exits:
diff --git a/data/techs/amplifier_1.yaml b/data/techs/amplifier_1.yaml
index e782461..6b47c9d 100644
--- a/data/techs/amplifier_1.yaml
+++ b/data/techs/amplifier_1.yaml
@@ -1,4 +1,3 @@
-id: amplifier_1
name: Power Amplifier
level: 7
drain_rate: 0.05
diff --git a/data/techs/amplifier_2.yaml b/data/techs/amplifier_2.yaml
index 1dc1834..3a8950a 100644
--- a/data/techs/amplifier_2.yaml
+++ b/data/techs/amplifier_2.yaml
@@ -1,4 +1,3 @@
-id: amplifier_2
name: Enhanced Amplifier
level: 23
drain_rate: 0.10
diff --git a/data/techs/amplifier_3.yaml b/data/techs/amplifier_3.yaml
index f20c8ac..ff72433 100644
--- a/data/techs/amplifier_3.yaml
+++ b/data/techs/amplifier_3.yaml
@@ -1,4 +1,3 @@
-id: amplifier_3
name: Superior Amplifier
level: 49
drain_rate: 0.15
diff --git a/data/techs/clarity_1.yaml b/data/techs/clarity_1.yaml
index 431fede..47afa33 100644
--- a/data/techs/clarity_1.yaml
+++ b/data/techs/clarity_1.yaml
@@ -1,4 +1,3 @@
-id: clarity_1
name: Clarity
level: 4
drain_rate: 0.05
diff --git a/data/techs/clarity_2.yaml b/data/techs/clarity_2.yaml
index ee75dd2..9db17ed 100644
--- a/data/techs/clarity_2.yaml
+++ b/data/techs/clarity_2.yaml
@@ -1,4 +1,3 @@
-id: clarity_2
name: Enhanced Clarity
level: 16
drain_rate: 0.10
diff --git a/data/techs/clarity_3.yaml b/data/techs/clarity_3.yaml
index dddcbfa..6ab54f7 100644
--- a/data/techs/clarity_3.yaml
+++ b/data/techs/clarity_3.yaml
@@ -1,4 +1,3 @@
-id: clarity_3
name: Superior Clarity
level: 44
drain_rate: 0.15
diff --git a/data/techs/focus_1.yaml b/data/techs/focus_1.yaml
index b76a3ad..07139c8 100644
--- a/data/techs/focus_1.yaml
+++ b/data/techs/focus_1.yaml
@@ -1,4 +1,3 @@
-id: focus_1
name: Neural Focus
level: 9
drain_rate: 0.05
diff --git a/data/techs/focus_2.yaml b/data/techs/focus_2.yaml
index 5e537ef..cbda53a 100644
--- a/data/techs/focus_2.yaml
+++ b/data/techs/focus_2.yaml
@@ -1,4 +1,3 @@
-id: focus_2
name: Enhanced Focus
level: 27
drain_rate: 0.10
diff --git a/data/techs/focus_3.yaml b/data/techs/focus_3.yaml
index 2cbd4b5..3f777bf 100644
--- a/data/techs/focus_3.yaml
+++ b/data/techs/focus_3.yaml
@@ -1,4 +1,3 @@
-id: focus_3
name: Superior Focus
level: 55
drain_rate: 0.15
diff --git a/data/techs/fortify.yaml b/data/techs/fortify.yaml
index 79632ab..c7a3fcf 100644
--- a/data/techs/fortify.yaml
+++ b/data/techs/fortify.yaml
@@ -1,4 +1,3 @@
-id: fortify
name: Fortify
level: 65
drain_rate: 0.25
diff --git a/data/techs/overclock.yaml b/data/techs/overclock.yaml
index ff92bd1..853365f 100644
--- a/data/techs/overclock.yaml
+++ b/data/techs/overclock.yaml
@@ -1,4 +1,3 @@
-id: overclock
name: Overclock
level: 60
drain_rate: 0.25
diff --git a/data/techs/preserve.yaml b/data/techs/preserve.yaml
index c299a98..eec5e88 100644
--- a/data/techs/preserve.yaml
+++ b/data/techs/preserve.yaml
@@ -1,4 +1,3 @@
-id: preserve
name: Power Saver
level: 55
drain_rate: 0.05
diff --git a/data/techs/protect_melee.yaml b/data/techs/protect_melee.yaml
index 1558562..730afcd 100644
--- a/data/techs/protect_melee.yaml
+++ b/data/techs/protect_melee.yaml
@@ -1,4 +1,3 @@
-id: protect_melee
name: Kinetic Barrier
level: 37
drain_rate: 0.20
diff --git a/data/techs/protect_ranged.yaml b/data/techs/protect_ranged.yaml
index 40e6fdc..2557af8 100644
--- a/data/techs/protect_ranged.yaml
+++ b/data/techs/protect_ranged.yaml
@@ -1,4 +1,3 @@
-id: protect_ranged
name: Projectile Screen
level: 40
drain_rate: 0.20
diff --git a/data/techs/protect_science.yaml b/data/techs/protect_science.yaml
index 39436f0..8dc4e76 100644
--- a/data/techs/protect_science.yaml
+++ b/data/techs/protect_science.yaml
@@ -1,4 +1,3 @@
-id: protect_science
name: Neural Firewall
level: 43
drain_rate: 0.20
diff --git a/data/techs/rapid_heal.yaml b/data/techs/rapid_heal.yaml
index 3c69cb3..fe36c19 100644
--- a/data/techs/rapid_heal.yaml
+++ b/data/techs/rapid_heal.yaml
@@ -1,4 +1,3 @@
-id: rapid_heal
name: Rapid Repair
level: 31
drain_rate: 0.15
diff --git a/data/techs/regen.yaml b/data/techs/regen.yaml
index b021f5e..94855b4 100644
--- a/data/techs/regen.yaml
+++ b/data/techs/regen.yaml
@@ -1,4 +1,3 @@
-id: regen
name: Nano Repair
level: 22
drain_rate: 0.10
diff --git a/data/techs/retribution.yaml b/data/techs/retribution.yaml
index ca105e2..a6350ee 100644
--- a/data/techs/retribution.yaml
+++ b/data/techs/retribution.yaml
@@ -1,4 +1,3 @@
-id: retribution
name: Dead Man's Switch
level: 46
drain_rate: 0.10
diff --git a/data/techs/shield_1.yaml b/data/techs/shield_1.yaml
index 304844b..0a445c2 100644
--- a/data/techs/shield_1.yaml
+++ b/data/techs/shield_1.yaml
@@ -1,4 +1,3 @@
-id: shield_1
name: Energy Shield
level: 10
drain_rate: 0.05
diff --git a/data/techs/shield_2.yaml b/data/techs/shield_2.yaml
index 648991c..bb55150 100644
--- a/data/techs/shield_2.yaml
+++ b/data/techs/shield_2.yaml
@@ -1,4 +1,3 @@
-id: shield_2
name: Enhanced Shield
level: 28
drain_rate: 0.10
diff --git a/data/techs/shield_3.yaml b/data/techs/shield_3.yaml
index 2684d15..da1358f 100644
--- a/data/techs/shield_3.yaml
+++ b/data/techs/shield_3.yaml
@@ -1,4 +1,3 @@
-id: shield_3
name: Superior Shield
level: 52
drain_rate: 0.15
diff --git a/data/techs/targeting_1.yaml b/data/techs/targeting_1.yaml
index 1ade8c8..13a3cdb 100644
--- a/data/techs/targeting_1.yaml
+++ b/data/techs/targeting_1.yaml
@@ -1,4 +1,3 @@
-id: targeting_1
name: Targeting System
level: 8
drain_rate: 0.05
diff --git a/data/techs/targeting_2.yaml b/data/techs/targeting_2.yaml
index fd807d7..55eaf5e 100644
--- a/data/techs/targeting_2.yaml
+++ b/data/techs/targeting_2.yaml
@@ -1,4 +1,3 @@
-id: targeting_2
name: Enhanced Targeting
level: 22
drain_rate: 0.10
diff --git a/data/techs/targeting_3.yaml b/data/techs/targeting_3.yaml
index f057d65..35017be 100644
--- a/data/techs/targeting_3.yaml
+++ b/data/techs/targeting_3.yaml
@@ -1,4 +1,3 @@
-id: targeting_3
name: Superior Targeting
level: 46
drain_rate: 0.15
diff --git a/internal/action/action.go b/internal/action/action.go
index a72f6ca..d66d88e 100644
--- a/internal/action/action.go
+++ b/internal/action/action.go
@@ -184,6 +184,5 @@ type DropEntry struct {
}
type DropTableDef struct {
- ID string `yaml:"id"`
Drops []DropEntry `yaml:"drops"`
}
diff --git a/internal/color/color.go b/internal/color/color.go
index dcbb280..22fa143 100644
--- a/internal/color/color.go
+++ b/internal/color/color.go
@@ -180,6 +180,48 @@ func VisibleLen(s string) int {
return utf8.RuneCountInString(ansiRe.ReplaceAllString(s, ""))
}
+// WrapANSI wraps text to the given visible width, ignoring ANSI color codes
+// when measuring. Each input line (split on "\n") is handled on its own: a line
+// that already fits is returned untouched, so indentation and aligned UI are
+// preserved. Only over-long lines are word-wrapped. The result is joined with
+// "\r\n". A width <= 0 disables wrapping.
+func WrapANSI(s string, width int) string {
+ if width <= 0 {
+ return s
+ }
+ var out []string
+ for _, line := range strings.Split(s, "\n") {
+ line = strings.TrimRight(line, "\r")
+ out = append(out, wrapLine(line, width)...)
+ }
+ return strings.Join(out, "\r\n")
+}
+
+func wrapLine(line string, width int) []string {
+ if VisibleLen(line) <= width {
+ return []string{line}
+ }
+ words := strings.Fields(line)
+ if len(words) == 0 {
+ return []string{line}
+ }
+ cur := words[0]
+ curWidth := VisibleLen(words[0])
+ var lines []string
+ for _, w := range words[1:] {
+ ww := VisibleLen(w)
+ if curWidth+1+ww <= width {
+ cur += " " + w
+ curWidth += 1 + ww
+ } else {
+ lines = append(lines, cur)
+ cur = w
+ curWidth = ww
+ }
+ }
+ return append(lines, cur)
+}
+
func ContrastFg(mode string, bgIndex int) string {
r, g, b := Xterm256ToRGB(bgIndex)
if r+g+b > 384 {
diff --git a/internal/color/color_test.go b/internal/color/color_test.go
new file mode 100644
index 0000000..c1f5e5b
--- /dev/null
+++ b/internal/color/color_test.go
@@ -0,0 +1,55 @@
+package color
+
+import (
+ "strings"
+ "testing"
+)
+
+func TestWrapANSIDisabled(t *testing.T) {
+ s := "this is a very long line that would normally be wrapped if enabled"
+ if got := WrapANSI(s, 0); got != s {
+ t.Errorf("WrapANSI(_, 0) = %q, want unchanged", got)
+ }
+}
+
+func TestWrapANSIShortLineUntouched(t *testing.T) {
+ s := " indented menu item"
+ if got := WrapANSI(s, 80); got != s {
+ t.Errorf("short line was modified: got %q, want %q", got, s)
+ }
+}
+
+func TestWrapANSIWrapsLongLine(t *testing.T) {
+ s := "alpha bravo charlie delta echo foxtrot golf hotel india juliet"
+ got := WrapANSI(s, 20)
+ lines := strings.Split(got, "\r\n")
+ if len(lines) < 2 {
+ t.Fatalf("expected multiple lines, got %d: %q", len(lines), got)
+ }
+ for _, l := range lines {
+ if VisibleLen(l) > 20 {
+ t.Errorf("line exceeds width: %q (%d)", l, VisibleLen(l))
+ }
+ }
+ if strings.Join(strings.Fields(got), " ") != s {
+ t.Errorf("words not preserved: %q", got)
+ }
+}
+
+func TestWrapANSIIgnoresColorCodes(t *testing.T) {
+ colored := FgCode("xterm256", 182) + "hello world" + Reset
+ if VisibleLen(colored) > 80 {
+ t.Fatalf("test setup wrong, visible len = %d", VisibleLen(colored))
+ }
+ if got := WrapANSI(colored, 80); got != colored {
+ t.Errorf("colored line within width was wrapped: %q", got)
+ }
+}
+
+func TestWrapANSISplitsOnNewlines(t *testing.T) {
+ got := WrapANSI("first line\nsecond line", 80)
+ want := "first line\r\nsecond line"
+ if got != want {
+ t.Errorf("WrapANSI newline handling = %q, want %q", got, want)
+ }
+}
diff --git a/internal/config/config.go b/internal/config/config.go
index af00297..b01997c 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -40,6 +40,7 @@ func DefaultColors() ColorsConfig {
"miss": "243",
"error": "209",
"say": "230",
+ "global": "45",
"dialog": "117",
"broadcast": "215",
"fire": "208",
diff --git a/internal/game/cmd_color.go b/internal/game/cmd_color.go
index 51f8158..7bf073d 100644
--- a/internal/game/cmd_color.go
+++ b/internal/game/cmd_color.go
@@ -154,6 +154,7 @@ var colorCategoryOrder = []string{
"miss",
"error",
"say",
+ "global",
"dialog",
"broadcast",
"fire",
diff --git a/internal/game/cmd_global.go b/internal/game/cmd_global.go
new file mode 100644
index 0000000..d06a233
--- /dev/null
+++ b/internal/game/cmd_global.go
@@ -0,0 +1,36 @@
+package game
+
+import (
+ "fmt"
+ "strings"
+
+ "thehouseoficarus/internal/net"
+)
+
+func (g *Game) executeGlobal(sess *net.Session, args []string, rawInput string) {
+ if len(args) == 0 {
+ sess.WriteLine("Usage: global <message> — sends a message to everyone on the world.")
+ return
+ }
+
+ msgStart := strings.Index(strings.ToLower(rawInput), "global ") + 7
+ if msgStart >= 7 && msgStart < len(rawInput) {
+ g.doGlobal(sess, rawInput[msgStart:])
+ } else {
+ g.doGlobal(sess, strings.Join(args, " "))
+ }
+}
+
+func (g *Game) doGlobal(sess *net.Session, msg string) {
+ p := sess.Player
+
+ for _, other := range g.Hub.AllSessions() {
+ if other.Player == nil {
+ continue
+ }
+ other.WriteLine(fmt.Sprintf("\n%s%s: %s",
+ g.colorize(other, "global", "[Global] "),
+ g.colorize(other, "player_name", p.Name),
+ g.colorize(other, "global", msg)))
+ }
+}
diff --git a/internal/game/cmd_look.go b/internal/game/cmd_look.go
index 3f31a15..5cdc15d 100644
--- a/internal/game/cmd_look.go
+++ b/internal/game/cmd_look.go
@@ -540,26 +540,26 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
fmt.Sprintf("%s %s", g.colorize(sess, mobColor, best.Name), levelStr),
)
if best.IdleDescription != "" {
- sess.WriteLine(fmt.Sprintf(" %s", best.IdleDescription))
+ sess.WriteLine(best.IdleDescription)
}
sess.WriteLines(
"",
- fmt.Sprintf(" Attack: %d", best.Attack),
- fmt.Sprintf(" Strength: %d", best.Strength),
- fmt.Sprintf(" Defense: %d", best.Defense),
- fmt.Sprintf(" HP: %d/%d", best.HP, best.MaxHP),
+ fmt.Sprintf("Attack: %d", best.Attack),
+ fmt.Sprintf("Strength: %d", best.Strength),
+ fmt.Sprintf("Defense: %d", best.Defense),
+ fmt.Sprintf("HP: %d/%d", best.HP, best.MaxHP),
)
if best.StabDefense != 0 || best.SlashDefense != 0 || best.CrushDefense != 0 ||
best.ScienceDefense != 0 || best.RangedDefense != 0 {
sess.WriteLines(
"",
- " Defense bonuses:",
- fmt.Sprintf(" Stab: %+d Slash: %+d Crush: %+d", best.StabDefense, best.SlashDefense, best.CrushDefense),
- fmt.Sprintf(" Science: %+d Ranged: %+d", best.ScienceDefense, best.RangedDefense),
+ "Defense bonuses:",
+ fmt.Sprintf(" Stab: %+d Slash: %+d Crush: %+d", best.StabDefense, best.SlashDefense, best.CrushDefense),
+ fmt.Sprintf(" Science: %+d Ranged: %+d", best.ScienceDefense, best.RangedDefense),
)
}
if best.Weakness != "" {
- sess.WriteLine(fmt.Sprintf(" Weakness: %s", best.Weakness))
+ sess.WriteLine(fmt.Sprintf("Weakness: %s", best.Weakness))
}
return
}
@@ -612,12 +612,10 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
sess.WriteLine("")
if len(instances) > 1 {
sess.WriteLine(fmt.Sprintf("%d %ss:", len(instances), def.Name))
- } else {
- sess.WriteLine(def.Name)
}
if objDescText != "" && !strings.Contains(objDescText, "{quality}") {
- sess.WriteLine(fmt.Sprintf(" %s", objDescText))
+ sess.WriteLine(color.ExpandTags(g.colorMode(sess), objDescText))
}
if def.Safespot != nil {
@@ -635,9 +633,9 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
if def.Safespot.MaxBlockSize != "" {
blockInfo = fmt.Sprintf("up to %s mobs", def.Safespot.MaxBlockSize)
}
- sess.WriteLine(fmt.Sprintf(" Safespot: %s — blocks %s", levelStr, blockInfo))
+ sess.WriteLine(fmt.Sprintf("Safespot: %s — blocks %s", levelStr, blockInfo))
if len(realSt.SafespotOccupants) > 0 {
- sess.WriteLine(fmt.Sprintf(" Occupied by: %s", strings.Join(realSt.SafespotOccupants, ", ")))
+ sess.WriteLine(fmt.Sprintf("Occupied by: %s", strings.Join(realSt.SafespotOccupants, ", ")))
}
}
}
@@ -646,15 +644,15 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
for _, ist := range instances {
if ist.Depleted {
if len(instances) > 1 {
- sess.WriteLine(fmt.Sprintf(" %s %d: depleted, respawns in %d ticks.", def.Name, ist.Index+1, int(ist.DepleteTimer)))
+ sess.WriteLine(fmt.Sprintf("%s %d: depleted, respawns in %d ticks.", def.Name, ist.Index+1, int(ist.DepleteTimer)))
} else {
- sess.WriteLine(fmt.Sprintf(" Depleted, respawns in %d ticks.", int(ist.DepleteTimer)))
+ sess.WriteLine(fmt.Sprintf("Depleted, respawns in %d ticks.", int(ist.DepleteTimer)))
}
} else if ist.SharedMax > 0 && float64(ist.SharedTimer) < ist.SharedMax {
if len(instances) > 1 {
- sess.WriteLine(fmt.Sprintf(" %s %d: despawn timer %d/%.0f.", def.Name, ist.Index+1, ist.SharedTimer, ist.SharedMax))
+ sess.WriteLine(fmt.Sprintf("%s %d: despawn timer %d/%.0f.", def.Name, ist.Index+1, ist.SharedTimer, ist.SharedMax))
} else {
- sess.WriteLine(fmt.Sprintf(" Despawn timer: %d/%.0f ticks.", ist.SharedTimer, ist.SharedMax))
+ sess.WriteLine(fmt.Sprintf("Despawn timer: %d/%.0f ticks.", ist.SharedTimer, ist.SharedMax))
}
}
}
@@ -662,7 +660,7 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
for _, ist := range instances {
if ist.Quality > 0 && strings.Contains(def.Description, "{quality}") {
desc := strings.ReplaceAll(def.Description, "{quality}", fmt.Sprintf("%.0f", ist.Quality))
- sess.WriteLine(fmt.Sprintf(" %s", desc))
+ sess.WriteLine(color.ExpandTags(g.colorMode(sess), desc))
}
}
@@ -682,8 +680,8 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
sess.WriteLines(
"",
g.itemColorize(sess, def, def.Name),
- fmt.Sprintf(" %s", def.Description),
- fmt.Sprintf(" Value: %d credits", def.Value),
+ color.ExpandTags(g.colorMode(sess), def.Description),
+ fmt.Sprintf("Value: %d credits", def.Value),
)
g.showItemStats(sess, def)
return
@@ -701,11 +699,11 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
lines := []string{
"",
g.itemColorize(sess, def, def.Name),
- fmt.Sprintf(" %s", def.Description),
- fmt.Sprintf(" Value: %d credits", def.Value),
+ color.ExpandTags(g.colorMode(sess), def.Description),
+ fmt.Sprintf("Value: %d credits", def.Value),
}
if slot.MaxQuality > 0 {
- lines = append(lines, fmt.Sprintf(" Has %d units of butane left.", slot.Quality))
+ lines = append(lines, fmt.Sprintf("Has %d units of butane left.", slot.Quality))
}
sess.WriteLines(lines...)
g.showItemStats(sess, def)
@@ -735,18 +733,18 @@ func showPlayerInfo(g *Game, sess *net.Session, p *player.Player) {
sess.WriteLines(
"",
p.Name,
- fmt.Sprintf(" Combat Level: %s", levelStr),
- fmt.Sprintf(" HP: %d/%d", p.HP, p.MaxHP()),
+ fmt.Sprintf("Combat Level: %s", levelStr),
+ fmt.Sprintf("HP: %d/%d", p.HP, p.MaxHP()),
"",
)
for _, s := range player.AllSkills {
level := p.Level(s)
- sess.WriteLine(fmt.Sprintf(" %-12s Level: %d", s, level))
+ sess.WriteLine(fmt.Sprintf("%-12s Level: %d", s, level))
}
sess.WriteLine("")
- sess.WriteLine(" Equipment:")
+ sess.WriteLine("Equipment:")
for _, slot := range EquipSlots {
itemID, ok := p.Equipment[slot]
if !ok {
@@ -758,12 +756,12 @@ func showPlayerInfo(g *Game, sess *net.Session, p *player.Player) {
name = def.Name
itemDef = def
}
- sess.WriteLine(fmt.Sprintf(" %-12s %s", slot, g.itemColorize(sess, itemDef, name)))
+ sess.WriteLine(fmt.Sprintf(" %-12s %s", slot, g.itemColorize(sess, itemDef, name)))
}
if p.Description != "" {
sess.WriteLine("")
- sess.WriteLine(fmt.Sprintf(" %s", p.Description))
+ sess.WriteLine(p.Description)
}
}
@@ -916,40 +914,40 @@ func (g *Game) showItemStats(sess *net.Session, def *object.ItemDef) {
sess.WriteLine("")
if hasAttack || hasDefense {
- sess.WriteLine(" Attack bonuses: Defense bonuses:")
- sess.WriteLine(fmt.Sprintf(" Stab: %+4d Stab: %+4d", s.StabAttack, s.StabDefense))
- sess.WriteLine(fmt.Sprintf(" Slash: %+4d Slash: %+4d", s.SlashAttack, s.SlashDefense))
- sess.WriteLine(fmt.Sprintf(" Crush: %+4d Crush: %+4d", s.CrushAttack, s.CrushDefense))
- sess.WriteLine(fmt.Sprintf(" Science:%+4d Science:%+4d", s.ScienceAttack, s.ScienceDefense))
- sess.WriteLine(fmt.Sprintf(" Ranged: %+4d Ranged: %+4d", s.RangedAttack, s.RangedDefense))
+ sess.WriteLine("Attack bonuses: Defense bonuses:")
+ sess.WriteLine(fmt.Sprintf(" Stab: %+4d Stab: %+4d", s.StabAttack, s.StabDefense))
+ sess.WriteLine(fmt.Sprintf(" Slash: %+4d Slash: %+4d", s.SlashAttack, s.SlashDefense))
+ sess.WriteLine(fmt.Sprintf(" Crush: %+4d Crush: %+4d", s.CrushAttack, s.CrushDefense))
+ sess.WriteLine(fmt.Sprintf(" Science:%+4d Science:%+4d", s.ScienceAttack, s.ScienceDefense))
+ sess.WriteLine(fmt.Sprintf(" Ranged: %+4d Ranged: %+4d", s.RangedAttack, s.RangedDefense))
}
if hasOther {
sess.WriteLine("")
- sess.WriteLine(" Other bonuses:")
+ sess.WriteLine("Other bonuses:")
if s.StrengthBonus != 0 {
- sess.WriteLine(fmt.Sprintf(" Melee strength: %+d", s.StrengthBonus))
+ sess.WriteLine(fmt.Sprintf(" Melee strength: %+d", s.StrengthBonus))
}
if s.RangedStrength != 0 {
- sess.WriteLine(fmt.Sprintf(" Ranged strength: %+d", s.RangedStrength))
+ sess.WriteLine(fmt.Sprintf(" Ranged strength: %+d", s.RangedStrength))
}
if s.ScienceDamage != 0 {
- sess.WriteLine(fmt.Sprintf(" Science damage: %+d", s.ScienceDamage))
+ sess.WriteLine(fmt.Sprintf(" Science damage: %+d", s.ScienceDamage))
}
if s.TechnologyBonus != 0 {
- sess.WriteLine(fmt.Sprintf(" Technology: %+d", s.TechnologyBonus))
+ sess.WriteLine(fmt.Sprintf(" Technology: %+d", s.TechnologyBonus))
}
}
if def.AttackType != "" {
- sess.WriteLine(fmt.Sprintf(" Attack type: %s", def.AttackType))
+ sess.WriteLine(fmt.Sprintf("Attack type: %s", def.AttackType))
}
if def.Speed > 0 {
- sess.WriteLine(fmt.Sprintf(" Speed: %.0f", def.Speed))
+ sess.WriteLine(fmt.Sprintf("Speed: %.0f", def.Speed))
}
if len(def.Requirements) > 0 {
sess.WriteLine("")
- sess.WriteLine(" Requirements:")
+ sess.WriteLine("Requirements:")
for skill, level := range def.Requirements {
- sess.WriteLine(fmt.Sprintf(" %s: %d", skill, level))
+ sess.WriteLine(fmt.Sprintf(" %s: %d", skill, level))
}
}
}
diff --git a/internal/game/cmd_registry.go b/internal/game/cmd_registry.go
index be1c276..bc910ed 100644
--- a/internal/game/cmd_registry.go
+++ b/internal/game/cmd_registry.go
@@ -39,6 +39,8 @@ var commandRegistry = map[string]commandDef{
"down": {(*Game).executeMove, ClassActive},
"d": {(*Game).executeMove, ClassActive},
"say": {(*Game).executeSay, ClassInstant},
+ "global": {(*Game).executeGlobal, ClassInstant},
+ "who": {(*Game).executeWho, ClassInstant},
"sc": {(*Game).executeScore, ClassInstant},
"score": {(*Game).executeScore, ClassInstant},
"skills": {(*Game).executeSkills, ClassInstant},
diff --git a/internal/game/cmd_verbs.go b/internal/game/cmd_verbs.go
index 9ee1607..f76ee6c 100644
--- a/internal/game/cmd_verbs.go
+++ b/internal/game/cmd_verbs.go
@@ -11,6 +11,8 @@ import (
var alwaysAvailable = []string{
"look", "l",
"say",
+ "global",
+ "who",
"exits",
"map",
"walk",
diff --git a/internal/game/cmd_who.go b/internal/game/cmd_who.go
new file mode 100644
index 0000000..87c8a9c
--- /dev/null
+++ b/internal/game/cmd_who.go
@@ -0,0 +1,32 @@
+package game
+
+import (
+ "fmt"
+ "sort"
+ "strings"
+
+ "thehouseoficarus/internal/net"
+ "thehouseoficarus/internal/player"
+)
+
+func (g *Game) executeWho(sess *net.Session, args []string, rawInput string) {
+ myP := sess.Player
+
+ var players []*player.Player
+ for _, other := range g.Hub.AllSessions() {
+ if other.Player == nil {
+ continue
+ }
+ players = append(players, other.Player)
+ }
+ sort.Slice(players, func(i, j int) bool {
+ return strings.ToLower(players[i].Name) < strings.ToLower(players[j].Name)
+ })
+
+ sess.WriteLine(fmt.Sprintf("\nPlayers online (%d):", len(players)))
+ for _, p := range players {
+ lvl := p.CombatLevel()
+ levelStr := g.levelColorize(sess, myP.CombatLevel(), lvl, fmt.Sprintf("(level %d)", lvl))
+ sess.WriteLine(fmt.Sprintf(" %s %s", p.Name, levelStr))
+ }
+}
diff --git a/internal/game/core_course.go b/internal/game/core_course.go
index 908466d..7d7fe08 100644
--- a/internal/game/core_course.go
+++ b/internal/game/core_course.go
@@ -96,6 +96,7 @@ func (cs *CourseStore) loadAllLocked() {
if err := yaml.Unmarshal(data, &cfg); err != nil {
return nil
}
+ cfg.ID = id
cs.courses[cfg.ID] = &cfg
totalObstacles := len(cfg.Obstacles)
diff --git a/internal/game/sys_science.go b/internal/game/sys_science.go
index 1129fee..517e051 100644
--- a/internal/game/sys_science.go
+++ b/internal/game/sys_science.go
@@ -49,6 +49,7 @@ func (g *Game) LoadMods() error {
if err := yaml.Unmarshal(data, &m); err != nil {
return nil
}
+ m.ID = id
AllMods = append(AllMods, &m)
return nil
})
diff --git a/internal/game/sys_technology.go b/internal/game/sys_technology.go
index 6afc757..fa0301f 100644
--- a/internal/game/sys_technology.go
+++ b/internal/game/sys_technology.go
@@ -50,6 +50,7 @@ func (g *Game) LoadTechs() error {
if err := yaml.Unmarshal(data, &t); err != nil {
return nil
}
+ t.ID = id
AllTechs = append(AllTechs, &t)
return nil
})
diff --git a/internal/game/ui_help.go b/internal/game/ui_help.go
index d482fce..28f4371 100644
--- a/internal/game/ui_help.go
+++ b/internal/game/ui_help.go
@@ -45,6 +45,7 @@ var commandList = []cmdEntry{
{"fish", "Active", "Fish at fishing spots (Fishing)"},
{"fletch", "Free", "Fletch logs into bows (Fletching)"},
{"get / take / pick", "Active", "Pick up items from the ground"},
+ {"global", "Instant", "Chat with everyone on the server"},
{"help", "Instant", "Show help topics"},
{"id / identify", "Active", "Identify herbs (Pharmacy)"},
{"inventory / i / inv", "Instant", "Show your inventory"},
@@ -78,6 +79,7 @@ var commandList = []cmdEntry{
{"use", "Active", "Use an object (crafting)"},
{"walk", "Active", "Pathfind to a room or multi-step walk"},
{"wear / wield", "Free", "Equip items"},
+ {"who", "Instant", "List everyone online and their combat level"},
}
func LoadHelp(dataDir string) ([]HelpDef, error) {
diff --git a/internal/net/server.go b/internal/net/server.go
index 6626592..5c98b62 100644
--- a/internal/net/server.go
+++ b/internal/net/server.go
@@ -9,6 +9,7 @@ import (
"sync"
"thehouseoficarus/internal/action"
+ "thehouseoficarus/internal/color"
"thehouseoficarus/internal/config"
"thehouseoficarus/internal/player"
)
@@ -329,6 +330,21 @@ func (s *Server) handleSession(sess *Session, handler func(*Session, string)) {
}
}
+// wrap applies the player's wrap_width option to outgoing text. It is a no-op
+// before login (no Player) so the welcome banner is never reflowed. The width
+// is clamped to a minimum of 80 columns.
+func (sess *Session) wrap(msg string) string {
+ if sess.Player == nil {
+ return msg
+ }
+ width := sess.Player.OptionInt("wrap_width")
+ if width < 80 {
+ width = 80
+ }
+ return color.WrapANSI(msg, width)
+}
+
+// Write sends raw text with no wrapping. Used for prompts and partial lines.
func (sess *Session) Write(msg string) {
sess.writeMu.Lock()
defer sess.writeMu.Unlock()
@@ -336,6 +352,7 @@ func (sess *Session) Write(msg string) {
}
func (sess *Session) WriteLine(msg string) {
+ msg = sess.wrap(msg)
sess.writeMu.Lock()
defer sess.writeMu.Unlock()
sess.Conn.Write([]byte(msg + "\r\n"))
@@ -345,14 +362,15 @@ func (sess *Session) WriteLines(lines ...string) {
sess.writeMu.Lock()
defer sess.writeMu.Unlock()
for _, l := range lines {
- sess.Conn.Write([]byte(l + "\r\n"))
+ sess.Conn.Write([]byte(sess.wrap(l) + "\r\n"))
}
}
func (sess *Session) Writef(format string, args ...interface{}) {
+ msg := sess.wrap(fmt.Sprintf(format, args...))
sess.writeMu.Lock()
defer sess.writeMu.Unlock()
- sess.Conn.Write([]byte(fmt.Sprintf(format, args...)))
+ sess.Conn.Write([]byte(msg))
}
func (sess *Session) Close() error {
diff --git a/internal/object/item_store.go b/internal/object/item_store.go
index 8bc85e4..e930220 100644
--- a/internal/object/item_store.go
+++ b/internal/object/item_store.go
@@ -40,6 +40,7 @@ func (s *ItemStore) Load(id string) (*ItemDef, error) {
if err := yaml.Unmarshal(data, &def); err != nil {
return nil, fmt.Errorf("parse item %s: %w", id, err)
}
+ def.ID = id
s.cache[id] = &def
return &def, nil
}
@@ -56,6 +57,7 @@ func (s *ItemStore) LoadAll() ([]*ItemDef, error) {
if err := yaml.Unmarshal(data, &def); err != nil {
return fmt.Errorf("parse item %s: %w", id, err)
}
+ def.ID = id
s.cache[id] = &def
defs = append(defs, &def)
return nil
diff --git a/internal/object/store.go b/internal/object/store.go
index a11ff7a..cf8b4f9 100644
--- a/internal/object/store.go
+++ b/internal/object/store.go
@@ -39,6 +39,7 @@ func (s *ObjectStore) Load(id string) (*ObjectDef, error) {
if err := yaml.Unmarshal(data, &def); err != nil {
return nil, fmt.Errorf("parse object %s: %w", id, err)
}
+ def.ID = id
s.cache[id] = &def
return &def, nil
}
diff --git a/internal/player/player.go b/internal/player/player.go
index 4b74db7..2cc19bb 100644
--- a/internal/player/player.go
+++ b/internal/player/player.go
@@ -126,6 +126,7 @@ var OptionDefs = []OptionDef{
{"automap", OptBool, false, nil, "Show map automatically after moving"},
{"queue_silently", OptBool, true, nil, "Suppress messages for queued tick actions"},
{"room_desc_width", OptInt, 70, nil, "Maximum width for room descriptions"},
+ {"wrap_width", OptInt, 120, nil, "Wrap all output to this many columns (minimum 80)"},
{"unicode", OptBool, true, nil, "Unicode box-drawing characters"},
{"run_countdown", OptBool, false, nil, "Show countdown messages when fleeing combat"},
{"visual_ticks", OptBool, false, nil, "Display a tick marker every game tick"},
diff --git a/internal/world/hazard.go b/internal/world/hazard.go
index 396343b..1361cff 100644
--- a/internal/world/hazard.go
+++ b/internal/world/hazard.go
@@ -21,7 +21,6 @@ import (
// Tech protection (Kinetic Barrier / Projectile Screen / Neural Firewall) keys
// off AttackType automatically.
type HazardDef struct {
- ID string `yaml:"id"`
Name string `yaml:"name"`
Description string `yaml:"description"`
AttackType string `yaml:"attack_type"` // stab/slash/crush/ranged/science
@@ -59,7 +58,6 @@ func (w *World) LoadHazard(id string) (*HazardDef, error) {
if err := yaml.Unmarshal(data, &def); err != nil {
return nil, fmt.Errorf("parse hazard %s: %w", id, err)
}
- def.ID = id
w.hazardMu.Lock()
w.hazardDefs[id] = &def