Exemplo n.º 1
0
        public void OpenPortal(Character owner, SkillObjectUnk1 obj)
        {
            var portalInfo = owner.Portals.GetPortalInfo(obj.Id);

            if (CheckCanOpenPortal(owner, portalInfo.ZoneId))
            {
                MakePortal(owner, false, portalInfo);   // Entrance (green)
                MakePortal(owner, true, portalInfo);    // Exit (yellow)
            }
        }
Exemplo n.º 2
0
        public void OpenPortal(Character owner, SkillObjectUnk1 portalEffectObj)
        {
            var portalInfo = owner.Portals.GetPortalInfo((uint)portalEffectObj.Id);

            if (!CheckCanOpenPortal(owner, portalInfo.ZoneId))
            {
                return;
            }

            MakePortal(owner, false, portalInfo, portalEffectObj);   // Entrance (green)
            MakePortal(owner, true, portalInfo, portalEffectObj);    // Exit (yellow)
        }
Exemplo n.º 3
0
        private static void MakePortal(Unit owner, bool isExit, Portal portalInfo, SkillObjectUnk1 portalEffectObj)
        {
            // 3891 - Portal Entrance
            // 6949 - Portal Exit
            var portalPointDestination = new Point
            {
                X         = portalInfo.X,
                Y         = portalInfo.Y,
                Z         = portalInfo.Z,
                ZoneId    = portalInfo.ZoneId,
                RotationZ = Helpers.ConvertRotation(Convert.ToInt16(portalInfo.ZRot)),
                WorldId   = WorldManager.Instance.GetWorldByZone(portalInfo.ZoneId).Id
            };
            var portalPointLocation = new Point
            {
                X         = portalEffectObj.X,
                Y         = portalEffectObj.Y,
                Z         = portalEffectObj.Z,
                ZoneId    = owner.Position.ZoneId,
                RotationZ = owner.Position.RotationZ,
                WorldId   = owner.Position.WorldId
            };
            var templateId      = isExit ? 6949u : 3891u; // TODO - better way? maybe not hardcoded
            var template        = NpcManager.Instance.GetTemplate(templateId);
            var portalUnitModel = new Models.Game.Units.Portal
            {
                ObjId            = ObjectIdManager.Instance.GetNextId(),
                OwnerId          = ((Character)owner).Id,
                TemplateId       = templateId,
                Template         = template,
                ModelId          = template.ModelId,
                Faction          = owner.Faction, // INFO - FactionManager.Instance.GetFaction(template.FactionId)
                Level            = template.Level,
                Position         = isExit ? portalPointDestination : portalPointLocation,
                Name             = portalInfo.Name,
                Hp               = 955, // BUG - portal.MaxHp does not work 1.0
                Mp               = 290, // TODO - portal.MaxMp
                TeleportPosition = portalPointDestination
            };

            portalUnitModel.Spawn();
        }