Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
 /// <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);
 }
Esempio n. 5
0
 /// <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);
 }