Lollipop wrote:
How exactly do you kill the player? If it is with a damaging decorate function, the walls could potentially block some of it IDK...
Have you tried making it look at the play and call a script killing its linetarget? That should kill the player if whiteface can see him.
The monster itself doesn't kill the play, it gives the player some decorate object, that object calls an acs script when given to the player, that acs called teleport the player to a instakill sector, shows that image on the screen and plays the death sound.
Also here's the full White face code
Code: Select all
actor IMSCAREDACTIVE : CustomInventory
{
//$Category Ibm Stuff
inventory.pickupmessage ""
inventory.pickupsound ""
states
{
Spawn:
TNT1 A -1
stop
Pickup:
TNT1 A 0 ACS_Execute(44, 0)
stop
}
}
actor IMSCARED2BETA 31199
{
//$Category Ibm Stuff
MONSTER
//Radius 20
Health 0x7fffffff
Damage 0
Speed 3
scale 0.08
+GHOST +NOCLIP +NOGRAVITY +FLOAT +LOOKALLAROUND -SOLID +NOBLOCKMONST +DROPOFF +DONTSPLASH +BRIGHT
ActiveSound""
meleedamage 9999
meleerange 64
Obituary "%o was dead by \cjwhite face"
var int user_WFHunterTimer;//
var int user_WFStatusRandomizer;
States
{
Spawn:
SCAR A 1 A_Look
SCAR A 0 A_SetUserVar("user_WFHunterTimer",0)
SCAR A 0 A_SetUserVar("user_WFStatusRandomizer",-1)
SCAR A 0 A_SetTranslucent(0,0)
SCAR A 1 A_SetTranslucent (0.0,0)
Loop
See:
//RETURN TO THE PREVIOUS SEE STATE (IN CASE SOMETHING LIKE MELEE INTERRUPT IT)
SCAR A 0 A_JumpIf(user_WFHunterTimer>0,"SeeHaunt")
//SEE STATE TO BE SELECTED
SCAR A 0 A_SetUserVar("user_WFStatusRandomizer",random(0,100))
SCAR A 0 A_JumpIf(user_WFStatusRandomizer<=15,"SeeLaught") //OK
TNT1 A 0 A_JumpIf(user_WFStatusRandomizer<=25,"WanderState") //OK
SCAR A 0 A_JumpIf(user_WFStatusRandomizer<=89,"SeeNormal") //OK
SCAR A 0 A_Jump(256,"SeeHaunt")//last case | OK
TNT1 A 1//IT'LL NEVER GO HERE
Loop
SeeNormal:
SCAR A 0 A_SetUserVar("user_WFStatusRandomizer",random(0,100))
SCAR A 0 A_JumpIf(user_WFStatusRandomizer>=70,"SeeBlink") //OK
SCAR A 0 A_SetTranslucent(0.0,0)
SCAR AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 Bright A_Chase
Goto See
SeeHaunt:
SCAR A 0 A_JumpIf(user_WFHunterTimer>0,3)
//START SETUP
SCAR A 0 A_SetUserVar("user_WFHunterTimer",random(10,20))//Set the timer
SCAR A 0 ACS_Execute(46,0,1) //1
//END START SETUP
SCAR A 0 A_Playsound("KIDSND")//2 <-
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.1,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.2,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.3,0)
SCAR A 0 A_FaceTarget
SCAR AAA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.4,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.5,0)
SCAR A 0 A_FaceTarget
SCAR AAA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.6,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.7,0)
SCAR A 0 A_FaceTarget
SCAR AAA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.8,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.9,0)
SCAR A 0 A_FaceTarget
SCAR AAA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(1.0,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.9,0)
SCAR A 0 A_FaceTarget
SCAR AAA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.8,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.7,0)
SCAR A 0 A_FaceTarget
SCAR AAA 1 Bright A_Chase
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.5,0)
SCAR A 0 A_FaceTarget
SCAR AAA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.4,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.3,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.2,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.1,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.0,0)
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
SCAR A 0 A_SetUserVar("user_WFHunterTimer",user_WFHunterTimer-1)//in case it goes below zero
SCAR A 0 A_JumpIf(user_WFHunterTimer>0,5)
//RESET WHITE FACE TO NORMAL STATUS
SCAR A 0 A_SetTranslucent (0.0,0) //1
SCAR A 0 ACS_Execute(46,0,0) //2
SCAR A 0 A_SetUserVar("user_WFHunterTimer",0)//in case it goes below zero
SCAR A 0 A_Jump(256,"See") //4
SCAR A 0 //5 <--
Loop
SeeBlink: //OK
SCAR A 0 A_SetTranslucent (0.3,0)
SCAR A 0 A_Jump(127,2)//50% of chance to have heart sound
SCAR A 0 A_Playsound("GDSEE")// visible active sound
SCAR AAAAAAAAAAAA 2 A_Chase
SCAR A 0 A_SetTranslucent (0.0,0)
SCAR AAAAAAAAAAAA 2 A_Chase
Goto See
SeeLaught:
SCAR A 0 A_Playsound("ELAUGHT")// Laught
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.1,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.2,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.3,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.4,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.5,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.6,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.7,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.8,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.9,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(1.0,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.9,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.8,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.7,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.6,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.5,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.4,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.3,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.2,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.1,0)
SCAR A 2 Bright A_Chase
SCAR A 0 A_SetTranslucent(0.0,0)
SCAR A 2 Bright A_Chase
Goto See
WanderState:
SCAR A 0 ACS_Execute(46,0,1) //1
SCAR A 1
SCAR AAAAAAAAAAAAAAAAAA 0 A_Wander
TNT1 A 0 A_Jump(10,2)
SCAR AAAAAAAAAAAAAAAAAA 0 A_Wander
TNT1 A 0 A_Jump(10,2)
SCAR AAAAAAAAAAAAAAAAAA 0 A_Wander
SCAR A 0 ACS_Execute(46,0,0) //1
SCAR A 1 A_Chase
Goto See
Melee:
SCAR A 0 A_GiveToTarget("IMSCAREDACTIVE", 1)
SCAR A 0 A_FaceTarget
SCAR A 2 A_MeleeAttack
SCAR A 1
Goto See
Death:
IBMA A 4
IBMA A 0 A_Scream
IBMA A 4
IBMA A 4
IBMA A 4 A_SetTranslucent(1.0,0)
IBMA A 4 A_Fall
IBMA A -1 A_SetFloorClip
Stop
Raise:
IBMA A 8 A_UnSetFloorClip
IBMA A 8
Goto See
}
}
Maybe, it's something related to the A_chase function, because I replaced that function with "A_SkullAttack" and it "worked" (Well, it didn't entered into the melee state, but it at least touched the player on the first try)
And before
SCAR A 0 A_FaceTarget
SCAR AA 1 Bright A_Chase
I was using
SCAR A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_TARGET,AAPTR_DEFAULT)
SCAR AA 1 Bright A_Chase
But that didn't worked either (and it was worse, because on that position, the ghoul would never go back to kill the human)