public void OnStartup() {
  if (Game.GetObjectsByName("SpawnPlayer").Length < 1) Game.CreateObject("SpawnPlayer", Vector2.Zero);
  IProfile[] Companions = {
    new IProfile() {
      Name = "Lyssa",
        Gender = Gender.Female,
        Skin = new IProfileClothingItem("Tattoos_fem", "Skin1", "ClothingLightGray"),
        ChestOver = new IProfileClothingItem("VestBlack_fem", "ClothingDarkOrange", "ClothingDarkPurple"),
        ChestUnder = new IProfileClothingItem("SweaterBlack_fem", "ClothingPurple"),
        Hands = new IProfileClothingItem("FingerlessGlovesBlack", "ClothingDarkGray"),
        Waist = new IProfileClothingItem("Belt_fem", "ClothingDarkPurple", "ClothingLightGray"),
        Legs = new IProfileClothingItem("TornPants_fem", "ClothingLightBlue"),
        Feet = new IProfileClothingItem("Boots", "ClothingDarkGray")
    },
    new IProfile() {
      Name = "Frankie",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Tattoos", "Skin3", "ClothingLightGreen"),
        ChestOver = new IProfileClothingItem("VestBlack", "ClothingBlue", "ClothingBlue"),
        ChestUnder = new IProfileClothingItem("SleevelessShirt", "ClothingLightGray"),
        Waist = new IProfileClothingItem("Belt", "ClothingDarkBlue", "ClothingLightYellow"),
        Legs = new IProfileClothingItem("Pants", "ClothingLightBlue"),
        Feet = new IProfileClothingItem("BootsBlack", "ClothingBlue")
    },
    new IProfile() {
      Name = "Hank",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin3", "ClothingLightGray"),
        Head = new IProfileClothingItem("PoliceHat", "ClothingDarkBlue"),
        ChestOver = new IProfileClothingItem("VestBlack", "ClothingBlue", "ClothingDarkBlue"),
        Hands = new IProfileClothingItem("GlovesBlack", "ClothingBlue"),
        Waist = new IProfileClothingItem("Belt", "ClothingDarkGray", "ClothingLightGray"),
        Legs = new IProfileClothingItem("PantsBlack", "ClothingDarkBlue"),
        Feet = new IProfileClothingItem("Shoes", "ClothingDarkBrown")
    },
    new IProfile() {
      Name = "Butch",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin1", "ClothingLightGray"),
        ChestUnder = new IProfileClothingItem("TShirt", "ClothingLightGray"),
        Waist = new IProfileClothingItem("Belt", "ClothingDarkGray", "ClothingLightGray"),
        Legs = new IProfileClothingItem("Pants", "ClothingLightBlue"),
        Feet = new IProfileClothingItem("ShoesBlack", "ClothingBrown")
    },
    new IProfile() {
      Name = "Li",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin3", "ClothingLightGreen"),
        ChestOver = new IProfileClothingItem("BlazerWithShirt", "ClothingGray", "ClothingLightGreen"),
        Hands = new IProfileClothingItem("GlovesBlack", "ClothingGreen"),
        Legs = new IProfileClothingItem("Pants", "ClothingGray"),
        Feet = new IProfileClothingItem("ShoesBlack", "ClothingBrown")
    },
    new IProfile() {
      Name = "Ciri",
        Gender = Gender.Female,
        Skin = new IProfileClothingItem("Normal_fem", "Skin5", "ClothingLightGray"),
        ChestUnder = new IProfileClothingItem("SweaterBlack_fem", "ClothingDarkBlue"),
        Hands = new IProfileClothingItem("GlovesBlack", "ClothingDarkBlue"),
        Waist = new IProfileClothingItem("Belt_fem", "ClothingBlue", "ClothingLightGray"),
        Legs = new IProfileClothingItem("PantsBlack_fem", "ClothingDarkBlue"),
        Feet = new IProfileClothingItem("ShoesBlack", "ClothingDarkBlue")
    },
    new IProfile() {
      Name = "Tyra",
        Gender = Gender.Female,
        Skin = new IProfileClothingItem("Tattoos_fem", "Skin2", "ClothingLightGray"),
        Head = new IProfileClothingItem("Helmet", "ClothingDarkYellow"),
        ChestOver = new IProfileClothingItem("MilitaryJacket_fem", "ClothingDarkYellow", "ClothingLightRed"),
        ChestUnder = new IProfileClothingItem("SweaterBlack_fem", "ClothingDarkOrange"),
        Waist = new IProfileClothingItem("AmmoBeltWaist_fem", "ClothingDarkPink"),
        Legs = new IProfileClothingItem("CamoPants_fem", "ClothingDarkYellow", "ClothingDarkYellow"),
        Feet = new IProfileClothingItem("BootsBlack", "ClothingLightOrange"),
        Accesory = new IProfileClothingItem("DominoMask", "", "ClothingLightGray")
    },
    new IProfile() {
      Name = "Boone",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin1", "ClothingLightGray"),
        ChestOver = new IProfileClothingItem("JacketBlack", "ClothingBlue", "ClothingBlue"),
        ChestUnder = new IProfileClothingItem("ShirtWithTie", "ClothingLightGray", "ClothingLightRed"),
        Waist = new IProfileClothingItem("Belt", "ClothingDarkPink", "ClothingLightGray"),
        Legs = new IProfileClothingItem("PantsBlack", "ClothingGray"),
        Feet = new IProfileClothingItem("ShoesBlack", "ClothingBrown")
    },
    new IProfile() {
      Name = "Kurt",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin4", "ClothingLightRed"),
        ChestUnder = new IProfileClothingItem("LeatherJacketBlack", "ClothingDarkCyan", "ClothingLightGray"),
        Hands = new IProfileClothingItem("SafetyGlovesBlack", "ClothingCyan"),
        Waist = new IProfileClothingItem("CombatBelt", "ClothingCyan"),
        Legs = new IProfileClothingItem("PantsBlack", "ClothingDarkCyan"),
        Feet = new IProfileClothingItem("BootsBlack", "ClothingDarkCyan"),
        Accesory = new IProfileClothingItem("Goggles", "ClothingDarkGray", "ClothingLightCyan")
    },
    new IProfile() {
      Name = "Rex",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin2", "ClothingLightRed"),
        ChestUnder = new IProfileClothingItem("UnbuttonedShirt", "ClothingDarkYellow"),
        Waist = new IProfileClothingItem("Belt", "ClothingBrown", "ClothingLightGray"),
        Legs = new IProfileClothingItem("PantsBlack", "ClothingDarkYellow"),
        Feet = new IProfileClothingItem("ShoesBlack", "ClothingDarkBrown"),
        Accesory = new IProfileClothingItem("Scarf", "ClothingLightRed")
    },
    new IProfile() {
      Name = "Salvatore",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin2", "ClothingDarkGray"),
        ChestUnder = new IProfileClothingItem("SleevelessShirtBlack", "ClothingCyan"),
        Hands = new IProfileClothingItem("SafetyGlovesBlack", "ClothingLightCyan"),
        Waist = new IProfileClothingItem("Belt", "ClothingDarkCyan", "ClothingLightGray"),
        Legs = new IProfileClothingItem("ShortsBlack", "ClothingDarkCyan"),
        Feet = new IProfileClothingItem("BootsBlack", "ClothingLightCyan"),
        Accesory = new IProfileClothingItem("GoalieMask", "")
    },
    new IProfile() {
      Name = "Benny",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("BearSkin", "")
    },
    new IProfile() {
      Name = "Stave Rygur",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin1", "ClothingDarkGray"),
        ChestOver = new IProfileClothingItem("Jacket", "ClothingBrown", "ClothingLightGray"),
        ChestUnder = new IProfileClothingItem("SleevelessShirt", "ClothingCyan"),
        Hands = new IProfileClothingItem("FingerlessGlovesBlack", "ClothingGray"),
        Waist = new IProfileClothingItem("SatchelBelt", "ClothingOrange"),
        Legs = new IProfileClothingItem("Pants", "ClothingDarkRed"),
        Feet = new IProfileClothingItem("BootsBlack", "ClothingDarkGray"),
        Accesory = new IProfileClothingItem("AgentSunglasses", "", "ClothingLightCyan")
    },
    new IProfile() {
      Name = "Niko",
        Gender = Gender.Female,
        Skin = new IProfileClothingItem("Normal_fem", "Skin4", "ClothingLightGray"),
        ChestUnder = new IProfileClothingItem("TrainingShirt_fem", "ClothingDarkBlue"),
        Hands = new IProfileClothingItem("GlovesBlack", "ClothingDarkBlue"),
        Waist = new IProfileClothingItem("Sash_fem", "ClothingDarkRed"),
        Legs = new IProfileClothingItem("Pants_fem", "ClothingDarkBlue"),
        Feet = new IProfileClothingItem("ShoesBlack", "ClothingGray"),
        Accesory = new IProfileClothingItem("Mask", "ClothingDarkBlue")
    },
    new IProfile() {
      Name = "Roy",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin4", "ClothingLightGray"),
        ChestOver = new IProfileClothingItem("GrenadeBelt", ""),
        ChestUnder = new IProfileClothingItem("SleevelessShirt", "ClothingPink"),
        Hands = new IProfileClothingItem("FingerlessGloves", "ClothingGray"),
        Waist = new IProfileClothingItem("Belt", "ClothingGray", "ClothingLightGray"),
        Legs = new IProfileClothingItem("Pants", "ClothingLightBlue"),
        Feet = new IProfileClothingItem("BootsBlack", "ClothingGray"),
        Accesory = new IProfileClothingItem("SunGlasses", "", "ClothingLightGray")
    },
    new IProfile() {
      Name = "Dina",
        Gender = Gender.Female,
        Skin = new IProfileClothingItem("Normal_fem", "Skin1", "ClothingLightGray"),
        Head = new IProfileClothingItem("Headband", "ClothingPink"),
        ChestOver = new IProfileClothingItem("Vest_fem", "ClothingLightBlue", "ClothingLightBlue"),
        ChestUnder = new IProfileClothingItem("SleevelessShirt_fem", "ClothingDarkBlue"),
        Legs = new IProfileClothingItem("PantsBlack_fem", "ClothingDarkBlue"),
        Feet = new IProfileClothingItem("Sneakers", "ClothingLightGray", "ClothingPink")
    },
    new IProfile() {
      Name = "Bridget",
        Gender = Gender.Female,
        Skin = new IProfileClothingItem("Normal_fem", "Skin4", "ClothingDarkGray"),
        ChestOver = new IProfileClothingItem("CoatBlack_fem", "ClothingCyan", "ClothingCyan"),
        ChestUnder = new IProfileClothingItem("SleevelessShirtBlack_fem", "ClothingDarkCyan"),
        Waist = new IProfileClothingItem("Belt_fem", "ClothingDarkGray", "ClothingLightGray"),
        Legs = new IProfileClothingItem("PantsBlack_fem", "ClothingDarkCyan"),
        Feet = new IProfileClothingItem("BootsBlack", "ClothingCyan"),
        Accesory = new IProfileClothingItem("SunGlasses", "", "ClothingLightGray")
    },
    new IProfile() {
      Name = "Mick",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin2", "ClothingLightGray"),
        Head = new IProfileClothingItem("Headband", "ClothingRed"),
        ChestUnder = new IProfileClothingItem("SleevelessShirt", "ClothingLightGray"),
        Waist = new IProfileClothingItem("Sash", "ClothingDarkRed"),
        Legs = new IProfileClothingItem("Pants", "ClothingLightBlue"),
        Feet = new IProfileClothingItem("Sneakers", "ClothingLightGray", "ClothingLightPink")
    },
    new IProfile() {
      Name = "Jerry",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin4", "ClothingLightGray"),
        ChestOver = new IProfileClothingItem("Jacket", "ClothingLightGray", "ClothingLightGray"),
        ChestUnder = new IProfileClothingItem("TShirt", "ClothingPink"),
        Legs = new IProfileClothingItem("Pants", "ClothingGray"),
        Feet = new IProfileClothingItem("Sneakers", "ClothingLightGray", "ClothingPink")
    },
    new IProfile() {
      Name = "Nell",
        Gender = Gender.Female,
        Skin = new IProfileClothingItem("Normal_fem", "Skin2", "ClothingLightGray"),
        ChestOver = new IProfileClothingItem("ShoulderHolster_fem", "ClothingBrown", "ClothingLightGray"),
        ChestUnder = new IProfileClothingItem("Sweater_fem", "ClothingLightGray"),
        Legs = new IProfileClothingItem("Pants_fem", "ClothingGray"),
        Feet = new IProfileClothingItem("ShoesBlack", "ClothingGray"),
        Accesory = new IProfileClothingItem("Earpiece", "")
    },
    new IProfile() {
      Name = "Natassja",
        Gender = Gender.Female,
        Skin = new IProfileClothingItem("Normal_fem", "Skin4", "ClothingPink"),
        ChestUnder = new IProfileClothingItem("SleevelessShirt_fem", "ClothingDarkRed"),
        Legs = new IProfileClothingItem("Skirt_fem", "ClothingRed"),
        Feet = new IProfileClothingItem("HighHeels", "ClothingDarkRed")
    },
    new IProfile() {
      Name = "Klusky",
        Gender = Gender.Male,
        Skin = new IProfileClothingItem("Normal", "Skin4", "ClothingPink"),
        ChestOver = new IProfileClothingItem("SuitJacket", "ClothingGray"),
        ChestUnder = new IProfileClothingItem("Sweater", "ClothingBrown"),
        Legs = new IProfileClothingItem("Pants", "ClothingBrown"),
        Feet = new IProfileClothingItem("ShoesBlack", "ClothingGray")
    }
  };
  if (Game.LocalStorage.HasData()) {
    bool UserCompanion = Game.GetActiveUsers().Skip(1).All(u => u.GetTeam() == Game.GetActiveUsers()[0].GetTeam()) && Game.GetActiveUsers()[0].GetTeam() != PlayerTeam.Independent;
    for (int i = 0; i < ((int) Game.LocalStorage.GetItem("UnlimitedCompanionsAmount")); i++) {
      Random RNG = new Random(Guid.NewGuid().GetHashCode());
      IPlayer NewCompanion = Game.CreatePlayer(Game.GetObjectsByName("SpawnPlayer")[RNG.Next(Game.GetObjectsByName("SpawnPlayer").Length)].GetWorldPosition() - new Vector2(0, 8));
      IProfile NewCompanionProfile = Companions[RNG.Next(Companions.Length)];
      NewCompanion.SetProfile(NewCompanionProfile);
      NewCompanion.SetBotName(NewCompanionProfile.Name);
      string[] UnlimitedCompanionsAIs = ((string[]) Game.LocalStorage.GetItem("UnlimitedCompanionsAI"));
      BotBehavior NewBotBehavior = new BotBehavior(true, (PredefinedAIType) Enum.Parse(typeof (PredefinedAIType), UnlimitedCompanionsAIs[i]));
      NewCompanion.SetBotBehavior(NewBotBehavior);
      string[] UnlimitedCompanionsTeams = ((string[]) Game.LocalStorage.GetItem("UnlimitedCompanionsTeam"));
      if (UserCompanion) NewCompanion.SetTeam(Game.GetActiveUsers()[0].GetTeam());
      else NewCompanion.SetTeam((PlayerTeam) Enum.Parse(typeof (PlayerTeam), UnlimitedCompanionsTeams[i]));
    }
  }
  Events.UserMessageCallback.Start((UserMessageCallbackArgs args) => {
    if (args.IsCommand && args.Command != String.Empty)
      switch (args.Command) {
      case "ADDCOMPANION": {
        if (!args.User.IsHost) {
          Game.ShowChatMessage("Only the host can execute this command!", Color.Red, args.User.UserIdentifier);
          return;
        }
        BotBehavior NewBotBehavior = null;
        PlayerTeam NewTeam = PlayerTeam.Independent;
        string[] CommandArguments = args.CommandArguments.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        if (CommandArguments.Length < 1) {
          Game.ShowChatMessage("You must provide an AI: Easy, Normal, Hard, Expert", Color.Red, args.User.UserIdentifier);
          return;
        }
        switch (CommandArguments[0].ToUpper()) {
        case "EASY":
          NewBotBehavior = new BotBehavior(true, PredefinedAIType.BotD);
          break;
        case "NORMAL":
          NewBotBehavior = new BotBehavior(true, PredefinedAIType.BotC);
          break;
        case "HARD":
          NewBotBehavior = new BotBehavior(true, PredefinedAIType.BotB);
          break;
        case "EXPERT":
          NewBotBehavior = new BotBehavior(true, PredefinedAIType.BotA);
          break;
        default:
          Game.ShowChatMessage("You must provide an AI: Easy, Normal, Hard, Expert", Color.Red, args.User.UserIdentifier);
          return;
        }
        if (CommandArguments.Length < 2) {
          Game.ShowChatMessage("You must provide a team: Independent, Team1, Team2, Team3, Team4", Color.Red, args.User.UserIdentifier);
          return;
        }
        if (!Enum.TryParse(CommandArguments[1], true, out NewTeam)) {
          Game.ShowChatMessage("You must provide a team: Independent, Team1, Team2, Team3, Team4", Color.Red, args.User.UserIdentifier);
          return;
        }
        Random RNG = new Random();
        IPlayer NewCompanion = Game.CreatePlayer(Game.GetObjectsByName("SpawnPlayer")[RNG.Next(Game.GetObjectsByName("SpawnPlayer").Length)].GetWorldPosition() - new Vector2(0, 8));
        IProfile NewCompanionProfile = Companions[RNG.Next(Companions.Length)];
        NewCompanion.SetProfile(NewCompanionProfile);
        NewCompanion.SetBotName(NewCompanionProfile.Name);
        NewCompanion.SetBotBehavior(NewBotBehavior);
        if (Game.GetActiveUsers().Skip(1).All(u => u.GetTeam() == Game.GetActiveUsers()[0].GetTeam()) && Game.GetActiveUsers()[0].GetTeam() != PlayerTeam.Independent) NewCompanion.SetTeam(Game.GetActiveUsers()[0].GetTeam());
        else NewCompanion.SetTeam(NewTeam);
        Game.PlaySound("GetAmmoSmall", NewCompanion.GetWorldPosition());
        IScriptStorage LocalStorage = Game.LocalStorage;
        if (LocalStorage.HasData()) {
          LocalStorage.SetItem("UnlimitedCompanionsAmount", ((int) LocalStorage.GetItem("UnlimitedCompanionsAmount")) + 1);
          List < string > UnlimitedCompanionsAIList = ((string[]) LocalStorage.GetItem("UnlimitedCompanionsAI")).ToList();
          UnlimitedCompanionsAIList.Add(NewBotBehavior.PredefinedAI.ToString());
          LocalStorage.SetItem("UnlimitedCompanionsAI", UnlimitedCompanionsAIList.ToArray());
          List < string > UnlimitedCompanionsTeamList = ((string[]) LocalStorage.GetItem("UnlimitedCompanionsTeam")).ToList();
          UnlimitedCompanionsTeamList.Add(NewTeam.ToString());
          LocalStorage.SetItem("UnlimitedCompanionsTeam", UnlimitedCompanionsTeamList.ToArray());
        } else {
          LocalStorage.SetItem("UnlimitedCompanionsAmount", 1);
          LocalStorage.SetItem("UnlimitedCompanionsAI", new string[] {
            NewBotBehavior.PredefinedAI.ToString()
          });
          LocalStorage.SetItem("UnlimitedCompanionsTeam", new string[] {
            NewTeam.ToString()
          });
        }
        Game.ShowChatMessage(string.Format("Added {0} companion in team {1}!", CommandArguments[0].ToLower(), NewTeam.ToString().Replace("Team", string.Empty)), Color.Green, args.User.UserIdentifier);
      }
      break;
      case "REMOVECOMPANIONS":
        if (!args.User.IsHost) {
          Game.ShowChatMessage("Only the host can execute this command!", Color.Red, args.User.UserIdentifier);
          return;
        }
        if (Game.LocalStorage.HasData()) Game.ShowChatMessage("Removed all companions!", Color.Green, args.User.UserIdentifier);
        else Game.ShowChatMessage("There's no companions set!", Color.Red, args.User.UserIdentifier);
        Game.LocalStorage.Clear();
        break;
      case "COMPANIONLIST": {
        if (!Game.LocalStorage.HasData()) {
          Game.ShowChatMessage("There's no companions set!", Color.Red, args.User.UserIdentifier);
          return;
        }
        Game.ShowChatMessage("Companion list:", Color.Green, args.User.UserIdentifier);
        string[] UnlimitedCompanionsAIs = ((string[]) Game.LocalStorage.GetItem("UnlimitedCompanionsAI"));
        string[] UnlimitedCompanionsTeams = ((string[]) Game.LocalStorage.GetItem("UnlimitedCompanionsTeam"));
        for (int i = 0; i < ((int) Game.LocalStorage.GetItem("UnlimitedCompanionsAmount")); i++)
          Game.ShowChatMessage(string.Format("{0}. {1} {2}", i + 1, (UnlimitedCompanionsAIs[i] == "BotA" ? "Expert" : (UnlimitedCompanionsAIs[i] == "BotB" ? "Hard" : (UnlimitedCompanionsAIs[i] == "BotC" ? "Normal" : (UnlimitedCompanionsAIs[i] == "BotD" ? "Easy" : null)))), UnlimitedCompanionsTeams[i]), Color.Green, args.User.UserIdentifier);
      }
      break;
      }
  });
}