Exemple #1
0
        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));
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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();
        }
Exemple #4
0
 public virtual void ManipulateMission(MainGameWindow mainGame, Mission.Mission mission)
 {
 }
Exemple #5
0
        //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();
        }
Exemple #6
0
 public StartMission(Mission.Mission mission, int difficulty, Point position) : base(position, 0)
 {
     this.mission    = mission;
     this.difficulty = difficulty;
 }