JefeCletus

Dev Blog

Jefe Cletus Level 50 Gnome

Rust Monster ... murder on the ferry?

(a) why is it on the ferry in first place?
(b) she just watches as this “monster” sinks beneath the waves…hard-core
⚔️ DANGER AHEAD!

Daria spots a Rust Monster!

*Insect-like creatures that corrode musical instruments.*

Daria tries to push Rust Monster, but they hold their ground!

✨ Rust Monster uses Instrument Corrosion! (Touched instruments rust/corrode, lose 1d4 damage until repaired (DC 13 DEX save...)

Daria takes a defensive stance.

Rust Monster scrambles over the railing and tumbles into the water!

💦 SPLAT! An ungainly entry!

🤕 Rust Monster hits the water hard! (1 damage)

🏊 Rust Monster surfaces and treads water confidently.

Daria attacks Rust Monster!

❌ MISS! Rust Monster dodges!

Rust Monster struggles to stay afloat, gasping for air!

Daria tries to push Rust Monster, but they hold their ground!

Rust Monster splashes frantically, taking in water!

💀 Rust Monster is in serious danger of drowning!

Daria shoves at Rust Monster in the water!

💦 Rust Monster is pushed back, struggling to stay afloat!

Rust Monster splashes frantically, taking in water!

💀 Rust Monster is in serious danger of drowning!

Daria takes a defensive stance.

Rust Monster splashes frantically, taking in water!

💀 Rust Monster is in serious danger of drowning!

==================================================

⚔️ VICTORY! Rust Monster has been slain!

==================================================

Yakety Sax Conversations

I keep expecting to hear Yakety Sax from Benny Hill playing with the campfire discussions:


The group rests well by the fire, recovering from their travels.

💬 Benoit: “Have you ever thought about whether courage means standing your ground even when you’re afraid?”

💬 Daria: “I wish I knew more. What I can say is rescued shadow (phase turkey) from priest of healings.”

💬 Benoit: “On that note, i’ve been wondering whether courage means standing your ground even when you’re afraid”

💬 Daria: “Oh! That’s... that’s interesting. Really?”

💬 Benoit: “And we fought and defeated dwarf partisan”

💬 Daria: “That brings back memories... we fought and defeated dwarf partisan”

💬 Benoit: “That brings back memories... we fought and defeated dwarf partisan”

💬 Daria: “There’s something else - we fought and defeated dwarf partisan”

💬 Benoit: “Combat reminds me - we fought and defeated dwarf partisan”
💬 Daria: “That brings back memories... we fought and defeated dwarf partisan”

💬 Benoit: “I’ve had similar thoughts. Go on.”

💬 Daria: “That’s... um... tell me more?”

💬 Benoit: “That’s the extent of it, I’m afraid. Your thoughts?”

💬 Daria: “I’m not sure about that - what about you? Any thoughts?”

💬 Benoit: “Perhaps we’ll learn more with time.”

💬 Daria: “I... I hadn’t considered that. Go on?”

💬 Benoit: “That’s the extent of it, I’m afraid. Your thoughts?”

💬 Daria: “That’s a good question. Have you seen anything like that?”

💬 Benoit: “I’m not sure about that. What do you make of it?”

💬 Daria: “I... I don’t know either.”

💬 Benoit: *nods thoughtfully* “Tell me more about that.”

💬 Daria: “Oh! That’s... that’s interesting. Really?”

📚 Daria learned 5 things from the conversation.

📚 Benoit learned 3 things from the conversation.

Assess_threat, already! Jesus!

Waiting for Godot up in here.

⚔️ A brawl breaks out!

💬 Knut Stormborn: “About assess_threat - listen closely.”

💬 Hilda the Traveler: “Be on your way. assess_threat is not my problem.”

Hilda the Traveler bares their teeth in a threatening snarl

Frieda the Minstrel backs down, intimidated.

💬 Frieda the Minstrel: “Knut Stormborn, here’s what you need to know about assess_threat.”

💬 Knut Stormborn: “Watch out, Frieda the Minstrel—assess_threat!”

Alexei is dead. All hail Alexei.

First Villain that died due to magic gone baaaaad…

⚡💥⚡ CHAOS MAGIC CATASTROPHE!

Portal Mishap: A portal opens to... somewhere else. Strange creatures pour through!

The dark ritual has FAILED SPECTACULARLY!

🌀 5 interdimensional creatures emerge from the portal!

The creatures materialize at 0,0, where Alexei is performing the ritual!
👾 Nothic #1
👾 Gibbering Mouther #2
👾 Umber Hulk #3
👾 Aboleth #4
👾 Aboleth #5

⚔️ CHAOS BATTLE BEGINS! ⚔️

Alexei and their forces fight for survival!

🗡️ BATTLE AT 0,0

============================================================

Defenders: Alexei + 3 minions

Attackers: 5 chaos creatures

--- Turn 1 ---

Alexei deals 9 damage to Aboleth #4

Doug the Pedantic deals 9 damage to Umber Hulk #3

Phil the Confused deals 10 damage to Nothic #1

Grimwald the Forgetful deals 11 damage to Umber Hulk #3

Nothic #1 deals 12 damage to Grimwald the Forgetful

Gibbering Mouther #2 deals 12 damage to Alexei

Umber Hulk #3 deals 8 damage to Phil the Confused

Aboleth #4 deals 7 damage to Grimwald the Forgetful

Aboleth #5 deals 12 damage to Grimwald the Forgetful

💀 Grimwald the Forgetful is slain!

--- Turn 2 ---

Alexei deals 9 damage to Aboleth #5

Doug the Pedantic deals 7 damage to Aboleth #5

Phil the Confused deals 9 damage to Aboleth #5

Nothic #1 deals 2 damage to Alexei

Gibbering Mouther #2 deals 11 damage to Alexei

Umber Hulk #3 deals 12 damage to Phil the Confused

💀 Phil the Confused is slain!

Aboleth #4 deals 7 damage to Doug the Pedantic

Aboleth #5 deals 12 damage to Doug the Pedantic

--- Turn 3 ---

Alexei deals 8 damage to Nothic #1

Doug the Pedantic deals 4 damage to Umber Hulk #3

Nothic #1 deals 9 damage to Alexei

Gibbering Mouther #2 deals 6 damage to Doug the Pedantic

💀 Doug the Pedantic is slain!

Umber Hulk #3 deals 12 damage to Alexei
Aboleth #4 deals 11 damage to Alexei

Aboleth #5 deals 12 damage to Alexei

💀 Alexei is slain!

============================================================

💀 Alexei HAS FALLEN!

The villain is dead. Their reign is over.

5 creatures survived and fled

🏚️ PERMANENT WORLD CHANGE

============================================================

💀 VILLAIN DEATH: Alexei the Devoted

Cause: Died battling chaos creatures from a failed ritual at 0,0

✓ Removed from living_villains

Converting 3 minions to orphaned NPCs...

• Doug the Pedantic now wanders as a traumatized NPC

• Phil the Confused now wanders as a traumatized NPC

• Grimwald the Forgetful now wanders as a traumatized NPC

📢 Rumor created: Alexei the Devoted is dead! Died battling chaos cr...

📢 Rumor created: Alexei’s Fortress lies in ruins. The villain’s tre...

📢 Rumor created: The followers of Alexei wander lost and leaderless...

Location: 0,0

Alexei’s Fortress is now marked as a ruin on the map

Bodies: 4 corpses litter the halls

Loot: Unclaimed treasures remain for brave explorers

Danger: Wild magic and scavengers make this place deadly

Wow - the sim went daaaaaaark

💬 Erik the Boatman: “Strange place, isn’t it?”

💬 Disziplin Kommandant: “Yeah”

Disziplin Kommandant shoves Erik the Boatman hard!

🌊 Erik the Boatman stumbles backward and falls overboard!

💦 SPLASH! Erik the Boatman hits the water!

💦 Erik the Boatman surfaces, sputtering and treading water!

Erik the Boatman struggles to stay afloat, gasping for air!

*Disziplin Kommandant growls menacingly*

Erik the Boatman charges with fury!

Erik the Boatman splashes frantically, taking in water!

💀 Erik the Boatman is in serious danger of drowning!

Disziplin Kommandant attacks Erik the Boatman!

Of Lich Milk and Men

working on a side project - “Metal Rogue”, a roguelike in Metal Erp setting in javascript, and got this console error today:

not sure i want to know what lich milk is…

Racist sharks. What will they think of next?

Sigrid Battleaxe comes upon beneath the surface, rising to attack in a small rocky island in the water where 3 Rhythm Sharks (Massive predatory shark with distinctive stripes that pulse in rhythmic patte...) are sleeping in shifts (some awake, some asleep).

🌙 DIM LIGHT: Shadows obscure visibility

Attack -2, Perception -4

⚡ TACTICAL ADVANTAGE: Enemies are vulnerable!

💭 Sigrid Battleaxe charges into battle...

💬 Rhythm Shark: “I know your type - all thieves and liars!”

Initiative: Sigrid Battleaxe (11) vs Rhythm Shark (1)

📍 Starting Distance: Near

Sigrid Battleaxe and allies face 3x Rhythm Shark at Near range

"Raven Swarm nods but doesn’t respond"

While I absolutely love the interactions now, I’m afraid i need to change monster interactions to be sensitive to the last action of the character. I also need to modulate the actions that a monster can do, like nodding - how does a swarm of birds nod? It has provided some weird and sometimes funny moments like:

Axle Brassbolt spots a Raven Swarm!

*An ominous flock of ravens that appears at moments of death. They serve as psychopomps, guides between life and death. Intelligent and eerie. They saved you for a reason - death isn’t ready for you yet. They follow you everywhere now.*

Axle Brassbolt attacks Raven Swarm!

💥 HIT! 7 damage!

✨ Raven Swarm uses Speak with Dead! (Ravens carry messages from the dead)

💬 Axle Brassbolt: “Strange place, isn’t it?”

Raven Swarm nods but doesn’t respond.

✨ Raven Swarm uses Ominous Presence! (Enemies intimidated by death omen)

Axle Brassbolt attacks Raven Swarm!

💥 HIT! 3 damage!

☠️ Raven Swarm is defeated!

Additionally, I have noticed that characters and NPCs really don’t like to be regarded neutrally - they get all angry. This happens over and over:


🚢 Aboard the ferry with Joran Riverwise

*Joran Riverwise regards you neutrally.*

Knut Stormborn bares their teeth in a threatening snarl
Joran Riverwise snarls and throws the first blow!

Joran Riverwise attacks Knut Stormborn!

💥 HIT! 4 damage!

LOL WHYYyyyYYYY??!

Sonic Bat Civilization, Interactive Camping, and NPCs can be monsters

There is no end to the rabbit hole with improvements, and I have been wearing my tinfoil hat and goin diving.

  • Rebellion in Sonic Bat Lair! For some unknown reason, the system started recognizing monster lairs that it created as settlements, and events were happening like increased taxes and civil unrest (Buffalo Springfield starts playing as hippy Sonic Bats protest). Don’t get me wrong, i love it, but i needed to make it more intentional. So alas, monster lairs are treated as monster lairs (only sonic bats live at the sonic bat lair), but they can’t be ‘cleaned’ out and turned into a settlement.

  • Interactive Camping - before camping was mostly set - there might be an event like an animal showing up and then skittering away, but those moments make for great emergent behavior. Made character able to interact with the animal, or tinker / craft, do some other stuff.

  • Monster Race NPCs - I wanted to be able to have Tony Harrison, the pink headed shaman councilman from Mighty Boosh to be a NPC. To truly accomplish that, I needed to extend the npcs to be able to accomodate a monster race. (Lol, I gave him a race called Tharrisons)

WE NEED TO TALK ABOUT GRETA
Solange Leroy needs healing (33/74 HP)

You enter a healer’s shop in Junkyard Settlement.

The shopkeeper (Greta, Dwarf healer), surrounded by faint whispered voices

*faint whispers* “I loved you!” *looks embarrassed*

Solange Leroy → Greta: Can you help me with requesting 1 healing potion(s)?

Solange Leroy: “This is terrible, Greta”

Greta: “I enjoy our conversations, Solange Leroy”

Solange Leroy: “Greta, we should talk about this matter”

💰 Solange Leroy hands over 50 gold to Greta

🧪 Greta produces a healing potion from behind the counter

Waiting for Banshee Screamo Queen...

The mix of casual conversation and pitched battle here is ah-maze-ing!

💭 Axle Brassbolt:

‼️ 🗣️ I’ll never forgive Banshee Screamo Queen for knocked out Flash Noir in combat

💬 Flash Noir: “This is going to have consequences”

Axle Brassbolt bares their teeth in a threatening snarl

Sympathetic Addict snarls and throws the first blow!

Sympathetic Addict grapples Axle Brassbolt!

Axle Brassbolt is held! (-4 to all actions)

Axle Brassbolt tries to grapple Sympathetic Addict, but they slip away!

💬 Sympathetic Addict: “Quiet today”

Axle Brassbolt nods but doesn’t respond.

Axle Brassbolt takes a defensive stance.

Sympathetic Addict grapples Axle Brassbolt!

Axle Brassbolt is held! (-4 to all actions)

Axle Brassbolt attacks Sympathetic Addict!

💥 HIT! 7 damage!

Sympathetic Addict tries to flee, but can’t find an opening!

💬 Axle Brassbolt: “This is quite something”

Sympathetic Addict nods but doesn’t respond.

Sympathetic Addict attacks Axle Brassbolt!

💥 HIT! 5 damage!

Shut Your Mouth Just talking bout Grix

*Grix keeps one hand on their belongings, watching you carefully.*

*Grix’s massive afro adds another two feet to their height. Small objects seem to occasionally get lost in it.*

💬 Gunnar Stormborn: “I’m looking for information about Escape from Gunnar. Can you help?”

💬 Grix: “I might know something... but information has value. 15 gold?”

⚠️ You only have 12 gold (need 15)

💬 Gunnar Stormborn: “I... don’t have that much gold.”

💬 Grix: “Come back when you have coin, then.”

Oof - tough times in Satyr Rockabilly Lair

I wonder if there’s a Satyr Margaret Thatcher in charge with these events!

• Satyr Rockabilly Rebel lair: Taxes raised from 35% to 40% to pay debts

• Satyr Rockabilly Rebel lair: Low morale causes unrest in Satyr Rockabilly Rebel lair

Eurekie?

Ofttimes, in expanding a system, we start seeing patterns in the domain. I had one of those revelations. Before, the system was dividing encounters by type: combat, social, exploration, etc. I realized that basically, encounters in general boil down to this pattern:

  • show setup / environment / participants

  • character or npc takes an action

  • show the result of that action or show more information if the action calls for it

  • continue showing action / reaction / more info

  • continue until a closing point reached - a conversation terminates or an enemy dies, surrenders, runs off or character does the same, etc.

So i’m refactoring for an uber-encounter setup that honors the participant action / re-action, and allows any type of action (not giving a menu of options based on type). This should allow for emergent, surprising stuff. 75% code reduction! 75. Shows how one should direct Claude towards architectural problem-solving and not just “patches”.

also:

🎰 You encounter a vintage slot machine in the merchant camp

It looks completely ordinary...

🔍 PERCEPTION CHECK: Sigrid Battleaxe examines it...

Rolled 14 (1d20+0) vs DC 16

✗ FAILED! It looks perfectly normal.

You approach to investigate...

🎰 SURPRISE! The a vintage slot machine suddenly ATTACKS!

It’s a Slot Machine Mimic!

⚠️ AMBUSHED: The mimic attacks first! -2 to your AC this round

💬 Slot Machine Mimic: “Stop staring! I’m average height for my... species!”

💬 Slot Machine Mimic: *freezes* “Did you see that?! Something moved!”

Emergent-C!

Still finagling emergent behavior. My goal is something resembling dwarf fortress in it’s emergency. There is something magical in their brew of behavior and response to stimulus, and sheer interaction of things in the game. I see small flashes of that magic in turns from time to time, but would love to increase the surprises.

I’ve made progress - npcs and characters learn, gain peccadillos from traumatic experiences, and react to physical attraction. I think one area that is steep is dialog - i bet i could write a 5k line modular for it and still have it need work. Something as small as making ‘move’ into ‘moving’ in a statement takes quite a bit of code.

I’ve also been taking cues from Real HouseWives show for relationship / attraction / grudge behavior and events. Still striving toward the goal of soap opera rpg!

also, this was printed:
Legolas the barkeep, enormous, slightly protruding eyes

Legolas the barkeep approaches, maintaining professional distance.

Legolas: “Ah, Hammer Richter! Good to see you.”

Hammer Richter: “Just a meal, please. I’m famished!”

Legolas: “Here’s a excellent meal, Hammer Richter. Enjoy.”

and the picture in my head:


Ooo tag me Amadeus

I worked on this feature a while back, where tags on objects in an encounter environment denote what it can be used for: for instance, stone could have “weapon” and “boost” to it. The character reads the tags and makes choices ad-hoc based on the items in their environment. It definitely works and you’ll see them do inventive stuff sometimes in combat, but I’d love to dink with it and make it more immersive. As well, for insane or drugged characters, perhaps we scramble tags for them so, for instance, a rat is tagged with “weapon” and he picks it up and starts wacking the monster with it

I just hate the f*ckin Eagles, man!

I swear upon my life that this is emergent behavior, not any coding or special bias I’ve built in, but a surprisingly large number of characters have spawned a hatred of eagles in the sim. Why especially eagles?

not sure what happened but I LOVE IT

--- Encounter 52: Water_Social ---

Difficulty: 4/10

Location: at an abandoned lighthouse ruins

🛢️ WATER ENCOUNTER

Sigrid Battleaxe’s arms are getting tired from swimming...

Movement in the water nearby catches their attention...

🛢️ Barrel Cluster

Several sealed barrels lashed together bob on the waves

Sigrid Battleaxe: “Perhaps we can reach an agreement?”

Sigrid Battleaxe → Barrel Cluster: I need help with boarding your vessel (urgently)

Barrel Cluster: “We’re in a hurry to reach port before the storm. Can’t stop, sorry!”

*The barrel cluster sails away, leaving Sigrid Battleaxe in the water*

Sigrid Battleaxe: *sighs, still swimming* “Worth a try...”

What kind of kink is this goblin clerk trying to offer?!

💬 NPC ENCOUNTER

Goblin Clerk → Flicker Brassbolt: What can you tell me about washing/grooming themselves in water?

Goblin Clerk → Flicker Brassbolt: Flicker Brassbolt, rumor has it that i’m state your business

Goblin Clerk → Flicker Brassbolt: Flicker Brassbolt, rumor has it that i’m here washing/grooming themselves in water

Goblin Clerk → Flicker Brassbolt: Know anything about washing/grooming themselves in water?

Flicker Brassbolt → Goblin Clerk: Goblin Clerk, i have 123 gold

Flicker Brassbolt → Goblin Clerk: Goblin Clerk, everyone’s talking about how i’ve been in the traveling through plains

Flicker Brassbolt → Goblin Clerk: Goblin Clerk, we should talk about this matter

Goblin Clerk → Flicker Brassbolt: Why must things be so difficult, Flicker Brassbolt?

Goblin Clerk → Flicker Brassbolt: Flicker Brassbolt, let’s discuss how we can work together

Flicker Brassbolt → Goblin Clerk: Goblin Clerk, I can’t stand this situation anymore

The conversation concludes peacefully

Rectum? Hardly probed 'em

I love emergent stuff - i’m constantly surprised by it. This little gem appeared today:

🎵 Anya Novikov (Non-Binary) (Porc Adventurer Level 3)

HP: 3/10 | AC: 10 | Instrument: None

Genres: Metal

🎭 Personality: Escape Artist

💭 EMOTIONAL STATE:

💔 1 active trauma

💔 captured: was captured by Dargon-Mister Skald (28 turns)

🎸 Former Band: Plastic Undead Weasels (defunct (for now)) - Platinum, Gizmo

🔗 Anya Novikov is held captive by Pirate Raider (day 5)...

Attempting escape...

✓ ESCAPE SUCCESS! (Rolled 19 vs DC 17)

👽 Aliens abduct the guards. Anya Novikov is confused but escapes in the confusion!

🏃 Escaped to 2,0 with 3 HP

Need Support? Join our Discord β€’ Call (959) 910-1512 β€’ Email support@ilfortuna.com βš™οΈ Dev Blog