So, it's about time for the GeN1us of cutscenes to make his move once again

You'll need to make two different creaures, one is to be a member of the first group of NPCs, another - of the second. The only difference between them is their death variables.
IF ~Trigger()~ THEN BEGIN PC_decides_what_to_do
SAY ~Choose your side <CHARNAME>~
IF ~~ THEN REPLY ~I choose the option 1, to fight 4 evil guys.~ DO ~SetGlobal("select_option","GLOBAL",1)~ EXIT
IF ~~ THEN REPLY ~I choose the option 2, to watch goods and evils fighting.~ DO ~SetGlobal("select_option","GLOBAL",2)~ EXIT
IF ~~ THEN REPLY ~I choose the option 3, to help goods to defeat evils.~ DO ~SetGlobal("select_option","GLOBAL",3)~ EXIT
IF ~~ THEN REPLY ~I choose the option 4, to fight all of you.~ DO ~SetGlobal("select_option","GLOBAL",4)~ EXIT
END
//This should be assigned to evil NPCs
IF // turning red, to simplify the matter for PCs
OR(3)
Global("select_option","GLOBAL",1) // only we're against PC, goods just stand and watch
Global("select_option","GLOBAL",3) // against PC and goods
Global("select_option","GLOBAL",4) // every one against PC
!Allegiance(Myself,ENEMY)
THEN
RESPONSE #100
Enemy()
END
IF
OR(2)
Global("select_option","GLOBAL",1) // against PC
Global("select_option","GLOBAL",4) // against PC, and we're accompanied by goods
See([PC])
THEN
RESPONSE #100
AttackReevaluate(LastSeenBy(Myself),6)
END
IF
Global("select_option","GLOBAL",2)
See("GoodGuy") // GoodGuy - death variable of every member of the 1st group
THEN
RESPONSE #100
AttackReevaluate(LastSeenBy(Myself),6)
END
IF
Global("select_option","GLOBAL",3)
OR(2)
See([PC])
See("GoodGuy")
THEN
RESPONSE #100
AttackReevaluate(LastSeenBy(Myself),6)
END
//This should be assigned to good NPCs
IF
OR(2)
Global("select_option","GLOBAL",2) // fighting evils according to 2nd scenario
Global("select_option","GLOBAL",3) // fighting evils according to 3rd scenario, PC is supposed to assist here
See("EvilGuy") // EvilGuy - death variable of every member of the 2nd group
THEN
RESPONSE #100
AttackReevaluate(LastSeenBy(Myself),6)
END
IF // turning red, to simplify the matter for PCs
Global("select_option","GLOBAL",4)
!Allegiance(Myself,ENEMY)
THEN
RESPONSE #100
Enemy()
END
IF
Global("select_option","GLOBAL",4)
See([PC])
THEN
RESPONSE #100
AttackReevaluate(LastSeenBy(Myself),6)
END
PS The reason for AttackReevaluate(...,6) is that the attacker won't lock onto a single enemy (it's rather annoying to have a fighter chasing your mage not matter what, not to mention it looking stupid). You may want to alter the names of variables, death or not, otherwise just copypaste scripts and hopefully they'll work as expected.
Edited by GeN1e, 08 December 2008 - 04:23 PM.