mirror of
https://github.com/EQEmu/Server.git
synced 2026-09-02 20:56:37 +00:00
Implement cast_not_standing and fix Cazic Touch
No idea why this spell field does this, but that's what the client is doing with it ...
This commit is contained in:
+4
-1
@@ -3027,11 +3027,14 @@ bool Mob::CheckDoubleAttack()
|
||||
void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, const EQEmu::skills::SkillType skill_used, bool &avoidable, const int8 buffslot, const bool iBuffTic, int special) {
|
||||
// This method is called with skill_used=ABJURE for Damage Shield damage.
|
||||
bool FromDamageShield = (skill_used == EQEmu::skills::SkillAbjuration);
|
||||
bool ignore_invul = false;
|
||||
if (IsValidSpell(spell_id))
|
||||
ignore_invul = spell_id == 982 || spells[spell_id].cast_not_standing; // cazic touch
|
||||
|
||||
Log.Out(Logs::Detail, Logs::Combat, "Applying damage %d done by %s with skill %d and spell %d, avoidable? %s, is %sa buff tic in slot %d",
|
||||
damage, attacker?attacker->GetName():"NOBODY", skill_used, spell_id, avoidable?"yes":"no", iBuffTic?"":"not ", buffslot);
|
||||
|
||||
if (GetInvul() || DivineAura()) {
|
||||
if (!ignore_invul && (GetInvul() || DivineAura())) {
|
||||
Log.Out(Logs::Detail, Logs::Combat, "Avoiding %d damage due to invulnerability.", damage);
|
||||
damage = -5;
|
||||
}
|
||||
|
||||
@@ -3660,7 +3660,8 @@ void Mob::DoBuffTic(const Buffs_Struct &buff, int slot, Mob *caster)
|
||||
}
|
||||
case SE_InterruptCasting: {
|
||||
if (IsCasting()) {
|
||||
if (zone->random.Roll(spells[buff.spellid].base[i])) {
|
||||
const auto &spell = spells[casting_spell_id];
|
||||
if (!spell.cast_not_standing && zone->random.Roll(spells[buff.spellid].base[i])) {
|
||||
InterruptSpell();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user