From 8eec7b75ff9c8c368b252373db45fb891732d2ca Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Wed, 1 Jul 2026 19:41:34 -0400 Subject: mob combat stats overhauled and standardized --- data/mobs/examples/ancient_construct.yaml | 51 ++++++++++++++---------- data/mobs/examples/bandit.yaml | 49 +++++++++++++---------- data/mobs/examples/bioengineer.yaml | 58 +++++++++++++++++----------- data/mobs/examples/client.yaml | 14 ++----- data/mobs/examples/corrupted_scientist.yaml | 53 ++++++++++++++----------- data/mobs/examples/cow.yaml | 39 ++++++++++++------- data/mobs/examples/crawler.yaml | 45 +++++++++++++++------- data/mobs/examples/drone.yaml | 45 +++++++++++++++------- data/mobs/examples/elite_synth.yaml | 53 ++++++++++++++----------- data/mobs/examples/enforcer_bot.yaml | 51 ++++++++++++++---------- data/mobs/examples/estate_broker.yaml | 5 +-- data/mobs/examples/farmer.yaml | 58 +++++++++++++++++----------- data/mobs/examples/feral_cyborg.yaml | 49 +++++++++++++---------- data/mobs/examples/general_store_clerk.yaml | 20 ++-------- data/mobs/examples/ghoul.yaml | 51 ++++++++++++++---------- data/mobs/examples/goblin.yaml | 41 ++++++++++++-------- data/mobs/examples/greater_drone.yaml | 44 ++++++++++++--------- data/mobs/examples/guard.yaml | 22 ++--------- data/mobs/examples/heavy_mech.yaml | 51 ++++++++++++++---------- data/mobs/examples/iron_sentinel.yaml | 41 ++++++++++++-------- data/mobs/examples/lesser_drone.yaml | 44 ++++++++++++--------- data/mobs/examples/man.yaml | 60 +++++++++++++++++------------ data/mobs/examples/molten_elemental.yaml | 51 ++++++++++++++---------- data/mobs/examples/moss_giant.yaml | 41 ++++++++++++-------- data/mobs/examples/mutant_rat.yaml | 51 ++++++++++++++---------- data/mobs/examples/newbie_trainer.yaml | 14 ------- data/mobs/examples/phantom.yaml | 45 +++++++++++++++------- data/mobs/examples/plasma_wraith.yaml | 53 ++++++++++++++----------- data/mobs/examples/psionic_entity.yaml | 51 ++++++++++++++---------- data/mobs/examples/rat.yaml | 39 ++++++++++++------- data/mobs/examples/sawmill_operator.yaml | 7 +--- data/mobs/examples/scrap_bot.yaml | 49 +++++++++++++---------- data/mobs/examples/security_turret.yaml | 53 ++++++++++++++----------- data/mobs/examples/skeleton.yaml | 41 ++++++++++++-------- data/mobs/examples/slug.yaml | 45 +++++++++++++++------- data/mobs/examples/solar_panel_frame.yaml | 43 +++++++++++++-------- data/mobs/examples/tanner.yaml | 20 ++-------- data/mobs/examples/titan_sentinel.yaml | 51 ++++++++++++++---------- data/mobs/examples/veteran_merc.yaml | 51 ++++++++++++++---------- data/mobs/examples/void_reaper.yaml | 55 +++++++++++++++----------- data/mobs/examples/war_drone.yaml | 51 ++++++++++++++---------- data/mobs/examples/weapons_smith.yaml | 20 ++-------- data/mobs/examples/zombie.yaml | 43 +++++++++++++-------- data/mobs/flight_attendant_copy.yaml | 29 ++------------ 44 files changed, 1051 insertions(+), 796 deletions(-) (limited to 'data/mobs') diff --git a/data/mobs/examples/ancient_construct.yaml b/data/mobs/examples/ancient_construct.yaml index 190e8c2..ab878cd 100644 --- a/data/mobs/examples/ancient_construct.yaml +++ b/data/mobs/examples/ancient_construct.yaml @@ -1,31 +1,10 @@ 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 -strength: 62 -defense: 66 -hp: 152 -speed: 4 -aggressive: true -respawn_ticks: 150 -attack_type: slash -attack_bonus: 55 -strength_bonus: 55 -stab_defense: 95 -slash_defense: 100 -crush_defense: 85 -science_defense: -40 -ranged_defense: 70 -weakness: chaos idle_descriptions: - "etches glowing symbols into the air" - "reconfigures its form with clicking sounds" - "projects a holographic star map" - "emits a resonant chime that shakes the walls" -combat_descriptions: - - "slices at %s with a blade of pure light" - - "unleashes a cascade of ancient energy at %s" - - "teleports behind %s and strikes" -size: massive drops: remains: scrap loot: @@ -45,3 +24,33 @@ drops: quantity: 3 - table: herb_table_high weight: 10 +combat: + kind: combat + stats: + hp: 152 + attack: 58 + strength: 62 + defense: 66 + attack_type: slash + speed: 4 + aggressive: true + respawn_ticks: 150 + bonuses: + attack_bonus: 55 + strength_bonus: 55 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 95 + slash_defense: 100 + crush_defense: 85 + science_defense: -40 + ranged_defense: 70 + weakness: chaos + size: massive + combat_descriptions: + - "slices at %s with a blade of pure light" + - "unleashes a cascade of ancient energy at %s" + - "teleports behind %s and strikes" diff --git a/data/mobs/examples/bandit.yaml b/data/mobs/examples/bandit.yaml index 51e4b8e..a3fd3e7 100644 --- a/data/mobs/examples/bandit.yaml +++ b/data/mobs/examples/bandit.yaml @@ -1,30 +1,10 @@ name: bandit description: "A scrappy outlaw with a cybernetic arm and patched armor. He eyes you with predatory intent." -attack: 10 -strength: 12 -defense: 12 -hp: 28 -speed: 5 -aggressive: true -respawn_ticks: 30 -attack_type: slash -attack_bonus: 5 -strength_bonus: 5 -stab_defense: 10 -slash_defense: 15 -crush_defense: 8 -science_defense: -5 -ranged_defense: 12 idle_descriptions: - "scans the horizon for targets" - "wipes a blade on his sleeve" - "spits on the ground" - "adjusts a cybernetic knuckle" -combat_descriptions: - - "slashes at %s with a serrated blade" - - "delivers a crushing punch with a cybernetic fist" - - "lunges at %s with a battle cry" -size: medium drops: remains: bones loot: @@ -36,3 +16,32 @@ drops: quantity: 80 - table: herb_table_low weight: 10 +combat: + kind: combat + stats: + hp: 28 + attack: 10 + strength: 12 + defense: 12 + attack_type: stab + speed: 5 + aggressive: true + respawn_ticks: 30 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 0 + slash_defense: 0 + crush_defense: 0 + science_defense: 0 + ranged_defense: 0 + size: medium + combat_descriptions: + - "slashes at %s with a serrated blade" + - "delivers a crushing punch with a cybernetic fist" + - "lunges at %s with a battle cry" diff --git a/data/mobs/examples/bioengineer.yaml b/data/mobs/examples/bioengineer.yaml index 4761991..d6c9193 100644 --- a/data/mobs/examples/bioengineer.yaml +++ b/data/mobs/examples/bioengineer.yaml @@ -1,32 +1,15 @@ name: Bioengineer description: "A lab-coated scientist carrying a satchel of genetically modified seeds. Her pockets are stuffed with rare specimens." -combat_descriptions: - - "jabs a syringe at %s" - - "is being overpowered by %s" - - "fights desperately against %s" idle_descriptions: - "scribbles notes on a clipboard" - "carefully inspects a vial of green liquid" - "adjusts her safety goggles" - "mutters about gene splicing yields" -attack: 6 -strength: 4 -defense: 5 -hp: 25 -speed: 5 -aggressive: false -respawn_ticks: 50 -attack_type: crush -stab_defense: 0 -slash_defense: 0 -crush_defense: 0 -science_defense: 0 -ranged_defense: 0 -steal_table: bioengineer_steal -steal_level: 38 -steal_xp: 45 -steal_speed: 4 -size: small +steal: + table: bioengineer_steal + level: 38 + xp: 45 + speed: 4 drops: remains: "bones" loot: @@ -41,4 +24,33 @@ drops: quantity: 1 - item_id: "ranarr_seed" weight: 5 - quantity: 1 \ No newline at end of file + quantity: 1 +combat: + kind: combat + stats: + hp: 25 + attack: 6 + strength: 4 + defense: 5 + attack_type: crush + speed: 5 + aggressive: false + respawn_ticks: 50 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 0 + slash_defense: 0 + crush_defense: 0 + science_defense: 0 + ranged_defense: 0 + size: small + combat_descriptions: + - "jabs a syringe at %s" + - "is being overpowered by %s" + - "fights desperately against %s" diff --git a/data/mobs/examples/client.yaml b/data/mobs/examples/client.yaml index 0d5f27d..2442a8a 100644 --- a/data/mobs/examples/client.yaml +++ b/data/mobs/examples/client.yaml @@ -1,8 +1,7 @@ -aggressive: false -attack: 1 -defense: 1 +name: The Client 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 +protected: true +unique: true idle_descriptions: - reviews a holographic dossier - marks a location on a worn star chart @@ -10,11 +9,6 @@ idle_descriptions: - mutters coordinates under their breath - glances at you appraisingly - taps a data pad with a stylus -name: The Client -protected: true -respawn_ticks: 30 -speed: 5 -strength: 1 talk: nodes: assign_task: @@ -224,5 +218,3 @@ talk: text: '"Buy spectral visor (75 credits)."' - goto: start text: '"Back."' -unique: true -size: small diff --git a/data/mobs/examples/corrupted_scientist.yaml b/data/mobs/examples/corrupted_scientist.yaml index 2083c03..aeda04d 100644 --- a/data/mobs/examples/corrupted_scientist.yaml +++ b/data/mobs/examples/corrupted_scientist.yaml @@ -1,32 +1,10 @@ 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 -strength: 1 -defense: 18 -hp: 40 -science: 50 -speed: 5 -aggressive: true -respawn_ticks: 45 -attack_type: science -attack_bonus: 0 -strength_bonus: 0 -stab_defense: 25 -slash_defense: 25 -crush_defense: 20 -science_defense: 35 -ranged_defense: -5 -weakness: eco idle_descriptions: - "mutters incomprehensible formulas" - "energy arcs between their fingers" - "scribbles equations on the wall in soot" - "stares at their own hands in horror" -combat_descriptions: - - "blasts %s with a burst of unstable energy" - - "unleashes a wave of chaotic force at %s" - - "channels raw power through their hands at %s" -size: medium drops: remains: bones loot: @@ -41,3 +19,34 @@ drops: quantity: 2 - table: herb_table_mid weight: 15 +combat: + kind: combat + stats: + hp: 40 + attack: 1 + strength: 1 + defense: 18 + science: 50 + attack_type: science + speed: 5 + aggressive: true + respawn_ticks: 45 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 25 + slash_defense: 25 + crush_defense: 20 + science_defense: 35 + ranged_defense: -5 + weakness: eco + size: medium + combat_descriptions: + - "blasts %s with a burst of unstable energy" + - "unleashes a wave of chaotic force at %s" + - "channels raw power through their hands at %s" diff --git a/data/mobs/examples/cow.yaml b/data/mobs/examples/cow.yaml index 7f1ee3c..2171d12 100644 --- a/data/mobs/examples/cow.yaml +++ b/data/mobs/examples/cow.yaml @@ -1,24 +1,10 @@ name: cow description: "A placid dairy cow, chewing cud." -attack: 1 -strength: 1 -defense: 1 -hp: 8 -speed: 5 -aggressive: false -respawn_ticks: 30 -attack_type: crush -stab_defense: 1 -slash_defense: 1 -crush_defense: 1 -science_defense: 0 -ranged_defense: 0 idle_descriptions: - "moos softly" - "chews on some grass" - "swishes its tail lazily" - "stares at you with big brown eyes" -size: large drops: remains: bones loot: @@ -26,3 +12,28 @@ drops: weight: 100 - item_id: raw_beef weight: 100 +combat: + kind: combat + stats: + hp: 8 + attack: 1 + strength: 1 + defense: 1 + attack_type: crush + speed: 5 + aggressive: false + respawn_ticks: 30 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 1 + slash_defense: 1 + crush_defense: 1 + science_defense: 0 + ranged_defense: 0 + size: large diff --git a/data/mobs/examples/crawler.yaml b/data/mobs/examples/crawler.yaml index 9021c51..55d8f6f 100644 --- a/data/mobs/examples/crawler.yaml +++ b/data/mobs/examples/crawler.yaml @@ -1,24 +1,10 @@ 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 -finishing_blow: acid_vial -attack: 25 -strength: 22 -defense: 30 -hp: 80 -speed: 5 -aggressive: false -respawn_ticks: 45 idle_descriptions: - "scrapes its mandibles together menacingly" - "clicks and chitters in an alien rhythm" - "tests the air with feathered antennae" - "coils its segmented body defensively" -combat_descriptions: - - "snaps its mandibles at %s" - - "lashes out with a barbed tail at %s" - - "charges headlong into %s" -size: large drops: remains: chitin_plate loot: @@ -30,3 +16,34 @@ drops: - item_id: credits weight: 20 quantity: 500 +combat: + kind: combat + stats: + hp: 80 + attack: 25 + strength: 22 + defense: 30 + attack_type: crush + speed: 5 + aggressive: false + respawn_ticks: 45 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 0 + slash_defense: 0 + crush_defense: 0 + science_defense: 0 + ranged_defense: 0 + assassin_level: 30 + finishing_blow: acid_vial + size: large + combat_descriptions: + - "snaps its mandibles at %s" + - "lashes out with a barbed tail at %s" + - "charges headlong into %s" diff --git a/data/mobs/examples/drone.yaml b/data/mobs/examples/drone.yaml index 5ac6552..08091f5 100644 --- a/data/mobs/examples/drone.yaml +++ b/data/mobs/examples/drone.yaml @@ -1,24 +1,10 @@ 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 -damage_without: insulated_gloves -attack: 15 -strength: 14 -defense: 12 -hp: 45 -speed: 4 -aggressive: true -respawn_ticks: 35 idle_descriptions: - "hovers erratically, sparking" - "emits a high-pitched whine" - "scans the area with a flickering red beam" - "rotates its weapon array with a mechanical click" -combat_descriptions: - - "fires an electrical bolt at %s" - - "charges its capacitors and zaps %s" - - "swoops down on %s with crackling energy" -size: small drops: remains: circuit_board loot: @@ -30,3 +16,34 @@ drops: - item_id: credits weight: 15 quantity: 200 +combat: + kind: combat + stats: + hp: 45 + attack: 15 + strength: 14 + defense: 12 + attack_type: crush + speed: 4 + aggressive: true + respawn_ticks: 35 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 0 + slash_defense: 0 + crush_defense: 0 + science_defense: 0 + ranged_defense: 0 + assassin_level: 15 + damage_without: insulated_gloves + size: small + combat_descriptions: + - "fires an electrical bolt at %s" + - "charges its capacitors and zaps %s" + - "swoops down on %s with crackling energy" diff --git a/data/mobs/examples/elite_synth.yaml b/data/mobs/examples/elite_synth.yaml index b095716..9628572 100644 --- a/data/mobs/examples/elite_synth.yaml +++ b/data/mobs/examples/elite_synth.yaml @@ -1,32 +1,10 @@ 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 -strength: 1 -defense: 38 -hp: 104 -science: 65 -speed: 4 -aggressive: true -respawn_ticks: 75 -attack_type: science -attack_bonus: 0 -strength_bonus: 0 -stab_defense: 45 -slash_defense: 45 -crush_defense: 40 -science_defense: 55 -ranged_defense: -15 -weakness: chaos idle_descriptions: - "calibrates targeting sensors with a soft chime" - "projects a holographic tactical display" - "emits a binary chirp" - "reconfigures its weapon array silently" -combat_descriptions: - - "unleashes a coherent energy beam at %s" - - "fires a pulse of disruptor energy at %s" - - "overloads its emitters and blasts %s" -size: medium drops: remains: circuit_board loot: @@ -41,3 +19,34 @@ drops: quantity: 3 - table: gem_table weight: 15 +combat: + kind: combat + stats: + hp: 104 + attack: 1 + strength: 1 + defense: 38 + science: 65 + attack_type: science + speed: 4 + aggressive: true + respawn_ticks: 75 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 45 + slash_defense: 45 + crush_defense: 40 + science_defense: 55 + ranged_defense: -15 + weakness: chaos + size: medium + combat_descriptions: + - "unleashes a coherent energy beam at %s" + - "fires a pulse of disruptor energy at %s" + - "overloads its emitters and blasts %s" diff --git a/data/mobs/examples/enforcer_bot.yaml b/data/mobs/examples/enforcer_bot.yaml index 78150c3..efdd698 100644 --- a/data/mobs/examples/enforcer_bot.yaml +++ b/data/mobs/examples/enforcer_bot.yaml @@ -1,31 +1,10 @@ name: enforcer bot description: "A heavy riot control automaton with impact shields and a shock baton. It moves with deliberate, crushing steps." -attack: 30 -strength: 35 -defense: 32 -hp: 70 -speed: 5 -aggressive: true -respawn_ticks: 55 -attack_type: crush -attack_bonus: 25 -strength_bonus: 25 -stab_defense: 40 -slash_defense: 40 -crush_defense: 50 -science_defense: -15 -ranged_defense: 30 -weakness: solar idle_descriptions: - "patrols the area with heavy footsteps" - "deploys its riot shield with a hiss" - "announces a warning in garbled speech" - "tests its shock baton against a wall" -combat_descriptions: - - "smashes %s with a shock baton" - - "slams its riot shield into %s" - - "delivers a stunning blow to %s" -size: large drops: remains: scrap loot: @@ -40,3 +19,33 @@ drops: quantity: 800 - table: gem_table weight: 5 +combat: + kind: combat + stats: + hp: 70 + attack: 30 + strength: 35 + defense: 32 + attack_type: crush + speed: 5 + aggressive: true + respawn_ticks: 55 + bonuses: + attack_bonus: 25 + strength_bonus: 25 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 40 + slash_defense: 40 + crush_defense: 50 + science_defense: -15 + ranged_defense: 30 + weakness: solar + size: large + combat_descriptions: + - "smashes %s with a shock baton" + - "slams its riot shield into %s" + - "delivers a stunning blow to %s" diff --git a/data/mobs/examples/estate_broker.yaml b/data/mobs/examples/estate_broker.yaml index b095214..e95c3a7 100644 --- a/data/mobs/examples/estate_broker.yaml +++ b/data/mobs/examples/estate_broker.yaml @@ -1,6 +1,6 @@ -color: "E3" description: A sharply-dressed real estate agent with a datapad and a practiced smile. -idle: The estate broker flashes a professional smile. +idle_descriptions: + - flashes a professional smile name: estate broker protected: true talk: @@ -57,4 +57,3 @@ talk: - goto: info text: What do I get with a house? unique: true -size: small diff --git a/data/mobs/examples/farmer.yaml b/data/mobs/examples/farmer.yaml index 591f1a3..8e72ac2 100644 --- a/data/mobs/examples/farmer.yaml +++ b/data/mobs/examples/farmer.yaml @@ -1,32 +1,15 @@ name: Farmer description: "A weathered farmer in muddy overalls, pockets bulging with seeds." -combat_descriptions: - - "swings a shovel at %s" - - "is getting beaten by %s" - - "grapples with %s" idle_descriptions: - "examines a handful of seeds" - "wipes dirt from his hands" - "mutters about the growing season" - "adjusts his wide-brimmed hat" -attack: 3 -strength: 3 -defense: 3 -hp: 15 -speed: 5 -aggressive: false -respawn_ticks: 40 -attack_type: crush -stab_defense: 0 -slash_defense: 0 -crush_defense: 0 -science_defense: 0 -ranged_defense: 0 -steal_table: farmer_steal -steal_level: 10 -steal_xp: 15 -steal_speed: 4 -size: small +steal: + table: farmer_steal + level: 10 + xp: 15 + speed: 4 drops: remains: "bones" loot: @@ -41,4 +24,33 @@ drops: quantity: 2 - item_id: "tomato_seed" weight: 10 - quantity: 1 \ No newline at end of file + quantity: 1 +combat: + kind: combat + stats: + hp: 15 + attack: 3 + strength: 3 + defense: 3 + attack_type: crush + speed: 5 + aggressive: false + respawn_ticks: 40 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 0 + slash_defense: 0 + crush_defense: 0 + science_defense: 0 + ranged_defense: 0 + size: small + combat_descriptions: + - "swings a shovel at %s" + - "is getting beaten by %s" + - "grapples with %s" diff --git a/data/mobs/examples/feral_cyborg.yaml b/data/mobs/examples/feral_cyborg.yaml index 8b30cc3..e5edf3d 100644 --- a/data/mobs/examples/feral_cyborg.yaml +++ b/data/mobs/examples/feral_cyborg.yaml @@ -1,30 +1,10 @@ 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 -strength: 36 -defense: 32 -hp: 82 -speed: 4 -aggressive: true -respawn_ticks: 50 -attack_type: slash -attack_bonus: 30 -strength_bonus: 28 -stab_defense: 35 -slash_defense: 45 -crush_defense: 30 -science_defense: -10 -ranged_defense: 35 idle_descriptions: - "paces back and forth, muttering" - "retracts and extends forearm blades" - "emits a distorted laugh" - "scratches at their own cybernetics" -combat_descriptions: - - "slashes %s with forearm blades" - - "delivers a powered kick to %s" - - "grapples %s with augmented strength" -size: medium drops: remains: bones loot: @@ -36,3 +16,32 @@ drops: quantity: 3 - table: herb_table_mid weight: 15 +combat: + kind: combat + stats: + hp: 82 + attack: 34 + strength: 36 + defense: 32 + attack_type: slash + speed: 4 + aggressive: true + respawn_ticks: 50 + bonuses: + attack_bonus: 30 + strength_bonus: 28 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 35 + slash_defense: 45 + crush_defense: 30 + science_defense: -10 + ranged_defense: 35 + size: medium + combat_descriptions: + - "slashes %s with forearm blades" + - "delivers a powered kick to %s" + - "grapples %s with augmented strength" diff --git a/data/mobs/examples/general_store_clerk.yaml b/data/mobs/examples/general_store_clerk.yaml index bee395d..489ed28 100644 --- a/data/mobs/examples/general_store_clerk.yaml +++ b/data/mobs/examples/general_store_clerk.yaml @@ -1,24 +1,12 @@ -aggressive: false -attack: 1 -attack_type: crush -crush_defense: 0 -defense: 1 +name: Shopkeeper description: A friendly merchant with a tidy apron, standing behind a well-stocked counter. -hp: 50 +protected: true +unique: true idle_descriptions: - arranges items on the shelves - polishes the counter - counts credits in the register - greets a passerby with a nod -name: Shopkeeper -protected: true -ranged_defense: 0 -respawn_ticks: 30 -science_defense: 0 -slash_defense: 0 -speed: 5 -stab_defense: 0 -strength: 1 shop: message: '"Welcome to the General Store! Have a look around."' items: @@ -49,5 +37,3 @@ talk: - '"Welcome to the General Store! Type ''list'' to see my wares."' options: - text: '"Goodbye."' -unique: true -size: small diff --git a/data/mobs/examples/ghoul.yaml b/data/mobs/examples/ghoul.yaml index ae8fed6..070d6f1 100644 --- a/data/mobs/examples/ghoul.yaml +++ b/data/mobs/examples/ghoul.yaml @@ -1,31 +1,10 @@ name: ghoul description: "A radiation-scarred crew member, barely recognizable as human. Its flesh glows faintly and its eyes are hollow sockets." -attack: 22 -strength: 22 -defense: 20 -hp: 54 -speed: 4 -aggressive: true -respawn_ticks: 35 -attack_type: crush -attack_bonus: 15 -strength_bonus: 12 -stab_defense: 20 -slash_defense: 25 -crush_defense: 15 -science_defense: -5 -ranged_defense: 20 -weakness: hydro idle_descriptions: - "shambles aimlessly and moans" - "scratches at the walls leaving glowing marks" - "stares blankly into the darkness" - "emits a low, rattling groan" -combat_descriptions: - - "claws at %s with irradiated hands" - - "lunges at %s with a gurgling shriek" - - "bites %s with decaying teeth" -size: medium drops: remains: bones loot: @@ -36,3 +15,33 @@ drops: weight: 25 - table: herb_table_low weight: 15 +combat: + kind: combat + stats: + hp: 54 + attack: 22 + strength: 22 + defense: 20 + attack_type: crush + speed: 4 + aggressive: true + respawn_ticks: 35 + bonuses: + attack_bonus: 15 + strength_bonus: 12 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 20 + slash_defense: 25 + crush_defense: 15 + science_defense: -5 + ranged_defense: 20 + weakness: hydro + size: medium + combat_descriptions: + - "claws at %s with irradiated hands" + - "lunges at %s with a gurgling shriek" + - "bites %s with decaying teeth" diff --git a/data/mobs/examples/goblin.yaml b/data/mobs/examples/goblin.yaml index a02c112..23a5f77 100644 --- a/data/mobs/examples/goblin.yaml +++ b/data/mobs/examples/goblin.yaml @@ -1,26 +1,10 @@ name: goblin description: "A small green-skinned goblin with a rusty blade." -attack: 1 -strength: 3 -defense: 3 -hp: 12 -speed: 5 -aggressive: true -respawn_ticks: 25 -attack_type: slash -attack_bonus: 3 -strength_bonus: 2 -stab_defense: 4 -slash_defense: 3 -crush_defense: -2 -science_defense: 0 -ranged_defense: 3 idle_descriptions: - "mutters something unintelligible" - "waves a rusty blade around" - "picks its nose" - "kicks a pebble" -size: small drops: remains: bones loot: @@ -30,3 +14,28 @@ drops: - item_id: credits weight: 20 quantity: 25 +combat: + kind: combat + stats: + hp: 12 + attack: 1 + strength: 3 + defense: 3 + attack_type: slash + speed: 5 + aggressive: true + respawn_ticks: 25 + bonuses: + attack_bonus: 3 + strength_bonus: 2 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 4 + slash_defense: 3 + crush_defense: -2 + science_defense: 0 + ranged_defense: 3 + size: small diff --git a/data/mobs/examples/greater_drone.yaml b/data/mobs/examples/greater_drone.yaml index 11cf8e2..93993ea 100644 --- a/data/mobs/examples/greater_drone.yaml +++ b/data/mobs/examples/greater_drone.yaml @@ -1,28 +1,10 @@ name: greater drone description: "A large, heavily armored drone with multiple energy emitters. Red warning lights pulse along its hull." -attack: 1 -strength: 1 -defense: 30 -hp: 120 -ranged: 0 -science: 40 -speed: 4 -aggressive: true -respawn_ticks: 80 -attack_type: science -attack_bonus: 0 -strength_bonus: 0 -stab_defense: 55 -slash_defense: 55 -crush_defense: 50 -science_defense: 40 -ranged_defense: -20 idle_descriptions: - "projects a defensive energy shield" - "recalibrates its targeting array" - "emits a warning klaxon" - "deploys sensor probes" -size: medium drops: loot: - item_id: scrap @@ -31,3 +13,29 @@ drops: - item_id: credits weight: 60 quantity: 1500 +combat: + kind: combat + stats: + hp: 120 + attack: 1 + strength: 1 + defense: 30 + science: 40 + attack_type: science + speed: 4 + aggressive: true + respawn_ticks: 80 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 55 + slash_defense: 55 + crush_defense: 50 + science_defense: 40 + ranged_defense: -20 + size: medium diff --git a/data/mobs/examples/guard.yaml b/data/mobs/examples/guard.yaml index cba448b..bd20f24 100644 --- a/data/mobs/examples/guard.yaml +++ b/data/mobs/examples/guard.yaml @@ -1,26 +1,12 @@ -aggressive: false -attack: 5 -attack_bonus: 8 -attack_type: slash -crush_defense: 10 -defense: 5 +name: Guard description: A stern-looking guard in weathered armor. -hp: 30 +unique: true +protected: true idle_descriptions: - scans the area with a watchful eye - adjusts the grip on his weapon - nods curtly at passersby - leans against the gate, arms folded -name: Guard -protected: true -ranged_defense: 12 -respawn_ticks: 60 -science_defense: -5 -slash_defense: 15 -speed: 5 -stab_defense: 12 -strength: 5 -strength_bonus: 6 talk: nodes: about_gate: @@ -71,5 +57,3 @@ talk: - '"Good quality ore. This''ll do." He stamps a slip of paper and hands it to you. "That''s your pass. Don''t lose it."' options: - text: '"Thanks."' -unique: true -size: medium diff --git a/data/mobs/examples/heavy_mech.yaml b/data/mobs/examples/heavy_mech.yaml index e2f5f5a..669c444 100644 --- a/data/mobs/examples/heavy_mech.yaml +++ b/data/mobs/examples/heavy_mech.yaml @@ -1,31 +1,10 @@ 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 -strength: 44 -defense: 44 -hp: 94 -speed: 5 -aggressive: true -respawn_ticks: 70 -attack_type: crush -attack_bonus: 35 -strength_bonus: 35 -stab_defense: 55 -slash_defense: 55 -crush_defense: 65 -science_defense: -25 -ranged_defense: 40 -weakness: solar idle_descriptions: - "scans the room with a blue optical beam" - "vents a cloud of steam" - "rotates its cannon with a mechanical whine" - "announces a threat level assessment" -combat_descriptions: - - "fires its rotary cannon at %s" - - "smashes %s with a hydraulic fist" - - "unleashes a missile salvo at %s" -size: massive drops: remains: scrap loot: @@ -40,3 +19,33 @@ drops: - item_id: lawjunk weight: 10 quantity: 2 +combat: + kind: combat + stats: + hp: 94 + attack: 40 + strength: 44 + defense: 44 + attack_type: crush + speed: 5 + aggressive: true + respawn_ticks: 70 + bonuses: + attack_bonus: 35 + strength_bonus: 35 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 55 + slash_defense: 55 + crush_defense: 65 + science_defense: -25 + ranged_defense: 40 + weakness: solar + size: massive + combat_descriptions: + - "fires its rotary cannon at %s" + - "smashes %s with a hydraulic fist" + - "unleashes a missile salvo at %s" diff --git a/data/mobs/examples/iron_sentinel.yaml b/data/mobs/examples/iron_sentinel.yaml index bf8b9b5..48b2dbe 100644 --- a/data/mobs/examples/iron_sentinel.yaml +++ b/data/mobs/examples/iron_sentinel.yaml @@ -1,26 +1,10 @@ name: iron sentinel description: "A massive bipedal automaton forged from pre-regression alloys. Its joints grind with each deliberate step." -attack: 25 -strength: 30 -defense: 45 -hp: 180 -speed: 6 -aggressive: true -respawn_ticks: 100 -attack_type: crush -attack_bonus: 40 -strength_bonus: 35 -stab_defense: 80 -slash_defense: 80 -crush_defense: 70 -science_defense: -30 -ranged_defense: 50 idle_descriptions: - "stands motionless, servos whining softly" - "turns its armored head with a mechanical grind" - "vents steam from exhaust ports" - "scans the area with a red optical sensor" -size: large drops: loot: - item_id: scrap @@ -29,3 +13,28 @@ drops: - item_id: credits weight: 60 quantity: 5000 +combat: + kind: combat + stats: + hp: 180 + attack: 25 + strength: 30 + defense: 45 + attack_type: crush + speed: 6 + aggressive: true + respawn_ticks: 100 + bonuses: + attack_bonus: 40 + strength_bonus: 35 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 80 + slash_defense: 80 + crush_defense: 70 + science_defense: -30 + ranged_defense: 50 + size: large diff --git a/data/mobs/examples/lesser_drone.yaml b/data/mobs/examples/lesser_drone.yaml index c9e50a5..d9c452d 100644 --- a/data/mobs/examples/lesser_drone.yaml +++ b/data/mobs/examples/lesser_drone.yaml @@ -1,28 +1,10 @@ name: lesser drone description: "A floating metallic drone with a pulsing energy core. Its surface crackles with electric discharge." -attack: 1 -strength: 1 -defense: 18 -hp: 55 -ranged: 0 -science: 20 -speed: 4 -aggressive: true -respawn_ticks: 50 -attack_type: science -attack_bonus: 0 -strength_bonus: 0 -stab_defense: 35 -slash_defense: 35 -crush_defense: 30 -science_defense: 20 -ranged_defense: -10 idle_descriptions: - "hovers silently, scanning the area" - "emits a low electronic hum" - "projects a thin beam of light across the floor" - "rotates slowly in place" -size: small drops: loot: - item_id: scrap @@ -30,3 +12,29 @@ drops: - item_id: credits weight: 40 quantity: 300 +combat: + kind: combat + stats: + hp: 55 + attack: 1 + strength: 1 + defense: 18 + science: 20 + attack_type: science + speed: 4 + aggressive: true + respawn_ticks: 50 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 35 + slash_defense: 35 + crush_defense: 30 + science_defense: 20 + ranged_defense: -10 + size: small diff --git a/data/mobs/examples/man.yaml b/data/mobs/examples/man.yaml index 8478f41..ec3624c 100644 --- a/data/mobs/examples/man.yaml +++ b/data/mobs/examples/man.yaml @@ -1,11 +1,5 @@ name: man description: "A shabby-looking man loitering in the town square." -combat_descriptions: - - "is engaged in a fight to the death with %s" - - "is getting pummelled by %s" - - "is locked in combat with %s" - - "trades blows with %s" - - "circles warily around %s" idle_descriptions: - "scribbles something in a small notebook" - "gazes skyward at the clouds" @@ -13,24 +7,11 @@ idle_descriptions: - "scratches his head thoughtfully" - "stares off into the distance" - "adjusts his tunic and stretches" -attack: 1 -strength: 1 -defense: 1 -hp: 7 -speed: 5 -aggressive: false -respawn_ticks: 30 -steal_table: man_steal -steal_level: 1 -steal_xp: 8 -steal_speed: 4 -attack_type: crush -stab_defense: 0 -slash_defense: 0 -crush_defense: 0 -science_defense: 0 -ranged_defense: 0 -size: small +steal: + table: man_steal + level: 1 + xp: 8 + speed: 4 drops: remains: "bones" loot: @@ -46,3 +27,34 @@ drops: weight: 4 - item_id: "grimy_tarromin" weight: 2 +combat: + kind: combat + stats: + hp: 7 + attack: 1 + strength: 1 + defense: 1 + attack_type: crush + speed: 5 + aggressive: false + respawn_ticks: 30 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + crush_defense: 0 + ranged_defense: 0 + science_defense: 0 + slash_defense: 0 + stab_defense: 0 + size: small + combat_descriptions: + - "is engaged in a fight to the death with %s" + - "is getting pummelled by %s" + - "is locked in combat with %s" + - "trades blows with %s" + - "circles warily around %s" diff --git a/data/mobs/examples/molten_elemental.yaml b/data/mobs/examples/molten_elemental.yaml index 9c46ccb..3c9b023 100644 --- a/data/mobs/examples/molten_elemental.yaml +++ b/data/mobs/examples/molten_elemental.yaml @@ -1,31 +1,10 @@ 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 -strength: 52 -defense: 52 -hp: 115 -speed: 5 -aggressive: true -respawn_ticks: 80 -attack_type: crush -attack_bonus: 40 -strength_bonus: 42 -stab_defense: 60 -slash_defense: 60 -crush_defense: 70 -science_defense: -30 -ranged_defense: 45 -weakness: hydro idle_descriptions: - "bubbles and churns, throwing off sparks" - "melts a nearby chunk of metal absent-mindedly" - "pulses with an inner orange glow" - "drips glowing droplets onto the floor" -combat_descriptions: - - "hurls a glob of molten metal at %s" - - "engulfs %s in a wave of liquid fire" - - "smashes %s with a superheated limb" -size: large drops: remains: scrap loot: @@ -40,3 +19,33 @@ drops: quantity: 2 - table: herb_table_high weight: 15 +combat: + kind: combat + stats: + hp: 115 + attack: 48 + strength: 52 + defense: 52 + attack_type: crush + speed: 5 + aggressive: true + respawn_ticks: 80 + bonuses: + attack_bonus: 40 + strength_bonus: 42 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 60 + slash_defense: 60 + crush_defense: 70 + science_defense: -30 + ranged_defense: 45 + weakness: hydro + size: large + combat_descriptions: + - "hurls a glob of molten metal at %s" + - "engulfs %s in a wave of liquid fire" + - "smashes %s with a superheated limb" diff --git a/data/mobs/examples/moss_giant.yaml b/data/mobs/examples/moss_giant.yaml index f19f0a3..9b07a37 100644 --- a/data/mobs/examples/moss_giant.yaml +++ b/data/mobs/examples/moss_giant.yaml @@ -1,26 +1,10 @@ name: moss giant description: "A towering creature covered in moss and vines, its rocky skin dripping with moisture." -attack: 12 -strength: 14 -defense: 10 -hp: 60 -speed: 7 -aggressive: true -respawn_ticks: 45 -attack_type: crush -attack_bonus: 10 -strength_bonus: 12 -stab_defense: 15 -slash_defense: 12 -crush_defense: 18 -science_defense: -5 -ranged_defense: 15 idle_descriptions: - "surveys its territory with dull eyes" - "pulls a vine from its shoulder" - "stamps the ground, sending tremors" - "scratches its mossy hide" -size: massive drops: remains: bones loot: @@ -30,3 +14,28 @@ drops: - item_id: credits weight: 50 quantity: 500 +combat: + kind: combat + stats: + hp: 60 + attack: 12 + strength: 14 + defense: 10 + attack_type: crush + speed: 7 + aggressive: true + respawn_ticks: 45 + bonuses: + attack_bonus: 10 + strength_bonus: 12 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 15 + slash_defense: 12 + crush_defense: 18 + science_defense: -5 + ranged_defense: 15 + size: massive diff --git a/data/mobs/examples/mutant_rat.yaml b/data/mobs/examples/mutant_rat.yaml index 7836ef9..676b510 100644 --- a/data/mobs/examples/mutant_rat.yaml +++ b/data/mobs/examples/mutant_rat.yaml @@ -1,31 +1,10 @@ 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 -strength: 13 -defense: 12 -hp: 32 -speed: 4 -aggressive: true -respawn_ticks: 25 -attack_type: crush -attack_bonus: 8 -strength_bonus: 6 -stab_defense: 15 -slash_defense: 15 -crush_defense: 10 -science_defense: -10 -ranged_defense: 5 -weakness: bio idle_descriptions: - "scurries frantically in circles" - "gnaws on a rusted pipe" - "emits a gurgling screech" - "twitches unnaturally" -combat_descriptions: - - "bites %s with glowing teeth" - - "slashes %s with mutated claws" - - "lunges at %s with unnatural speed" -size: small drops: remains: bones loot: @@ -37,3 +16,33 @@ drops: - item_id: credits weight: 10 quantity: 60 +combat: + kind: combat + stats: + hp: 32 + attack: 13 + strength: 13 + defense: 12 + attack_type: crush + speed: 4 + aggressive: true + respawn_ticks: 25 + bonuses: + attack_bonus: 8 + strength_bonus: 6 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 15 + slash_defense: 15 + crush_defense: 10 + science_defense: -10 + ranged_defense: 5 + weakness: bio + size: small + combat_descriptions: + - "bites %s with glowing teeth" + - "slashes %s with mutated claws" + - "lunges at %s with unnatural speed" diff --git a/data/mobs/examples/newbie_trainer.yaml b/data/mobs/examples/newbie_trainer.yaml index 3897dba..eddb0e9 100644 --- a/data/mobs/examples/newbie_trainer.yaml +++ b/data/mobs/examples/newbie_trainer.yaml @@ -2,19 +2,6 @@ name: Newbie Trainer description: "A friendly-looking instructor ready to help new adventurers." unique: true protected: true -attack: 1 -strength: 1 -defense: 1 -hp: 50 -speed: 5 -aggressive: false -respawn_ticks: 30 -attack_type: crush -stab_defense: 0 -slash_defense: 0 -crush_defense: 0 -science_defense: 0 -ranged_defense: 0 idle_descriptions: - "reviews a training manual" - "adjusts a practice dummy" @@ -22,4 +9,3 @@ idle_descriptions: - "offers a friendly nod to passersby" - "polishes a wooden shield" - "checks a stopwatch and jots something down" -size: small diff --git a/data/mobs/examples/phantom.yaml b/data/mobs/examples/phantom.yaml index d871b76..fad8167 100644 --- a/data/mobs/examples/phantom.yaml +++ b/data/mobs/examples/phantom.yaml @@ -1,24 +1,10 @@ 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 -damage_without: spectral_visor -attack: 35 -strength: 30 -defense: 25 -hp: 100 -speed: 3 -aggressive: true -respawn_ticks: 50 idle_descriptions: - "flickers between visible and invisible" - "emits a low, resonant hum" - "drifts through a wall and back again" - "stares at you with hollow, glowing eyes" -combat_descriptions: - - "blasts %s with a psychic wave" - - "phases through %s's defenses" - - "unleashes a spectral shriek at %s" -size: medium drops: remains: ectoplasm loot: @@ -30,3 +16,34 @@ drops: - item_id: credits weight: 37 quantity: 1000 +combat: + kind: combat + stats: + hp: 100 + attack: 35 + strength: 30 + defense: 25 + attack_type: crush + speed: 3 + aggressive: true + respawn_ticks: 50 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 0 + slash_defense: 0 + crush_defense: 0 + science_defense: 0 + ranged_defense: 0 + assassin_level: 45 + damage_without: spectral_visor + size: medium + combat_descriptions: + - "blasts %s with a psychic wave" + - "phases through %s's defenses" + - "unleashes a spectral shriek at %s" diff --git a/data/mobs/examples/plasma_wraith.yaml b/data/mobs/examples/plasma_wraith.yaml index c4ced2b..7241d9a 100644 --- a/data/mobs/examples/plasma_wraith.yaml +++ b/data/mobs/examples/plasma_wraith.yaml @@ -1,32 +1,10 @@ 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 -strength: 1 -defense: 22 -hp: 56 -science: 65 -speed: 4 -aggressive: true -respawn_ticks: 60 -attack_type: science -attack_bonus: 0 -strength_bonus: 0 -stab_defense: 30 -slash_defense: 30 -crush_defense: 25 -science_defense: 45 -ranged_defense: -10 -weakness: hydro idle_descriptions: - "drifts silently, leaving heat shimmer in its wake" - "pulses with internal light" - "phases partially through a wall" - "emits a low frequency hum" -combat_descriptions: - - "lashes %s with a whip of plasma" - - "engulfs %s in a superheated cloud" - - "discharges a concentrated beam at %s" -size: medium drops: remains: ectoplasm loot: @@ -41,3 +19,34 @@ drops: quantity: 2 - table: gem_table weight: 15 +combat: + kind: combat + stats: + hp: 56 + attack: 1 + strength: 1 + defense: 22 + science: 65 + attack_type: science + speed: 4 + aggressive: true + respawn_ticks: 60 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 30 + slash_defense: 30 + crush_defense: 25 + science_defense: 45 + ranged_defense: -10 + weakness: hydro + size: medium + combat_descriptions: + - "lashes %s with a whip of plasma" + - "engulfs %s in a superheated cloud" + - "discharges a concentrated beam at %s" diff --git a/data/mobs/examples/psionic_entity.yaml b/data/mobs/examples/psionic_entity.yaml index 1c518bf..1f270e6 100644 --- a/data/mobs/examples/psionic_entity.yaml +++ b/data/mobs/examples/psionic_entity.yaml @@ -1,31 +1,10 @@ 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 -strength: 1 -defense: 42 -hp: 128 -science: 97 -speed: 4 -aggressive: true -respawn_ticks: 100 -attack_type: science -attack_bonus: 0 -strength_bonus: 0 -stab_defense: 50 -slash_defense: 50 -crush_defense: 45 -science_defense: 70 -ranged_defense: -20 idle_descriptions: - "probes the edges of your consciousness" - "flickers between visible and invisible states" - "emits a subsonic pulse you feel in your teeth" - "momentarily shows you visions of another dimension" -combat_descriptions: - - "assaults %s's mind with psionic force" - - "tears at %s's perception of reality" - - "unleashes a devastating mental blast at %s" -size: large drops: remains: ectoplasm loot: @@ -44,3 +23,33 @@ drops: weight: 5 - table: herb_table_high weight: 5 +combat: + kind: combat + stats: + hp: 128 + attack: 1 + strength: 1 + defense: 42 + science: 97 + attack_type: science + speed: 4 + aggressive: true + respawn_ticks: 100 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 50 + slash_defense: 50 + crush_defense: 45 + science_defense: 70 + ranged_defense: -20 + size: large + combat_descriptions: + - "assaults %s's mind with psionic force" + - "tears at %s's perception of reality" + - "unleashes a devastating mental blast at %s" diff --git a/data/mobs/examples/rat.yaml b/data/mobs/examples/rat.yaml index 4265674..7a92026 100644 --- a/data/mobs/examples/rat.yaml +++ b/data/mobs/examples/rat.yaml @@ -1,22 +1,33 @@ name: rat description: "A large, mangy rat with beady red eyes." -attack: 1 -strength: 1 -defense: 1 -hp: 2 -speed: 4 -aggressive: false -respawn_ticks: 20 -attack_type: crush -stab_defense: 0 -slash_defense: 0 -crush_defense: 0 -science_defense: 0 -ranged_defense: 0 idle_descriptions: - "sniffs around the ground" - "nibbles on something" - "scurries in circles" -size: small drops: remains: bones +combat: + kind: combat + stats: + hp: 2 + attack: 1 + strength: 1 + defense: 1 + attack_type: crush + speed: 4 + aggressive: false + respawn_ticks: 20 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + crush_defense: 0 + ranged_defense: 0 + science_defense: 0 + slash_defense: 0 + stab_defense: 0 + size: small diff --git a/data/mobs/examples/sawmill_operator.yaml b/data/mobs/examples/sawmill_operator.yaml index 366cfe3..0fc423d 100644 --- a/data/mobs/examples/sawmill_operator.yaml +++ b/data/mobs/examples/sawmill_operator.yaml @@ -1,6 +1,6 @@ -color: "BA" description: A burly worker in a thick apron, covered in sawdust. He operates the industrial sawmill. -idle: The sawmill operator wipes sawdust from his goggles. +idle_descriptions: + - wipes sawdust from his goggles name: sawmill operator protected: true talk: @@ -30,8 +30,6 @@ talk: - goto: goodbye text: No thanks. process: - action: - sawmill: true messages: - "" start: @@ -51,4 +49,3 @@ talk: - goto: goodbye text: Nothing for now. unique: true -size: small diff --git a/data/mobs/examples/scrap_bot.yaml b/data/mobs/examples/scrap_bot.yaml index a8b34d8..44d92aa 100644 --- a/data/mobs/examples/scrap_bot.yaml +++ b/data/mobs/examples/scrap_bot.yaml @@ -1,30 +1,10 @@ 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 -strength: 15 -defense: 14 -hp: 30 -speed: 5 -aggressive: true -respawn_ticks: 30 -attack_type: crush -attack_bonus: 10 -strength_bonus: 8 -stab_defense: 20 -slash_defense: 15 -crush_defense: 25 -science_defense: -5 -ranged_defense: 10 idle_descriptions: - "beeps erratically and twitches" - "bumps into a wall and reverses" - "emits a burst of static" - "scans the floor with a flickering beam" -combat_descriptions: - - "rams %s with its chassis" - - "swings a broken manipulator arm at %s" - - "discharges a spark at %s" -size: medium drops: remains: scrap loot: @@ -37,3 +17,32 @@ drops: - item_id: credits weight: 10 quantity: 100 +combat: + kind: combat + stats: + hp: 30 + attack: 15 + strength: 15 + defense: 14 + attack_type: crush + speed: 5 + aggressive: true + respawn_ticks: 30 + bonuses: + attack_bonus: 10 + strength_bonus: 8 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 20 + slash_defense: 15 + crush_defense: 25 + science_defense: -5 + ranged_defense: 10 + size: medium + combat_descriptions: + - "rams %s with its chassis" + - "swings a broken manipulator arm at %s" + - "discharges a spark at %s" diff --git a/data/mobs/examples/security_turret.yaml b/data/mobs/examples/security_turret.yaml index 9929106..05fce67 100644 --- a/data/mobs/examples/security_turret.yaml +++ b/data/mobs/examples/security_turret.yaml @@ -1,32 +1,10 @@ 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 -strength: 1 -defense: 16 -hp: 44 -ranged: 34 -speed: 5 -aggressive: true -respawn_ticks: 40 -attack_type: ranged -attack_bonus: 0 -strength_bonus: 0 -stab_defense: 30 -slash_defense: 20 -crush_defense: 40 -science_defense: -20 -ranged_defense: 15 -weakness: solar idle_descriptions: - "pans the room with a targeting laser" - "emits a rhythmic clicking sound" - "calibrates its targeting sensors" - "beeps a warning tone" -combat_descriptions: - - "fires twin bolts at %s" - - "unleashes a burst of rounds at %s" - - "locks onto %s and opens fire" -size: small drops: remains: scrap loot: @@ -39,3 +17,34 @@ drops: - item_id: credits weight: 10 quantity: 250 +combat: + kind: combat + stats: + hp: 44 + attack: 1 + strength: 1 + defense: 16 + ranged: 34 + attack_type: ranged + speed: 5 + aggressive: true + respawn_ticks: 40 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 30 + slash_defense: 20 + crush_defense: 40 + science_defense: -20 + ranged_defense: 15 + weakness: solar + size: small + combat_descriptions: + - "fires twin bolts at %s" + - "unleashes a burst of rounds at %s" + - "locks onto %s and opens fire" diff --git a/data/mobs/examples/skeleton.yaml b/data/mobs/examples/skeleton.yaml index ba82afc..2431215 100644 --- a/data/mobs/examples/skeleton.yaml +++ b/data/mobs/examples/skeleton.yaml @@ -1,25 +1,9 @@ name: skeleton description: "An animated pile of bones, held together by dark energy." -attack: 8 -strength: 6 -defense: 8 -hp: 22 -speed: 5 -aggressive: true -respawn_ticks: 30 -attack_type: stab -attack_bonus: 6 -strength_bonus: 4 -stab_defense: 10 -slash_defense: 18 -crush_defense: -5 -science_defense: -8 -ranged_defense: 10 idle_descriptions: - "rattles ominously" - "clicks its jaw open and shut" - "stares with empty eye sockets" -size: medium drops: remains: bones loot: @@ -29,3 +13,28 @@ drops: - item_id: credits weight: 30 quantity: 100 +combat: + kind: combat + stats: + hp: 22 + attack: 8 + strength: 6 + defense: 8 + attack_type: stab + speed: 5 + aggressive: true + respawn_ticks: 30 + bonuses: + attack_bonus: 6 + strength_bonus: 4 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 10 + slash_defense: 18 + crush_defense: -5 + science_defense: -8 + ranged_defense: 10 + size: medium diff --git a/data/mobs/examples/slug.yaml b/data/mobs/examples/slug.yaml index 64082ec..0429ee1 100644 --- a/data/mobs/examples/slug.yaml +++ b/data/mobs/examples/slug.yaml @@ -1,27 +1,44 @@ 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 -finishing_blow: salt -attack: 3 -strength: 3 -defense: 1 -hp: 15 -speed: 6 -aggressive: false -respawn_ticks: 25 idle_descriptions: - "oozes along the floor leaving a slimy trail" - "contracts and expands rhythmically" - "extends its eyestalks toward you" - "secretes a glob of toxic mucus" -combat_descriptions: - - "lunges slimily at %s" - - "sprays mucus toward %s" - - "writhes in combat with %s" -size: small drops: remains: slug_mucus loot: - item_id: credits weight: 100 quantity: 15 +combat: + kind: combat + stats: + hp: 15 + attack: 3 + strength: 3 + defense: 1 + attack_type: crush + speed: 6 + aggressive: false + respawn_ticks: 25 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 0 + slash_defense: 0 + crush_defense: 0 + science_defense: 0 + ranged_defense: 0 + assassin_level: 1 + finishing_blow: salt + size: small + combat_descriptions: + - "lunges slimily at %s" + - "sprays mucus toward %s" + - "writhes in combat with %s" diff --git a/data/mobs/examples/solar_panel_frame.yaml b/data/mobs/examples/solar_panel_frame.yaml index 90269f2..2685db0 100644 --- a/data/mobs/examples/solar_panel_frame.yaml +++ b/data/mobs/examples/solar_panel_frame.yaml @@ -1,25 +1,13 @@ 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 -verb: assemble -progress_noun: assembly -complete_message: "You bolt the final panel into place and the solar array hums to life!" -hp: 40 -defense: 10 -speed: 5 -aggressive: false -respawn_ticks: 40 -attack_type: crush -crush_defense: 0 -stab_defense: 40 -slash_defense: 40 -ranged_defense: 10 -science_defense: 10 +task: + verb: assemble + progress_noun: assembly + complete_message: "You bolt the final panel into place and the solar array hums to life!" idle_descriptions: - "stands half-assembled, panels waiting to be fitted" - "has loose cabling dangling from an open junction box" - "catches the light on its few mounted panels" -size: medium drops: loot: - item_id: credits @@ -31,3 +19,26 @@ drops: - item_id: coal weight: 5 quantity: 1 +combat: + kind: task + stats: + hp: 40 + defense: 10 + attack_type: crush + speed: 5 + aggressive: false + respawn_ticks: 40 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 40 + slash_defense: 40 + crush_defense: 0 + science_defense: 10 + ranged_defense: 10 + size: medium diff --git a/data/mobs/examples/tanner.yaml b/data/mobs/examples/tanner.yaml index 4c1f38b..99d64f1 100644 --- a/data/mobs/examples/tanner.yaml +++ b/data/mobs/examples/tanner.yaml @@ -1,24 +1,12 @@ -aggressive: false -attack: 1 -attack_type: crush -crush_defense: 0 -defense: 1 +name: Tanner description: A weathered craftsman with stained hands and a leather apron. -hp: 50 +protected: true +unique: true idle_descriptions: - scrapes at a piece of hide - examines a stack of leathers - sharpens a tanning knife - wipes sweat from his brow -name: Tanner -protected: true -ranged_defense: 0 -respawn_ticks: 30 -science_defense: 0 -slash_defense: 0 -speed: 5 -stab_defense: 0 -strength: 1 talk: nodes: start: @@ -64,5 +52,3 @@ talk: goto: start text: '"Tan another."' - text: '"Thanks."' -unique: true -size: small diff --git a/data/mobs/examples/titan_sentinel.yaml b/data/mobs/examples/titan_sentinel.yaml index 32ddcc2..6fb36d3 100644 --- a/data/mobs/examples/titan_sentinel.yaml +++ b/data/mobs/examples/titan_sentinel.yaml @@ -1,31 +1,10 @@ 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 -strength: 52 -defense: 56 -hp: 132 -speed: 5 -aggressive: true -respawn_ticks: 120 -attack_type: crush -attack_bonus: 48 -strength_bonus: 45 -stab_defense: 90 -slash_defense: 90 -crush_defense: 80 -science_defense: -35 -ranged_defense: 60 -weakness: solar idle_descriptions: - "stands motionless, gyros humming" - "scans the area with a sweeping crimson beam" - "vents superheated exhaust" - "rotates its armored torso with a deep grinding sound" -combat_descriptions: - - "smashes %s with a titan-grade fist" - - "unleashes a devastating plasma barrage at %s" - - "drives %s into the ground with overwhelming force" -size: massive drops: loot: - item_id: scrap @@ -39,3 +18,33 @@ drops: - item_id: deathjunk weight: 5 quantity: 5 +combat: + kind: combat + stats: + hp: 132 + attack: 50 + strength: 52 + defense: 56 + attack_type: crush + speed: 5 + aggressive: true + respawn_ticks: 120 + bonuses: + attack_bonus: 48 + strength_bonus: 45 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 90 + slash_defense: 90 + crush_defense: 80 + science_defense: -35 + ranged_defense: 60 + weakness: solar + size: massive + combat_descriptions: + - "smashes %s with a titan-grade fist" + - "unleashes a devastating plasma barrage at %s" + - "drives %s into the ground with overwhelming force" diff --git a/data/mobs/examples/veteran_merc.yaml b/data/mobs/examples/veteran_merc.yaml index 88238b6..71e3826 100644 --- a/data/mobs/examples/veteran_merc.yaml +++ b/data/mobs/examples/veteran_merc.yaml @@ -1,31 +1,10 @@ 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 -strength: 1 -defense: 40 -hp: 93 -ranged: 79 -speed: 5 -aggressive: true -respawn_ticks: 65 -attack_type: ranged -attack_bonus: 0 -strength_bonus: 0 -stab_defense: 40 -slash_defense: 40 -crush_defense: 35 -science_defense: 20 -ranged_defense: 55 idle_descriptions: - "checks their rifle's ammunition counter" - "adjusts their tactical vest" - "scans the area through their scope" - "spits and mutters a war story" -combat_descriptions: - - "fires a high-caliber round at %s" - - "puts %s in their crosshairs and squeezes the trigger" - - "unleashes suppressive fire at %s" -size: medium drops: remains: bones loot: @@ -40,3 +19,33 @@ drops: quantity: 2 - table: herb_table_mid weight: 15 +combat: + kind: combat + stats: + hp: 93 + attack: 1 + strength: 1 + defense: 40 + ranged: 79 + attack_type: ranged + speed: 5 + aggressive: true + respawn_ticks: 65 + bonuses: + attack_bonus: 0 + strength_bonus: 0 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 40 + slash_defense: 40 + crush_defense: 35 + science_defense: 20 + ranged_defense: 55 + size: medium + combat_descriptions: + - "fires a high-caliber round at %s" + - "puts %s in their crosshairs and squeezes the trigger" + - "unleashes suppressive fire at %s" diff --git a/data/mobs/examples/void_reaper.yaml b/data/mobs/examples/void_reaper.yaml index e54d776..bf85470 100644 --- a/data/mobs/examples/void_reaper.yaml +++ b/data/mobs/examples/void_reaper.yaml @@ -1,33 +1,10 @@ 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 -strength: 68 -defense: 72 -hp: 170 -speed: 3 -aggressive: true -respawn_ticks: 200 -attack_type: slash -attack_bonus: 60 -strength_bonus: 60 -stab_defense: 100 -slash_defense: 110 -crush_defense: 90 -science_defense: -45 -ranged_defense: 75 -weakness: bio -assassin_level: 80 -finishing_blow: lawjunk idle_descriptions: - "flickers in and out of existence" - "draws the warmth from the surrounding air" - "whispers in a language that predates humanity" - "reaches out with shadowy tendrils" -combat_descriptions: - - "swings its void scythe at %s" - - "drains the life force from %s" - - "envelops %s in absolute darkness" -size: massive drops: remains: ectoplasm loot: @@ -50,3 +27,35 @@ drops: quantity: 5 - table: herb_table_high weight: 10 +combat: + kind: combat + stats: + hp: 170 + attack: 62 + strength: 68 + defense: 72 + attack_type: slash + speed: 3 + aggressive: true + respawn_ticks: 200 + bonuses: + attack_bonus: 60 + strength_bonus: 60 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 100 + slash_defense: 110 + crush_defense: 90 + science_defense: -45 + ranged_defense: 75 + weakness: bio + assassin_level: 80 + finishing_blow: lawjunk + size: massive + combat_descriptions: + - "swings its void scythe at %s" + - "drains the life force from %s" + - "envelops %s in absolute darkness" diff --git a/data/mobs/examples/war_drone.yaml b/data/mobs/examples/war_drone.yaml index 587ad09..7255a45 100644 --- a/data/mobs/examples/war_drone.yaml +++ b/data/mobs/examples/war_drone.yaml @@ -1,31 +1,10 @@ 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 -strength: 28 -defense: 25 -hp: 65 -speed: 4 -aggressive: true -respawn_ticks: 50 -attack_type: slash -attack_bonus: 20 -strength_bonus: 18 -stab_defense: 35 -slash_defense: 30 -crush_defense: 40 -science_defense: -10 -ranged_defense: 20 -weakness: solar idle_descriptions: - "hovers aggressively, weapons armed" - "emits a low, threatening hum" - "paints a targeting reticle on the wall" - "cycles through weapon modes with a click" -combat_descriptions: - - "fires a plasma bolt at %s" - - "slashes at %s with a rotary blade" - - "launches a concussion grenade at %s" -size: medium drops: remains: circuit_board loot: @@ -40,3 +19,33 @@ drops: quantity: 500 - table: gem_table weight: 10 +combat: + kind: combat + stats: + hp: 65 + attack: 25 + strength: 28 + defense: 25 + attack_type: slash + speed: 4 + aggressive: true + respawn_ticks: 50 + bonuses: + attack_bonus: 20 + strength_bonus: 18 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 35 + slash_defense: 30 + crush_defense: 40 + science_defense: -10 + ranged_defense: 20 + weakness: solar + size: medium + combat_descriptions: + - "fires a plasma bolt at %s" + - "slashes at %s with a rotary blade" + - "launches a concussion grenade at %s" diff --git a/data/mobs/examples/weapons_smith.yaml b/data/mobs/examples/weapons_smith.yaml index b12a543..359f9e3 100644 --- a/data/mobs/examples/weapons_smith.yaml +++ b/data/mobs/examples/weapons_smith.yaml @@ -1,24 +1,12 @@ -aggressive: false -attack: 1 -attack_type: crush -crush_defense: 0 -defense: 1 +name: Weaponsmith description: A burly smith with soot-stained hands and a heavy leather apron, standing proudly by the forge. -hp: 80 +protected: true +unique: true idle_descriptions: - hammers at a glowing blade on the anvil - wipes soot from his brow - inspects a finished sword - tends to the furnace fire -name: Weaponsmith -protected: true -ranged_defense: 0 -respawn_ticks: 30 -science_defense: 0 -slash_defense: 0 -speed: 5 -stab_defense: 0 -strength: 1 shop: message: The Smithy — buy or sell weapons and armor. buys_anything: false @@ -46,5 +34,3 @@ talk: - '"Welcome to the Smithy! Type ''list'' to see my wares."' options: - text: '"Nothing right now."' -unique: true -size: small diff --git a/data/mobs/examples/zombie.yaml b/data/mobs/examples/zombie.yaml index f5989e0..77bb5ed 100644 --- a/data/mobs/examples/zombie.yaml +++ b/data/mobs/examples/zombie.yaml @@ -1,27 +1,10 @@ name: zombie description: "A shambling corpse reanimated by residual asteroid radiation." -attack: 10 -strength: 8 -defense: 8 -hp: 30 -speed: 6 -aggressive: true -respawn_ticks: 35 -attack_type: crush -attack_bonus: 4 -strength_bonus: 6 -stab_defense: 8 -slash_defense: 20 -crush_defense: -8 -science_defense: -15 -ranged_defense: 8 -weakness: solar idle_descriptions: - "groans and shuffles forward" - "reaches out with decaying arms" - "stumbles and catches itself" - "stares blankly ahead" -size: medium drops: remains: bones loot: @@ -31,3 +14,29 @@ drops: - item_id: credits weight: 40 quantity: 200 +combat: + kind: combat + stats: + hp: 30 + attack: 10 + strength: 8 + defense: 8 + attack_type: crush + speed: 6 + aggressive: true + respawn_ticks: 35 + bonuses: + attack_bonus: 4 + strength_bonus: 6 + science_bonus: 0 + science_percent_bonus: 0 + ranged_bonus: 0 + ranged_strength_bonus: 0 + defenses: + stab_defense: 8 + slash_defense: 20 + crush_defense: -8 + science_defense: -15 + ranged_defense: 8 + weakness: solar + size: medium diff --git a/data/mobs/flight_attendant_copy.yaml b/data/mobs/flight_attendant_copy.yaml index abe3d56..a495732 100644 --- a/data/mobs/flight_attendant_copy.yaml +++ b/data/mobs/flight_attendant_copy.yaml @@ -1,29 +1,12 @@ -aggressive: false -attack: 0 -bonuses: - attack_bonus: 0 - attack_type: stab - strength_bonus: 0 -defense: 0 -defenses: - crush_defense: 0 - ranged_defense: 0 - science_defense: 0 - slash_defense: 0 - stab_defense: 0 +name: flight attendant description: A smiling flight attendant in a crisp uniform, ready to assist passengers. -hp: 0 -id: flight_attendant_copy +unique: false +protected: true idle_descriptions: - adjusts her name badge - smiles politely at you -kind: combat -name: Credit Checker! -protected: true -ranged: 0 -respawn_ticks: 0 -science: 0 shop: + message: SHOP SHOP buy_percentage: 0 buys_anything: true change_percentage: 0 @@ -31,9 +14,6 @@ shop: - item_id: bronze_pickaxe restock_ticks: 0 stock: 5 - message: SHOP SHOP -speed: 0 -strength: 0 talk: nodes: start: @@ -41,4 +21,3 @@ talk: - goto: "" text: None! - text: None -unique: false -- cgit v1.2.3