internal static void decreaseStats() { //Decreases all egg timers foreach (Egg item in player.Eggs) { if (item.HatchingTime > 0) { item.HatchingTime -= 1; } } //Takes care of hunger if (tama.Food > 0) { tama.Food -= 1; } //Takes care of happiness if (tama.Happy > 0) { tama.Happy -= 1; if (tama.Food <= 0) { tama.Happy -= 1; } } tama = tama.grantExp(tama, 5); Thread.Sleep(10000); // Run all this each 10 second }
internal Enemy CreateGnomeScout(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); Monster tama = new Monster(10, 10, 100); Enemy enemy = new Enemy(tama, "Gnome Scout", rng.Next(2, 10 * level), 0, 0, level, drops); return enemy; }
internal Enemy(Monster tama, string name, int money, int herbs, int metal, int level, List<Item> drops) { this.tama = tama.giveALevel(tama, level); this.name = name; this.money = money; this.herbs = herbs; this.metal = metal; this.drops = drops; }
internal Enemy CreateGnome(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); drops.Add(IC.CreateHPItem("HP potion 10", Item.equipment.potion, 10, 0)); Monster tama = new Monster(10, 2, 50); Enemy enemy = new Enemy(tama, "Gnome", rng.Next(0, 10 * level), 0, rng.Next(0, 5 * level), level, drops); return enemy; }
internal Enemy CreateFirefly(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); drops.Add(IC.CreateHPItem("HP potion 10", Item.equipment.potion, 10, 0)); Monster monster = new Monster(10, 10, 100); Enemy enemy = new Enemy(monster, "Firefly", rng.Next(0, 5 * level), rng.Next(0, 5 * level), 0, level, drops); return enemy; }
internal Enemy CreateFairy(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); drops.Add(IC.CreateHPItem("HP potion 10", Item.equipment.potion, 10, 0)); drops.Add(IC.CreateAtkItem("Bronze wand", Item.equipment.weapon, 15, 0, 100)); Monster tama = new Monster(10, 5, 40); tama.Weapon = IC.CreateAtkItem("Bronze wand", Item.equipment.weapon, 15, 0, 100); Enemy enemy = new Enemy(tama, "Fairy", rng.Next(0, 10 * level), 0, rng.Next(0, 5 * level), level, drops); return enemy; }
internal Enemy CreateGoblin(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); drops.Add(IC.CreateArmorItem("Bronze chest", Item.equipment.chest, 10, 0)); drops.Add(IC.CreateHPItem("HP potion 10", Item.equipment.potion, 10, 0)); drops.Add(IC.CreateAtkItem("Bronze dagger", Item.equipment.weapon, 5, 0, 100)); Monster tama = new Monster(5, 2, 50); tama.Weapon = IC.CreateAtkItem("Bronze dagger", Item.equipment.weapon, 5, 0, 100); Enemy enemy = new Enemy(tama, "Goblin", rng.Next(0, 10 * level), 0, rng.Next(0, 5 * level), level, drops); return enemy; }
/// <summary> /// Only use for creating enemy Monster cause of randomness /// </summary> /// <param name="tama"></param> /// <param name="levels"></param> /// <returns></returns> internal Monster giveALevel(Monster tama, int levels) { Random rng = new Random(); tama.Level = levels; tama.CurrentHealth = tama.CurrentHealth + (rng.Next(1, 3) * levels + 3 * levels); tama.Attack = tama.Attack + (rng.Next(1, 3) * levels + 3 * levels); tama.Armor = tama.Armor + (rng.Next(1, 3) * levels + 3 * levels); return tama; }
/// <summary> /// Takes in a player object to get the items there can be used in the fight and setup a fight between the 2 Monsters /// the user keeps interacting between each attack and can either attack, use item or run from the fight /// </summary> /// <param name="player"></param> /// <param name="you"></param> /// <param name="enemy"></param> /// <returns></returns> internal Player FightMonster(Player player, Monster you, Enemy ene) { this.you = you; old = you; Monster enemy = ene.Tama; enemy.prepareForBattle(); //Configures the attack and armor to itself if it has been modified by a battle before this.you.prepareForBattle(); //Configures the attack and armor to itself if it has been modified by a battle before int choice = 0; Console.Clear(); while (enemy.CurrentHealth > 0 && this.you.CurrentHealth > 0) { fightingMenu: Console.WriteLine("****************"); Console.WriteLine("Enemy: " + enemy.CurrentHealth + " you: " + this.you.CurrentHealth); Console.WriteLine("****************"); Console.WriteLine("Enemy stats: armor: " + enemy.CurrentArmor + " attack: " + enemy.CurrentAttack); Console.WriteLine(); Console.WriteLine("Your stats: armor: " + this.you.CurrentArmor + " attack: " + this.you.CurrentAttack); Console.WriteLine("****************"); Console.WriteLine(); Console.WriteLine("1. Do you wanna attack?"); Console.WriteLine("2. Use an item?"); Console.WriteLine("3. Run from the fight?"); try { choice = Convert.ToInt32(Console.ReadLine()); Console.Clear(); } catch (Exception) { Console.Clear(); goto fightingMenu; } switch (choice) { case 1: int a = attack(this.you, enemy); enemy.CurrentHealth -= a; Console.WriteLine("You did " + a + " damage to it"); Console.WriteLine(); break; case 2: if (player.Inventory.Count <= 0) { goto fightingMenu; } for (int i = 0; i < player.Inventory.Count; i++) { if (!player.Inventory[i].Name.Contains("potion")) { goto fightingMenu; } } player = useItem(player, this.you); goto fightingMenu; case 3: this.you.CurrentHealth = this.you.MaxHealth; player.Monsters.Remove(old); player.Monsters.Add(this.you); return player; default: goto fightingMenu; } if (enemy.CurrentHealth > 0 && this.you.CurrentHealth > 0) { int a = attack(enemy, this.you); this.you.CurrentHealth -= a; Console.WriteLine(ene.Name +" did " + a + " damage to you"); Console.WriteLine(); } } if (enemy.CurrentHealth <= 0) { Console.Clear(); Console.WriteLine("Congratz you won the battle"); Console.WriteLine(); this.you = this.you.grantExp(you, 20 * enemy.Level); player.Money += 5 * enemy.Level; Console.WriteLine("Exp: " + 20 * enemy.Level); Console.WriteLine("Money: " + 5 * enemy.Level); player.updateQuests(ene, null, null, 0, 5 * enemy.Level, 0); Console.WriteLine(); } else { Console.WriteLine("You lost the battle"); Console.WriteLine(); //TODO Decide what to do when the player lost the battle } this.you.CurrentHealth = this.you.MaxHealth; player.Monsters.Remove(old); player.Monsters.Add(this.you); return player; }
internal Enemy CreateRiverMonster(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); Monster tama = new Monster(10, 10, 200); Enemy enemy = new Enemy(tama, "River Monster", rng.Next(10, 20 * level), 0, 0, level, drops); return enemy; }
private void petTamaguchi() { if (tama.Happy < 100) { tama = tama.grantExp(tama, 1); tama.Happy++; } else Console.WriteLine("Your Tamagouchi can't get more excited"); }
private void feedTamaguchi() { if (tama.Food < 100) { tama.Food += 1; tama = tama.grantExp(tama, 1); if (tama.Happy < 100) { tama.Happy++; } } }
internal Enemy CreateSwampHumanoid(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); drops.Add(IC.CreateHPItem("HP potion 10", Item.equipment.potion, 10, 0)); Monster monster = new Monster(5, 5, 100); monster.Weapon = IC.CreateAtkItem("Wooden Stick", Item.equipment.weapon, 5, 0, 100); Enemy enemy = new Enemy(monster, "Swamp Humanoid", rng.Next(0, 5 * level), 0, 0, level, drops); return enemy; }
public void Shoot(ref Monster.Monster CurrentMonster)//3 types: "Handgun","Shotgun" and "AK". No need for type, since PlayerGun is the gun player is using. { int newHP = CurrentMonster.GetHP() - (int)PlayerGun.CurrentPower; CurrentMonster.SetHP(newHP); }
internal Enemy CreateIronGolem(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); drops.Add(IC.CreateHPItem("HP potion 10", Item.equipment.potion, 10, 0)); Monster monster = new Monster(7, 25, 150); Enemy enemy = new Enemy(monster, "Iron Golem", rng.Next(0, 5 * level), 0, rng.Next(5, 15 * level), level, drops); return enemy; }
internal Enemy CreateSkeleton(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); drops.Add(IC.CreateHPItem("HP potion 10", Item.equipment.potion, 10, 0)); drops.Add(IC.CreateArmorItem("Bronze chest", Item.equipment.chest, 10, 0)); drops.Add(IC.CreateArmorItem("Bronze shield", Item.equipment.shield, 10, 0)); drops.Add(IC.CreateAtkItem("Bronze bow", Item.equipment.weapon, 10, 0, 100)); Monster tama = new Monster(7, 4, 70); tama.Shield = IC.CreateArmorItem("Bronze chest", Item.equipment.chest, 10, 0); tama.Weapon = IC.CreateAtkItem("Bronze bow", Item.equipment.weapon, 10, 0, 100); tama.Chest = IC.CreateArmorItem("Bronze shield", Item.equipment.shield, 10, 0); Enemy enemy = new Enemy(tama, "Skeleton", rng.Next(0, 10 * level), 0, rng.Next(0, 5 * level), level, drops); return enemy; }
//TODO display that the user got a level internal Monster grantExp(Monster tama, int exp) { tama.Exp = tama.Exp + exp; if ((Math.Sqrt(tama.Exp) * 0.1) > tama.Level) { int a = 0; foreach (char c in genetic) { a += int.Parse(c.ToString()); } a = a / 2; tama.Level++; tama.CurrentHealth = tama.CurrentHealth + a; tama.MaxHealth = tama.MaxHealth + 5 + a; tama.Attack = tama.Attack + a / 2; tama.Armor = tama.Armor + a; Console.Clear(); Console.WriteLine("You got a level!"); a = a + 5; Console.WriteLine("You got " + a + " health"); a = (a - 5) / 2; Console.WriteLine("You got " + a + " attack"); a = a * 2; Console.WriteLine("You got " + a + " armor"); Console.WriteLine("Press enter to continue"); Console.ReadLine(); return tama; } return tama; }
internal void startLoadMenu() { Console.Clear(); player = GetPlayer(); tama = player.Monsters[0]; Worker worker = new Worker(); Thread thread1 = new Thread(new ThreadStart(worker.doWork)); Thread thread2 = new Thread(new ThreadStart(MonsterMenu)); thread1.Start(); thread2.Start(); while (!thread1.IsAlive) ; Thread.Sleep(1); thread1.Join(); try { thread1.Start(); } catch (Exception) { Console.WriteLine("Couldn't restart thread"); } while (!thread2.IsAlive) ; Thread.Sleep(1); thread2.Join(); }
public void MonsterDamage(Monster.Monster currentMonster) { //TODO }
private Monster changeMonster() { Console.Clear(); Console.WriteLine("***** Displaying your Monsters *****"); int count = 1; foreach (var item in player.Monsters) { Console.WriteLine("Number: " + count); Console.WriteLine(item.ToString()); Console.WriteLine(item.showStats()); Console.WriteLine(); count++; } try { Console.WriteLine("Which Monster do you want to change to?"); Console.WriteLine("If you don't want to change it don't write anything"); int choice = int.Parse(Console.ReadLine()) - 1; tama = player.Monsters[choice]; } catch (Exception) { Console.WriteLine("No such Monster available"); } return tama; }
private int combatStrength(Monster m) { if (m.Weapon == null) { return m.Attack + m.MaxHealth * m.Armor / 2; } else { return ((m.Weapon.HitChance / 100) * m.Attack) + m.MaxHealth * m.Armor / 2; } }
internal Enemy CreateSorcerer(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); Item item = IC.CreateAtkItem("Ice wand",Item.equipment.weapon,50,level,100); drops.Add(item); Monster monster = new Monster(25, 10, 200); monster.Weapon = item; Enemy enemy = new Enemy(monster, "Sorcerer", rng.Next(0, 5 * level), 0, 0, level, drops); return enemy; }
internal void startNewtMonsterGame() { Console.Clear(); try_parse: Console.WriteLine("What is your username?"); try { String username = Console.ReadLine(); Console.Clear(); player = new Player(username); ItemCreater ic = new ItemCreater(); player.Inventory.Add(ic.CreateHPItem("HP potion", Item.equipment.potion, 20, 1)); player.Inventory.Add(ic.CreateHPItem("HP potion", Item.equipment.potion, 20, 1)); player.Inventory.Add(ic.CreateHPItem("HP potion", Item.equipment.potion, 20, 1)); player.Inventory.Add(ic.CreateHPItem("HP potion", Item.equipment.potion, 20, 1)); player.Inventory.Add(ic.CreateHPItem("HP potion", Item.equipment.potion, 20, 1)); player.Inventory.Add(ic.CreateHPItem("HP potion", Item.equipment.potion, 20, 1)); tama = new Monster(); player.Monsters.Add(tama); } catch (Exception) { Console.WriteLine("There is no such option available"); goto try_parse; } Console.WriteLine("You start adventure out in the world"); Console.WriteLine(); Console.WriteLine("Press Enter to continue"); Console.Read(); Console.Clear(); Worker worker = new Worker(); Thread thread1 = new Thread(new ThreadStart(worker.doWork)); Thread thread2 = new Thread(new ThreadStart(MonsterMenu)); thread1.Start(); thread2.Start(); while (!thread1.IsAlive) ; Thread.Sleep(1); thread1.Join(); try { thread1.Start(); } catch (Exception) { Console.WriteLine("Couldn't restart thread"); } while (!thread2.IsAlive) ; Thread.Sleep(1); thread2.Join(); }
/// <summary> /// Takes in an egg as param and then calls fitness on it to find out what genetics the new Monster should have /// then sets the new fitness to the Monster and returns it /// </summary> /// <param name="egg"></param> /// <returns></returns> internal Monster HatchEgg(Egg egg) { Monster tama = new Monster(); tama.Genetic = fitness(egg.Father, egg.Mother, egg.GeneticCrossover); return tama; }
/// <summary> /// Takes in 2 Monsters and take there genetics and create an egg with both genetics and return it /// </summary> /// <param name="father"></param> /// <param name="mother"></param> /// <returns></returns> internal Egg MateMonsters(Monster father, Monster mother) { Egg egg = new Egg(father.Genetic, mother.Genetic); return egg; }
/// <summary> /// Takes in 2 Monsters and takes the attack and depending on the hit chance, deffense and randomness /// the attack decreases the other Monsters current health /// /// By default all weapons have 20% double damage chance /// </summary> /// <param name="attacker"></param> /// <param name="deffender"></param> /// <returns></returns> private int attack(Monster attacker, Monster deffender) { int deffense = deffender.CurrentArmor; int hitChance = attacker.Weapon.HitChance; int damage = attacker.getAttack(); int doubleDamage = 0; if (rng.Next(0, 101) <= attacker.Weapon.DoubleChance) { doubleDamage = damage; } if (hitChance > rng.Next(0, 101)) { damage = Math.Abs(damage - (deffense / 2) + doubleDamage); } else { damage = 0; } return damage; }
private void petMenu() { Console.Clear(); petMenu: Console.WriteLine(); Console.WriteLine("Your monsters stats: " + tama.showStats()); Console.WriteLine(); Console.WriteLine("1 Pet your Monster"); Console.WriteLine("2 Feed your Monster"); Console.WriteLine("3 Heal your Monster"); Console.WriteLine("4 Check your eggs"); Console.WriteLine("5 Change your Monster"); Console.WriteLine("6 Create an egg"); Console.WriteLine("7 Mate 2 of your monsters"); Console.WriteLine("8 Go back to the menu"); try { choice = int.Parse(Console.ReadLine()); } catch (Exception) { Console.Clear(); goto petMenu; } switch (choice) { case 1: Console.Clear(); petTamaguchi(); petMenu(); break; case 2: Console.Clear(); feedTamaguchi(); petMenu(); break; case 3: Console.Clear(); sendToHospital(); petMenu(); break; case 4: Console.Clear(); checkEggs(); petMenu(); break; case 5: Console.Clear(); tama = changeMonster(); petMenu(); break; case 6: Console.Clear(); createEgg(); petMenu(); break; case 7: Console.Clear(); mateMonsters(); petMenu(); break; case 8: Console.Clear(); MonsterMenu(); break; default: Console.Clear(); petMenu(); break; } }
/// <summary> /// Takes in a player and displays its inventory and then the player can choose an item which is then /// uesd on the Monster /// </summary> /// <param name="you"></param> /// <param name="tama"></param> /// <returns></returns> private Player useItem(Player you, Monster tama) { combatItems = new List<Item>(); Console.Clear(); Console.WriteLine("*** Displaying your items ***"); int count = 1; for (int i = 0; i < you.Inventory.Count; i++) { if (you.Inventory[i].Equip == Item.equipment.potion) { Console.WriteLine("Number: " + count + " " + you.Inventory[i].Name); count++; combatItems.Add(you.Inventory[i]); } } useItem: Console.WriteLine("What item number do you want to use?"); Console.WriteLine("type 0 if you don't want to use any item"); foreach (var item in combatItems) { Console.WriteLine("It gives you " + item.showStats()); } int choice; try { choice = int.Parse(Console.ReadLine()) - 1; } catch (Exception) { Console.Clear(); goto useItem; } if (choice < 0 || choice > combatItems.Count) { this.you = tama; return you; } tama.CurrentArmor += combatItems[choice].Armor; tama.CurrentAttack += combatItems[choice].Atk; tama.CurrentHealth += combatItems[choice].Hp; you.Inventory.Remove(combatItems[choice]); combatItems = new List<Item>(); this.you = tama; return you; }
private void showBattleMenu() { Console.Clear(); Console.WriteLine("**** Battle menu ****"); Console.WriteLine("Status on your monster: " + tama.ToString()); Console.WriteLine(); Console.WriteLine("1. Battle a random monster level 1"); Console.WriteLine("2. Battle a random monster level 1-5"); Console.WriteLine("3. Battle a random monster level 5-10"); Console.WriteLine("4. Battle a random monster level 10-15"); Console.WriteLine("5. Go back to the Monster menu"); try { choice = int.Parse(Console.ReadLine()); } catch (Exception) { showBattleMenu(); } Random rng = new Random(); Enemy enemy; switch (choice) { case 1: enemy = EC.CreateRandomEnemy(1); player = FM.FightMonster(player, tama, enemy); tama = player.Monsters[player.Monsters.Count - 1]; showBattleMenu(); break; case 2: enemy = EC.CreateRandomEnemy(rng.Next(1, 6)); player = FM.FightMonster(player, tama, enemy); showBattleMenu(); break; case 3: enemy = EC.CreateRandomEnemy(rng.Next(6, 10)); player = FM.FightMonster(player, tama, enemy); showBattleMenu(); break; case 4: enemy = EC.CreateRandomEnemy(rng.Next(10, 16)); player = FM.FightMonster(player, tama, enemy); showBattleMenu(); break; case 5: Console.Clear(); MonsterMenu(); break; default: break; } }
internal Enemy CreateMummy(int level) { Random rng = new Random(); List<Item> drops = new List<Item>(); Monster monster = new Monster(20, 10, 100); Enemy enemy = new Enemy(monster, "Mummy", rng.Next(0, 5 * level), 0, 0, level, drops); return enemy; }