Hello guys, Can someone help me please?

I know that Defence chance increase is capped at 45 but for example if you have 70 defence chance increase using hit lower defence, it down it to 45 the defence chance increase. it counts if you have more than 45 and it read the defence chance increase you have above the cap, all of this is correct but i want to know if someone can tell me where i can find the script who say that.

Another question, i have a copy for my shard 2 years ago but i want to transfer an account that it had to my actual running shard, i know that it can be possible but i dont know how to do it, Does someone has any idea about how to do it?

Thank you!
 
DCI caps: BaseWeapon.cs, in this method:

Code:
public virtual bool CheckHit(Mobile attacker, Mobile defender)

Your second question is possible, but would take countless hours of serialization and deserialization edits to accomplish. Very very doable. That being said, 99% of people you ask will say it's a complete waste of time and you're better off without the stress. I'd agree. Unless of course you're using the exact same core/distro files - but I'm guessing not.
 
Thank you for your fast answer, i had search into my BaseWeapon.cs script but i think it isnt correct because
// Defense Chance Increase = 45%
if (bonus > 45)
bonus = 45;

This is all this public code:
Code:
public virtual bool CheckHit(Mobile attacker, Mobile defender)
        {
            BaseWeapon atkWeapon = attacker.Weapon as BaseWeapon;
            BaseWeapon defWeapon = defender.Weapon as BaseWeapon;

            Skill atkSkill = attacker.Skills[atkWeapon.Skill];
            Skill defSkill = defender.Skills[defWeapon.Skill];

            double atkValue = atkWeapon.GetAttackSkillValue(attacker, defender);
            double defValue = defWeapon.GetDefendSkillValue(attacker, defender);

            double ourValue, theirValue;

            int bonus = GetHitChanceBonus();

            #region SA
            if (atkWeapon is BaseThrown)
            {
                int min = ((BaseThrown)atkWeapon).MinThrowRange;
                int throwchances = 0;

                if (attacker.InRange(defender, 1))
                    throwchances -= 12 - (int)(attacker.Skills[SkillName.Swords].Value / 10);
                else if (!attacker.InRange(defender, min - 1))
                    throwchances -= 12;

                BaseShield shield = attacker.FindItemOnLayer(Layer.TwoHanded) as BaseShield;

                if (shield != null)
                {
                    throwchances -= 12 - (int)(attacker.Skills[SkillName.Parry].Value / 10);
                    throwchances -= Math.Max(0, (10 - (attacker.Dex / 10)));
                }

                if (throwchances < 0)
                    throwchances = 0;

                bonus += throwchances;
            }
            #endregion

            if (Core.AOS)
            {
                if (atkValue <= -20.0)
                    atkValue = -19.9;

                if (defValue <= -20.0)
                    defValue = -19.9;

                // Hit Chance Increase = 45%
                int atkChance = AosAttributes.GetValue(attacker, AosAttribute.AttackChance);
                if (atkChance > 45)
                    atkChance = 45;

                bonus += atkChance;

                if (Spells.Chivalry.DivineFurySpell.UnderEffect(attacker))
                    bonus += 10; // attacker gets 10% bonus when they're under divine fury

                if (CheckAnimal(attacker, typeof(GreyWolf)) || CheckAnimal(attacker, typeof(BakeKitsune)))
                    bonus += 20; // attacker gets 20% bonus when under Wolf or Bake Kitsune form

                if (HitLower.IsUnderAttackEffect(attacker))
                    bonus -= 25; // Under Hit Lower Attack effect -> 25% malus

                WeaponAbility ability = WeaponAbility.GetCurrentAbility(attacker);

                if (ability != null)
                    bonus += ability.AccuracyBonus;

                SpecialMove move = SpecialMove.GetCurrentMove(attacker);

                if (move != null)
                    bonus += move.GetAccuracyBonus(attacker);

                // Max Hit Chance Increase = 45%
                if (bonus > 45)
                    bonus = 45;

                ourValue = (atkValue + 20.0) * (100 + bonus);

                bonus = AosAttributes.GetValue(defender, AosAttribute.DefendChance);

                if (Spells.Chivalry.DivineFurySpell.UnderEffect(defender))
                    bonus -= 20; // defender loses 20% bonus when they're under divine fury

                if (HitLower.IsUnderDefenseEffect(defender))
                    bonus -= 25; // Under Hit Lower Defense effect -> 25% malus

                int blockBonus = 0;

                if (Block.GetBonus(defender, ref blockBonus))
                    bonus += blockBonus;

                int surpriseMalus = 0;

                if (SurpriseAttack.GetMalus(defender, ref surpriseMalus))
                    bonus -= surpriseMalus;

                int discordanceEffect = 0;

                // Defender loses -0/-28% if under the effect of Discordance.
                if (SkillHandlers.Discordance.GetEffect(attacker, ref discordanceEffect))
                    bonus -= discordanceEffect;

                // Defense Chance Increase = 45%
                if (bonus > 45)
                    bonus = 45;

                theirValue = (defValue + 20.0) * (100 + bonus);

                bonus = 0;
            }
            else
            {
                if (atkValue <= -50.0)
                    atkValue = -49.9;

                if (defValue <= -50.0)
                    defValue = -49.9;

                ourValue = (atkValue + 50.0);
                theirValue = (defValue + 50.0);
            }

            double chance = ourValue / (theirValue * 2.0);

            chance *= 1.0 + ((double)bonus / 100);

            if (Core.AOS && chance < 0.02)
                chance = 0.02;

            return attacker.CheckSkill(atkSkill.SkillName, chance);
        }
 
If you notice, prior to...

Code:
// Max Hit Chance Increase = 45%
                if (bonus > 45)
                    bonus = 45;

...is all the code calculating malus and bonus to the DCI. Thats what you asked in your OP, isn't it? Where all the calculations happen? You specifically mentioned HitLowerDefense, which in the code block you posted above is on Lines 87 amd 88. If that's not what you were asking, then I'm confused.
 
I want to know if a player who has 45 or 70 defence chance increase it will have the same effect front the hit lower defense.
 
No, it won't have the same effect. The HitLowerDefense will deduct from the total DCI prior to the cap being met. So..

1.
Defender has equipment/skills/ect which total 70 DCI.
Attacker has a weapon which has 20 HitLowerDefense.

Defender will defend with 45 DCI (Cap was met: 70 - 20 = 50, but cap is 45).

2.
Defender has equipment/skills/ect which total 45 DCI.
Attacker has a weapon which has 20 HitLowerDefense.

Defender will defend with 25 DCI (Cap was not met: 45 - 20 = 25, but cap is 45)

Does that make sense?
 
Back