Пример #1
0
    /// <summary>
    /// Little help here, since they're named little confusing.
    /// Those actually don't activate them in level or anything, but happen AFTER a subsystem has been triggered.
    /// If you want anything special to happen when the player activates a certain number of subsystems, do it here.
    /// If you have levels that use more/less than 3 subsystems mixed with levels that do use 3, you could rewrite so
    /// it uses the amount of subsystems in the level found in level.trigger.count(-1 if it has the levelfinish active).
    /// </summary>
    public void ActivateSubsystem()
    {
        subsystems++;
        if (subsystems == 1)
        {
            Application.GetData().inventory.Add(ItemLibrary.Get().items[0], 1);
            Application.GetData().inventory.Add(ItemLibrary.Get().items[2], 1);
        }
        if (subsystems == 2)
        {
            Application.GetData().inventory.Add(ItemLibrary.Get().keyList[4], 1);
        }
        if (subsystems >= 3)
        {
            for (int i = 0; i < Application.GetData().inventory.content.Count; i++)
            {
                if (Application.GetData().inventory.content[i].item.type == "weap")
                {
                    Weapon w = (Weapon)Application.GetData().inventory.content[i].item;
                    w.currentammo = w.clipsize;
                    w.ammo        = w.maxAmmo;
                }
            }

            ActivateLevelFinish();
        }
    }
    public Level Generate()
    {
        Level          levelGen = new Level();
        LevelFromImage lfi      = new LevelFromImage();

        levelGen.structure = lfi.BuildStructure();
        lfi.AddObjectsFromImage(levelGen);

        if (lfi.output.playerSpawns <= 0)
        {
            levelGen.playerSpawnPoints = SetPlayerSpawnPoints(levelGen);
        }

        //levelGen.pickupSpawnPoints = SetPickupSpawnPoints();
        //levelGen.enemySpawnPoints = SetEnemySpawnPoints();

        pickUpCount = ((levelGen.structure.GetLength(0) * levelGen.structure.GetLength(1)) / 100);
        //int factor = ((levelGen.structure.GetLength(0) + levelGen.structure.GetLength(1) / 100));
        int factor = 1;

        pickUpCount = pickUpCount + (rng.Next(0, 10) * factor);

        enemyCount     = pickUpCount * 2;
        pickUpCount   += 10;
        maxMeleeCount  = enemyCount / 2;
        maxRangedCount = (enemyCount / 2) - 1;
        maxBossCount   = 1;
        /**/

        /*
         * for (int i = 0; i < enemyCount; i++)
         * {
         *  if (rng.Next(0, 2) == 0 && !(maxMeleeCount >= enemyCount / 2 + (rng.Next(-5, 5))) && !(maxMeleeCount + maxRangedCount + maxBossCount >= enemyCount)) maxMeleeCount++;
         *  if (rng.Next(0, 2) == 1 && !(maxRangedCount >= enemyCount / 2 + (rng.Next(-5, 5))) && !(maxMeleeCount + maxRangedCount + maxBossCount >= enemyCount)) maxRangedCount++;
         *  if (rng.Next(0, 2) == 2 && !(maxBossCount >= enemyCount/20) && !(maxMeleeCount + maxRangedCount + maxBossCount >= enemyCount)) maxBossCount++;
         * }
         * /**/


        for (int i = 0; i < enemyCount; i++)
        {
            //int current = rng.Next(0, levelGen.enemySpawnPoints.Count);
            levelGen.enemies.Add(SpawnEnemy(levelGen));
            //levelGen.enemySpawnPoints.RemoveAt(current);
        }

        for (int i = 0; i < pickUpCount; i++)
        {
            //int current = rng.Next(0, levelGen.pickupSpawnPoints.Count);
            levelGen.pickUps.Add(SpawnPickup(levelGen, rng.Next(0, ItemLibrary.Get().generics.Count)));
            //levelGen.pickupSpawnPoints.RemoveAt(current);
        }
Пример #3
0
    public Actor()
    {
        this.name              = "player";
        this.position          = new Vector2();
        this.selector          = new GameObject();
        this.selector.position = new Vector2(0, 0);

        this.actions   = maxActions;
        this.Weapon    = new Slot <Weapon>();
        this.Armor     = new Slot <Armor>();
        Weapon.content = new Weapon(ItemLibrary.Get().weaponList[0]);
        Armor.content  = new Armor(ItemLibrary.Get().armorList[0]);

        XselecRange = Weapon.content.range;
    }
Пример #4
0
    public void SpawnPlayer()
    {
        player           = new Actor();
        player.health    = 10;
        player.maxHealth = 10;

        Application.GetData().inventory.Add(player.Weapon.content, 1);
        Application.GetData().inventory.Add(player.Armor.content, 1);

        Application.GetData().inventory.Add(ItemLibrary.Get().grenadeList[1], 1);
        Application.GetData().inventory.Add(ItemLibrary.Get().armorList[4], 1);

        //DEBUGGING ONLY, DONT TOUCH IF YOU DONT KNOW WHAT YOU'RE DOING

        /*
         * Application.GetData().inventory.Add(ItemLibrary.Get().items[0], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().weaponList[5], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().grenadeList[0], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().grenadeList[1], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().usableList[0], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().usableList[1], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().usableList[2], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().weaponList[1], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().weaponList[2], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().keyList[0], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().keyList[1], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().keyList[2], 1);
         * Application.GetData().inventory.Add(ItemLibrary.Get().keyList[3], 1);
         * //player.AddTrait(2, "temp", new HeavyInjuryTrait(5));
         * /**/

        Random rng = new Random();

        player.position = level.playerSpawnPoints[rng.Next(0, 4)];

        Application.GetData().collision.Add(player);
    }
Пример #5
0
    public void OnPickup()
    {
        GameData data = Application.GetData();

        //Sequence spawn conditions
        #region Ammo
        if (item.type == "ammo")
        {
            data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Ammunition crate found.");
            for (int i = 0; i < data.inventory.content.Count; i++)
            {
                if (data.inventory.content[i].item.type == "weap")
                {
                    Weapon temp = (Weapon)data.inventory.content[i].item;

                    if (temp.ammo == temp.maxAmmo)
                    {
                        continue;
                    }

                    temp.ammo += (int)(temp.clipsize * 1.5);

                    if (temp.ammo > temp.maxAmmo)
                    {
                        temp.ammo = temp.maxAmmo;
                    }

                    data.inventory.content[i].item = temp;

                    data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ '"' + data.inventory.content[i].item.name + '"' + " ammunition restored.");
                    data.score.AddScore(10);
                }
            }
        }
        #endregion
        #region Medkit
        else if (item.type == "med")
        {
            data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Medkit found. Player health restored.");
            data.player.health = data.player.maxHealth;
            data.score.AddScore(10);
        }
        #endregion
        #region Weapon
        else if (item.type == "weap")
        {
            bool added         = false;
            bool NotAllWeapons = true;
            int  count         = 0;

            for (int i = 0; i < data.inventory.content.Count; i++)
            {
                if (data.inventory.content[i].item.type == "weap")
                {
                    count++;
                }
                if (count == ItemLibrary.Get().weaponList.Count)
                {
                    NotAllWeapons = false;
                }
            }

            count = 0;

            while (NotAllWeapons)
            {
                int current = rng.Next(0, ItemLibrary.Get().weaponList.Count);
                this.item = ItemLibrary.Get().weaponList[current];

                if (!data.inventory.Contains(this.item))
                {
                    data.inventory.Add(this.item, this.count);
                    data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Weaponcase found. " + this.item.name + " added to inventory.");

                    added = true;
                    data.score.AddScore(150);
                    break;
                }

                count++;
            }
            if (!added)
            {
                data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Empty Weaponcase found. Proceeding...");
            }
        }
        #endregion
        #region Armor
        else if (item.type == "armor")
        {
            bool added = false;
            int  count = 0;

            for (int i = 0; i < data.inventory.content.Count; i++)
            {
                if (data.inventory.content[i].item.type == "armor")
                {
                    count++;
                }
                if (count == ItemLibrary.Get().armorList.Count)
                {
                    return;
                }
            }

            count = 0;

            while (true)
            {
                int current = rng.Next(0, ItemLibrary.Get().armorList.Count);
                this.item = ItemLibrary.Get().armorList[current];

                if (!data.inventory.Contains(this.item))
                {
                    data.inventory.Add(this.item, this.count);
                    data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Armor found. " + this.item.name + " was added to the inventory.");

                    added = true;
                    data.score.AddScore(150);
                    break;
                }

                count++;
            }
            if (!added)
            {
                data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Debug no armor found. Proceeding...");
            }
        }
        #endregion
        #region Grenades
        else if (item.type == "grenade")
        {
            /*
             * bool added = false;
             * int count = 0;
             *
             * while (true)
             * {
             *  int current = rng.Next(0, ItemLibrary.Get().grenadeList.Count);
             *  this.item = ItemLibrary.Get().grenadeList[current];
             *
             *  if (!data.inventory.Contains(this.item))
             *  {
             *      data.inventory.Add(this.item, this.count);
             *      data.combatlog.Add("Grenade found. " + this.item.name + " was added to the inventory.");
             *
             *      added = true;
             *      break;
             *  }
             *
             *  count++;
             * }
             * if (!added)
             * {
             *  data.combatlog.Add("Empty grenade found. Proceeding...");
             * }
             * /**/
            int current = rng.Next(0, ItemLibrary.Get().grenadeList.Count);
            this.item = ItemLibrary.Get().grenadeList[current];
            data.inventory.Add(this.item, this.count);
            data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Grenade found. Added " + this.item.name + " to inventory.");
            data.score.AddScore(10);
        }
        #endregion
        #region ammo_mods
        else if (item.type == "use")
        {
            int current = rng.Next(0, ItemLibrary.Get().usableList.Count);
            this.item = ItemLibrary.Get().usableList[current];
            data.inventory.Add(this.item, this.count);
            data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Mod found. Added " + this.item.name + " to inventory.");
            data.score.AddScore(10);
        }
        #endregion
        #region Keycards
        else if (item.type == "key")
        {
            bool added = false;
            int  count = 0;

            for (int i = 0; i < data.inventory.content.Count; i++)
            {
                if (data.inventory.content[i].item.type == "key")
                {
                    count++;
                }
                if (count == ItemLibrary.Get().keyList.Count)
                {
                    return;
                }
            }

            while (true)
            {
                int current = rng.Next(0, ItemLibrary.Get().keyList.Count);
                this.item = ItemLibrary.Get().keyList[current];

                if (!data.inventory.Contains(this.item) && this.item.name != "master_key")
                {
                    data.inventory.Add(this.item, this.count);
                    data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ this.item.name + " was added to the inventory.");

                    added = true;
                    data.score.AddScore(50);
                    break;
                }

                count++;
            }
            if (!added)
            {
                data.combatlog.Add(/*DateTime.Now.Hour + ":" + DateTime.Now.Minute + */ "Keycard already in possesion.");
            }
        }
        #endregion


        else
        {
            data.inventory.Add(this.item, this.count);
        }

        data.level.pickUps.Remove(this);
    }
 public void Init()
 {
     meleeList.Add(new Actor("alien_assaulter", "melee_calm", 5, new Weapon(ItemLibrary.Get().enemyweaponList[0]), new Armor(ItemLibrary.Get().enemyarmorList[0])));
     rangedList.Add(new Actor("alien_trooper", "ranged", 3, new Weapon(ItemLibrary.Get().enemyweaponList[1]), new Armor(ItemLibrary.Get().enemyarmorList[0])));
     bossList.Add(new Actor("cyberbear", "melee_aggressive", 12, new Weapon(ItemLibrary.Get().enemyweaponList[0]), new Armor(ItemLibrary.Get().enemyarmorList[1])));
 }