| 
				  
 Always good to swap SPAWN to AGGRO when it comes to combat timers/triggers. 
First issue, you have + and - in the spawn locations for some of the spawns (ex: $y + - 20).  $userid works for the spell casts also.
 
	Code: sub EVENT_AGGRO {
  quest::setnexthpevent(90);
}
sub EVENT_HP {
  if ($hpevent == 90) {
    quest::spawn2(999245,0,0,$x + 10,$y,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x + 20,$y,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x - 10,$y,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x - 20,$y,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x,$y + 10,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x,$y + 20,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x,$y - 10,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x,$y - 20,$z,$h); #a dream defiler
    $npc->CastSpell(16950,$userid);
    quest::setnexthpevent(60);
  }
  if ($hpevent == 60) {
    quest::spawn2(999246,0,0,$x + 70,$y + 80,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y + 70,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y + 60,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y + 40,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y + 20,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y - 80,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y - 70,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y - 60,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y - 40,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y - 20,$z,$h); #a dream defiler
    quest::spawn2(999246,0,0,$x + 70,$y,$z,$h); #a dream defiler
    $npc->CastSpell(3150, $userid);
    quest::setnexthpevent(36);
  }
		
  if ($hpevent == 36) {
    quest::spawn2(999245,0,0,$x + 10,$y,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x + 20,$y,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x - 10,$y,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x - 20,$y,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x,$y + 10,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x,$y + 20,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x,$y - 10,$z,$h); #a dream defiler
    quest::spawn2(999245,0,0,$x,$y - 20,$z,$h); #a dream defiler
    $npc->CastSpell(16950, $userid);
  }
}
sub EVENT_DEATH {
  quest::we(15, " $name has defeated Touch, The Merciless");
  quest::stoptimer(1);
} I would also add Combat checks and depops for adds for when players fail the fight.  Example below.
 
	Code: sub EVENT_COMBAT {
#Spawn the door guards to prevent running outside the cave
   if($combat_state == 1) {
      quest::spawn2(1247,0,0,2577,-2068,4,125);
      quest::spawn2(1247,0,0,2559,-2070,4,124);
      }
#DeSpawn door guards and adds if raid wipes   
   if($combat_state == 0) {
      quest::signalwith(1247, 1, 0);
      quest::signalwith(1248, 1, 0);
      }
   } Put this on adds
 
	Code: sub EVENT_SIGNAL {
   if ($signal == 1) {
      quest::depop();
      }      
} |