diff options
| author | historia <[not public]> | 2026-06-25 19:37:20 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-25 19:37:20 -0400 |
| commit | c55d0e4150b23f2c5c9f96bbc3d4dc2fc6dbaa36 (patch) | |
| tree | d1c02acea2b4c8d0f672c1539cfdb373b6272ed0 /data/mobs/examples | |
| parent | 068ce514ea3eebdc42b595c631b4b00ce4594577 (diff) | |
| download | thehouseoficarus-c55d0e4150b23f2c5c9f96bbc3d4dc2fc6dbaa36.tar.gz | |
feat: yaml conversation trees more robust
Diffstat (limited to 'data/mobs/examples')
43 files changed, 1938 insertions, 0 deletions
diff --git a/data/mobs/examples/ancient_construct.yaml b/data/mobs/examples/ancient_construct.yaml new file mode 100644 index 0000000..190e8c2 --- /dev/null +++ b/data/mobs/examples/ancient_construct.yaml @@ -0,0 +1,47 @@ +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: + - item_id: credits + weight: 40 + quantity: 10000 + - item_id: bloodjunk + weight: 20 + quantity: 8 + - item_id: deathjunk + weight: 15 + quantity: 8 + - table: gem_table + weight: 10 + - item_id: uncut_diamond + weight: 5 + quantity: 3 + - table: herb_table_high + weight: 10 diff --git a/data/mobs/examples/bandit.yaml b/data/mobs/examples/bandit.yaml new file mode 100644 index 0000000..51e4b8e --- /dev/null +++ b/data/mobs/examples/bandit.yaml @@ -0,0 +1,38 @@ +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: + - item_id: credits + weight: 70 + quantity: 30 + - item_id: credits + weight: 20 + quantity: 80 + - table: herb_table_low + weight: 10 diff --git a/data/mobs/examples/bioengineer.yaml b/data/mobs/examples/bioengineer.yaml new file mode 100644 index 0000000..4761991 --- /dev/null +++ b/data/mobs/examples/bioengineer.yaml @@ -0,0 +1,44 @@ +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 +drops: + remains: "bones" + loot: + - item_id: "sweetcorn_seed" + weight: 30 + quantity: 2 + - item_id: "strawberry_seed" + weight: 25 + quantity: 1 + - item_id: "watermelon_seed" + weight: 15 + quantity: 1 + - item_id: "ranarr_seed" + weight: 5 + quantity: 1
\ No newline at end of file diff --git a/data/mobs/examples/client.yaml b/data/mobs/examples/client.yaml new file mode 100644 index 0000000..91b6802 --- /dev/null +++ b/data/mobs/examples/client.yaml @@ -0,0 +1,214 @@ +aggressive: false +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 +idle_descriptions: + - reviews a holographic dossier + - marks a location on a worn star chart + - flips a credit chit between their fingers + - 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: + action: + assign_task: true + message: '"Let me check what''s available..." The Client scrolls through their data pad.' + options: + - text: '"Understood."' + - goto: start + text: '"What else do you have?"' + buy_acid: + action: + cost: 10 + give_item: acid_vial + message: '"Handle with care." The Client passes you a vial of corrosive acid.' + options: + - condition: + min_credits: 10 + goto: buy_acid + text: '"Buy more."' + - goto: supplies + text: '"Thanks."' + buy_auto_acid: + action: + reputation_cost: 200 + set_player_flags: + assassin_unlocked_auto_acid_vial: true + message: '"Auto-acid purchased. Acid vials will no longer be consumed."' + options: + - goto: rep_shop + text: '"Thanks."' + buy_auto_salt: + action: + reputation_cost: 200 + set_player_flags: + assassin_unlocked_auto_salt: true + message: '"Auto-salt purchased. You''ll no longer consume salt on finishing blows."' + options: + - goto: rep_shop + text: '"Thanks."' + buy_extend_unlock: + action: + reputation_cost: 100 + set_player_flags: + assassin_unlocked_extend: true + message: '"You can now extend tasks via our conversation."' + options: + - goto: rep_shop + text: '"Thanks."' + buy_gloves: + action: + cost: 50 + give_item: insulated_gloves + message: '"These''ll keep the current from frying your hands." The Client tosses you a pair of thick rubber gloves.' + options: + - goto: supplies + text: '"Thanks."' + buy_salt: + action: + cost: 5 + give_item: salt + message: '"Here you go." The Client slides a packet of salt across the table.' + options: + - condition: + min_credits: 5 + goto: buy_salt + text: '"Buy more."' + - goto: supplies + text: '"Thanks."' + buy_superiors: + action: + reputation_cost: 300 + set_player_flags: + assassin_unlocked_superiors: true + message: '"Superior encounters unlocked. Watch yourself out there."' + options: + - goto: rep_shop + text: '"Thanks."' + buy_visor: + action: + cost: 75 + give_item: spectral_visor + message: '"Spectral frequency filter. Makes the invisible visible — and keeps their attacks from scrambling your brain."' + options: + - goto: supplies + text: '"Thanks."' + current_task: + message: '"Let me check your file." The Client pulls up your record.' + options: + - text: '"Okay."' + extend_confirm: + message: '"Extending your task costs 30 Reputation and adds more kills. Want to proceed?"' + options: + - goto: extend_done + text: '"Yes, extend it."' + - goto: start + text: '"Never mind."' + extend_done: + action: + extend_task: true + message: '"Done. I''ve added more targets to your contract."' + options: + - text: '"Thanks."' + rep_shop: + message: '"Here''s what I''ve got. All purchases are permanent."' + options: + - condition: + not: true + player_flag: assassin_unlocked_auto_salt + goto: buy_auto_salt + text: '"Auto-finish: Salt (200 Rep) - Never consume salt on finishing blows."' + - condition: + not: true + player_flag: assassin_unlocked_auto_acid_vial + goto: buy_auto_acid + text: '"Auto-finish: Acid Vial (200 Rep) - Never consume acid vials on finishing blows."' + - condition: + not: true + player_flag: assassin_unlocked_superiors + goto: buy_superiors + text: '"Unlock Superior Mobs (300 Rep) - Rare superior variants may spawn."' + - condition: + not: true + player_flag: assassin_unlocked_extend + goto: buy_extend_unlock + text: '"Unlock Extended Tasks (100 Rep) - Allows extending tasks."' + - goto: start + text: '"Back."' + skip_confirm: + message: '"Skipping a task costs 30 Reputation and resets your streak. Are you sure?"' + options: + - goto: skip_done + text: '"Yes, skip it."' + - goto: start + text: '"Never mind."' + skip_done: + action: + skip_task: true + message: '"Task cancelled. Your streak has been reset."' + options: + - goto: assign_task + text: '"Give me a new one."' + - text: '"Goodbye."' + start: + message: The Client looks up from their data pad. "What do you need?" + options: + - condition: + not: true + player_flag: assassin_task_mob + goto: assign_task + text: '"I need a job."' + - condition: + not: false + player_flag: assassin_task_mob + goto: current_task + text: '"What''s my current task?"' + - condition: + not: false + player_flag: assassin_task_mob + goto: skip_confirm + text: '"I want to skip my task."' + - condition: + all_of: + - not: false + player_flag: assassin_task_mob + - player_flag: assassin_unlocked_extend + value: true + goto: extend_confirm + text: '"I want to extend my task."' + - goto: rep_shop + text: '"I''d like to browse the Reputation Shop."' + - goto: supplies + text: '"I need supplies."' + - text: '"Goodbye."' + supplies: + message: '"I stock everything you need for the job. Cheap, too."' + options: + - condition: + min_credits: 5 + goto: buy_salt + text: '"Buy salt (5 credits each)."' + - condition: + min_credits: 10 + goto: buy_acid + text: '"Buy acid vial (10 credits each)."' + - condition: + min_credits: 50 + goto: buy_gloves + text: '"Buy insulated gloves (50 credits)."' + - condition: + min_credits: 75 + goto: buy_visor + 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 new file mode 100644 index 0000000..2083c03 --- /dev/null +++ b/data/mobs/examples/corrupted_scientist.yaml @@ -0,0 +1,43 @@ +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: + - item_id: credits + weight: 50 + quantity: 150 + - item_id: solarjunk + weight: 20 + quantity: 2 + - item_id: hydrojunk + weight: 15 + quantity: 2 + - table: herb_table_mid + weight: 15 diff --git a/data/mobs/examples/cow.yaml b/data/mobs/examples/cow.yaml new file mode 100644 index 0000000..7f1ee3c --- /dev/null +++ b/data/mobs/examples/cow.yaml @@ -0,0 +1,28 @@ +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: + - item_id: cowhide + weight: 100 + - item_id: raw_beef + weight: 100 diff --git a/data/mobs/examples/crawler.yaml b/data/mobs/examples/crawler.yaml new file mode 100644 index 0000000..9021c51 --- /dev/null +++ b/data/mobs/examples/crawler.yaml @@ -0,0 +1,32 @@ +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: + - item_id: credits + weight: 70 + quantity: 250 + - item_id: acid_vial + weight: 10 + - item_id: credits + weight: 20 + quantity: 500 diff --git a/data/mobs/examples/drone.yaml b/data/mobs/examples/drone.yaml new file mode 100644 index 0000000..5ac6552 --- /dev/null +++ b/data/mobs/examples/drone.yaml @@ -0,0 +1,32 @@ +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: + - item_id: credits + weight: 80 + quantity: 75 + - item_id: insulated_gloves + weight: 5 + - item_id: credits + weight: 15 + quantity: 200 diff --git a/data/mobs/examples/elite_synth.yaml b/data/mobs/examples/elite_synth.yaml new file mode 100644 index 0000000..b095716 --- /dev/null +++ b/data/mobs/examples/elite_synth.yaml @@ -0,0 +1,43 @@ +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: + - item_id: credits + weight: 50 + quantity: 1500 + - item_id: biojunk + weight: 20 + quantity: 3 + - item_id: naturejunk + weight: 15 + quantity: 3 + - table: gem_table + weight: 15 diff --git a/data/mobs/examples/enforcer_bot.yaml b/data/mobs/examples/enforcer_bot.yaml new file mode 100644 index 0000000..78150c3 --- /dev/null +++ b/data/mobs/examples/enforcer_bot.yaml @@ -0,0 +1,42 @@ +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: + - item_id: credits + weight: 60 + quantity: 350 + - item_id: scrap + weight: 20 + quantity: 5 + - item_id: credits + weight: 15 + quantity: 800 + - table: gem_table + weight: 5 diff --git a/data/mobs/examples/estate_broker.yaml b/data/mobs/examples/estate_broker.yaml new file mode 100644 index 0000000..a156e83 --- /dev/null +++ b/data/mobs/examples/estate_broker.yaml @@ -0,0 +1,55 @@ +color: "227" +description: A sharply-dressed real estate agent with a datapad and a practiced smile. +idle: The estate broker flashes a professional smile. +name: estate broker +protected: true +talk: + nodes: + already_own: + message: Yes, you're already a proud homeowner here! Your house is waiting for you. Use the Estate Directory to enter it, or expand your workshop. + options: + - goto: start + text: Good to know. + goodbye: + message: Come back when you're ready to invest in your future! + info: + message: Each house comes with an entrance hall and a workshop equipped with a workbench. You can use the workbench with a saw to turn logs into planks, or assemble planks into furniture. Furniture can be sold for a profit or displayed in your home. Future developments will allow adding more rooms to your house. + options: + - action: + cost: 10 + set_player_flags: + owns_house_local_neighborhood: local_neighborhood + condition: + not: true + player_flag: owns_house_local_neighborhood + goto: purchased + text: Sounds great! I'll buy one. + - goto: goodbye + text: Maybe later. + purchased: + message: Excellent! The plot is yours. You'll find your new home in the Local Neighborhood just north of here. Use the Estate Directory terminal to enter your house. The home comes with a workshop — perfect for construction projects. + options: + - goto: start + text: Thanks! + start: + message: Welcome to the Local Neighborhood development! I'm selling premium housing plots for only 10 credits. Interested in buying a house? + options: + - action: + cost: 10 + set_player_flags: + owns_house_local_neighborhood: local_neighborhood + condition: + not: true + player_flag: owns_house_local_neighborhood + goto: purchased + text: Yes, I'd like to buy a house. + - condition: + player_flag: owns_house_local_neighborhood + goto: already_own + text: I already own a house here. + - goto: goodbye + text: No thanks. + - 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 new file mode 100644 index 0000000..591f1a3 --- /dev/null +++ b/data/mobs/examples/farmer.yaml @@ -0,0 +1,44 @@ +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 +drops: + remains: "bones" + loot: + - item_id: "potato_seed" + weight: 40 + quantity: 3 + - item_id: "onion_seed" + weight: 30 + quantity: 2 + - item_id: "cabbage_seed" + weight: 20 + quantity: 2 + - item_id: "tomato_seed" + weight: 10 + quantity: 1
\ No newline at end of file diff --git a/data/mobs/examples/feral_cyborg.yaml b/data/mobs/examples/feral_cyborg.yaml new file mode 100644 index 0000000..8b30cc3 --- /dev/null +++ b/data/mobs/examples/feral_cyborg.yaml @@ -0,0 +1,38 @@ +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: + - item_id: credits + weight: 60 + quantity: 300 + - item_id: scrap + weight: 25 + quantity: 3 + - table: herb_table_mid + weight: 15 diff --git a/data/mobs/examples/general_store_clerk.yaml b/data/mobs/examples/general_store_clerk.yaml new file mode 100644 index 0000000..8a07191 --- /dev/null +++ b/data/mobs/examples/general_store_clerk.yaml @@ -0,0 +1,70 @@ +aggressive: false +attack: 1 +attack_type: crush +crush_defense: 0 +defense: 1 +description: A friendly merchant with a tidy apron, standing behind a well-stocked counter. +hp: 50 +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 +talk: + nodes: + shop: + action: + shop: + items: + - buy_price: 10 + item_id: fishing_rod + sell_price: 2 + - buy_price: 2 + item_id: fishing_bait + sell_price: 0 + - buy_price: 10 + item_id: matches + sell_price: 2 + - buy_price: 40 + item_id: firesteel + sell_price: 10 + - buy_price: 30 + item_id: lighter + sell_price: 7 + - buy_price: 20 + item_id: hammer + sell_price: 5 + - buy_price: 10 + item_id: knife + sell_price: 2 + - buy_price: 10 + item_id: chisel + sell_price: 2 + - buy_price: 10 + item_id: bread + sell_price: 2 + - buy_price: 20 + item_id: bowstring + sell_price: 5 + message: What would you like to buy or sell? + message: '"Take your time. What can I get you?"' + options: + - goto: start + text: '"I''m done."' + start: + message: '"Welcome to the General Store! Need any supplies?"' + options: + - goto: shop + text: '"I''d like to browse."' + - text: '"Goodbye."' +unique: true +size: small diff --git a/data/mobs/examples/ghoul.yaml b/data/mobs/examples/ghoul.yaml new file mode 100644 index 0000000..ae8fed6 --- /dev/null +++ b/data/mobs/examples/ghoul.yaml @@ -0,0 +1,38 @@ +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: + - item_id: credits + weight: 60 + quantity: 80 + - item_id: scrap + weight: 25 + - table: herb_table_low + weight: 15 diff --git a/data/mobs/examples/goblin.yaml b/data/mobs/examples/goblin.yaml new file mode 100644 index 0000000..a02c112 --- /dev/null +++ b/data/mobs/examples/goblin.yaml @@ -0,0 +1,32 @@ +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: + - item_id: credits + weight: 80 + quantity: 5 + - item_id: credits + weight: 20 + quantity: 25 diff --git a/data/mobs/examples/greater_drone.yaml b/data/mobs/examples/greater_drone.yaml new file mode 100644 index 0000000..11cf8e2 --- /dev/null +++ b/data/mobs/examples/greater_drone.yaml @@ -0,0 +1,33 @@ +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 + weight: 40 + quantity: 3 + - item_id: credits + weight: 60 + quantity: 1500 diff --git a/data/mobs/examples/guard.yaml b/data/mobs/examples/guard.yaml new file mode 100644 index 0000000..7bd7d19 --- /dev/null +++ b/data/mobs/examples/guard.yaml @@ -0,0 +1,71 @@ +aggressive: false +attack: 5 +attack_bonus: 8 +attack_type: slash +crush_defense: 10 +defense: 5 +description: A stern-looking guard in weathered armor. +hp: 30 +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: + action: + set_player_flags: + talked_to_guard: true + message: '"Supplies. Weapons. Things you don''t need to worry about." He shifts his weight. "Tell you what — bring me some copper ore and I''ll stamp you a pass."' + options: + - text: '"I''ll be back."' + - condition: + has_item: copper_ore + goto: trade_ore + text: '"I have some right here."' + - text: '"Goodbye."' + has_pass: + action: + set_flags: + gate_open: true + message: '"Let me see that..." He examines your pass and nods. "Alright, I''ll open the gate for you."' + options: + - text: '"Thanks."' + start: + message: '"Halt! This area is restricted." The guard eyes you suspiciously.' + options: + - goto: about_gate + text: '"What''s behind that gate?"' + - condition: + has_item: copper_ore + goto: trade_ore + text: '"I have copper ore."' + - condition: + player_flag: got_pass + value: true + goto: has_pass + text: '"I have a pass."' + - text: '"Goodbye."' + trade_ore: + action: + give_item: pass_stub + set_player_flags: + got_pass: true + talked_to_guard: true + take_item: copper_ore + message: '"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 new file mode 100644 index 0000000..e2f5f5a --- /dev/null +++ b/data/mobs/examples/heavy_mech.yaml @@ -0,0 +1,42 @@ +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: + - item_id: credits + weight: 55 + quantity: 1000 + - item_id: scrap + weight: 25 + quantity: 8 + - table: gem_table + weight: 10 + - item_id: lawjunk + weight: 10 + quantity: 2 diff --git a/data/mobs/examples/iron_sentinel.yaml b/data/mobs/examples/iron_sentinel.yaml new file mode 100644 index 0000000..bf8b9b5 --- /dev/null +++ b/data/mobs/examples/iron_sentinel.yaml @@ -0,0 +1,31 @@ +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 + weight: 30 + quantity: 5 + - item_id: credits + weight: 60 + quantity: 5000 diff --git a/data/mobs/examples/lesser_drone.yaml b/data/mobs/examples/lesser_drone.yaml new file mode 100644 index 0000000..c9e50a5 --- /dev/null +++ b/data/mobs/examples/lesser_drone.yaml @@ -0,0 +1,32 @@ +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 + weight: 60 + - item_id: credits + weight: 40 + quantity: 300 diff --git a/data/mobs/examples/man.yaml b/data/mobs/examples/man.yaml new file mode 100644 index 0000000..8478f41 --- /dev/null +++ b/data/mobs/examples/man.yaml @@ -0,0 +1,48 @@ +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" + - "leans against a wall, looking bored" + - "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 +drops: + remains: "bones" + loot: + - item_id: "credits" + weight: 98 + quantity: 10 + - item_id: "credits" + weight: 2 + quantity: 150 + - item_id: "grimy_guam" + weight: 8 + - item_id: "grimy_marrentill" + weight: 4 + - item_id: "grimy_tarromin" + weight: 2 diff --git a/data/mobs/examples/molten_elemental.yaml b/data/mobs/examples/molten_elemental.yaml new file mode 100644 index 0000000..9c46ccb --- /dev/null +++ b/data/mobs/examples/molten_elemental.yaml @@ -0,0 +1,42 @@ +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: + - item_id: credits + weight: 50 + quantity: 2000 + - item_id: biojunk + weight: 20 + quantity: 3 + - item_id: bloodjunk + weight: 15 + quantity: 2 + - table: herb_table_high + weight: 15 diff --git a/data/mobs/examples/moss_giant.yaml b/data/mobs/examples/moss_giant.yaml new file mode 100644 index 0000000..f19f0a3 --- /dev/null +++ b/data/mobs/examples/moss_giant.yaml @@ -0,0 +1,32 @@ +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: + - item_id: credits + weight: 50 + quantity: 120 + - item_id: credits + weight: 50 + quantity: 500 diff --git a/data/mobs/examples/mutant_rat.yaml b/data/mobs/examples/mutant_rat.yaml new file mode 100644 index 0000000..7836ef9 --- /dev/null +++ b/data/mobs/examples/mutant_rat.yaml @@ -0,0 +1,39 @@ +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: + - item_id: credits + weight: 60 + quantity: 20 + - item_id: scrap + weight: 30 + - item_id: credits + weight: 10 + quantity: 60 diff --git a/data/mobs/examples/newbie_trainer.yaml b/data/mobs/examples/newbie_trainer.yaml new file mode 100644 index 0000000..3897dba --- /dev/null +++ b/data/mobs/examples/newbie_trainer.yaml @@ -0,0 +1,25 @@ +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" + - "demonstrates a sword stance to no one in particular" + - "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 new file mode 100644 index 0000000..d871b76 --- /dev/null +++ b/data/mobs/examples/phantom.yaml @@ -0,0 +1,32 @@ +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: + - item_id: credits + weight: 60 + quantity: 500 + - item_id: spectral_visor + weight: 3 + - item_id: credits + weight: 37 + quantity: 1000 diff --git a/data/mobs/examples/plasma_wraith.yaml b/data/mobs/examples/plasma_wraith.yaml new file mode 100644 index 0000000..c4ced2b --- /dev/null +++ b/data/mobs/examples/plasma_wraith.yaml @@ -0,0 +1,43 @@ +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: + - item_id: credits + weight: 50 + quantity: 400 + - item_id: chaosjunk + weight: 20 + quantity: 2 + - item_id: cosmicjunk + weight: 15 + quantity: 2 + - table: gem_table + weight: 15 diff --git a/data/mobs/examples/psionic_entity.yaml b/data/mobs/examples/psionic_entity.yaml new file mode 100644 index 0000000..1c518bf --- /dev/null +++ b/data/mobs/examples/psionic_entity.yaml @@ -0,0 +1,46 @@ +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: + - item_id: credits + weight: 40 + quantity: 5000 + - item_id: lawjunk + weight: 20 + quantity: 5 + - item_id: cosmicjunk + weight: 15 + quantity: 5 + - table: gem_table + weight: 15 + - item_id: spectral_visor + weight: 5 + - table: herb_table_high + weight: 5 diff --git a/data/mobs/examples/rat.yaml b/data/mobs/examples/rat.yaml new file mode 100644 index 0000000..4265674 --- /dev/null +++ b/data/mobs/examples/rat.yaml @@ -0,0 +1,22 @@ +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 diff --git a/data/mobs/examples/sawmill_operator.yaml b/data/mobs/examples/sawmill_operator.yaml new file mode 100644 index 0000000..b70362f --- /dev/null +++ b/data/mobs/examples/sawmill_operator.yaml @@ -0,0 +1,50 @@ +color: "186" +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. +name: sawmill operator +protected: true +talk: + nodes: + goodbye: + message: Come back anytime you need more planks! + prices: + message: |- + Here's what I charge per log: + Regular logs: 5 credits + Oak logs: 10 credits + Teak logs: 20 credits + Mahogany logs: 40 credits + + Want me to process your logs? + options: + - condition: + any_of: + - has_item: logs + - has_item: oak_logs + - has_item: teak_logs + - has_item: mahogany_logs + goto: process + text: Yes, process all my logs. + - goto: goodbye + text: No thanks. + process: + action: + sawmill: true + message: "" + start: + message: Welcome to the lumberyard! I can turn your logs into planks — for a small fee, of course. What can I do for ya? + options: + - condition: + any_of: + - has_item: logs + - has_item: oak_logs + - has_item: teak_logs + - has_item: mahogany_logs + goto: prices + text: Turn all my logs into planks. + - goto: prices + text: What are your prices? + - 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 new file mode 100644 index 0000000..a8b34d8 --- /dev/null +++ b/data/mobs/examples/scrap_bot.yaml @@ -0,0 +1,39 @@ +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: + - item_id: credits + weight: 60 + quantity: 40 + - item_id: scrap + weight: 30 + quantity: 2 + - item_id: credits + weight: 10 + quantity: 100 diff --git a/data/mobs/examples/security_turret.yaml b/data/mobs/examples/security_turret.yaml new file mode 100644 index 0000000..9929106 --- /dev/null +++ b/data/mobs/examples/security_turret.yaml @@ -0,0 +1,41 @@ +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: + - item_id: credits + weight: 70 + quantity: 100 + - item_id: scrap + weight: 20 + quantity: 3 + - item_id: credits + weight: 10 + quantity: 250 diff --git a/data/mobs/examples/skeleton.yaml b/data/mobs/examples/skeleton.yaml new file mode 100644 index 0000000..ba82afc --- /dev/null +++ b/data/mobs/examples/skeleton.yaml @@ -0,0 +1,31 @@ +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: + - item_id: credits + weight: 70 + quantity: 30 + - item_id: credits + weight: 30 + quantity: 100 diff --git a/data/mobs/examples/slug.yaml b/data/mobs/examples/slug.yaml new file mode 100644 index 0000000..64082ec --- /dev/null +++ b/data/mobs/examples/slug.yaml @@ -0,0 +1,27 @@ +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 diff --git a/data/mobs/examples/solar_panel_frame.yaml b/data/mobs/examples/solar_panel_frame.yaml new file mode 100644 index 0000000..90269f2 --- /dev/null +++ b/data/mobs/examples/solar_panel_frame.yaml @@ -0,0 +1,33 @@ +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 +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 + weight: 70 + quantity: 40 + - item_id: credits + weight: 25 + quantity: 90 + - item_id: coal + weight: 5 + quantity: 1 diff --git a/data/mobs/examples/tanner.yaml b/data/mobs/examples/tanner.yaml new file mode 100644 index 0000000..2e5d89a --- /dev/null +++ b/data/mobs/examples/tanner.yaml @@ -0,0 +1,65 @@ +aggressive: false +attack: 1 +attack_type: crush +crush_defense: 0 +defense: 1 +description: A weathered craftsman with stained hands and a leather apron. +hp: 50 +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: + message: '"Bring me some cowhides and I''ll tan them for you. Leather is 10 credits, hard leather is 50."' + options: + - condition: + all_of: + - has_item: cowhide + - min_credits: 10 + goto: tan_leather + text: '"Tan a cowhide into leather (10 credits)."' + - condition: + all_of: + - has_item: cowhide + - min_credits: 50 + goto: tan_hard_leather + text: '"Tan a cowhide into hard leather (50 credits)."' + - text: '"Never mind."' + tan_hard_leather: + action: + cost: 50 + give_item: hard_leather + take_item: cowhide + message: The tanner takes your cowhide and subjects it to an intense curing process. "Here's your hard leather." + options: + - condition: + has_item: cowhide + goto: start + text: '"Tan another."' + - text: '"Thanks."' + tan_leather: + action: + cost: 10 + give_item: leather + take_item: cowhide + message: The tanner takes your cowhide and works it skillfully. "Here's your leather." + options: + - condition: + has_item: cowhide + 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 new file mode 100644 index 0000000..32ddcc2 --- /dev/null +++ b/data/mobs/examples/titan_sentinel.yaml @@ -0,0 +1,41 @@ +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 + weight: 30 + quantity: 10 + - item_id: credits + weight: 50 + quantity: 8000 + - table: gem_table + weight: 15 + - item_id: deathjunk + weight: 5 + quantity: 5 diff --git a/data/mobs/examples/veteran_merc.yaml b/data/mobs/examples/veteran_merc.yaml new file mode 100644 index 0000000..88238b6 --- /dev/null +++ b/data/mobs/examples/veteran_merc.yaml @@ -0,0 +1,42 @@ +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: + - item_id: credits + weight: 55 + quantity: 1200 + - item_id: chaosjunk + weight: 15 + quantity: 2 + - item_id: deathjunk + weight: 15 + quantity: 2 + - table: herb_table_mid + weight: 15 diff --git a/data/mobs/examples/void_reaper.yaml b/data/mobs/examples/void_reaper.yaml new file mode 100644 index 0000000..e54d776 --- /dev/null +++ b/data/mobs/examples/void_reaper.yaml @@ -0,0 +1,52 @@ +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: + - item_id: credits + weight: 30 + quantity: 20000 + - item_id: law_identifier + weight: 5 + - item_id: death_identifier + weight: 5 + - item_id: blood_identifier + weight: 5 + - item_id: bloodjunk + weight: 20 + quantity: 10 + - table: gem_table + weight: 15 + - item_id: uncut_diamond + weight: 10 + quantity: 5 + - table: herb_table_high + weight: 10 diff --git a/data/mobs/examples/war_drone.yaml b/data/mobs/examples/war_drone.yaml new file mode 100644 index 0000000..587ad09 --- /dev/null +++ b/data/mobs/examples/war_drone.yaml @@ -0,0 +1,42 @@ +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: + - item_id: credits + weight: 60 + quantity: 200 + - item_id: scrap + weight: 20 + quantity: 4 + - item_id: credits + weight: 10 + quantity: 500 + - table: gem_table + weight: 10 diff --git a/data/mobs/examples/weapons_smith.yaml b/data/mobs/examples/weapons_smith.yaml new file mode 100644 index 0000000..0ba8237 --- /dev/null +++ b/data/mobs/examples/weapons_smith.yaml @@ -0,0 +1,64 @@ +aggressive: false +attack: 1 +attack_type: crush +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 +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 +talk: + nodes: + shop: + action: + shop: + items: + - buy_price: 25 + item_id: bronze_sword + sell_price: 6 + - buy_price: 60 + item_id: iron_sword + sell_price: 15 + - buy_price: 20 + item_id: bronze_axe + sell_price: 5 + - buy_price: 50 + item_id: iron_axe + sell_price: 12 + - buy_price: 20 + item_id: bronze_pickaxe + sell_price: 5 + - buy_price: 50 + item_id: iron_pickaxe + sell_price: 12 + - buy_price: 16 + item_id: bronze_med_helm + sell_price: 4 + - buy_price: 40 + item_id: iron_med_helm + sell_price: 10 + message: The Smithy — buy or sell weapons and armor. + message: '"Here''s the current inventory. All quality guaranteed."' + options: + - goto: start + text: '"That''s all for now."' + start: + message: '"Welcome to the Smithy! Finest weapons and armor on the asteroid."' + options: + - goto: shop + text: '"Show me what you''ve got."' + - text: '"Nothing right now."' +unique: true +size: small diff --git a/data/mobs/examples/zombie.yaml b/data/mobs/examples/zombie.yaml new file mode 100644 index 0000000..f5989e0 --- /dev/null +++ b/data/mobs/examples/zombie.yaml @@ -0,0 +1,33 @@ +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: + - item_id: credits + weight: 60 + quantity: 50 + - item_id: credits + weight: 40 + quantity: 200 |
