예제 #1
0
 public IOClient(Connection s)
 {
     this.connection = s;
     this.connectedAt = Server.CurrentTimeMillis();
     this.mm_stream = new PacketWriter(255);
     this.castHandler = new CastHandler(this, handler);
     this.combatHandler = new CombatHandler2(this, handler);
     //    IOHostList.add(connectedFrom);
 }
예제 #2
0
        public static List <BaseObject> GetTileTarget(Player play, Point2D adjecentTile, int swingdir = 0)
        {
            List <BaseObject> ret = new List <BaseObject>();
            var Targets           = World.NewMonsters.Where(xe => xe.Value.m_Map != null &&
                                                            xe.Value.m_Map == play.Map &&
                                                            xe.Value.m_Loc.X == adjecentTile.X &&
                                                            xe.Value.m_Loc.Y == adjecentTile.Y &&
                                                            xe.Value.Alive).Select(xe => xe);

            // .Select(xe => xe);

            foreach (var tttt in Targets)
            {
                ret.Add(tttt.Value);
            }


            var Targets2 = PlayerHandler.getSingleton().add.Where(xe => xe.Value != null &&
                                                                  xe.Value.Map != null &&
                                                                  xe.Value != play && xe.Value.Map == play.Map &&
                                                                  xe.Value.loggedIn &&
                                                                  xe.Value.Loc.X == adjecentTile.X &&
                                                                  xe.Value.Loc.Y == adjecentTile.Y)
                           .Select(xe => xe);

            foreach (var tttt in Targets2)
            {
                ret.Add(tttt.Value);
            }

            var TargetOre = World.NewMonsters.Where(xe => xe.Value.m_Map != null &&
                                                    xe.Value.m_Map == play.Map &&
                                                    xe.Value.m_Loc.X == adjecentTile.X &&
                                                    xe.Value.m_Loc.Y == adjecentTile.Y &&
                                                    (xe.Value is script.monster.BaseNode) &&
                                                    xe.Value.Alive).Select(xe => xe);

            foreach (var ore in TargetOre)
            {
                (ore.Value as script.monster.BaseNode).Hit(play);
                return(null);
            }

            if (play.m_Buffs.Where(xe => xe.BuffEffect.BuffType == script.spells.BuffCase.Triple)
                .FirstOrDefault() != null)
            {
                ret.Clear();
                Targets = World.NewMonsters.Where(xe => xe.Value.m_Map != null && xe.Value.m_Map == play.Map
                                                  &&
                                                  (
                                                      (xe.Value.m_Loc.X == adjecentTile.X && xe.Value.m_Loc.Y == adjecentTile.Y) ||
                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir - 1).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir - 1).Y) ||
                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir + 1).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir + 1).Y)
                                                  ) &&
                                                  xe.Value.Alive)
                          .Select(xe => xe);

                Targets2 = PlayerHandler.getSingleton().add.Where(xe => xe.Key != null && xe.Value != null && xe.Value.loggedIn && xe.Value.Map == play.Map
                                                                  &&
                                                                  (
                                                                      (xe.Value.m_Loc.X == adjecentTile.X && xe.Value.m_Loc.Y == adjecentTile.Y) ||
                                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir - 1).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir - 1).Y) ||
                                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir + 1).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir + 1).Y)
                                                                  )
                                                                  ).Select(xe => xe);
                foreach (var tttt in Targets)
                {
                    ret.Add(tttt.Value);
                }
                foreach (var tttt in Targets2)
                {
                    ret.Add(tttt.Value);
                }
            }

            if (play.m_Buffs.Where(xe => xe.BuffEffect.BuffType == script.spells.BuffCase.Twister)
                .FirstOrDefault() != null)
            {
                ret.Clear();
                Targets = World.NewMonsters.Where(xe => xe.Value.m_Map != null && xe.Value.m_Map == play.Map
                                                  &&
                                                  (
                                                      (xe.Value.m_Loc.X == adjecentTile.X && xe.Value.m_Loc.Y == adjecentTile.Y) ||
                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir - 2).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir - 2).Y) ||
                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir + 2).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir + 2).Y) ||
                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir + 4).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir + 4).Y)
                                                  ) &&
                                                  xe.Value.Alive)
                          .Select(xe => xe);

                Targets2 = PlayerHandler.getSingleton().add.Where(xe => xe.Key != null && xe.Value != null && xe.Value.loggedIn && xe.Value.Map == play.Map
                                                                  &&
                                                                  (
                                                                      (xe.Value.m_Loc.X == adjecentTile.X && xe.Value.m_Loc.Y == adjecentTile.Y) ||
                                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir - 2).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir - 2).Y) ||
                                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir + 2).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir + 2).Y) ||
                                                                      (xe.Value.m_Loc.X == CombatHandler2.AdjecentTile(play, swingdir + 4).X&& xe.Value.m_Loc.Y == CombatHandler2.AdjecentTile(play, swingdir + 4).Y)
                                                                  )
                                                                  ).Select(xe => xe);
                foreach (var tttt in Targets)
                {
                    ret.Add(tttt.Value);
                }
                foreach (var tttt in Targets2)
                {
                    ret.Add(tttt.Value);
                }
            }

            return(ret.Count > 0 ? ret : null);
        }