
import * as modlib from 'modlib';

function OnSpawnerSpawned_New_Rule_Action(eventInfo: any) {
  let myTeam: number = eventInfo.eventPlayer.getTeamId();

  console.log(myTeam);
  mod.DisplayCustomNotificationMessage(mod.Message("bot is on {} team", myTeam), mod.CustomNotificationSlots.HeaderText,2)
  switch(myTeam){
    case 112:
    //do stuff
    break;
    case 113:
    //do stuff
    break;
    default:
    break;
  }


 mod.AISetMoveSpeed(mod.EventPlayer(),mod.MoveSpeed.InvestigateRun)
 while (mod.And(
mod.GetSoldierState(mod.EventPlayer(),mod.SoldierStateBool.IsAISoldier),
mod.GetSoldierState(mod.EventPlayer(),mod.SoldierStateBool.IsAlive))) {
  await mod.Wait(3)
  mod.AIMoveToBehavior(mod.EventPlayer(),mod.GetObjectPosition(mod.GetSpatialObject(301)))
  await mod.Wait(3)
  mod.AIMoveToBehavior(mod.EventPlayer(),mod.GetObjectPosition(mod.GetSpatialObject(303)))
 }
}
function OnSpawnerSpawned_New_Rule(conditionState: any, eventInfo: any) {
let newState = true;
if (!conditionState.update(newState)) {
 return;
}
OnSpawnerSpawned_New_Rule_Action(eventInfo);
}

function OnGameModeStarted_New_Rule_Action() {
 await mod.Wait(5)
 mod.SpawnAIFromAISpawner(mod.GetSpawner(112),mod.GetTeam(2))
}
function OnGameModeStarted_New_Rule(conditionState: any) {
let newState = true;
if (!conditionState.update(newState)) {
 return;
}
OnGameModeStarted_New_Rule_Action();
}

function OnPlayerDeployed_New_Rule_Condition(eventInfo: any): boolean {
  const newState = mod.Not(mod.GetSoldierState(mod.EventPlayer(),mod.SoldierStateBool.IsAISoldier));
 return newState;
}

function OnPlayerDeployed_New_Rule_Action(eventInfo: any) {
 mod.SetTeam(mod.EventPlayer(),mod.GetTeam(1))
}
function OnPlayerDeployed_New_Rule(conditionState: any, eventInfo: any) {
let newState = OnPlayerDeployed_New_Rule_Condition(eventInfo);
if (!conditionState.update(newState)) {
 return;
}
OnPlayerDeployed_New_Rule_Action(eventInfo);
}

function OnPlayerDied_New_Rule_Condition(eventInfo: any): boolean {
  const newState = mod.GetSoldierState(mod.EventPlayer(),mod.SoldierStateBool.IsAISoldier);
 return newState;
}

function OnPlayerDied_New_Rule_Action(eventInfo: any) {
 if (mod.GetSoldierState(mod.EventPlayer(),mod.SoldierStateBool.IsAISoldier)) {
  await mod.Wait(5)
  mod.SpawnAIFromAISpawner(mod.GetSpawner(112),mod.GetTeam(2))
 }
}
function OnPlayerDied_New_Rule(conditionState: any, eventInfo: any) {
let newState = OnPlayerDied_New_Rule_Condition(eventInfo);
if (!conditionState.update(newState)) {
 return;
}
OnPlayerDied_New_Rule_Action(eventInfo);
}

// global vars

// player vars

// team vars

// capture point vars

// mcom vars

// vehicle vars

export function OnSpawnerSpawned(eventPlayer: mod.Player, eventSpawner: mod.Spawner) {
const eventInfo = {eventPlayer, eventSpawner};
let eventNum = 0;
  OnSpawnerSpawned_New_Rule(modlib.getPlayerCondition(eventPlayer, eventNum++), eventInfo);
}

export function OnGameModeStarted() {
const eventInfo = {};
let eventNum = 0;
  OnGameModeStarted_New_Rule(modlib.getGlobalCondition(eventNum++));
}

export function OnPlayerDeployed(eventPlayer: mod.Player) {
const eventInfo = {eventPlayer};
let eventNum = 1;
  OnPlayerDeployed_New_Rule(modlib.getPlayerCondition(eventPlayer, eventNum++), eventInfo);
}

export function OnPlayerDied(eventPlayer: mod.Player, eventOtherPlayer: mod.Player, eventDeathType: mod.DeathType, eventWeaponUnlock: mod.WeaponUnlock) {
const eventInfo = {eventPlayer, eventOtherPlayer, eventDeathType, eventWeaponUnlock};
let eventNum = 2;
  OnPlayerDied_New_Rule(modlib.getPlayerCondition(eventPlayer, eventNum++), eventInfo);
}


// Strings content - add the following to your strings file: 

{
  "s0": "MoveSpeed",
  "s1": "InvestigateRun",
  "s2": "SoldierStateBool",
  "s3": "IsAISoldier",
  "s4": "IsAlive"
}