public override void ManipulateMission(MainGameWindow mainGame, Mission.Mission mission) { int num = World.World.random.Next(10, 30); Point[] spawn = mainGame.map.DeterminSpawnPoint(num, SpawnType.randomLand).ToArray(); foreach (var point in spawn) { mainGame.AddPlayer(new PlayerData.Players.Tree(point, mainGame.map)); } }
private void StartMission_Click(object sender, EventArgs e) { StartMission startMission1 = (player.availableActions.Find(a => a is StartMission) as StartMission); int difficulty = startMission1.difficulty; Mission.Mission selected = startMission1.mission; player.availableActions.Remove(startMission1); player.possibleActions.Remove(startMission1); RunMission(difficulty, selected, startMission1); }
private void RunMission(int difficulty, Mission.Mission selected, StartMission action = null) { World.Instance.campaign.mission = selected; MapBiome biome = new GrasslandMapBiome(); if (mapBiomes.ContainsKey(World.Instance.worldMap[player.WorldPosition.X, player.WorldPosition.Y].type)) { biome = mapBiomes[World.Instance.worldMap[player.WorldPosition.X, player.WorldPosition.Y].type]; } Map map = World.Instance.campaign.GenerateMap(biome); player.map = map; player.troop.Map = map; MainGameWindow mainGame = new MainGameWindow(map, player, selected, World.Instance.trees, difficulty, World.WORLD_DIFFICULTY); biome.ManipulateMission(mainGame, selected); mainGame.RenderMap(true, true, true); controller.Stop(); mainGame.ShowDialog(); if (action != null) { action.MissionEnded(mainGame.giveReward); } if (mainGame.dead) { //as player is dead campaign is over Close(); return; } if (mainGame.giveReward) { //Now give reward MissionResult r = CampaignController.GenerateRewardAndHeal(player, mainGame, selected, player.vitality.Value, (player.level / 25d).Cut(0, 1), "Close"); r.ShowDialog(); } if (running) { controller.Start(); } World.Instance.missionsCompleted++; World.Instance.actors.RemoveAll(p => (p is MissionWorldPlayer wp) && wp.WorldPosition == player.WorldPosition); World.Instance.GenerateNewMission(); Render(); }
public virtual void ManipulateMission(MainGameWindow mainGame, Mission.Mission mission) { }
//TODO: Add discounts public MissionResult(HumanPlayer player, double progression, Mission.Mission lastMission, List <Armour> loot, string closeButtonText) { InitializeComponent(); this.player = player; nextMission.Text = closeButtonText; //Enable level up levelUpButton.Enabled = player.storedLevelUps != 0; levelUpButton.Text = $"Level up x{player.storedLevelUps}"; //Generate reward Reward _reward = lastMission.Reward(); if (_reward.jewelryReward != null) { if (_reward.jewelryReward.jewelries != null) { reward.AddRange(_reward.jewelryReward.jewelries); } while (_reward.jewelryReward.number != 0) { //Determine the quality MathNet.Numerics.Distributions.Normal normal = new MathNet.Numerics.Distributions.Normal(); int offset = (int)normal.InverseCumulativeDistribution(World.random.NextDouble()); int num = E.GetQualityPos(_reward.jewelryReward.quality) + offset; num = Math.Min(Math.Max(num, 0), Enum.GetNames(typeof(Quality)).Length); //Bound the value Quality quality = E.GetQuality(num); reward.Add(Jewelry.GenerateJewelry(quality)); _reward.jewelryReward.number--; } } if (!(_reward.weaponReward is null)) { reward.Add(Campaign.CalculateWeaponReward(_reward.weaponReward, (int)(progression * 10), 10)); } if (!(_reward.spellReward is null)) { Spell spell = _reward.spellReward.spell; if (spell != null && !player.spells.Exists(s => spell.name == s.name)) { reward.Add(spell); } } if (_reward.Money != 0) { reward.Add(new Coin(_reward.Money)); } if (_reward.itemReward != null) { reward.Add(_reward.itemReward.reward); } reward.AddRange(loot); //Populate reward list foreach (var item in reward) { lootList.Items.Add(item); } playerView.Activate(player, null, false); Render(); }
public StartMission(Mission.Mission mission, int difficulty, Point position) : base(position, 0) { this.mission = mission; this.difficulty = difficulty; }