Enemy Dependent Lock AEV (For Son of Persia's Toolset)
May 4, 2021 21:01:32 GMT 10
Mr.Curious, k98postman, and 3 more like this
Post by kTeo on May 4, 2021 21:01:32 GMT 10
Hello people, i've found a way to make a very interesting type of temporary lock on AEV that can lead up to good ideas and decided to share with everyone. First, you can take a look at two video examples below:
First of all, this tutorial needs basic knowledge on AEV and ESL, you can find tutorials for those HERE and HERE
So how it works is that it first loads a MESSAGE TYPE aev, and after an enemy dies that MESSAGE TYPE gets erased and another entry is loaded in.
FIRST STEP: You'll need to search for the ID of the enemy you want to lock a door. let's say the ID is 3C (60 in decimal, you need to find it at Crzosk's Esl Tool and then convert it to hexadecimal.)
SECOND STEP: Now with the ID, you will need to create a new MESSAGE TYPE AEV in your .txt. remember to change Offset[73] and Offset[74] to get the right sounds and text messages you want for the locked event. I recommend always copying the same text as the original AEV such as OPEN, SAVE, CLIMB UP... but you can do anything really.
Also remember to edit those known # Message Event Parameters offsets so you get the right MDT message displayed and the right CAM entry. If you have any questions about how to build the basics of an MESSAGE TYPE AEV, go check Mr.Curious's tutorials on AEV and MDT.
THIRD STEP: Now with your new entry set, you need to copy the exact coordinates from the original event that will be unlocked. This step works the same way as a key dependent lock.
The lines you will need to get the same are:
TriggerZoneHeightBoundary1 =
TriggerZoneHeightBoundary2 =
UnknownValue =
TriggerZoneCorner0_X =
TriggerZoneCorner0_Y =
TriggerZoneCorner1_X =
TriggerZoneCorner1_Y =
TriggerZoneCorner2_X =
TriggerZoneCorner2_Y =
TriggerZoneCorner3_X =
TriggerZoneCorner3_Y =
*Remember to DELETE your .obj file before repacking, otherwise your modified coordinates for existing entries will get overwritten.
FOURTH STEP: With everything set, you will need now to use the enemy ID. The offset is:
Offset[68..71] = 0x##010008 (overwrite the ## with your ID. If the ID has only one number, insert a 0 before it).
This offset should be inserted into the new AEV entry That's supposed to work as the FIRST loaded entry (the "locked" one)
The order of creating entries should be:
1- your UNLOCKED entry that will load after the enemy dies. Remember to NOT insert the Offset[68..71] bytes into this one. It can be written as a common AEV entry.
2- your LOCKED entry that will be first loaded and then erased after the enemy dies. This is the entry that you need to insert your Offset[68..71] bytes.
FIFTH STEP: You're good to go. I'm serious. Update your entryCount, repack and it's done. It's THAT simple
BONUS: If you want, you can also lock an ETS object instead of an ESL enemy. for doing so, simply change the Offset[68..71] value to 08 00 02 XX (XX = ETS Index. If the ID has only one number, insert a 0 before it).
Some ETS objects can't register as "broken", so it won't work on a small portion of them.
There are countless ways to use this outside of a simple lock. For example, you can make a door lead you to a different area after killing someone, or unlocking a new path, or even a reverse lock where you won't be able to go back after killing someone! Those are only a few examples, you need to get creative to figure out the best way to utilize this.
That's it for today, and as someone around here likes to say, Happy modding!
-Awfully written by kTeo
First of all, this tutorial needs basic knowledge on AEV and ESL, you can find tutorials for those HERE and HERE
So how it works is that it first loads a MESSAGE TYPE aev, and after an enemy dies that MESSAGE TYPE gets erased and another entry is loaded in.
FIRST STEP: You'll need to search for the ID of the enemy you want to lock a door. let's say the ID is 3C (60 in decimal, you need to find it at Crzosk's Esl Tool and then convert it to hexadecimal.)
SECOND STEP: Now with the ID, you will need to create a new MESSAGE TYPE AEV in your .txt. remember to change Offset[73] and Offset[74] to get the right sounds and text messages you want for the locked event. I recommend always copying the same text as the original AEV such as OPEN, SAVE, CLIMB UP... but you can do anything really.
Also remember to edit those known # Message Event Parameters offsets so you get the right MDT message displayed and the right CAM entry. If you have any questions about how to build the basics of an MESSAGE TYPE AEV, go check Mr.Curious's tutorials on AEV and MDT.
THIRD STEP: Now with your new entry set, you need to copy the exact coordinates from the original event that will be unlocked. This step works the same way as a key dependent lock.
The lines you will need to get the same are:
TriggerZoneHeightBoundary1 =
TriggerZoneHeightBoundary2 =
UnknownValue =
TriggerZoneCorner0_X =
TriggerZoneCorner0_Y =
TriggerZoneCorner1_X =
TriggerZoneCorner1_Y =
TriggerZoneCorner2_X =
TriggerZoneCorner2_Y =
TriggerZoneCorner3_X =
TriggerZoneCorner3_Y =
*Remember to DELETE your .obj file before repacking, otherwise your modified coordinates for existing entries will get overwritten.
FOURTH STEP: With everything set, you will need now to use the enemy ID. The offset is:
Offset[68..71] = 0x##010008 (overwrite the ## with your ID. If the ID has only one number, insert a 0 before it).
This offset should be inserted into the new AEV entry That's supposed to work as the FIRST loaded entry (the "locked" one)
The order of creating entries should be:
1- your UNLOCKED entry that will load after the enemy dies. Remember to NOT insert the Offset[68..71] bytes into this one. It can be written as a common AEV entry.
2- your LOCKED entry that will be first loaded and then erased after the enemy dies. This is the entry that you need to insert your Offset[68..71] bytes.
FIFTH STEP: You're good to go. I'm serious. Update your entryCount, repack and it's done. It's THAT simple
BONUS: If you want, you can also lock an ETS object instead of an ESL enemy. for doing so, simply change the Offset[68..71] value to 08 00 02 XX (XX = ETS Index. If the ID has only one number, insert a 0 before it).
Some ETS objects can't register as "broken", so it won't work on a small portion of them.
There are countless ways to use this outside of a simple lock. For example, you can make a door lead you to a different area after killing someone, or unlocking a new path, or even a reverse lock where you won't be able to go back after killing someone! Those are only a few examples, you need to get creative to figure out the best way to utilize this.
That's it for today, and as someone around here likes to say, Happy modding!
-Awfully written by kTeo