diff --git a/cmd/d2data/d2data/terrorized_levels.json b/cmd/d2data/d2data/terrorized_levels.json new file mode 100644 index 0000000..9cb8a25 --- /dev/null +++ b/cmd/d2data/d2data/terrorized_levels.json @@ -0,0 +1,76 @@ +[ + 2, + 8, + 3, + 9, + 10, + 12, + 17, + 18, + 19, + 4, + 5, + 10, + 14, + 6, + 11, + 15, + 20, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 41, + 47, + 48, + 49, + 42, + 56, + 57, + 60, + 43, + 44, + 45, + 58, + 61, + 65, + 66, + 74, + 76, + 85, + 83, + 77, + 78, + 88, + 89, + 91, + 80, + 94, + 95, + 100, + 104, + 105, + 106, + 107, + 108, + 110, + 111, + 125, + 115, + 116, + 113, + 114, + 112, + 126, + 118, + 119, + 121, + 128 +] \ No newline at end of file diff --git a/cmd/d2data/main.go b/cmd/d2data/main.go index befe00e..9ca3344 100644 --- a/cmd/d2data/main.go +++ b/cmd/d2data/main.go @@ -5,6 +5,7 @@ import ( "io" "log" "os" + "slices" "text/template" ) @@ -34,7 +35,7 @@ package area var Areas = map[ID]Area{ {{- range $key, $value := . }} - {{ $key }}: {Name: "{{ $value.LevelName }}", ID: {{ $key }}}, + {{ $key }}: {Name: "{{ $value.LevelName }}", ID: {{ $key }}, CanBeTerrorized: {{ $value.CanBeTerrorized }}}, {{- end }} }` @@ -58,8 +59,9 @@ type Skill struct { } type Level struct { - ID int `json:"Id"` - LevelName string `json:"LevelName"` + ID int `json:"Id"` + LevelName string `json:"LevelName"` + CanBeTerrorized bool } // Generate static code from https://github.com/blizzhackers/d2data data files. @@ -74,22 +76,14 @@ func main() { log.Fatal(err) } - err = generateFromFile(templateLevels, "cmd/d2data/d2data/levels.json", "pkg/data/area/areas.go", &map[string]Level{}) + err = generateAreas() if err != nil { log.Fatal(err) } } func generateFromFile(templateName, filePath, outPath string, unmarshallStruct interface{}) error { - jsonFile, err := os.Open(filePath) - if err != nil { - return err - } - defer jsonFile.Close() - - byteValue, _ := io.ReadAll(jsonFile) - - err = json.Unmarshal(byteValue, &unmarshallStruct) + err := unmarshalFile(filePath, &unmarshallStruct) if err != nil { return err } @@ -104,3 +98,49 @@ func generateFromFile(templateName, filePath, outPath string, unmarshallStruct i return t.Execute(file, unmarshallStruct) } + +func generateAreas() error { + levels := make(map[string]Level) + err := unmarshalFile("cmd/d2data/d2data/levels.json", &levels) + if err != nil { + return err + } + + terrorizedLevels := make([]int, 0) + err = unmarshalFile("cmd/d2data/d2data/terrorized_levels.json", &terrorizedLevels) + if err != nil { + return err + } + + for k, lvl := range levels { + if slices.Contains(terrorizedLevels, lvl.ID) { + lvl.CanBeTerrorized = true + levels[k] = lvl + } + } + + t := template.Must(template.New("tpl").Parse(templateLevels)) + + file, err := os.Create("pkg/data/area/areas.go") + if err != nil { + return err + } + defer file.Close() + + return t.Execute(file, levels) +} + +func unmarshalFile(filePath string, unmarshallTo interface{}) error { + jsonFile, err := os.Open(filePath) + if err != nil { + return err + } + defer jsonFile.Close() + + byteValue, err := io.ReadAll(jsonFile) + if err != nil { + return err + } + + return json.Unmarshal(byteValue, &unmarshallTo) +} diff --git a/pkg/data/area/area.go b/pkg/data/area/area.go index 7a4c6f6..c92c842 100644 --- a/pkg/data/area/area.go +++ b/pkg/data/area/area.go @@ -4,7 +4,8 @@ type ID int type Area struct { ID - Name string + Name string + CanBeTerrorized bool } func (a ID) IsTown() bool { diff --git a/pkg/data/area/areas.go b/pkg/data/area/areas.go index 79ad4cc..71c00c8 100644 --- a/pkg/data/area/areas.go +++ b/pkg/data/area/areas.go @@ -3,141 +3,141 @@ package area var Areas = map[ID]Area{ - 0: {Name: "", ID: 0}, - 1: {Name: "Rogue Encampment", ID: 1}, - 10: {Name: "Underground Passage Level 1", ID: 10}, - 100: {Name: "Durance of Hate Level 1", ID: 100}, - 101: {Name: "Durance of Hate Level 2", ID: 101}, - 102: {Name: "Durance of Hate Level 3", ID: 102}, - 103: {Name: "The Pandemonium Fortress", ID: 103}, - 104: {Name: "Outer Steppes", ID: 104}, - 105: {Name: "Plains of Despair", ID: 105}, - 106: {Name: "City of the Damned", ID: 106}, - 107: {Name: "River of Flame", ID: 107}, - 108: {Name: "Chaos Sanctum", ID: 108}, - 109: {Name: "Harrogath", ID: 109}, - 11: {Name: "Hole Level 1", ID: 11}, - 110: {Name: "Bloody Foothills", ID: 110}, - 111: {Name: "Rigid Highlands", ID: 111}, - 112: {Name: "Arreat Plateau", ID: 112}, - 113: {Name: "Crystalized Cavern Level 1", ID: 113}, - 114: {Name: "Cellar of Pity", ID: 114}, - 115: {Name: "Crystalized Cavern Level 2", ID: 115}, - 116: {Name: "Echo Chamber", ID: 116}, - 117: {Name: "Tundra Wastelands", ID: 117}, - 118: {Name: "Glacial Caves Level 1", ID: 118}, - 119: {Name: "Glacial Caves Level 2", ID: 119}, - 12: {Name: "Pit Level 1", ID: 12}, - 120: {Name: "Rocky Summit", ID: 120}, - 121: {Name: "Nihlathaks Temple", ID: 121}, - 122: {Name: "Halls of Anguish", ID: 122}, - 123: {Name: "Halls of Death's Calling", ID: 123}, - 124: {Name: "Halls of Vaught", ID: 124}, - 125: {Name: "Hell1", ID: 125}, - 126: {Name: "Hell2", ID: 126}, - 127: {Name: "Hell3", ID: 127}, - 128: {Name: "The Worldstone Keep Level 1", ID: 128}, - 129: {Name: "The Worldstone Keep Level 2", ID: 129}, - 13: {Name: "Cave Level 2", ID: 13}, - 130: {Name: "The Worldstone Keep Level 3", ID: 130}, - 131: {Name: "Throne of Destruction", ID: 131}, - 132: {Name: "The Worldstone Chamber", ID: 132}, - 133: {Name: "Pandemonium Run 1", ID: 133}, - 134: {Name: "Pandemonium Run 2", ID: 134}, - 135: {Name: "Pandemonium Run 3", ID: 135}, - 136: {Name: "Tristram", ID: 136}, - 14: {Name: "Underground Passage Level 2", ID: 14}, - 15: {Name: "Hole Level 2", ID: 15}, - 16: {Name: "Pit Level 2", ID: 16}, - 17: {Name: "Burial Grounds", ID: 17}, - 18: {Name: "Crypt", ID: 18}, - 19: {Name: "Mausoleum", ID: 19}, - 2: {Name: "Blood Moor", ID: 2}, - 20: {Name: "Forgotten Tower", ID: 20}, - 21: {Name: "Tower Cellar Level 1", ID: 21}, - 22: {Name: "Tower Cellar Level 2", ID: 22}, - 23: {Name: "Tower Cellar Level 3", ID: 23}, - 24: {Name: "Tower Cellar Level 4", ID: 24}, - 25: {Name: "Tower Cellar Level 5", ID: 25}, - 26: {Name: "Monastery Gate", ID: 26}, - 27: {Name: "Outer Cloister", ID: 27}, - 28: {Name: "Barracks", ID: 28}, - 29: {Name: "Jail Level 1", ID: 29}, - 3: {Name: "Cold Plains", ID: 3}, - 30: {Name: "Jail Level 2", ID: 30}, - 31: {Name: "Jail Level 3", ID: 31}, - 32: {Name: "Inner Cloister", ID: 32}, - 33: {Name: "Cathedral", ID: 33}, - 34: {Name: "Catacombs Level 1", ID: 34}, - 35: {Name: "Catacombs Level 2", ID: 35}, - 36: {Name: "Catacombs Level 3", ID: 36}, - 37: {Name: "Catacombs Level 4", ID: 37}, - 38: {Name: "Tristram", ID: 38}, - 39: {Name: "Moo Moo Farm", ID: 39}, - 4: {Name: "Stony Field", ID: 4}, - 40: {Name: "Lut Gholein", ID: 40}, - 41: {Name: "Rocky Waste", ID: 41}, - 42: {Name: "Dry Hills", ID: 42}, - 43: {Name: "Far Oasis", ID: 43}, - 44: {Name: "Lost City", ID: 44}, - 45: {Name: "Valley of Snakes", ID: 45}, - 46: {Name: "Canyon of the Magi", ID: 46}, - 47: {Name: "Sewers Level 1", ID: 47}, - 48: {Name: "Sewers Level 2", ID: 48}, - 49: {Name: "Sewers Level 3", ID: 49}, - 5: {Name: "Dark Wood", ID: 5}, - 50: {Name: "Harem Level 1", ID: 50}, - 51: {Name: "Harem Level 2", ID: 51}, - 52: {Name: "Palace Cellar Level 1", ID: 52}, - 53: {Name: "Palace Cellar Level 2", ID: 53}, - 54: {Name: "Palace Cellar Level 3", ID: 54}, - 55: {Name: "Stony Tomb Level 1", ID: 55}, - 56: {Name: "Halls of the Dead Level 1", ID: 56}, - 57: {Name: "Halls of the Dead Level 2", ID: 57}, - 58: {Name: "Claw Viper Temple Level 1", ID: 58}, - 59: {Name: "Stony Tomb Level 2", ID: 59}, - 6: {Name: "Black Marsh", ID: 6}, - 60: {Name: "Halls of the Dead Level 3", ID: 60}, - 61: {Name: "Claw Viper Temple Level 2", ID: 61}, - 62: {Name: "Maggot Lair Level 1", ID: 62}, - 63: {Name: "Maggot Lair Level 2", ID: 63}, - 64: {Name: "Maggot Lair Level 3", ID: 64}, - 65: {Name: "Ancient Tunnels", ID: 65}, - 66: {Name: "Tal Rasha's Tomb", ID: 66}, - 67: {Name: "Tal Rasha's Tomb", ID: 67}, - 68: {Name: "Tal Rasha's Tomb", ID: 68}, - 69: {Name: "Tal Rasha's Tomb", ID: 69}, - 7: {Name: "Tamoe Highland", ID: 7}, - 70: {Name: "Tal Rasha's Tomb", ID: 70}, - 71: {Name: "Tal Rasha's Tomb", ID: 71}, - 72: {Name: "Tal Rasha's Tomb", ID: 72}, - 73: {Name: "Duriel's Lair", ID: 73}, - 74: {Name: "Arcane Sanctuary", ID: 74}, - 75: {Name: "Kurast Docktown", ID: 75}, - 76: {Name: "Spider Forest", ID: 76}, - 77: {Name: "Great Marsh", ID: 77}, - 78: {Name: "Flayer Jungle", ID: 78}, - 79: {Name: "Lower Kurast", ID: 79}, - 8: {Name: "Den of Evil", ID: 8}, - 80: {Name: "Kurast Bazaar", ID: 80}, - 81: {Name: "Upper Kurast", ID: 81}, - 82: {Name: "Kurast Causeway", ID: 82}, - 83: {Name: "Travincal", ID: 83}, - 84: {Name: "Spider Cave", ID: 84}, - 85: {Name: "Spider Cavern", ID: 85}, - 86: {Name: "Swampy Pit Level 1", ID: 86}, - 87: {Name: "Swampy Pit Level 2", ID: 87}, - 88: {Name: "Flayer Dungeon Level 1", ID: 88}, - 89: {Name: "Flayer Dungeon Level 2", ID: 89}, - 9: {Name: "Cave Level 1", ID: 9}, - 90: {Name: "Swampy Pit Level 3", ID: 90}, - 91: {Name: "Flayer Dungeon Level 3", ID: 91}, - 92: {Name: "Sewers Level 1", ID: 92}, - 93: {Name: "Sewers Level 2", ID: 93}, - 94: {Name: "Ruined Temple", ID: 94}, - 95: {Name: "Disused Fane", ID: 95}, - 96: {Name: "Forgotten Reliquary", ID: 96}, - 97: {Name: "Forgotten Temple", ID: 97}, - 98: {Name: "Ruined Fane", ID: 98}, - 99: {Name: "Disused Reliquary", ID: 99}, + 0: {Name: "", ID: 0, CanBeTerrorized: false}, + 1: {Name: "Rogue Encampment", ID: 1, CanBeTerrorized: false}, + 10: {Name: "Underground Passage Level 1", ID: 10, CanBeTerrorized: true}, + 100: {Name: "Durance of Hate Level 1", ID: 100, CanBeTerrorized: true}, + 101: {Name: "Durance of Hate Level 2", ID: 101, CanBeTerrorized: false}, + 102: {Name: "Durance of Hate Level 3", ID: 102, CanBeTerrorized: false}, + 103: {Name: "The Pandemonium Fortress", ID: 103, CanBeTerrorized: false}, + 104: {Name: "Outer Steppes", ID: 104, CanBeTerrorized: true}, + 105: {Name: "Plains of Despair", ID: 105, CanBeTerrorized: true}, + 106: {Name: "City of the Damned", ID: 106, CanBeTerrorized: true}, + 107: {Name: "River of Flame", ID: 107, CanBeTerrorized: true}, + 108: {Name: "Chaos Sanctum", ID: 108, CanBeTerrorized: true}, + 109: {Name: "Harrogath", ID: 109, CanBeTerrorized: false}, + 11: {Name: "Hole Level 1", ID: 11, CanBeTerrorized: true}, + 110: {Name: "Bloody Foothills", ID: 110, CanBeTerrorized: true}, + 111: {Name: "Rigid Highlands", ID: 111, CanBeTerrorized: true}, + 112: {Name: "Arreat Plateau", ID: 112, CanBeTerrorized: true}, + 113: {Name: "Crystalized Cavern Level 1", ID: 113, CanBeTerrorized: true}, + 114: {Name: "Cellar of Pity", ID: 114, CanBeTerrorized: true}, + 115: {Name: "Crystalized Cavern Level 2", ID: 115, CanBeTerrorized: true}, + 116: {Name: "Echo Chamber", ID: 116, CanBeTerrorized: true}, + 117: {Name: "Tundra Wastelands", ID: 117, CanBeTerrorized: false}, + 118: {Name: "Glacial Caves Level 1", ID: 118, CanBeTerrorized: true}, + 119: {Name: "Glacial Caves Level 2", ID: 119, CanBeTerrorized: true}, + 12: {Name: "Pit Level 1", ID: 12, CanBeTerrorized: true}, + 120: {Name: "Rocky Summit", ID: 120, CanBeTerrorized: false}, + 121: {Name: "Nihlathaks Temple", ID: 121, CanBeTerrorized: true}, + 122: {Name: "Halls of Anguish", ID: 122, CanBeTerrorized: false}, + 123: {Name: "Halls of Death's Calling", ID: 123, CanBeTerrorized: false}, + 124: {Name: "Halls of Vaught", ID: 124, CanBeTerrorized: false}, + 125: {Name: "Hell1", ID: 125, CanBeTerrorized: true}, + 126: {Name: "Hell2", ID: 126, CanBeTerrorized: true}, + 127: {Name: "Hell3", ID: 127, CanBeTerrorized: false}, + 128: {Name: "The Worldstone Keep Level 1", ID: 128, CanBeTerrorized: true}, + 129: {Name: "The Worldstone Keep Level 2", ID: 129, CanBeTerrorized: false}, + 13: {Name: "Cave Level 2", ID: 13, CanBeTerrorized: false}, + 130: {Name: "The Worldstone Keep Level 3", ID: 130, CanBeTerrorized: false}, + 131: {Name: "Throne of Destruction", ID: 131, CanBeTerrorized: false}, + 132: {Name: "The Worldstone Chamber", ID: 132, CanBeTerrorized: false}, + 133: {Name: "Pandemonium Run 1", ID: 133, CanBeTerrorized: false}, + 134: {Name: "Pandemonium Run 2", ID: 134, CanBeTerrorized: false}, + 135: {Name: "Pandemonium Run 3", ID: 135, CanBeTerrorized: false}, + 136: {Name: "Tristram", ID: 136, CanBeTerrorized: false}, + 14: {Name: "Underground Passage Level 2", ID: 14, CanBeTerrorized: true}, + 15: {Name: "Hole Level 2", ID: 15, CanBeTerrorized: true}, + 16: {Name: "Pit Level 2", ID: 16, CanBeTerrorized: false}, + 17: {Name: "Burial Grounds", ID: 17, CanBeTerrorized: true}, + 18: {Name: "Crypt", ID: 18, CanBeTerrorized: true}, + 19: {Name: "Mausoleum", ID: 19, CanBeTerrorized: true}, + 2: {Name: "Blood Moor", ID: 2, CanBeTerrorized: true}, + 20: {Name: "Forgotten Tower", ID: 20, CanBeTerrorized: true}, + 21: {Name: "Tower Cellar Level 1", ID: 21, CanBeTerrorized: false}, + 22: {Name: "Tower Cellar Level 2", ID: 22, CanBeTerrorized: false}, + 23: {Name: "Tower Cellar Level 3", ID: 23, CanBeTerrorized: false}, + 24: {Name: "Tower Cellar Level 4", ID: 24, CanBeTerrorized: false}, + 25: {Name: "Tower Cellar Level 5", ID: 25, CanBeTerrorized: false}, + 26: {Name: "Monastery Gate", ID: 26, CanBeTerrorized: false}, + 27: {Name: "Outer Cloister", ID: 27, CanBeTerrorized: false}, + 28: {Name: "Barracks", ID: 28, CanBeTerrorized: false}, + 29: {Name: "Jail Level 1", ID: 29, CanBeTerrorized: true}, + 3: {Name: "Cold Plains", ID: 3, CanBeTerrorized: true}, + 30: {Name: "Jail Level 2", ID: 30, CanBeTerrorized: true}, + 31: {Name: "Jail Level 3", ID: 31, CanBeTerrorized: true}, + 32: {Name: "Inner Cloister", ID: 32, CanBeTerrorized: true}, + 33: {Name: "Cathedral", ID: 33, CanBeTerrorized: true}, + 34: {Name: "Catacombs Level 1", ID: 34, CanBeTerrorized: true}, + 35: {Name: "Catacombs Level 2", ID: 35, CanBeTerrorized: true}, + 36: {Name: "Catacombs Level 3", ID: 36, CanBeTerrorized: true}, + 37: {Name: "Catacombs Level 4", ID: 37, CanBeTerrorized: true}, + 38: {Name: "Tristram", ID: 38, CanBeTerrorized: true}, + 39: {Name: "Moo Moo Farm", ID: 39, CanBeTerrorized: true}, + 4: {Name: "Stony Field", ID: 4, CanBeTerrorized: true}, + 40: {Name: "Lut Gholein", ID: 40, CanBeTerrorized: false}, + 41: {Name: "Rocky Waste", ID: 41, CanBeTerrorized: true}, + 42: {Name: "Dry Hills", ID: 42, CanBeTerrorized: true}, + 43: {Name: "Far Oasis", ID: 43, CanBeTerrorized: true}, + 44: {Name: "Lost City", ID: 44, CanBeTerrorized: true}, + 45: {Name: "Valley of Snakes", ID: 45, CanBeTerrorized: true}, + 46: {Name: "Canyon of the Magi", ID: 46, CanBeTerrorized: false}, + 47: {Name: "Sewers Level 1", ID: 47, CanBeTerrorized: true}, + 48: {Name: "Sewers Level 2", ID: 48, CanBeTerrorized: true}, + 49: {Name: "Sewers Level 3", ID: 49, CanBeTerrorized: true}, + 5: {Name: "Dark Wood", ID: 5, CanBeTerrorized: true}, + 50: {Name: "Harem Level 1", ID: 50, CanBeTerrorized: false}, + 51: {Name: "Harem Level 2", ID: 51, CanBeTerrorized: false}, + 52: {Name: "Palace Cellar Level 1", ID: 52, CanBeTerrorized: false}, + 53: {Name: "Palace Cellar Level 2", ID: 53, CanBeTerrorized: false}, + 54: {Name: "Palace Cellar Level 3", ID: 54, CanBeTerrorized: false}, + 55: {Name: "Stony Tomb Level 1", ID: 55, CanBeTerrorized: false}, + 56: {Name: "Halls of the Dead Level 1", ID: 56, CanBeTerrorized: true}, + 57: {Name: "Halls of the Dead Level 2", ID: 57, CanBeTerrorized: true}, + 58: {Name: "Claw Viper Temple Level 1", ID: 58, CanBeTerrorized: true}, + 59: {Name: "Stony Tomb Level 2", ID: 59, CanBeTerrorized: false}, + 6: {Name: "Black Marsh", ID: 6, CanBeTerrorized: true}, + 60: {Name: "Halls of the Dead Level 3", ID: 60, CanBeTerrorized: true}, + 61: {Name: "Claw Viper Temple Level 2", ID: 61, CanBeTerrorized: true}, + 62: {Name: "Maggot Lair Level 1", ID: 62, CanBeTerrorized: false}, + 63: {Name: "Maggot Lair Level 2", ID: 63, CanBeTerrorized: false}, + 64: {Name: "Maggot Lair Level 3", ID: 64, CanBeTerrorized: false}, + 65: {Name: "Ancient Tunnels", ID: 65, CanBeTerrorized: true}, + 66: {Name: "Tal Rasha's Tomb", ID: 66, CanBeTerrorized: true}, + 67: {Name: "Tal Rasha's Tomb", ID: 67, CanBeTerrorized: false}, + 68: {Name: "Tal Rasha's Tomb", ID: 68, CanBeTerrorized: false}, + 69: {Name: "Tal Rasha's Tomb", ID: 69, CanBeTerrorized: false}, + 7: {Name: "Tamoe Highland", ID: 7, CanBeTerrorized: false}, + 70: {Name: "Tal Rasha's Tomb", ID: 70, CanBeTerrorized: false}, + 71: {Name: "Tal Rasha's Tomb", ID: 71, CanBeTerrorized: false}, + 72: {Name: "Tal Rasha's Tomb", ID: 72, CanBeTerrorized: false}, + 73: {Name: "Duriel's Lair", ID: 73, CanBeTerrorized: false}, + 74: {Name: "Arcane Sanctuary", ID: 74, CanBeTerrorized: true}, + 75: {Name: "Kurast Docktown", ID: 75, CanBeTerrorized: false}, + 76: {Name: "Spider Forest", ID: 76, CanBeTerrorized: true}, + 77: {Name: "Great Marsh", ID: 77, CanBeTerrorized: true}, + 78: {Name: "Flayer Jungle", ID: 78, CanBeTerrorized: true}, + 79: {Name: "Lower Kurast", ID: 79, CanBeTerrorized: false}, + 8: {Name: "Den of Evil", ID: 8, CanBeTerrorized: true}, + 80: {Name: "Kurast Bazaar", ID: 80, CanBeTerrorized: true}, + 81: {Name: "Upper Kurast", ID: 81, CanBeTerrorized: false}, + 82: {Name: "Kurast Causeway", ID: 82, CanBeTerrorized: false}, + 83: {Name: "Travincal", ID: 83, CanBeTerrorized: true}, + 84: {Name: "Spider Cave", ID: 84, CanBeTerrorized: false}, + 85: {Name: "Spider Cavern", ID: 85, CanBeTerrorized: true}, + 86: {Name: "Swampy Pit Level 1", ID: 86, CanBeTerrorized: false}, + 87: {Name: "Swampy Pit Level 2", ID: 87, CanBeTerrorized: false}, + 88: {Name: "Flayer Dungeon Level 1", ID: 88, CanBeTerrorized: true}, + 89: {Name: "Flayer Dungeon Level 2", ID: 89, CanBeTerrorized: true}, + 9: {Name: "Cave Level 1", ID: 9, CanBeTerrorized: true}, + 90: {Name: "Swampy Pit Level 3", ID: 90, CanBeTerrorized: false}, + 91: {Name: "Flayer Dungeon Level 3", ID: 91, CanBeTerrorized: true}, + 92: {Name: "Sewers Level 1", ID: 92, CanBeTerrorized: false}, + 93: {Name: "Sewers Level 2", ID: 93, CanBeTerrorized: false}, + 94: {Name: "Ruined Temple", ID: 94, CanBeTerrorized: true}, + 95: {Name: "Disused Fane", ID: 95, CanBeTerrorized: true}, + 96: {Name: "Forgotten Reliquary", ID: 96, CanBeTerrorized: false}, + 97: {Name: "Forgotten Temple", ID: 97, CanBeTerrorized: false}, + 98: {Name: "Ruined Fane", ID: 98, CanBeTerrorized: false}, + 99: {Name: "Disused Reliquary", ID: 99, CanBeTerrorized: false}, }