/// <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); }
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; }
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); }
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]))); }