ON INITEND {
 SET §note_shown 0
 BEHAVIOR FRIENDLY
 SETTARGET PLAYER
 SET_CONTROLLED_ZONE NO_ENTER
 INVENTORY ADD "PROVISIONS\\BREAD_HALF\\BREAD_HALF"
ACCEPT
}
ON PLAYER_ENEMY {
 SENDEVENT CUSTOM GOBLIN_BASE_0041 "TROLL_ENEMY"
 ACCEPT
}
ON ATTACK_PLAYER {
 SENDEVENT CUSTOM GOBLIN_BASE_0041 "TROLL_ENEMY"
 ACCEPT
}

ON CONTROLLEDZONE_ENTER {
 IF (^$PARAM1 != PLAYER) ACCEPT
 SENDEVENT ATTACK_PLAYER SELF ""
 ACCEPT
} 
ON CHAT {
 IF (§enemy == 1) ACCEPT
 IF (^SPEAKING == 1) ACCEPT
 IF (§chatpos == 0) {
  SPEAK [Troll_nopass] SET §chatpos 1
  ACCEPT
 }
 IF (§chatpos == 1) {
  GOSUB START_CHAT
  SPEAK [Troll_grunt] GOSUB END_CHAT
  ACCEPT
 }
 IF (§chatpos == 2) {
  IF (#TROLLHERO == 1) {
   GOSUB START_CHAT
   SPEAK [troll_greetings_friend] GOSUB END_CHAT 
   ACCEPT
  }
  GOSUB START_CHAT
  SPEAK [troll_greetings] GOSUB END_CHAT 
  ACCEPT
 }
 ACCEPT
}

ON COMBINE {
 IF (§enemy == 1) ACCEPT
 IF (§troll_enemy == 1) ACCEPT
 IF (^SPEAKING == 1) {
  SPEAK -p [player_not_now] NOP
  ACCEPT
 }
 IF (^$PARAM1 ISCLASS "TROLL_IDOL") GOTO FAKE2
 IF (^$PARAM1 == "NOTE_0015" ) GOTO FAKE
 IF (^$PARAM1 == "NOTE_0020" ) {
  >>FAKE
  IF (§note_shown == 1) ACCEPT
  UNSET_CONTROLLED_ZONE NO_ENTER
  SET §note_shown 1
  SET §reflection_mode 0
  CINEMASCOPE -s ON
  SET #SHUT_UP 1
  PLAYERINTERFACE -s HIDE
  SETPLAYERCONTROLS OFF
  PLAYERLOOKAT ME
  SPEAK -p [player_show_note_troll] SPEAK [troll_yougo] GOTO ENDC
  ACCEPT
 }
 ACCEPT
}
  >>FAKE2
  IF (§note_shown == 1) ACCEPT
  UNSET_CONTROLLED_ZONE NO_ENTER
  SET §note_shown 1
  SET §reflection_mode 0
  CINEMASCOPE -s ON
  SET #SHUT_UP 1
  PLAYERINTERFACE -s HIDE
  SETPLAYERCONTROLS OFF
  PLAYERLOOKAT ME
  SPEAK [troll_yougo] GOTO ENDC
  ACCEPT

ON REACHEDTARGET {
 IF (^TARGET == "NONE") ACCEPT
 IF (^TARGET == Marker_0079) {
  BEHAVIOR WANDER_AROUND 400
  SETTARGET NONE
  ACCEPT
 }
 ACCEPT
}
ON CUSTOM {
 IF (^$PARAM1 == "Teleport") {
  BEHAVIOR FRIENDLY
  SETTARGET NONE
  TELEPORT Marker_0262
  FORCEANGLE 140
  TIMERlook 1 1 SETTARGET MARKER_0765
  SPELLCAST -SMF 1 IGNIT MARKER_0765 
  SENDEVENT CUSTOM MARKER_0765 "FIRE" 
  ACCEPT
 }
 ACCEPT
}

>>ENDC
SET #SHUT_UP 0
SET §chatpos 2 
BEHAVIOR MOVE_TO
SETTARGET MARKER_0079
SET §reflection_mode 1
CINEMASCOPE -s OFF
PLAYERINTERFACE -s SHOW
SETPLAYERCONTROLS ON
ACCEPT

//#behavior

// ---------------------------------------------------------------------------------
// BEHAVIOR INCLUDE START ----------------------------------------------------------
// ---------------------------------------------------------------------------------
>>CLEAR_MICE_TARGET
 // if we care about mice : clear current mice target and listen to other mice
 IF ( §care_about_mice == 1 )
 {
  SET £targeted_mice "NOMOUSE"
  SETGROUP MICECARE // listen to other mice
 }
RETURN

>>SAVE_BEHAVIOR
 TIMERcolplayer OFF 
// to avoid TIMERcolplayer to restore the behavior 1 sec later
 IF (§main_behavior_stacked == 0) 
 {
  IF (§frozen == 1)
  { 
// frozen anim -> wake up !
    SET §frozen 0
    PLAYANIM NONE
    PLAYANIM -2 NONE
    PHYSICAL ON
    COLLISION ON
    BEHAVIOR FRIENDLY
    SETTARGET PLAYER
  }
  SET §main_behavior_stacked 1
  HEROSAY -d "STACK"
  BEHAVIOR STACK
 }
 ELSE
 { // behavior already saved : clear mice target if one
  GOSUB CLEAR_MICE_TARGET
 }
RETURN

>>RESTORE_BEHAVIOR
 IF (§main_behavior_stacked == 1) 
 {
  GOSUB CLEAR_MICE_TARGET
  HEROSAY -d "UNSTACK"
  BEHAVIOR UNSTACK
  SET §main_behavior_stacked 0
  RETURN
 }
IF (£init_marker != "NONE")
  { 
   BEHAVIOR MOVE_TO
   SETTARGET -a ~£init_marker~
   SETMOVEMODE WALK
   RETURN
  }
HEROSAY -d "go_home"
BEHAVIOR GO_HOME
SETTARGET PLAYER
RETURN

// ---------------------------------------------------------------------------------
// BEHAVIOR INCLUDE END ------------------------------------------------------------
// ---------------------------------------------------------------------------------

//#
//#LocalChat
// ---------------------------------------------------------------------------------
// LocalChat INCLUDE START ---------------------------------------------------------
// ---------------------------------------------------------------------------------
>>START_CHAT
 // save misc reflection mode
 SET §saved_reflection §reflection_mode
 // no more stupid reflections !
 SET §reflection_mode 0
 // fo not change behavior if frozen
 IF ( §frozen == 1 ) RETURN
 // save behavior (if not saved)
 GOSUB SAVE_BEHAVIOR
 // look at player
 BEHAVIOR FRIENDLY
 SETTARGET PLAYER
RETURN

>>END_CHAT
 SET_EVENT COLLIDE_NPC ON
 SET §collided_player 0
 // restor behavior only if not in fighting mode
 IF ( §fighting_mode == 0 )
 {
  // restore misc reflection mode
  SET §reflection_mode §saved_reflection
  // if frozen : don't restore behavior
  IF ( §frozen == 1 ) RETURN
  // restore behavior
  GOSUB RESTORE_BEHAVIOR
 }
RETURN
// ---------------------------------------------------------------------------------
// LocalChat INCLUDE END -----------------------------------------------------------
// ---------------------------------------------------------------------------------

//#