(06-18-2012, 03:02 AM)Xvideogamer720X Wrote: So I wanted to use the secret books method that the original Amnesia game had where when you pulled the books (on time that is), it would open the shelf. However, for me, it's a bit different
I want it to be if you pull the right books (some are real, some are fake) the shelf opens and if you pull the fake books, it restarts the whole puzzle. I got the shelf movement to work... sort of. It moves backwards through the wall instead of to the side. That's not how it's suppose to be, it should move to the side, like in the Amnesia game itself.
I tried checking how they made it work... but I don't see how! They didn't use an Area or anything like that. They did use the "SetMoveObjectState" and that's pretty much all I see that made me understand how it worked. But somehow, they made their shelf move to the side, not backwards, like mine.
Please help!!
If you need me to go more into detail, I can record a very quick video demonstrating what I mean.
void OnStart()
{
for(int i=1;i<=3;i++) AddEntityCollideCallback("SecretBook_"+i, "AreaSecretBook_"+i, "CollideSecretBook", false, 0);
}
void CollideSecretBook(string &in asParent, string &in asChild, int alState)
{
if(alState == 1) {
SetLocalVarInt("Var"+asParent, 1);
AddTimer(asParent, 20, "PushBackBook");
SetPropObjectStuckState(asParent, 1);
PlaySoundAtEntity("Sound"+asParent, "gameplay_tick", asParent, 0.0f, false);
StartScreenShake(0.001f, 0.5f, 0.5f, 0.5f);
PlayGuiSound("16_lever_stuck", 0.3f);
/*DEBUG
*/
AddDebugMessage("Book in area: "+asParent, true);
} else {
SetLocalVarInt("Var"+asParent, 0);
RemoveTimer(asParent);
PlaySoundAtEntity("Sound2"+asParent, "lock_door", asParent, 1.5f, false);
PlayGuiSound("16_lever_stuck", 0.2f);
StopSound("Sound"+asParent, 1.0f);
/*DEBUG
*/
AddDebugMessage("Book out of area: "+asParent, true);
}
/*All books are pulled before time is out and the secret room is revealed.
*/
if(GetLocalVarInt("VarSecretBook_1") == 1 && GetLocalVarInt("VarSecretBook_2") == 1 && GetLocalVarInt("VarSecretBook_3") == 1) {
FadeLightTo("PointLight_30", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f);
SetMoveObjectState("shelf_secret_door_1", 1);
SetPropObjectStuckState("SecretBook_*", -1);
SetEntityInteractionDisabled("SecretBook_*", true);
PlaySoundAtEntity("BooksDone", "lock_door", "Player", 0, false);
CreateParticleSystemAtEntity("dust", "ps_dust_falling_door_quick", "AreaDoorParticle", false);
for(int i=1;i<=3;i++){ RemoveTimer("SecretBook_"+i); StopSound("SoundSecretBook_"+i, 0.0f); }
GiveSanityBoostSmall();
PlayMusic("03_puzzle_secret.ogg", false, 0.7f, 0, 10, false);
SetSwingDoorLocked("shelf02_3", false, true);
/*DEBUG
*/
AddDebugMessage("All books in position, move shelf!", true);
}
}
void PushBackBook(string &in asTimer)
{
SetPropObjectStuckState(asTimer, -1);
AddTimer("2"+asTimer, 0.25f, "PushBackBook02");
/*DEBUG
*/
AddDebugMessage("Push back book: "+asTimer, true);
}
void PushBackBook02(string &in asTimer)
{
if(asTimer == "2SecretBook_1") SetPropObjectStuckState("SecretBook_1", 0);
else if(asTimer == "2SecretBook_2") SetPropObjectStuckState("SecretBook_2", 0);
else SetPropObjectStuckState("SecretBook_3", 0);
}
it works for me