Exemple #1
0
        public MapReference(WzImage img)
        {
            var name = img.Name.Remove(9);

            if (!int.TryParse(name, out var id))
            {
                return;
            }

            MapleId = id;

            var info = img["info"];

            foreach (var node in info.WzProperties)
            {
                switch (node.Name)
                {
                case "mapMark":
                case "cloud":
                case "snow":
                case "rain":
                case "fs":
                case "bgm":
                case "version":
                case "mapDesc":
                case "mapName":
                case "help":
                case "streetName":
                case "moveLimit":
                case "hideMinimap":
                    break;

                case "town":
                    IsTown = node.GetInt() > 0;
                    break;

                case "mobRate":
                    SpawnRate = node.GetDouble();
                    break;

                case "returnMap":
                    ReturnMapId = node.GetInt();
                    break;

                case "forcedReturn":
                    ForcedReturnMapId = node.GetInt();
                    break;

                case "fieldLimit":
                    FieldLimit = (FieldLimitFlags)node.GetInt();
                    break;

                case "bUnableToChangeChannel":
                    IsUnableToChangeChannel = node.GetInt() > 0;
                    break;

                case "bUnableToShop":
                    IsUnableToShop = node.GetInt() > 0;
                    break;

                case "everlast":
                    IsEverlastDrops = node.GetInt() > 0;
                    break;

                case "personalShop":
                    IsPersonalShop = node.GetInt() > 0;
                    break;

                case "recovery":
                    RecoveryHp = (byte)node.GetInt();
                    break;

                case "decHP":
                    DecreaseHp = (byte)node.GetInt();
                    break;

                case "scrollDisable":
                    IsScrollDisable = node.GetInt() > 0;
                    break;

                case "timeLimit":
                    TimeLimit = node.GetInt();
                    break;

                case "VRTop":
                    VrTop = node.GetInt();
                    break;

                case "VRLeft":
                    VrLeft = node.GetInt();
                    break;

                case "VRBottom":
                    VrBottom = node.GetInt();
                    break;

                case "VRRight":
                    VrRight = node.GetInt();
                    break;

                case "fieldType":
                    FieldType = (MapFieldType)node.GetInt();
                    break;

                default:
                    _log.Warning(
                        $"Unknown map node Skill={MapleId} Name={node.Name} Value={node.WzValue}");
                    break;
                }
            }

            HasClock = img["clock"] != null;
            HasShip  = img["shipObj"] != null;
            img["portal"]?.WzProperties?.ForEach(x => Portals.Add(new PortalReference(x)));
            img["seat"]?.WzProperties?.ForEach(x => Seats.Add(new SeatReference(x)));
            img["foothold"]?.WzProperties.SelectMany(x => x.WzProperties).SelectMany(x => x.WzProperties).ToList()
            .ForEach(x => Footholds.Add(new FootholdReference(x)));
            img["seat"]?.WzProperties?.ForEach(x => Seats.Add(new SeatReference(x)));
            img["life"]?.WzProperties?.ForEach(life =>
            {
                var type = life["type"].GetString();

                switch (type)
                {
                case "n":
                    Npcs.Add(new MapNpcReference(life));
                    break;

                case "m":
                    SpawnPoints.Add(new SpawnPointReference(life, LifeObjectType.Mob));
                    break;
                }
            });
        }
Exemple #2
0
 public void AddFoothold(Foothold FH)
 {
     Footholds.Add(FH);
 }