//09 0E public void OnRemoveSpecialSkill(Packets.Client.RemoveSpecialSkill p) { if (this.Char.SpecialSkills.ContainsKey(p.GetSkillID())) { uint id = p.GetSkillID(); SkillInfo info; info = Char.SpecialSkills[id]; info.slot = 0; Char.InactiveSkills.Add(id, info); Char.SpecialSkills.Remove(id); Packets.Server.RemoveSpecialSkill p1 = new SagaMap.Packets.Server.RemoveSpecialSkill(); p1.SetSkill(id); this.netIO.SendPacket(p1, this.SessionID); } }
public void OnUseOffensiveSkill(Packets.Client.UseOffensiveSkill p) { if (this.state != SESSION_STATE.MAP_LOADED) return; // Attack try { if (p.GetSkillType() != 9) { Map.SkillArgs sArgs; Actor aActor = this.map.GetActor(p.GetTargetActorID()); Actor sActor = (Actor)this.Char; sArgs = new Map.SkillArgs(p.GetSkillType(), 0, p.GetSkillID(), p.GetTargetActorID(), 0); //cast skill if (aActor == null) { sArgs.isCritical = Map.SkillArgs.AttackResult.Miss; sArgs.failed = true; this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.SKILL, sArgs, this.Char, true); return; } SkillHandler.CastSkill(ref sActor, ref aActor, ref sArgs); if (aActor.type == ActorType.NPC) { Map.ActorSelArgs arg = new Map.ActorSelArgs(aActor.id); this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.ACTOR_SELECTION, arg, this.Char, true); } if (aActor.type == ActorType.PC && aActor.id != this.Char.id) { Map.ActorSelArgs arg = new Map.ActorSelArgs(aActor.id); this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.ACTOR_SELECTION, arg, this.Char, true); } this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.SKILL, sArgs, this.Char, true); } // Emoticon if (p.GetSkillType() == 9) { this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.SKILL, new Map.SkillArgs(p.GetSkillType(), 0, p.GetSkillID(), p.GetTargetActorID(), (uint)Global.Random.Next()), this.Char, true); } } catch (Exception ex) { Logger.ShowError(ex, null); } }
public void OnSkillCastCancel(Packets.Client.SkillCastCancel p) { Map.SkillArgs sArgs; sArgs = new Map.SkillArgs(p.GetSkillType(), 0, p.GetSkillID(), this.Char.id, 0); sArgs.castcancel = true; this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.SKILL, sArgs, this.Char, true); }
public void OnSkillToggle(Packets.Client.SkillToggle p) { if (this.state != SESSION_STATE.MAP_LOADED) return; // Attack if (p.GetSkillType() != 9) { Map.SkillArgs sArgs; Actor aActor = (Actor)this.Char; Actor sActor = (Actor)this.Char; sArgs = new Map.SkillArgs(p.GetSkillType(), 0, p.GetSkillID(), sActor.id, 0); //cast skill SkillHandler.CastSkill(ref sActor, ref aActor, ref sArgs); Packets.Server.SkillToggle p1 = new SagaMap.Packets.Server.SkillToggle(); p1.SetSkillType(p.GetSkillType()); p1.SetSkillID(p.GetSkillID()); p1.SetToggle(sArgs.failed); this.netIO.SendPacket(p1, this.SessionID); sArgs.failed = false; this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.SKILL, sArgs, this.Char, true); } }
// 0x09 Packets ========================================= public void OnSkillCast(Packets.Client.SkillCast p) { if (this.state != SESSION_STATE.MAP_LOADED) return; // Attack if (p.GetSkillType() != 9) { Map.SkillArgs sArgs; Actor aActor = this.map.GetActor(p.GetTargetActorID()); Actor sActor = (Actor)this.Char; sArgs = new Map.SkillArgs(p.GetSkillType(), 0, p.GetSkillID(), p.GetTargetActorID(), 0); sArgs.casting = true; if (aActor == null) { sArgs.isCritical = Map.SkillArgs.AttackResult.Miss; sArgs.failed = true; this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.SKILL, sArgs, this.Char, true); return; } //cast skill if (aActor.type == ActorType.NPC) { Map.ActorSelArgs arg = new Map.ActorSelArgs(aActor.id); this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.ACTOR_SELECTION, arg, this.Char, true); } if (aActor.type == ActorType.PC && aActor.id != this.Char.id) { Map.ActorSelArgs arg = new Map.ActorSelArgs(aActor.id); this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.ACTOR_SELECTION, arg, this.Char, true); } this.map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.SKILL, sArgs, this.Char, true); } }