fix: Fixes ignoring mobs, champions, party crash, slayer rarity, boat speedhack, etc (#1222)

* Movie ignore mobiles to Mobile class
* Allow necromancer familiars to ignore mobiles
* ChampionSpawn should not quietly fail when creating new spawn
* Fix client party crash bug: 2 people partied, the leader logs out, other client is hung
* Fix spellbooks creating with magery/meditation only and creating magery multiple times
* Fix BaseRunicTool.GetRandomSlayer() creating more undead slayers than intended
* Do not allow players to dismount each other whilst mounted
* Fix AOS onwards damage increase tooltip and wrong formula in AOS
* Fix monsters killing other monster revenants + animate dead should not attack player pets + other animates
* Fix fire steed having loot pack added twice
* Fix oaks spawn not able to create Unicorns + Kirins via Activator.CreateInstace() due to constructor having name as parametr
* Fix ignoreMobiles flag not propagated to client for non-players.
* Fix harrower tents not leeching from players
* Fix boats speedhacking around the map
* Fix bless, agility etc. not renewing duration
* Fix reveal always worked
* Fix empty constructor for steeds so they don't throw now.
This commit is contained in:
mark1145 2022-10-31 22:16:50 -07:00 committed by GitHub
parent 910e06767b
commit 053dbcbad0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
54 changed files with 871 additions and 454 deletions

View file

@ -487,14 +487,7 @@ namespace Server.Items
if (Quality == WeaponQuality.Exceptional)
{
if (Attributes.WeaponDamage > 35)
{
Attributes.WeaponDamage -= 20;
}
else
{
Attributes.WeaponDamage = 15;
}
Attributes.WeaponDamage = 35;
if (Core.ML)
{
@ -2385,27 +2378,8 @@ namespace Server.Items
};
}
public virtual int GetDamageBonus()
{
var quality = m_Quality switch
{
WeaponQuality.Low => -20,
WeaponQuality.Exceptional => 20,
_ => 0
};
var damageLevel = m_DamageLevel switch
{
WeaponDamageLevel.Ruin => 15,
WeaponDamageLevel.Might => 20,
WeaponDamageLevel.Force => 25,
WeaponDamageLevel.Power => 30,
WeaponDamageLevel.Vanq => 35,
_ => 0
};
return VirtualDamageBonus + quality + damageLevel;
}
// Note: AOS quality/damage bonuses removed since they are incorporated into the crafting already
public virtual int GetDamageBonus() => VirtualDamageBonus;
public virtual double ScaleDamageAOS(Mobile attacker, double damage, bool checkSkills)
{
@ -2477,10 +2451,9 @@ namespace Server.Items
damageBonus = 100;
}
var totalBonus = strengthBonus + anatomyBonus + tacticsBonus + lumberBonus +
(GetDamageBonus() + damageBonus) / 100.0;
var totalBonus = strengthBonus + anatomyBonus + tacticsBonus + lumberBonus + damageBonus + GetDamageBonus();
return damage + (int)(damage * totalBonus);
return damage + damage * totalBonus / 100.0;
}
public virtual int ComputeDamageAOS(Mobile attacker, Mobile defender) =>