Sly 1:Difficulty: Difference between revisions

→‎Sly 1: Updated Sly 1 section
(Adjusted categories)
(→‎Sly 1: Updated Sly 1 section)
Line 2:
 
== Sly 1 ==
In Sly 1, the player is assigned a uSuck score between 0.0f0 and 01.1f0 for each individual level. These valuesscores are stored on the [[LS|level states]] and persist between loads. There is a global <code>DIFFICULTY</code> struct called <code>g_difficulty</code> that tracks some difficulty values and stores a pointer to the current <code>DifficultyLevel</code> struct.
 
=== Difficulty Levels ===
Sly 1 has three difficulty levels: easy, medium, and hard, each with a corresponding <code>Difficulty</code> struct in memory. On the easy and medium difficulty, uSuck increases by a set amount each time you die. On the hard difficulty, uSuck is locked at 0.{{check}}
Sly 1 has three difficulty levels: easy, medium, and hard, each with a corresponding <code>DifficultyLevel</code> struct in the executable. During a level transition, during execution of the function <code>LoadSwFromBrx</code>, the game calls <code>OnDifficultyWorldPreLoad</code>. This function sets the current difficulty level based on the following conditions:
 
* If the [[gameworld]] is Paris/the Hideout (<code>GAMEWORLD_Intro</code>) or The Cold Heart of Hate (<code>GAMEWORLD_Clockwerk</code>), or if the current [[worldlevel]] is a hub (<code>WORLDLEVEL_Hub</code>), then it sets the easy difficulty.
During a level transition, the game first calls <code>OnDifficultyWorldPreLoad</code>. This function sets the difficulty level based on certain conditions such as what world the level is in, if the level is a hub or intro level, or if the key has been collected on the level. uSuck is not a factor in which difficulty level is set.{{check}}
* If the key has ''not'' been collected on the level (the <code>FLS_KeyCollected</code> flag is not set), then it sets the medium difficulty.
* In all other cases it sets the hard difficulty.
 
Later on in level transition, the game calls <code>OnDifficultyWorldPostLoad</code>. This function compares the player’splayer's current uSuck on the level to the current difficulty level.
* If the player's current uSuck on the level is above the difficulty’sdifficulty level's <code>uSuckCharmLouSuckCharmLow</code>, it grants the player a silver charm. This value is always 0.4.
* If the player's current uSuck on the level is above the difficulty’sdifficulty level's <code>uSuckCharmHiuSuckCharmHigh</code>, it instead grants the player a gold charm. This value is always 0.8.
 
=== Changing Suck ===
During normal gameplay, the uSuck is used to make certain aspects of the game more forgiving. For instance, on easy difficulty with a high uSuck you will be more likely to get more coins from breaking objects and killing guards.{{check}}
On the easy and medium difficulty, your uSuck increases by a 0.1 each time you die. Triggering a checkpoint for the first time lowers your suck by 0.8, and collecting a key resets your suck to 0. These changes happen by function calls to <code>OnDifficultyPlayerDeath</code>, <code>OnDifficultyTriggerCheckpoint</code>, and <code>OnDifficultyCollectKey</code> respectively.
 
On the hard difficulty, uSuck is always locked at 0, even if something would normally increase it. This is because each difficulty level stores a [[limit]] that the suck value is always clamped between; for easy and medium, this limit is from 0.0 to 1.0, but for the hard difficulty this limit is from 0.0 to 0.0.
 
=== Coin Drops ===
Difficulty also controls how many coins you get when you break something or kill an NPC, but this is not controlled by the difficulty level{{Check}}. Each time the player breaks something, the function <code>OnDifficultyBreak</code> is called to calculate the number of coins to drop.
 
== Sly 2 ==
<nowiki>In Sly 2, uSuck seems to be set on a per-mission basis{{. It ranges from 0.0f to 1.0f and increases each time you die or otherwise fail a job.</nowiki>
 
The uSuck value is used by the level scripts to make certain aspects of the game easier. For instance, in [[Moonlight Rendezvous]], Neyla will normally only wait 5 seconds{{check}} for you to catch up before you fail the job. As your suck increases, the time she waits also increases up to a maximum of 20 seconds.{{check}}