public static MobileAgent SpawnCreature(string clientPrefab, Callipso.GameSession session) { Callipso.Hero creature = ServerManager.creatureHeroes.Find(x => x.clientPrefab == clientPrefab); MobileAgent created = ServerManager.current.JoinGame(null, session, creature.alias, clientPrefab); AIAgent ai = created.gameObject.AddComponent <AIAgent>(); ai.agent = created; ai.vision = creature.vision; // Bots always can see created.user = null; return(created); }
void HeroLoadFromFolder(string folderName) { List <string> content = new List <string>(); DataReader.readJson(folderName, out content); int c = content.Count; for (int i = 0; i < c; i++) { Callipso.Hero _hero = JsonUtility.FromJson <Callipso.Hero>(content[i]); if (_hero.heroType == Callipso.HeroType.Creature) { creatureHeroes.Add(_hero); } else { playerHeroes.Add(_hero); } } }
public void LoadHero(string _heroId, bool isHero = false) { /* * SET TEAM * */ FindTeam(isHero); /* * */ if (string.IsNullOrEmpty(_heroId)) { // AUTO HERO SELECTION if (session.teamsize == 0) { _heroId = ServerManager.playerHeroes[Random.Range(0, ServerManager.playerHeroes.Count)].clientPrefab; } else { List <MobileAgent> teamMates = session.agents.FindAll(x => x.team == team); List <Callipso.Hero> trg = ServerManager.playerHeroes.FindAll(x => teamMates.Find(e => e.heroId == x.clientPrefab) == null); if (trg.Count == 0) { _heroId = ServerManager.playerHeroes[Random.Range(0, ServerManager.playerHeroes.Count)].clientPrefab; } else { _heroId = trg[Random.Range(0, trg.Count)].clientPrefab; } } } maxHealth = 0; heroId = _heroId; if (isHero) { _hero = ServerManager.playerHeroes.Find(x => x.clientPrefab == _heroId); } else { _hero = ServerManager.creatureHeroes.Find(x => x.clientPrefab == _heroId); } moveSpeed = _hero.moveSpeed; skills = _hero.skills; cooldowns = new float[skills.Length]; heroType = _hero.heroType; agentLevel.level = new Leveling.Level(); agentLevel.level.level = 1; agentLevel.exp = 0; agentLevel.requiredExp = 10; /* * DEFAULT BUFFS * */ agentBuff.buff.buffs.Clear(); agentBuff.buff.buffs.AddRange(_hero.defaultBuffs); /* * */ if (heroType == Callipso.HeroType.Creature) { gameObject.name = _heroId; } if (physik == null) { physik = gameObject.AddComponent <Physik>(); physik.agent = this; } physik.session = session; physik.radius = _hero.collision; physik.team = team; if (user != null) { // SEND SKILL INFO MObjects.SkillInfo mObject = new MObjects.SkillInfo(); mObject.skills = skills; NetworkServer.SendToClient(user.connectionId, MTypes.SkillInfo, mObject); } }