public GameSettings.Player GetGameSettings() { GameSettings.Player _Player = new GameSettings.Player(); _Player.IsPlayer = m_IsPlayer; _Player.IsLocalPlayer = m_IsLocalPlayer; _Player.Index = PlayerIndex; _Player.SetMapHero = m_IsHeroRandom; if (m_CurrentTownIndex != -1) { _Player.Faction = m_AvailableTowns[m_CurrentTownIndex]; } else { _Player.Faction = m_AvailableTowns[Random.Range(0, m_AvailableTowns.Count)]; } if (m_GenerateHeroAtMainTown || m_IsHeroRandom) { if (m_CurrentHeroIndex != -1) { _Player.Hero = m_AvailableHeroes[m_CurrentHeroIndex]; } else { _Player.Hero = HeroPool.GetRandomHero(PlayerIndex, _Player.Faction, true); HeroPool.ClaimHero(_Player.Hero); } } else { _Player.Hero = m_CustomHero; } if (m_CurrentStartingBonusIndex != -1) { _Player.StartingBonus = m_StartingBonuses.StartingBonuses[m_CurrentStartingBonusIndex]; } else { _Player.StartingBonus = m_StartingBonuses.StartingBonuses[Random.Range(0, m_StartingBonuses.StartingBonuses.Count)]; } return(_Player); }
public void Initialize(ScenarioObject a_ScenarioObject, GameReferences a_GameReferences) { PlayerIndex = a_ScenarioObject.Hero.PlayerIndex; m_GameReferences = a_GameReferences; if (a_ScenarioObject.Template.Name == "avxprsn0") { IsPrison = true; } Hero _BaseHero; bool _ClaimedMainHero = false; if (a_ScenarioObject.Hero.ID != 255) { _BaseHero = m_Heroes.Heroes.First((a_Hero) => a_Hero.Hero.ID == a_ScenarioObject.Hero.ID).Hero; } else { GameSettings.Player _Player = m_GameSettings.Players.First((a_Player) => a_Player.Index == PlayerIndex); if (m_GameSettings.Scenario.PlayerInfo[PlayerIndex].IsMainHeroRandom && _Player.SetMapHero) { _BaseHero = _Player.Hero; _Player.SetMapHero = false; _ClaimedMainHero = true; } else { _BaseHero = HeroPool.GetRandomHero(PlayerIndex, m_GameSettings.Players.First((a_Player) => a_Player.Index == PlayerIndex).Faction, true); } } Hero = new Hero(); Hero.ID = _BaseHero.ID; Hero.Faction = _BaseHero.Faction; Hero.HeroVisualData = _BaseHero.HeroVisualData; if (a_ScenarioObject.Hero.Name != "") { Hero.Name = a_ScenarioObject.Hero.Name; } else { Hero.Name = _BaseHero.Name; } if (a_ScenarioObject.Hero.Portrait != 255) { Hero _Hero = m_Heroes.Heroes.First((a_Hero) => a_Hero.Hero.ID == a_ScenarioObject.Hero.Portrait).Hero; Hero.SmallPortrait = _Hero.SmallPortrait; Hero.LargePortrait = _Hero.LargePortrait; } else { Hero.SmallPortrait = _BaseHero.SmallPortrait; Hero.LargePortrait = _BaseHero.LargePortrait; } if (a_ScenarioObject.Hero.HasCustomPrimarySkills) { Hero.Attack = a_ScenarioObject.Hero.Attack; Hero.Defense = a_ScenarioObject.Hero.Defense; Hero.Spellpower = a_ScenarioObject.Hero.Spellpower; Hero.Knowledge = a_ScenarioObject.Hero.Knowledge; } else { Hero.Attack = _BaseHero.Attack; Hero.Defense = _BaseHero.Defense; Hero.Spellpower = _BaseHero.Spellpower; Hero.Knowledge = _BaseHero.Knowledge; } if (!_ClaimedMainHero) { HeroPool.ClaimHero(Hero); } m_DynamicObstacle.Initialize(m_GameReferences.Pathfinding, this); m_PathfindingPos = new Vector2Int(a_ScenarioObject.PosX - 1, a_ScenarioObject.PosY); Initialize(); }