In the map view, you can pick an item, ability, static object, or follower to use as a travel enhancement. If the AI deems it reasonable, they/it will be used to extend your travel radius (from the 3 categories of small extension, large extension, and infinite range). When you have such an entity equipped, the story also describes you traveling that entity.
Misc
Added option to upload your own image to replace the AI-generated image
Added ability to select models for Stable Horde
Fixed bug when opening map very soon after loading a game
Fixed bug when accepting NPC as follower in event check if they were already your follower
Added mitigation for overly long quest names and ability to edit quest name
Added optional delay for API-based text generation to deal with rate limits if you use a 3rd-party service that has rate limits, in ai-roguelite-config/config.txt
Fixed tiktok TTS again
Better OpenAI API support, Sapphire image gen options
Under "OpenAI/Oobabooga API" option, added the option to specify an API key and a model, if the server requires it. This means you can use it for OpenRouter, OpenAI, and other services which use the OpenAI API format and require an API key. For services or local programs not requiring these fields, e.g. Oobabooga or LMStudio, you should leave these fields blank.
Added two additional styles for Sapphire Image Gen: Anime, and Vibrant.
Fixed a null pointer error which sometimes occurred during the "location mentioned" event check.
Portal to another universe
Reinstated the "portal to another universe" feature, which was reworked to be compatible with Locations V2. You get a portal token for each completed main quest (up to a maximum of 3). You can spend a token to create a portal via the static objects view. You will be prompted to specify the new universe's parameters upon creating the portal.
Misc
Improved TTS reliability by first trying one service, then falling back to the next one if it failed. As well, the preferred service doesn't have the bug where accented characters are deleted on the server side.
Added button in Options to reset all preferences to factory defaults
Added more location context in full prompt string (e.g. so the AI knows you're in the bathroom of a theater rather than just any bathroom)
Added note in construction project help text for new players, that it's a separate feature from item crafting
Fixed issue where closing the Farm view caused the area name to be bugged
Sapphire temporary outage
A service outage is causing the Default Sapphire-tier model to take 10x longer than usual. There's no ETA on the fix, but I'm guessing it will be fixed within a day. As a temporary workaround, you can select "Creative" or "Fastest" as the model override.
Fixes to some frequently encountered issues
More logical TTS detection
Previously, all quotes were assumed to be spoken by the current NPC. Now, extra logic exists to detect whether it was spoken by the player, and also take the player's gender into account when determining the TTS voice. Note: All TTS extraction logic for dialogue currently only works if the story is in English. The TTS voice is not (yet) determined by AI, because of the extra token cost that it would incur every turn. However, one fun fact is that the quotation logic was coded almost entirely by ChatGPT 4o via a detailed prompt, and worked out of the box with minimal tweaking. Here is the link to the conversation in case anyone is interested: https://chatgpt.com/share/67344c9c-6364-8012-8b18-d24ac5e9e299
Improvement to trivial actions
Added an option in Options for trivial actions: "No roll check". Select this option if you didn't like rolling on trivial actions.
For now, the default at first launch of the game remains "minor failure" because there's still logic in the game to give +1 to the roll result unless it would make it a critical success (meaning the only way to get a minor failure in this mode is to roll a critical failure).
Player action instruction suffix
Added an option in Text Generation Options for adding some instruction to the LLM at the end of each player action. You may experiment with this to describe how you want it to generate the story (e.g. not take extra actions for you). Since it's later in the prompt, it should have greater weight than a preamble, but results aren't guaranteed to work as expected.
Player-confirmed enemy defeat and charm
This was slightly more work than other buttons but should be working now. If the enemy would've been defeated during a turn you made, and player-confirmed defeat or charm is turned on, you will be presented with a choice for whether the enemy should be defeated or take their turn.
Crafting hotfix
Fixed error when crafting with desired item name
Corpse mechanic, short side quests, combat changes
Side quest overhaul
Reimplemented appearance of side quests while tracking a quest. Side quests will also be categorized as short or epic. Short side quests are a new type of quest which only have 1 task. Short side quests can be failed outright.
Long form quest generations now have an option to specify the objective as being the end goal rather than the initial plot hook.
Corpse/revival mechanic
NPCs and enemies will now become a corpse when they die. The corpse disappears after 3 turns, and the character may be revived within that time frame. It is up to the story generator whether the recently deceased character will be described as revived or never having died in the first place. For NPCs, there will be a visible corpse you can interact with. For enemies, the corpse won’t be directly interactable, but the mechanic remains similar under the hood.
Combat minor overhaul
Collapsible combat view: You can now collapse the enemy view while in combat, which allows for more combat actions such as interacting with nearby things
Using item/ability on enemies outside of combat is now allowed. If you defeat an enemy in this way, the XP will be nerfed.
Added out-of-combat charm check
Turned off loot for charming an enemy
Reinstated story-based run away for non-insane difficulties, which is feasible now that combat can be player-confirmed
Added roll check logic for running away with item/ability
Added cheat code “run” in case you prefer escaping the enemy with no checks
AI-detected enemy strength: The AI now decides based on the story whether your attacker is normal, elite, or legendary. Only applies to new entities.
Added cheat codes ene2 and ene3 to spawn an elite or legendary enemy respectively.
Revised task completion mechanic
When you’re on the last step of a task, the event check switches to a different prompt to make it less likely to trigger a task completion false positive
Misc
Added player confirmation for mentioned location
Fixed item epicness detection
Fixed bugs with conversation dropdown
Revised item depletion logic to allow losing items that weren’t directly used that turn
Added level-up logic to set your HP and survival bars to their original ratios when leveling up
If you visited a locked place via the story, it now becomes unlocked
Some fixes
Tiktok hotfix (again)
The 2nd Tiktok TTS endpoint went down today. Migrated to yet another Tiktok TTS endpoint. No idea whether it will last.
Updated/Improved options for Tiktok TTS voices: In particular, female NPC now defaults to a much better voice called “Peaceful” which they didn’t have before, and narrator uses “Ghost Host” which sounds better than the previous narrator.
Improved TTS interruption logic: Now, the next turn will interrupt the previous turn’s TTS’s being read aloud only if it’s a player-initiated turn
Misc
Fixed issue when typing in Chinese where “Enter” for selecting a word would wrongly trigger a submission
Fixed bug where end quote would get cut off in story generations
Fixed bug where image gen options had everything labeled as Places
Fixed poor translation quality for “Every turn” for some languages in a dropdown menu
Fixed starting attributes bug where they were all the same words
Added player name to inventory/portrait view
Added cheat code “merc [name]”; just like “npc [name]” but guarantees it’s a merchant
Fixed rare issue where a non-English interface language might wrongly override the assumed English language for English-based saves during story generations
Play in your language of choice, Roll Check Transparency, and more
Multi-language support
AI Roguelite now officially supports 25 languages in addition to English. Choose your language from the Options menu or use the language selector in the Steam properties. If the two conflict, the game overrides the language setting in Options if and only if your Steam language setting changed since last seen.
All default game scenarios (prompt presets) have also been translated, and the language for a New Game defaults to your interface language.
Each game save is tied to a language (saves from before this update are assumed to be in English). Story and entities will be generated in that language. Rarely, some text may be translated to English under the hood for things like image generation.
Game interface text has all been translated by LLMs, assisted by some manual spot checking from myself using my very limited knowledge of French and Chinese. The translation quality may vary.
In addition to the 25 languages officially supported, you may also choose to play a story in a custom language. This tells the AI to generate the story/entities in that language, even if the game interface doesn’t officially support it.
Ephemeral turn mode
In options you can set combat turns to be deleted after encounter, summarized after encounter, or same weight as regular turns.
Delete after encounter: Use this if you don’t want combat to be remembered in the story at all
Summarized after encounter: A nice balance of having the AI know you were in combat but not having it overwhelm your context window too quickly if you grind lots of enemies
Same as regular turn: Same as old behavior. Use this if you feel combat is an important part of the story for your play style.
Roll Check Transparency
Mouse over a dice roll icon to see more information about how you got that roll result. In most cases, two d100’s are rolled (one for attribute, and one for skill check) and the results are averaged.
Mouse over an attribute number in the player/inventory view to see your current roll check breakpoints (assuming target level same as yours). The same can be done for skills by hovering over the skill level number in the skills window.
Moddable Placeholder Images
Details in ai-roguelite-config/default/ui/info.txt
More flexible auto-generate for new game
Added AI-generate buttons and logic in case you want to regenerate World Background, Player Backstory, or Player Physical Description alone (without generating all the fields at once)
Build Thing Plausibility
Changed how building a new thing works. It now uses a plausibility check with an optional Essence of Fabrication.
Misc
“[character] from [location] is now in the scene” is now a confirmable event
Fixed quest achievement bug
Top-level thing recipes should no longer appear as craftable item recipes (not retroactive)
More coherent summaries (in theory) due to revised prompts for AI summarization
Player name, pronouns, level scaling etc can now be stored/loaded in world presets
Redo image when running Wombo should work correctly now
Update about 3rd-party Steam key stores
A long time ago I entered a contract with a company called "Immanitas" whom I now believe may be a fraudulent company. They sold some AI Roguelite steam keys to various 3rd-party stores/websites and haven't yet paid me the agreed share of profits, even after almost a year of reminding them.
Today I banned the Steam keys I gave to Immanitas and which made their way to those 3rd-party Steam key stores. This ban is not retroactive, so if you already purchased from a 3rd-party store and activated the key before, then you're fine. The ban also doesn't affect you at all if you purchased from the actual Steam store.
The 3rd-party stores might take some time to realize the keys are no longer working before de-listing them as purchasing options. In the unlikely event you were one of the unlucky users who bought from those stores before they de-listed it but after I applied the ban, please feel free to email me at max@maxloh.com with the Steam key you got.