I need the knight to patrol from one ghost to another, ina function that can be turned on and off, but without disrupting the flames:
Code:
# 03_sneaky.cog
# [Grismath]
# 5.27.04
#
# NEW: 8.29.04: Loop through all surfaces to find ones
# with a custom flag, then set those to geo4, and
# scroll them down.
#
# Thanks go to LKOH_SniperWolf for the rain code.
#
#=====================================================#
symbols
message entered
thing player local
sector outside
thing windowcam
thing knight
thing torch0
thing torch1
thing torch2
thing light0
thing light1
thing light2
template flame
thing viewcam
thing telewindow
material rainmat
flex animRate
int numSurfs local
int i local
int rainstat=0 local
int lt0=1 local
int lt1=1 local
int lt2=1 local
vector slidevec
flex slidespeed
end
#=======================================================#
code
#--------------------------------------------------------
user0:
SetPulse(0.5);
return;
#--------------------------------------------------------
activated:
if(GetSenderRef()==torch0) {
lt0=0;
SetThingLight(light0, 0.0);
}
if(GetSenderRef()==torch1) {
lt1=0;
SetThingLight(light1, 0.0);
}
if(GetSenderRef()==torch2) {
lt2=0;
SetThingLight(light2, 0.0);
}
if(lt0==1 && lt1==1 && lt2==1 && warg==0) {
warg=1;
SetActorFlags(player, 0xa00000);
// Stop patrol
SetCameraFocus(0, viewcam);
Print("SOLDIER: The flames died... that's odd.");
Sleep(2.0);
PlaySoundLocal(thunder, 1, 0, 0x0);
TeleportThing(knight, telewindow);
Sleep(1.0);
SetCameraFocus(0, windowcam);
rainstat=1;
numSurfs = GetSurfaceCount();
for(i = 0; i < numSurfs; i = i + 1){
if(GetSurfaceMat(i) == rainmat) {
SetFaceGeoMode(i,0x4);
slidewall(i, slidevec, slidespeed);
}
}
Sleep(1.0);
Print("SOLDIER: Ah, that explains it.");
Sleep(2.0);
SetCameraFocus(0, advcam);
ClearActorFlags(player, 0xa00000);
}
return;
#--------------------------------------------------------
pulse:
if(rainstat==1) {
return;
} else {
if(lt0==1) CreateThing(flame, light0);
if(lt1==1) CreateThing(flame, light1);
if(lt2==1) CreateThing(flame, light2);
// patroller move
}
return;
#--------------------------------------------------------
entered:
if(GetSenderRef()==outside && wraa==0) {
wraa=1;
SetActorFlags(player, 0xa00000);
SetCameraFocus(0, windowcam);
Print("INSIDE: Knave, why durst thou abandon thy post?");
Sleep(2.0);
AISetMovePos(knight, GetThingPos(telewindow));
Sleep(1.0);
Print("SOLDIER: My apologies, sir, it shall not happen again.");
Sleep(2.5);
Print("INSIDE: See to it that is does not.");
Sleep(2.0);
SetCameraFocus(0, advcam);
ClearActorFlags(player, 0xa00000);
// Begin patrol sequence
}
if(GetSenderRef()==path0 && lt0==1) {
if(GetThingSector(knight)==left || GetThingSector(knight)==right) {
// Copy this for the other two path parts
SetActorFlags(player, 0xa00000);
// Stop Patrol
SetCameraFocus(0, windowcam);
Print("SOLDER: Sir! Someone approaches!");
Sleep(2.0);
SetCameraFocus(0, viewcam);
Sleep(1.0);
ClearActorFlags(player, 0xa00000);
DamageThing(player, 999, 0x1, player);
}
}
if(GetSenderRef()==path1 && lt1==1) {
if(GetThingSector(knight)==left || GetThingSector(knight)==right) {
SetActorFlags(player, 0xa00000);
Print("SOLDER: Sir! Someone approaches!");
Sleep(2.0);
ClearActorFlags(player, 0xa00000);
DamageThing(player, 999, 0x1, player);
}
}
if(GetSenderRef()==path2 && lt2==1) {
if(GetThingSector(knight)==left || GetThingSector(knight)==right) {
SetActorFlags(player, 0xa00000);
Print("SOLDER: Sir! Someone approaches!");
Sleep(2.0);
ClearActorFlags(player, 0xa00000);
DamageThing(player, 999, 0x1, player);
}
}
return;
#--------------------------------------------------------
end