/// <summary> /// Remove a status icon of a actor /// </summary> /// <param name="actor">Actor</param> /// <param name="skillid">Icon to be removed</param> public static void RemoveStatusIcon(Actor actor, uint skillid) { if (actor.BattleStatus.Status == null) { actor.BattleStatus.Status = new List <uint>(); } if (!actor.BattleStatus.Status.Contains(skillid)) { return; } actor.BattleStatus.Status.Remove(skillid); Map map; if (actor.mapID == 0) { if (actor.type == ActorType.PC) { ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)actor.e; actor.mapID = (byte)eh.C.map.ID; } } if (!MapManager.Instance.GetMap(actor.mapID, out map)) { return; } List <Map.StatusArgs.StatusInfo> SList = new List <Map.StatusArgs.StatusInfo>(); SList.Add(new Map.StatusArgs.StatusInfo(skillid, 0)); Map.StatusArgs args = new Map.StatusArgs(Map.StatusArgs.EventType.Remove, SList); map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.CHANGE_STATUS, args, actor, true); }
public void OnChangeStatus(Actor sActor, MapEventArgs args) { Map.StatusArgs arg = (Map.StatusArgs)args; switch (arg.type) { case Map.StatusArgs.EventType.Add: foreach (Map.StatusArgs.StatusInfo i in arg.StatusList) { Packets.Server.ExchangeAddition p1 = new SagaMap.Packets.Server.ExchangeAddition(); p1.SetID(sActor.id); Skill info = SkillFactory.GetSkill(i.SkillID); if (info != null) { p1.SetStatusID(info.addition); } else { p1.SetStatusID(i.SkillID); } p1.SetTime(i.time); this.C.netIO.SendPacket(p1, C.SessionID); } break; case Map.StatusArgs.EventType.Remove: foreach (Map.StatusArgs.StatusInfo i in arg.StatusList) { Packets.Server.DeleteExchangeAddition p1 = new SagaMap.Packets.Server.DeleteExchangeAddition(); p1.SetID(sActor.id); Skill info = SkillFactory.GetSkill(i.SkillID); if (info != null) { p1.SetStatusID(info.addition); } else { p1.SetStatusID(i.SkillID); } this.C.netIO.SendPacket(p1, C.SessionID); } break; } }
/// <summary> /// Send all status icons of a Actor to player /// </summary> /// <param name="pc">Player</param> /// <param name="actor">Actor</param> public static void SendAllStatusIcons(ActorPC pc, Actor actor) { ActorEventHandlers.PC_EventHandler eh = (ActorEventHandlers.PC_EventHandler)pc.e; if (actor.BattleStatus == null) { actor.BattleStatus = new BattleStatus(); } if (actor.BattleStatus.Status == null) { actor.BattleStatus.Status = new List <uint>(); } List <Map.StatusArgs.StatusInfo> SList = new List <Map.StatusArgs.StatusInfo>(); foreach (uint i in actor.BattleStatus.Status) { SList.Add(new Map.StatusArgs.StatusInfo(i, 0)); } Map.StatusArgs args = new Map.StatusArgs(Map.StatusArgs.EventType.Add, SList); if (SList.Count != 0) { eh.OnChangeStatus(actor, args); } }
/// <summary> /// Send all status icons of a Actor to player /// </summary> /// <param name="pc">Player</param> /// <param name="actor">Actor</param> public static void SendAllStatusIcons(ActorPC pc, Actor actor) { ActorEventHandlers.PC_EventHandler eh = (ActorEventHandlers.PC_EventHandler)pc.e; if (actor.BattleStatus == null) actor.BattleStatus = new BattleStatus(); if (actor.BattleStatus.Status == null) actor.BattleStatus.Status = new List<uint>(); List<Map.StatusArgs.StatusInfo> SList = new List<Map.StatusArgs.StatusInfo>(); foreach (uint i in actor.BattleStatus.Status) { SList.Add(new Map.StatusArgs.StatusInfo(i, 0)); } Map.StatusArgs args = new Map.StatusArgs(Map.StatusArgs.EventType.Add, SList); if (SList.Count != 0) eh.OnChangeStatus(actor, args); }
/// <summary> /// Remove a status icon of a actor /// </summary> /// <param name="actor">Actor</param> /// <param name="skillid">Icon to be removed</param> public static void RemoveStatusIcon(Actor actor, uint skillid) { if (actor.BattleStatus.Status == null) actor.BattleStatus.Status = new List<uint>(); if (!actor.BattleStatus.Status.Contains(skillid)) return; actor.BattleStatus.Status.Remove(skillid); Map map; if (actor.mapID == 0) { if (actor.type == ActorType.PC) { ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)actor.e; actor.mapID = (byte)eh.C.map.ID; } } if (!MapManager.Instance.GetMap(actor.mapID, out map)) return; List<Map.StatusArgs.StatusInfo> SList = new List<Map.StatusArgs.StatusInfo>(); SList.Add(new Map.StatusArgs.StatusInfo(skillid, 0)); Map.StatusArgs args = new Map.StatusArgs(Map.StatusArgs.EventType.Remove, SList); map.SendEventToAllActorsWhoCanSeeActor(Map.EVENT_TYPE.CHANGE_STATUS, args, actor, true); }