public override void OnEvent(SpellCastRequestEvent spellCastRequest) { base.OnEvent(spellCastRequest); Player caster = World.FindPlayer(spellCastRequest.RaisedBy); SpellCastRequestAnswerEvent spellCastAnswer = spellCastRequest.FromSelf ? SpellCastRequestAnswerEvent.Create(GlobalTargets.OnlyServer) : SpellCastRequestAnswerEvent.Create(spellCastRequest.RaisedBy); spellCastAnswer.SpellId = spellCastRequest.SpellId; if (caster == null) { spellCastAnswer.Result = (int)SpellCastResult.CasterNotExists; spellCastAnswer.Send(); return; } if (!balance.SpellInfosById.TryGetValue(spellCastRequest.SpellId, out SpellInfo spellInfo)) { spellCastAnswer.Result = (int)SpellCastResult.SpellUnavailable; spellCastAnswer.Send(); return; } SpellCastResult castResult = caster.Spells.CastSpell(spellInfo, new SpellCastingOptions(movementFlags: (MovementFlags)spellCastRequest.MovementFlags)); if (castResult != SpellCastResult.Success) { spellCastAnswer.Result = (int)castResult; spellCastAnswer.Send(); } }
public void CastSpell(int spellId) { if (!Player.ExistsIn(World)) { return; } SpellCastRequestEvent spellCastRequest = SpellCastRequestEvent.Create(Bolt.GlobalTargets.OnlyServer); spellCastRequest.SpellId = spellId; spellCastRequest.MovementFlags = (int)Player.MovementInfo.Flags; spellCastRequest.Send(); }
public void CastSpell(int spellId) { if (!Player.ExistsIn(World)) { return; } if (balance.SpellInfosById.TryGetValue(spellId, out SpellInfo spellInfo) && spellInfo.ExplicitTargetType == SpellExplicitTargetType.Destination) { spellTargeting.SelectSpellTargetDestination(spellInfo); } else { SpellCastRequestEvent spellCastRequest = SpellCastRequestEvent.Create(Bolt.GlobalTargets.OnlyServer); spellCastRequest.SpellId = spellId; spellCastRequest.MovementFlags = (int)Player.MovementFlags; spellCastRequest.Send(); } }
public override void OnEvent(SpellCastRequestEvent spellCastRequest) { base.OnEvent(spellCastRequest); HandleSpellCast(spellCastRequest, spellCastRequest.SpellId, (MovementFlags)spellCastRequest.MovementFlags); }