Viperdream
Member
Posts: 124
Threads: 16
Joined: Jan 2011
Reputation:
0
Monsters don't despawn and patrol instead
I have a little problem regarding the monsters.
Whenever they get activated by my collides, they follow their path nodes and when they arrive at the last one. They just go back to the first one.
First it was only with the 2nd encounter monster and after that also with the 1st encounter monster while I didn't change anything with the script of it.
I tried them to deactivate with timers, which works. But then they don't destroy the doors they are supposed to destroy.
Here's the script (Beware, it's long. I didn't know what could possibly cause the problem so I just copied the whole script)
Thanks
Spoiler below!
//TIMERS
void LightOffTimer1(string &in asTimer)
{
SetLampLit("light_1", false, true);
}
void LightOffTimer2(string &in asTimer)
{
SetLampLit("light_2", false, true);
}
void LightOffTimer3(string &in asTimer)
{
SetLampLit("light_3", false, true);
}
void LightOffTimer4(string &in asTimer)
{
SetLampLit("light_4", false, true);
}
void LightOffTimer5(string &in asTimer)
{
SetLampLit("light_5", false, true);
}
void LightOffTimer6(string &in asTimer)
{
SetLampLit("light_6", false, true);
}
void LightOffTimer7(string &in asTimer)
{
SetLampLit("light_7", false, true);
}
void LightOffTimer8(string &in asTimer)
{
SetLampLit("light_8", false, true);
}
void StopLookTimer(string &in asTimer)
{
StopPlayerLookAt();
}
void StartLookTimer1(string &in asTimer)
{
StartPlayerLookAt("PlayerLookArea_2", 2, 2, "");
}
void LightOffTimer9(string &in asTimer)
{
SetLampLit("candle_1", false, true);
}
void LightOffTimer10(string &in asTimer)
{
SetLampLit("candle_2", false, true);
}
void LightOffTimer11(string &in asTimer)
{
SetLampLit("candle_3", false, true);
}
void LightOffTimer12(string &in asTimer)
{
SetLampLit("candle_4", false, true);
}
void LightOffTimer13(string &in asTimer)
{
SetLampLit("candle_5", false, true);
}
void LightOffTimer14(string &in asTimer)
{
SetLampLit("candle_6", false, true);
}
void LightOffTimer15(string &in asTimer)
{
SetLampLit("candle_7", false, true);
}
void MonsterYellTimer1(string &in asTimer)
{
PlaySoundAtEntity("", "enabled01.ogg", "player", 5.0f, false);
}
void ReactScareTimer1(string &in asTimer)
{
PlaySoundAtEntity("", "react_scare.snt", "player", 5.0f, false);
GiveSanityDamage(10.0f, true);
}
void DoorBreakTimer(string &in asTimer)
{
PlaySoundAtEntity("", "break_wood_metal.snt", "tai_1", 5.0f, false);
}
void ReactScareTimer2(string &in asTimer)
{
PlaySoundAtEntity("", "react_pant.snt", "player", 5.0f, false);
GiveSanityDamage(20.0f, true);
}
void PlayMusicTimer(string &in asTimer)
{
PlayMusic("04_amb.ogg", true, 1.0f, 4.0f, 3, true);
}
void DoorActivateTimer(string &in asTimer)
{
SetEntityActive("mansion_off_hinges_1", true);
}
void WiktorGoneTimer(string &in asTimer)
{
PlayMusic("04_amb.ogg", true, 1.0f, 4.0f, 3, true);
SetEntityActive("wiktor", false);
DestroyParticleSystem("fire");
}
void TimerFallDeath(string &in asTimer)
{
if(asTimer == "death1"){
PlaySoundAtEntity("bump1", "player_bodyfall", "Player", 0, false);
return;
}
DisableDeathStartSound();
AddPlayerHealth(-200);
PlaySoundAtEntity("pain", "player_falldamage_max", "Player", 0, false);
PlaySoundAtEntity("bump2", "player_bodyfall", "Player", 0, false);
}
//ON START
void OnStart()
{
GiveItemFromFile("lantern", "lantern.ent");
AddEntityCollideCallback("Player", "LightOffArea", "Collide_Area1", true, 1);
AddEntityCollideCallback("bible", "BibleArea", "Collide_Area2", true, -1);
AddEntityCollideCallback("Player", "DoorSoundArea", "Collide_Area3", true, 1);
AddEntityCollideCallback("Player", "GruntArea", "Collide_Area4", true, 1);
AddEntityCollideCallback("Player", "GruntSoundArea", "Collide_Area5", true, 1);
AddEntityCollideCallback("Player", "CorpseScareArea", "Collide_Area6", true, 1);
AddEntityCollideCallback("Player", "AreaGruntActivate", "Collide_Area7", true, 1);
AddEntityCollideCallback("Player", "InsanityUpArea1", "Collide_Area9", true, 1);
AddEntityCollideCallback("Player", "DoorActivateArea", "Collide_Area10", true, 1);
AddEntityCollideCallback("Player", "InsanityUpArea2", "Collide_Area11", true, 1);
AddEntityCollideCallback("Player", "AreaFallDeath", "CollideFallDeath", true, 1);
AddEnemyPatrolNode("tai_1", "PathNodeArea_1", 0.0f, ""); //1st encounter
AddEnemyPatrolNode("tai_1", "PathNodeArea_2", 0.0f, "");
AddEnemyPatrolNode("tai_1", "PathNodeArea_3", 0.0f, "");
AddEnemyPatrolNode("tai_1", "PathNodeArea_4", 0.0f, "");
AddEnemyPatrolNode("tai_1", "PathNodeArea_5", 0.0f, "");
AddEnemyPatrolNode("tai_1", "PathNodeArea_6", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_7", 0.0f, ""); //2nd encounter
AddEnemyPatrolNode("tai_2", "PathNodeArea_8", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_9", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_10", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_11", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_12", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_13", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_14", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_15", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_16", 0.0f, "");
AddEnemyPatrolNode("tai_2", "PathNodeArea_17", 0.0f, "");
AddEnemyPatrolNode("tai_3", "PathNodeArea_20", 0.0f, ""); //3th encounter
AddEnemyPatrolNode("tai_3", "PathNodeArea_21", 0.0f, "");
AddEnemyPatrolNode("tai_3", "PathNodeArea_22", 0.0f, "");
AddEnemyPatrolNode("tai_3", "PathNodeArea_23", 0.0f, "");
AddEnemyPatrolNode("tai_3", "PathNodeArea_24", 0.0f, "");
AddEnemyPatrolNode("tai_3", "PathNodeArea_25", 0.0f, "");
AddEnemyPatrolNode("tai_3", "PathNodeArea_26", 0.0f, "");
AddUseItemCallback("UseKey", "DoorKey", "mansion_1", "UseKey",true);
SetEntityPlayerInteractCallback("DoorKey", "WikiWake", false);
SetEntityPlayerInteractCallback("Artifact1", "BeGone", false);
SetLightVisible("PointLight_3", false);
SetEntityConnectionStateChangeCallback("lever1", "StateChangeLever");
}
//PLAYERINTERACTS
void WikiWake(string &in entity)
{
StartPlayerLookAt("wiktor", 5, 5, "");
PlayMusic("24_event_vision03.ogg", true, 1.0f, 4.0f, 3, true);
StartScreenShake(0.5f, 1.0f, 0.0f, 0.0f);
PlaySoundAtEntity("", "react_scare.snt", "Player", 0, false);
GiveSanityDamage(20.0f, true);
CreateParticleSystemAtEntity("fire", "ps_fire_orb_room.ps", "FireArea", false);
SetLightVisible("PointLight_3", true);
SetEntityActive("wiktor", true);
SetMessage("WiktorTalk", "Entry6", 5.0f);
AddTimer("StopLook", 2.0f, "StopLookTimer");
AddTimer("WiktorGone", 7.5f, "WiktorGoneTimer");
}
void BeGone(string &in entity) //Player Picks up Artifact and gets teleported to the Prison
{
PlaySoundAtEntity("", "guardian_ontop.snt", "Player", 0, false);
StartScreenShake(0.5f, 9.0f, 1.0f, 1.0f);
AddTimer("ChangeMap", 9.0f, "ChangeMapTimer"); //Note: Change this after you created the prison map
}
void ChangeMapTimer(string &in asTimer)
{
ChangeMap("cellar.map", "PlayerStartArea_1", "", "");
}
//COLLIDES
void Collide_Area1(string &in asParent, string &in asChild, int alState)
{
PlayMusic("20_event_darkness.ogg", false, 1.0f, 4.0f, 3, true);
StartPlayerLookAt("PlayerLookArea_1", 2, 2, "");
AddTimer("LightOff1", 2.0f, "LightOffTimer1"); //1st hallway
AddTimer("LightOff2", 3.0f, "LightOffTimer2");
AddTimer("LightOff3", 4.0f, "LightOffTimer3");
AddTimer("LightOff4", 5.0f, "LightOffTimer4");
AddTimer("LightOff5", 6.0f, "LightOffTimer5");
AddTimer("LightOff6", 7.0f, "LightOffTimer6");
AddTimer("LightOff7", 8.0f, "LightOffTimer7");
AddTimer("LightOff8", 8.0f, "LightOffTimer8");
AddTimer("StopLook", 8.5f, "StopLookTimer");
AddTimer("StartLook1", 8.6f, "StartLookTimer1"); //2nd hallway
AddTimer("LightOff9", 9.0f, "LightOffTimer9");
AddTimer("LightOff10", 10.0f, "LightOffTimer10");
AddTimer("LightOff11", 11.0f, "LightOffTimer11");
AddTimer("LightOff12", 12.0f, "LightOffTimer12");
AddTimer("LightOff13", 13.0f, "LightOffTimer13");
AddTimer("LightOff14", 14.0f, "LightOffTimer14");
AddTimer("LightOff15", 15.0f, "LightOffTimer15");
AddTimer("StopLook", 15.0f, "StopLookTimer");
AddTimer("MonsterYell", 15.1f, "MonsterYellTimer1");
AddTimer("ReactScare", 15.3f, "ReactScareTimer1");
}
void Collide_Area2(string &in asParent, string &in asChild, int alState)
{
PlaySoundAtEntity("", "03_in_a_bottle.snt", "bible", 5.0f, false);
PlaySoundAtEntity("", "react_pant.snt", "player", 0, false);
GiveSanityDamage(20.0f, true);
}
void Collide_Area3(string &in asParent, string &in asChild, int alState)
{
PlaySoundAtEntity("", "door_level_wood_open.snt", "level_hub_1", 6.0f, false);
PlaySoundAtEntity("", "react_pant.snt", "player", 0, false);
GiveSanityDamage(20.0f, true);
}
void Collide_Area4(string &in asParent, string &in asChild, int alState)
{
PlayMusic("26_event_brute.ogg", false, 1.0f, 4.0f, 3, true);
SetSwingDoorClosed("mansion_3", true, true);
SetEntityActive("tai_1", true);
AddTimer("DoorBreak", 3.0f, "DoorBreakTimer");
AddTimer("DoorActivate", 10.0f, "DoorActivateTimer");
}
void Collide_Area5(string &in asParent, string &in asChild, int alState)
{
GiveSanityBoost();
PlayMusic("10_puzzle01.ogg", false, 1.0f, 4.0f, 3, true);
AddTimer("PlayMusic1", 16.0f, "PlayMusicTimer");
}
void Collide_Area6(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("corpse_1", true);
StartPlayerLookAt("corspe_1", 2, 2, "");
PlaySoundAtEntity("", "react_scare.snt", "player", 0, false);
GiveSanityDamage(40.0f, true);
}
//2nd Encounter
void Collide_Area7(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("tai_2", true);
GiveSanityDamage(20.0f, true);
PlaySoundAtEntity("", "react_scare.snt", "Player", 0, false);
AddTimer("TaiGone", 20.0f, "TaiGonetimer");
}
void TaiGoneTimer(string &in asTimer)
{
SetEntityActive("tai_2", false);
SetEntityActive("mansion_off_hinges_2", true);
}
void Collide_Area8(string &in asParent, string &in asChild, int alState)
{
GiveSanityBoost();
}
void Collide_Area11(string &in asParent, string &in asChild, int alState)
{
GiveSanityBoost();
PlayMusic("25_puzzle_escape.ogg", false, 1.0f, 4.0f, 3, true);
}
void CollideFallDeath(string &in asParent, string &in asChild, int alState)
{
PlaySoundAtEntity("fallaaaaaah", "11_fall", "Player", 0, false);
PlaySoundAtEntity("fallaaaaaah2", "scare_male_terrified5", "Player", 0, false);
FadeOut(1);
AddTimer("death1", 0.5f, "TimerFallDeath");
AddTimer("death2", 1, "TimerFallDeath");
}
//UseKey
void UseKey(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked(asEntity, false, true);
AddDebugMessage("Door unlocked!", false);
RemoveItem(asItem);
}
void OnEnter()
{
}
void OnLeave()
{
}
//Event after lever
void StateChangeLever(string &in asEntity, int alState)
{
AddDebugMessage("called StateChangeLever", false);
if(alState == 1){
SetLeverStuckState(asEntity, 1, true);
PlayMusic("21_event_pit.ogg", false, 1.0f, 4.0f, 3, true);
SetMoveObjectState("shelf_secret_door_1", 1.0f);
SetEntityActive("tai_3", true);
StartScreenShake(0.5f, 5.0f, 1.0f, 1.0f);
AddTimer("DustFall", 0.5f, "DustTimer");
AddTimer("StopLook", 3.0f, "StopLookTimer");
AddTimer("FadeOut", 3.5f, "FadeOutTimer");
AddTimer("FadeIn", 13.5f, "FadeInTimer");
AddTimer("ActivateEntities", 10.0f, "ActivateEntitiesTimer");
}
}
void DustTimer(string &in asTimer)
{
StartPlayerLookAt("DustLookArea", 5, 5, "");
CreateParticleSystemAtEntity("DustFalling1", "ps_dust_falling_big_feet.ps", "DustArea1", false);
CreateParticleSystemAtEntity("DustFalling2", "ps_dust_falling_big_feet.ps", "DustArea2", false);
CreateParticleSystemAtEntity("DustFalling3", "ps_dust_falling_big_feet.ps", "DustArea3", false);
CreateParticleSystemAtEntity("DustFalling4", "ps_dust_falling_big_feet.ps", "DustArea4", false);
CreateParticleSystemAtEntity("DustFalling5", "ps_dust_falling_big_feet.ps", "DustArea5", false);
CreateParticleSystemAtEntity("DustFalling6", "ps_dust_falling_big_feet.ps", "DustArea6", false);
CreateParticleSystemAtEntity("DustFalling7", "ps_dust_falling_big_feet.ps", "DustArea7", false);
CreateParticleSystemAtEntity("DustFalling8", "ps_dust_falling_big_feet.ps", "DustArea8", false);
CreateParticleSystemAtEntity("DustFalling9", "ps_dust_falling_big_feet.ps", "DustArea9", false);
CreateParticleSystemAtEntity("DustFalling10", "ps_dust_falling_big_feet.ps", "DustArea10", false);
CreateParticleSystemAtEntity("DustFalling11", "ps_dust_falling_big_feet.ps", "DustArea11", false);
FadeImageTrailTo(0, 1);
GiveSanityDamage(100.0f, true);
}
void FadeOutTimer(string &in asTimer)
{
PlaySoundAtEntity("", "react_scare.snt", "Player", 0, false);
FadeOut(3.5f);
}
void FadeInTimer(string &in asTimer)
{
PlaySoundAtEntity("", "react_breath.snt", "Player", 0, false);
FadeIn(2.0f);
PlayMusic("25_amb.ogg", true, 1.0f, 4.0f, 3, true);
}
void ActivateEntitiesTimer(string &in asTimer)
{
SetEntityActive("ladder_broken_debris_1", true);
SetEntityActive("ladder_broken_2", true);
SetEntityActive("ladder_static_1", false);
SetEntityActive("StickyArea_1", true);
SetEntityActive("LadderArea1", false);
SetEntityActive("LadderArea3", true);
}
(This post was last modified: 03-08-2011, 09:47 PM by Viperdream .)
03-08-2011, 09:46 PM
Linus Ågren
Senior Member
Posts: 309
Threads: 58
Joined: Jan 2011
Reputation:
5
RE: Monsters don't despawn and patrol instead
Most likely cause is that you are too close to the monster to dissapear. Create a collidebox where the last node is and make so that the monster is set inactive when he collides with it.
Creator of The Dark Treasure.
03-08-2011, 10:01 PM
Viperdream
Member
Posts: 124
Threads: 16
Joined: Jan 2011
Reputation:
0
RE: Monsters don't despawn and patrol instead
I'll try that and see what happens
03-08-2011, 10:30 PM
gandalf91
Senior Member
Posts: 439
Threads: 13
Joined: Feb 2011
Reputation:
0
RE: Monsters don't despawn and patrol instead
Yeah, junkfood is probably right. I've noticed this a lot in my map I've been testing though I'm okay with it. How close are you to the monster when it is supposed to despawn. It seems that if I am with 20 meters or so OR I can see it it won't go away.
03-08-2011, 11:39 PM
Viperdream
Member
Posts: 124
Threads: 16
Joined: Jan 2011
Reputation:
0
RE: Monsters don't despawn and patrol instead
The areas don't work. I'll just use timers then
03-09-2011, 02:04 PM
Pandemoneus
Senior Member
Posts: 328
Threads: 2
Joined: Sep 2010
Reputation:
0
RE: Monsters don't despawn and patrol instead
Use areas and then CollideEntity using the area and the monster.
Check my map in the sig out, it has a working despawn area.
(This post was last modified: 03-09-2011, 03:12 PM by Pandemoneus .)
03-09-2011, 03:12 PM
Viperdream
Member
Posts: 124
Threads: 16
Joined: Jan 2011
Reputation:
0
RE: Monsters don't despawn and patrol instead
(03-09-2011, 03:12 PM) Pandemoneus Wrote: Use areas and then CollideEntity using the area and the monster.
Check my map in the sig out, it has a working despawn area.
I did that, still doesn't work
03-09-2011, 04:32 PM