Ejemplo n.º 1
0
 public void Hide()
 {
     CurrentMap.Broadcast(new S.ObjectRemove {
         ObjectID = ObjectID
     }, CurrentLocation);
     Visible = false;
 }
Ejemplo n.º 2
0
        public override void BroadcastHealthChange()
        {
            byte   time = Math.Min(byte.MaxValue, (byte)Math.Max(5, (RevTime - Envir.Time) / 1000));
            Packet p    = new S.ObjectHealth {
                ObjectID = ObjectID, Percent = PercentHealth, Expire = time
            };

            if (Envir.Time < RevTime)
            {
                CurrentMap.Broadcast(p, CurrentLocation);
                return;
            }

            Owner.Enqueue(p);

            if (Owner.GroupMembers != null)
            {
                for (int i = 0; i < Owner.GroupMembers.Count; i++)
                {
                    PlayerObject member = Owner.GroupMembers[i];

                    if (Master == member)
                    {
                        continue;
                    }

                    if (member.CurrentMap != CurrentMap || !Functions.InRange(member.CurrentLocation, CurrentLocation, Globals.DataRange))
                    {
                        continue;
                    }
                    member.Enqueue(p);
                }
            }
        }
Ejemplo n.º 3
0
        public void CheckVisible(PlayerObject Player, bool Force = false)
        {
            //if (Info.Sabuk != false && WARISON) NEEDS ADDING WHEN SABUK IS ADDED

            bool CanSee;

            VisibleLog.TryGetValue(Player.Info.Index, out CanSee);

            if (Info.FlagNeeded != 0 && !Player.Info.Flags[Info.FlagNeeded])
            {
                if (CanSee)
                {
                    CurrentMap.Broadcast(new S.ObjectRemove {
                        ObjectID = ObjectID
                    }, CurrentLocation, Player);
                }
                VisibleLog[Player.Info.Index] = false;
                return;
            }

            if (Info.MinLev != 0 && Player.Level < Info.MinLev || Info.MaxLev != 0 && Player.Level > Info.MaxLev)
            {
                if (CanSee)
                {
                    CurrentMap.Broadcast(new S.ObjectRemove {
                        ObjectID = ObjectID
                    }, CurrentLocation, Player);
                }
                VisibleLog[Player.Info.Index] = false;
                return;
            }

            if (Info.ClassRequired != "" && Player.Class.ToString() != Info.ClassRequired)
            {
                if (CanSee)
                {
                    CurrentMap.Broadcast(new S.ObjectRemove {
                        ObjectID = ObjectID
                    }, CurrentLocation, Player);
                }
                VisibleLog[Player.Info.Index] = false;
                return;
            }

            if (Visible && !CanSee)
            {
                CurrentMap.Broadcast(new S.ObjectNPC {
                    Name = Name, Direction = Direction, Image = Info.Image, Location = CurrentLocation, NameColour = NameColour, ObjectID = ObjectID, QuestIDs = Info.CollectQuestIndexes
                }, CurrentLocation, Player);
            }
            else if (Force && Visible)
            {
                CurrentMap.Broadcast(new S.ObjectNPC {
                    Name = Name, Direction = Direction, Image = Info.Image, Location = CurrentLocation, NameColour = NameColour, ObjectID = ObjectID, QuestIDs = Info.CollectQuestIndexes
                }, CurrentLocation, Player);
            }

            VisibleLog[Player.Info.Index] = true;
        }
Ejemplo n.º 4
0
        protected override void OnSpawned()
        {
            base.OnSpawned();

            CurrentMap.Broadcast(CurrentLocation, new S.MapEffect {
                Location = CurrentLocation, Effect = Effect.SummonSkeleton
            });

            ActionTime = SEnvir.Now.AddSeconds(1);
        }
Ejemplo n.º 5
0
 public void Hide()
 {
     Visible = false;
     if (CurrentMap == null)
     {
         return;
     }
     CurrentMap.Broadcast(new S.ObjectRemove {
         ObjectID = ObjectID
     }, CurrentLocation);
 }
Ejemplo n.º 6
0
        public void BroadcastHealthChange()
        {
            if (Race != ObjectType.Player && Race != ObjectType.Monster)
            {
                return;
            }

            byte   time = Math.Min(byte.MaxValue, (byte)Math.Max(5, (RevTime - Envir.Time) / 1000));
            Packet p    = new S.ObjectHealth {
                ObjectID = ObjectID, Percent = PercentHealth, Expire = time
            };

            if (Envir.Time < RevTime)
            {
                CurrentMap.Broadcast(p, CurrentLocation);
                return;
            }

            if (Race == ObjectType.Monster && !AutoRev && Master == null)
            {
                return;
            }

            if (Race == ObjectType.Player)
            {
                if (GroupMembers != null) //Send HP to group
                {
                    for (int i = 0; i < GroupMembers.Count; i++)
                    {
                        PlayerObject member = GroupMembers[i];

                        if (this == member)
                        {
                            continue;
                        }
                        if (member.CurrentMap != CurrentMap || !Functions.InRange(member.CurrentLocation, CurrentLocation, Globals.DataRange))
                        {
                            continue;
                        }
                        member.Enqueue(p);
                    }
                }

                return;
            }

            if (Master != null && Master.Race == ObjectType.Player)
            {
                PlayerObject player = (PlayerObject)Master;

                player.Enqueue(p);

                if (player.GroupMembers != null) //Send pet HP to group
                {
                    for (int i = 0; i < player.GroupMembers.Count; i++)
                    {
                        PlayerObject member = player.GroupMembers[i];

                        if (player == member)
                        {
                            continue;
                        }

                        if (member.CurrentMap != CurrentMap || !Functions.InRange(member.CurrentLocation, CurrentLocation, Globals.DataRange))
                        {
                            continue;
                        }
                        member.Enqueue(p);
                    }
                }
            }


            if (EXPOwner != null && EXPOwner.Race == ObjectType.Player)
            {
                PlayerObject player = (PlayerObject)EXPOwner;

                if (player.IsMember(Master))
                {
                    return;
                }

                player.Enqueue(p);

                if (player.GroupMembers != null)
                {
                    for (int i = 0; i < player.GroupMembers.Count; i++)
                    {
                        PlayerObject member = player.GroupMembers[i];

                        if (player == member)
                        {
                            continue;
                        }
                        if (member.CurrentMap != CurrentMap || !Functions.InRange(member.CurrentLocation, CurrentLocation, Globals.DataRange))
                        {
                            continue;
                        }
                        member.Enqueue(p);
                    }
                }
            }
        }
Ejemplo n.º 7
0
        public void CheckVisible(PlayerObject Player, bool Force = false)
        {
            VisibleLog.TryGetValue(Player.Info.Index, out bool canSee);

            if (Conq != null && Conq.WarIsOn)
            {
                if (canSee)
                {
                    CurrentMap.Broadcast(new S.ObjectRemove {
                        ObjectID = ObjectID
                    }, CurrentLocation, Player);
                }
                VisibleLog[Player.Info.Index] = false;
                return;
            }

            if (Info.FlagNeeded != 0 && !Player.Info.Flags[Info.FlagNeeded])
            {
                if (canSee)
                {
                    CurrentMap.Broadcast(new S.ObjectRemove {
                        ObjectID = ObjectID
                    }, CurrentLocation, Player);
                }
                VisibleLog[Player.Info.Index] = false;
                return;
            }

            if (Info.MinLev != 0 && Player.Level < Info.MinLev || Info.MaxLev != 0 && Player.Level > Info.MaxLev)
            {
                if (canSee)
                {
                    CurrentMap.Broadcast(new S.ObjectRemove {
                        ObjectID = ObjectID
                    }, CurrentLocation, Player);
                }
                VisibleLog[Player.Info.Index] = false;
                return;
            }

            if (Info.ClassRequired != "" && Player.Class.ToString() != Info.ClassRequired)
            {
                if (canSee)
                {
                    CurrentMap.Broadcast(new S.ObjectRemove {
                        ObjectID = ObjectID
                    }, CurrentLocation, Player);
                }
                VisibleLog[Player.Info.Index] = false;
                return;
            }

            if (Visible && !canSee)
            {
                CurrentMap.Broadcast(GetInfo(), CurrentLocation, Player);
            }
            else if (Force && Visible)
            {
                CurrentMap.Broadcast(GetInfo(), CurrentLocation, Player);
            }

            VisibleLog[Player.Info.Index] = true;
        }