Sly 1:LOCKG: Difference between revisions

Cleanup, formatting
m (→‎Implementation: Fixed image)
(Cleanup, formatting)
Line 3:
| official= y
}}
'''LOCKG''' (likely short for "'''Locklock Gg'''oal") is a data structure in {{Sly 1}} that handles interaction between Sly and treasure key locks.
{{todo|Cleanup, add memory addresses, fix formatting}}
'''LOCKG''' (likely short for '''Lock G'''oal) is a data structure in {{Sly 1}} that handles interaction between Sly and treasure key locks.
 
== Structure ==
Line 12 ⟶ 11:
== Implementation ==
[[File:Sly 1 SDC 3key unlocking.png|thumb|The cutscene after triggering a LOCKG in {{Sly 1|The Swamp's Dark Center}}]]
When the trigger volume associated with a LOCKG is triggered it sets off a sequence of events. It starts with the animation that spawns a [[Sly 1:KEY]] for each [[Sly 1:LOCK]] in the <code>apLock</code> array. Each key flies to its assigned lock and then despawns.
 
At some point a message with ID 0xXXX{{check}} is sent to the [[JT (Sly 1):JT|JT]] struct. This message is processed by <code>HandleJtMessage</code>, which checks if the <code>ckey</code> on the current [[{{Sly 1|WS]]|world (World State)state}} is greater than the <code>cpLock</code>{{check}} on the LOCKG (iei.e. it checks if you have enough keys to open the lock).
 
If the check passes, it uses the LOCKG’s <code>LOCKG->FWS</code> as a bit maskbitmask to set the corresponding flag on the FWS of the current WS. It then unlocks the locks and sets the [[Sly 1:SMA|SmaGoal]] goal based on the LOCKG’s <code>LOCKG-> smaGoal</code> pointer. The SMA goal, which seems to beis processed by [[{{Sly 1|Splice]],}} determinesto thetrigger outcomewhatever (ie.scripted whatevent happens as a result of the locks being opened)unlocked.
 
Once all locks complete their unlock [[Sly 1:ASEG|animation]], theythe areassociated removedlocks fromdisappear from the game world along with the LOCKG itself.{{check}}
 
=== Example ===
In Prowling the Grounds, the LOCKG which handles unlocking the cannon is based at address 0xXXXXXX{{check}}. It’s <code>cpLock</code>{{check}} value is 7, meaning there are 7 locks in the <code>apLock</code> array, so when you approach the cannon it checks if you have 7 keys.