JefeCletus

Dev Blog

Jefe Cletus Level 50 Gnome

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

β€œHuman typically mean failure”

  • tweak, tweak, tweak, and I don’t mean peanut butter crank use.

  • More changes to dialog system - still not quite in the sweet spot, for instance, characters asking about information state the whole of the quest in the request, which is very confusing to read. It’s difficult because while a LLM can sort the context, code is not quite as capable (of course), and so it’s a challenge to have the appropriate level of information delivered to be able to communicate in a human way.

  • Entity elevation is 98% functional. This is a big, cool change imho as it opens up draftable characters to include any monsters from the world.

  • also:
    💬 CONVERSATION:

    Solveig → Olaf Sigurdson: Olaf Sigurdson, did you hear about an explanation for your betrayal? (urgently)

    Solveig → Olaf Sigurdson: Tell me about an explanation for your betrayal, Olaf Sigurdson. (urgently)

    Solveig → Olaf Sigurdson: Olaf Sigurdson, let’s discuss what you did to me. (urgently)

    💬 Solveig leans in, voice lowered:

    Solveig: “I need your help. Confront the person who stole your old song and is profiting from it”

    Solveig: “I can offer 100 gold for your help.”

    Solveig: “I won’t lie - it’s going to be difficult.”

    Solveig: “I’d need you for about three days.”

    Solveig: “And there’s a good chance we’ll have to fight our way through.”

    Solveig: “*eyes searching your face* Will you help me?”

    📋 Quest: Song Thief Justice

    Reward: 100g, +200 XP | Difficulty: Hard | Time: 3 days

    (Olaf Sigurdson considers... 20% inclined to help)

    ✗ Olaf Sigurdson declines the quest.

    Olaf Sigurdson: “I can’t help you with this. Not now.”

    Solveig’s face falls, disappointment evident.

    “I understand. I just hoped... nevermind. Take care of yourself.”

    💭 Olaf Sigurdson tentatively believes: “unknown typically mean failure”

    💭 Olaf Sigurdson tentatively believes: “Human typically mean failure”

Tom The Phase Turkey Junkie becomes hero!

In the wake of the hilarious Tom the phase turkey junkie turn, I’ve decided to make functionality to elevate an npc or monster to full draftable character. So get ready to draft Tom! Can’t wait to see a picture of Tom in armor with a baggie of drogos in one claw and a sword in the other.

I'm a Phase Turkey, and I'm an addict.

The sad, cautionary tale of Tom, Phase Turkey’s wasted life. He grew up on the mean streets, and it would have been a miracle if he straightened out and stayed off the fantasy drugs. A miracle that, like most miracles, didn’t happen.

«In the Ghetto, Elvis version plays»


Enemies: 1x Shady Dealer
Type: Humanoid (Tiefling)
An opportunistic drug dealer who saved you to own you. You’re in their pocket now - you sell for them or face consequenc...
Chance Starlight comes upon hidden valley amid wooden carts laden with vegetables and goods.
Inside, a Shady Dealer is harassing a smaller monster.

😰 Victim: A frightened Phase Turkey
Magical turkey that occasionally phases in and out of reality. Tricky to catch but delicious. Tastes...
⚡ TACTICAL ADVANTAGE: Enemies are distracted!
💭 RESCUE OPPORTUNITY:
The Phase Turkey is cowering, surrounded by 1 Shady Dealers

It’s injured and terrified...
⚔️ Chance Starlight charges in to defend the Phase Turkey!
💬 “Leave them alone!”

The Shady Dealers turn their attention to you...
🏃 The Phase Turkey takes the opportunity to flee!
Condition: addicted to substance and craving it

⚡ TACTICAL ADVANTAGE: Enemies are vulnerable!

Dio? As a villain? You betcha.

(from a sketch i did a long time ago)

Rumpie Jamestilskin
“id”: “rumpie_jamestilskin”,

“name”: “Rumpie Jamestilskin”,

“title”: “The Rainbow-Shrouded Darkling”,

“role”: “necromancer”,

“race”: “Gnome”,

“gender”: “male”,

“threat_level”: 10,

“description”: “Rumpie Jamestilskin is a dark fey-touched Gnome bard-sorcerer born from a broken oath beneath the Silver Mountain. A wandering oracle-poet with a voice that can split the veil, he commands shadowy rainbows, lost souls, and moonlit illusions. His hymns echo old prophecies, and those who hear him may follow him straight into the abyss of dreams.”,

“personality”: {

“traits”: [”Charismatic”, “Cryptic”, “Heroic-leaning but doomed”, “Intense”],

“speech_style”: “Mythic, poetic, speaking in riddles, metaphor, and arcane symbolism.”,

“quirks”: [

“Punctuates sentences with dramatic hand gestures”,

“Speaks to unseen spirits perched on his shoulder”,

“Sings instead of shouting in battle”

],

“dialog_tags”: [”[booming]”, “[mystic]”, “[prophetic]”]

}

I did a few more villains based on famous celebrities / rock stars → they will be used as more villains are needed for the simulation.

Gary the Gah-nome and his dangerous toys

Worked on the gnomish obsession with “there-I-fixed-it” with a rube goldberg with duct tape strategy.

✅ Phase 2: Utility Integration

- Gnomes use inventions for stealth, persuasion, and other non-combat situations

- Added check_gnome_utility_invention() helper function

- Integrated into stealth missions and social checks

✅ Phase 3: NPC Reactions & Dialog

- Companions react to invention successes: “By the gods, it actually WORKED!”

- Companions react to failures: “I KNEW that would explode!”

- Contextual reactions based on outcome

✅ Phase 4: Rewards

- Gnome enemies drop inventions (30% chance)

- Level-appropriate invention generation

- “🔧 The gnome enemy had a Chainsaw-on-a-Stick!”

✅ Phase 5: Tinkering System

- Tinker with inventions: Improve reliability through INT checks

- Repair inventions: Fix worn/damaged gear

- Prototype graduation: After 10 successful uses, prototype → reliable (+10% reliability)

✅ Phase 6: Companion Integration

- Pre-invention warnings: “Wait! That thing looks dangerous!” (for < 40% reliability)

- Contextual concern: “Be careful with that...” (for < 60% reliability)

- Failure reactions already covered in Phase 3

Emergent Escalation
Also - working on a way to have world-changing epic events that occur “naturally” from the simulation, not just narratively shoe-horned in there with the characters being just scripted witnesses. These events escalate, and the characters have a chance to modify before further escalation.

Villains, villains, VILLAINS!

Making more tweaks to villain system - I want to set a cycle of send minions out, they try their hardest, and report back to the villain - all using emergent dialog (created dialog from personality and intent). Also trying to make a more concrete part of the world, where they have a footprint and interact with other characters in it.

funny of the day (and i remind you the system generated this):
Knut Stormborn encounters Claude (Dwarf guard)...
*Claude regards you neutrally.*
🤲 Knut Stormborn offers to help
Claude conducts random searches.
🔍 Claude conducts a search for illegal goods...
💭 You’re carrying: Cursed Amulet
✗ Deception check: Rolled 7 vs DC 14
💬 Claude: “Contraband! You’re carrying a Cursed Amulet!”
💰 Claude: “This is serious. But... I could overlook it for 83 gold.”
⚠️ Can’t afford the bribe - contraband confiscated!
📦 Confiscated: Cursed Amulet
💬 Claude: “These items are being seized. You’re lucky I don’t throw you in jail.”

First of all, Knut is offering to help him search himself? Oh…kay…

Secondly, I imagine that Claude is in for a nasty surprise with the cursed amulet. I imagine him looking at it in the guard shack, shrugging and putting it on. Then hulking out or something…

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