public static Bot SpawnBot( BotType botType, BotFaction faction = BotFaction.None, IPlayer player = null, PlayerTeam team = BotTeam, bool ignoreFullSpawner = false, bool triggerOnSpawn = true) { if (player == null) { player = SpawnPlayer(ignoreFullSpawner); } if (player == null) { return(null); } player.SetTeam(team); var bot = BotFactory.Create(player, botType, faction); var info = bot.Info; var weaponSet = WeaponSet.Empty; if (RandomHelper.Percentage(info.EquipWeaponChance)) { weaponSet = RandomHelper.GetItem(GetWeapons(botType)); } BotHelper.Equip(player, weaponSet); var profile = RandomHelper.GetItem(GetProfiles(botType)); player.SetProfile(profile); if (player.Name == "COM") { player.SetBotName(profile.Name); } var behaviorSet = GetBehaviorSet(info.AIType); behaviorSet.SearchItems = info.SearchItems; behaviorSet.SearchItemRange = info.SearchRange; bot.SetBotBehaviorSet(behaviorSet, true); player.SetModifiers(info.Modifiers); player.SetBotBehaviorActive(true); m_bots[player.UniqueID] = bot; // This may be updated if using setplayer command if (triggerOnSpawn) { TriggerOnSpawn(bot); } return(bot); }
private bool TurnIntoZombie() { if (Body.IsRemoved || Body.IsBurnedCorpse) { return(false); } var player = Game.CreatePlayer(Body.GetWorldPosition()); var zombieType = BotHelper.GetZombieType(Type); var oldProfile = Body.GetProfile(); var oldWeapons = BotHelper.GetWeaponSet(Body); // TODO: test gun with lazer once gurt fixed https://www.mythologicinteractiveforums.com/viewtopic.php?f=31&t=4000 ScriptHelper.LogDebug(Type, "->", zombieType); player.SetBotName(Body.Name); // NOTE: set right now so SpawnLine dialogue will show the bot name correctly var zombie = BotManager.SpawnBot(zombieType, Faction, player, BotManager.GetBot(Body).InfectTeam); var zombieBody = zombie.Player; var modifiers = Body.GetModifiers(); // Survivor has fake MaxHealth to have blood effect on the face if (Enum.GetName(typeof(BotType), BotManager.GetBot(Body).Type).StartsWith("Survivor")) { modifiers.CurrentHealth = modifiers.MaxHealth = 50; } else { modifiers.CurrentHealth = modifiers.MaxHealth * 0.75f; } zombieBody.SetModifiers(modifiers); zombieBody.SetProfile(BotHelper.ToZombieProfile(oldProfile)); BotHelper.Equip(zombieBody, oldWeapons); Body.Remove(); Body = zombieBody; Body.SetBotBehaivorActive(false); Body.AddCommand(new PlayerCommand(PlayerCommandType.StartCrouch)); IsTurningIntoZombie = true; return(true); }