HomeGamesUpdatesPricingMethodology
Steam News3 November 20258mo ago

UPDATE 1.4.0

NOTE: This update is very big, and changes some core mechanics! IT IS HEAVILY RECOMMENDED THAT YOU MAKE A NEW SETTINGS PROFILE!

Full notes

Full Ultimate JOI update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

5 fixes53 additions9 changes10 removals
  • Gameplay
  • UI and audio
  • Balance
  • Fixes
addedIT IS HEAVILY RECOMMENDED THAT YOU MAKE A NEW SETTINGS PROFILE!
addedThe game is now in a state I am happy with, and while there are many things I would consider adding, I can't financially support myself enough to work on this game a lot at the moment. So there will be more updates, but they will be very in-frequent.
addedOverhauled the trigger system with the new TriggerTask system!
addedAdded a Metronome with configurable BPM to the bottom of the screen. The metronome will hide while the BPM is set to 0.
changedOverhauled the settings quiz to a single page scrolling view including dropdown selections and sliders.
addedAdded the ability to push 'E' while in-game to 'Emergency Edge' which will temporarily pause the game and make all current trigger tasks disappear, reappearing later in the round.

NOTE: This update is very big, and changes some core mechanics!

IT IS HEAVILY RECOMMENDED THAT YOU MAKE A NEW SETTINGS PROFILE!

Regarding future updates:

The game is now in a state I am happy with, and while there are many things I would consider adding, I can't financially support myself enough to work on this game a lot at the moment. So there will be more updates, but they will be very in-frequent.

THAT BEING SAID, I have set up a patreon at https://www.patreon.com/c/UltimateJOIDev, and if we gain enough members I will be able to dedicate a lot more time to working on this game.

Members will get early access to any future updates, and will get to vote on what features are included in those updates (Once there are enough members to vote that is) Check it out :)

Changes:

  • Overhauled the trigger system with the new TriggerTask system!

  • Added a Metronome with configurable BPM to the bottom of the screen. The metronome will hide while the BPM is set to 0.

  • Replaced "Round Difficulties" with "Round Types". (Note: Old settings will automatically convert difficulties to round types, which may cause unintended behavior. Resetting your settings is recommended.)

  • Overhauled the settings quiz to a single page scrolling view including dropdown selections and sliders.

  • Replaced the Insert Dropdown with a popup menu that contains categories and descriptions for variables and methods.

  • Added the ability to push 'E' while in-game to 'Emergency Edge' which will temporarily pause the game and make all current trigger tasks disappear, reappearing later in the round.

  • Added a new settings menu to edit and create trigger tasks.

  • Added a copy / paste button for trigger tasks.

  • Added the ability for tasks to follow up with other tasks instantly or after a certain time. Allowing for multi-step and status change tasks.

  • Added the ability to assign different text options for a trigger task, with customizable weights to determine their probability of appearing.

  • Added the ability for trigger tasks to adjust the Metronome's BPM while the task is on screen, and with an optional delay after it is completed.

  • Added the ability to adjust the Metronome's BPM at the start of every round, and whenever a trigger occurs.

  • Added the ability to hide or show the Metronome during the rolling phase of each round

  • Added the variable [METRONOME_BPM] to get the current BPM of the metronome.

  • Added the variable "ConfirmTaskCompletion" which allows trigger tasks to either be time based, or confirmation based (With an optional time limit)

  • Added the variable "TaskTime" which allows trigger tasks to adjust the content swap cooldown when they appear

  • Added the variable "CooldownAfterTask" which allows trigger tasks to adjust the content swap cooldown after they are completed

  • Added the variable "MinCompletions" which allows for trigger tasks to prevent a game over until they have appeared a certain amount of times

  • Added the variable "MissedTriggerAdd", which adds a specified number of guaranteed tasks to the round if the initial task is not completed in time.

  • Added the variable "IsLuckyTask" which allows trigger tasks to be considered "lucky" which will interact with the lucky rating in reverse, and become unaffected by the mercy / punish mechanics

  • Added the variable "CanTriggerRoundModifier" which allows trigger tasks to prevent the round modifier from triggering at the same time as the task

  • Added the variable "NextTaskOdds" which allows for trigger tasks to have a chance of being followed up by another task

  • Added the variable "NextTaskDelay" which allows for the trigger tasks to delay the next task by a certain amount of time

  • Added the variable [ROUND_DIFFICULTY] to replace the old round difficulty system

  • Added the variable "EmergencyEdgeCooldown" which allows you to modify how long the game pauses after an emergency edge

  • Added the method 'TRIGGERS_APPEARED_SINCE({taskID}, {minutes})' which persists between games on the same settings profile

  • Added the method 'TRIGGERS_COMPLETED_SINCE({taskID}, {minutes})' which persists between games on the same settings profile

  • Added the method 'TRIGGERS_MISSED_SINCE({taskID}, {minutes})' which persists between games on the same settings profile

  • Added the method 'GAMES_STARTED_SINCE({hours})' which persists between games on the same settings profile

  • Added the method 'GAMES_WON_SINCE({hours})' which persists between games on the same settings profile

  • Added the method 'GAMES_FAILED_SINCE({hours})' which persists between games on the same settings profile

  • Added the method 'SECONDS_SINCE_TRIGGER_APPEARED({taskID})' which persists between games on the same settings profile

  • Added the method 'SECONDS_SINCE_TRIGGER_COMPLETED({taskID})' which persists between games on the same settings profile

  • Added the method 'SECONDS_SINCE_TRIGGER_MISSED({taskID})' which persists between games on the same settings profile

  • Added the method 'MINUTES_SINCE_GAME_WON()' which persists between games on the same settings profile

  • Added the method 'MINUTES_SINCE_GAME_FAILED()' which persists between games on the same settings profile

  • Added the Variable [EXPECTED_TRIGGERS] which represents the amount of triggers you should have completed to keep up with the Min Game Time

  • Added the Variable [ROUND_MODIFIERS_THIS_GAME] which represents the amount of Round Modifiers that have occured in the game

  • Added, removed, or changed pretty much every preset value in the settings menu

  • The variable "NoBonusConditionWeight" has been deleted, as setting "RoundModifierOdds" to 0 now has the same outcome.

  • The variable "MaxBonusTriggerOdds" was replaced with "RoundModifierOdds"

  • The variable "DisplayTriggerAndBonusOdds" was replaced with "DisplayTriggerOdds"

  • The variable "DisplayBonusCondition" was replaced with "DisplayRoundModifierOdds"

  • The variable "InstantEndConditionWeight" was replaced with "InstantEndRoundModifierWeight"

  • The variable "HalveContentBonusConditionWeight" was replaced with "HalveContentRoundModifierWeight"

  • The variable "ResetBonusConditionWeight" was replaced with "ResetRoundModifierWeight"

  • The variable "DoubleContentBonusConditionWeight" was replaced with "DoubleContentRoundModifierWeight"

  • The variable "RollTimeForBonusCondition" was replaced with "RollTimeForRoundModifier"

  • The variable "BONUS_ODDS" was replaced with "ROUND_MODIFIER_ODDS"

  • The variable "RAND_PER_BONUS" was replaced with "RAND_PER_ROUND_MODIFIER"

  • The variable "RollTimeForRoundDifficulty" was replaced with "RollTimeForRoundType"

  • Removed "Bonus Conditions" and replaced them with "Round Modifiers" which work in a similar way, but instead of being tied to a unique condition, they have a chance to occur during a trigger once per round.

  • PunishLevel is now unique to each settings profile

  • Altered the way PunishLevel is stored (this means your current punish level will be reset to 0)

  • Removed all help videos and replaced them with slideshows, which are easier to update and maintain.

  • GameDifficulty now displays as text instead of a number in the initial roll

  • GameDifficulty now scales from 0 to 9 instead of 0 to 5

  • Added default Edge riding tasks to the game

  • Added default Faster! and Slower! tasks to the game

  • Added default Stroke style tasks to the game (Hands used, area, toys)

  • Added default Position tasks to the game (stand, sit, etc)

  • Added default Anal tasks to the game (25% chance for the day to contain anal tasks by default)

  • Added default Vibrator tasks to the game (25% chance for the game to contain vibrator tasks by default)

  • Added default Stroke round type

  • Added default Anal round type

  • Added default Vibrator round type

  • Added default Edge Ladder round type

  • The quiz now saves previously set values so they can be easily adjusted.

  • Added Logs folder for storing game logs

  • Updated the descriptions of all Variables and methods

  • Altered the appearance of trigger tasks in the game

  • Added a button "Test Mode" which prevents the game from saving log data, hold CTRL down in the menu to use it

  • The round difficulty and round types are now rolled at the same time

  • Changed a lot of default values

  • Altered some text and text sizes in the rolling phase

  • OnlyDisplayStatsWhenCursorMoving now displays stats until the next content change, the same as the Flag buttons.

  • TriggerOdds are now calculated just before a content change rather than just after

  • Altered the size of text in some places to prevent overflow

  • The info display box now appears in the pause screen

  • Made the info display box invisible while there's a task active in the top-right

  • Made the info display box adjust smoothly rather than instantly when text changes

  • Adjusted the cooldown bar to be purely black

  • Heavily optimized the game by only calculating variables when they are actually being used within a value expression

  • Added a popup for new players if they click Play before modifying their settings profile, suggesting the settings quiz

  • The game now opens with the last played settings profile automatically selected

  • Removed the "MinTriggerCount" value, as it is now applied per task

  • Removed some of the blacklisted variables for some value formulas

  • Adjusted which values count as Advanced

  • Changed the starting color of the menu to blue from yellow

  • Adjusted the order that values appear in the settings

  • Altered the screen layout system to provide better content layouts during the game

  • Added more info to the debug button output in the pause menu

  • Removed the 'How to play' video screen

  • Removed some debug logging

  • Removed "TestMode"

  • Removed Hash file system for PunishLevel

  • Removed some duplicate methods

  • Removed some useless variables

  • Fixed some spelling mistakes throughout the game

  • Fixed a bug where pushing space would sometimes flag content, or mark the wrong trigger task as completed

  • Fixed a bug where using '<=' in IIF methods did not work as intended

  • Fixed a bug where not adding a 0 before a decimal in settings values resulted in the number being treated as a whole number (.x -> x)

  • Fixed a bug where some values would not evaluate properly because of system language settings

Source

Steam News / 3 November 2025

Open original post

Changelog.gg summarizes and formats this update. How we read updates.