Exemplo n.º 1
0
 public void CopyTo(WorldPosition position)
 {
     position.X = X;
     position.Y = Y;
     position.Z = Z;
     position.Heading = Heading;
 }
Exemplo n.º 2
0
 public static short GetHeading(WorldPosition fromWorldPosition, Point3D toPoint3D)
 {
     return
         (short)
         (Math.Atan2(toPoint3D.Y - fromWorldPosition.Y, toPoint3D.X - fromWorldPosition.X) * 32768 /
          Math.PI);
 }
Exemplo n.º 3
0
        public Area GetAreaByCoords(WorldPosition coords)
        {
            if (!Data.Data.Areas.ContainsKey(coords.MapId))
                return null;

            return (from area in Data.Data.Areas[coords.MapId] from section in area.Sections where section.Polygon.Contains(coords.ToPoint3D()) select area).FirstOrDefault();
        }
Exemplo n.º 4
0
 public static short GetHeading(WorldPosition fromWorldPosition, WorldPosition toWorldPosition)
 {
     return
         (short)
         (Math.Atan2(toWorldPosition.Y - fromWorldPosition.Y, toWorldPosition.X - fromWorldPosition.X)*32768/
          Math.PI);
 }
Exemplo n.º 5
0
        public double FastDistanceTo(WorldPosition p2)
        {
            double a = p2.X - X;
            double b = p2.Y - Y;

            return Math.Sqrt(a*a + b*b);
        }
Exemplo n.º 6
0
        public Point3D Add(WorldPosition worldPosition)
        {
            X += worldPosition.X;
            Y += worldPosition.Y;
            Z += worldPosition.Z;

            return this;
        }
Exemplo n.º 7
0
        public static double DistanceToLine(WorldPosition point, WorldPosition p0, WorldPosition p1)
        {
            double dx = p1.X - p0.X;
            double dy = p1.Y - p0.Y;

            return
                Math.Abs(((p0.Y - p1.Y)*point.X + (p1.X - p0.X)*point.Y + (p0.X*p1.Y - p1.X*p0.Y))/
                         (Math.Sqrt(dx*dx + dy*dy)));
        }
Exemplo n.º 8
0
        public void Release()
        {
            StartPosition = null;
            TargetPosition = null;

            if (Targets != null)
                Targets.Clear();
            Targets = null;
        }
Exemplo n.º 9
0
 public SpDropInfo(int itemId, WorldPosition worldPosition)
 {
     Item = new Item
                {
                    Position = worldPosition,
                    Count = 1,
                    ItemId = itemId,
                    //20000000
                };
 }
Exemplo n.º 10
0
        public static WorldPosition ForwardPosition(WorldPosition position, int distance)
        {
            var result = position.Clone();

            double angle = position.Heading * Math.PI / 32768;
            result.X += (float) Math.Cos(angle)*distance;
            result.Y += (float) Math.Sin(angle)*distance;

            return result;
        }
Exemplo n.º 11
0
        public static double GetAngle(WorldPosition center, WorldPosition point1, WorldPosition point2)
        {
            double x1 = point1.X - center.X;
            double x2 = point2.X - center.X;

            double y1 = point1.Y - center.Y;
            double y2 = point2.Y - center.Y;

            return Math.Acos((x1*x2 + y1*y2)/Math.Sqrt((x1*x1 + y1*y1)*(x2*x2 + y2*y2)));
        }
Exemplo n.º 12
0
        public double DistanceTo(WorldPosition p2)
        {
            if (p2 == null)
                return double.MaxValue;

            double a = p2.X - X;
            double b = p2.Y - Y;
            double c = p2.Z - Z;

            return Math.Sqrt(a*a + b*b + c*c);
        }
Exemplo n.º 13
0
        public void ForceTeleport(Player player, WorldPosition position)
        {
            Communication.Global.MapService.PlayerLeaveWorld(player);

            player.Position.MapId = position.MapId;
            player.Position.X = position.X;
            player.Position.Y = position.Y;
            player.Position.Z = position.Z;
            player.Position.Heading = position.Heading;

            new SpCharacterBind(player).Send(player.Connection);
        }
Exemplo n.º 14
0
        public void FixZ(WorldPosition position)
        {
            if ((int)position.X % 256 > 20 || (int)position.Y % 256 > 20)
                return;

            for (int i = 0; i < GeoData[position.MapId].Count; i++)
            {
                if (GeoData[position.MapId][i].CheckIntersect(position.X, position.Y))
                {
                    if (GeoData[position.MapId][i].OffsetZ.Equals(float.MinValue))
                        return;

                    position.Z = GeoData[position.MapId][i].GetZ(position.X, position.Y) + 25;
                    return;
                }
            }
        }
Exemplo n.º 15
0
        public Section GetSectionByCoords(WorldPosition coords)
        {
            Area area = GetAreaByCoords(coords);

            if (area == null)
                return null;

            Section s = null;

            foreach (Section section in area.Sections)
            {
                if (!section.Polygon.Contains(coords.ToPoint3D()))
                    continue;

                foreach (var section1 in section.Sections)
                    if (section1.Polygon.Contains(coords.ToPoint3D()))
                        if (s == null || section1.Priority > s.Priority)
                            s = section1;

                return s ?? section;
            }

            return null;
        }
Exemplo n.º 16
0
        public void ItemUse(Player player, int itemId, WorldPosition position)
        {
            StorageItem i = Global.StorageService.GetItemById(player.Inventory, itemId);

            if (i == null)
                return;

            if (!CanUseItem(player, i, null, true))
                return;

            if (i.ItemTemplate.Id == 98) //Campfire
            {
                if (MapService.TryPutCampfire(player, position))
                    Global.StorageService.RemoveItemById(player, player.Inventory, itemId, 1);

                return;
            }

            ItemTemplate template = i.ItemTemplate;

            SkillStat skillStat = template.CatigorieStat as SkillStat;
            if (skillStat == null && template.CombatItemType != CombatItemType.RECIPE)
                return;

            switch (template.CombatItemType)
            {
                case CombatItemType.SKILLBOOK:
                    Global.SkillsLearnService.UseSkillBook(player, template.Id);
                    break;
                case CombatItemType.IMMEDIATE:
                case CombatItemType.DISPOSAL:
                    {
                        Global.SkillEngine.UseSkill(
                            player.Connection,
                            new UseSkillArgs
                                {
                                    IsItemSkill = true,
                                    SkillId = skillStat.SkillId,
                                    StartPosition = position,
                                });

                        new SpItemCooldown(itemId, template.Cooltime).Send(player);
                    }
                    break;
                case CombatItemType.NO_COMBAT:
                    //new SpSystemNotice("Process use NO_COMBAT item").Send(player.Connection);
                    break;
                case CombatItemType.RECIPE:
                    Global.CraftService.AddRecipe(player, itemId);
                    SystemMessages.YouLearnedToMakeRecipe("@item:" + itemId);
                    //new SpSystemNotice("You learned new recipe").Send(player.Connection);
                    break;
            }

            int groupId = ItemTemplate.Factory(itemId).CoolTimeGroup;

            if (groupId != 0)
            {
                if (player.ItemCoodowns.ContainsKey(groupId))
                    player.ItemCoodowns[groupId] = RandomUtilities.GetCurrentMilliseconds();
                else
                    player.ItemCoodowns.Add(groupId, RandomUtilities.GetCurrentMilliseconds());
            }

            Global.StorageService.RemoveItemById(player, player.Inventory, itemId, 1);
        }
Exemplo n.º 17
0
 public void CopyTo(WorldPosition worldPosition)
 {
     worldPosition.X = X;
     worldPosition.Y = Y;
     worldPosition.Z = Z;
 }
Exemplo n.º 18
0
        public double DistanceTo(WorldPosition position)
        {
            double a = position.X - X;
            double b = position.Y - Y;
            double c = position.Z - Z;

            return Math.Sqrt(a*a + b*b + c*c);
        }
Exemplo n.º 19
0
        public static void DebugPoint(Creature creature, WorldPosition position)
        {
            DropItem(creature, 20000000, 0, position.Clone(), true);

            Player player = creature as Player;
            if (player != null)
                player.Visible.Update();
        }
Exemplo n.º 20
0
 public static short GetHeading(Point3D fromPoint3D, WorldPosition toWorldPosition)
 {
     return (short)(Math.Atan2(toWorldPosition.Y - fromPoint3D.Y, toWorldPosition.X - fromPoint3D.X) * 32768 / Math.PI);
 }
Exemplo n.º 21
0
 public List<Creature> FindTargets(Creature creature, WorldPosition position, double distance, TargetingAreaType type)
 {
     return FindTargets(creature, position.X, position.Y, position.Z, distance, type);
 }
Exemplo n.º 22
0
 public void Release()
 {
     Position = null;
 }
Exemplo n.º 23
0
 public void Release()
 {
     Position = null;
 }
Exemplo n.º 24
0
        public WorldPosition Clone()
        {
            WorldPosition clone = (WorldPosition)MemberwiseClone();

            return(clone);
        }
Exemplo n.º 25
0
 public short GetHeadingToTarget(WorldPosition worldPosition)
 {
     return(Geom.GetHeading(((float)((worldPosition.X - X) / DistanceTo(worldPosition)) * 45),
                            ((float)((worldPosition.Y - Y) / DistanceTo(worldPosition)) * 45)));
 }
Exemplo n.º 26
0
 public void MoveTo(WorldPosition position, int distance = 0)
 {
     position.CopyTo(TargetPosition);
     TargetDistance = distance;
     Move();
 }
Exemplo n.º 27
0
 public short GetHeadingToTarget(WorldPosition worldPosition)
 {
     return Geom.GetHeading(((float) ((worldPosition.X - X)/DistanceTo(worldPosition))*45),
                            ((float) ((worldPosition.Y - Y)/DistanceTo(worldPosition))*45));
 }
Exemplo n.º 28
0
        public double DistanceTo2D(WorldPosition position)
        {
            double a = position.X - X;
            double b = position.Y - Y;

            return Math.Sqrt(a * a + b * b);
        }
Exemplo n.º 29
0
        public bool Equals(WorldPosition p)
        {
            if (ReferenceEquals(null, p))
                return false;

            return p.X.Equals(X) && p.Y.Equals(Y) && p.Z.Equals(Z);
        }
Exemplo n.º 30
0
        public static void DropItem(Creature creature, int itemId, int workParam, WorldPosition position, bool isDebug = false)
        {
            if (!isDebug)
                position =
                    Geom.GetNormal(position.Heading)
                        .Multiple(35)
                        .Add(position)
                        .SetZ(position.Z + 25)
                        .ToWorldPosition();

            creature.Instance.AddDrop(
                new Item
                {
                    Owner = creature as Player,
                    Npc = creature as Npc,

                    ItemId = itemId,
                    Count = 1,
                    Position = position,
                    Instance = creature.Instance,
                    WorkParam = workParam
                });
        }
Exemplo n.º 31
0
 public static double DistanceToLine(WorldPosition point, WorldPosition p0, WorldPosition p1, double lineHeight)
 {
     return Math.Abs(((p0.Y - p1.Y)*point.X + (p1.X - p0.X)*point.Y + (p0.X*p1.Y - p1.X*p0.Y))/lineHeight);
 }
Exemplo n.º 32
0
        public override void Release()
        {
            if (ObserversList != null)
                ObserversList.Clear();
            ObserversList = null;

            VisiblePlayers = null;
            VisibleNpcs = null;
            VisibleItems = null;
            VisibleGathers = null;

            if (Ai != null)
                Ai.Release();
            Ai = null;

            if (_lifeStats != null)
                _lifeStats.Release();
            _lifeStats = null;

            GameStats = null;

            Position = null;
            BindPoint = null;
            Instance = null;

            Target = null;

            if (VisualEffect != null)
                VisualEffect.Release();
            VisualEffect = null;

            if (Effects != null)
                for (int i = 0; i < Effects.Count; i++)
                    Effects[i].Release();
            Effects = null;
            EffectsLock = null;

            base.Release();
        }
Exemplo n.º 33
0
 public static short GetHeading(WorldPosition worldPosition)
 {
     return (short) (Math.Atan2(worldPosition.Y, worldPosition.X)*32768/Math.PI);
 }