gameinfo
{
	gamepalette = "C7PAL"
	// No Corridor 7 colormap file is present; an absent name makes ECWolf
	// build one from C7PAL instead of applying Wolf3D's palette-specific map.
	gamecolormap = "C7CMAP"
	translator = "xlat/corridor7.txt"
	playerclasses = "C7Player", "C7AlienPlayer", "C7PlayerRed", "C7PlayerGreen",
		"C7PlayerGold", "C7PlayerPurple", "C7PlayerMagenta", "C7PlayerBrown", "C7PlayerGray"
	signon = "C7G0005"
	titlepage = "C7G0005"
	titletime = 6
	titlemusic = "C7MUS00"
	// Every one of these pointed at C7MUS00 -- one placeholder in five
	// places, so the menu, the title pages, the intermission and the
	// high-score page all played the same minute of music.
	//
	// The archive holds thirty-four songs. Summing their IMF delays at
	// 700Hz gives durations, and the three short ones are unmistakable:
	// C7MUS00 runs 65.8s, C7MUS19 runs 16.5s and C7MUS21 runs 13.7s --
	// the minute-and-six title theme, the seventeen-second menu loop and
	// the fourteen-second intermission loop. Nothing else is within eight
	// seconds of any of them; the next shortest song is 21.9s and most run
	// past a hundred.
	menumusic = "C7MUS19"
	intermissionmusic = "C7MUS21"
	victorymusic = "C7MUS21"
	scoresmusic = "C7MUS21"
	// The released high-score page writes with the large 13-row archive font
	// (glyph ink rows 1..10, matching the captured original page).
	highscoresfont = "BigFont"
	highscoresfontcolor = "White"
	trackhighscores = true
	menufade = "00 00 00"
	menucolors = "00 50 70", "00 A0 D0", "00 30 50", "00 10 18", "00 80 A0", "00 00 00"
	menuwindowcolors = "00 30 48", "00 C0 E0", "00 08 10", "80 70 00", "FF E0 00", "20 18 00"
	// The original prompt window is dark gray with a near-black outline
	// (measured from the released game's "Exit building?" dialog).
	messagecolors = "30 30 30", "18 18 18", "18 18 18"
	menufontcolor_title = "Gold"
	menufontcolor_label = "Grey"
	menufontcolor_selection = "White"
	menufontcolor_disabled = "DarkGrey"
	menufontcolor_invalid = "DarkGreen"
	menufontcolor_invalidselection = "Green"
	menufontcolor_highlight = "Yellow"
	menufontcolor_highlightselection = "Gold"
	messagefontcolor = "White"
	dialogcolor = "White"
	drawreadthis = false
	// The released game asks exactly this when leaving from the main menu.
	quitmessages = "Exit building?"
	doorsoundsequence = "DoorNormal"
	pushwallsoundsequence = "C7Pushwall"
	deathtransition = "Fizzle"
}

// Without a demo loop DemoLoop() repeatedly executes an empty intermission,
// leaving a black, unresponsive window. Cycle through the original title and
// credit screens; acknowledging any page opens the control panel.
intermission DemoLoop
{
	Fader
	{
		Background = TitlePage
		Time = 15
		FadeType = FadeIn
	}
	Image
	{
		Time = TitleTime
	}
	Fader
	{
		Background = "C7G0006"
		Time = 55
		FadeType = Fizzle
	}
	Image
	{
		Time = 20
	}
	Fader
	{
		Time = 15
		FadeType = FadeOut
	}
	Fader
	{
		Background = "C7G0007"
		Time = 15
		FadeType = FadeIn
	}
	Image
	{
		Time = -4
	}
	Fader
	{
		Time = 15
		FadeType = FadeOut
	}
	Fader
	{
		Background = "C7G0008"
		Time = 15
		FadeType = FadeIn
	}
	Image
	{
		Time = -4
	}
	Fader
	{
		Time = 15
		FadeType = FadeOut
	}
	Fader
	{
		Background = "C7G0009"
		Time = 15
		FadeType = FadeIn
	}
	Image
	{
		Time = -4
	}
	Fader
	{
		Time = 15
		FadeType = FadeOut
	}
	Fader
	{
		Background = "C7G0010"
		Time = 15
		FadeType = FadeIn
	}
	Image
	{
		Time = -4
	}
	Fader
	{
		Time = 15
		FadeType = FadeOut
	}
	Fader
	{
		Background = "C7G0011"
		Time = 15
		FadeType = FadeIn
	}
	Image
	{
		Time = -4
	}
	Fader
	{
		Time = 15
		FadeType = FadeOut
	}
}

automap
{
	fontcolor = "White"
	background = "20 20 20"
	doorcolor = "FF 40 20"
	floorcolor = "20 20 20"
	wallcolor = "40 C0 C0"
	yourcolor = "FF FF 00"
}

skill baby
{
	name = "Corporal"
	spawnfilter = 1
	damagefactor = 0.25
	lives = 0
}

skill easy
{
	name = "Lieutenant"
	spawnfilter = 2
	lives = 0
}

skill normal
{
	name = "Captain"
	spawnfilter = 3
	lives = 0
}

skill hard
{
	name = "Major"
	spawnfilter = 4
	lives = 0
}

skill nightmare
{
	name = "President"
	spawnfilter = 4
	fastmonsters
	lives = 0
}

defaultmap
{
	music = "C7MUS00"
	victorynext = "EndTitle"
	bordertexture = "#000000"
	// The white/purple sector, which is every level except the eight overridden
	// below. Corridor 7 keeps these per level in its executable, not in the map
	// data -- every shipped map's flats plane is uniformly zero, there are no
	// floor/ceiling tags, and the level header is fully accounted for by
	// offsets/lengths/dimensions/name with no spare bytes. Values are palette
	// indices 39 (white, the top of the gray ramp 16-39) and 199 (mid the
	// purple ramp 184-207). Index 15 is also pure white but is a standalone
	// entry, not the head of a ramp -- shading down from it walks into the
	// skin tones at 14 and below. Written as "@NNN"
	// (exact palette entry) rather than "#RRGGBB": the plane shading walks the
	// palette by index, and Corridor 7 repeats colors across ramps, so a
	// color-matched flat can land in the wrong ramp and fade out the wrong way.
	defaultfloor = "@199"
	defaultceiling = "@39"
	// Corridor 7 uses a full-range depth ramp:
	// MAP01's nearby surfaces stay bright while its distant fence line and
	// floor/ceiling fade toward the dark palette ramps.
	DefaultLighting = 130
	DefaultVisibility = 10.0
	DefaultMaxLightVis = 30.0
}

episode "MAP01"
{
	name = "Corridor 7: Alien Invasion"
	key = "C"
}

cluster 1
{
}

map "MAP01" "Corridor 7 Level 1"
{
	next = "MAP02"
	secretnext = "MAP41"
	floornumber = 1
	cluster = 1
}

map "MAP02" "Corridor 7 Level 2"
{
	next = "MAP03"
	floornumber = 2
	cluster = 1
}

map "MAP03" "Corridor 7 Level 3"
{
	next = "MAP04"
	floornumber = 3
	cluster = 1
}

map "MAP04" "Corridor 7 Level 4"
{
	next = "MAP05"
	floornumber = 4
	cluster = 1
}

map "MAP05" "Corridor 7 Level 5"
{
	next = "MAP06"
	secretnext = "MAP42"
	floornumber = 5
	cluster = 1
}

map "MAP06" "Corridor 7 Level 6"
{
	next = "MAP07"
	floornumber = 6
	cluster = 1
}

map "MAP07" "Corridor 7 Level 7"
{
	next = "MAP08"
	floornumber = 7
	cluster = 1
}

map "MAP08" "Corridor 7 Level 8"
{
	next = "MAP09"
	floornumber = 8
	cluster = 1
}

map "MAP09" "Corridor 7 Level 9"
{
	next = "MAP10"
	floornumber = 9
	cluster = 1
}

map "MAP10" "Corridor 7 Level 10"
{
	next = "MAP11"
	secretnext = "MAP43"
	floornumber = 10
	cluster = 1
}

map "MAP11" "Corridor 7 Level 11"
{
	next = "MAP12"
	floornumber = 11
	cluster = 1
}

map "MAP12" "Corridor 7 Level 12"
{
	next = "MAP13"
	floornumber = 12
	cluster = 1
}

map "MAP13" "Corridor 7 Level 13"
{
	next = "MAP14"
	floornumber = 13
	cluster = 1
}

map "MAP14" "Corridor 7 Level 14"
{
	next = "MAP15"
	floornumber = 14
	cluster = 1
}

map "MAP15" "Corridor 7 Level 15"
{
	next = "MAP16"
	secretnext = "MAP44"
	floornumber = 15
	cluster = 1
}

map "MAP16" "Corridor 7 Level 16"
{
	next = "MAP17"
	floornumber = 16
	cluster = 1
}

map "MAP17" "Corridor 7 Level 17"
{
	next = "MAP18"
	floornumber = 17
	cluster = 1
}

map "MAP18" "Corridor 7 Level 18"
{
	next = "MAP19"
	floornumber = 18
	cluster = 1
}

map "MAP19" "Corridor 7 Level 19"
{
	next = "MAP20"
	floornumber = 19
	cluster = 1
}

map "MAP20" "Corridor 7 Level 20"
{
	// Red sector. Read off the original at MAP20: the screen edge (band 0)
	// shows the dither pair 76/75 in the pure-red ramp 64-79, so the
	// ceiling base is 76. The floor base is provisional -- MAP20's bottom
	// rows are mottled (75 mixed with 70 and 73) and never settle.
	defaultceiling = "@76"
	defaultfloor = "@75"
	next = "MAP21"
	secretnext = "MAP45"
	floornumber = 20
	cluster = 1
}

map "MAP21" "Corridor 7 Level 21"
{
	// Red sector. Read off the original at MAP20: the screen edge (band 0)
	// shows the dither pair 76/75 in the pure-red ramp 64-79, so the
	// ceiling base is 76. The floor base is provisional -- MAP20's bottom
	// rows are mottled (75 mixed with 70 and 73) and never settle.
	defaultceiling = "@76"
	defaultfloor = "@75"
	next = "MAP22"
	floornumber = 21
	cluster = 1
}

map "MAP22" "Corridor 7 Level 22"
{
	// Green sector. Both planes fitted exactly from the original at MAP23:
	// screen-edge dither pairs 122/121 (ceiling) and 123/122 (floor) in the
	// green ramp 112-127. With the plane shading walking the palette
	// directly these ARE the bases: band 0 paints the base itself.
	defaultceiling = "@122"
	defaultfloor = "@123"
	next = "MAP23"
	floornumber = 22
	cluster = 1
}

map "MAP23" "Corridor 7 Level 23"
{
	// Green sector. Both planes fitted exactly from the original at MAP23:
	// screen-edge dither pairs 122/121 (ceiling) and 123/122 (floor) in the
	// green ramp 112-127. With the plane shading walking the palette
	// directly these ARE the bases: band 0 paints the base itself.
	defaultceiling = "@122"
	defaultfloor = "@123"
	next = "MAP24"
	floornumber = 23
	cluster = 1
}

map "MAP24" "Corridor 7 Level 24"
{
	// Red sector. Read off the original at MAP20: the screen edge (band 0)
	// shows the dither pair 76/75 in the pure-red ramp 64-79, so the
	// ceiling base is 76. The floor base is provisional -- MAP20's bottom
	// rows are mottled (75 mixed with 70 and 73) and never settle.
	defaultceiling = "@76"
	defaultfloor = "@75"
	next = "MAP25"
	floornumber = 24
	cluster = 1
}

map "MAP25" "Corridor 7 Level 25"
{
	// Green sector. Both planes fitted exactly from the original at MAP23:
	// screen-edge dither pairs 122/121 (ceiling) and 123/122 (floor) in the
	// green ramp 112-127. With the plane shading walking the palette
	// directly these ARE the bases: band 0 paints the base itself.
	defaultceiling = "@122"
	defaultfloor = "@123"
	next = "MAP26"
	secretnext = "MAP46"
	floornumber = 25
	cluster = 1
}

map "MAP26" "Corridor 7 Level 26"
{
	// Red sector. Read off the original at MAP20: the screen edge (band 0)
	// shows the dither pair 76/75 in the pure-red ramp 64-79, so the
	// ceiling base is 76. The floor base is provisional -- MAP20's bottom
	// rows are mottled (75 mixed with 70 and 73) and never settle.
	defaultceiling = "@76"
	defaultfloor = "@75"
	next = "MAP27"
	floornumber = 26
	cluster = 1
}

map "MAP27" "Corridor 7 Level 27"
{
	next = "MAP28"
	floornumber = 27
	cluster = 1
}

map "MAP28" "Corridor 7 Level 28"
{
	next = "MAP29"
	floornumber = 28
	cluster = 1
}

map "MAP29" "Corridor 7 Level 29"
{
	// Red sector. Read off the original at MAP20: the screen edge (band 0)
	// shows the dither pair 76/75 in the pure-red ramp 64-79, so the
	// ceiling base is 76. The floor base is provisional -- MAP20's bottom
	// rows are mottled (75 mixed with 70 and 73) and never settle.
	defaultceiling = "@76"
	defaultfloor = "@75"
	next = "MAP30"
	floornumber = 29
	cluster = 1
}

map "MAP30" "Corridor 7 Level 30"
{
	next = "MAP31"
	floornumber = 30
	cluster = 1
}

map "MAP31" "Corridor 7 Level 31"
{
	next = "MAP32"
	floornumber = 31
	cluster = 1
}

map "MAP32" "Corridor 7 Level 32"
{
	next = "MAP33"
	floornumber = 32
	cluster = 1
}

map "MAP33" "Corridor 7 Level 33"
{
	next = "MAP34"
	floornumber = 33
	cluster = 1
}

map "MAP34" "Corridor 7 Level 34"
{
	next = "MAP35"
	floornumber = 34
	cluster = 1
}

map "MAP35" "Corridor 7 Level 35"
{
	next = "MAP36"
	floornumber = 35
	cluster = 1
}

map "MAP36" "Corridor 7 Level 36"
{
	next = "MAP37"
	floornumber = 36
	cluster = 1
}

map "MAP37" "Corridor 7 Level 37"
{
	next = "MAP38"
	floornumber = 37
	cluster = 1
}

map "MAP38" "Corridor 7 Level 38"
{
	next = "MAP39"
	floornumber = 38
	cluster = 1
}

map "MAP39" "Corridor 7 Level 39"
{
	next = "MAP40"
	floornumber = 39
	cluster = 1
}

map "MAP40" "Corridor 7 Level 40"
{
	next = "MAP01"
	floornumber = 40
	forcetally = true
	cluster = 1
}

map "MAP41" "Corridor 7 Secret 31"
{
	bonuslevel = true
	next = "MAP02"
	floornumber = 31
	cluster = 1
}

map "MAP42" "Corridor 7 Secret 32"
{
	bonuslevel = true
	next = "MAP06"
	floornumber = 32
	cluster = 1
}

map "MAP43" "Corridor 7 Secret 33"
{
	bonuslevel = true
	next = "MAP11"
	floornumber = 33
	cluster = 1
}

map "MAP44" "Corridor 7 Secret 34"
{
	bonuslevel = true
	next = "MAP16"
	floornumber = 34
	cluster = 1
}

map "MAP45" "Corridor 7 Secret 35"
{
	bonuslevel = true
	next = "MAP21"
	floornumber = 35
	cluster = 1
}

map "MAP46" "Corridor 7 Secret 36"
{
	bonuslevel = true
	next = "MAP26"
	floornumber = 36
	cluster = 1
}

map "MAP47" "Unused Corridor 7 Level"
{
	next = "MAP01"
	floornumber = 47
	cluster = 1
}

map "MAP48" "Unused Corridor 7 Level"
{
	next = "MAP01"
	floornumber = 48
	cluster = 1
}

map "MAP49" "Unused Corridor 7 Level"
{
	next = "MAP01"
	floornumber = 49
	cluster = 1
}

map "MAP50" "Unused Corridor 7 Level"
{
	next = "MAP01"
	floornumber = 50
	cluster = 1
}

// A finished match starts another on the same arena, so each of these names
// itself as its next level. They used to name MAP01, which meant winning a
// deathmatch dropped everybody into the first floor of the campaign.
//
// The arenas are not the contiguous block the compendium describes. It puts
// them at internal levels 51-58 with 59-60 empty, but the archive disagrees:
// the maps at 58 and 59 are bare 64x64 boxes with one marker in them, the same
// shape as the unused level at 50, while a full arena -- 23 wall pages, 116
// objects -- sits at 60 carrying the name "Network Lvl 8". The names below are
// the archive's own. Eight real arenas, as the compendium concludes, but at
// 51-57 and 60 rather than 51-58.
map "MAP51" "Corridor 7 Network Level 1"
{
	next = "MAP51"
	nointermission
	floornumber = 51
	cluster = 1
}

map "MAP52" "Corridor 7 Network Level 2"
{
	next = "MAP52"
	nointermission
	floornumber = 52
	cluster = 1
}

map "MAP53" "Corridor 7 Network Level 3"
{
	next = "MAP53"
	nointermission
	floornumber = 53
	cluster = 1
}

map "MAP54" "Corridor 7 Network Level 4"
{
	next = "MAP54"
	nointermission
	floornumber = 54
	cluster = 1
}

map "MAP55" "Corridor 7 Network Level 5"
{
	next = "MAP55"
	nointermission
	floornumber = 55
	cluster = 1
}

map "MAP56" "Corridor 7 Network Level 6"
{
	next = "MAP56"
	nointermission
	floornumber = 56
	cluster = 1
}

map "MAP57" "Corridor 7 Network Level 7"
{
	next = "MAP57"
	nointermission
	floornumber = 57
	cluster = 1
}

map "MAP58" "Corridor 7 Network Level 9"
{
	next = "MAP01"
	floornumber = 58
	cluster = 1
}

map "MAP59" "Corridor 7 Network Level 10"
{
	next = "MAP01"
	floornumber = 59
	cluster = 1
}

map "MAP60" "Corridor 7 Network Level 8"
{
	next = "MAP60"
	nointermission
	floornumber = 60
	cluster = 1
}
