Hey everyone,
As my only contribution for the HPL2 modding community, I'm porting the Labs assets from SOMA to Amnesia. It's a nice assets pack and it's not that hard to use (compared to other assets from SOMA).
What does the pack include:
make sure to report any bugs if you find any.
If anyone wants to help me with porting/fixing bugs, it will be very appreciated!
VERSION 1.0.0 - CHANGELOG:
VERSION 0.9.0 - CHANGELOG:
VERSION 0.8.5 - CHANGELOG:
Hi there,
If you want to use the SOMA slidedoor in amnesia, you need to setup some stuff in the map itself and the map's script file. Let's see what we need to do.
1. Setup the door's name and the panels - every slidedoor should have a specific name, and this name is determined by the string "Slidedoor" + the first panel's name that is connected to the door:
The first Panel's name
Therefore, our slidedoor's full name will be: "Slidedoor_panel_1_1".
The slidedoor's full name
As for the second panel, which will be at the other side of the door, will be called "panel_1_2".
*Note: if we wanted to add another door to the map, the first door's panels will be called "panel_2_1, the second will be called "panel_2_2" and the slidedoor will be called "Slidedoor_panel_2_1" and so forth.
This is very important to name the doors like that, or else it won't work!
2. Setup the slidedoor's buttons - Naming the buttons isn't enough! We need to also add a ConnectionStateChangeCallback to make the door open/close when the button is turned on/off.
Under the panel's entity tab, paste this callback name in the ConnectionStateChangeCallback bar:
slidedoor_OnChangeState
Now, every time the button is pressed, this function will be called and will open/close the door. Make sure to implement that callback function in both panels.
Now we're ready to do the final step.
3. Setup the slidedoor script - In order to make the magic work, we need to tie everything together in the map's script file. The basic script is as the following (This script can be found in the example map included with the pack):
//PROPERTIES//
string sOppositeButton;
string sCurrentSlideDoor;
bool mbDoorIsClosing = false;
//----------------------------------------------------
void slidedoor_OnChangeState(string& entity, int alState)
{
if(alState == 1)
{
PlaySoundAtEntity("Open", "theta_button_door_open_01.snt", entity, 0, false);
slidedoor_HandleButtonDetection(entity);
SetMoveObjectState("Slidedoor_"+entity, 1);
SetButtonSwitchedOn(sOppositeButton, true, true);
sCurrentSlideDoor = "Slidedoor_"+entity;
PlaySoundAtEntity("DoorOpen", "theta_slidedoor_open.snt", sCurrentSlideDoor, 0, false);
mbDoorIsClosing = false;
AddDebugMessage("Door is opening", true);
}
else
{
PlaySoundAtEntity("Close", "theta_button_door_close_01.snt", entity, 0, false);
slidedoor_HandleButtonDetection(entity);
SetMoveObjectState("Slidedoor_"+entity, 0);
SetButtonSwitchedOn(sOppositeButton, false, true);
sCurrentSlideDoor = "Slidedoor_"+entity;
PlaySoundAtEntity("DoorClose", "theta_slidedoor_close.snt", sCurrentSlideDoor, 0, false);
mbDoorIsClosing = true;
AddDebugMessage("Door is closing", true);
}
}
//----------------------------------------------------
void slidedoor_HandleButtonDetection(string& entity)
{
if(StringSub(entity, 7, 2) == "_1") sOppositeButton = StringSub(entity, 0, 7) +"_2";
else if(StringSub(entity, 7, 2) == "_2") sOppositeButton = StringSub(entity, 0, 7) +"_1";
}
//----------------------------------------------------
void OnStart()
{
PreloadSound("theta_button_door_open_01.snt");
PreloadSound("theta_button_door_close_01.snt");
PreloadSound("theta_slidedoor_open.snt");
PreloadSound("theta_slidedoor_close.snt");
}
//----------------------------------------------------
void OnEnter(){ }
void OnLeave(){ }
void OnGameStart(){ }
Just copy that and use it as your base script file for your map.
Note: This is not the final version of the script, it may be changed as updates will come.
Now, if you've done everything right, the door should open and close!
The assets pack + an example map. Will be updated in the future. Report any bug/problem!
Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.
Yes. The hateful HPL3 was back inside the lovely HPL2. Thank you. Please enjoy the freakin' static objects and kind. Ignore that spoiled game rant.
Hello? you there?
What does the 1.0.0 update do?
You can see the changes in the changelog.
Looks fantastic,
honestly though... HPL3 is such a pain to edit...
I think it's pretty straightforward.
this will be perfect for my custom story called The Factory! as soon as i saw this my mouth drooped and i was amazed to death!
Would be good if you import the fleshy black substance thing too
I mean the WAU
this actually looks like a nice addition! i might implement it into something one day :) and about the monsters, i also wasn't able to solve the issue for the others.