levels

package
v0.0.0-...-6e72cc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2023 License: GPL-3.0 Imports: 1 Imported by: 0

Documentation

Overview

Package levels contains the game's level data by providing IDs for map and zone files. All relevant level data (maps and zones) is documented in https://datacrystal.romhacking.net/wiki/Vagrant_Story:level_data.

Index

Constants

This section is empty.

Variables

View Source
var Rooms = map[int][]Room{
	9: {
		{Id: 9, Name: `Entrance to Darkness`},
		{Id: 10, Name: `Room of Cheap Red Wine`},
		{Id: 11, Name: `Room of Cheap White Wine`},
		{Id: 12, Name: `Hall of Struggle`},
		{Id: 13, Name: `Smokebarrel Stair`},
		{Id: 14, Name: `Wine Guild Hall`},
		{Id: 15, Name: `Wine Magnate's Chambers`},
		{Id: 16, Name: `Fine Vintage Vault`},
		{Id: 17, Name: `Chamber of Fear`},
		{Id: 18, Name: `The Reckoning Room`, HasChest: true},
		{Id: 19, Name: `A Laborer's Thirst`},
		{Id: 20, Name: `The Rich Drown in Wine`},
		{Id: 21, Name: `Room of Rotten Grapes`},
		{Id: 24, Name: `The Greedy One's Den`},
		{Id: 27, Name: `Worker's Breakroom`, HasChest: true},
		{Id: 409, Name: `Blackmarket of Wines`, HasChest: true},
	},
	11: {
		{Id: 25, Name: `The Hero's Winehall`, HasChest: true, HasBoss: true},
	},
	12: {
		{Id: 26, Name: `The Gallows`, HasChest: true, HasBoss: true},
	},
	13: {
		{Id: 28, Name: `Hall of Sworn Revenge`},
		{Id: 29, Name: `The Last Blessing`},
		{Id: 30, Name: `The Weeping Corridor`},
		{Id: 31, Name: `Persecution Hall`},
		{Id: 32, Name: `The Lamenting Mother`, HasChest: true},
		{Id: 33, Name: `Rodent-Ridden Chamber`, HasChest: true},
		{Id: 34, Name: `Shrine to the Martyrs`},
		{Id: 36, Name: `Hall of Dying Hope`},
		{Id: 37, Name: `Bandits' Hideout`, HasChest: true},
		{Id: 38, Name: `The Bloody Hallway`},
		{Id: 39, Name: `Faith Overcame Fear`},
		{Id: 40, Name: `The Withered Spring`},
		{Id: 41, Name: `Repent, O ye Sinners`},
		{Id: 42, Name: `The Reaper's Victims`},
		{Id: 43, Name: `The Last Stab of Hope`},
		{Id: 44, Name: `Hallway of Heroes`},
	},
	14: {
		{Id: 46, Name: `The Beast's Domain`},
	},
	15: {
		{Id: 47, Name: `Prisoners' Niche`},
		{Id: 48, Name: `Corridor of the Clerics`},
		{Id: 49, Name: `Priests' Confinement`},
		{Id: 50, Name: `Alchemists' Laboratory`, HasChest: true},
		{Id: 51, Name: `Theology Classroom`},
		{Id: 52, Name: `Shrine of the Martyrs`},
		{Id: 53, Name: `Advent Ground`},
		{Id: 54, Name: `Passage of the Refugees`},
		{Id: 57, Name: `Stairway to the Light`},
		{Id: 58, Name: `Hallowed Hope`},
		{Id: 59, Name: `The Academia Corridor`},
	},
	16: {
		{Id: 60, Name: `Hall of Sacrilege`, HasBoss: true},
	},
	17: {
		{Id: 61, Name: `The Cleansing Chantry`, HasBoss: true},
	},
	50: {
		{Id: 260, Name: `Dreamers' Entrance`},
		{Id: 261, Name: `Miners' Resting Hall`, HasChest: true},
		{Id: 262, Name: `The Crossing`},
		{Id: 263, Name: `Conflict and Accord`},
		{Id: 264, Name: `The Suicide King`},
		{Id: 265, Name: `The End of the Line`},
		{Id: 266, Name: `The Battle's Beginning`, HasBoss: true},
		{Id: 267, Name: `What Lies Ahead?`},
		{Id: 268, Name: `The Fruits of Friendship`},
		{Id: 269, Name: `The Earthquake's Mark`},
		{Id: 270, Name: `Coal Mine Storage`, HasChest: true},
		{Id: 271, Name: `The Passion of Lovers`},
		{Id: 272, Name: `The Hall of Hope`},
		{Id: 273, Name: `The Dark Tunnel`},
		{Id: 274, Name: `Rust in Peace`, HasChest: true},
		{Id: 275, Name: `Everwant Passage`},
		{Id: 276, Name: `Mining Regrets`, HasChest: true},
		{Id: 277, Name: `The Smeltry`, HasBoss: true},
		{Id: 278, Name: `Clash of Hyaenas`},
		{Id: 279, Name: `Greed Knows No Bounds`},
		{Id: 280, Name: `Live Long and Prosper`},
		{Id: 281, Name: `Pray to the Mineral Gods`},
		{Id: 282, Name: `Traitor's Parting`, HasBoss: true},
		{Id: 283, Name: `Escapeway`},
	},
	51: {
		{Id: 284, Name: `Gambler's Passage`},
		{Id: 285, Name: `Treaty Room`},
		{Id: 286, Name: `The Miner's End`, HasBoss: true},
		{Id: 287, Name: `Work, Then Die`},
		{Id: 288, Name: `Bandits' Hollow`},
		{Id: 289, Name: `Delusions of Happiness`, HasChest: true},
		{Id: 290, Name: `Dining in Darkness`, HasBoss: true},
		{Id: 291, Name: `Subtellurian Horrors`},
		{Id: 292, Name: `Hidden Resources`, HasChest: true},
		{Id: 293, Name: `Way of Lost Children`},
		{Id: 294, Name: `Hall of the Empty Sconce`},
		{Id: 295, Name: `Acolyte's Burial Vault`, HasChest: true},
		{Id: 296, Name: `Hall of Contemplation`},
		{Id: 297, Name: `The Abandoned Catspaw`},
		{Id: 298, Name: `Tomb of the Reborn`, HasBoss: true},
		{Id: 299, Name: `The Fallen Bricklayer`},
		{Id: 300, Name: `Crossing of Blood`},
		{Id: 301, Name: `Fool's Gold, Fool's Loss`},
		{Id: 302, Name: `Cry of the Beast`},
		{Id: 303, Name: `Senses Lost`},
		{Id: 304, Name: `Desire's Passage`},
		{Id: 305, Name: `Kilroy Was Here`},
		{Id: 306, Name: `Suicidal Desires`, HasChest: true},
		{Id: 307, Name: `The Ore of Legend`},
		{Id: 308, Name: `Lambs to the Slaughter`},
		{Id: 309, Name: `A Wager of Noble Gold`},
		{Id: 310, Name: `The Lunatic Veins`},
		{Id: 410, Name: `Corridor of Shade`},
		{Id: 411, Name: `Revelation Shaft`},
	},
	53: {
		{Id: 311, Name: `Dark Abhors Light`},
		{Id: 312, Name: `Dream of the Holy Land`, HasBoss: true},
		{Id: 313, Name: `The Ore Road`},
		{Id: 314, Name: `Atone for Eternity`},
		{Id: 315, Name: `The Air Stirs`},
		{Id: 316, Name: `Bonds of Friendship`, HasChest: true},
		{Id: 317, Name: `Stair to Sanctuary`},
		{Id: 318, Name: `The Fallen Hall`},
		{Id: 319, Name: `The Rotten Core`},
		{Id: 320, Name: `Bacchus is Cheap`},
		{Id: 321, Name: `Screams of the Wounded`},
		{Id: 322, Name: `The Ore-Bearers`},
		{Id: 323, Name: `The Dreamer's Climb`},
		{Id: 324, Name: `Sinner's Sustenence`},
		{Id: 325, Name: `The Timely Dew of Sleep`},
		{Id: 326, Name: `Companions in Arms`, HasChest: true},
		{Id: 327, Name: `The Auction Block`},
		{Id: 328, Name: `Ascension`},
		{Id: 329, Name: `Where the Serpent Hunts`},
		{Id: 330, Name: `Ants Prepare for Winter`},
		{Id: 331, Name: `Drowned in Fleeting Joy`, HasChest: true},
		{Id: 332, Name: `The Laborer's Bonfire`},
		{Id: 333, Name: `Stone and Sulfurous Fire`, HasChest: true},
		{Id: 334, Name: `Torture Without End`, HasBoss: true},
		{Id: 335, Name: `Way Down`},
		{Id: 336, Name: `Excavated Hollow`, HasChest: true},
		{Id: 337, Name: `Parting Regrets`},
		{Id: 338, Name: `Corridor of Tales`},
		{Id: 339, Name: `Dust Shall Eat the Days`},
		{Id: 340, Name: `Hall of the Wage-Paying`, HasBoss: true},
		{Id: 342, Name: `Tunnel of the Heartless`},
	},
	30: {
		{Id: 139, Name: `The Dark Coast`},
		{Id: 140, Name: `Hall of Prayer`},
		{Id: 141, Name: `Those who Drink the Dark`},
		{Id: 142, Name: `The Chapel of Meschaunce`, HasChest: true},
		{Id: 143, Name: `The Resentful Ones`},
		{Id: 144, Name: `Those who Fear the Light`},
	},
	31: {
		{Id: 145, Name: `Chamber of Reason`, HasBoss: true},
		{Id: 146, Name: `Exit to City Center`},
	},
	22: {
		{Id: 63, Name: `Sanity and Madness`, HasBoss: true},
		{Id: 67, Name: `Truth and Lies`, HasBoss: true},
		{Id: 69, Name: `Order and Chaos`, HasBoss: true},
		{Id: 70, Name: `The Victor's Laurels`},
		{Id: 71, Name: `Struggle for the Soul`},
		{Id: 72, Name: `An Offering of Souls`},
	},
	24: {
		{Id: 79, Name: `The Flayed Confessional`, HasChest: true, HasBoss: true},
		{Id: 80, Name: `Monk's Leap`},
		{Id: 81, Name: `Where Darkness Spreads`, HasChest: true},
		{Id: 82, Name: `Hieratic Recollections`},
		{Id: 83, Name: `A Light in the Dark`},
		{Id: 84, Name: `The Poisoned Chapel`},
		{Id: 85, Name: `Sin and Punishment`},
		{Id: 86, Name: `Cracked Pleasures`},
		{Id: 87, Name: `Into Holy Battle`},
		{Id: 88, Name: `Maelstrom of Malice`},
		{Id: 89, Name: `The Acolyte's Weakness`},
		{Id: 90, Name: `The Hall of Broken Vows`},
		{Id: 91, Name: `The Melodics of Madness`},
		{Id: 92, Name: `Free from Base Desires`},
		{Id: 93, Name: `The Convent Room`},
		{Id: 94, Name: `Hopes of the Idealist`, HasBoss: true},
	},
	23: {
		{Id: 74, Name: `He Screams for Mercy`},
		{Id: 75, Name: `Light and Dark Wage War`},
		{Id: 76, Name: `Abasement from Above`},
		{Id: 77, Name: `The Heretics' Story`},
		{Id: 78, Name: `The Wine-Lecher's Fall`},
	},
	25: {
		{Id: 95, Name: `An Arrow into Darkness`, HasChest: true},
		{Id: 96, Name: `What Ails You, Kills You`, HasBoss: true},
		{Id: 97, Name: `Where the Soul Rots`},
		{Id: 98, Name: `Despair of the Fallen`},
		{Id: 99, Name: `The Atrium`},
	},
	54: {
		{Id: 343, Name: `Stair to the Sinners`},
		{Id: 344, Name: `Slaugher of the Innocent`},
		{Id: 345, Name: `The Fallen Knight`, HasChest: true},
		{Id: 346, Name: `The Oracle Sins No More`},
		{Id: 347, Name: `Awaiting Retribution`, HasChest: true},
	},
	52: {
		{Id: 351, Name: `Shelter From the Quake`},
		{Id: 352, Name: `Buried Alive`, HasChest: true},
		{Id: 353, Name: `Movement of Fear`},
		{Id: 354, Name: `Facing Your Illusions`},
		{Id: 355, Name: `The Darkness Drinks`},
		{Id: 356, Name: `Fear and Loathing`},
		{Id: 357, Name: `Blood and the Beast`},
		{Id: 358, Name: `Where Body and Soul Part`, HasChest: true},
	},
	55: {
		{Id: 359, Name: `The Cage`},
		{Id: 360, Name: `The Cauldron`},
		{Id: 361, Name: `Wooden Horse`},
		{Id: 362, Name: `Starvation`},
		{Id: 363, Name: `The Breast Ripper`},
		{Id: 364, Name: `The Pear`},
		{Id: 365, Name: `The Whirligig`},
		{Id: 366, Name: `Spanish Tickler`},
		{Id: 367, Name: `Heretic's Fork`},
		{Id: 368, Name: `The Chair of Spikes`},
		{Id: 369, Name: `Blooding`},
		{Id: 370, Name: `Bootikens`},
		{Id: 371, Name: `Burial`, HasBoss: true},
		{Id: 372, Name: `Burning`},
		{Id: 373, Name: `Cleansing the Soul`},
		{Id: 374, Name: `The Garotte`},
		{Id: 375, Name: `Hanging`},
		{Id: 376, Name: `Impalement`},
		{Id: 377, Name: `Knotting`},
		{Id: 378, Name: `The Branks`, HasChest: true},
		{Id: 379, Name: `The Wheel`, HasChest: true},
		{Id: 380, Name: `The Judas Cradle`, HasChest: true},
		{Id: 381, Name: `The Ducking Stool`, HasChest: true},
	},
	56: {
		{Id: 382, Name: `The Eunics' Lot`},
		{Id: 383, Name: `Ordeal By Fire`},
		{Id: 384, Name: `Tablillas`},
		{Id: 385, Name: `The Oven at Neisse`},
		{Id: 386, Name: `Strangulation`},
		{Id: 387, Name: `Pressing`},
		{Id: 388, Name: `The Strappado`},
		{Id: 389, Name: `The Mind Burns`},
		{Id: 390, Name: `Thumbscrews`},
		{Id: 391, Name: `The Rack`},
		{Id: 392, Name: `The Saw`},
		{Id: 393, Name: `Ordeal By Water`},
		{Id: 394, Name: `The Cold's Bridle`},
		{Id: 395, Name: `Brank`},
		{Id: 396, Name: `The Shin-Vice`},
		{Id: 397, Name: `Squassation`, HasChest: true},
		{Id: 398, Name: `The Spider`},
		{Id: 399, Name: `Lead Sprinkler`, HasChest: true},
		{Id: 400, Name: `Pendulum`},
		{Id: 401, Name: `Dragging`},
		{Id: 402, Name: `Tongue Slicer`},
		{Id: 403, Name: `Tormentum Insomniae`},
		{Id: 404, Name: `The Iron Maiden`, HasBoss: true},
		{Id: 405, Name: `Saint Elmo's Belt`, HasChest: true},
		{Id: 406, Name: `Judgement`},
		{Id: 407, Name: `Dunking the Witch`, HasChest: true},
	},
	48: {
		{Id: 220, Name: `The Bread Peddler's Way`},
		{Id: 221, Name: `Way of the Mother Lode`},
		{Id: 222, Name: `Sewer of Ravenous Rats`},
		{Id: 223, Name: `Underdark Fishmarket`, HasBoss: true},
		{Id: 224, Name: `The Sunless Way`},
		{Id: 225, Name: `Remembering Days of Yore`},
		{Id: 226, Name: `Where the Hunter Climbed`},
		{Id: 227, Name: `Larder for a Lean Winter`, HasChest: true},
		{Id: 228, Name: `Hall of Poverty`},
		{Id: 229, Name: `The Washing-Woman's Way`},
		{Id: 230, Name: `Beggars of the Mouthharp`},
		{Id: 231, Name: `Corner of the Wretched`},
		{Id: 232, Name: `Path to the Greengrocer`},
		{Id: 233, Name: `Crossroads of Rest`},
		{Id: 234, Name: `Path of the Children`},
		{Id: 235, Name: `Fear of the Fall`, HasBoss: true},
		{Id: 236, Name: `Sinner's Corner`},
		{Id: 237, Name: `Nameless Dark Oblivion`},
		{Id: 238, Name: `Corner of Prayers`},
		{Id: 239, Name: `Hope Obstructed`},
		{Id: 240, Name: `The Children's Hideout`, HasChest: true},
		{Id: 241, Name: `The Crumbling Market`, HasChest: true},
		{Id: 242, Name: `Tears from Empty Sockets`},
		{Id: 243, Name: `Where Flood Waters Ran`},
		{Id: 244, Name: `The Body Fragile Yields`},
		{Id: 245, Name: `Salvation for the Mother`},
		{Id: 246, Name: `Bite the Master's Wounds`},
	},
	49: {
		{Id: 247, Name: `Hall to a New World`},
		{Id: 248, Name: `Place of Free Words`},
		{Id: 249, Name: `Bazaar of the Bizarre`, HasBoss: true},
		{Id: 250, Name: `Noble Gold and Silk`},
		{Id: 251, Name: `A Knight Sells his Sword`},
		{Id: 252, Name: `Gemsword Blackmarket`, HasBoss: true},
		{Id: 253, Name: `The Pirate's Son`},
		{Id: 254, Name: `Sale of the Sword`, HasChest: true},
		{Id: 255, Name: `Weapons Not Allowed`, HasChest: true},
		{Id: 256, Name: `The Greengrocer's Stair`},
		{Id: 257, Name: `Where Black Waters Ran`},
		{Id: 258, Name: `Arms Against Invaders`},
		{Id: 259, Name: `Catspaw Blackmarket`, HasChest: true},
	},
	29: {
		{Id: 124, Name: `The Warrior's Rest`, HasChest: true},
		{Id: 126, Name: `The Soldier's Bedding`},
		{Id: 127, Name: `A Storm of Arrows`},
		{Id: 128, Name: `Urge the Boy On`},
		{Id: 129, Name: `A Taste of the Spoils`},
		{Id: 130, Name: `Wiping Blood from Blades`},
		{Id: 105, Name: `Students of Death`},
	},
	28: {
		{Id: 106, Name: `The Gabled Hall`},
		{Id: 107, Name: `Where the Master Fell`},
		{Id: 108, Name: `The Weeping Boy`},
		{Id: 109, Name: `Swords for the Land`},
		{Id: 110, Name: `In Wait of the Foe`},
		{Id: 111, Name: `Where Weary Riders Rest`},
		{Id: 112, Name: `The Boy's Training Room`},
		{Id: 113, Name: `Train and Grow Strong`},
		{Id: 114, Name: `The Squire's Gathering`},
		{Id: 115, Name: `The Invaders are Found`},
		{Id: 116, Name: `The Dream-Weavers`},
		{Id: 117, Name: `The Cornered Savage`},
		{Id: 118, Name: `Traces of Invasion Past`},
		{Id: 119, Name: `From Squire to Knight`},
		{Id: 120, Name: `Be for Battle Prepared`},
		{Id: 121, Name: `Destruction and Rebirth`},
		{Id: 122, Name: `From Boy to Hero`},
		{Id: 123, Name: `A Welcome Invasion`},
	},
	40: {
		{Id: 179, Name: `The Hunt Begins`},
		{Id: 180, Name: `Which Way Home`},
		{Id: 181, Name: `The Giving Trees`},
		{Id: 182, Name: `The Wounded Boar`},
		{Id: 183, Name: `Golden Egg Way`},
		{Id: 184, Name: `The Birds and the Bees`},
		{Id: 185, Name: `The Woodcutter's Run`},
		{Id: 186, Name: `The Wolves' Choice`},
		{Id: 187, Name: `Howl of the Wolf King`},
		{Id: 188, Name: `Fluttering Hope`},
		{Id: 189, Name: `Traces of the Beast`},
		{Id: 190, Name: `The Yellow Wood`},
		{Id: 191, Name: `They Also Feed`},
		{Id: 192, Name: `Where Soft Rains Fell`},
		{Id: 193, Name: `The Spirit Trees`},
		{Id: 194, Name: `The Silent Hedges`},
		{Id: 195, Name: `Lamenting to the Moon`},
		{Id: 196, Name: `The Hollow Hills`},
		{Id: 197, Name: `Running with the Wolves`},
		{Id: 198, Name: `You Are the Prey`},
		{Id: 199, Name: `The Secret Path`},
		{Id: 200, Name: `The Faerie Circle`},
		{Id: 201, Name: `Return to the Land`, HasBoss: true},
		{Id: 202, Name: `Forest River`, HasChest: true},
		{Id: 203, Name: `Hewn from Nature`, HasChest: true, HasBoss: true},
		{Id: 204, Name: `The Wood Gate`},
	},
	41: {
		{Id: 348, Name: `Steady the Boar-Spears`},
		{Id: 349, Name: `The Boar's Revenge`},
		{Id: 350, Name: `Nature's Womb`, HasChest: true},
	},
	32: {
		{Id: 147, Name: `Rue Vermillion`},
		{Id: 148, Name: `The Rene Coastroad`},
		{Id: 149, Name: `Rue Mal Fallde`},
		{Id: 150, Name: `Tircolas Flow`, HasBoss: true},
		{Id: 151, Name: `Glacialdra Kirk Ruins`},
		{Id: 152, Name: `Rue Bouquet`},
		{Id: 153, Name: `Villeport Way`},
		{Id: 154, Name: `Rue Sant D'alsa`},
		{Id: 155, Name: `Valdiman Gates`},
		{Id: 156, Name: `Rue Faltes`},
		{Id: 157, Name: `Forcas Rise`},
		{Id: 158, Name: `Rue Aliano`},
		{Id: 159, Name: `Rue Volnac`},
		{Id: 160, Name: `Rue Morgue`},
		{Id: 162, Name: `Rue Lejour`},
		{Id: 163, Name: `Kesch Bridge`},
		{Id: 164, Name: `Rue Crimnade`},
		{Id: 165, Name: `Rue Fisserano`},
		{Id: 166, Name: `Shasras Hill Park`},
	},
	34: {
		{Id: 173, Name: `Dinas Walk`},
	},
	35: {
		{Id: 174, Name: `Zebel's Walk`},
	},
	37: {
		{Id: 176, Name: `The House Khazabas`, HasChest: true},
	},
	36: {
		{Id: 175, Name: `Gharmes Walk`, HasChest: true},
	},
	38: {
		{Id: 177, Name: `The House Gilgitte`, HasChest: true},
	},
	39: {
		{Id: 171, Name: `Plateia Lumitar`},
	},
}

Rooms lists all randomizable Rooms sorted by zone ID, which pertains to the 3 digit number in the zone file name ZONE<ID>.ZND. Factories are excluded from randomization. Based on https://datacrystal.romhacking.net/wiki/Vagrant_Story:rooms_list. This is a package level variable and should not be mutated.

Functions

func ZoneFileName

func ZoneFileName(id int) (string, error)

ZoneFileName returns the name of the zone file for the given zone ID.

Types

type Room

type Room struct {
	// The room's MPD file's ID.
	Id int
	// The room's name.
	Name string
	// HasChest indicates if the room contains a chest.
	// Chest locations are taken from
	// https://gamefaqs.gamespot.com/ps/914326-vagrant-story/faqs/40255/chests.
	HasChest bool
	// HasBoss is true if a boss encounter occurs in this room.
	// For now, boss encounters are always defined as by
	// https://gamefaqs.gamespot.com/ps/914326-vagrant-story/faqs/39091.
	HasBoss bool
}

A Room contains the room's MPD file's ID, its (original) name, and flags indicating the following:

  • if it contains a chest,
  • if a boss encounter occurs there.

The ID pertains to the 3 digit number in the map file name MAP<ID>.MPD. Most room information is taken from https://vagrantstory.fandom.com/wiki/Locations_in_Vagrant_Story.

func (Room) MapFileName

func (r Room) MapFileName() (string, error)

MapFileName returns the name of the map file for the given map ID. The ID is not checked here, as it is assumed to be valid w.r.t. the Room receiver.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL