You could try this. You can switch things up for environmental damage and whatnot as well.
Code:
$myvar = 0;
sub EVENT_ATTACK {
if($myvar==0) {
quest::say("$name, do not attack me. You have earned this punishment!");
##client is damaged. Format is: from/amount/spellid/skill
#So, from the npc, 1000dmg, no spell is used, and 1 is for the skill id.
$client->Damage($npc, 1000, SPELL_UNKNOWN, 1);
$myvar=1;
}
}
I recommend using a timer or something to resetting variable though. Either could use combat_event or a timer when he engages. With a timer a:
Code:
$myvar = undef;
sub EVENT_ATTACK {
##client is damaged. Format is: from/amount/spellid/skill
#So, from the npc, 1000dmg, no spell is used, and 1 is for the skill id
if(!$myvar) {
quest::say("$name, do not attack me. You have earned this punishment!");
$client->Damage($npc, 1000, SPELL_UNKNOWN, 1);
$myvar = 1;
quest::settimer("checkengaged",1);
}
}
sub EVENT_TIMER {
if ($timer eq "checkengaged") {
if (!$npc->IsEngaged();
$myvar = undef;
quest::stoptimer("checkengaged");
}
}
Honestly, combat status toggle is probably better. However, I just was using this method before it was implemented.