예제 #1
0
 protected override void Start()
 {
     base.Start();
     health.Initialized(maxHealth, maxHealth);
     banditAI = GetComponent <BanditAI>();
     StartCoroutine(CheckDistance());
 }
예제 #2
0
파일: Mission.cs 프로젝트: quajak/StartGame
                         string description) GenerateMission(int difficulty, int Round, ref Map map, Player player)
        {
            string desc = "Welcome to the mission. ";

            #region Player Creation

            List <Player> players = new List <Player>()
            {
                player
            };

            //Set player position
            List <Point> startPos = map.DeterminSpawnPoint(1, SpawnType.road);
            if (startPos.Count == 0)
            {
                startPos = map.DeterminSpawnPoint(1, SpawnType.randomLand);
            }
            players[0].troop.Position = startPos[0];

            //Generate enemies and set position
            int enemyNumber = Round + map.width / 15;

            List <string> botNames = new List <string>()
            {
                "Hal", "Test", "Steve", "John", "Duff", "Mike", "Pence", "Alfred", "Bob", "Donald"
            };

            List <Point> spawnPoints = map.DeterminSpawnPoint(enemyNumber,
                                                              SpawnType.randomLand);

            for (int i = 0; i < enemyNumber; i++)
            {
                string name = botNames[World.World.random.Next(botNames.Count)];
                botNames.Remove(name);
                BanditAI item = new BanditAI(PlayerType.computer, name, map, new Player[] { player });
                item.troop = new Troop(name,
                                       new Weapon(4 + difficulty / 4 + Round - 1,
                                                  BaseAttackType.melee, BaseDamageType.blunt, 1, "Fists", 1, false),
                                       Resources.enemyScout, 0, map, item)
                {
                    armours = new List <Armour>
                    {
                        new Armour("Shirt", 32, new List <BodyParts> {
                            BodyParts.LeftUpperArm, BodyParts.RightUpperArm, BodyParts.Torso
                        }, Material.Materials.First(m => m.name == "Cloth"), Quality.Broken, ArmourLayer.clothing),
                        new Armour("Hose", 60, new List <BodyParts> {
                            BodyParts.UpperLegs, BodyParts.LeftLowerLeg, BodyParts.RightLowerLeg, BodyParts.LeftShin, BodyParts.RightShin
                        }, Material.Materials.First(m => m.name == "Cloth"), Quality.Simple, ArmourLayer.clothing)
                    }
                };
                players.Add(item);
                players[i + 1].troop.Position = spawnPoints[i];
            }

            #endregion Player Creation

            #region WinCodition Creation

            List <WinCheck> wins = new List <WinCheck>
            {
                deathCheck
            };
            desc += "Kill all the enemies. ";

            int distance(Point A, Point B)
            {
                return(Math.Abs(A.X - B.X) + Math.Abs(A.Y - B.Y));
            }

            //Find goal region
            Point          playerPosition = startPos[0];
            List <MapTile> goalLocations  = new List <MapTile>(map.goals);
            if (goalLocations.Count > 1)
            {
                goalLocations.Sort((l1, l2) => {
                    int dis1 = distance(l1.position, playerPosition);
                    int dis2 = distance(l2.position, playerPosition);
                    if (dis1 == dis2)
                    {
                        return(0);
                    }
                    else if (dis1 > dis2)
                    {
                        return(-1);
                    }
                    else
                    {
                        return(1);
                    }
                });
                Point goal = goalLocations.First().position;
                if (distance(goal, playerPosition) > map.width / 2)
                {
                    desc += $"You can also reach the field [{goal.X}, {goal.Y}] to win.";
                    //Make the player go somewhere
                    map.overlayObjects.Add(new OverlayRectangle(goal.X * MapCreator.fieldSize, goal.Y * MapCreator.fieldSize, MapCreator.fieldSize, MapCreator.fieldSize, Color.Gold, Once: false));
                    wins.Add((_map, main) => main.humanPlayer != null && goal == main.humanPlayer.troop.Position);
                }
            }

            #endregion WinCodition Creation

            #region DeathCondition Creation

            List <WinCheck> deaths = new List <WinCheck>
            {
                playerDeath
            };

            desc += "Do not die. ";

            #endregion DeathCondition Creation

            desc += "Good luck! ";
            return(players, wins, deaths, desc);
        }
예제 #3
0
                         string description) GenerateMission(int difficulty, int Round, ref Map map, Player player)
        {
            string desc = "Defend the caravan. ";

            #region Player Creation

            List <Player> players = new List <Player>()
            {
                player
            };

            //Set player position
            List <Point> startPos = map.DeterminSpawnPoint(1, SpawnType.centralRoad);
            if (startPos.Count == 0)
            {
                startPos = map.DeterminSpawnPoint(1, SpawnType.randomLand);
            }
            players[0].troop.Position = startPos[0];

            // Add wagon
            Building caravanWagon = new Building("Wagon", startPos[0], Resources.CaravanWagon, map);
            map.entities.Add(caravanWagon);
            map.renderObjects.Add(new EntityRenderObject(caravanWagon, new TeleportPointAnimation(new Point(0, 0), caravanWagon.Position)));

            //Generate enemies and set position
            int enemyNumber = difficulty / 2 + 2;


            List <Point> spawnPoints = map.DeterminSpawnPoint(enemyNumber,
                                                              SpawnType.randomRoughCircle);

            for (int i = 0; i < enemyNumber; i++)
            {
                Bitmap image  = Resources.enemyScout;
                Weapon weapon = new Weapon(3 + difficulty / 4 + World.World.random.Next(-2, 4),
                                           BaseAttackType.melee, BaseDamageType.sharp, 1, "Sword", 1, false);
                if (World.World.random.Next(5) == 1)
                {
                    weapon = new RangedWeapon(4 + difficulty / 6, BaseDamageType.sharp, 8, "Bow", 12, false, AmmoType.Arrow, 2);
                    image  = Resources.Archer;
                }
                string   name = PlayerDataResource.GetMaleName();
                BanditAI item = new BanditAI(PlayerType.computer, name, map, new Player[] { player }, 2 + difficulty / 5 + World.World.random.Next(-1, 2));
                item.troop = new Troop(name,
                                       weapon,
                                       image, 0, map, item)
                {
                    armours = new List <Armour>
                    {
                        new Armour("Shirt", 32, new List <BodyParts> {
                            BodyParts.LeftUpperArm, BodyParts.RightUpperArm, BodyParts.Torso
                        }, Material.Materials.First(m => m.name == "Cloth"), Quality.Broken, ArmourLayer.clothing),
                        new Armour("Hose", 60, new List <BodyParts> {
                            BodyParts.UpperLegs, BodyParts.LeftLowerLeg, BodyParts.RightLowerLeg, BodyParts.LeftShin, BodyParts.RightShin
                        }, Material.Materials.First(m => m.name == "Cloth"), Quality.Simple, ArmourLayer.clothing)
                    }
                };
                item.troop.health.RawValue += World.World.random.Next(2, 5);
                players.Add(item);
                players[i + 1].troop.Position = spawnPoints[i];
            }

            #endregion Player Creation

            #region WinCodition Creation

            List <WinCheck> wins = new List <WinCheck>
            {
                deathCheck
            };
            desc += "Kill all the enemies. ";

            #endregion WinCodition Creation

            #region DeathCondition Creation

            List <WinCheck> deaths = new List <WinCheck>
            {
                playerDeath
            };

            desc += "Do not die. ";

            #endregion DeathCondition Creation

            desc += "Good luck! ";
            return(players, wins, deaths, desc);
        }