Beispiel #1
0
        private static void set_stats_for_attacker(PlayerModel attacker)
        {
            CombatModel  combat = attacker.Combat;
            SkillsModel  skills = attacker.Skills;
            EquipedModel eqp    = attacker.Equiped;

            string value = combat.CurretOptions.CombatType;

            switch (value)
            {
            case "Slash":
            case "Stab":
            case "Crush":
                combat.eq_piercing_bonus     = eqp.getTotalSlashAtk();
                combat.eq_piercing_bonus     = eqp.getTotalStabAtk();
                combat.eq_piercing_bonus     = eqp.getTotalCrushAtk();
                combat.eq_dmage_bonus        = eqp.getTotalMeleStr();
                combat.prayer_piercing_bonus = 1;
                combat.prayer_dmage_bonus    = 1;
                combat.dmage_lvl             = skills.Str_lvl;
                combat.piercing_lvl          = skills.Atk_lvl;
                break;

            case "Magic":
                combat.eq_piercing_bonus     = eqp.getTotalMagicAtk();
                combat.eq_dmage_bonus        = eqp.getTotalMagicStr();
                combat.prayer_piercing_bonus = 1;
                combat.prayer_dmage_bonus    = 1;
                combat.dmage_lvl             = skills.Magic_lvl;
                combat.piercing_lvl          = skills.Magic_lvl;
                break;

            case "Ranged":
                combat.eq_piercing_bonus     = eqp.getTotalRangedAtk();
                combat.eq_dmage_bonus        = eqp.getTotalRangedStr();
                combat.prayer_piercing_bonus = 1;
                combat.prayer_dmage_bonus    = 1;
                combat.dmage_lvl             = skills.Ranged_lvl;
                combat.piercing_lvl          = skills.Ranged_lvl;
                break;

            default:
                break;
            }
        }
Beispiel #2
0
        private static bool canAttack(PlayerModel attacker)
        {
            CombatModel  combat = attacker.Combat;
            EquipedModel eqp    = attacker.Equiped;

            if (combat.CurretOptions.CombatType == "Ranged")
            {
                return(EquipedModel.requedAmmoEquped(eqp));
            }
            else if (combat.CurretOptions.CombatType == "Magic")
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Beispiel #3
0
        private static void set_stats_for_deffender(PlayerModel deffender, CombatModel attacker_combat)
        {
            CombatModel  deffender_combat = deffender.Combat;
            EquipedModel deffender_eqp    = deffender.Equiped;
            SkillsModel  deffender_skills = deffender.Skills;

            string value = attacker_combat.CurretOptions.CombatType;

            switch (value)
            {
            case "Slash":
            case "Stab":
            case "Crush":
                if (value.Equals("Slash"))
                {
                    deffender_combat.eq_def_bonus = deffender_eqp.getTotalSlashDef();
                }
                if (value.Equals("Stab"))
                {
                    deffender_combat.eq_def_bonus = deffender_eqp.getTotalStabDef();
                }
                if (value.Equals("Crush"))
                {
                    deffender_combat.eq_def_bonus = deffender_eqp.getTotalCrushDef();
                }
                deffender_combat.prayer_def_bonus = 1;
                break;

            case "Magic":
                deffender_combat.eq_def_bonus     = deffender_eqp.getTotalMagicDef();
                deffender_combat.prayer_def_bonus = 1;
                break;

            case "Ranged":
                deffender_combat.eq_def_bonus     = deffender_eqp.getTotalRangedDef();
                deffender_combat.prayer_def_bonus = 1;
                break;

            default:
                break;
            }
            deffender_combat.def_lvl = deffender_skills.Def_lvl;
        }
Beispiel #4
0
        //Combat functions
        public static string Attack(PlayerModel attacker, int deffender_def_roll)
        {
            CombatModel combat = attacker.Combat;

            CombatModel.set_stats_for_attacker(attacker);

            int piercing_roll = get_piercing_roll(combat);
            int maxdmg        = get_dmagemax(combat);

            if (canAttack(attacker))
            {
                if (deffender_def_roll > piercing_roll)
                {
                    if (piercing_roll > rnd.Next(0, 2 * deffender_def_roll + 2))
                    {
                        return(rnd.Next((int)Math.Round((double)maxdmg / 5), maxdmg + 1).ToString());
                    }
                    else
                    {
                        return("def");
                    }
                }
                else
                {
                    if ((2 * piercing_roll + 2) - deffender_def_roll > rnd.Next(0, 2 * piercing_roll + 2))
                    {
                        return(rnd.Next((int)Math.Round((double)maxdmg / 5), maxdmg + 1).ToString());
                    }
                    else
                    {
                        return("def");
                    }
                }
            }
            return("Message");
        }
Beispiel #5
0
 private static double effective_level_dmage(CombatModel combat)
 {
     return(Math.Floor((Math.Floor(combat.dmage_lvl * combat.prayer_dmage_bonus) + combat.CurretOptions.StancBonusStr + 8) * combat.void_bonus));
 }
Beispiel #6
0
 public static int get_dmagemax(CombatModel combat)
 {
     return((int)Math.Floor((0.5 + effective_level_dmage(combat) * (combat.eq_dmage_bonus + 64) / 640)));
 }
Beispiel #7
0
 public static int get_def_roll(CombatModel combat)
 {
     return((int)(effective_level_def(combat) * (combat.eq_def_bonus + 64)));
 }
Beispiel #8
0
 public static int get_piercing_roll(CombatModel combat)
 {
     return((int)(effective_level_piercing(combat) * (combat.eq_piercing_bonus + 64)));
 }
Beispiel #9
0
 public static int Deffend(PlayerModel deffender, CombatModel attacker_combat)
 {
     set_stats_for_deffender(deffender, attacker_combat);
     return(get_def_roll(deffender.Combat));
 }
Beispiel #10
0
 private static double effective_level_piercing(CombatModel combat)
 {
     return(Math.Floor((Math.Floor(combat.piercing_lvl * combat.prayer_piercing_bonus) + combat.CurretOptions.StancBonusAtk + 8) * combat.void_bonus));
 }
Beispiel #11
0
        //Class needs redesign. later save everything from here to files.
        static public void setOptions(CombatModel FighterCombat, string weapontype)
        {
            switch (weapontype)
            {
            case "Axes":
                optionsAxes();
                break;

            case "Blunt weapons":
                optionsBluntWeapons();
                break;

            case "Bulwarks":
                optionsBulwarks();
                break;

            case "Claws":
                optionsClaws();
                break;

            case "Polearms":
                optionsPolearms();
                break;

            case "Pickaxes":
                optionsPickaxes();
                break;

            case "Scythes":
                optionsScythes();
                break;

            case "Slashing swords":
                optionsSlashingSwords();
                break;

            case "Spears":
                optionsSpears();
                break;

            case "Spiked weapons":
                optionsSpikedWeapons();
                break;

            case "Stabbing swords":
                optionsStabbingSwords();
                break;

            case "Two-handed swords":
                optionsTwoHandedSwords();
                break;

            case "Whips":
                optionsWhips();
                break;

            case "Bows":
                optionsBows();
                break;

            case "Chinchompas":
                optionsChinchompas();
                break;

            case "Crossbows":
                optionsCrossbows();
                break;

            case "Thrown weapons":
                optionsThrownWeapons();
                break;

            case "Staves":
                optionsStaves();
                break;

            case "Bladed staves":
                optionsBladedStaves();
                break;

            case "Powered staves":
                optionsPoweredStaves();
                break;

            case "Banners":
                optionsBanners();
                break;

            case "Blasters":
                optionsBlasters();
                break;

            case "Guns":
                optionsGuns();
                break;

            case "Polestaves":
                optionsPolestaves();
                break;

            case "Salamanders":
                optionsSalamanders();
                break;

            case "Unarmed":
                optionsUnarmed();
                break;
            }
            setCombat(FighterCombat, Option1, Option1Style);
        }
Beispiel #12
0
 static public void setCombat(CombatModel FighterCombat, string combat_style, string attack_type)
 {
     FighterCombat.CurretOptions = new CombatCurretOptionModel(combat_style, attack_type);
 }