Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
agi-game:leisuresuitlarry:reference-timer [2021/05/02 21:40] – [v72 & v71] frater | agi-game:leisuresuitlarry:reference-timer [2021/05/05 20:51] – frater | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Timing and Timers ====== | + | ====== |
- | Larry is using a lot of timing | + | Larry utilise beaucoup de "timing" et de "timer", ils sont tous gérer à partir de la logic_0 |
<code c> | <code c> | ||
Ligne 16: | Ligne 16: | ||
</ | </ | ||
- | Due to the " | + | A cause de l' |
+ | Pour éviter les Bugs, le programmeur a décider de déclencher ses actions quand le timer atteint | ||
===== In game Time ===== | ===== In game Time ===== | ||
- | The timing Handler increase seconds | + | Les Timing sont incrémentaux, et quand ils atteignent |
<code c> | <code c> | ||
#define varGameTimeSecond | #define varGameTimeSecond | ||
Ligne 26: | Ligne 28: | ||
#define varGameTimeHour | #define varGameTimeHour | ||
</ | </ | ||
- | The Time is also handled by variables v119 [H], v116 [M] and v115 [S] those variables are set to start the ingame clock at 10pm and has a special even if reach 4am (larry' | ||
- | To reach this bad ending the player should wait +6h in real time, some screens/logics doesn't affect change in-game time (title, BadEnding and Questionnaires) but the seconds counter is always incremented byte the timeloop. | + | L'//Heure// dans le jeu est gérer par 3 variables, et débutent à 10pm (10 00 00). |
+ | Il y a un test pour définir si l'heure est suppérieur à 4h du matin; dans ce cas, le jeu lance la cinématique de BAD ending | ||
- | According to the source code; it can be an issue if you're in that room (seconds could be over 60) but those 3 screens aren't really play screen. | + | Pour atteindre cet fin, le joueur doit laisser passer (en temps réel) plus de 6h de jeu; (il peut se déplacer dans la ville, mais les temps de chargement (non calculer) vont augmenter encore ce temps. |
+ | |||
+ | Il est intéressant de voir que ce //Temps// n'augmente pas pour certaines Room (title, BadEnding and Questionnaires). | ||
===== Timers ===== | ===== Timers ===== | ||
- | Leisure suit larry is using at least 4 differents | + | Leisure suit larry utilise |
==== varTimingDelay [v67] ==== | ==== varTimingDelay [v67] ==== | ||
Ligne 42: | Ligne 46: | ||
</ | </ | ||
- | This timer is used by any room logic to set a timer (example, if larry won't move, after few second the dog came in). | + | Ce Timer est un timer générique, qui est décrementé à chaque seconde et que la Room Logic peut mettre en place pour déclencher des évènements après un certains temps) e.g. Le chien qui apparait si Larry ne bouge pas en étant en rue... |
- | This timer only raise (Set) the // | + | Quand le temps est écoulé |
- | Any room logic can change the variable to what value they want to wait, and pool the // | + | Toutes les Room Logic peuvent changer ce timer, il est même conseiller de le spécifier dans la section //NewRoom// du script, et d' |
- | + | ||
- | The timing Handler decrease the value until it's reach 1. | + | |
==== varClearStatusSeconds [v68] ==== | ==== varClearStatusSeconds [v68] ==== | ||
- | This timer is used to clear part of the line #24 when reach 1 second left. | + | Quand ce Timer est écoulé, il efface une partie de la ligne #24 de l'écran. |
- | + | ||
- | It's used to clear bottom line. | + | |
<code c> | <code c> | ||
- | if (varClearStatusSeconds == 1) | + | if (varClearStatusSeconds == 1) // clear lower part of the screen half line (line 24) |
{ | { | ||
clear.text.rect(24, | clear.text.rect(24, | ||
} | } | ||
</ | </ | ||
+ | |||
==== varTimerSprayMinutes [v72] & varTimerSpraySeconds [v71] ==== | ==== varTimerSprayMinutes [v72] & varTimerSpraySeconds [v71] ==== | ||
- | The timing Handler decrease the // | + | Ce Timer est initialisé à 10 minutes |
- | If the //varTimerSprayMinutes// [v72] is > 0; the handler decrease // | + | Haa le //Breath Spray// tout un programme; quand ce timer est épuisé, il affiche un message pris dans la liste des messages de 157 à 160. |
- | It's somehow related to breath spray (10:00)... | + | Si la valeur de // |
- | when v71 == 1 and v72 == 0 (timer is over), then handler raise flag //boolMouthSmellBad// [f107] and reset //boolMouthOK// [f66]. | + | Quand //varTimerSpraySeconds// [v71] == 1 et //varTimerSprayMinutes// [v72] == 0, le gestionnaire : |
- | it display message 157 to 160, and preset the next message in the list, loop to 157 if message > 160. | + | * Set le flag // |
+ | * Reset le flag // | ||
<code c> | <code c> | ||
Ligne 96: | Ligne 98: | ||
} | } | ||
</ | </ | ||
- | ==== v80 ==== | ||
- | The timing Handler decrease the value until it's reach 1. | ||
- | It's started when Larry use his breath spray when boolDisabledRoomJump (f48) is set or in the currentRoom 0. | + | ==== varTimerBreathSpraySeconds [v80] ==== |
- | When this timer hit 1 second left, the player re-gain the larry's control. | + | Le gestionnaire décrémente ce timer jusqu'à 1. |
- | it's also reset f34 flag. | + | Sa valeur est définie quand Larry utilise son spray; quand le flag // |
+ | |||
+ | Quand ce timer est expiré (valeur == 1), | ||
+ | * Le joueur récupère le controle de Larry. | ||
+ | * Le flag // | ||
+ | |||
+ | <code c> | ||
+ | if (varTimerBreathSpraySeconds == 1) | ||
+ | { | ||
+ | reset(boolDisabledRoomJump); | ||
+ | reset(boolKeepCycling); | ||
+ | set.view(ego, | ||
+ | start.motion(ego); | ||
+ | reset(boolDisablePlayer); | ||
+ | accept.input(); | ||
+ | print(" | ||
+ | } | ||
+ | </ |