public static void HandleCastSpellOpcode(ref PacketReader packet, ref WorldManager manager) { uint spellid = packet.ReadUInt32(); if (!manager.Character.Spells.ContainsKey(spellid)) { manager.Character.SendCastResult(SpellCheckCastResult.SPELL_FAILED_NOT_KNOWN, spellid); return; } if (!DBC.Spell.ContainsKey(spellid)) { manager.Character.SendCastResult(SpellCheckCastResult.SPELL_FAILED_NOT_KNOWN, spellid); return; } if (manager.Character.Spells[spellid].Cooldown > Globals.TimeTicks) { manager.Character.SendCastResult(SpellCheckCastResult.SPELL_FAILED_NOT_READY, spellid); return; } SpellTargets targets = new SpellTargets(); targets.ReadTargets(ref packet, manager.Character); SpellCast cast = new SpellCast(manager.Character); cast.Targets = targets; cast.Spell = DBC.Spell[spellid]; cast.Triggered = false; manager.Character.PrepareSpell(cast); }
public SpellEntry(int spell_idx, SpellClass _spellClass, sbyte _spellLevel, int _fixedRange, int _perLvlRange, int _fixedDuration, byte _perLvlDuration, byte f6, SpellTargets _targets, DamageOnSave _damageOnSave, SaveVerseType _saveVerse, Affects _affectId, SpellWhen _whenCast, int _castingDelay, int _priority, byte fe, byte ff) { spellClass = _spellClass; spellLevel = _spellLevel; fixedRange = _fixedRange; perLvlRange = _perLvlRange; fixedDuration = _fixedDuration; perLvlDuration = _perLvlDuration; field_6 = f6; targetType = _targets; damageOnSave = _damageOnSave; saveVerse = _saveVerse; affect_id = _affectId; whenCast = _whenCast; castingDelay = _castingDelay; priority = _priority; field_E = fe; field_F = ff; spellIdx = spell_idx; }
// Constructor public Spell(int spellId, string spellName, SpellTargets target, byte turns, byte relaunchs, byte targetHp, byte characterHp, SpellResistances resistance, byte resistanceValue, byte distanceToClosestMonster, bool handToHand, bool aoe, bool carefulAOE, bool avoidAllies) { SpellId = spellId; SpellName = spellName; Target = target; Turns = turns; LastTurn = 0; Relaunchs = relaunchs; RemainingRelaunchs = Relaunchs; TargetHp = targetHp; CharacterHp = characterHp; Resistance = resistance; ResistanceValue = resistanceValue; DistanceToClosestMonster = distanceToClosestMonster; HandToHand = handToHand; AOE = aoe; CarefulAOE = carefulAOE; AvoidAllies = avoidAllies; }
public SpellCheckCastResult ForceCastSpell(uint spellid, Unit target) { if (!DBC.Spell.ContainsKey(spellid)) { return(SpellCheckCastResult.SPELL_FAILED_ERROR); } SpellTargets targets = new SpellTargets { Target = target }; SpellCast cast = new SpellCast(this) { Targets = targets, Spell = DBC.Spell[spellid], Triggered = false }; return(this.PrepareSpell(cast)); }
public SpellWhen whenCast; //seg600:37E7 unk_19AF7 #endregion Fields #region Constructors public SpellEntry(int spell_idx, SpellClass _spellClass, sbyte _spellLevel, int _fixedRange, int _perLvlRange, int _fixedDuration, byte _perLvlDuration, byte f6, SpellTargets _targets, DamageOnSave _damageOnSave, SaveVerseType _saveVerse, Affects _affectId, SpellWhen _whenCast, int _castingDelay, int _priority, byte fe, byte ff) { spellClass = _spellClass; spellLevel = _spellLevel; fixedRange = _fixedRange; perLvlRange = _perLvlRange; fixedDuration = _fixedDuration; perLvlDuration = _perLvlDuration; field_6 = f6; targetType = _targets; damageOnSave = _damageOnSave; saveVerse = _saveVerse; affect_id = _affectId; whenCast = _whenCast; castingDelay = _castingDelay; priority = _priority; field_E = fe; field_F = ff; spellIdx = spell_idx; }