private static void CCSpawnAI(ConCommandArgs args) { //- Spawns the specified CharacterMaster. Requires 1 argument: spawn_ai 0:{localised_objectname} 1:[Count:1] 2:[EliteIndex:-1/None] 3:[Braindead:0/false(0|1)] 4:[TeamIndex:0/Neutral] if (args.sender == null) { Log.Message(Lang.DS_NOTYETIMPLEMENTED, LogLevel.Error); return; } if (args.Count == 0) { Log.MessageNetworked(Lang.SPAWNAI_ARGS, args, LogLevel.MessageClientOnly); return; } string character = StringFinder.Instance.GetMasterName(args[0]); if (character == null) { Log.MessageNetworked(Lang.SPAWN_ERROR + character, args, LogLevel.MessageClientOnly); return; } var masterprefab = MasterCatalog.FindMasterPrefab(character); var body = masterprefab.GetComponent <CharacterMaster>().bodyPrefab; int amount = 1; if (args.Count > 1) { if (int.TryParse(args[1], out amount) == false) { Log.MessageNetworked(Lang.SPAWNAI_ARGS, args, LogLevel.MessageClientOnly); return; } } Vector3 location = args.sender.master.GetBody().transform.position; Log.MessageNetworked(string.Format(Lang.SPAWN_ATTEMPT_2, amount, character), args); for (int i = 0; i < amount; i++) { var bodyGameObject = UnityEngine.Object.Instantiate <GameObject>(masterprefab, location, Quaternion.identity); CharacterMaster master = bodyGameObject.GetComponent <CharacterMaster>(); NetworkServer.Spawn(bodyGameObject); master.SpawnBody(body, args.sender.master.GetBody().transform.position, Quaternion.identity); if (args.Count > 2) { var eliteIndex = StringFinder.GetEnumFromPartial <EliteIndex>(args[2]); if (eliteIndex != EliteIndex.None) { master.inventory.SetEquipmentIndex(EliteCatalog.GetEliteDef(eliteIndex).eliteEquipmentIndex); master.inventory.GiveItem(ItemIndex.BoostHp, Mathf.RoundToInt((GetTierDef(eliteIndex).healthBoostCoefficient - 1) * 10)); master.inventory.GiveItem(ItemIndex.BoostDamage, Mathf.RoundToInt((GetTierDef(eliteIndex).damageBoostCoefficient - 1) * 10)); } } if (args.Count > 3 && Util.TryParseBool(args[3], out bool braindead) && braindead) { UnityEngine.Object.Destroy(master.GetComponent <BaseAI>()); } TeamIndex teamIndex = TeamIndex.Monster; if (args.Count > 4) { StringFinder.TryGetEnumFromPartial(args[4], out teamIndex); } if (teamIndex >= TeamIndex.None && teamIndex < TeamIndex.Count) { master.teamIndex = teamIndex; master.GetBody().teamComponent.teamIndex = teamIndex; } } }