IF
  Die()
THEN
  RESPONSE #100
    Shout(66)
END

IF
  Global("BPCHARM","LOCALS",1)
  !StateCheck(Myself,STATE_CHARMED)
THEN
  RESPONSE #100
    SetGlobal("BPCHARM","LOCALS",0)
    ClearActions(Myself)
    Continue()
END

IF
  OR(2)
    Heard([NEUTRAL],79)
    Heard([EVILCUTOFF],79)
  Allegiance(Myself,NEUTRAL)
  !Global("BP_PlotMan","LOCALS",1)
THEN
  RESPONSE #100
    Enemy()
END

IF
  Global("BPCHARM","LOCALS",1)
  !StateCheck(Myself,STATE_CHARMED)
THEN
  RESPONSE #100
    SetGlobal("BPCHARM","LOCALS",0)
    ClearActions(Myself)
    Continue()
END

IF
  !Allegiance(Myself,ENEMY)
  !Allegiance(Myself,PC)
  OR(2)
    AttackedBy([GOODCUTOFF],DEFAULT)
    Allegiance(LastAttackerOf(Myself),GOODCUTOFF)
THEN
  RESPONSE #100
    Enemy()
    Shout(151)
END

IF
  !Allegiance(Myself,ENEMY)
  !Allegiance(Myself,GOODCUTOFF)
  OR(2)
    HitBy([GOODCUTOFF],CRUSHING)
    Allegiance(LastHitter(Myself),GOODCUTOFF)
THEN
  RESPONSE #100
    Shout(151)
    Enemy()
END

//////////////CLOUDLIKE  EFFECTS//////////////////////

IF
  CheckStat(Myself,11,180) // I'm in a stinking cloud
  CheckStatGT(Myself,5,INT)
  !StateCheck(Myself,STATE_SLEEPING) // not yet affected
  CheckStatGT(Myself,4,SAVEVSSPELL) //and I got a reasonable chance of failing a save throw (25%+)
  OR(2)
    Detect(NearestEnemyOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
    Detect(NearestMyGroupOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
  Range(LastSeenBy(Myself),16)
THEN
  RESPONSE #100
    SetInterrupt(FALSE)
    RunAwayFrom(LastSeenBy(Myself),30)
    SetInterrupt(TRUE)
END

IF
  CheckStatGT(Myself,11,180) // I'm in a web,entangle, or grease spell
  CheckStatLT(Myself,15,180)
  CheckStatGT(Myself,5,INT)
  CheckStatLT(Myself,1,131) // I don't have free action
  CheckStatLT(Myself,1,WEB) //and not webbed up
  CheckStatLT(Myself,1,ENTANGLE) //nor entangled --I can move
  CheckStatGT(Myself,4,SAVEVSSPELL) //and I got a reasonable chance of failing a save throw (25%+)
  OR(3)
    Detect([0.0.MORNINGSTAR.FAIRY_NYMPH.65])
    Detect(NearestEnemyOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
    Detect(NearestMyGroupOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
  Range(LastSeenBy(Myself),16)
THEN
  RESPONSE #100
    SetInterrupt(FALSE)
    RunAwayFrom(LastSeenBy(Myself),30)
    SetInterrupt(TRUE)
END

IF
  CheckStat(Myself,15,180) // I'm in an Ice Storm
  CheckStatGT(Myself,5,INT)
  CheckStatLT(Myself,100,RESISTCOLD) // Not Immune
  OR(3)
    Detect([0.0.MORNINGSTAR.FAIRY_NYMPH.65])
    Detect(NearestEnemyOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
    Detect(NearestMyGroupOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
  Range(LastSeenBy(Myself),16)
THEN
  RESPONSE #100
    SetInterrupt(FALSE)
    RunAwayFrom(LastSeenBy(Myself),30)
    SetInterrupt(TRUE)
END

IF
  CheckStat(Myself,16,180) // I'm in a Cloudkill or Death Fog
  CheckStatGT(Myself,5,INT)
  CheckStatLT(Myself,100,RESISTPOISON) // Not Immune
  OR(3)
    Detect([0.0.MORNINGSTAR.FAIRY_NYMPH.65])
    Detect(NearestEnemyOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
    Detect(NearestMyGroupOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
  Range(LastSeenBy(Myself),16)
THEN
  RESPONSE #100
    SetInterrupt(FALSE)
    RunAwayFrom(LastSeenBy(Myself),30)
    SetInterrupt(TRUE)
END

IF
  CheckStat(Myself,17,180) // I'm in a Death Fog
  CheckStatGT(Myself,5,INT)
  CheckStatLT(Myself,100,RESISTACID) // Not Immune
  OR(3)
    Detect([0.0.MORNINGSTAR.FAIRY_NYMPH.65])
    Detect(NearestEnemyOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
    Detect(NearestMyGroupOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
  Range(LastSeenBy(Myself),16)
THEN
  RESPONSE #100
    SetInterrupt(FALSE)
    RunAwayFrom(LastSeenBy(Myself),30)
    SetInterrupt(TRUE)
END

IF
  CheckStat(Myself,18,180) // Incendiary Cloud, Meteor Swarm or Fire Storm -- bad stuff
  CheckStatGT(Myself,5,INT)
  CheckStatLT(Myself,100,RESISTFIRE) // Not Immune
  OR(3)
    Detect([0.0.MORNINGSTAR.FAIRY_NYMPH.65])
    Detect(NearestEnemyOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
    Detect(NearestMyGroupOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
  Range(LastSeenBy(Myself),16)
THEN
  RESPONSE #100
    SetInterrupt(FALSE)
    RunAwayFrom(LastSeenBy(Myself),30)
    SetInterrupt(TRUE)
END

// This is to try and keep them from going back in to whomp somebody
IF
  CheckStatLT(Myself,11,180) // No longer in the cloud effects
  CheckStatGT(Myself,5,INT)
  OR(3)
    Detect([0.0.MORNINGSTAR.FAIRY_NYMPH.65])
    Detect(NearestEnemyOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
    Detect(NearestMyGroupOfType([0.0.MORNINGSTAR.FAIRY_NYMPH.65]))
  !Range(LastSeenBy(Myself),16)
  Exists([EVILCUTOFF])
  !Range(NearestEnemyOf(Myself),2)
THEN
  RESPONSE #100
    EquipRanged()  //use your bow, then
    SmallWait(3)
    Continue()
END

//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////


IF
  OR(2)
    !Allegiance(Myself,EVILCUTOFF)
    !Detect([GOODCUTOFF])
THEN
  RESPONSE #100
END

IF
  TargetUnreachable(LastSeenBy(Myself))
  Delay(3)
THEN
  RESPONSE #100
    ClearActions(Myself)
    Continue()
END

IF
  Range(NearestEnemyOf(Myself),2)
  OR(2)
    CheckStatGT(NearestEnemyOf(Myself),0,121)
    CheckStatGT(NearestEnemyOf(Myself),0,125)
THEN
  RESPONSE #80
    RunAwayFrom(NearestEnemyOf(Myself),4)
  RESPONSE #20
    Continue()
END

IF
  CheckStat(Myself,1,127)
  See([EVILCUTOFF.0.0.0.0.ILLUSIONARY])
  Range(LastSeenBy(Myself),2)
THEN
  RESPONSE #100
    ChangeSpecifics(LastSeenBy(Myself),NEEDS_BREACH)
    ChangeGender(LastSeenBy(Myself),EXTRA2)
    ActionOverride(LastSeenBy(Myself),ChangeAIScript("BPMISLED",OVERRIDE))
    SpellNoDecRES("SPMISLED",Myself)
    RunAwayFrom(LastSeenBy(Myself),20)
END

IF
  HasItem("potn55",Myself)  // ~Potion of Superior Healing~
  !GlobalTimerNotExpired("POT","LOCALS")
  HPPercentLT(Myself,60)
THEN
  RESPONSE #100
    SetGlobalTimer("POT","LOCALS",ONE_ROUND)
    UseItem("potn55",Myself)  // ~Potion of Superior Healing~
    DisplayStringHead(Myself,46150)  // ~quaffs a potion~
END

IF
  HasItem("potn52",Myself)  // ~Potion of Extra Healing~
  !GlobalTimerNotExpired("POT","LOCALS")
  HPPercentLT(Myself,70)
THEN
  RESPONSE #100
    SetGlobalTimer("POT","LOCALS",ONE_ROUND)
    UseItem("potn52",Myself)  // ~Potion of Extra Healing~
    DisplayStringHead(Myself,46150)  // ~quaffs a potion~
END

IF
  HasItem("SCRL56",Myself)  // ~Cure Serious Wounds~
  HPPercentLT(Myself,65)
  !GlobalTimerNotExpired("BPT","LOCALS")
  CheckStatGT(Myself,11,WIS)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("SCRL56",Myself)  // ~Cure Serious Wounds~
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
END

IF
  HasItem("POTN08",Myself)  // ~Potion of Healing~
  !GlobalTimerNotExpired("POT","LOCALS")
  HPPercentLT(Myself,85)
  RandomNumLT(201,80)
THEN
  RESPONSE #100
    SetGlobalTimer("POT","LOCALS",ONE_ROUND)
    UseItem("POTN08",Myself)  // ~Potion of Healing~
    DisplayStringHead(Myself,46150)  // ~quaffs a potion~
END

IF
  ActionListEmpty()
  HPPercentLT(Myself,35)
  CheckStatGT(Myself,7,INT)
  OR(2)
    General(Myself,HUMANOID)
    General(Myself,GIANTHUMANOID)
  !HasItem("POTN55",Myself)
  !HasItem("POTN52",Myself)
  !GlobalTimerNotExpired("BPW","LOCALS")
  Range([EVILCUTOFF],15)
THEN
  RESPONSE #80
    SetGlobalTimer("BPW","LOCALS",ONE_ROUND)
    Shout(123)
    DisplayStringHead(Myself,72808)
  RESPONSE #20
    Continue()
END

IF
  ActionListEmpty()
  HPPercentLT(Myself,35)
  CheckStatGT(Myself,7,INT)
  !General(Myself,HUMANOID)
  !General(Myself,GIANTHUMANOID)
  !HasItem("POTN55",Myself)
  !HasItem("POTN52",Myself)
  !GlobalTimerNotExpired("BPW","LOCALS")
  Range([EVILCUTOFF],15)
THEN
  RESPONSE #80
    SetGlobalTimer("BPW","LOCALS",ONE_ROUND)
    Shout(123)
    DisplayStringHead(Myself,@0)
  RESPONSE #20
    Continue()
END

IF
  StateCheck(Myself,STATE_POISONED)
  HasItem("potn17",Myself)  // ~Elixir of Health~
  !GlobalTimerNotExpired("POT","LOCALS")
THEN
  RESPONSE #100
    SetGlobalTimer("POT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46150)  // ~quaffs a potion~
    UseItem("potn17",Myself)  // ~Elixir of Health~
END

IF
  StateCheck(Myself,STATE_POISONED)
  HasItem("potn20",Myself)  // ~Antidote~
  !GlobalTimerNotExpired("POT","LOCALS")
THEN
  RESPONSE #100
    SetGlobalTimer("POT","LOCALS",ONE_ROUND)
    UseItem("potn20",Myself)  // ~Antidote~
    DisplayStringHead(Myself,46150)  // ~quaffs a potion~
END

IF
  ActionListEmpty()
  StateCheck(Myself,STATE_POISONED)
  CheckStatGT(Myself,7,INT)
  OR(2)
    General(Myself,HUMANOID)
    General(Myself,GIANTHUMANOID)
  Range([EVILCUTOFF],15)
  !GlobalTimerNotExpired("POIS","LOCALS")
  !HasItem("POTN17",Myself)
  !HasItem("POTN20",Myself)
THEN
  RESPONSE #100
    Shout(83)
    SetGlobalTimer("POIS","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,@1)
END

IF
  ActionListEmpty()
  StateCheck(Myself,STATE_POISONED)
  CheckStatGT(Myself,7,INT)
  !General(Myself,HUMANOID)
  !General(Myself,GIANTHUMANOID)
  Range([EVILCUTOFF],15)
  !GlobalTimerNotExpired("POIS","LOCALS")
  !HasItem("POTN17",Myself)
  !HasItem("POTN20",Myself)
THEN
  RESPONSE #100
    Shout(83)
    SetGlobalTimer("POIS","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,@2)
END

IF
  ActionListEmpty()
  HasItem("SCRL7M",Myself)  // ~True Sight~
  !GlobalTimerNotExpired("BPT","LOCALS")
  CheckStatGT(Myself,11,INT)
  Detect(NearestEnemyOf(Myself))
  CheckStatLT(Myself,1,118)
  !StateCheck(NearestEnemyOf(Myself),STATE_NONDETECTION)
  OR(8)
    !See(NearestEnemyOf(Myself))
    SpellCast(NearestEnemyOfType([GOODCUTOFF]),WIZARD_PROJECT_IMAGE)
    SpellCast(NearestEnemyOfType([GOODCUTOFF]),WIZARD_MISLEAD)
    SpellCast(NearestEnemyOfType([GOODCUTOFF]),WIZARD_MIRROR_IMAGE)
    SpellCast(NearestEnemyOfType([GOODCUTOFF]),WIZARD_IMPROVED_INVISIBILITY)
    SpellCast(NearestEnemyOfType([GOODCUTOFF]),WIZARD_INVISIBILITY)
    StateCheck(NearestEnemyOfType([GOODCUTOFF]),0x60400010)
    NumCreatureGT([EVILCUTOFF.0.0.0.0.ILLUSIONARY],0)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("SCRL7M",Myself)  // ~True Sight~
END

IF
  ActionListEmpty()
  HasItem("SCRL7K",Myself)  // ~Mislead~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(100,34)
  CheckStatGT(Myself,11,INT)
  AttackedBy([ANYTHING],DEFAULT)
  HPPercentLT(Myself,60)
  CheckStat(Myself,0,127)
  !StateCheck(Myself,STATE_IMPROVEDINVISIBILITY)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("SCRL7K",Myself)  // ~Mislead~
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
END

IF
  ActionListEmpty()
  HasItem("SCRL8D",Myself)  // ~Spell Turning~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(7,4)
  CheckStatGT(Myself,11,INT)
  OR(5)
    See([GOODCUTOFF.0.0.CLERIC_ALL])
    See([GOODCUTOFF.0.0.BARD_ALL])
    See([GOODCUTOFF.0.0.DRUID_ALL])
    See([GOODCUTOFF.0.0.LONG_BOW])
    See([GOODCUTOFF.0.0.SORCERER])
  CheckStat(Myself,0,129)
  CheckStat(Myself,0,164)
  CheckStat(Myself,0,116)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL8D",Myself)  // ~Spell Turning~
END

IF
  ActionListEmpty()
  HasItem("ring05",Myself)  // ~Ring of Invisibility ~
  !GlobalTimerNotExpired("BPT","LOCALS")
  Global("BPRING05","LOCALS",0)
  RandomNumLT(40,14)
  !StateCheck(Myself,0x60400010)
  CheckStatLT(NearestEnemyOf,1,SEEINVISIBLE)
  CheckStatLT(SecondNearestEnemyOf,1,SEEINVISIBLE)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    SetGlobal("BPRING05","LOCALS",1)
    UseItem("ring05",Myself)  // ~Ring of Invisibility ~
    DisplayStringHead(Myself,47318)  // ~uses a ring of invisibility~
END

IF
  ActionListEmpty()
  HasItem("potn10",Myself)  // ~Potion of Invisibility~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(41,14)
  !StateCheck(Myself,0x60400010)
  CheckStatLT(NearestEnemyOf,1,SEEINVISIBLE)
  CheckStatLT(SecondNearestEnemyOf,1,SEEINVISIBLE)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("potn10",Myself)  // ~Potion of Invisibility~
    DisplayStringHead(Myself,46150)  // ~quaffs a potion~
END

IF
  ActionListEmpty()
  HasItem("scrl7q",Myself)  // ~Improved Haste~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(42,15)
 !StateCheck(Myself,STATE_HASTED)
  CheckStat(Myself,0,IMPROVEDHASTE)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("scrl7q",Myself)  // ~Improved Haste~
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
END

IF
  ActionListEmpty()
  HasItem("SCRL1Z",Myself)  // ~Minor Globe of Invulnerability~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(14,4)
  CheckStatGT(Myself,11,INT)
  OR(5)
    Exists([GOODCUTOFF.0.0.CLERIC_ALL])
    Exists([GOODCUTOFF.0.0.BARD_ALL])
    Exists([GOODCUTOFF.0.0.DRUID_ALL])
    Exists([GOODCUTOFF.0.0.LONG_BOW])
    Exists([GOODCUTOFF.0.0.SORCERER])
  CheckStat(Myself,0,129)
  CheckStat(Myself,0,164)
  CheckStat(Myself,0,116)
  CheckStat(Myself,0,SHIELDGLOBE)
  CheckStat(Myself,0,MINORGLOBE)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("SCRL1Z",Myself)  // ~Minor Globe of Invulnerability~
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
END

IF
  ActionListEmpty()
  HasItem("POTN24",Myself)  // ~Potion of Defense~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(49,15)
  CheckStatGT(Myself,0,ARMORCLASS)
  OR(4)
    Exists([GOODCUTOFF.0.0.FIGHTER_ALL])
    Exists([GOODCUTOFF.0.0.PALADIN_ALL])
    Exists([GOODCUTOFF.0.0.RANGER_ALL])
    Exists([GOODCUTOFF.0.0.MONK])
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("POTN24",Myself)  // ~Potion of Defense~
    DisplayStringHead(Myself,46150)  // ~quaffs a potion~
END

IF
  ActionListEmpty()
  HasItem("SCRL1E",Myself)  // ~Dispel Magic~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(48,17)
  !CombatCounter(0)
  CheckStatGT(Myself,11,INT)
  CheckStat(Myself,0,121)
  CheckStat(Myself,0,122)
  CheckStat(Myself,0,118)
  CheckStat(Myself,0,131)
  OR(8)
    StateCheck([EVILCUTOFF],STATE_CONFUSED)
    StateCheck([EVILCUTOFF],STATE_SILENCED)
    StateCheck([EVILCUTOFF],STATE_HELPLESS)
    StateCheck([EVILCUTOFF],STATE_BLIND)
    StateCheck([EVILCUTOFF],STATE_STUNNED)
    StateCheck([EVILCUTOFF],STATE_SLOWED)
    StateCheck([EVILCUTOFF],STATE_SLEEPING)
    StateCheck([EVILCUTOFF],STATE_FEEBLEMINDED)
  OR(2)
    !Range([EVILCUTOFF],15)
    !HasImmunityEffects(Myself)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("SCRL1E",[EVILCUTOFF])  // ~Dispel Magic~
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
END

IF
  ActionListEmpty()
  HasItem("POTN29",Myself)  // ~Potion of Genius~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(53,10)
  OR(4)
    Class(Myself,BARD_ALL)
    Class(Myself,LONG_BOW)
    Class(Myself,SORCERER)
    CheckStatLT(Myself,8,INT)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("POTN29",Myself)  // ~Potion of Genius~
    DisplayStringHead(Myself,46150)  // ~quaffs a potion~
END

IF
  ActionListEmpty()
  HitBy([GOODCUTOFF],CRUSHING)
  CheckStatGT(Myself,7,INT)
  OR(2)
    General(Myself,HUMANOID)
    General(Myself,GIANTHUMANOID)
  !GlobalTimerNotExpired("RANG","LOCALS")
  !StateCheck(Myself,STATE_POISONED)
  OR(2)
    See(LastAttackerOf(Myself))
    See(LastHitter(Myself))
  !Range(LastSeenBy(Myself),5)
  !TargetUnreachable(LastSeenBy(Myself))
  !InWeaponRange(LastSeenBy(Myself))
  HPGT(LastSeenBy(Myself),0)
THEN
  RESPONSE #50
    SetGlobalTimer("RANG","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,@3)
  RESPONSE #50
    SetGlobalTimer("RANG","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,@4)
  RESPONSE #25
    SetGlobalTimer("RANG","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,@5)
  RESPONSE #25
    SetGlobalTimer("RANG","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,@6)
  RESPONSE #50
    SetGlobalTimer("RANG","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,@7)
    MoveToObject(LastSeenBy(Myself))
    AttackReevaluate(LastSeenBy(Myself),180)
END



IF
  OR(3)
    !Race(NearestEnemyOf(Myself),MORNINGSTAR)
    !Class(NearestEnemyOf(Myself),FAIRY_NYMPH)
    !Specifics(NearestEnemyOf(Myself),65)
  See(NearestEnemyOf(Myself))
  False()
THEN
  RESPONSE #100
    Continue()
END

IF
  RandomNumLT(28,22)
  OR(4)
    See([GOODCUTOFF.0.0.0.0.SUMMONED_DEMON])
    See([GOODCUTOFF.0.0.0.0.SUMMONED])
    See([GOODCUTOFF.0.0.0.SIMULACRUM])
    See([GOODCUTOFF.0.0.0.0.ILLUSIONARY])
  False()
THEN
  RESPONSE #100
    Continue()
END

IF
  RandomNumLT(31,26)
  OR(6)
    See(NearestEnemyOf(Myself))
    See(WeakestOf)
    See(WorstAC)
    See(MostDamagedOf)
    See(LastAttackerOf(Myself))
    See(LastHitter(Myself))
  False()
THEN
  RESPONSE #100
    Continue()
END

IF
  OR(3)
    Allegiance(LastSeenBy(Myself),ENEMY)
    Allegiance(LastSeenBy(Myself),EVILCUTOFF)
    Allegiance(LastSeenBy(Myself),GOODBUTRED)
THEN
  RESPONSE #100
END

IF
  StateCheck(LastSeenBy(Myself),STATE_CHARMED)
THEN
  RESPONSE #80
    Continue()
  RESPONSE #20
END



IF
  ActionListEmpty()
  StateCheck(Myself,0x00400010)
  Class(Myself,THIEF_ALL)
  HPPercentGT(Myself,25)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",12)
    EquipMostDamagingMelee()
    MoveToObject(LastSeenBy(Myself))
    FollowObjectFormation(LastSeenBy(Myself),1,3)
    SmallWait(5)
    AttackOneRound(LastSeenBy(Myself))
END

IF
  ActionListEmpty()
  CheckStatGT(Myself,0,SCRIPTINGSTATE4)
THEN
  RESPONSE #100
    EquipMostDamagingMelee()
    AttackOneRound(LastSeenBy(Myself))
END

IF
  ActionListEmpty()
  HaveSpell(MINSC_BERSERK)
  Range(LastSeenBy(Myself),20)
  !GlobalTimerNotExpired("BPT","LOCALS")
  CheckStat(Myself,0,SCRIPTINGSTATE4)
  HPPercentGT(Myself,70)
  RandomNumLT(83,52)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,@8)
    Spell(Myself,MINSC_BERSERK)
    EquipMostDamagingMelee()
END



IF
  OR(3)
    !Race(NearestEnemyOf(Myself),MORNINGSTAR)
    !Class(NearestEnemyOf(Myself),FAIRY_NYMPH)
    !Specifics(NearestEnemyOf(Myself),65)
  See(NearestEnemyOf(Myself))
  False()
THEN
  RESPONSE #100
    Continue()
END

IF
  RandomNumLT(29,23)
  OR(7)
    See([PC.0.0.RANGER_ALL])
    See([PC.0.0.PALADIN_ALL])
    See([PC.0.0.BARD_ALL])
    See([PC.0.0.DRUID_ALL])
    See([PC.0.0.CLERIC_ALL])
    See([PC.0.0.LONG_BOW])
    See([PC.0.0.SORCERER])
  RandomNumLT(30,16)
  See(Protagonist)
  RandomNumLT(26,10)
  OR(4)
    See([GOODCUTOFF.0.0.RANGER_ALL])
    See([GOODCUTOFF.0.0.DRUID_ALL])
    See([GOODCUTOFF.0.0.PALADIN_ALL])
    See([GOODCUTOFF.0.0.CLERIC_ALL])
  RandomNumLT(27,10)
  OR(3)
    See([GOODCUTOFF.0.0.MONK])
    See([GOODCUTOFF.0.0.BARD_ALL])
    See([GOODCUTOFF.0.0.THIEF_ALL])
  RandomNumLT(32,11)
  OR(2)
    See(TenthNearest([GOODCUTOFF.0.0.LONG_BOW]))
    See(TenthNearest([GOODCUTOFF.0.0.SORCERER]))
  RandomNumLT(20,8)
  See(TenthNearestEnemyOf(Myself))
  False()
THEN
  RESPONSE #100
    Continue()
END





IF
  ActionListEmpty()
  HasItem("SCRL8N",Myself)  // ~Delayed Blast Fireball~
  !GlobalTimerNotExpired("BPT","LOCALS")
  CheckStatGT(Myself,11,INT)
  OR(2)
    !Range(LastSeenBy(Myself),15)
    CheckStatGT(Myself,74,RESISTFIRE)
  OR(4)
    !Exists(NearestMyGroupOfType)
    Range(NearestMyGroupOfType,3)
    CheckStatGT(NearestMyGroupOfType,49,RESISTFIRE)
    CheckStatGT(NearestMyGroupOfType,49,RESISTMAGIC)
  OR(4)
    !Exists(SecondNearestMyGroupOfType)
    Range(SecondNearestMyGroupOfType,4)
    CheckStatGT(SecondNearestMyGroupOfType,49,RESISTFIRE)
    CheckStatGT(SecondNearestMyGroupOfType,49,RESISTMAGIC)
  OR(4)
    !Exists(ThirdNearestMyGroupOfType)
    Range(ThirdNearestMyGroupOfType,5)
    CheckStatGT(ThirdNearestMyGroupOfType,49,RESISTFIRE)
    CheckStatGT(ThirdNearestMyGroupOfType,49,RESISTMAGIC)
  !StateCheck(LastSeenBy(Myself),0x00400010)
  CheckStatLT(LastSeenBy(Myself),76,RESISTFIRE)
  CheckStatGT(LastSeenBy(Myself),5,SAVEVSSPELL)
  CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL8N",LastSeenBy(Myself))  // ~Delayed Blast Fireball~
END

IF
  ActionListEmpty()
  HasItem("SCRL8S",Myself)  // ~Summon Efreet~
  RandomNumLT(106,54)
  !GlobalTimerNotExpired("BPT","LOCALS")
  NumCreatureVsPartyLT([EVILCUTOFF.0.0.0.0.SUMMONED],7)
  CheckStatGT(Myself,11,INT)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL8S",LastSeenBy(Myself))  // ~Summon Efreet~
END

IF
  ActionListEmpty()
  HasItem("SCRL8B",Myself)  // ~Summon Nishru~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(107,78)
  CheckStatGT(Myself,11,INT)
  NumCreatureVsPartyLT([EVILCUTOFF.0.0.0.0.SUMMONED],7)
  OR(3)
    Class(LastSeenBy(Myself),BARD_ALL)
    Class(LastSeenBy(Myself),LONG_BOW)
    Class(LastSeenBy(Myself),SORCERER)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL8B",LastSeenBy(Myself))  // ~Summon Nishru~
END

IF
  ActionListEmpty()
  HasItem("SCRL7S",Myself)  // ~Chain Lightning~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(64,37)
  CheckStatGT(Myself,11,INT)
  CheckStat(LastSeenBy(Myself),0,129)
  CheckStatLT(LastSeenBy(Myself),76,RESISTELECTRICITY)
  CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL7S",LastSeenBy(Myself))  // ~Chain Lightning~
END

IF
  ActionListEmpty()
  HasItem("wand10",Myself)  // ~Wand of Monster Summoning~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(63,22)
  CheckStatGT(Myself,8,INT)
  NumCreatureVsPartyLT([EVILCUTOFF.0.0.0.0.SUMMONED],7)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,31971)  // ~uses a wand~
    UseItem("wand10",LastSeenBy(Myself))  // ~Wand of Monster Summoning~
END

IF
  ActionListEmpty()
  HasItem("SCRL7I",Myself)  // ~Death Spell~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(61,37)
  CheckStatGT(Myself,11,INT)
  CheckStat(LastSeenBy(Myself),0,129)
  CheckStatLT(LastSeenBy(Myself),10,LEVEL)
  HPLT(LastSeenBy(Myself),50)
  CheckStatGT(LastSeenBy(Myself),4,SAVEVSDEATH)
  NumCreatureLT([EVILCUTOFF.0.0.0.0.SUMMONED],1)
  CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL7I",Myself)  // ~Death Spell~
END

IF
  ActionListEmpty()
  HasItem("SCRL2F",Myself)  // ~Cone of Cold~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(47,29)
  CheckStatGT(Myself,11,INT)
  OR(2)
    LOS(LastSeenBy(Myself),12)
    Range(LastSeenBy(Myself),8)
  OR(5)
    !Exists(NearestMyGroupOfType)
    Range(NearestMyGroupOfType,2)
    !LOS(NearestMyGroupOfType,12)
    CheckStatGT(NearestMyGroupOfType,49,RESISTCOLD)
    CheckStatGT(NearestMyGroupOfType,49,RESISTMAGIC)
  OR(5)
    !Exists(SecondNearestMyGroupOfType)
    Range(SecondNearestMyGroupOfType,3)
    !LOS(SecondNearestMyGroupOfType,12)
    CheckStatGT(SecondNearestMyGroupOfType,49,RESISTCOLD)    
    CheckStatGT(SecondNearestMyGroupOfType,49,RESISTMAGIC)
  CheckStatLT(LastSeenBy(Myself),76,RESISTCOLD)
  CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL2F",LastSeenBy(Myself))  // ~Cone of Cold~
END

IF
  ActionListEmpty()
  HasItem("wand06",Myself)  // ~Wand of Frost~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(60,21)
  CheckStatGT(Myself,8,INT)
  OR(2)
    LOS(LastSeenBy(Myself),12)
    Range(LastSeenBy(Myself),8)
  OR(5)
    !Exists(NearestMyGroupOfType)
    Range(NearestMyGroupOfType,2)
    !LOS(NearestMyGroupOfType,12)
    CheckStatGT(NearestMyGroupOfType,49,RESISTCOLD)
    CheckStatGT(NearestMyGroupOfType,49,RESISTMAGIC)
  OR(5)
    !Exists(SecondNearestMyGroupOfType)
    Range(SecondNearestMyGroupOfType,3)
    !LOS(SecondNearestMyGroupOfType,12)
    CheckStatGT(SecondNearestMyGroupOfType,49,RESISTCOLD)    
    CheckStatGT(SecondNearestMyGroupOfType,49,RESISTMAGIC)
  CheckStatLT(LastSeenBy(Myself),76,RESISTCOLD)
  CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,31971)  // ~uses a wand~
    UseItem("wand06",LastSeenBy(Myself))  // ~Wand of Frost~
END

IF
  ActionListEmpty()
  HaveSpellRES("SPIMIX01")
  RandomNumLT(109,55)
  !GlobalTimerNotExpired("BPT","LOCALS")
  CheckStat(LastSeenBy(Myself),0,129)
  CheckStatLT(LastSeenBy(Myself),60,RESISTFIRE)
  CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC)
  !StateCheck(LastSeenBy(Myself),STATE_NOT_VISIBLE)
  CheckStatGT(LastSeenBy(Myself),5,SAVEVSSPELL)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    SpellRES("SPIMIX01",LastSeenBy(Myself))  // ~Flame Strike~
END

IF
  ActionListEmpty()
  HasItem("RING33",Myself)  // ~Ring of the Ram~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(66,24)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    UseItem("RING33",LastSeenBy(Myself))  // ~Ring of the Ram~
END

IF
  ActionListEmpty()
  HasItem("SCRL5N",Myself)  // ~Domination~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(73,35)
  CheckStatGT(Myself,11,INT)
  CheckStat(LastSeenBy(Myself),0,129)
  CheckStat(LastSeenBy(Myself),0,119)
  !StateCheck(LastSeenBy(Myself),STATE_CHARMED)
  OR(4)
    Class(LastSeenBy(Myself),FIGHTER_ALL)
    Class(LastSeenBy(Myself),RANGER_ALL)
    Class(LastSeenBy(Myself),PALADIN_ALL)
    HPGT(LastSeenBy(Myself),35)
  !General(LastSeenBy(Myself),UNDEAD)
  CheckStatGT(LastSeenBy(Myself),5,SAVEVSSPELL)
  CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL5N",LastSeenBy(Myself))  // ~Domination~
END

IF
  ActionListEmpty()
  HasItem("wand09",Myself)  // ~Wand of Polymorphing~
  !GlobalTimerNotExpired("BPT","LOCALS")
  CheckStatGT(Myself,8,INT)
  LevelLT(LastSeenBy(Myself),11)
  CheckStat(LastSeenBy(Myself),0,129)
  CheckStatGT(LastSeenBy(Myself),5,SAVEVSSPELL)
  RandomNumLT(61,21)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,31971)  // ~uses a wand~
    UseItem("wand09",LastSeenBy(Myself))  // ~Wand of Polymorphing~
END

IF
  ActionListEmpty()
  HasItem("SCRL72",Myself)  // ~Friends~
  RandomNumLT(105,53)
  NumCreatureVsPartyLT([EVILCUTOFF.0.0.0.0.SUMMONED],7)
  CheckStatGT(Myself,11,INT)
  !GlobalTimerNotExpired("BPT","LOCALS")
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL72",LastSeenBy(Myself))  // ~Friends~
END



IF
  RandomNumLT(24,9)
  OR(3)
    See(StrongestOf)
    See(BestAC)
    See(LeastDamagedOf)
  RandomNumLT(25,9)
  See(WeakestOf)
  RandomNumLT(23,8)
  See(WorstAC)
  RandomNumLT(21,8)
  See(MostDamagedOf)
  False()
THEN
  RESPONSE #100
    Continue()
END

IF
  RandomNumLT(32,25)
  OR(3)
    Heard(ThirdNearestMyGroupOfType([EVILCUTOFF]),124)
    Heard(SecondNearestMyGroupOfType([EVILCUTOFF]),124)
    Heard(NearestMyGroupOfType([EVILCUTOFF]),124)
  HPGT(LastHeardBy(Myself),1)
  Range(LastHeardBy(Myself),20)
  Exists(LastAttackerOf(LastHeardBy(Myself)))
  !Allegiance(LastAttackerOf(LastHeardBy(Myself)),EVILCUTOFF)
  !StateCheck(LastAttackerOf(LastHeardBy(Myself)),STATE_CHARMED)
  OR(3)
    !Race(LastAttackerOf(LastHeardBy(Myself)),MORNINGSTAR)
    !Class(LastAttackerOf(LastHeardBy(Myself)),FAIRY_NYMPH)
    !Specifics(LastAttackerOf(LastHeardBy(Myself)),65)
  OR(3)  
    !StateCheck(LastAttackerOf(LastHeardBy(Myself)),0x00400010)
    CheckStatGT(Myself,0,SEEINVISIBLE)
    CheckStatGT(Myself,0,118)
  See(LastAttackerOf(LastHeardBy(Myself)))
  False()
THEN
  RESPONSE #100
    Continue()
END

IF
  RandomNumLT(33,13)
  HitBy([0],0x0000)
  !Allegiance(LastHitter(Myself),EVILCUTOFF)
  !StateCheck(LastHitter(Myself),STATE_CHARMED)
  OR(3)
    !Race(LastHitter(Myself),MORNINGSTAR)
    !Class(LastHitter(Myself),FAIRY_NYMPH)
    !Specifics(LastHitter(Myself),65)
  OR(3)  
    !StateCheck(LastHitter(Myself),0x00400010)
    CheckStatGT(Myself,0,SEEINVISIBLE)
    CheckStatGT(Myself,0,118)
  See(LastHitter(Myself))
  False()
THEN
  RESPONSE #100
    Continue()
END

IF
  RandomNumGT(33,22)
  AttackedBy([0],DEFAULT)
  !Allegiance(LastAttackerOf(Myself),EVILCUTOFF)
  !StateCheck(LastAttackerOf(Myself),STATE_CHARMED)
  OR(3)
    !Race(LastAttackerOf(Myself),MORNINGSTAR)
    !Class(LastAttackerOf(Myself),FAIRY_NYMPH)
    !Specifics(LastAttackerOf(Myself),65)
  OR(3)  
    !StateCheck(LastAttackerOf(Myself),0x00400010)
    CheckStatGT(Myself,0,SEEINVISIBLE)
    CheckStatGT(Myself,0,118)
  See(LastAttackerOf(Myself))
  False()
THEN
  RESPONSE #100
    Continue()
END

IF
  OR(3)
    Allegiance(LastSeenBy(Myself),ENEMY)
    Allegiance(LastSeenBy(Myself),EVILCUTOFF)
    Allegiance(LastSeenBy(Myself),GOODBUTRED)
THEN
  RESPONSE #100
END


IF
  StateCheck(LastSeenBy(Myself),STATE_CHARMED)
THEN
  RESPONSE #80
    Continue()
  RESPONSE #20
END



IF
  ActionListEmpty()
  HasItem("SCRL1Q",Myself)  // ~Vampiric Touch~
  !GlobalTimerNotExpired("BPT","LOCALS")
  RandomNumLT(129,65)
  CheckStatGT(Myself,11,INT)
  Range(LastSeenBy(Myself),4)
  HPPercentLT(Myself,76)
THEN
  RESPONSE #100
    SetGlobalTimer("BPT","LOCALS",ONE_ROUND)
    DisplayStringHead(Myself,46153)  // ~uses a scroll~
    UseItem("SCRL1Q",LastSeenBy(Myself))  // ~Vampiric Touch~
END

IF
  ActionListEmpty()
  !GlobalTimerNotExpired("BPW","LOCALS")
  OR(2)
    General(Myself,GIANTHUMANOID)
    General(Myself,HUMANOID)
  CheckStatGT(Myself,7,INT)
  HPPercentLT(Myself,25)
  Range(LastHitter(Myself),10)
  OR(3)
    !Race(LastHitter(Myself),MORNINGSTAR)
    !Class(LastHitter(Myself),FAIRY_NYMPH)
    !Specifics(LastHitter(Myself),65)
THEN
  RESPONSE #30
    DisplayStringHead(Myself,49767)
    Shout(124)
    SetGlobalTimer("BPW","LOCALS",10)
    RunAwayFrom(LastHitter(Myself),40)
  RESPONSE #30
    DisplayStringHead(Myself,49765)
    Shout(124)
    SetGlobalTimer("BPW","LOCALS",10)
    AttackReevaluate(LastHitter(Myself),15)
  RESPONSE #40
    DisplayStringHead(Myself,49766)
    Shout(123)
    SetGlobalTimer("BPW","LOCALS",10)
    AttackReevaluate(LastSeenBy(Myself),15)
  RESPONSE #25
    DisplayStringHead(Myself,@9)
    SetGlobalTimer("BPW","LOCALS",10)
    Attack(LastHitter(Myself))
END

IF
  ActionListEmpty()
  !GlobalTimerNotExpired("BPW","LOCALS")
  !General(Myself,GIANTHUMANOID)
  !General(Myself,HUMANOID)
  CheckStatGT(Myself,7,INT)
  HPPercentLT(Myself,25)
  Range(LastHitter(Myself),10)
  OR(3)
    !Race(LastHitter(Myself),MORNINGSTAR)
    !Class(LastHitter(Myself),FAIRY_NYMPH)
    !Specifics(LastHitter(Myself),65)
THEN
  RESPONSE #30
    DisplayStringHead(Myself,@10)
    Shout(124)
    SetGlobalTimer("BPW","LOCALS",10)
    RunAwayFrom(LastHitter(Myself),40)
  RESPONSE #30
    DisplayStringHead(Myself,@11)
    Shout(124)
    SetGlobalTimer("BPW","LOCALS",10)
    AttackReevaluate(LastHitter(Myself),15)
  RESPONSE #25
    DisplayStringHead(Myself,@12)
    SetGlobalTimer("BPW","LOCALS",10)
    Attack(LastHitter(Myself))
END

IF
  ActionListEmpty()
  CheckStatGT(LastSeenBy(Myself),10,180)
  CheckStatLT(Myself,11,180)
THEN
  RESPONSE #100
    EquipRanged()
    AttackOneRound(LastSeenBy(Myself))
END

IF
  ActionListEmpty()
  OR(3)
    !Range(NearestEnemyOf(Myself),5)
    CheckStatGT(NearestEnemyOf(Myself),0,121)
    CheckStatGT(LastSeenBy(Myself),0,125)
THEN
  RESPONSE #100
    EquipRanged()
    AttackOneRound(LastSeenBy(Myself))
END

IF
  OR(2)
    CheckStatGT(NearestEnemyOf(Myself),0,121)
    CheckStatGT(LastSeenBy(Myself),0,125)
THEN
  RESPONSE #25
    Continue()
  RESPONSE #75
END

IF
  ActionListEmpty()
  !Range(LastSeenBy(Myself),8)
  OR(3)
    !Race(NearestEnemyOf(Myself),MORNINGSTAR)
    !Class(NearestEnemyOf(Myself),FAIRY_NYMPH)
    !Specifics(NearestEnemyOf(Myself),65)
THEN
  RESPONSE #90
    EquipMostDamagingMelee()
    AttackOneRound(NearestEnemyOf(Myself))
  RESPONSE #90
    EquipMostDamagingMelee()
    AttackOneRound(LastSeenBy(Myself))
    AttackOneRound(LastSeenBy(Myself))
END

IF
  ActionListEmpty()
THEN
  RESPONSE #100
    AttackOneRound(LastSeenBy(Myself))
END
