Version 0.1.7 changelog and Mysterious woman's portrait


Lots of work into getting the NPCs to gain some self-awareness! With this, all the new mechanics for version 0.2 should be ready. What's left is a new story event, tweaking the AI, some balancing, and some more QoL. Be careful from this version onwards or you might end up leashed!

Check out the new character portrait at the images below.

Engine - Map & Battles
- Battle scenes in the map are now associated with an event, and will consume 20 minutes.
- Generic map scenes will now be started as the result of an event, rather than at the start of the event. This opens the path to new mechanics.
- Added check that prevents characters from being assaulted if they're in certain types of events, such as a scene-related one.
- Added check that prevents the player from initiating conversation with a character in the same types of events.
- Added functionality for scenes to auto-resolve on their own without player intervention. Battle events that don't involve the player will now auto-solve scenes.
- Added button to spectate battle scenes taking place in the map that don't involve the player character.
- Battle scenes will now lead to a results screen, where the winner may decide to demand something from the loser. Check the battle demands sections for further info.
- Added button that allows the player to challenge other characters. Requisites to challenge other characters are similar to those to initiate assaults. Challenging a character will impose you a small infamy penalty. Characters who reject a challenge will get 1 merit point taken from them for the challenger. NPCs use the quantify strength function (see below) to choose whether to accept or reject challenges. Only challenges for high stakes allow the winner to enforce servitude on the loser.
- Added check to edit the player's controls when the NPC the player is following enters combat, and make them join the combat as either a participant or a spectator.
- Every character's control will now be restored after a scene ends.

Engine - Map, general
- Npc commands that require prompting the player will now only be usable is the player isn't already prompted. This is required to avoid inconsistencies with some commands, such as a character assaulting the player before another one asks them to follow them, which would cancel the assault.

Battle Demands
- This mechanic allows the winner of a battle to demand something from the loser. There's a list of possible demands, with different requirements, effects, infamy costs and minimum weights. The weight refers to the stakes in a given battle. Assaults always have high stakes. The current battle demands are:
* Humilliation: The winner takes some merit from the loser, scaling with battle stakes. Increases domination/submission and rivalry by small amounts. No infamy cost, no minimum weight, requires both characters to be Candidates.
* Force servitude: The winner forces the loser into a temporary servitude relationship. Large infamy cost, has a minimum weight of 3, requires both characters to be Candidates, requires servitude relationships to be enabled in the settings, neither actor or target may be in submissive relationships, the target may not be in any dominant relationship.
* Do nothing: The winner refuses to take anything from the loser. Winner loses one infamy point. Always usable.

Engine - Map & Groups
- Added check to force the player to follow a NPC when the special relationship shared between them forces the player to do so.
- Added conditional on requests for player to follow a NPC. If the player owes favor and refuses, the NPC's enmity towards the player will grow.

General
- Added daily infamy decay for each Candidate character.

Note: A portion of the work regarding the AI is provisional, specially anything that determines specific behavior for specific characters, and it will be revised once character drives are introduced.

AI
- Added command for NPCs to assault other characters.
- Added function to quantify the general strength of a character in the eyes of the AI. This function takes into account the main stats of a character, considers it a weakness to have low values of energy, willpower and social drive, and multiplies it all by the current lust.
- Created a provisional function to help the AI decide their demand after winning a battle. Having high infamy will disable forcing servitude first, and humilliation later. Choosing either of them also relies on a few dice throws weighting rivalry, enmity and sexual tension (making it more likely to make a demand), friendship and romance (making it less likely to make a demand), and who is the aggressor (making it more likely to make more aggressive demands while defending).
- Added commands that allow NPCs to ask other characters to form or join groups.
- Taught AI to spot infamous Candidates and compare their potential battle strength with their own.
- NPC Candidates will now check for characters whose special relationship forces them to follow in the same room, and will demand them to follow.
- Independent candidates will now evaluate danger from other candidates. On certain thresholds, they will attempt to find a follower, attempt to follow someone, or dismiss a follower.
* When looking for a follower, Candidates will value: favor owed to themselves, potential follower infamy, and opinion on the potential follower.
* When looking for a character to follow, Candidates will value: character's infamy and opinion on the character.
* When looking for a character to ask to stop following, Candidates will value whether the given character is following them in exchange for favor or not.
You should start seeing this behavior when any Candidate gains enough infamy and gets a follower in the map. The fastest way to do this is by assaulting someone, forcing servitude on them and having them follow you.
- NPC Candidates will be more likely to rest if they're low on lust points.
- NPC Candidates much less likely to initiate conversation if they're angry or bored (meant to prevent Ate and Claw from actually socializing before some story events).
- Added combat missions to Candidates' global AI. NPC Candidates will be more likely to attack during socialization period, they will be more likely to choose challenge instead of assault if their infamy is high. They have preferences towards attacking less protected characters, characters with high infamy and characters they hold a rivalry with.
* The chance of a NPC starting a fight has been reduced, and it gets reduced further if they have already attacked someone during that day. This will be revised after updating the combat AI, and will be checked again after the introduction of character drives.

Other
- Added avatar for mysterious woman.
- The mysterious woman's avatar will be shown at the side bar during the appropriate scenes.

QoL
- When a NPC starts following or stops following another NPC and the player is in the same room, this will be notified in the UI.

Bug Fixes
- Found a very rare ocurrence of the game crashing as the result of the randomWeightedList object. I have added a few controls that should prevent this error from happening again, but I'll be monitoring the function's behavior for a while.
- Fixed error that would allow a character following another to leave if they were indebted to the followed character.
- Added check to prevent the player from being able to initiate conversation with a character following anyone other than the player.
- Edited function pushAllTimeToAdvance to findLastEventInvolvingPlayer instead of the first one, in order to fix an inconsistency related to how the engine reacts to combats initiated by NPCs against the player.
- Added function to the general map cycle that looks for characters who think they're doing something while they're actually lazying around and wakes them up.

Screenshots




Get Unholy Arts

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.