public void Hide() { CurrentMap.Broadcast(new S.ObjectRemove { ObjectID = ObjectID }, CurrentLocation); Visible = false; }
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); } } }
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; }
protected override void OnSpawned() { base.OnSpawned(); CurrentMap.Broadcast(CurrentLocation, new S.MapEffect { Location = CurrentLocation, Effect = Effect.SummonSkeleton }); ActionTime = SEnvir.Now.AddSeconds(1); }
public void Hide() { Visible = false; if (CurrentMap == null) { return; } CurrentMap.Broadcast(new S.ObjectRemove { ObjectID = ObjectID }, CurrentLocation); }
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); } } } }
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; }