public override bool TryAdd(Player plr) { var result = new SImperialEnterResult { Day = DateTime.Now.DayOfWeek, Index = plr.ID, Result = 0, State = 1, Unk = 0, EntryTime = 0, }; if (plr.Character.Party == null) { result.Result = 6; _ = plr.Session.SendAsync(result); return(false); } var itNum = ItemNumber.FromTypeIndex(14, (ushort)(result.Day == DayOfWeek.Sunday ? 109 : 102)); var invitation = plr.Character.Inventory.FindAll(itNum); if (invitation.Length <= 0) { result.Result = 2; _ = plr.Session.SendAsync(result); return(false); } if (CurrentState != EventState.Open && _players.First().Player.Character.Party != plr.Character.Party) { result.Result = 1; _ = plr.Session.SendAsync(result); return(false); } _ = plr.Character.Inventory.Delete(invitation.First()); plr.Window = null; _ = plr.Character.WarpTo(_imperialGates[(int)result.Day]); _players.Add(new PlayerEventInfo { Eventer = true, Player = plr }); plr.Character.MapChanged += OnPlayerLeave; plr.Character.CharacterDie += OnPlayerDead; return(true); }
public override bool TryAdd(Player plr) { var result = new SImperialEnterResult { Day = (byte)DateTime.Now.DayOfWeek, Index = plr.ID, Result = 0, State = 1, Unk = 0, EntryTime = 0, }; /*if(plr.Character.Party == null) * { * result.Result = 6; * _ = plr.Session.SendAsync(result); * return false; * }*/ var itNum = ItemNumber.FromTypeIndex(14, (ushort)(result.Day == (byte)DayOfWeek.Sunday ? 109 : 102)); var invitation = plr.Character.Inventory.FindAll(itNum); if (invitation.Length <= 0) { result.Result = 2; _ = plr.Session.SendAsync(result); return(false); } if ( CurrentState != EventState.Open && (_players.First().Player.Character.Party != plr.Character.Party || CurrentZone.CurrentState != FortressZoneState.BeginWaitPlayer) ) { result.Result = 1; _ = plr.Session.SendAsync(result); return(false); } _ = plr.Character.Inventory.Delete(invitation.First()); plr.Window = null; _ = plr.Character.WarpTo(_imperialGates[(int)result.Day]); _players.Add(new PlayerEventInfo { Eventer = true, Player = plr }); plr.Character.MapChanged += OnPlayerLeave; plr.Character.CharacterDie += OnPlayerDead; if (CurrentState == EventState.Open) { _zones[0].Trigger(FortressZoneState.BeginWaitPlayer); _zones[0].AddPlayer(plr); } else { CurrentZone.AddPlayer(plr); } return(true); }