Example #1
0
        public static void Register()
        {
            Suite suite = new Suite();

            suite.Name = "monster/attack";

            suite.SetSetup(delegate() {
                Monster.Monster_Race r = UnitTest_Data.R_Human();

                m           = new Monster.Monster();
                m.Race      = r;
                m.r_idx     = (short)r.ridx;
                Misc.r_info = new Monster.Monster_Race[] { r };

                Player.Player.instance = null;
                Random.fix(100);
            });
            suite.NoTeardown();


            suite.AddTest("blows", test_blows);
            suite.AddTest("effects", test_effects);

            UnitTest_Main.AddSuite(suite);
        }
Example #2
0
        //===================================================================================================================================================================================
        // Skriver ut information och Stats efter att ett monster blivit besegrat.
        //===================================================================================================================================================================================
        public static void DefetedMonsterGains(Monster.Monster monster)
        {
            if (monster.Hp <= 0)
            {
                Console.Write($"You defeted the ");
                Tools.MagnetaTextWr($"{monster.Name}\n");

                Tools.MagnetaTextW($"\n{monster.Name} ");
                Console.Write("dropped ");
                Tools.YellowTextWr($"{monster.GoldDrop} Gold");
                playerOne.Gold += monster.GoldDrop;
                Console.Write($"Your gold ammount is: ");
                Tools.YellowTextWr($"{playerOne.Gold}\n");

                playerOne.Exp += monster.Exp;
                Console.WriteLine($"You gained {monster.Exp} exp.");
                Console.WriteLine($"Exp: {playerOne.Exp} / {playerOne.ExpLevelUp} to next level.");

                if (playerOne.Exp == playerOne.ExpLevelUp)
                {
                    playerOne.Exp         = default;
                    playerOne.Level      += 1;
                    monster.Level         = playerOne.Level;
                    playerOne.ExpLevelUp += 100;
                    Console.WriteLine($"\nNice! You are level {playerOne.Level} now.");
                    LevelTen(); // När level 10 är uppnåt måste användaren skriva in ett lösenord för att kunna fortsätta
                }

                Console.ReadLine();
            }
        }
Example #3
0
        /**
         * Extract the multiplier from a given object hitting a given monster.
         *
         * \param o_ptr is the object being used to attack
         * \param m_ptr is the monster being attacked
         * \param best_s_ptr is the best applicable slay_table entry, or null if no
         *  slay already known
         * \param real is whether this is a real attack (where we update lore) or a
         *  simulation (where we don't)
         * \param known_only is whether we are using all the object flags, or only
         * the ones we *already* know about
         */
        //Best_s_ptr was slay**
        public static void improve_attack_modifier(Object o_ptr, Monster.Monster m_ptr,
                                                   ref Slay best_s_ptr, bool real, bool known_only)
        {
            Monster_Race r_ptr   = Misc.r_info[m_ptr.r_idx];
            Monster_Lore l_ptr   = Misc.l_list[m_ptr.r_idx];
            Bitflag      f       = new Bitflag(Object_Flag.SIZE);
            Bitflag      known_f = new Bitflag(Object_Flag.SIZE);
            Bitflag      note_f  = new Bitflag(Object_Flag.SIZE);
            int          i;

            o_ptr.object_flags(ref f);
            o_ptr.object_flags_known(ref known_f);

            for (i = 0; i < Slay.MAX.value; i++)
            {
                Slay s_ptr = list[i];
                if ((known_only && !known_f.has(s_ptr.object_flag.value)) || (!known_only && !f.has(s_ptr.object_flag.value)))
                {
                    continue;
                }

                /* In a real attack, learn about monster resistance or slay match if:
                 * EITHER the slay flag on the object is known,
                 * OR the monster is vulnerable to the slay/brand
                 */
                if (real && (known_f.has(s_ptr.object_flag.value) || (s_ptr.monster_flag != Monster_Flag.NONE &&
                                                                      r_ptr.flags.has(s_ptr.monster_flag.value)) ||
                             (s_ptr.resist_flag != Monster_Flag.NONE && !r_ptr.flags.has(s_ptr.resist_flag.value))))
                {
                    /* notice any brand or slay that would affect monster */
                    note_f.wipe();
                    note_f.on(s_ptr.object_flag.value);
                    object_notice_slays(o_ptr, note_f);

                    if (m_ptr.ml && s_ptr.monster_flag != Monster_Flag.NONE)
                    {
                        l_ptr.flags.on(s_ptr.monster_flag.value);
                    }

                    if (m_ptr.ml && s_ptr.resist_flag != Monster_Flag.NONE)
                    {
                        l_ptr.flags.on(s_ptr.resist_flag.value);
                    }
                }

                /* If the monster doesn't resist or the slay flag matches */
                if ((s_ptr.brand != null && s_ptr.brand.Length != 0 &&
                     !r_ptr.flags.has(s_ptr.resist_flag.value)) ||
                    (s_ptr.monster_flag != Monster_Flag.NONE &&
                     r_ptr.flags.has(s_ptr.monster_flag.value)))
                {
                    /* compare multipliers to determine best attack */
                    if ((best_s_ptr == null) || ((best_s_ptr).mult < s_ptr.mult))
                    {
                        best_s_ptr = s_ptr;
                    }
                }
            }
        }
Example #4
0
        //===================================================================================================================================================================================
        // Beroende på vilken level monster är på ändras monstrets randomDmg  max skada, random guld droppas av monstret
        //===================================================================================================================================================================================
        public static void MonsterRandomDmgAndGoldDrop(Monster.Monster monster)
        {
            int randomMonsterDmg;

            if (monster.Level == 1)
            {
                randomMonsterDmg = rand.Next(1, 10);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 2)
            {
                randomMonsterDmg = rand.Next(1, 20);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 3)
            {
                randomMonsterDmg = rand.Next(1, 30);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 4)
            {
                randomMonsterDmg = rand.Next(1, 40);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 5)
            {
                randomMonsterDmg = rand.Next(1, 50);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 6)
            {
                randomMonsterDmg = rand.Next(1, 60);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 7)
            {
                randomMonsterDmg = rand.Next(1, 70);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 8)
            {
                randomMonsterDmg = rand.Next(1, 80);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 9)
            {
                randomMonsterDmg = rand.Next(1, 90);
                monster.AtkDmg   = randomMonsterDmg;
            }
            else if (monster.Level == 10)
            {
                randomMonsterDmg = rand.Next(1, 100);
                monster.AtkDmg   = randomMonsterDmg;
            }

            int randomMonsterGoldDrop = rand.Next(0, 100);

            monster.GoldDrop = randomMonsterGoldDrop;
        }
 /// <summary>
 /// Moster can interact with the Hotel based by it's type
 /// </summary>
 /// <param name="monster"></param>
 public void Interact(Monster.Monster monster)
 {
     if (monster is Godzilla)
     {
         DestroyLocationTypes();
         InitialiseHotelDimension();
     }
 }
Example #6
0
        public override void Move(Monster.Monster monster)
        {
            var coordinates = gameManager.GetCoordinates();

            monster.Position++;
            var coordinatesByPosition = coordinates.FirstOrDefault(x => x.CoordinateIndex == monster.Position);

            monster.XCoordinate = coordinatesByPosition != null ? coordinatesByPosition.XCoordinate : 0;
            monster.YCoordinate = coordinatesByPosition != null ? coordinatesByPosition.YCoordinate : 0;
        }
Example #7
0
 //===================================================================================================================================================================================
 // En metod som tar in metoder som styr battle systemet
 //===================================================================================================================================================================================
 public static void NewBattle(Monster.Monster monster)
 {
     Tools.DarkYellowTextWr("=========================================================================");
     PlayerBattleDmg(monster); // Skriver ut vilket monster som attackeras och hur mycket Dmg player slår
     MonsterBattleHp(monster); // Skriver ut hur mycket Hp monstret har efter den blivit skadad
     Tools.DarkYellowTextWr("=========================================================================\n\n");
     Tools.DarkYellowTextWr("=========================================================================");
     MonsterBattleDmg(monster); // Skriver ut vilket monster som attackerar och hur mycket Dmg monstret slår
     PlayerBattleHp();          // Skriver ut hur mycket Hp player har efter den blivit skadad
     Tools.DarkYellowTextWr("=========================================================================\n");
     BattleHitWonLose(monster); // Beroende på player och monsters Hp skrivs något av dessa if statments ut
 }
Example #8
0
        static int take1(Player.Player p, Monster.Monster m, RBM blow, RBE eff)
        {
            int oldv, newv;

            m.Race.blow[0].effect = eff;
            m.Race.blow[0].method = blow;
            p.chp = p.mhp;
            oldv  = p.chp;
            m.make_attack_normal(p);
            newv  = p.chp;
            p.chp = p.mhp;
            return(oldv - newv);
        }
Example #9
0
 //===================================================================================================================================================================================
 // Skriver ut vilket monster som attackeras och hur mycket Dmg player slår
 //===================================================================================================================================================================================
 private static void PlayerBattleDmg(Monster.Monster monster)
 {
     Console.Write($"You attack the ");
     Tools.MagnetaTextW($"{monster.Name} ");
     Console.Write("with your ");
     Tools.MagnetaTextW($"{playerOne.WeponName} ");
     Console.Write("and deal ");
     Tools.BlueTextW($"{playerOne.Dmg} ");
     Console.Write("(");
     Tools.BlueTextW($"+{playerOne.Strenght}");
     Console.WriteLine(") damage.");
     monster.Hp = monster.Hp - playerOne.Dmg - playerOne.Strenght;
 }
        public void AddDeadMonster(Monster.Monster monster)
        {
            notNullReference.Check(monster, "monster");

            if (monster.EntityRole() == EntityRole.Environment)
            {
                return;
            }

            deadMonstersSoFarIncludingOnesSpawnedByOthers.Add(monster);
            if (monster.SpawnSource().Source == SpawnSource.Dungeon_System)
            {
                deadMonstersSoFar.Add(monster);
            }
        }
Example #11
0
        private static void AttackMonster(Monster.Monster monster)
        {
            int randomPlayerDmg = rand.Next(1, 50);

            Player.Player.player.PlayerDmg = randomPlayerDmg;
            int randomMonsterDmg = rand.Next(1, 25);

            monster.MonsterAtkDmg = randomMonsterDmg;
            Console.WriteLine($"You attack the {monster.MonsterName} with your {Player.Player.player.PlayerWepon} and deal {Player.Player.player.PlayerDmg} damage.");
            monster.MonsterHp = monster.MonsterHp - Player.Player.player.PlayerDmg;
            Console.WriteLine($"The {monster.MonsterName} life is {monster.MonsterHp} / {monster.MonsterMaxHp}.\n");
            Console.WriteLine($"The {monster.MonsterName} attack you with {monster.MonsterAtkName} and deal {monster.MonsterAtkDmg}.");
            Player.Player.player.PlayerHp = Player.Player.player.PlayerHp - monster.MonsterAtkDmg;
            Console.WriteLine($"Your life is {Player.Player.player.PlayerHp} / 100 ");
            Console.ReadLine();
        }
Example #12
0
 //===================================================================================================================================================================================
 // Skriver ut hur mycket Hp monstret har efter den blivit skadad
 //===================================================================================================================================================================================
 private static void MonsterBattleHp(Monster.Monster monster)
 {
     if (monster.Hp > 0)
     {
         Console.Write($"The {monster.Name} life is ");
         Tools.RedTextW($"{monster.Hp} ");
         Console.Write("/");
         Tools.GreenTextWr($" {monster.MaxHp}.");
     }
     else if (monster.Hp <= 0)
     {
         Console.Write($"The {monster.Name} life is ");
         Tools.RedTextW($"0 ");
         Console.Write("/");
         Tools.GreenTextWr($" {monster.MaxHp}.");
     }
 }
Example #13
0
        /// <inheritdoc />
        public override void AddExp(double exp, Monster.Monster monster = null)
        {
            string msg = monster == null
                    ? $"You just earned +{Coloring.Exp(exp)} experience!"
                    : $"The {Coloring.Name(monster.Name)} gave you +{Coloring.Exp(exp)}!";

            History.Add(LogType.Info, msg);
            Adventure?.LogEntries.Enqueue(new LogEntry(LogType.Info, msg));

            Exp += exp;

            while (Exp >= XpToLevelUp)
            {
                CurrentLevel += 1;
                LevelShifts.Add(_currentShift.Height);
                LevelUp();
            }
        }
Example #14
0
 //===================================================================================================================================================================================
 // Beroende på player och monsters Hp skrivs något av dessa if statments ut
 //===================================================================================================================================================================================
 private static void BattleHitWonLose(Monster.Monster monster)
 {
     if (monster.Hp > 0 && playerOne.Hp > 0)
     {
         Console.Write("Press ENTER to hit again!     HIT: ");
     }
     else if (monster.Hp <= 0 && playerOne.Hp > 0)
     {
         Tools.GreenTextWr("You Won The Battle!");
     }
     else if (playerOne.Hp <= 0)
     {
         Tools.RedTextWr("YOU DIED");
         Console.ReadLine();
         Console.Clear();
         Tools.Exit();
     }
 }
Example #15
0
 //===================================================================================================================================================================================
 // Skriver ut vilket monster som attackerar och hur mycket Dmg monstret slår
 //===================================================================================================================================================================================
 private static void MonsterBattleDmg(Monster.Monster monster)
 {
     if (monster.Hp > 0)
     {
         Console.Write($"The ");
         Tools.MagnetaTextW($"{monster.Name} ");
         Console.Write("attack you with ");
         Tools.MagnetaTextW($"{monster.AtkName} ");
         Console.Write("and deal ");
         Tools.BlueTextW($"{monster.AtkDmg} ");
         Console.WriteLine("damage.");
         playerOne.Hp -= monster.AtkDmg;
     }
     else if (monster.Hp <= 0)
     {
         Console.Write($"The ");
         Tools.MagnetaTextW($"{monster.Name} ");
         Console.Write("died before it could hit you. ");
     }
 }
        public bool AreAllBeatableMonstersFromCurrentStageDead()
        {
            int numberOfSpawnMonsterThatIsDead = 0;

            for (int spawnMonsterIndex = 0; spawnMonsterIndex < spawnedMonstersThatAreNotEnvironmentRole.Count; spawnMonsterIndex++)
            {
                long spawnMonsterUniqueId = spawnedMonstersThatAreNotEnvironmentRole[spawnMonsterIndex];

                for (int deadMonsterIndex = 0; deadMonsterIndex < deadMonstersSoFarIncludingOnesSpawnedByOthers.Count; deadMonsterIndex++)
                {
                    Monster.Monster deadMonster = deadMonstersSoFarIncludingOnesSpawnedByOthers[deadMonsterIndex];
                    if (spawnMonsterUniqueId == deadMonster.UniqueId())
                    {
                        numberOfSpawnMonsterThatIsDead += 1;
                    }
                }
            }

            return(numberOfSpawnMonsterThatIsDead >= spawnedMonstersThatAreNotEnvironmentRole.Count);
        }
Example #17
0
        /// <inheritdoc />
        public override void AddExp(double exp, Monster.Monster monster = null)
        {
            var activity = ActivityLog.Create(ActivityLog.ActivityType.Exp, ActivityLog.ActivityState.None, new int[] { (int)exp }, monster);

            History.Add(LogType.Info, activity);
            if (Adventure != null)
            {
                Adventure.Enqueue(AdventureLog.Info(this, null, activity));
                Adventure.AdventureStats[AdventureStats.Experience] = Adventure.AdventureStats[AdventureStats.Experience] + exp;
            }

            Exp += exp;

            while (Exp >= XpToLevelUp)
            {
                CurrentLevel += 1;
                LevelShifts.Add(_currentShift.Height);
                LevelUp();
            }
        }
Example #18
0
        //===================================================================================================================================================================================
        // Styr hela flödet av battlesystemet
        //===================================================================================================================================================================================
        private static void PlayerVsMonster(Monster.Monster monster)
        {
            do
            {
                int randomPlayerDmg = random.Next(1, 60);    // Sätter playerDmg till random
                playerOne.Dmg = randomPlayerDmg;
                Battle.MonsterRandomDmgAndGoldDrop(monster); // Beroende på vilken level monster är på ändras monstrets randomDmg  max skada, random guld droppas av monstret

                if (monster.Hp == 0)
                {
                    break;
                }

                Battle.NewBattle(monster); // En metod som tar in metoder som styr battle systemet

                Console.ReadLine();

                Console.Clear();
            } while (monster.Hp > 0);

            Battle.DefetedMonsterGains(monster); //  Skriver ut information och Stats efter att ett monster blivit besegrat.
        }
Example #19
0
        public int Attack(Monster.Monster monster)
        {
            int damage;

            if (EquippedWeapon.type == WeaponType.Sword)
            {
                damage = EquippedWeapon.StrengthModifier + (int)(Strength * 0.25);
            }
            else if (EquippedWeapon.type == WeaponType.Bow)
            {
                damage = EquippedWeapon.DexterityModifier + (int)(Dexterity * 0.25);
            }
            else if (EquippedWeapon.type == WeaponType.Staff)
            {
                damage = EquippedWeapon.IntelligenceModifier + (int)(Intelligence * 0.25);
            }
            else
            {
                damage = (int)(Strength * 0.25);
            }
            return(damage);
        }
Example #20
0
        public static void Register()
        {
            Suite suite = new Suite();
            suite.Name = "monster/attack";

            suite.SetSetup(delegate() {
                Monster.Monster_Race r = UnitTest_Data.R_Human();

                m = new Monster.Monster();
                m.Race = r;
                m.r_idx = (short)r.ridx;
                Misc.r_info = new Monster.Monster_Race[] {r};

                Player.Player.instance = null;
                Random.fix(100);
            });
            suite.NoTeardown();

            suite.AddTest("blows", test_blows);
            suite.AddTest("effects", test_effects);

            UnitTest_Main.AddSuite(suite);
        }
Example #21
0
        public Pitch GetPitch()
        {
            double margin = 0.0d;

            for (int i = 0; i < FieldArray.Length; i++)
            {

                if (i == 0 || i == GameController.PITCH_X - 1)
                {

                    if (i == 0)
                    {
                        Monster.Monster monster = new Monster.Monster(50, 100, playerOne);
                        monster.CurrentField = FieldArray[i];
                        monster.TargetField = FieldArray[i + 1];
                        playerOne.MonsterList.Add(monster);
                        FieldArray[i].Monster = monster;
                        FieldArray[i].AddChildren(monster);
                    }
                        else
                    {
                        Monster.Monster monster = new Monster.Monster(50, 100, playerTwo);
                        monster.CurrentField = FieldArray[i];
                        monster.TargetField = FieldArray[i - 1];
                        playerTwo.MonsterList.Add(monster);
                        FieldArray[i].Monster = monster;
                        FieldArray[i].AddChildren(monster);
                    }

                };
                Canvas.SetLeft(FieldArray[i], margin);
                Children.Add(FieldArray[i]);
                margin += 50.0d;
            }

            return this;
        }
Example #22
0
 public void AddChildren(UIElement uiElement)
 {
     IsSet = true;
     this.Monster = (Monster.Monster)uiElement;
     base.Children.Add(uiElement);
 }
Example #23
0
        /**
         * Calculate the rating for a given slay combination
         */
        int slay_power(bool verbose, StreamWriter log_file, bool known)
        {
            Bitflag s_index = new Bitflag(Object_Flag.SIZE);
            Bitflag f = new Bitflag(Object_Flag.SIZE);
            Bitflag f2 = new Bitflag(Object_Flag.SIZE);
            int sv = 0; //uint
            int i, j;
            int mult;
            Slay best_s_ptr = null;
            Monster_Race r_ptr;
            Monster.Monster m_ptr;
            //monster_type monster_type_body;
            string[] desc = new string[Slay.MAX.value];// = { 0 }, *
            string[] brand = new string[Slay.MAX.value];// = { 0 };
            int[] s_mult = new int[Slay.MAX.value];// = { 0 };

            if (known)
                object_flags(ref f);
            else
                object_flags_known(ref f);

            /* Combine the slay bytes into an index value, return if there are none */
            s_index.copy(f);
            Object_Flag.create_mask(f2, false, Object_Flag.object_flag_type.SLAY,
                Object_Flag.object_flag_type.KILL, Object_Flag.object_flag_type.BRAND);

            if (!s_index.is_inter(f2))
                return Eval.tot_mon_power;
            else
                s_index.inter(f2);

            /* Look in the cache to see if we know this one yet */
            sv = Slay.check_slay_cache(s_index);

            /* If it's cached (or there are no slays), return the value */
            if (sv != 0)	{
                //file_putf(log_file, "Slay cache hit\n");
                return sv;
            }

            /*
             * Otherwise we need to calculate the expected average multiplier
             * for this combination (multiplied by the total number of
             * monsters, which we'll divide out later).
             */
            for (i = 0; i < Misc.z_info.r_max; i++)	{
                best_s_ptr = null;
                mult = 1;
                r_ptr = Misc.r_info[i];
                if(r_ptr == null)
                    continue;
                m_ptr = new Monster.Monster();
                m_ptr.r_idx = (short)i;

                /* Find the best multiplier against this monster */
                Slay.improve_attack_modifier(this, m_ptr, ref best_s_ptr, false, !known);
                if (best_s_ptr != null)
                    mult = best_s_ptr.mult;

                /* Add the multiple to sv */
                sv += (int)(mult * r_ptr.scaled_power);
            }

            /*
             * To get the expected damage for this weapon, multiply the
             * average damage from base dice by sv, and divide by the
             * total number of monsters.
             */
            if (verbose) {
                /* Write info about the slay combination and multiplier */
                //file_putf(log_file, "Slay multiplier for: ");

                j = Slay.list_slays(s_index, s_index, desc, brand, s_mult, false);

                //for (i = 0; i < j; i++) {
                //    if (brand[i]) {
                //        file_putf(log_file, brand[i]);
                //    } else {
                //        file_putf(log_file, desc[i]);
                //    }
                //    file_putf(log_file, "x%d ", s_mult[i]);
                //}
                //file_putf(log_file, "\nsv is: %d\n", sv);
                //file_putf(log_file, " and t_m_p is: %d \n", tot_mon_power);
                //file_putf(log_file, "times 1000 is: %d\n", (1000 * sv) / tot_mon_power);
            }

            /* Add to the cache */
            if(Slay.fill_slay_cache(s_index, sv)) {
                //file_putf(log_file, "Added to slay cache\n");
            }

            return sv;
        }
Example #24
0
 static int mdam(Monster.Monster m)
 {
     return(m.Race.blow[0].d_dice);
 }
Example #25
0
        public void Battle(Player player1, Monster.Monster Monster1)
        {
            bool ValidInput  = false;
            bool Flee        = false;
            bool monsterdead = false;
            int  damage      = 0;

            while (!Flee && (player1.HP > 0 && !monsterdead))
            {
                Console.WriteLine("New Round");
                Console.WriteLine("Monster is dead: " + monsterdead);

                while (!ValidInput)
                {
                    Console.WriteLine(" Its your turn what do you want to do /n 1) Fight /n 2) Use Item /n 3)Flee");
                    string input = Console.ReadLine();
                    int    choice;
                    if (int.TryParse(input, out choice))
                    {
                        if (choice == 1)
                        {
                            if (Monster1.type == "Goblin" && player1.EquippedWeapon.type == WeaponType.Staff)
                            {
                                if (player1.Intelligence - Monster1.dexterity < 0)
                                {
                                    damage = (int)Math.Round((1.1 * player1.Attack()));
                                }
                                else
                                {
                                    damage = (int)Math.Round((1.1 + (0.05 * (player1.Intelligence - Monster1.dexterity))) * player1.Attack());
                                }
                            }
                            else if (Monster1.type == "Orc" && player1.EquippedWeapon.type == WeaponType.Bow)
                            {
                                if (player1.Dexterity - Monster1.strength < 0)
                                {
                                    damage = (int)Math.Round((1.1 * player1.Attack()));
                                }
                                else
                                {
                                    damage = (int)Math.Round((1.1 + (0.05 * (player1.Dexterity - Monster1.strength))) * player1.Attack());
                                }
                            }
                            else if (Monster1.type == "Witch" && player1.EquippedWeapon.type == WeaponType.Sword)
                            {
                                if (player1.Strength - Monster1.intellect < 0)
                                {
                                    damage = (int)Math.Round((1.1 * player1.Attack()));
                                }
                                else
                                {
                                    damage = (int)Math.Round((1.1 + (0.05 * (player1.Strength - Monster1.intellect))) * player1.Attack());
                                }
                            }
                            else if (Monster1.type == "Goblin" && player1.EquippedWeapon.type == WeaponType.Sword)
                            {
                                if (player1.Strength - Monster1.dexterity < 0)
                                {
                                    damage = (int)Math.Round((.9 * player1.Attack()));
                                }
                                else
                                {
                                    damage = (int)Math.Round((.9 - (0.02 * (player1.Strength - Monster1.dexterity))) * player1.Attack());
                                }
                            }
                            else if (Monster1.type == "Orc" && player1.EquippedWeapon.type == WeaponType.Staff)
                            {
                                if (player1.Intelligence - Monster1.strength < 0)
                                {
                                    damage = (int)Math.Round((.9 * player1.Attack()));
                                }
                                else
                                {
                                    damage = (int)Math.Round((.9 - (0.02 * (player1.Strength - Monster1.dexterity))) * player1.Attack());
                                }
                            }
                            else if (Monster1.type == "Witch" && player1.EquippedWeapon.type == WeaponType.Bow)
                            {
                                if (player1.Dexterity - Monster1.intellect < 0)
                                {
                                    damage = (int)Math.Round((.9 * player1.Attack()));
                                }
                                else
                                {
                                    damage = (int)Math.Round((.9 - (0.02 * (player1.Intelligence - Monster1.strength))) * player1.Attack());
                                }
                            }
                            else if (Monster1.type == "Goblin" && player1.EquippedWeapon.type == WeaponType.Bow)
                            {
                                damage = (player1.Attack());
                            }
                            else if (Monster1.type == "Orc" && player1.EquippedWeapon.type == WeaponType.Sword)
                            {
                                damage = (player1.Attack());
                            }
                            else if (Monster1.type == "Witch" && player1.EquippedWeapon.type == WeaponType.Staff)
                            {
                                damage = (player1.Attack());
                            }

                            monsterdead = Monster1.takeDamage(damage);
                            Console.WriteLine("You swing and hit the " + Monster1.type + " for " + damage + " Damage. Remaining hp: " + Monster1.hp);
                        }
                        if (choice == 2)
                        {
                            Classes.Items.Type conType = (Classes.Items.Type)((player1.Level % 12) / 2 + (player1.Level % 12) % 2);
                            int  grade   = player1.Level / 12;
                            Item consume = new Consumable(grade, conType, "uncreative");
                            player1.UseConsumable(consume);
                            Console.WriteLine(conType + "+" + grade + " type consumable restored " + ((Consumable)consume).HealthRegen + " hp. Hp is now " + player1.HP);
                        }
                        if (choice == 3)
                        {
                            Random rand    = new Random();
                            int    FleeTry = rand.Next(0, 11);
                            Console.WriteLine(FleeTry);
                            if (Monster1.Level > player1.Level)
                            {
                                if (FleeTry > 6)
                                {
                                    Flee = true;
                                }
                            }
                            if (Monster1.Level < player1.Level)
                            {
                                if (FleeTry > 3)
                                {
                                    Flee = true;
                                }
                            }
                            if (Monster1.Level == player1.Level)
                            {
                                if (FleeTry > 4)
                                {
                                    Flee = true;
                                }
                            }
                            Console.WriteLine(Flee);
                        }
                        ValidInput = true;
                        if (choice > 3)
                        {
                            ValidInput = false;
                        }
                    }
                    else
                    {
                        Console.WriteLine("That is not valid input");
                    }
                }
                if (!monsterdead)
                {
                    if (Monster1.type == "Goblin" && player1.EquippedWeapon.type == WeaponType.Staff)
                    {
                        if (Monster1.dexterity - player1.Intelligence < 0)
                        {
                            damage = (int)Math.Round((1.1 * Monster1.damage));
                        }
                        else
                        {
                            damage = (int)Math.Round((1.1 + (0.05 * (Monster1.dexterity - player1.Intelligence) / 10)) * Monster1.damage);
                        }
                    }
                    else if (Monster1.type == "Orc" && player1.EquippedWeapon.type == WeaponType.Bow)
                    {
                        if (Monster1.strength - player1.Dexterity < 0)
                        {
                            damage = (int)Math.Round((1.1 * Monster1.damage));
                        }
                        else
                        {
                            damage = (int)Math.Round((1.1 + (0.05 * (Monster1.strength - player1.Dexterity) / 10)) * Monster1.damage);
                        }
                    }
                    else if (Monster1.type == "Witch" && player1.EquippedWeapon.type == WeaponType.Sword)
                    {
                        if (Monster1.intellect - player1.Strength < 0)
                        {
                            damage = (int)Math.Round((1.1 * Monster1.damage));
                        }
                        else
                        {
                            damage = (int)Math.Round((1.1 + (0.05 * (Monster1.intellect - player1.Strength))) * Monster1.damage);
                        }
                    }
                    else if (Monster1.type == "Goblin" && player1.EquippedWeapon.type == WeaponType.Sword)
                    {
                        if (Monster1.dexterity - player1.Strength < 0)
                        {
                            damage = (int)Math.Round((.9 * Monster1.damage));
                        }
                        else
                        {
                            damage = (int)Math.Round((.9 - (0.02 * (Monster1.dexterity - player1.Strength) / 10)) * Monster1.damage);
                        }
                    }
                    else if (Monster1.type == "Orc" && player1.EquippedWeapon.type == WeaponType.Staff)
                    {
                        if (player1.Intelligence - Monster1.strength < 0)
                        {
                            damage = (int)Math.Round((.9 * Monster1.damage));
                        }
                        else
                        {
                            damage = (int)Math.Round((.9 - (0.02 * (player1.Strength - Monster1.dexterity) / 10)) * Monster1.damage);
                        }
                    }
                    else if (Monster1.type == "Witch" && player1.EquippedWeapon.type == WeaponType.Bow)
                    {
                        if (player1.Dexterity - Monster1.intellect < 0)
                        {
                            damage = (int)Math.Round((.9 * Monster1.damage));
                        }
                        else
                        {
                            damage = (int)Math.Round((.9 - (0.02 * (player1.Intelligence - Monster1.strength) / 10)) * Monster1.damage);
                        }
                    }
                    else if (Monster1.type == "Goblin" && player1.EquippedWeapon.type == WeaponType.Bow)
                    {
                        damage = (Monster1.damage);
                    }
                    else if (Monster1.type == "Orc" && player1.EquippedWeapon.type == WeaponType.Sword)
                    {
                        damage = (Monster1.damage);
                    }
                    else if (Monster1.type == "Witch" && player1.EquippedWeapon.type == WeaponType.Staff)
                    {
                        damage = (Monster1.damage);
                    }
                    player1.HP -= damage;
                    Console.WriteLine("The " + Monster1.type + " Swings and hits you for " + damage + " Damage. Remaining hp: " + player1.HP);
                    Console.WriteLine();
                }

                ValidInput = false;
            }
            if (!Flee)
            {
                if (monsterdead)
                {
                    player1.gainExperience(Monster1.experience);
                    Console.WriteLine("You have slain the enemy");
                }
                if (player1.HP <= 0)
                {
                    Console.WriteLine("The monster Has killed you. Told you he died at the end!");
                }
            }
        }
Example #26
0
 //===================================================================================================================================================================================
 // Återställer full Hp för player och monster
 //===================================================================================================================================================================================
 public static void PlayerMOnsterFullHp(Monster.Monster monster)
 {
     playerOne.Hp = 100;
     monster.Hp   = monster.MaxHp;
 }
Example #27
0
 public abstract void Move(Monster.Monster monster);
Example #28
0
 private static void PlayerMOnsterFUllHp(Monster.Monster monster)
 {
     Player.Player.player.PlayerHp = 100;
     monster.MonsterHp             = monster.MonsterMaxHp;
 }
Example #29
0
 public void RemoveChild(UIElement uiElement)
 {
     IsSet = false;
     this.Monster = null;
     base.Children.Remove(uiElement);
 }
Example #30
0
 private static void MonsterAppear(Monster.Monster monster)
 {
     Console.WriteLine($"Watch out! An ancient {monster.MonsterName} level {monster.MonsterLevel} is blocking your way\n");
 }
Example #31
0
        /**
         * Calculate the rating for a given slay combination
         */
        int slay_power(bool verbose, StreamWriter log_file, bool known)
        {
            Bitflag      s_index = new Bitflag(Object_Flag.SIZE);
            Bitflag      f = new Bitflag(Object_Flag.SIZE);
            Bitflag      f2 = new Bitflag(Object_Flag.SIZE);
            int          sv = 0;    //uint
            int          i, j;
            int          mult;
            Slay         best_s_ptr = null;
            Monster_Race r_ptr;

            Monster.Monster m_ptr;
            //monster_type monster_type_body;
            string[] desc   = new string[Slay.MAX.value];      // = { 0 }, *
            string[] brand  = new string[Slay.MAX.value];      // = { 0 };
            int[]    s_mult = new int[Slay.MAX.value];         // = { 0 };

            if (known)
            {
                object_flags(ref f);
            }
            else
            {
                object_flags_known(ref f);
            }

            /* Combine the slay bytes into an index value, return if there are none */
            s_index.copy(f);
            Object_Flag.create_mask(f2, false, Object_Flag.object_flag_type.SLAY,
                                    Object_Flag.object_flag_type.KILL, Object_Flag.object_flag_type.BRAND);

            if (!s_index.is_inter(f2))
            {
                return(Eval.tot_mon_power);
            }
            else
            {
                s_index.inter(f2);
            }

            /* Look in the cache to see if we know this one yet */
            sv = Slay.check_slay_cache(s_index);

            /* If it's cached (or there are no slays), return the value */
            if (sv != 0)
            {
                //file_putf(log_file, "Slay cache hit\n");
                return(sv);
            }

            /*
             * Otherwise we need to calculate the expected average multiplier
             * for this combination (multiplied by the total number of
             * monsters, which we'll divide out later).
             */
            for (i = 0; i < Misc.z_info.r_max; i++)
            {
                best_s_ptr = null;
                mult       = 1;
                r_ptr      = Misc.r_info[i];
                if (r_ptr == null)
                {
                    continue;
                }
                m_ptr       = new Monster.Monster();
                m_ptr.r_idx = (short)i;

                /* Find the best multiplier against this monster */
                Slay.improve_attack_modifier(this, m_ptr, ref best_s_ptr, false, !known);
                if (best_s_ptr != null)
                {
                    mult = best_s_ptr.mult;
                }

                /* Add the multiple to sv */
                sv += (int)(mult * r_ptr.scaled_power);
            }

            /*
             * To get the expected damage for this weapon, multiply the
             * average damage from base dice by sv, and divide by the
             * total number of monsters.
             */
            if (verbose)
            {
                /* Write info about the slay combination and multiplier */
                //file_putf(log_file, "Slay multiplier for: ");

                j = Slay.list_slays(s_index, s_index, desc, brand, s_mult, false);

                //for (i = 0; i < j; i++) {
                //    if (brand[i]) {
                //        file_putf(log_file, brand[i]);
                //    } else {
                //        file_putf(log_file, desc[i]);
                //    }
                //    file_putf(log_file, "x%d ", s_mult[i]);
                //}
                //file_putf(log_file, "\nsv is: %d\n", sv);
                //file_putf(log_file, " and t_m_p is: %d \n", tot_mon_power);
                //file_putf(log_file, "times 1000 is: %d\n", (1000 * sv) / tot_mon_power);
            }

            /* Add to the cache */
            if (Slay.fill_slay_cache(s_index, sv))
            {
                //file_putf(log_file, "Added to slay cache\n");
            }

            return(sv);
        }