Frictional Games Forum (read-only)
[SCRIPT] Checkpoint help - Printable Version

+- Frictional Games Forum (read-only) (https://www.frictionalgames.com/forum)
+-- Forum: Amnesia: The Dark Descent (https://www.frictionalgames.com/forum/forum-6.html)
+--- Forum: Custom Stories, TCs & Mods - Development (https://www.frictionalgames.com/forum/forum-38.html)
+---- Forum: Development Support (https://www.frictionalgames.com/forum/forum-39.html)
+---- Thread: [SCRIPT] Checkpoint help (/thread-21273.html)

Pages: 1 2


RE: Checkpoint help - Tomato Cat - 04-25-2013

I see the problem.

PHP Code:
void ReloadCheckpoint2(string &in asNameint alCount)
{
    if(
HasItem("LevelEndKey_1"))
    {
        
SetSwingDoorClosed("prison_1"truefalse);
        
//AddEntityCollideCallback("Player", "LockCellarDoor_01", "CellarChase", true, 1);
        
SetEntityActive("CellarBrute_01"false);
        
RemoveItem("LevelEndKey_1");
        
CreateEntityAtArea("LevelEndKey_1""key_laboratory.ent""RespawnCellarKey"false);
    }


The script is saying "Only do this if the player has the key". Nothing happens if the player doesn't have the key. No doors are unlocked, no callback re-added etc.

I modified it slightly:

PHP Code:
void ReloadCheckpoint2(string &in asNameint alCount)
{
    if(
HasItem("LevelEndKey_1"))
    {
        
SetSwingDoorClosed("prison_*"truefalse);
        
AddEntityCollideCallback("Player""LockCellarDoor_01""CellarChase"true1);
        
SetEntityActive("CellarBrute_01"false);
        
SetSwingDoorLocked("CellarDoor_01",false,false);
        
SetEntityActive("BruteDisappear_01",false);
        
RemoveItem("LevelEndKey_1");
        
CreateEntityAtArea("LevelEndKey_1""key_laboratory.ent""RespawnCellarKey"false);
    }
    
    else
    {
        
SetSwingDoorClosed("prison_*"truefalse);
        
SetSwingDoorLocked("CellarDoor_01",false,false);
        
SetEntityActive("BruteDisappear_01",false);
        
AddEntityCollideCallback("Player""LockCellarDoor_01""CellarChase"true1);
        
SetEntityActive("CellarBrute_01"false);
    }


Adding the else statement ensures everything is reset, regardless of whether or not player has the key.

You'll see that I deactivated "CellarBrute_01" area. This is because it locked the entrance to the maze after I had respawned. Also, be sure to make the "Checkpoint_2" area encompass the entire first room (I was able to bypass it a few times).

Hopefully this solves your issues.


RE: Checkpoint help - Dominic0904 - 04-25-2013

No wait, sorry about the previous post (unless you didn't see it before this edit) but it worked!
Turns out when I was testing our your solution I was working from the .hps I had open in dropbox and not the one in my Amnesia folder! God I'm such a fool. But wow it worked, all doors are closed, the callback works now as well. You are a legend!

And I just realised I need to figure out how to respawn the doors that the Brute breaks down during the playthough.


RE: Checkpoint help - Tomato Cat - 04-25-2013

Happy to help!

I haven't used it, but maybe this work for the doors?
PHP Code:
//Just use "prison_*" like before
void ResetProp(stringasName); 



RE: Checkpoint help - Dominic0904 - 04-25-2013

Awesome, will give that a test soon and let you know the results.

Hopefully I don't have to keep spamming the threads with my "halp plz" threads. No one I know in person or on Steam does CSs for Amnesia :C


RE: Checkpoint help - Dominic0904 - 04-27-2013

Sorry to double post, but that worked perfectly! Thank you again Big Grin


RE: Checkpoint help - Tomato Cat - 04-27-2013

No problem!