Notes:Tetris Worlds (PC)

CASCADE.TWS
//  FILE: Cascade Tetris v7.2DP.tws // SOURCE: Cascade Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:36:11 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Marathon RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "J" Tags 0,1 }

Mino {	Name "T" Tags 0,2 }

Mino {	Name "S" Tags 0,3 }

Mino {	Name "Z" Tags 0,4 }

Mino {	Name "L" Tags 0,5 }

Mino {	Name "O" Tags 0,6 }

Mino {	Name "I" Tags 0,7 }

Tetramino {	Name "T" NumberInBag 1 ID 1 MinoList {		"T" (0,1) "T" (-1,0) "T" (0,0) "T" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 1 ID 2 MinoList {		"J" (-1,1) "J" (-1,0) "J" (0,0) "J" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 1 ID 3 MinoList {		"L" (1,1) "L" (-1,0) "L" (0,0) "L" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 1 ID 4 MinoList {		"S" (0,1) "S" (1,1) "S" (-1,0) "S" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 1 ID 5 MinoList {		"Z" (-1,1) "Z" (0,1) "Z" (0,0) "Z" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I" (-1,0) "I" (0,0) "I" (1,0) "I" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 1 ID 7 MinoList {		"O" (0,1) "O" (1,1) "O" (0,0) "O" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

Shape {	Name "tspin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "tspin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino sound "FX_CLR01" }	PatternEndScript {		set st1.d3 to st1.d3 + 1 } }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed 0.05 EliminateBeginScript {		set ph.d0 to 0 set ph.d1 to 0 }	LineCollapsedScript {		set ph.d0 to ph.d0 + 1 set ph.d1 to ph.d1 + 1 }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		if ph.d0 >= 1 set goal to goal - (ph.d0 + (ph.d0 - 1)) end if ph.d0>0 if cascades>1 set goal to goal - ((cascades-1)*2) end end if ph.d0 > st1.d6			set st1.d6 to ph.d0		end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	GravityEnabled FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		if pl.d8 - goal set pl.d7 to (((pl.d9-goal)/pl.d9)-(level time/120)) * 20 if pl.d7 > 4 set pl.d7 to 4 end mino mood pl.d7		 set pl.d8 to goal end if cascades > 0 set st1.d4 to st1.d4 + cascades end if st1.d4 > 0 if (cascades - 1) > st1.d5				set st1.d5 to (cascades - 1) end end if cascades = 2 message "2 Cascade" line color (109,0,23) sound "FX_MTRS1" sound "VO_CAS02" end if cascades = 3 message "3 Cascades" line color (39,0,87) sound "FX_MTRS2" sound "VO_CAS03" end if cascades = 4 message "4 Cascades" line color (39,0,87) sound "FX_MTRS3" sound "VO_CAS04" end if cascades = 5 message "5 Cascades" line color (116,55,0) sound "FX_MTRS4" sound "VO_CAS05" end if cascades = 6 message "6 Cascades" line color (116,55,0) sound "FX_MTRS5" sound "VO_CAS06" end if cascades = 7 message "7 Cascades" line color (0,91,56) sound "FX_MTRS6" sound "VO_CAS07" end if cascades = 8 message "8 Cascades" line color (0,91,56) sound "FX_MTRS6" sound "VO_CAS08" end if cascades = 9 message "9 Cascades" line color (118,119,0) sound "FX_MTRS6" sound "VO_CAS09" end if cascades = 10 message "10 Cascades" line color (118,119,0) sound "FX_MTRS6" sound "VO_CAS10" end if cascades >= 11 message "Super Cascade!!!" line color (0,36,154) sound "VO_AMAZING" sound "FX_MTRS6" end if goal <= 0 next level if level < 15 sound "FX_LEVEL" message "LEVEL UP!" end end } }

EventScripts {	GameStartScript {		set st2.d7 to rank sound "FX_LEVEL" set ghost to 1 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st1.d3 to 0 set st1.d4 to 0 set st1.d5 to 0 set st1.d6 to 0 line color (30,30,30) }	LevelStartScript {		set goal to (5*level) set st2.d8 to goal if level < 5 mino intensity low else if level < 10 mino intensity medium else mino intensity high end end }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Cascade Intro" TriggerType LevelTime 3 Script {		if level < 4 sound "VO_INT02" end } }

CustomEvent {	Name "30sec" TriggerType LevelTime 90 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_30TIC" end end end } }

CustomEvent {	Name "20sec" TriggerType LevelTime 100 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_20TIC" end end end } }

CustomEvent {	Name "10sec" TriggerType LevelTime 110 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_10TIC" end end end sound "FX_TIC10" } }

CustomEvent {	Name "9sec" TriggerType LevelTime 111 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_09TIC" end end end sound "FX_TIC09" } }

CustomEvent {	Name "8sec" TriggerType LevelTime 112 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_08TIC" end end end sound "FX_TIC08" } }

CustomEvent {	Name "7sec" TriggerType LevelTime 113 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_07TIC" end end end sound "FX_TIC07" } }

CustomEvent {	Name "6sec" TriggerType LevelTime 114 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_06TIC" end end end sound "FX_TIC06" } }

CustomEvent {	Name "5sec" TriggerType LevelTime 115 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_05TIC" end end end sound "FX_TIC05" } }

CustomEvent {	Name "4sec" TriggerType LevelTime 116 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_04TIC" end end end sound "FX_TIC04" } }

CustomEvent {	Name "3sec" TriggerType LevelTime 117 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_03TIC" end end end sound "FX_TIC03" } }

CustomEvent {	Name "2sec" TriggerType LevelTime 118 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_02TIC" end end end sound "FX_TIC02" } }

CustomEvent {	Name "1sec" TriggerType LevelTime 119 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_01TIC" end end end sound "FX_TIC01" } }

CustomEvent {	Name "Time Up" TriggerType LevelTime 120 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_OVRTIME" end end end } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 108 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_COUNTDWN" end end end } }

CustomEvent {	Name "Go for a Rank Up" TriggerType LevelTime 1 Script {		if rank = st2.d7			if level >= rank if rank < 15 message "GO FOR A RANK UP!!!" end end end } }

CONNECT.TWS
//  FILE: Fusion Tetris v7.2DP.tws // SOURCE: Fusion Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:36:25 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Marathon RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "J" Tags 0,1 MutateMino "Solo Blue" }

Mino {	Name "S" Tags 0,2 MutateMino "Solo Green" }

Mino {	Name "O" Tags 0,3 MutateMino "Solo Yellow" }

Mino {	Name "L" Tags 0,4 MutateMino "Solo Orange" }

Mino {	Name "T" Tags 0,5 MutateMino "Solo Cyan" }

Mino {	Name "I" Tags 0,6 MutateMino "Solo Purple" }

Mino {	Name "Z" Tags 0,7 MutateMino "Solo Red" }

Mino {	Name "Gold" Tags 0,10 MutateMino "Red" D0 1 D1 1 }

Mino {	Name "Red" Tags 0,11 D0 1 }

Mino {	Name "Garbage" Antigravity Tags 0,31 }

Mino {	Name "Solo Blue" Tags 0,20 }

Mino {	Name "Solo Green" Tags 0,21 }

Mino {	Name "Solo Yellow" Tags 0,22 }

Mino {	Name "Solo Orange" Tags 0,23 }

Mino {	Name "Solo Cyan" Tags 0,24 }

Mino {	Name "Solo Purple" Tags 0,25 }

Mino {	Name "Solo Red" Tags 0,26 }

Tetramino {	Name "T" NumberInBag 1 ID 1 MinoList {		"T" (0,1) "T" (-1,0) "T" (0,0) "T" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 1 ID 2 MinoList {		"J" (-1,1) "J" (-1,0) "J" (0,0) "J" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 1 ID 3 MinoList {		"L" (1,1) "L" (-1,0) "L" (0,0) "L" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 1 ID 4 MinoList {		"S" (0,1) "S" (1,1) "S" (-1,0) "S" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 1 ID 5 MinoList {		"Z" (-1,1) "Z" (0,1) "Z" (0,0) "Z" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I" (-1,0) "I" (0,0) "I" (1,0) "I" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 1 ID 7 MinoList {		"O" (0,1) "O" (1,1) "O" (0,0) "O" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

Tetramino {	Name "One" NumberInBag 3 ID 8 MinoList {		"Gold" (0,0) }	Rot0CWOffsetList (0,0) Rot90CWOffsetList (0,0) Rot180CWOffsetList (0,0) Rot270CWOffsetList (0,0) }

GarbageInfo {	NormalMino "Garbage" NormalCount 6 }

Shape {	Name "tspin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "tspin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		if mino.d0 = 0 kill mino sound "FX_CLR01" else set gravity to 1 line color (136,147,181) end }	PatternEndScript {		sound"FX_SLVRF" set st1.d3 to st1.d3 + 1 set pf.d8 to pf.d8 + 1 set ph.d0 to 1 } }

Pattern {	Name "disease" Tags 11 Method Search SearchType FloodFill4D SearchCount 1 PatternMinoScript {		pattern "infection" at mino.x, mino.y	} }

Pattern {	Name "infection" Triggered Tags 10,11 Method Search SearchType FloodFill4D SearchCount 2 PatternMinoScript {		set st2.d8 to goal if mino.d1 = 1 mutate mino sound "FX_FUS02" sound "FX_MTRS4" set goal to goal -1 set st2.d9 to st2.d8 - goal set st2.d4 to st2.d4 + 1 message "Fusion!" sound "VO_FUSION" if goal <= 0 set pf.d0 to 1 end end } }

Trash {	Name "left" Height 1 MinoList {		"Red" (0,0) "Garbage" (2,0) "Garbage" (4,0) "Garbage" (6,0) "Garbage" (8,0) } }

Trash {	Name "right" Height 1 MinoList {		"Garbage" (1,0) "Garbage" (3,0) "Garbage" (5,0) "Garbage" (7,0) "Red" (9,0) } }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d9 to 0 set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase {	PatternBeginScript {		set pf.d8 to 0 set pf.d0 to 0 set ph.d0 to 0 }	PatternEndScript {		if ph.d0 = 1 set pf.d9 to pf.d9 + 1 end } }

IteratePhase {	IterateBeginScript {		set st2.d5 to 0 }	PrimaryIterator {		IteratorExpression pf.d0 = 1 MinoIteratorScript {			kill mino sound "FX_LOCK" sound "VO_LEVELUP" }	}	SecondaryIterator {		MinoIteratorScript {			if mino.d1 = 1 set st2.d5 to st2.d5 + 1 end }	} }

EliminatePhase {	FallSpeed 0.05 EliminateBeginScript {		set ph.d0 to pf.d8	} GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		if ph.d0 > st1.d6			set st1.d6 to ph.d0		end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" }	GravityEndScript {		set gravity to 0 } }

CompletionPhase {	CompletionBeginScript {		if pl.d8 - goal set pl.d7 to (((pl.d9-goal)/pl.d9)-(level time/120)) * 20 if pl.d7 > 4 set pl.d7 to 4 end mino mood pl.d7		 set pl.d8 to goal end set st1.d4 to st1.d4 + pf.d9		if st1.d4 > 0 if pf.d9 > st1.d5				set st1.d5 to pf.d9			end end if pf.d9 = 2 message "2 Cascades" line color (109,0,23) end if pf.d9 = 3 message "3 Cascades" line color (39,0,87) end if pf.d9 = 4 message "4 Cascades" line color (39,0,87) end if pf.d9 = 5 message "5 Cascades" line color (116,55,0) end if pf.d9 = 6 message "6 Cascades" line color (116,55,0) end if pf.d9 = 7 message "7 Cascades" line color (0,91,56) end if pf.d9 = 8 message "8 Cascades" line color (0,91,56) end if pf.d9 = 9 message "9 Cascades" line color (118,119,0) end if pf.d9 = 10 message "10 Cascades" line color (118,119,0) end if pf.d9 >= 11 message "Super Cascade!!!" line color (0,36,154) end if goal <= 0 next level if level < 15 sound "FX_LEVEL" end end } }

EventScripts {	GameStartScript {		set st2.d7 to rank sound "FX_LEVEL" set ghost to 1 set st2.d4 to 0 set st2.d5 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st1.d3 to 0 set st1.d4 to 0 set st1.d5 to 0 set st1.d6 to 0 line color (30,30,30) }	LevelStartScript {		set st2.d4 to 0 if level < 5 mino intensity low else if level < 10 mino intensity medium else mino intensity high end end mixed garbage level if ((level/2) - (level\2)) = 0 trash "left" else trash "right" end set pf.d6 to level * 2 set goal to pf.d6		set pf.d7 to 0 set pl.d9 to goal set pl.d8 to goal }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound"FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "30sec" TriggerType LevelTime 90 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_30TIC" end end end } }

CustomEvent {	Name "20sec" TriggerType LevelTime 100 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_20TIC" end end end } }

CustomEvent {	Name "10sec" TriggerType LevelTime 110 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_10TIC" end end end sound "FX_TIC10" } }

CustomEvent {	Name "9sec" TriggerType LevelTime 111 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_09TIC" end end end sound "FX_TIC09" } }

CustomEvent {	Name "8sec" TriggerType LevelTime 112 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_08TIC" end end end sound "FX_TIC08" } }

CustomEvent {	Name "7sec" TriggerType LevelTime 113 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_07TIC" end end end sound "FX_TIC07" } }

CustomEvent {	Name "6sec" TriggerType LevelTime 114 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_06TIC" end end end sound "FX_TIC06" } }

CustomEvent {	Name "5sec" TriggerType LevelTime 115 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_05TIC" end end end sound "FX_TIC05" } }

CustomEvent {	Name "4sec" TriggerType LevelTime 116 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_04TIC" end end end sound "FX_TIC04" } }

CustomEvent {	Name "3sec" TriggerType LevelTime 117 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_03TIC" end end end sound "FX_TIC03" } }

CustomEvent {	Name "2sec" TriggerType LevelTime 118 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_02TIC" end end end sound "FX_TIC02" } }

CustomEvent {	Name "1sec" TriggerType LevelTime 119 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_01TIC" end end end sound "FX_TIC01" } }

CustomEvent {	Name "Time Up" TriggerType LevelTime 120 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_OVRTIME" end end end } }

CustomEvent {	Name "Intro" TriggerType LevelTime 3 Script {		if level < 4 sound "VO_INT04" end } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 108 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_COUNTDWN" end end end } }

CustomEvent {	Name "Go for a Rank Up" TriggerType LevelTime 1 Script {		if rank = st2.d7			if level >= rank if rank < 15 message "GO FOR A RANK UP!!!" end end end } }

ENDURE.TWS
//  FILE: TET2001.TWS // SOURCE: Tetris v4.8DP //  DATE: Thu, Aug 9, 2001  1:11:21 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 10 MaxRotationsPerSecond 5 GameType Marathon RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	1: 20	2: 20	3: 20	4: 20	5: 20	6: 20	7: 7 }

Mino {	Name "J color" Tags 0,1 }

Mino {	Name "L color" Tags 0,2 }

Mino {	Name "S color" Tags 0,3 }

Mino {	Name "Z color" Tags 0,4 }

Mino {	Name "O color" Tags 0,5 }

Mino {	Name "T color" Tags 0,6 }

Mino {	Name "I color" Tags 0,7 }

Mino {	Name "Garbage" Tags 0,31 }

Tetramino {	Name "T Tetrimino" NumberInBag 1 ID 1 MinoList {		"T color" (0,1) "T color" (-1,0) "T color" (0,0) "T color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J Tetrimino" NumberInBag 1 ID 2 MinoList {		"J color" (-1,1) "J color" (-1,0) "J color" (0,0) "J color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L Tetrimino" NumberInBag 1 ID 3 MinoList {		"L color" (1,1) "L color" (-1,0) "L color" (0,0) "L color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S Tetrimino" NumberInBag 1 ID 4 MinoList {		"S color" (0,1) "S color" (1,1) "S color" (-1,0) "S color" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z Tetrimino" NumberInBag 1 ID 5 MinoList {		"Z color" (-1,1) "Z color" (0,1) "Z color" (0,0) "Z color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I Tetrimino" NumberInBag 6 ID 6 MinoList {		"I color" (-1,0) "I color" (0,0) "I color" (1,0) "I color" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O Tetrimino" NumberInBag 1 ID 7 MinoList {		"O color" (0,1) "O color" (1,1) "O color" (0,0) "O color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

GarbageInfo {	NormalMino "Garbage" NormalCount 9 }

Shape {	Name "T-spin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "T-spin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "Line clear" Tags 0 Method Search SearchType Horizontal SearchCount 1 PatternMinoScript {

if (pl.d3)

if (mino.y < 8) kill mino set ph.d0 to 2 end

if (mino.id = pl.d4) kill mino end

set ph.d0 to 3

end

} }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 } }

FallingPhase {	FallSpeed	0.05 // original fall speed (.8-((level-1)*.007))^(level-1)

SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

//Increase intensity as well fills up IteratePhase {	IterateBeginScript {		set pl.d7 to 30 }

PrimaryIterator {		MinoIteratorScript {			if (mino.y < pl.d7) set pl.d7 to mino.y end }	}

IterateEndScript {		// pl.d2 stores old height // pl.d7 is new height

if (pl.d2 - pl.d7) if (pl.d7 < 6) //Activate endurance clear set pl.d3 to 1

set ph.d0 to 1

set goal to goal - 4

set pl.d4 to pl.d4 + 1

if (pl.d4 > 6) set pl.d4 to 0 end

if (goal < 10) set pl.d4 to 7 end

if (pl.d1 = 0) mino intensity high set pl.d1 to 1

end else

set pl.d3 to 0

end set pl.d2 to pl.d7		end } }

EliminatePhase {	FallSpeed 0.05 LineCollapsedScript {	}	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		if ph.d0 = 1 if level < 6 sound "VO_LINE01" end sound "FX_LNE01" sound "FX_MTRS1" set goal to goal -1 set pf.d3 to 0 if pf.d4		 set goal to goal -1 end end if ph.d0 = 2 if level < 6 sound "VO_LINE02" end sound "FX_LNE02" sound "FX_MTRS2" set goal to goal -3 set pf.d3 to 0 if pf.d4		 set goal to goal -3 end send "Attack1" end if ph.d0 = 3 if level < 6 sound "VO_LINE03" end sound "FX_LNE03" sound "FX_MTRS3" set goal to goal -5 set pf.d3 to 0 send "Attack2" end if ph.d0 = 4 if level < 11 sound "VO_TETRS" end sound "FX_LNE04" sound "FX_MTRS4" if pf.d3		 set goal to goal -4 sound "FX_MTRS5" end set pf.d3 to 1 set goal to goal -8 send "Attack3" end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	GravityEnabled FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		//Calc Mino Mood

//pl.d7 is only used in this phase - feel free to re-use it		//pl.d8 is the last goal

if pl.d8 - goal set pl.d7 to pl.d8 - goal if (pl.d7 > 5) set pl.d7 to 5 end if (pl.d7 < -5) set pl.d7 to -5 end mino mood pl.d7		 set pl.d8 to goal end

//LEVEL UP		if goal <= 0 next level if (level < 5) mino mood level else mino mood 5 end

message "Level up" end } }

EventScripts {	GameStartScript {		set ghost to 1 }	LevelStartScript {		set pf.d3 to 0 set pf.d1 to (5*level) set goal to pf.d1		set pf.d7 to 0			// nothing - used in mood calculations and height calculations set pl.d8 to goal		// last goal set pl.d1 to 0			// Intensity based on time set pl.d2 to 50			// Last well height set pl.d3 to 0		//Endurance - will eliminate everything if true

set pl.d4 to 0 }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" mino mood 5 end }	MoveSuccessfulScript {		sound "FX_FALL" }	MoveFailedScript {		sound "FX_LND01" }	RotateSuccessfulScript {		sound "FX_RTA01" }	RotateFailedScript {		sound "FX_LND01" }	HardDropStartScript {		sound "FX_HRDDP" set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 end end end end

}

GameSecondScript {		if pl.d0 > 0 mix garbage garbage pl.d0			set pl.d0 to 0 end

message pl.d9 "Tick " set pl.d9 to pl.d9 + 1 } }

CustomEvent {	//10 seconds into game set intensity to low // Doing it at level start will interrupt victory win Name "110 seconds" TriggerType LevelTime 10 Script {		mino intensity low } }

CustomEvent {	Name "60 seconds" TriggerType LevelTime 60 Script {		mino intensity medium } }

CustomEvent {	Name "30 seconds" TriggerType LevelTime 90 Script {		sound "VO_30TIC" } }

CustomEvent {	Name "20 seconds" TriggerType LevelTime 100 Script {		sound "VO_20TIC" } }

CustomEvent {	Name "10 seconds" TriggerType LevelTime 110 Script {		sound "VO_10TIC" mino mood -2 mino intensity high } }

CustomEvent {	Name "9 seconds" TriggerType LevelTime 111 Script {		sound "VO_09TIC" } }

CustomEvent {	Name "8 seconds" TriggerType LevelTime 112 Script {		sound "VO_08TIC" } }

CustomEvent {	Name "7 seconds" TriggerType LevelTime 113 Script {		sound "VO_07TIC" } }

CustomEvent {	Name "6 seconds" TriggerType LevelTime 114 Script {		sound "VO_06TIC" } }

CustomEvent {	Name "5 seconds" TriggerType LevelTime 115 Script {		sound "VO_05TIC" } }

CustomEvent {	Name "4 seconds" TriggerType LevelTime 116 Script {		sound "VO_04TIC" } }

CustomEvent {	Name "3 seconds" TriggerType LevelTime 117 Script {		sound "VO_03TIC" } }

CustomEvent {	Name "2 seconds" TriggerType LevelTime 118 Script {		sound "VO_02TIC" } }

CustomEvent {	Name "1 second" TriggerType LevelTime 119 Script {		sound "VO_01TIC" } }

CustomEvent {	Name "Time up" TriggerType LevelTime 120 Script {		sound "VO_TIME" mino mood -5 } }

CustomEvent {	Name "Go for a Tetris" TriggerType GameTime 3 Script {		sound "VO_INT01" } }

CustomEvent {	Name "Attack1" TriggerType Manual Script {		set pl.d0 to pl.d0 + 1 } }

CustomEvent {	Name "Attack2" TriggerType Manual Script {		set pl.d0 to pl.d0 + 2 } }

CustomEvent {	Name "Attack3" TriggerType Manual Script {		set pl.d0 to pl.d0 + 4 } }

HOTLINE.TWS
//  FILE: Hot-Line Tetris v7.2DP.tws // SOURCE: Hot-Line Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:36:35 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Marathon RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "J" Tags 0,1 AltMino "T" AltChance 10 MutateMino "Solo Blue" }

Mino {	Name "S" Tags 0,2 AltMino "J" AltChance 10 MutateMino "Solo Green" }

Mino {	Name "T" Tags 0,3 AltMino "L" AltChance 10 MutateMino "Solo Cyan" }

Mino {	Name "Z" Tags 0,4 AltMino "O" AltChance 10 MutateMino "Solo Red" }

Mino {	Name "O" Tags 0,5 AltMino "I" AltChance 10 MutateMino "Solo Yellow" }

Mino {	Name "I" Tags 0,6 AltMino "S" AltChance 10 MutateMino "Solo Purple" }

Mino {	Name "L" Tags 0,7 AltMino "Z" AltChance 10 MutateMino "Solo Orange" }

Mino {	Name "Solo Blue" Tags 0,20 }

Mino {	Name "Solo Green" Tags 0,21 }

Mino {	Name "Solo Cyan" Tags 0,22 }

Mino {	Name "Solo Red" Tags 0,23 }

Mino {	Name "Solo Yellow" Tags 0,24 }

Mino {	Name "Solo Purple" Tags 0,25 }

Mino {	Name "Solo Orange" Tags 0,26 }

Tetramino {	Name "T" NumberInBag 1 ID 1 MinoList {		"T" (0,1) "T" (-1,0) "T" (0,0) "T" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 1 ID 2 MinoList {		"S" (0,1) "S" (1,1) "S" (-1,0) "S" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 1 ID 3 MinoList {		"Z" (-1,1) "Z" (0,1) "Z" (0,0) "Z" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 1 ID 4 MinoList {		"L" (1,1) "L" (-1,0) "L" (0,0) "L" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 1 ID 5 MinoList {		"J" (-1,1) "J" (-1,0) "J" (0,0) "J" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I" (-1,0) "I" (0,0) "I" (1,0) "I" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 1 ID 7 MinoList {		"O" (0,1) "O" (1,1) "O" (0,0) "O" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

Shape {	Name "tspin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "tspin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino sound "FX_CLR01" set ph.d0 to mino.y	} PatternEndScript {		set st2.d8 to goal if pf.d0 < 2 if ph.d0 = 2 set goal to goal - 6 set st2.d9 to st2.d8 - goal set st2.d3 to st2.d3 + 1 message "Hotline!!" sound "FX_HTLN6" sound "FX_MTRS6" else if ph.d0 = 3 set goal to goal - 5 set st2.d9 to st2.d8 - goal set st2.d2 to st2.d2 + 1 message "Hotline!" sound "FX_HTLN5" sound "FX_MTRS5" else if ph.d0 = 5 set goal to goal - 4 set st2.d9 to st2.d8 - goal set st2.d1 to st2.d1 + 1 message "Hotline" sound "FX_HTLN4" sound "FX_MTRS4" else if ph.d0 = 8 set goal to goal - 3 set st2.d9 to st2.d8 - goal set st2.d0 to st2.d0 + 1 message "Hotline" sound "FX_HTLN3" sound "FX_MTRS3" else if ph.d0 = 12 set goal to goal - 2 set st2.d9 to st2.d8 - goal set st1.d9 to st1.d9 + 1 message "Hotline" sound "FX_HTLN2" sound "FX_MTRS2" else if ph.d0 = 17 set goal to goal - 1 set st2.d9 to st2.d8 - goal set st1.d8 to st1.d8 + 1 message "Hotline" sound "FX_HTLN1" sound "FX_MTRS1" end end end end end end if score >= goal set pf.d0 to 1 end end } }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d0 to 0 set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

IteratePhase {	PrimaryIterator {		IteratorExpression pf.d0 = 1 IteratorTags 1,2,3,4,5,6,7 MinoIteratorScript {			mutate mino sound "FX_LOCK" }	}	IterateEndScript {		if pf.d0 = 1 set pf.d0 to 2 end } }

EliminatePhase {	FallSpeed 0.05 GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	GravityEnabled FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		if pl.d8 - goal set pl.d7 to (((pl.d9-goal)/pl.d9)-(level time/120)) * 20 if pl.d7 > 4 set pl.d7 to 4 end mino mood pl.d7		 set pl.d8 to goal end if goal <= 0 next level if level < 15 sound "FX_LEVEL" message "LEVEL UP!" end end } }

EventScripts {	GameStartScript {		set st2.d7 to rank sound "FX_LEVEL" set ghost to 1 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st1.d8 to 0 set st1.d9 to 0 set st2.d0 to 0 set st2.d1 to 0 set st2.d2 to 0 set st2.d3 to 0 line color (30,30,30) line color 2 (0,36,154) line color 3 (39,0,87) line color 5 (109,0,23) line color 8 (116,55,0) line color 12 (118,119,0) line color 17 (0,91,56) }	LevelStartScript {		set pf.d1 to (5*level) set goal to pf.d1		if level < 5 mino intensity low else if level < 10 mino intensity medium else mino intensity high end end }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Hot Line Intro" TriggerType LevelTime 3 Script {		if level < 4 sound "VO_INT03" end } }

CustomEvent {	Name "30sec" TriggerType LevelTime 90 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_30TIC" end end end } }

CustomEvent {	Name "20sec" TriggerType LevelTime 100 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_20TIC" end end end } }

CustomEvent {	Name "10sec" TriggerType LevelTime 110 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_10TIC" end end end sound "FX_TIC10" } }

CustomEvent {	Name "9sec" TriggerType LevelTime 111 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_09TIC" end end end sound "FX_TIC09" } }

CustomEvent {	Name "8sec" TriggerType LevelTime 112 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_08TIC" end end end sound "FX_TIC08" } }

CustomEvent {	Name "7sec" TriggerType LevelTime 113 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_07TIC" end end end sound "FX_TIC07" } }

CustomEvent {	Name "6sec" TriggerType LevelTime 114 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_06TIC" end end end sound "FX_TIC06" } }

CustomEvent {	Name "5sec" TriggerType LevelTime 115 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_05TIC" end end end sound "FX_TIC05" } }

CustomEvent {	Name "4sec" TriggerType LevelTime 116 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_04TIC" end end end sound "FX_TIC04" } }

CustomEvent {	Name "3sec" TriggerType LevelTime 117 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_03TIC" end end end sound "FX_TIC03" } }

CustomEvent {	Name "2sec" TriggerType LevelTime 118 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_02TIC" end end end sound "FX_TIC02" } }

CustomEvent {	Name "1sec" TriggerType LevelTime 119 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_01TIC" end end end sound "FX_TIC01" } }

CustomEvent {	Name "Time Up" TriggerType LevelTime 120 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_OVRTIME" end end end } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 108 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_COUNTDWN" end end end } }

CustomEvent {	Name "Go for a Rank Up" TriggerType LevelTime 1 Script {		if rank = st2.d7			if level >= rank if rank < 15 message "GO FOR A RANK UP!!!" end end end } }

LEARNING.TWS
//  FILE: Learning Tetris v7.2DP.tws // SOURCE: Learning Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:36:46 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Levels NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "J color" Tags 0,1 }

Mino {	Name "L color" Tags 0,2 }

Mino {	Name "S color" Tags 0,3 }

Mino {	Name "Z color" Tags 0,4 }

Mino {	Name "O color" Tags 0,5 }

Mino {	Name "T color" Tags 0,6 }

Mino {	Name "I color" Tags 0,7 }

Mino {	Name "Garbage" Tags 0,31 }

Tetramino {	Name "T" NumberInBag 0 ID 1 MinoList {		"T color" (0,1) "T color" (-1,0) "T color" (0,0) "T color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 0 ID 2 MinoList {		"J color" (-1,1) "J color" (-1,0) "J color" (0,0) "J color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 0 ID 3 MinoList {		"L color" (1,1) "L color" (-1,0) "L color" (0,0) "L color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 0 ID 4 MinoList {		"S color" (0,1) "S color" (1,1) "S color" (-1,0) "S color" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 0 ID 5 MinoList {		"Z color" (-1,1) "Z color" (0,1) "Z color" (0,0) "Z color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I color" (-1,0) "I color" (0,0) "I color" (1,0) "I color" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 0 ID 7 MinoList {		"O color" (0,1) "O color" (1,1) "O color" (0,0) "O color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

GarbageInfo {	NormalMino "Garbage" NormalCount 9 }

Shape {	Name "T-spin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "T-spin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "Line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino }	PatternEndScript {		sound "FX_CLR01" } }

Level {	Name "Level #1" LevelStartScript {		set bag "I" to 4 shuffle 0 set pf.d9 to 2 } }

Level {	Name "Level #2" LevelStartScript {		set bag "I" to 4 set bag "O" to 1 shuffle 0 set pf.d9 to 2 } }

Level {	Name "Level #3" LevelStartScript {		set bag "I" to 4 set bag "O" to 2 set bag "L" to 1 shuffle 0 set pf.d9 to 2 } }

Level {	Name "Level #4" LevelStartScript {		set bag "I" to 4 set bag "O" to 4 set bag "L" to 2 set bag "J" to 1 shuffle 0 set pf.d9 to 1.8 } }

Level {	Name "Level #5" LevelStartScript {		set bag "I" to 4 set bag "O" to 4 set bag "L" to 4 set bag "J" to 2 set bag "S" to 1 shuffle 0 set pf.d9 to 1.6 } }

Level {	Name "Level #6" LevelStartScript {		set bag "I" to 4 set bag "O" to 4 set bag "L" to 4 set bag "J" to 4 set bag "S" to 2 set bag "Z" to 1 shuffle 0 set pf.d9 to 1.4 } }

Level {	Name "Level #7" LevelStartScript {		set bag "I" to 4 set bag "O" to 4 set bag "L" to 4 set bag "J" to 4 set bag "S" to 4 set bag "Z" to 2 set bag "T" to 1 shuffle 0 set pf.d9 to 1.2 } }

Level {	Name "Level #8" LevelStartScript {		set bag "I" to 4 set bag "O" to 4 set bag "L" to 4 set bag "J" to 4 set bag "S" to 4 set bag "Z" to 4 set bag "T" to 2 shuffle 0 set pf.d9 to 1 } }

Level {	Name "Level #9" LevelStartScript {		set bag "I" to 4 set bag "O" to 4 set bag "L" to 4 set bag "J" to 4 set bag "S" to 4 set bag "Z" to 4 set bag "T" to 4 shuffle 0 set pf.d9 to 0.8 } }

Level {	Name "Level #10" LevelStartScript {		set bag "I" to 4 set bag "O" to 4 set bag "L" to 4 set bag "J" to 4 set bag "S" to 4 set bag "Z" to 4 set bag "T" to 4 shuffle 0 set pf.d9 to 0.6 } }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed pf.d9	SoftDropSpeed pf.d9/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed 0.1 LineCollapsedScript {		set ph.d0 to ph.d0 + 1 }	StartFallingScript {		if ph.d0 = 1 line color (109,0,23) end if ph.d0 = 2 line color (39,0,87) end if ph.d0 = 3 line color (116,55,0) end if ph.d0 = 4 line color (0,91,56) if pf.d3				line color (118,119,0) else set pf.d3 to 1 end end }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		set st2.d8 to goal if ph.d0 = 1 sound "VO_LINE01" sound "FX_MTRS1" set goal to goal -1 set st2.d9 to st2.d8  - goal set st0.d0 to st0.d0 + 1 message st2.d9 "Single +" set pf.d3 to 0 if pf.d4		 set goal to goal -1 set st2.d9 to st2.d8  - goal message st2.d9 "T-spin +" end end if ph.d0 = 2 sound "VO_LINE02" sound "FX_MTRS2" set goal to goal -3 set st2.d9 to st2.d8  - goal set st0.d1 to st0.d1 + 1 message st2.d9 "Double +" set pf.d3 to 0 if pf.d4		 set goal to goal -3 set st2.d9 to st2.d8  - goal message st2.d9 "T-spin +" end end if ph.d0 = 3 sound "VO_LINE03" sound "FX_MTRS3" set goal to goal -5 set st2.d9 to st2.d8  - goal set st0.d2 to st0.d2 + 1 message st2.d9 "Triple +" set pf.d3 to 0 end if ph.d0 = 4 sound "VO_TETRS" sound "FX_MTRS4" if pf.d3		 set goal to goal -4 set st2.d9 to st2.d8  - goal set st0.d9 to st0.d9 + 1 message st2.d9 "B2B Tetris!!! +" sound "FX_MTRS5" else set pf.d3 to 1 message st2.d9 "Tetris! +" end set goal to goal -8 set st2.d9 to st2.d8  - goal set st0.d3 to st0.d3 + 1 end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	FallSpeed 0.1 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		if pl.d8 - goal set pl.d7 to (((pl.d9-goal)/pl.d9)-(level time/120)) * 20 if pl.d7 > 4 set pl.d7 to 4 end mino mood pl.d7		 set pl.d8 to goal end if goal <= 0 next level sound "FX_LEVEL" message "LEVEL UP!" end } }

EventScripts {	GameStartScript {		sound "FX_LEVEL" set ghost to 1 set st0.d0 to 0 set st0.d1 to 0 set st0.d2 to 0 set st0.d3 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st0.d9 to 0 set st1.d0 to 0 }	LevelStartScript {		if level < 5 mino intensity low else if level < 10 mino intensity medium else mino intensity high end end set goal to 10 set pl.d9 to goal set pl.d8 to goal }	LevelEndScript {		if level > 10 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d7 to st0.d7 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d7 to st0.d7 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2			sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y		  if result = 1 if level < 10 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 set st1.d0 to st1.d0 + 1 else shape "T-spin2" at piece.x, piece.y								if result = 1 if level < 10 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 set st1.d0 to st1.d0 + 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Goal of game" TriggerType LevelTime 3 Script {		if level < 6 sound "VO_INT01" end } }

MCASCADE.TWS
//  FILE: Ultra Cascade Tetris v7.2DP.tws // SOURCE: Ultra Cascade Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:37:51 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Levels RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "J" Tags 0,1 }

Mino {	Name "T" Tags 0,2 }

Mino {	Name "S" Tags 0,3 }

Mino {	Name "Z" Tags 0,4 }

Mino {	Name "L" Tags 0,5 }

Mino {	Name "O" Tags 0,6 }

Mino {	Name "I" Tags 0,7 }

Tetramino {	Name "T" NumberInBag 1 ID 1 MinoList {		"T" (0,1) "T" (-1,0) "T" (0,0) "T" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 1 ID 2 MinoList {		"J" (-1,1) "J" (-1,0) "J" (0,0) "J" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 1 ID 3 MinoList {		"L" (1,1) "L" (-1,0) "L" (0,0) "L" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 1 ID 4 MinoList {		"S" (0,1) "S" (1,1) "S" (-1,0) "S" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 1 ID 5 MinoList {		"Z" (-1,1) "Z" (0,1) "Z" (0,0) "Z" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I" (-1,0) "I" (0,0) "I" (1,0) "I" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 1 ID 7 MinoList {		"O" (0,1) "O" (1,1) "O" (0,0) "O" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

Shape {	Name "tspin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "tspin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino sound "FX_CLR01" }	PatternEndScript {		set st1.d3 to st1.d3 + 1 } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed 0.05 EliminateBeginScript {		set ph.d0 to 0 set ph.d1 to 0 }	LineCollapsedScript {		set ph.d0 to ph.d0 + 1 set ph.d1 to ph.d1 + 1 }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		set st2.d8 to goal if ph.d0 >= 1 set goal to goal - (ph.d0 + (ph.d0 - 1)) end if ph.d0>0 if cascades>1 set goal to goal - ((cascades-1)*2) end end set st2.d9 to st2.d8 - goal if ph.d0 > st1.d6			set st1.d6 to ph.d0		end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	GravityEnabled FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		if cascades > 0 set st1.d4 to st1.d4 + (cascades - 1) end if st1.d4 > 0 if (cascades - 1) > st1.d5				set st1.d5 to (cascades - 1) end end if cascades = 2 message "2 Cascades" line color (109,0,23) sound "FX_MTRS1" end if cascades = 3 message "3 Cascades" line color (39,0,87) sound "FX_MTRS2" end if cascades = 4 message "4 Cascades" line color (39,0,87) sound "FX_MTRS3" end if cascades = 5 message "5 Cascades" line color (116,55,0) sound "FX_MTRS4" end if cascades = 6 message "6 Cascades" line color (116,55,0) sound "FX_MTRS5" end if cascades = 7 message "7 Cascades" line color (0,91,56) sound "FX_MTRS6" end if cascades = 8 message "8 Cascades" line color (0,91,56) sound "FX_MTRS6" end if cascades = 9 message "9 Cascades" line color (118,119,0) sound "FX_MTRS6" end if cascades = 10 message "10 Cascades" line color (118,119,0) sound "FX_MTRS6" end if cascades >= 11 message "Super Cascade!!!" line color (0,36,154) sound "FX_MTRS6" end if goal <= 0 next level if level < 15 sound "FX_LEVEL" end end } }

EventScripts {	GameStartScript {		set st2.d7 to rank sound "FX_LEVEL" set ghost to 1 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st1.d3 to 0 set st1.d4 to 0 set st1.d5 to 0 set st1.d6 to 0 line color (30,30,30) }	LevelStartScript {		mino intensity high set pf.d1 to (5*level) set goal to pf.d1		set st2.d8 to goal set pf.d7 to 0 }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 109 Script {		message "COUNTDOWN!" } }

CustomEvent {	Name "10" TriggerType LevelTime 110 Script {		sound "FX_TIC10" } }

CustomEvent {	Name "9" TriggerType LevelTime 111 Script {		sound "FX_TIC09" } }

CustomEvent {	Name "8" TriggerType LevelTime 112 Script {		sound "FX_TIC08" } }

CustomEvent {	Name "7" TriggerType LevelTime 113 Script {		sound "FX_TIC07" } }

CustomEvent {	Name "6" TriggerType LevelTime 114 Script {		sound "FX_TIC06" } }

CustomEvent {	Name "5" TriggerType LevelTime 115 Script {		sound "FX_TIC05" } }

CustomEvent {	Name "4" TriggerType LevelTime 116 Script {		sound "FX_TIC04" } }

CustomEvent {	Name "3" TriggerType LevelTime 117 Script {		sound "FX_TIC03" } }

CustomEvent {	Name "2" TriggerType LevelTime 118 Script {		sound "FX_TIC02" } }

CustomEvent {	Name "1" TriggerType LevelTime 119 Script {		sound "FX_TIC01" } }

MCONNECT.TWS
//  FILE: Ultra Fusion Tetris v7.2DP.tws // SOURCE: Ultra Fusion Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:38:02 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Levels RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "J" Tags 0,1 MutateMino "Solo Blue" }

Mino {	Name "S" Tags 0,2 MutateMino "Solo Green" }

Mino {	Name "O" Tags 0,3 MutateMino "Solo Yellow" }

Mino {	Name "L" Tags 0,4 MutateMino "Solo Orange" }

Mino {	Name "T" Tags 0,5 MutateMino "Solo Cyan" }

Mino {	Name "I" Tags 0,6 MutateMino "Solo Purple" }

Mino {	Name "Z" Tags 0,7 MutateMino "Solo Red" }

Mino {	Name "Gold" Tags 0,10 MutateMino "Red" D0 1 D1 1 }

Mino {	Name "Red" Tags 0,11 D0 1 }

Mino {	Name "Garbage" Antigravity Tags 0,31 }

Mino {	Name "Solo Blue" Tags 0,20 }

Mino {	Name "Solo Green" Tags 0,21 }

Mino {	Name "Solo Yellow" Tags 0,22 }

Mino {	Name "Solo Orange" Tags 0,23 }

Mino {	Name "Solo Cyan" Tags 0,24 }

Mino {	Name "Solo Purple" Tags 0,25 }

Mino {	Name "Solo Red" Tags 0,26 }

Tetramino {	Name "T" NumberInBag 1 ID 1 MinoList {		"T" (0,1) "T" (-1,0) "T" (0,0) "T" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 1 ID 2 MinoList {		"J" (-1,1) "J" (-1,0) "J" (0,0) "J" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 1 ID 3 MinoList {		"L" (1,1) "L" (-1,0) "L" (0,0) "L" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 1 ID 4 MinoList {		"S" (0,1) "S" (1,1) "S" (-1,0) "S" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 1 ID 5 MinoList {		"Z" (-1,1) "Z" (0,1) "Z" (0,0) "Z" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I" (-1,0) "I" (0,0) "I" (1,0) "I" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 1 ID 7 MinoList {		"O" (0,1) "O" (1,1) "O" (0,0) "O" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

Tetramino {	Name "One" NumberInBag 3 ID 8 MinoList {		"Gold" (0,0) }	Rot0CWOffsetList (0,0) Rot90CWOffsetList (0,0) Rot180CWOffsetList (0,0) Rot270CWOffsetList (0,0) }

GarbageInfo {	NormalMino "Garbage" NormalCount 6 }

Shape {	Name "tspin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "tspin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		if mino.d0 = 0 kill mino sound "FX_CLR01" else set gravity to 1 line color (136,147,181) end }	PatternEndScript {		set st1.d3 to st1.d3 + 1 set pf.d8 to pf.d8 + 1 set ph.d0 to 1 } }

Pattern {	Name "disease" Tags 11 Method Search SearchType FloodFill4D SearchCount 1 PatternMinoScript {		pattern "infection" at mino.x, mino.y	} }

Pattern {	Name "infection" Triggered Tags 10,11 Method Search SearchType FloodFill4D SearchCount 2 PatternMinoScript {		set st2.d8 to goal if mino.d1 = 1 mutate mino sound "FX_FUS02" sound "FX_MTRS4" set goal to goal -1 set st2.d9 to st2.d8 - goal set st2.d4 to st2.d4 + 1 message "Fusion!" if level < 6 sound "VO_FUSION" end if goal <= 0 set pf.d0 to 1 end end } }

Pattern {	Name "level end" Tags 11 Method Search SearchType FloodFill4D SearchCount pf.d6 + 1 PatternMinoScript {	}	PatternEndScript {		next level } }

Trash {	Name "left" Height 1 MinoList {		"Red" (0,0) "Garbage" (2,0) "Garbage" (4,0) "Garbage" (6,0) "Garbage" (8,0) } }

Trash {	Name "right" Height 1 MinoList {		"Garbage" (1,0) "Garbage" (3,0) "Garbage" (5,0) "Garbage" (7,0) "Red" (9,0) } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 set pf.d9 to 0 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase {	PatternBeginScript {		set pf.d8 to 0 set pf.d0 to 0 set ph.d0 to 0 }	PatternEndScript {		if ph.d0 = 1 set pf.d9 to pf.d9 + 1 end } }

IteratePhase {	IterateBeginScript {		set st2.d5 to 0 }	SecondaryIterator {		MinoIteratorScript {			if mino.d1 = 1 set st2.d5 to st2.d5 + 1 end }	} }

EliminatePhase {	FallSpeed 0.05 EliminateBeginScript {		set ph.d0 to pf.d8	} GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		if ph.d0 > st1.d6			set st1.d6 to ph.d0		end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" }	GravityEndScript {		set gravity to 0 } }

CompletionPhase {	CompletionBeginScript {			set st1.d4 to st1.d4 + pf.d9		if st1.d4 > 0 if pf.d9 > st1.d5				set st1.d5 to pf.d9			end end if pf.d9 > st1.d5			set st1.d5 to pf.d9		end if pf.d9 = 2 message "2 Cascades" line color (109,0,23) end if pf.d9 = 3 message "3 Cascades" line color (39,0,87) end if pf.d9 = 4 message "4 Cascades" line color (39,0,87) end if pf.d9 = 5 message "5 Cascades" line color (116,55,0) end if pf.d9 = 6 message "6 Cascades" line color (116,55,0) end if pf.d9 = 7 message "7 Cascades" line color (0,91,56) end if pf.d9 = 8 message "8 Cascades" line color (0,91,56) end if pf.d9 = 9 message "9 Cascades" line color (118,119,0) end if pf.d9 = 10 message "10 Cascades" line color (118,119,0) end if pf.d9 >= 11 message "Super Cascade!!!" line color (0,36,154) end if goal <= 0 next level if level < 15 sound "FX_LEVEL" end end } }

EventScripts {	GameStartScript {		sound "FX_LEVEL" set ghost to 1 set st2.d4 to 0 set st2.d5 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st1.d3 to 0 set st1.d4 to 0 set st1.d5 to 0 set st1.d6 to 0 line color (30,30,30) }	LevelStartScript {		mino intensity high mixed garbage level if ((level/2) - (level\2)) = 0 trash "left" else trash "right" end set pf.d6 to level * 2 set goal to pf.d6		set pf.d7 to 0 }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 109 Script {		message "COUNTDOWN!" } }

CustomEvent {	Name "10" TriggerType LevelTime 110 Script {		sound "FX_TIC10" } }

CustomEvent {	Name "9" TriggerType LevelTime 111 Script {		sound "FX_TIC09" } }

CustomEvent {	Name "8" TriggerType LevelTime 112 Script {		sound "FX_TIC08" } }

CustomEvent {	Name "7" TriggerType LevelTime 113 Script {		sound "FX_TIC07" } }

CustomEvent {	Name "6" TriggerType LevelTime 114 Script {		sound "FX_TIC06" } }

CustomEvent {	Name "5" TriggerType LevelTime 115 Script {		sound "FX_TIC05" } }

CustomEvent {	Name "4" TriggerType LevelTime 116 Script {		sound "FX_TIC04" } }

CustomEvent {	Name "3" TriggerType LevelTime 117 Script {		sound "FX_TIC03" } }

CustomEvent {	Name "2" TriggerType LevelTime 118 Script {		sound "FX_TIC02" } }

CustomEvent {	Name "1" TriggerType LevelTime 119 Script {		sound "FX_TIC01" } }

MHOTLINE.TWS
//  FILE: Ultra Hot-Line Tetris v7.2DP.tw // SOURCE: Ultra Hot-Line Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:38:13 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Levels RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "J" Tags 0,1 AltMino "T" AltChance 10 }

Mino {	Name "S" Tags 0,2 AltMino "J" AltChance 10 }

Mino {	Name "T" Tags 0,3 AltMino "L" AltChance 10 }

Mino {	Name "Z" Tags 0,4 AltMino "O" AltChance 10 }

Mino {	Name "O" Tags 0,5 AltMino "I" AltChance 10 }

Mino {	Name "I" Tags 0,6 AltMino "S" AltChance 10 }

Mino {	Name "L" Tags 0,7 AltMino "Z" AltChance 10 }

Tetramino {	Name "T" NumberInBag 1 ID 1 MinoList {		"T" (0,1) "T" (-1,0) "T" (0,0) "T" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 1 ID 2 MinoList {		"S" (0,1) "S" (1,1) "S" (-1,0) "S" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 1 ID 3 MinoList {		"Z" (-1,1) "Z" (0,1) "Z" (0,0) "Z" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 1 ID 4 MinoList {		"L" (1,1) "L" (-1,0) "L" (0,0) "L" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 1 ID 5 MinoList {		"J" (-1,1) "J" (-1,0) "J" (0,0) "J" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I" (-1,0) "I" (0,0) "I" (1,0) "I" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 1 ID 7 MinoList {		"O" (0,1) "O" (1,1) "O" (0,0) "O" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

Shape {	Name "tspin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "tspin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino sound "FX_CLR01" set ph.d0 to mino.y	} PatternEndScript {		set st2.d8 to goal if pf.d0 < 2 if ph.d0 = 2 set goal to goal - 6 set st2.d9 to st2.d8 - goal set st2.d3 to st2.d3 + 1 message "Hotline!!" sound "FX_HTLN6" sound "FX_MTRS6" else if ph.d0 = 3 set goal to goal - 5 set st2.d9 to st2.d8 - goal set st2.d2 to st2.d2 + 1 message "Hotline!" sound "FX_HTLN5" sound "FX_MTRS5" else if ph.d0 = 5 set goal to goal - 4 set st2.d9 to st2.d8 - goal set st2.d1 to st2.d1 + 1 message "Hotline" sound "FX_HTLN4" sound "FX_MTRS4" else if ph.d0 = 8 set goal to goal - 3 set st2.d9 to st2.d8 - goal set st2.d0 to st2.d0 + 1 message "Hotline" sound "FX_HTLN3" sound "FX_MTRS3" else if ph.d0 = 12 set goal to goal - 2 set st2.d9 to st2.d8 - goal set st1.d9 to st1.d9 + 1 message "Hotline" sound "FX_HTLN2" sound "FX_MTRS2" else if ph.d0 = 17 set goal to goal - 1 set st2.d9 to st2.d8 - goal set st1.d8 to st1.d8 + 1 message "Hotline" sound "FX_HTLN1" sound "FX_MTRS1" end end end end end end if score >= goal set pf.d0 to 1 end end } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d0 to 0 set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

IteratePhase {	PrimaryIterator {		IteratorExpression pf.d0 = 1 IteratorTags 1,2,3,4,5,6,7 MinoIteratorScript {		}	}	IterateEndScript {		if pf.d0 = 1 set pf.d0 to 2 end } }

EliminatePhase {	FallSpeed 0.05 GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	GravityEnabled FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		if goal <= 0 next level if level < 15 sound "FX_LEVEL" message "LEVEL UP!" end end } }

EventScripts {	GameStartScript {		sound "FX_LEVEL" set ghost to 1 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st1.d8 to 0 set st1.d9 to 0 set st2.d0 to 0 set st2.d1 to 0 set st2.d2 to 0 set st2.d3 to 0 line color (30,30,30) line color 2 (0,36,154) line color 3 (39,0,87) line color 5 (109,0,23) line color 8 (116,55,0) line color 12 (118,119,0) line color 17 (0,91,56) }	LevelStartScript {		mino intensity high set pf.d1 to (5*level) set goal to pf.d1		set pf.d7 to 0 }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 109 Script {		message "COUNTDOWN!" } }

CustomEvent {	Name "10" TriggerType LevelTime 110 Script {		sound "FX_TIC10" } }

CustomEvent {	Name "9" TriggerType LevelTime 111 Script {		sound "FX_TIC09" } }

CustomEvent {	Name "8" TriggerType LevelTime 112 Script {		sound "FX_TIC08" } }

CustomEvent {	Name "7" TriggerType LevelTime 113 Script {		sound "FX_TIC07" } }

CustomEvent {	Name "6" TriggerType LevelTime 114 Script {		sound "FX_TIC06" } }

CustomEvent {	Name "5" TriggerType LevelTime 115 Script {		sound "FX_TIC05" } }

CustomEvent {	Name "4" TriggerType LevelTime 116 Script {		sound "FX_TIC04" } }

CustomEvent {	Name "3" TriggerType LevelTime 117 Script {		sound "FX_TIC03" } }

CustomEvent {	Name "2" TriggerType LevelTime 118 Script {		sound "FX_TIC02" } }

CustomEvent {	Name "1" TriggerType LevelTime 119 Script {		sound "FX_TIC01" } }

MSQUARE.TWS
//  FILE: Ultra Square Tetris v7.2DP.tws // SOURCE: Ultra Square Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:38:22 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Levels NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 0: 0	1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7	20: 20	31: 31 }

Mino {	Name "J color" Tags 0 MutateMino "Result J color" }

Mino {	Name "L color" Tags 1 MutateMino "Result L color" }

Mino {	Name "S color" Tags 2 MutateMino "Result S color" }

Mino {	Name "Z color" Tags 3 MutateMino "Result Z color" }

Mino {	Name "O color" Tags 4 MutateMino "Result O color" }

Mino {	Name "T color" Tags 5 MutateMino "Result T color" }

Mino {	Name "I color" Tags 6 MutateMino "Result I color" }

Mino {	Name "Pure Square" Tags 31 MutateMino "Result Pure Square" D9 2.5 }

Mino {	Name "Combo Square" Tags 31 MutateMino "Result Combo Square" D9 1.25 }

Mino {	Name "Result J color" Tags 24 }

Mino {	Name "Result L color" Tags 25 }

Mino {	Name "Result S color" Tags 26 }

Mino {	Name "Result Z color" Tags 27 }

Mino {	Name "Result O color" Tags 28 }

Mino {	Name "Result T color" Tags 29 }

Mino {	Name "Result I color" Tags 30 }

Mino {	Name "Result Pure Square" Tags 23 }

Mino {	Name "Result Combo Square" Tags 22 }

Mino {	Name "Garbage" Tags 20 }

Tetramino {	Name "J Tetrimino" NumberInBag 1 ID 1 MinoList {		"J color" (-1,1) "J color" (-1,0) "J color" (0,0) "J color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I Tetrimino" NumberInBag 1 ID 2 MinoList {		"I color" (-1,0) "I color" (0,0) "I color" (1,0) "I color" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O Tetrimino" NumberInBag 1 ID 3 MinoList {		"O color" (-1,1) "O color" (0,1) "O color" (-1,0) "O color" (0,0) }	Rot0CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) Rot90CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot180CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot270CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) }

Tetramino {	Name "S Tetrimino" NumberInBag 1 ID 4 MinoList {		"S color" (0,1) "S color" (1,1) "S color" (-1,0) "S color" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L Tetrimino" NumberInBag 1 ID 5 MinoList {		"L color" (1,1) "L color" (-1,0) "L color" (0,0) "L color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z Tetrimino" NumberInBag 1 ID 6 MinoList {		"Z color" (-1,1) "Z color" (0,1) "Z color" (0,0) "Z color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "T Tetrimino" NumberInBag 1 ID 7 MinoList {		"T color" (0,1) "T color" (-1,0) "T color" (0,0) "T color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

GarbageInfo {	NormalMino "Garbage" NormalCount 9 }

Shape {	Name "Perfect Square" Hotspot (7,8) ShapeCoords (4,11),(4,10),(4,9),(4,8),(5,11),(5,10),(5,9),(5,8),(6,11),(6,10),(6,9),(6,8),(7,11),(7,10),(7,9),(7,8) }

Shape {	Name "T-spin 1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "T-spin 2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Shape {	Name "Spin S 1" Hotspot (7,8) ShapeCoords (5,6),(6,8),(6,7),(8,6),(9,8),(9,7) }

Shape {	Name "Spin S 2" Hotspot (7,8) ShapeCoords (4,6),(5,8),(5,7),(7,6),(8,8),(8,7) }

Shape {	Name "Spin Z 1" Hotspot (7,8) ShapeCoords (5,8),(5,7),(6,6),(8,8),(8,7),(9,6) }

Shape {	Name "Spin Z 2" Hotspot (7,8) ShapeCoords (6,8),(6,7),(7,6),(9,8),(9,7),(10,6) }

Pattern {	Name "t-spin top" Triggered Tags 0,1,2,3,4,5,6,24,25,26,27,28,29,30,31 Method Search SearchType Horizontal SearchCount 10 PatternBeginScript {		sound "FX_RWD02" set pl.d4 to 0 }	PatternMinoScript {		set pl.d5 to mino.y	} }

Pattern {	Name "t-spin bottom" Triggered Tags 0,1,2,3,4,5,6,24,25,26,27,28,29,30,31 Method Search SearchType Horizontal SearchCount 10 PatternBeginScript {		sound "FX_RWD01" set pl.d5 to 21 }	PatternMinoScript {		if pl.d4 = -1 set pl.d4 to mino.y		end } }

Pattern {	Name "J Square" Tags 0 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "FX_GOLDF" } }

Pattern {	Name "I Square" Tags 6 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "FX_GOLDF" } }

Pattern {	Name "O Square" Tags 4 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "FX_GOLDF" } }

Pattern {	Name "T Square" Tags 5 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "FX_GOLDF" } }

Pattern {	Name "L Square" Tags 1 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "FX_GOLDF" } }

Pattern {	Name "Combo Square" Tags 0,1,2,3,4,5,6 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternMinoScript {		set mino to "Combo Square" message "Combo Square!" }	PatternEndScript {		solidify set st1.d1 to st1.d1 + 1 sound "FX_SLVRF" } }

Pattern {	Name "Line clear" Tags 0,1,2,3,4,5,6,20,22,23,24,25,26,27,28,29,30,31 Method Search SearchType Horizontal SearchCount 10 PatternBeginScript {		if mino.d9 = 2.5 line color (0,36,154) end if mino.d9 = 1.25 line color (118,119,0) end }	PatternMinoScript {		set pf.d0 to pf.d0 + mino.d9		kill mino sound "FX_CLR01" } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase {	PatternBeginScript {		set pl.d4 to -1 set pl.d5 to -1 } }

IteratePhase {	PrimaryIterator {		IteratorExpression pl.d4 != -1 MinoIteratorScript {			if mino.y > pl.d5				exit end if mino.y < pl.d4				exit end mutate mino sound "FX_LOCK" }	}	IterateEndScript {		if pl.d4 != -1 set gravity to 1 end set pl.d6 to 0 } }

EliminatePhase {	FallSpeed 0.05 LineCollapsedScript {		set ph.d0 to ph.d0 + 1 }	StartFallingScript {		set goal to goal - pf.d0		set pf.d0 to 0 if ph.d0 = 1 line color (109,0,23) end if ph.d0 = 2 line color (39,0,87) end if ph.d0 = 3 line color (116,55,0) end if ph.d0 >= 4 line color (0,91,56) end }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		set st2.d8 to goal if ph.d0 = 1 if pf.d4		 set goal to goal - 1 set st2.d9 to st2.d8 - goal message "T-spin" end sound "FX_MTRS1" set goal to goal -1 set st2.d9 to st2.d8 - goal set st0.d0 to st0.d0 + 1 message "Single" end if ph.d0 = 2 if pf.d4		 set goal to goal - 3 set st2.d9 to st2.d8 - goal message "T-spin" end sound "FX_MTRS2" set goal to goal -3 set st2.d9 to st2.d8 - goal set st0.d1 to st0.d1 + 1 message "Double" send "Attack1" end if ph.d0 = 3 sound "FX_MTRS3" set goal to goal -5 set st2.d9 to st2.d8 - goal set st0.d2 to st0.d2 + 1 message "Triple" send "Attack2" end if ph.d0 >= 4 sound "FX_MTRS4" set goal to goal -8 set st2.d9 to st2.d8 - goal set st0.d3 to st0.d3 + 1 message "Tetris!" send "Attack3" end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" }	GravityEndScript {		set gravity to 0 } }

CompletionPhase {	CompletionBeginScript {		if goal <= 0 next level if level < 15 sound "FX_LEVEL" message "LEVEL UP!" end end } }

EventScripts {	GameStartScript {		sound "FX_LEVEL" set ghost to 1 set st0.d0 to 0 set st0.d1 to 0 set st0.d2 to 0 set st0.d3 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st1.d1 to 0 set st1.d2 to 0 line color (30,30,30) }	LevelStartScript {		mino intensity high set pf.d3 to 0 set goal to (10*level) set pf.d7 to 0 }	LevelEndScript {		if level >= 15 win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 7 if spin shape "T-spin 1" at piece.x, piece.y				if result = 1 if piece.dir = 3 pattern "t-spin top" at piece.x,piece.y-1 pattern "t-spin bottom" at piece.x,piece.y			 else pattern "t-spin top" at piece.x,piece.y				 pattern "t-spin bottom" at piece.x,piece.y+1 end if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 else shape "T-spin 2" at piece.x, piece.y					if result = 1 if piece.dir = 3 pattern "t-spin top" at piece.x,piece.y-1 pattern "t-spin bottom" at piece.x,piece.y			 else pattern "t-spin top" at piece.x,piece.y				 pattern "t-spin bottom" at piece.x,piece.y+1 end if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Attack1" TriggerType Manual Script {		set pl.d0 to pl.d0 + 4 mix garbage garbage 1 sound "FX_GAR01" } }

CustomEvent {	Name "Attack2" TriggerType Manual Script {		set pl.d0 to pl.d0 + 4 mix garbage garbage 2 sound "FX_GAR02" } }

CustomEvent {	Name "Attack3" TriggerType Manual Script {		set pl.d0 to pl.d0 + 4 mix garbage garbage 4 sound "FX_GAR03" } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 109 Script {		message "COUNTDOWN!" } }

CustomEvent {	Name "10" TriggerType LevelTime 110 Script {		sound "FX_TIC10" } }

CustomEvent {	Name "9" TriggerType LevelTime 111 Script {		sound "FX_TIC09" } }

CustomEvent {	Name "8" TriggerType LevelTime 112 Script {		sound "FX_TIC08" } }

CustomEvent {	Name "7" TriggerType LevelTime 113 Script {		sound "FX_TIC07" } }

CustomEvent {	Name "6" TriggerType LevelTime 114 Script {		sound "FX_TIC06" } }

CustomEvent {	Name "5" TriggerType LevelTime 115 Script {		sound "FX_TIC05" } }

CustomEvent {	Name "4" TriggerType LevelTime 116 Script {		sound "FX_TIC04" } }

CustomEvent {	Name "3" TriggerType LevelTime 117 Script {		sound "FX_TIC03" } }

CustomEvent {	Name "2" TriggerType LevelTime 118 Script {		sound "FX_TIC02" } }

CustomEvent {	Name "1" TriggerType LevelTime 119 Script {		sound "FX_TIC01" } }

MTET2001.TWS
//  FILE: Ultra Tetris v7.2DP.tws // SOURCE: Ultra Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:38:42 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Levels RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7	31: 31 }

Mino {	Name "J color" Tags 0,1 }

Mino {	Name "L color" Tags 0,2 }

Mino {	Name "S color" Tags 0,3 }

Mino {	Name "Z color" Tags 0,4 }

Mino {	Name "O color" Tags 0,5 }

Mino {	Name "T color" Tags 0,6 }

Mino {	Name "I color" Tags 0,7 }

Mino {	Name "Garbage" Tags 0,31 }

Tetramino {	Name "T Tetrimino" NumberInBag 1 ID 1 MinoList {		"T color" (0,1) "T color" (-1,0) "T color" (0,0) "T color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J Tetrimino" NumberInBag 1 ID 2 MinoList {		"J color" (-1,1) "J color" (-1,0) "J color" (0,0) "J color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L Tetrimino" NumberInBag 1 ID 3 MinoList {		"L color" (1,1) "L color" (-1,0) "L color" (0,0) "L color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S Tetrimino" NumberInBag 1 ID 4 MinoList {		"S color" (0,1) "S color" (1,1) "S color" (-1,0) "S color" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z Tetrimino" NumberInBag 1 ID 5 MinoList {		"Z color" (-1,1) "Z color" (0,1) "Z color" (0,0) "Z color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I Tetrimino" NumberInBag 1 ID 6 MinoList {		"I color" (-1,0) "I color" (0,0) "I color" (1,0) "I color" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O Tetrimino" NumberInBag 1 ID 7 MinoList {		"O color" (0,1) "O color" (1,1) "O color" (0,0) "O color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

GarbageInfo {	NormalMino "Garbage" NormalCount 9 }

Shape {	Name "T-spin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "T-spin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "Line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino }	PatternEndScript {		sound "FX_CLR01" } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed 0.1 LineCollapsedScript {		set ph.d0 to ph.d0 + 1 }	StartFallingScript {		if ph.d0 = 1 line color (109,0,23) end if ph.d0 = 2 line color (39,0,87) end if ph.d0 = 3 line color (116,55,0) end if ph.d0 = 4 line color (0,91,56) if pf.d3				line color (118,119,0) else set pf.d3 to 1 end end }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		set st2.d8 to goal if ph.d0 = 1 sound "FX_MTRS1" set goal to goal -1 set st2.d9 to st2.d8 - goal set st0.d0 to st0.d0 + 1 message "Single" set pf.d3 to 0 if pf.d4		 set goal to goal -1 set st2.d9 to st2.d8 - goal message "T-spin" end end if ph.d0 = 2 sound "FX_MTRS2" set goal to goal -3 set st2.d9 to st2.d8 - goal set st0.d1 to st0.d1 + 1 message "Double" set pf.d3 to 0 if pf.d4		 set goal to goal -3 set st2.d9 to st2.d8 - goal message "T-spin" end send "attack1" end if ph.d0 = 3 sound "FX_MTRS3" set goal to goal -5 set st2.d9 to st2.d8 - goal set st0.d2 to st0.d2 + 1 message "Triple" set pf.d3 to 0 send "attack2" end if ph.d0 = 4 sound "FX_MTRS4" if pf.d3		 set goal to goal -4 set st2.d9 to st2.d8 - goal set st0.d9 to st0.d9 + 1 message "B2B Tetris!!!" sound "FX_MTRS5" else set pf.d3 to 1 message "Tetris!" end set goal to goal -8 set st2.d9 to st2.d8 - goal set st0.d3 to st0.d3 + 1 send "attack3" end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	FallSpeed 0.1 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		if goal <= 0 next level if level < 15 sound "FX_LEVEL" message "LEVEL UP!" end end } }

EventScripts {	GameStartScript {		sound "FX_LEVEL" set ghost to 1 set st0.d0 to 0 set st0.d1 to 0 set st0.d2 to 0 set st0.d3 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st0.d9 to 0 set st1.d0 to 0 line color (30,30,30) }	LevelStartScript {		mino intensity high set pf.d3 to 0 set goal to (5*level) set pf.d7 to 0 set pl.d9 to goal set pl.d8 to goal }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "FX_RWD02" else sound "FX_RWD02" end set goal to goal -1 set pf.d4 to 1 set st1.d0 to st1.d0 + 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "FX_RWD02" else sound "FX_RWD02" end set goal to goal -1 set pf.d4 to 1 set st1.d0 to st1.d0 + 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Attack1" TriggerType Manual Script {		set pl.d0 to pl.d0 + 1 mix garbage garbage 1 sound "FX_GAR01" } }

CustomEvent {	Name "Attack2" TriggerType Manual Script {		set pl.d0 to pl.d0 + 2 mix garbage garbage 2 sound "FX_GAR02" } }

CustomEvent {	Name "Attack3" TriggerType Manual Script {		set pl.d0 to pl.d0 + 4 mix garbage garbage 4 sound "FX_GAR03" } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 109 Script {		message "COUNTDOWN!" } }

CustomEvent {	Name "10" TriggerType LevelTime 110 Script {		sound "FX_TIC10" } }

CustomEvent {	Name "9" TriggerType LevelTime 111 Script {		sound "FX_TIC09" } }

CustomEvent {	Name "8" TriggerType LevelTime 112 Script {		sound "FX_TIC08" } }

CustomEvent {	Name "7" TriggerType LevelTime 113 Script {		sound "FX_TIC07" } }

CustomEvent {	Name "6" TriggerType LevelTime 114 Script {		sound "FX_TIC06" } }

CustomEvent {	Name "5" TriggerType LevelTime 115 Script {		sound "FX_TIC05" } }

CustomEvent {	Name "4" TriggerType LevelTime 116 Script {		sound "FX_TIC04" } }

CustomEvent {	Name "3" TriggerType LevelTime 117 Script {		sound "FX_TIC03" } }

CustomEvent {	Name "2" TriggerType LevelTime 118 Script {		sound "FX_TIC02" } }

CustomEvent {	Name "1" TriggerType LevelTime 119 Script {		sound "FX_TIC01" } }

MTNT.TWS
//  FILE: Ultra Sticky Tetris v7.2DP.tws // SOURCE: Ultra Sticky Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:38:32 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Levels RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "T" Tags 0,1 AltMino "L" AltChance 20 }

Mino {	Name "S" Tags 0,2 AltMino "J" AltChance 20 }

Mino {	Name "Z" Tags 0,3 AltMino "O" AltChance 20 }

Mino {	Name "O" Tags 0,4 AltMino "I" AltChance 20 }

Mino {	Name "L" Tags 0,5 AltMino "Z" AltChance 20 }

Mino {	Name "J" Tags 0,6 AltMino "T" AltChance 20 }

Mino {	Name "I" Tags 0,7 AltMino "S" AltChance 20 }

Mino {	Name "special garbage" Antigravity Tags 0,30 }

Mino {	Name "garbage" Antigravity Tags 31 }

Tetramino {	Name "T" NumberInBag 1 ID 1 MinoList {		"T" (0,1) "T" (-1,0) "T" (0,0) "T" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 1 ID 2 MinoList {		"J" (-1,1) "J" (-1,0) "J" (0,0) "J" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 1 ID 3 MinoList {		"L" (1,1) "L" (-1,0) "L" (0,0) "L" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 1 ID 4 MinoList {		"S" (0,1) "S" (1,1) "S" (-1,0) "S" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 1 ID 5 MinoList {		"Z" (-1,1) "Z" (0,1) "Z" (0,0) "Z" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I" (-1,0) "I" (0,0) "I" (1,0) "I" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 1 ID 7 MinoList {		"O" (0,1) "O" (1,1) "O" (0,0) "O" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

GarbageInfo {	NormalMino "garbage" NormalCount pf.d9	SpecialMino "special garbage" SpecialCount pf.d8 }

Shape {	Name "tspin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "tspin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "line clear" Tags 0,1,2,3,4,5,6,7,30,31 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino sound "FX_CLR01" }	PatternEndScript {		set st1.d3 to st1.d3 + 1 } }

Pattern {	Name "Critical Mass Blue" Tags 1 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) } }

Pattern {	Name "Critical Mass Cyan" Tags 2 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) } }

Pattern {	Name "Critical Mass Green" Tags 3 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) } }

Pattern {	Name "Critical Mass Red" Tags 4 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) } }

Pattern {	Name "Critical Mass Maroon" Tags 5 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) } }

Pattern {	Name "Critical Mass Yellow" Tags 6 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) } }

Pattern {	Name "Critical Mass Purple" Tags 7 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed 0.05 EliminateBeginScript {		set ph.d0 to 0 }	LineCollapsedScript {		set ph.d0 to ph.d0 + 1 }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		if ph.d0 > 0 if cascades = 2 set st1.d4 to st1.d4 + 2 end if cascades > 2 set st1.d4 to st1.d4 + 1 end end if ph.d0 >= st1.d6			set st1.d6 to ph.d0		end } }

SolidifyPhase {	IteratorTags 30 MinoIteratorScript {		set ph.d7 to ph.d7+ 1 }	SolidifyEndScript {		If ph.d7 = 0 sound "FX_LEVEL" next level end } }

GravityPhase {	GravityEnabled FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionEndScript {		if cascades > st1.d5			set st1.d5 to cascades end if cascades = 2 message "2 Cascade" line color (109,0,23) sound "FX_MTRS1" end if cascades = 3 message "3 Cascades" line color (39,0,87) sound "FX_MTRS2" end if cascades = 4 message "4 Cascades" line color (39,0,87) sound "FX_MTRS3" end if cascades = 5 message "5 Cascades" line color (116,55,0) sound "FX_MTRS4" end if cascades = 6 message "6 Cascades" line color (116,55,0) sound "FX_MTRS5" end if cascades = 7 message "7 Cascades" line color (0,91,56) sound "FX_MTRS6" end if cascades = 8 message "8 Cascades" line color (0,91,56) sound "FX_MTRS6" end if cascades = 9 message "9 Cascades" line color (118,119,0) sound "FX_MTRS6" end if cascades = 10 message "10 Cascades" line color (118,119,0) sound "FX_MTRS6" end if cascades >= 11 message "Super Cascade!!!" line color (0,36,154) sound "FX_MTRS6" end } }

EventScripts {	GameStartScript {		sound "FX_LEVEL" set ghost to 1 set st1.d3 to 0 set st1.d4 to 0 set st1.d5 to 0 set st1.d6 to 0 set st1.d7 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 line color (30,30,30) }	LevelStartScript {		mino intensity high set pf.d0 to 0 set pf.d8 to 0 set pf.d9 to 5 mixed garbage level set pf.d9 to 0 set pf.d8 to 5 mixed garbage 1 set pf.d7 to 0 }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 109 Script {		message "COUNTDOWN!" } }

CustomEvent {	Name "10" TriggerType LevelTime 110 Script {		sound "FX_TIC10" } }

CustomEvent {	Name "9" TriggerType LevelTime 111 Script {		sound "FX_TIC09" } }

CustomEvent {	Name "8" TriggerType LevelTime 112 Script {		sound "FX_TIC08" } }

CustomEvent {	Name "7" TriggerType LevelTime 113 Script {		sound "FX_TIC07" } }

CustomEvent {	Name "6" TriggerType LevelTime 114 Script {		sound "FX_TIC06" } }

CustomEvent {	Name "5" TriggerType LevelTime 115 Script {		sound "FX_TIC05" } }

CustomEvent {	Name "4" TriggerType LevelTime 116 Script {		sound "FX_TIC04" } }

CustomEvent {	Name "3" TriggerType LevelTime 117 Script {		sound "FX_TIC03" } }

CustomEvent {	Name "2" TriggerType LevelTime 118 Script {		sound "FX_TIC02" } }

CustomEvent {	Name "1" TriggerType LevelTime 119 Script {		sound "FX_TIC01" } }

ORIGINAL.TWS
//  FILE: Original Tetris v7.2DP.tws // SOURCE: Original Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:37:05 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 20 MaxMovementsPerSecond 10 MaxRotationsPerSecond 5 GameType Marathon RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "Brackets" Tags 0,1 }

Tetramino {	Name "T Tetrimino" NumberInBag 1 ID 1 MinoList {		"Brackets" (-1,0) "Brackets" (0,0) "Brackets" (1,0) "Brackets" (0,-1) }	Rot0CWOffsetList (0,0) Rot90CWOffsetList (0,0) Rot180CWOffsetList (0,0) Rot270CWOffsetList (0,0) }

Tetramino {	Name "J Tetrimino" NumberInBag 1 ID 2 MinoList {		"Brackets" (-1,0) "Brackets" (0,0) "Brackets" (1,0) "Brackets" (1,-1) }	Rot0CWOffsetList (0,0) Rot90CWOffsetList (0,0) Rot180CWOffsetList (0,0) Rot270CWOffsetList (0,0) }

Tetramino {	Name "L Tetrimino" NumberInBag 1 ID 3 MinoList {		"Brackets" (-1,0) "Brackets" (0,0) "Brackets" (1,0) "Brackets" (-1,-1) }	Rot0CWOffsetList (0,0) Rot90CWOffsetList (0,0) Rot180CWOffsetList (0,0) Rot270CWOffsetList (0,0) }

Tetramino {	Name "S Tetrimino" NumberInBag 1 ID 4 MinoList {		"Brackets" (0,1) "Brackets" (1,1) "Brackets" (-1,0) "Brackets" (0,0) }	Rot0CWOffsetList (0,1) Rot90CWOffsetList (1,0) Rot180CWOffsetList (0,0) Rot270CWOffsetList (0,0) }

Tetramino {	Name "Z Tetrimino" NumberInBag 1 ID 5 MinoList {		"Brackets" (-1,1) "Brackets" (0,1) "Brackets" (0,0) "Brackets" (1,0) }	Rot0CWOffsetList (0,1) Rot90CWOffsetList (0,0) Rot180CWOffsetList (0,0) Rot270CWOffsetList (-1,0) }

Tetramino {	Name "I Tetrimino" NumberInBag 1 ID 6 MinoList {		"Brackets" (-1,0) "Brackets" (0,0) "Brackets" (1,0) "Brackets" (2,0) }	Rot0CWOffsetList (0,0) Rot90CWOffsetList (0,0) Rot180CWOffsetList (0,0) Rot270CWOffsetList (0,0) }

Tetramino {	Name "O Tetrimino" NumberInBag 1 ID 7 MinoList {		"Brackets" (0,0) "Brackets" (1,0) "Brackets" (0,-1) "Brackets" (1,-1) }	Rot0CWOffsetList (0,0) Rot90CWOffsetList (-1,0) Rot180CWOffsetList (-1,1) Rot270CWOffsetList (0,1) }

Pattern {	Name "Line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime 0.22 - (level-1) *.017 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d0 to 24 + (level -1) * 3 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed 0.22 - (level-1) *.017 SoftDropSpeed 0 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	Duration .5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed 0 LineCollapsedScript {		set ph.d0 to ph.d0 + 1 }	EliminateEndScript {		if ph.d0 = 1 set st0.d0 to st0.d0 + 1 end if ph.d0 = 2 set st0.d1 to st0.d1 + 1 end if ph.d0 = 3 set st0.d2 to st0.d2 + 1 end if ph.d0 = 4 set st0.d3 to st0.d3 + 1 end } }

SolidifyPhase { }

GravityPhase {	FallSpeed 0 }

CompletionPhase {	CompletionBeginScript {		score pf.d0		if lines >= goal next level end }	CompletionEndScript {		set st0.d6 to score } }

EventScripts {	GameStartScript {		set st0.d0 to 0 set st0.d1 to 0 set st0.d2 to 0 set st0.d3 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d6 to 0 set st0.d8 to 0 }	LevelStartScript {		set pf.d3 to 0 set goal to goal + 10 }	LevelEndScript {		if level >= 11 win end }	MoveSuccessfulScript {		set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		set st0.d5 to st0.d5 + 1 }	SoftDropStepScript {		set st0.d5 to st0.d5 + 1 }	FallStepScript {		set pf.d0 to pf.d0 - 1 }	GameSecondScript {		set st0.d8 to game time } }

RIBBON.TWS
////////////////////////////////////////////////////////////////////// // FILE NAME  : TET2001.TWS // AUTHOR     : $Author: Cstewart $ // VERSION    : $Revision: 3 $ // DATE       : $Date: 10/26/01 6:41p $ // DESCRIPTION : Tetris WRATH //              //               // (c) 2000-2001 Blue Planet Software. All rights reserved. //////////////////////////////////////////////////////////////////////

// // Possible solutions // // - piece acceleration // - multicolored pieces // - garbage on sides // - prevent overhangs by 'severing' centre // -

GeneralInfo {	PlayfieldColumns		10 PlayfieldRows			22 MaxMovementsPerSecond	10 MaxRotationsPerSecond	5 GameType				Levels RemoveFromBagAfterUse NextPieceQueueSize		8 }

MinoSticky {	0:	0	1:	1	2:	2	3:	3	4:	4	5:	5	6:	6 }

Mino {	Name	"Blue" Tags	0 }

Mino {	Name	"Turquoise" Tags	1 }

Mino {	Name	"Gray" Tags	2 }

Mino {	Name	"Green" Tags	3 }

Mino {	Name	"Orange" Tags	4 }

Mino {	Name	"Purple" Tags	5 }

Mino {	Name	"Red" Tags	6 }

Tetramino {	Name "T_BLUE" NumberInBag 1 ID 1 MinoList {		"Blue"			(-1,0) "Blue"			(0,0) "Blue"			(1,0) "Blue"			(0,-1) }	Rot0CWOffsetList	(0,0),(-1,0),(1,0),(0,-1) Rot90CWOffsetList	(0,0),(0,1),(0,-1),(-1,0) Rot180CWOffsetList	(0,0),(1,0),(-1,0),(0,1) Rot270CWOffsetList	(0,0),(0,-1),(0,1),(1,0) }

Tetramino {	Name "T_Orange" NumberInBag 1 ID 2 MinoList {		"Orange"			(-1,0) "Orange"			(0,0) "Orange"			(1,0) "Orange"			(0,-1) }	Rot0CWOffsetList	(0,0),(-1,0),(1,0),(0,-1) Rot90CWOffsetList	(0,0),(0,1),(0,-1),(-1,0) Rot180CWOffsetList	(0,0),(1,0),(-1,0),(0,1) Rot270CWOffsetList	(0,0),(0,-1),(0,1),(1,0) }

Tetramino {	Name "T_GRAY" NumberInBag 1 ID 3 MinoList {		"Gray"			(-1,0) "Gray"			(0,0) "Gray"			(1,0) "Gray"			(0,-1) }	Rot0CWOffsetList	(0,0),(-1,0),(1,0),(0,-1) Rot90CWOffsetList	(0,0),(0,1),(0,-1),(-1,0) Rot180CWOffsetList	(0,0),(1,0),(-1,0),(0,1) Rot270CWOffsetList	(0,0),(0,-1),(0,1),(1,0) }

Tetramino {	Name "T_RED" NumberInBag 1 ID 4 MinoList {		"Red"			(-1,0) "Red"			(0,0) "Red"			(1,0) "Red"			(0,-1) }	Rot0CWOffsetList	(0,0),(-1,0),(1,0),(0,-1) Rot90CWOffsetList	(0,0),(0,1),(0,-1),(-1,0) Rot180CWOffsetList	(0,0),(1,0),(-1,0),(0,1) Rot270CWOffsetList	(0,0),(0,-1),(0,1),(1,0) }

Tetramino {	Name "S_BLUE" NumberInBag 1 ID 8 MinoList {		"Blue"		(0,0) "Blue"		(1,0) "Blue"		(-1,-1) "Blue"		(0,-1) }	Rot0CWOffsetList	(0,0),(1,0),(-1,-1),(0,-1) Rot90CWOffsetList	(0,0),(0,-1),(-1,1),(-1,0) Rot180CWOffsetList	(0,0),(-1,0),(1,1),(0,1) Rot270CWOffsetList	(0,0),(0,1),(1,-1),(1,0) }

Tetramino {	Name "S_Orange" NumberInBag 1 ID 9 MinoList {		"Orange"		(0,0) "Orange"		(1,0) "Orange"		(-1,-1) "Orange"		(0,-1) }	Rot0CWOffsetList	(0,0),(1,0),(-1,-1),(0,-1) Rot90CWOffsetList	(0,0),(0,-1),(-1,1),(-1,0) Rot180CWOffsetList	(0,0),(-1,0),(1,1),(0,1) Rot270CWOffsetList	(0,0),(0,1),(1,-1),(1,0) }

Tetramino {	Name "S_GRAY" NumberInBag 1 ID 10 MinoList {		"Gray"		(0,0) "Gray"		(1,0) "Gray"		(-1,-1) "Gray"		(0,-1) }	Rot0CWOffsetList	(0,0),(1,0),(-1,-1),(0,-1) Rot90CWOffsetList	(0,0),(0,-1),(-1,1),(-1,0) Rot180CWOffsetList	(0,0),(-1,0),(1,1),(0,1) Rot270CWOffsetList	(0,0),(0,1),(1,-1),(1,0) }

Tetramino {	Name "S_RED" NumberInBag 1 ID 11 MinoList {		"Red"		(0,0) "Red"		(1,0) "Red"		(-1,-1) "Red"		(0,-1) }	Rot0CWOffsetList	(0,0),(1,0),(-1,-1),(0,-1) Rot90CWOffsetList	(0,0),(0,-1),(-1,1),(-1,0) Rot180CWOffsetList	(0,0),(-1,0),(1,1),(0,1) Rot270CWOffsetList	(0,0),(0,1),(1,-1),(1,0) }

Tetramino {	Name "Z_BLUE" NumberInBag 1 ID 12 MinoList {		"Blue"		(-1,0) "Blue"		(0,0) "Blue"		(0,-1) "Blue"		(1,-1) }	Rot0CWOffsetList	(0,0),(-1,0),(0,-1),(1,-1) Rot90CWOffsetList	(0,0),(0,1),(-1,0),(-1,-1) Rot180CWOffsetList	(0,0),(1,0),(0,1),(-1,1) Rot270CWOffsetList	(0,0),(0,-1),(1,0),(1,1) } Tetramino {	Name "Z_Orange" NumberInBag 1 ID 13 MinoList {		"Orange"		(-1,0) "Orange"		(0,0) "Orange"		(0,-1) "Orange"		(1,-1) }	Rot0CWOffsetList	(0,0),(-1,0),(0,-1),(1,-1) Rot90CWOffsetList	(0,0),(0,1),(-1,0),(-1,-1) Rot180CWOffsetList	(0,0),(1,0),(0,1),(-1,1) Rot270CWOffsetList	(0,0),(0,-1),(1,0),(1,1) } Tetramino {	Name "Z_GRAY" NumberInBag 1 ID 14 MinoList {		"Gray"		(-1,0) "Gray"		(0,0) "Gray"		(0,-1) "Gray"		(1,-1) }	Rot0CWOffsetList	(0,0),(-1,0),(0,-1),(1,-1) Rot90CWOffsetList	(0,0),(0,1),(-1,0),(-1,-1) Rot180CWOffsetList	(0,0),(1,0),(0,1),(-1,1) Rot270CWOffsetList	(0,0),(0,-1),(1,0),(1,1) }

Tetramino {	Name "Z_RED" NumberInBag 1 ID 15 MinoList {		"Red"		(-1,0) "Red"		(0,0) "Red"		(0,-1) "Red"		(1,-1) }	Rot0CWOffsetList	(0,0),(-1,0),(0,-1),(1,-1) Rot90CWOffsetList	(0,0),(0,1),(-1,0),(-1,-1) Rot180CWOffsetList	(0,0),(1,0),(0,1),(-1,1) Rot270CWOffsetList	(0,0),(0,-1),(1,0),(1,1) }

Tetramino {	Name "L_Blue" NumberInBag 1 ID 16 MinoList {		"Blue"	(0,1) "Blue"	(0,0) "Blue"	(0,-1) "Blue"	(1,-1) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(1,-1) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-1,-1) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(-1,1) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(1,1) } Tetramino {	Name "L_Orange" NumberInBag 1 ID 17 MinoList {		"Orange"	(0,1) "Orange"	(0,0) "Orange"	(0,-1) "Orange"	(1,-1) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(1,-1) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-1,-1) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(-1,1) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(1,1) } Tetramino {	Name "L_Gray" NumberInBag 1 ID 18 MinoList {		"Gray"	(0,1) "Gray"	(0,0) "Gray"	(0,-1) "Gray"	(1,-1) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(1,-1) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-1,-1) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(-1,1) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(1,1) } Tetramino {	Name "L_RED" NumberInBag 1 ID 19 MinoList {		"Red"	(0,1) "Red"	(0,0) "Red"	(0,-1) "Red"	(1,-1) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(1,-1) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-1,-1) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(-1,1) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(1,1) }

Tetramino {	Name "J_BLUE" NumberInBag 1 ID 20 MinoList {		"Blue"	(0,1) "Blue"	(0,0) "Blue"	(0,-1) "Blue"	(-1,-1) }	Rot0CWOffsetList	(0,0),(0,1),(-1,-1),(0,-1) Rot90CWOffsetList	(0,0),(1,0),(-1,1),(-1,0) Rot180CWOffsetList	(0,0),(0,-1),(1,1),(0,1) Rot270CWOffsetList	(0,0),(-1,0),(1,-1),(1,0) } Tetramino {	Name "J_Orange" NumberInBag 1 ID 21 MinoList {		"Orange"	(0,1) "Orange"	(0,0) "Orange"	(0,-1) "Orange"	(-1,-1) }	Rot0CWOffsetList	(0,0),(0,1),(-1,-1),(0,-1) Rot90CWOffsetList	(0,0),(1,0),(-1,1),(-1,0) Rot180CWOffsetList	(0,0),(0,-1),(1,1),(0,1) Rot270CWOffsetList	(0,0),(-1,0),(1,-1),(1,0) } Tetramino {	Name "J_Gray" NumberInBag 1 ID 22 MinoList {		"Gray"	(0,1) "Gray"	(0,0) "Gray"	(0,-1) "Gray"	(-1,-1) }	Rot0CWOffsetList	(0,0),(0,1),(-1,-1),(0,-1) Rot90CWOffsetList	(0,0),(1,0),(-1,1),(-1,0) Rot180CWOffsetList	(0,0),(0,-1),(1,1),(0,1) Rot270CWOffsetList	(0,0),(-1,0),(1,-1),(1,0) } Tetramino {	Name "J_RED" NumberInBag 1 ID 23 MinoList {		"Red"	(0,1) "Red"	(0,0) "Red"	(0,-1) "Red"	(-1,-1) }	Rot0CWOffsetList	(0,0),(0,1),(-1,-1),(0,-1) Rot90CWOffsetList	(0,0),(1,0),(-1,1),(-1,0) Rot180CWOffsetList	(0,0),(0,-1),(1,1),(0,1) Rot270CWOffsetList	(0,0),(-1,0),(1,-1),(1,0) }

Tetramino {	Name "O_BLUE" NumberInBag 1 ID 24 MinoList {		"Blue"		(0,0) "Blue"		(1,0) "Blue"		(0,-1) "Blue"		(1,-1) }	Rot0CWOffsetList	(0,0) Rot90CWOffsetList	(-1,0) Rot180CWOffsetList	(-1,1) Rot270CWOffsetList	(0,1) } Tetramino {	Name "O_Orange" NumberInBag 1 ID 25 MinoList {		"Orange"		(0,0) "Orange"		(1,0) "Orange"		(0,-1) "Orange"		(1,-1) }	Rot0CWOffsetList	(0,0) Rot90CWOffsetList	(-1,0) Rot180CWOffsetList	(-1,1) Rot270CWOffsetList	(0,1) } Tetramino {	Name "O_Gray" NumberInBag 1 ID 26 MinoList {		"Gray"		(0,0) "Gray"		(1,0) "Gray"		(0,-1) "Gray"		(1,-1) }	Rot0CWOffsetList	(0,0) Rot90CWOffsetList	(-1,0) Rot180CWOffsetList	(-1,1) Rot270CWOffsetList	(0,1) }

Tetramino {	Name "O_Red" NumberInBag 1 ID 27 MinoList {		"Red"		(0,0) "Red"		(1,0) "Red"		(0,-1) "Red"		(1,-1) }	Rot0CWOffsetList	(0,0) Rot90CWOffsetList	(-1,0) Rot180CWOffsetList	(-1,1) Rot270CWOffsetList	(0,1) }

Tetramino {	Name "I_Blue" NumberInBag 1 ID 28 MinoList {		"Blue"	(0,1) "Blue"	(0,0) "Blue"	(0,-1) "Blue"	(0,-2) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(0,-2) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-2,0) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(0,2) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(2,0) } Tetramino {	Name "I_Orange" NumberInBag 1 ID 29 MinoList {		"Orange"	(0,1) "Orange"	(0,0) "Orange"	(0,-1) "Orange"	(0,-2) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(0,-2) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-2,0) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(0,2) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(2,0) } Tetramino {	Name "I_Gray" NumberInBag 1 ID 30 MinoList {		"Gray"	(0,1) "Gray"	(0,0) "Gray"	(0,-1) "Gray"	(0,-2) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(0,-2) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-2,0) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(0,2) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(2,0) } Tetramino {	Name "I_RED" NumberInBag 1 ID 31 MinoList {		"Red"	(0,1) "Red"	(0,0) "Red"	(0,-1) "Red"	(0,-2) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(0,-2) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-2,0) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(0,2) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(2,0) }

Pattern {	Name			"BlueClear" Tags			0 Method			Search SearchType		Ribbon SearchCount		3 PatternMinoScript {		* Patterns: line clear: Mino kill mino } }

Pattern {	Name			"OrangeClear" Tags			4 Method			Search SearchType		Ribbon SearchCount		3 PatternMinoScript {		* Patterns: line clear: Mino kill mino } }

Pattern {	Name			"GrayClear" Tags			2 Method			Search SearchType		Ribbon SearchCount		3 PatternMinoScript {		* Patterns: line clear: Mino kill mino } }

Pattern {	Name			"RedClear" Tags			6 Method			Search SearchType		Ribbon SearchCount		3 PatternMinoScript {		* Patterns: line clear: Mino kill mino } }

Pattern {	Name			"GoalClear" Tags			1 Method			Search SearchType		FloodFill4D SearchCount		12 PatternMinoScript {		* Patterns: line clear: Mino kill mino set pl.d9 to 1 } }

Trash {	Name	"OneTrash" Height	5 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Red" (0,1) "Red" (0,2) "Red" (0,3)

"Turquoise" (0,4) "Turquoise" (9,1)

} }

Trash {	Name	"TwoTrash" Height	5 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Blue" (9,1) "Blue" (9,2) "Blue" (9,3)

"Turquoise" (0,1) "Turquoise" (9,4)

} }

Trash {	Name	"ThreeTrash" Height	4 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Orange" (0,1) "Orange" (0,2) "Orange" (9,1) "Orange" (9,2)

"Turquoise" (0,3) "Turquoise" (9,3)

} }

Trash {	Name	"FourTrash" Height	4 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Gray" (0,1) "Gray" (0,2) "Blue" (9,1) "Blue" (9,2)

"Turquoise" (0,3) "Turquoise" (9,3)

} }

Trash {	Name	"FiveTrash" Height	5 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Red" (0,1) "Red" (0,2) "Orange" (0,3) "Orange" (0,4)

"Red" (9,1) "Red" (9,2) "Orange" (9,3) "Orange" (9,4)

"Turquoise" (0,4) "Turquoise" (9,4)

} }

Trash {	Name	"SixTrash" Height	3 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Blue" (0,1) "Gray" (0,2)

"Gray" (9,1) "Blue" (9,2)

"Turquoise" (0,3) "Turquoise" (9,3)

} }

Trash {	Name	"SevenTrash" Height	4 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Orange" (0,1) "Red"  (0,2)

"Red" (9,1) "Gray" (9,2)

"Turquoise" (0,3) "Turquoise" (9,3)

} }

Trash {	Name	"EightTrash" Height	5 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Gray" (0,1) "Orange" (0,2) "Gray" (0,3)

"Orange" (9,1) "Gray" (9,2) "Orange" (9,3)

"Turquoise" (0,4) "Turquoise" (9,4)

} }

Trash {	Name	"NineTrash" Height	5 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Red" (0,1) "Orange" (0,2) "Orange" (0,3)

"Gray" (9,1) "Blue" (9,2) "Red" (9,3)

"Turquoise" (0,4) "Turquoise" (9,4)

} }

Trash {	Name	"TenTrash" Height	5 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Red" (0,1) "Gray" (0,2) "Orange" (0,3)

"Orange" (9,1) "Blue" (9,2) "Red"  (9,3)

"Turquoise" (0,4) "Turquoise" (9,4)

} }

Trash {	Name	"ElevenTrash" Height	6 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Gray" (0,1) "Orange" (0,2) "Orange" (0,3) "Red" (0,4)

"Orange" (9,1) "Blue" (9,2) "Red"  (9,3) "Gray"  (9,4)

"Turquoise" (0,5) "Turquoise" (9,5)

} }

Trash {	Name	"TwelveTrash" Height	6 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Red" (0,1) "Gray" (0,2) "Orange" (0,3) "Red" (0,4)

"Gray" (9,1) "Blue" (9,2) "Orange"  (9,3) "Red"  (9,4)

"Turquoise" (0,5) "Turquoise" (9,5)

} }

Trash {	Name	"ThirteenTrash" Height	6 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Blue" (0,1) "Orange" (0,2) "Gray" (0,3) "Red" (0,4)

"Gray" (9,1) "Blue" (9,2) "Orange"  (9,3) "Red"  (9,4)

"Turquoise" (0,5) "Turquoise" (9,5)

} }

Trash {	Name	"FourteenTrash" Height	7 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Blue" (0,1) "Red" (0,2) "Blue" (0,3) "Orange" (0,4) "Gray" (0,5)

"Orange" (9,1) "Red" (9,2) "Gray"  (9,3) "Gray"  (9,4) "Blue"  (9,5)

"Turquoise" (0,6) "Turquoise" (9,6)

} }

Trash {	Name	"FifteenTrash" Height	7 MinoList {		"Turquoise" (0,0) "Turquoise" (1,0) "Turquoise" (2,0) "Turquoise" (3,0) "Turquoise" (4,0) "Turquoise" (5,0) "Turquoise" (6,0) "Turquoise" (7,0) "Turquoise" (8,0) "Turquoise" (9,0)

"Gray" (0,1) "Orange" (0,2) "Red" (0,3) "Blue" (0,4) "Gray" (0,5)

"Blue" (9,1) "Orange" (9,2) "Red"  (9,3) "Gray"  (9,4) "Blue"  (9,5)

"Turquoise" (0,6) "Turquoise" (9,6)

} }

Level {	Name "Level #1" LevelTrash "OneTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #2" LevelTrash "TwoTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #3" LevelTrash "ThreeTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #4" LevelTrash "FourTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #5" LevelTrash "FiveTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #6" LevelTrash "SixTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #7" LevelTrash "SevenTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #8" LevelTrash "EightTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #9" LevelTrash "NineTrash" LevelEndScript {		sound "EVOLMT09" } }

Level {	Name "Level #10" LevelTrash "TenTrash" LevelEndScript {		sound "EVOLMT10" } }

Level {	Name "Level #11" LevelTrash "ElevenTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #12" LevelTrash "TwelveTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #13" LevelTrash "ThirteenTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #14" LevelTrash "FourteenTrash" LevelEndScript {		sound "EVOLMT01" } }

Level {	Name "Level #15" LevelTrash "FifteenTrash" LevelEndScript {		sound "EVOLMT01" } }

GenerationPhase {	GenerationTime			0.0 PieceStartingLocation	(4,0) GenerationBeginScript {		* Phase: Generation Begin

set pf.d3 to 0

set pf.d6 to pf.d9 * 120 / level time

if pf.d6 > pf.d5		 set pf.d5 to pf.d6		end

if pf.d5 > pf.d4		 set pf.d4 to pf.d5		  set pf.d3 to 1 end

} }

FallingPhase {	FallSpeed		1/(pf.d9/10 + 1) - 1/15 SoftDropSpeed	0.05 HardDropSpeed	0.0001 MoveTolerance	0.2 }

LockPhase {	MovementRestartsClock Duration		0.5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed		0.05 EliminateBeginScript {		* Phase: Eliminate Begin

* Reset the line clear counter for this phase

set phase.d0 to 0

* Reset level win script

* set pl.d9 to 0 }	LineCollapsedScript {		* Phase: Eliminate Line Collapsed

* "Clear line" counter for this phase set phase.d0 to phase.d0 + 1 }	EliminateEndScript {		* Phase: Eliminate End

* if you find a single, add it to the score and flag single

if phase.d0 = 1 set pf.d9 to pf.d9 + 1 set pf.d0 to pf.d8 - pf.d9		 set pl.d5 to 1 sound "FX_LNE01" mino mood 2 end

* if you find a double, add it to the score and flag double

if phase.d0 = 2 set pf.d9 to pf.d9 + 1 set pf.d0 to pf.d8 - pf.d9		 set pl.d5 to 1 sound "FX_LNE02" mino mood 3 end

* if you find a triple, add it to the score and flag triple

if phase.d0 = 3 set pf.d9 to pf.d9 + 1 set pf.d0 to pf.d8 - pf.d9		 set pl.d5 to 1 sound "FX_LNE03" mino mood 5 end

* if you find a tetris, add it to the score and flag tetris

if phase.d0 = 4 set pf.d9 to pf.d9 + 8 set pf.d9 to pf.d9 + pl.d5 - 1 set pf.d0 to pf.d8 - pf.d9		 sound "FX_MTRIS" sound "FX_LNE04" set pl.d5 to pl.d5 * 2 mino mood 5 end

* check if reached goal conditions

if pl.d9 = 1 set pl.d9 to 0 mino mood 5 next level end

} }

SolidifyPhase { }

GravityPhase {	// Gravity is enabled GravityEnabled FallSpeed		0.1 }

CompletionPhase { }

EventScripts {	GameStartScript {		* Game Events: Game Start

set pf.d4 to 30 }

LevelStartScript {		* Level Scripts: Level Start

sound "TWM_BGIN"

* set ghost to 1 score 0 set pf.d9 to 0 set pf.d8 to level * 5 set pf.d0 to pf.d8		set pf.d6 to 0 set pf.d5 to 0

* if level is less than three say "go for a tetris" * else just play the one minute music if level < 3 set pl.d0 to 115 else set pl.d0 to 60 end

set pl.d5 to 1

mino intensity high }

LevelEndScript {		* Level Scripts: Level End

sound "TWM_END" }

PieceGenerationScript {		* Generation: Generated

set pf.d2 to 0

set pl.d6 to 0.1 }

MoveSuccessfulScript {		* Move: Success

* This clears the rotate flag.

set pf.d1 to 0

sound "FX_SLDEL"

}

MoveFailedScript {		* Move: Fail

sound "FX_UNMVE" }

RotateSuccessfulScript {		* Rotate: Success

* This sets the rotate flag.

set pf.d1 to 1

sound "FX_RTATL" }

RotateFailedScript {		* Rotate: Fail

sound "FX_UNMVE" }

HardDropStartScript {		* Hard Drop: Start

set pf.d2 to 9 }

HardDropStepScript {		* Hard Drop: Step

* This clears the rotate flag.

set pf.d1 to 0 }

SoftDropStepScript {		* Soft Drop: Step

* This clears the rotate flag.

set pf.d1 to 0

sound "FX_SFTDP" }

FallStepScript {		* Fall: Step

* This clears the rotate flag.

set pf.d1 to 0

sound "FX_FALL" }

TouchdownScript {		* Touch: Touchdown

* Clear the rotate flag (pf.d1)

set pf.d1 to 0

}

LockdownScript {		* Touch: Lock

* Checks for a spin.

if pf.d2 = 1 & pf.d1 = 1 set pf.d7 to 1 * add a 1 bonus for a t-spin set pf.d9 to pf.d9 + 1 set pf.d0 to pf.d8 - pf.d9		 sound "VO_TSPIN" end

if pf.d2 = 9 sound "FX_HRDDP" else sound "FX_LOCK" end }

LevelSecondScript {		* Time Events: Level Second

if level time >= 3 & phase.d0 = 115 sound "VO_INT01" set player.d0 to 60 end

if level time >= 60 & player.d0 = 60 sound "TWM_MIDL" set player.d0 to 30 mino intensity high end

if level time >= 90 & player.d0 = 30 sound "VO_30TIC" set player.d0 to 20 end

if level time >= 100 & player.d0 = 20 sound "VO_20TIC" set player.d0 to 10 mino intensity high end

if level time >= 290 & player.d0 = 10 sound "VO_10TIC" set player.d0 to 9 end

if level time >= 291 & player.d0 = 9 sound "VO_09TIC" set player.d0 to 8 end

if level time >= 292 & player.d0 = 8 sound "VO_08TIC" set player.d0 to 7 end

if level time >= 293 & player.d0 = 7 sound "VO_07TIC" set player.d0 to 6 end

if level time >= 294 & player.d0 = 6 sound "VO_06TIC" set player.d0 to 5 end

if level time >= 295 & player.d0 = 5 sound "VO_05TIC" set player.d0 to 4 end

if level time >= 296 & player.d0 = 4 sound "VO_04TIC" set player.d0 to 3 end

if level time >= 297 & player.d0 = 3 sound "VO_03TIC" set player.d0 to 2 end

if level time >= 298 & player.d0 = 2 sound "VO_02TIC" set player.d0 to 1 end

if level time >= 299 & player.d0 = 1 sound "VO_01TIC" set player.d0 to 0 end

if level time >= 300 & player.d0 = 0 sound "VO_TIME" * CJG change: game does not stop running upon loss, gotta do this to kill the VO. set player.d0 to -1 lose end } }

SAMPLE.TWS
////////////////////////////////////////////////////////////////////// // FILE NAME  : SAMPLE.TWS // AUTHOR     : Chris J. Gullette // VERSION    : $Revision: 15 $ // DATE       : $Date: 8/23/01 7:01p $ // DESCRIPTION : This is a sample TWS (Tetris Worlds Script) game //              definition file. Note that each section is heavily //              commented, and all sections must appear in the order //              given in this file. //              //               // (c) 2000-2001 Blue Planet Software. All rights reserved. //////////////////////////////////////////////////////////////////////

// As the name implies, this section contains general information about the game and is mandatory. GeneralInfo {	PlayfieldColumns		10		// range 1-32 columns PlayfieldRows			20		// range 1-48 rows MaxMovementsPerSecond	10		// How many times can a Tetrimino move per second? Integer only! MaxRotationsPerSecond	5		// How many times can a Tetrimino rotate per second? Integer only! GameType				Levels	// Game type can be Marathon or Levels RemoveFromBagAfterUse			// OPTIONAL: Set this flag to remove a Tetrimino from the "bag" after // it has been used. When the bag count for all Tetriminos reaches // zero, they will be reset to their starting values. NextPieceQueueSize		8		// How large is the next piece queue? }

// The MinoSticky section defines which mino tags stick to each other. Note that this defines // LOGICAL stickiness. The TWS format does not currently support visual stickiness, this may be // added later. This section is mandatory. MinoSticky {	NotStickyBetweenPieces		// OPTIONAL: This flag prevents stickiness between tetriminos. 0:	0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15	1:	1	2:	2,3,4,5	3:	3	4:	4,5	5:	5	6:	6	7:	7	8:	8	9:	9	10:	10	11:	11	12:	12	13:	13	14:	14	15:	15 }

// The Mino section defines each mino type. At least one Mino is required, but you // may define any number as long as each has a Name unique among Minos. Mino {	Name		"Mino0"		// Name can be any string, should be unique Antigravity				// OPTIONAL: Set this flag to turn gravity off for this mino type. Tags		0			// The mino ID number ("tags") can be 0-31. Multiple tags can be used // in the same Mino definition. AltMino		"Mino1"		// OPTIONAL: Each mino can have an alternate mino type. AltChance	50			// OPTIONAL: If AltMino is defined, you must also define a % chance from 0-50. MutateMino	"Mino1"		// OPTIONAL: Each mino can have a "mutate" mino type, switched by the "mutate							// mino" script command. D0	20					// OPTIONAL: Datafields D0-D9 can be any integer (0 by default) D1	50 D2	70 D3	25 D6	15 D7	100 }

Mino {	Name "Mino1" Tags	1,2,3 D1	50 D4	75 }

// The Tetramino section defines a single tetramino type. At least one Tetramino is required, // but you may define any number as long as each has a Name unique among Tetraminos. Tetramino {	Name "Tetramino0"	// Name can be any string, must be unique. NumberInBag	20		// Number in bag defines probability of appearance, range 0-25. ID 0				// This value is returned by the PIECE.ID property.

// List each mino by name with its location on the 7x7 grid. // The center square of the grid is (0,0) by definition. MinoList {		"Mino0" (0,0) "Mino0" (0,1) "Mino0" (0,2) "Mino1" (1,2) }	Rot0CWOffsetList		(0,0)			// List offsets for 0 degree CW rotation Rot90CWOffsetList		(0,0)			// List offsets for 90 degree CW rotation Rot180CWOffsetList		(0,0),(1,1)		// List offsets for 180 degree CW rotation Rot270CWOffsetList		(0,0)			// List offsets for 270 degree CW rotation }

// The GarbageInfo section defines both normal and special garbage. This section is OPTIONAL. GarbageInfo {	NormalMino		"Mino0"			// Which Mino is used for normal garbage? NormalCount		7				// How many Minos for a row of normal garbage? Expression OK. SpecialMino		"Mino1"			// Which Mino is used for special garbage? SpecialCount	pf.d8			// How many Minos for a row of special garbage? Expression OK. }

// A Sequence section defines a single sequence of Tetraminos. Sequences are OPTIONAL, // but you may define any number as long as each has a Name unique among Sequences. Sequence {	Name			"Sequence0"								// Name of the sequence. TetraminoList	"Tetramino0","Tetramino0","Tetramino0"	// A list of Tetramino names. }

// A Shape section contains a user-defined shape, up to 16x16 in size. Shapes are OPTIONAL, // but you may define any number as long as each has a Name unique among Shapes. Note that // the points in a Shape are in a 16x16 grid where the lower left corner of the grid is (0,0) // and the upper right is (15,15). Shape {	Name		"Shape0"				// Name of the shape, any string. Hotspot		(7,7)					// Location of the shape hotspot (which is not part of the										// shape unless included in the ShapeCoords list). ShapeCoords	(7,7),(8,7),(9,7),(9,8)	// ShapeCoords contains a list of x,y coordinates for each // mino in a shape. }

// A Pattern section is used to define a matchable pattern based on either pre-defined search // types or user-defined shapes. Examples for each follow. You must have at least one Pattern, // but you may define as many as you like as long as each has a Name unique among Patterns. Also // note that you should not use Search-specific fields in a Shape-based Pattern, and vice versa. Pattern		// Search pattern {	Name				"Pattern0"		// Name of the pattern, any string. Triggered							// OPTIONAL: Patterns execute automatically during the // Pattern phase by default. Set this flag if the Pattern // should only execute when triggered by a run-time script. Tags				0,1,2,3			// OPTIONAL: Which Mino tags can match in this pattern? If // this list is not present, all tags can match this pattern. // If "Tags" is present, you must list at least one tag value. Method				Search			// For a search pattern, set Method to Search. SearchType			Horizontal		// SEARCH-SPECIFIC: SearchType can be Horizontal, Vertical, // DiagNESW, DiagNWSE, Square, FloodFill4D, FloodFill8D, or // Ribbon. SearchCount			10				// SEARCH-SPECIFIC: Defines the minimum number of Minos required // for a successful match. Any expression is OK. PatternPieceCount	5				// OPTIONAL: PatternPieceCount must be a positive integer. When // a potential match is found, the number of unique piece IDs // in that pattern is counted. If it matches this number, then // (and only then) the pattern is a match. PatternBeginScript	{}				// OPTIONAL: This script runs when a pattern is matched. PatternMinoScript	{}				// OPTIONAL: This script runs on each Mino after the BeginScript. PatternEndScript	{}				// OPTIONAL: This script runs after all MinoScripts have finished. }

// This is an example of a shape pattern. Note: no "Triggered" keyword means automatic execution, // and no "Tags" list means ALL tags may be part of this pattern. Pattern {	Name				"Pattern1" Method				Shape			// For a shape pattern, set Method to Shape. ShapeName			"Shape0"		// SHAPE-SPECIFIC: What Shape should be used for this pattern? PatternPieceCount	3				// OPTIONAL PatternBeginScript	{}				// OPTIONAL PatternMinoScript	{}				// OPTIONAL PatternEndScript	{}				// OPTIONAL }

// A Trash section contains an instance of user-defined trash. Trash is OPTIONAL, but you may define // any number of Trash sections as long as each has a name unique among Trash. Trash {	Name	"Trash0"					// The name of this Trash, any string. Height	2							// How tall is the trash? Must be an integer > 0. MinoList							// A list of minos in the trash. We need coords and type. {									// For each coordinate pair, X < Height (trash height) and "Mino0" (0,0)					// Y < well width. "Mino0" (0,1) "Mino0" (0,2) "Mino1" (1,2) } }

// A Level section contains script and trash info for a single level. Levels are OPTIONAL, but you // may define any number of them as long as each has a unique Name among Levels. Note that Levels // will be used in the order that you define them here, no matter what the name. Level {	Name				"Level #1"	// The name of this Level, any string. LevelTrash			"Trash0"	// OPTIONAL: What Trash should be inserted at level start? LevelStartScript	{}			// OPTIONAL: Execute this script at level start. LevelEndScript		{}			// OPTIONAL: Execute this script at level end. }

// All info for the Generation Phase. Mandatory, only one instance of this section. GenerationPhase {	GenerationTime			1		// Generation time in seconds, expression OK. PieceStartingLocation	(0,0)	// Where is a new piece placed on the playfield? GenerationBeginScript	{}		// OPTIONAL: Begin phase script. GenerationEndScript		{}		// OPTIONAL: End phase script. }

// All info for the Falling Phase. Mandatory, only one instance of this section. FallingPhase {	PiecesFallSmoothly				// OPTIONAL: If set, pieces fall smoothly (visually). FallSpeed				1		// Normal fall speed in sec/line, expression OK	SoftDropSpeed			1		// Soft drop speed in sec/line, expression OK	HardDropSpeed			1		// Hard drop speed in sec/line, expression OK MoveTolerance			0		// Expression OK, not currently in use! FallingBeginScript		{}		// OPTIONAL: Begin phase script. FallingEndScript		{}		// OPTIONAL: End phase script. }

// All info for the Lock Phase. Mandatory, only one instance of this section. LockPhase {	MovementRestartsClock			// OPTIONAL: Set this flag to restart the lock phase // if the active piece moves. Duration				5		// Seconds before lockdown occurs, expression OK LockBeginScript			{}		// OPTIONAL: Begin phase script. LockEndScript			{}		// OPTIONAL: End phase script. }

// All info for the Pattern Phase. Mandatory, only one instance of this section. PatternPhase {	PatternBeginScript		{}		// OPTIONAL: Begin phase script. PatternEndScript		{}		// OPTIONAL: End phase script. }

// All info for the Iterate Phase. Mandatory, only one instance of this section. IteratePhase {	IterateBeginScript		{}		// OPTIONAL: Begin phase script. PrimaryIterator					// OPTIONAL: Defines the primary iterator. {		IteratorExpression	pf.d1	// OPTIONAL: If this expression exists, it must evaluate // to non-zero in order to execute this iterator. IteratorTags		0,1,2,3	// OPTIONAL: Only Minos that match this tag list are iterated. MinoIteratorScript	{}		// The iteration script run for each matching Mino. }	SecondaryIterator				// OPTIONAL: Defines the secondary iterator. {		IteratorExpression	3 IteratorTags		0,1,2,3 MinoIteratorScript	{} }	IterateEndScript		{}		// OPTIONAL: End phase script. }

// All info for the Eliminate Phase. Mandatory, only one instance of this section. EliminatePhase {	FallSpeed				1		// Seconds per line, expression OK DontCollapseEmptyLines			// OPTIONAL: If this tag is set, empty lines will not be collapsed. EliminateBeginScript	{}		// OPTIONAL: Begin phase script. LineCollapsedScript		{}		// OPTIONAL: Execute this script after a line is collapsed. StartFallingScript		{}		// OPTIONAL: Executed when pieces start falling due to a line collapse. GroupLandedScript		{}		// OPTIONAL: Fired when a group of pieces lands. EliminateEndScript		{}		// OPTIONAL: End phase script. }

// All info for the Solidify Phase. Mandatory, only one instance of this section. SolidifyPhase {	IteratorTags			0,1,2	// OPTIONAL: The MinoIteratorScript will be executed for each mino // with a tag that is in this list. If you leave out IteratorTags, // the script will be run on ALL minos. SolidifyBeginScript		{}		// OPTIONAL: Begin phase script. MinoIteratorScript		{}		// OPTIONAL: This script is run on each Mino that matches the // IteratorTags (or all Minos if IteratorTags does not exist). SolidifyEndScript		{}		// OPTIONAL: End phase script. }

// All info for the Gravity Phase. Mandatory, only one instance of this section. GravityPhase {	GravityEnabled					// OPTIONAL: Set this flag to turn gravity on by default. FallSpeed				1.0		// Seconds per line, expression OK. GravityBeginScript		{}		// OPTIONAL: Begin phase script. GroupLandedScript		{}		// OPTIONAL: Fired when a group of pieces lands. GravityEndScript		{}		// OPTIONAL: End phase script. }

// All info for the Completion Phase. Mandatory, only one instance of this section. CompletionPhase {	CompletionBeginScript	{}		// OPTIONAL: Begin phase script. CompletionEndScript		{}		// OPTIONAL: End phase script. }

// This section contains a number of scripts that are executed when certain events occur on the // active piece. All scripts are optional (though the EventScripts section itself is not), and // scripts may appear in any order within the section. The name of each script should be self- // explanatory. EventScripts {	GameStartScript			{} MinosPushedOffTopScript	{} LevelStartScript		{} LevelEndScript			{} PieceGenerationScript	{} MoveSuccessfulScript	{} MoveFailedScript		{} RotateSuccessfulScript	{} RotateFailedScript		{} HardDropStartScript		{} HardDropStepScript		{} SoftDropStartScript		{} SoftDropStepScript		{} FallStepScript			{} TouchdownScript			{} LockdownScript			{} GameSecondScript		{} LevelSecondScript {		* this is a comment

score level+5 kill mino

if playfield.d1 = 0 if phase.d1 = 2 exit end next level game win reset bag "tetramino0" end

set playfield.d2 to phase.d0

if phase.d0 = 1 score level+2 game lose else set phase.d0 to phase.d0 + 1 kill mino set bag "tetramino0" to 0 set playfield.d0 to playfield.d0 + 1 end

reset bag "tetramino0" send "BigGarbage" game win }

// I've used the last script to show you what a run-time script looks like. This isn't a	// real script that you would use, and it probably doesn't do anything useful, it just shows // script syntax. For a complete listing of all commands that are available, start with the // Tetrion Editor documentation. Note the following differences apply when writing run-time // scripts in the TWS format: //	// - All strings (e.g. names) must be quoted. // - C++ style comments (such as this one) or *-type comments may be used anywhere in the file, //  not just within run-time scripts. // - All run-time script commands as listed in version 2.0d58 (4/27/01) of the Editor document //  have been implemented with the following exceptions: HEIGHT, TOUCH, PHASE TIME, ITERATE, //  MINO.MARK, MINO.MARK2, MINO.FRESH, MINO.ID, SET MINO USING STICKY, SET MINO USING "shape", //  KILL MINO USING STICKY, KILL MINO USING "shape", MARK MINO USING STICKY, MARK MINO USING //  "shape", MARK MINO2 USING STICKY, MARK MINO2 USING "shape", SET BAG, RESET BAG. I will //  implement these as time permits and on an as-needed basis. // - I have added the following run-time script commands to the TWS format: //    stop sound "name"	-	If the named sound is playing, this command stops it. //    stop all sounds		-	Stop all currently playing sounds. //    preload sound "name"	-	Preload the named sound, but don't start playing it. //    unload sound "name"	-	Unload the named sound, let it finish playing if needed. //    unload all sounds	-	Unload all preloaded sounds. //    mino mood 		-	Set the mino character mood to the value of the expression. //    mino intensity X		-	Set the mino character intensity to X ("low", "medium" or "high"). //    trace "string"		-	Print any string to the debug output. //    trace "string"	-	Print the value of the given expression, followed by the string, //								to debug output. }

// The CustomEvent section contains (you guessed it) a custom game event. This section is OPTIONAL, // but you may define as many custom events as you like, provided each has a name unique among custom // events. CustomEvent {	Name		"BigGarbage"			// What is the name of the custom event? TriggerType	GameTime	30			// Custom events can be triggered in three ways: // Manual - fires by manual trigger only // GameTime - fires once when the game time equals the expression // LevelTime - fires once when the level time equals the expression Script								// This is the script triggered when the event occurs. {		mix garbage 3*level } }

SQUARE.TWS
//  FILE: Square Tetris v7.2DP.tws // SOURCE: Square Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:37:16 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Marathon NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 0: 0	1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7	31: 31 }

Mino {	Name "J color" Tags 0 MutateMino "Result J color" }

Mino {	Name "L color" Tags 1 MutateMino "Result L color" }

Mino {	Name "S color" Tags 2 MutateMino "Result S color" }

Mino {	Name "Z color" Tags 3 MutateMino "Result Z color" }

Mino {	Name "O color" Tags 4 MutateMino "Result O color" }

Mino {	Name "T color" Tags 5 MutateMino "Result T color" }

Mino {	Name "I color" Tags 6 MutateMino "Result I color" }

Mino {	Name "Pure Square" Tags 31 MutateMino "Result Pure Square" D9 2.5 }

Mino {	Name "Combo Square" Tags 31 MutateMino "Result Combo Square" D9 1.25 }

Mino {	Name "Result J color" Tags 24 }

Mino {	Name "Result L color" Tags 25 }

Mino {	Name "Result S color" Tags 26 }

Mino {	Name "Result Z color" Tags 27 }

Mino {	Name "Result O color" Tags 28 }

Mino {	Name "Result T color" Tags 29 }

Mino {	Name "Result I color" Tags 30 }

Mino {	Name "Result Pure Square" Tags 23 }

Mino {	Name "Result Combo Square" Tags 22 }

Mino {	Name "Garbage" Antigravity Tags 20 }

Tetramino {	Name "J Tetrimino" NumberInBag 3 ID 1 MinoList {		"J color" (-1,1) "J color" (-1,0) "J color" (0,0) "J color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I Tetrimino" NumberInBag 3 ID 2 MinoList {		"I color" (-1,0) "I color" (0,0) "I color" (1,0) "I color" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O Tetrimino" NumberInBag 3 ID 3 MinoList {		"O color" (-1,1) "O color" (0,1) "O color" (-1,0) "O color" (0,0) }	Rot0CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) Rot90CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot180CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot270CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) }

Tetramino {	Name "S Tetrimino" NumberInBag 2 ID 4 MinoList {		"S color" (0,1) "S color" (1,1) "S color" (-1,0) "S color" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L Tetrimino" NumberInBag 3 ID 5 MinoList {		"L color" (1,1) "L color" (-1,0) "L color" (0,0) "L color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z Tetrimino" NumberInBag 2 ID 6 MinoList {		"Z color" (-1,1) "Z color" (0,1) "Z color" (0,0) "Z color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "T Tetrimino" NumberInBag 3 ID 7 MinoList {		"T color" (0,1) "T color" (-1,0) "T color" (0,0) "T color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

GarbageInfo {	NormalMino "Garbage" NormalCount 9 }

Shape {	Name "Perfect Square" Hotspot (7,8) ShapeCoords (4,11),(4,10),(4,9),(4,8),(5,11),(5,10),(5,9),(5,8),(6,11),(6,10),(6,9),(6,8),(7,11),(7,10),(7,9),(7,8) }

Shape {	Name "T-spin 1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "T-spin 2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Shape {	Name "Spin S 1" Hotspot (7,8) ShapeCoords (5,6),(6,8),(6,7),(8,6),(9,8),(9,7) }

Shape {	Name "Spin S 2" Hotspot (7,8) ShapeCoords (4,6),(5,8),(5,7),(7,6),(8,8),(8,7) }

Shape {	Name "Spin Z 1" Hotspot (7,8) ShapeCoords (5,8),(5,7),(6,6),(8,8),(8,7),(9,6) }

Shape {	Name "Spin Z 2" Hotspot (7,8) ShapeCoords (6,8),(6,7),(7,6),(9,8),(9,7),(10,6) }

Pattern {	Name "t-spin top" Triggered Tags 0,1,2,3,4,5,6,24,25,26,27,28,29,30,31 Method Search SearchType Horizontal SearchCount 10 PatternBeginScript {		sound "FX_RWD02" set pl.d4 to 0 }	PatternMinoScript {		set pl.d5 to mino.y	} }

Pattern {	Name "t-spin bottom" Triggered Tags 0,1,2,3,4,5,6,24,25,26,27,28,29,30,31 Method Search SearchType Horizontal SearchCount 10 PatternBeginScript {		sound "FX_RWD01" set pl.d5 to 21 }	PatternMinoScript {		if pl.d4 = -1 set pl.d4 to mino.y		end } }

Pattern {	Name "J Square" Tags 0 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternBeginScript {		sound "FX_GOLDF" }	PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "VO_PURE" } }

Pattern {	Name "I Square" Tags 6 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternBeginScript {		sound "FX_GOLDF" }	PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "VO_PURE" } }

Pattern {	Name "O Square" Tags 4 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternBeginScript {		sound "FX_GOLDF" }	PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "VO_PURE" } }

Pattern {	Name "T Square" Tags 5 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternBeginScript {		sound "FX_GOLDF" }	PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "VO_PURE" } }

Pattern {	Name "L Square" Tags 1 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternBeginScript {		sound "FX_GOLDF" }	PatternMinoScript {		set mino to "Pure Square" message "Pure Square!!!" }	PatternEndScript {		solidify set st1.d2 to st1.d2 + 1 sound "VO_PURE" } }

Pattern {	Name "Combo Square" Tags 0,1,2,3,4,5,6 Method Shape ShapeName "Perfect Square" PatternPieceCount 4 PatternBeginScript {		sound "FX_SLVRF" }	PatternMinoScript {		set mino to "Combo Square" message "Combo Square!" }	PatternEndScript {		solidify set st1.d1 to st1.d1 + 1 sound "VO_COMBO" } }

Pattern {	Name "Line clear" Tags 0,1,2,3,4,5,6,22,23,24,25,26,27,28,29,30,31 Method Search SearchType Horizontal SearchCount 10 PatternBeginScript {		if mino.d9 = 2.5 line color (0,36,154) end if mino.d9 = 1.25 line color (118,119,0) end }	PatternMinoScript {		set pf.d0 to pf.d0 + mino.d9		kill mino sound "FX_CLR01" } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase {	PatternBeginScript {		set pl.d4 to -1 set pl.d5 to -1 } }

IteratePhase {	PrimaryIterator {		IteratorExpression pl.d4 != -1 MinoIteratorScript {			if mino.y > pl.d5				exit end if mino.y < pl.d4				exit end mutate mino sound "FX_LOCK" }	}	IterateEndScript {		if pl.d4 != -1 set gravity to 1 end set pl.d6 to 0 } }

EliminatePhase {	FallSpeed 0.05 LineCollapsedScript {		set ph.d0 to ph.d0 + 1 }	StartFallingScript {		set goal to goal - pf.d0		set pf.d0 to 0 if ph.d0 = 1 line color (109,0,23) end if ph.d0 = 2 line color (39,0,87) end if ph.d0 = 3 line color (116,55,0) end if ph.d0 >= 4 line color (0,91,56) end }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		set st2.d8 to goal if ph.d0 = 1 sound "VO_LINE01" if pf.d4		 set goal to goal - 1 set st2.d9 to st2.d8 - goal message "T-spin" end sound "FX_MTRS1" set goal to goal -1 set st2.d9 to st2.d8 - goal set st0.d0 to st0.d0 + 1 message "Single" end if ph.d0 = 2 sound "VO_LINE02" if pf.d4		 set goal to goal - 3 set st2.d9 to st2.d8 - goal message "T-spin" end sound "FX_MTRS2" set goal to goal -3 set st2.d9 to st2.d8 - goal set st0.d1 to st0.d1 + 1 message "Double" end if ph.d0 = 3 sound "VO_LINE03" sound "FX_MTRS3" set goal to goal -5 set st2.d9 to st2.d8 - goal set st0.d2 to st0.d2 + 1 message "Triple" end if ph.d0 >= 4 sound "VO_TETRS" sound "FX_MTRS4" set goal to goal -8 set st2.d9 to st2.d8 - goal set st0.d3 to st0.d3 + 1 message "Tetris!" end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" }	GravityEndScript {		set gravity to 0 } }

CompletionPhase {	CompletionBeginScript {		if pl.d8 - goal set pl.d7 to (((pl.d9-goal)/pl.d9)-(level time/120)) * 20 if pl.d7 > 4 set pl.d7 to 4 end mino mood pl.d7		 set pl.d8 to goal end if goal <= 0 next level if level < 15 sound "FX_LEVEL" message "LEVEL UP!" end end } }

EventScripts {	GameStartScript {		set st2.d7 to rank sound "FX_LEVEL" set ghost to 1 set st0.d0 to 0 set st0.d1 to 0 set st0.d2 to 0 set st0.d3 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st1.d1 to 0 set st1.d2 to 0 line color (30,30,30) }	LevelStartScript {		if level < 5 mino intensity low else if level < 10 mino intensity medium else mino intensity high end end set pf.d3 to 0 set goal to (10*level) set pf.d7 to 0 set pl.d9 to goal set pl.d8 to goal }	LevelEndScript {		if level >= 15 win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 7 if spin shape "T-spin 1" at piece.x, piece.y				if result = 1 if piece.dir = 3 pattern "t-spin top" at piece.x,piece.y-1 pattern "t-spin bottom" at piece.x,piece.y			 else pattern "t-spin top" at piece.x,piece.y				 pattern "t-spin bottom" at piece.x,piece.y+1 end if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 else shape "T-spin 2" at piece.x, piece.y					if result = 1 if piece.dir = 3 pattern "t-spin top" at piece.x,piece.y-1 pattern "t-spin bottom" at piece.x,piece.y			 else pattern "t-spin top" at piece.x,piece.y				 pattern "t-spin bottom" at piece.x,piece.y+1 end if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 end end end end }	GameSecondScript {		if pl.d0 > 0 mix garbage garbage pl.d0			set pl.d0 to 0 end set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "30 seconds" TriggerType LevelTime 90 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_30TIC" end end end } }

CustomEvent {	Name "20 seconds" TriggerType LevelTime 100 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_20TIC" end end end } }

CustomEvent {	Name "10 seconds" TriggerType LevelTime 110 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_10TIC" end end end sound "FX_TIC10" } }

CustomEvent {	Name "9 seconds" TriggerType LevelTime 111 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_09TIC" end end end sound "FX_TIC09" } }

CustomEvent {	Name "8 seconds" TriggerType LevelTime 112 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_08TIC" end end end sound "FX_TIC08" } }

CustomEvent {	Name "7 seconds" TriggerType LevelTime 113 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_07TIC" end end end sound "FX_TIC07" } }

CustomEvent {	Name "6 seconds" TriggerType LevelTime 114 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_06TIC" end end end sound "FX_TIC06" } }

CustomEvent {	Name "5 seconds" TriggerType LevelTime 115 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_05TIC" end end end sound "FX_TIC05" } }

CustomEvent {	Name "4 seconds" TriggerType LevelTime 116 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_04TIC" end end end sound "FX_TIC04" } }

CustomEvent {	Name "3 seoncds" TriggerType LevelTime 117 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_03TIC" end end end sound "FX_TIC03" } }

CustomEvent {	Name "2 seconds" TriggerType LevelTime 118 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_02TIC" end end end sound "FX_TIC02" } }

CustomEvent {	Name "1 second" TriggerType LevelTime 119 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_01TIC" end end end sound "FX_TIC01" } }

CustomEvent {	Name "Time up" TriggerType LevelTime 120 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_OVRTIME" end end end } }

CustomEvent {	Name "Intro" TriggerType LevelTime 3 Script {		if level < 4 sound "VO_INT05" end } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 108 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_COUNTDWN" end end end } }

CustomEvent {	Name "Go for a Rank Up" TriggerType LevelTime 1 Script {		if rank = st2.d7			if level >= rank if rank < 15 message "GO FOR A RANK UP!!!" end end end } }

TEST.TWS
// Tetris game definition file // // By Chris J. Gullette // Last Modified $Date: 10/27/01 8:22p $ // // This is a test game for development purposes. // It is a VERY easy version of tetris, I pieces only, clear one line to level up, // no time out.

GeneralInfo {	PlayfieldColumns		10 PlayfieldRows			22 MaxMovementsPerSecond	10 MaxRotationsPerSecond	5 GameType				Marathon RemoveFromBagAfterUse NextPieceQueueSize		8 }

MinoSticky {	NotStickyBetweenPieces 0:	0 }

Mino {	Name	"Gray" Tags	0 }

Tetramino {	Name "I" NumberInBag 1 ID 0 MinoList {		"Gray"	(0,1) "Gray"	(0,0) "Gray"	(0,-1) "Gray"	(0,-2) }	Rot0CWOffsetList	(0,0),(0,1),(0,-1),(0,-2) Rot90CWOffsetList	(0,0),(1,0),(-1,0),(-2,0) Rot180CWOffsetList	(0,0),(0,-1),(0,1),(0,2) Rot270CWOffsetList	(0,0),(-1,0),(1,0),(2,0) }

Pattern {	Name			"line clear" Tags			0 Method			Search SearchType		Horizontal SearchCount		10 PatternMinoScript {		kill mino } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime			0.0 PieceStartingLocation	(4,0) }

FallingPhase {	FallSpeed		1 SoftDropSpeed	0.05 HardDropSpeed	0.0001 MoveTolerance	0.2 }

LockPhase {	MovementRestartsClock Duration		0.5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed		0.05 LineCollapsedScript {		* Count total lines cleared set playfield.d0 to playfield.d0 + 1 }	EliminateEndScript {		if playfield.d0 >= 1 next level end } }

SolidifyPhase { }

GravityPhase {	// No gravity FallSpeed		0 }

CompletionPhase { }

EventScripts {	LevelStartScript {		set playfield.d0 to 0 }

LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }

HardDropStartScript {		next level } }

TET2001.TWS
//  FILE: Tetris v7.2DP.tws // SOURCE: Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:37:41 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Marathon RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	NotStickyBetweenPieces 1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "J color" Tags 0,1 }

Mino {	Name "L color" Tags 0,2 }

Mino {	Name "S color" Tags 0,3 }

Mino {	Name "Z color" Tags 0,4 }

Mino {	Name "O color" Tags 0,5 }

Mino {	Name "T color" Tags 0,6 }

Mino {	Name "I color" Tags 0,7 }

Mino {	Name "Garbage" Tags 0,31 }

Tetramino {	Name "T Tetrimino" NumberInBag 1 ID 1 MinoList {		"T color" (0,1) "T color" (-1,0) "T color" (0,0) "T color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J Tetrimino" NumberInBag 1 ID 2 MinoList {		"J color" (-1,1) "J color" (-1,0) "J color" (0,0) "J color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L Tetrimino" NumberInBag 1 ID 3 MinoList {		"L color" (1,1) "L color" (-1,0) "L color" (0,0) "L color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S Tetrimino" NumberInBag 1 ID 4 MinoList {		"S color" (0,1) "S color" (1,1) "S color" (-1,0) "S color" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z Tetrimino" NumberInBag 1 ID 5 MinoList {		"Z color" (-1,1) "Z color" (0,1) "Z color" (0,0) "Z color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I Tetrimino" NumberInBag 1 ID 6 MinoList {		"I color" (-1,0) "I color" (0,0) "I color" (1,0) "I color" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O Tetrimino" NumberInBag 1 ID 7 MinoList {		"O color" (0,1) "O color" (1,1) "O color" (0,0) "O color" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

GarbageInfo {	NormalMino "Garbage" NormalCount 9 }

Shape {	Name "T-spin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "T-spin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "Line clear" Tags 0 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino sound "FX_CLR01" } }

Level {	Name "Level #1" }

Level {	Name "Level #2" }

Level {	Name "Level #3" }

Level {	Name "Level #4" }

Level {	Name "Level #5" }

Level {	Name "Level #6" }

Level {	Name "Level #7" }

Level {	Name "Level #8" }

Level {	Name "Level #9" }

Level {	Name "Level #10" }

Level {	Name "Level #11" }

Level {	Name "Level #12" }

Level {	Name "Level #13" }

Level {	Name "Level #14" }

Level {	Name "Level #15" }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase { }

IteratePhase { }

EliminatePhase {	FallSpeed 0.05 LineCollapsedScript {		set ph.d0 to ph.d0 + 1 }	StartFallingScript {		if ph.d0 = 1 line color (109,0,23) end if ph.d0 = 2 line color (39,0,87) end if ph.d0 = 3 line color (116,55,0) end if ph.d0 = 4 line color (0,91,56) if pf.d3				line color (118,119,0) else set pf.d3 to 1 end end }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		set st2.d8 to goal if ph.d0 = 1 sound "VO_LINE01" sound "FX_MTRS1" set goal to goal -1 set st2.d9 to st2.d8 - goal set st0.d0 to st0.d0 + 1 message "Single" set pf.d3 to 0 if pf.d4		 set goal to goal -1 set st2.d9 to st2.d8 - goal message "T-spin" end end if ph.d0 = 2 sound "VO_LINE02" sound "FX_MTRS2" set goal to goal -3 set st2.d9 to st2.d8 - goal set st0.d1 to st0.d1 + 1 message "Double" set pf.d3 to 0 if pf.d4		 set goal to goal -3 set st2.d9 to st2.d8 - goal message "T-spin" end end if ph.d0 = 3 sound "VO_LINE03" sound "FX_MTRS3" set goal to goal -5 set st2.d9 to st2.d8 - goal set st0.d2 to st0.d2 + 1 message "Triple" set pf.d3 to 0 end if ph.d0 = 4 sound "VO_TETRS" sound "FX_MTRS5" if pf.d3		 set goal to goal -4 set st2.d9 to st2.d8 - goal set st0.d9 to st0.d9 + 1 message "B2B Tetris!!!" sound "FX_MTRS6" sound "VO_B2B" else set pf.d3 to 1 message "Tetris!" end set goal to goal -8 set st2.d9 to st2.d8 - goal set st0.d3 to st0.d3 + 1 end if goal < 0 set goal to 0 end } }

SolidifyPhase { }

GravityPhase {	FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		if pl.d8 - goal set pl.d7 to (((pl.d9-goal)/pl.d9)-(level time/120)) * 20 if pl.d7 > 4 set pl.d7 to 4 end mino mood pl.d7		 set pl.d8 to goal end if goal <= 0 next level if level < 15 sound "FX_LEVEL" message "LEVEL UP!" end end } }

EventScripts {	GameStartScript {		set st2.d7 to rank sound "FX_LEVEL" set ghost to 1 set st0.d0 to 0 set st0.d1 to 0 set st0.d2 to 0 set st0.d3 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 set st0.d9 to 0 set st1.d0 to 0 line color (30,30,30) }	LevelStartScript {		if level < 5 mino intensity low else if level < 10 mino intensity medium else mino intensity high end end set pf.d1 to (5*level) set goal to pf.d1		set pf.d7 to 0 set pl.d9 to goal set pl.d8 to goal }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2			sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y		  if result = 1 if level < 10 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 set st1.d0 to st1.d0 + 1 else shape "T-spin2" at piece.x, piece.y								if result = 1 if level < 10 sound "VO_TSPIN" else sound "FX_RWD01" end set goal to goal -1 set pf.d4 to 1 set st1.d0 to st1.d0 + 1 end end end end }	GameSecondScript {		if pl.d0 > 0 mix garbage garbage pl.d0			set pl.d0 to 0 end set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "30 seconds" TriggerType LevelTime 90 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_30TIC" end end end } }

CustomEvent {	Name "20 seconds" TriggerType LevelTime 100 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_20TIC" end end end } }

CustomEvent {	Name "10 seconds" TriggerType LevelTime 110 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_10TIC" end end end sound "FX_TIC10" } }

CustomEvent {	Name "9 seconds" TriggerType LevelTime 111 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_09TIC" end end end sound "FX_TIC09" } }

CustomEvent {	Name "8 seconds" TriggerType LevelTime 112 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_08TIC" end end end sound "FX_TIC08" } }

CustomEvent {	Name "7 seconds" TriggerType LevelTime 113 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_07TIC" end end end sound "FX_TIC07" } }

CustomEvent {	Name "6 seconds" TriggerType LevelTime 114 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_06TIC" end end end sound "FX_TIC06" } }

CustomEvent {	Name "5 seconds" TriggerType LevelTime 115 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_05TIC" end end end sound "FX_TIC05" } }

CustomEvent {	Name "4 seconds" TriggerType LevelTime 116 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_04TIC" end end end sound "FX_TIC04" } }

CustomEvent {	Name "3 seconds" TriggerType LevelTime 117 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_03TIC" end end end sound "FX_TIC03" } }

CustomEvent {	Name "2 seconds" TriggerType LevelTime 118 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_02TIC" end end end sound "FX_TIC02" } }

CustomEvent {	Name "1 second" TriggerType LevelTime 119 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_01TIC" end end end sound "FX_TIC01" } }

CustomEvent {	Name "Time up" TriggerType LevelTime 120 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_OVRTIME" end end end } }

CustomEvent {	Name "Go for a Tetris" TriggerType GameTime 3 Script {		if level < 4 sound "VO_INT01" end } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 108 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_COUNTDWN" end end end } }

CustomEvent {	Name "Go for a Rank Up" TriggerType LevelTime 1 Script {		if rank = st2.d7			if level >= rank if rank < 15 message "GO FOR A RANK UP!!!" end end end } }

TNT.TWS
//  FILE: Sticky Tetris v7.2DP.tws // SOURCE: Sticky Tetris v7.2DP //  DATE: Wed, Oct 31, 2001  12:37:27 PM

GeneralInfo {	PlayfieldColumns 10 PlayfieldRows 22 MaxMovementsPerSecond 15 MaxRotationsPerSecond 5 GameType Marathon RemoveFromBagAfterUse NextPieceQueueSize 8 }

MinoSticky {	1: 1	2: 2	3: 3	4: 4	5: 5	6: 6	7: 7 }

Mino {	Name "T" Tags 0,1 AltMino "L" AltChance 20 }

Mino {	Name "S" Tags 0,2 AltMino "J" AltChance 20 }

Mino {	Name "Z" Tags 0,3 AltMino "O" AltChance 20 }

Mino {	Name "L" Tags 0,4 AltMino "Z" AltChance 20 }

Mino {	Name "O" Tags 0,5 AltMino "I" AltChance 20 }

Mino {	Name "I" Tags 0,6 AltMino "S" AltChance 20 }

Mino {	Name "J" Tags 0,7 AltMino "T" AltChance 20 }

Mino {	Name "garbage" Antigravity Tags 0,30 }

Mino {	Name "special garbage" Antigravity Tags 31 }

Tetramino {	Name "T" NumberInBag 1 ID 1 MinoList {		"T" (0,1) "T" (-1,0) "T" (0,0) "T" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "J" NumberInBag 1 ID 2 MinoList {		"J" (-1,1) "J" (-1,0) "J" (0,0) "J" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "L" NumberInBag 1 ID 3 MinoList {		"L" (1,1) "L" (-1,0) "L" (0,0) "L" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "S" NumberInBag 1 ID 4 MinoList {		"S" (0,1) "S" (1,1) "S" (-1,0) "S" (0,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "Z" NumberInBag 1 ID 5 MinoList {		"Z" (-1,1) "Z" (0,1) "Z" (0,0) "Z" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,0),(1,0),(1,-1),(0,2),(1,2) Rot180CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot270CWOffsetList (0,0),(-1,0),(-1,-1),(0,2),(-1,2) }

Tetramino {	Name "I" NumberInBag 1 ID 6 MinoList {		"I" (-1,0) "I" (0,0) "I" (1,0) "I" (2,0) }	Rot0CWOffsetList (0,0),(-1,0),(2,0),(-1,0),(2,0) Rot90CWOffsetList (-1,0),(0,0),(0,0),(0,1),(0,-2) Rot180CWOffsetList (-1,1),(1,1),(-2,1),(1,0),(-2,0) Rot270CWOffsetList (0,1),(0,1),(0,1),(0,-1),(0,2) }

Tetramino {	Name "O" NumberInBag 1 ID 7 MinoList {		"O" (0,1) "O" (1,1) "O" (0,0) "O" (1,0) }	Rot0CWOffsetList (0,0),(0,0),(0,0),(0,0),(0,0) Rot90CWOffsetList (0,-1),(0,-1),(0,-1),(0,-1),(0,-1) Rot180CWOffsetList (-1,-1),(-1,-1),(-1,-1),(-1,-1),(-1,-1) Rot270CWOffsetList (-1,0),(-1,0),(-1,0),(-1,0),(-1,0) }

GarbageInfo {	NormalMino "garbage" NormalCount pf.d9	SpecialMino "special garbage" SpecialCount pf.d8 }

Shape {	Name "tspin1" Hotspot (7,8) ShapeCoords (6,9),(6,7),(8,7) }

Shape {	Name "tspin2" Hotspot (7,8) ShapeCoords (6,7),(8,9),(8,7) }

Pattern {	Name "line clear" Tags 0,30,31 Method Search SearchType Horizontal SearchCount 10 PatternMinoScript {		kill mino sound "FX_CLR01" }	PatternEndScript {		set st1.d3 to st1.d3 + 1 } }

Pattern {	Name "Critical Mass Blue" Tags 1 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) if level < 6 sound "VO_MASS" end } }

Pattern {	Name "Critical Mass Cyan" Tags 2 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) if level < 6 sound "VO_MASS" end } }

Pattern {	Name "Critical Mass Green" Tags 3 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) if level < 6 sound "VO_MASS" end } }

Pattern {	Name "Critical Mass Red" Tags 4 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) if level < 6 sound "VO_MASS" end } }

Pattern {	Name "Critical Mass Maroon" Tags 5 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) if level < 6 sound "VO_MASS" end } }

Pattern {	Name "Critical Mass Yellow" Tags 6 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) if level < 6 sound "VO_MASS" end } }

Pattern {	Name "Critical Mass Purple" Tags 7 Method Search SearchType FloodFill4D SearchCount 24 PatternMinoScript {		kill mino message "Critical Mass!" sound "FX_MASS1" }	PatternEndScript {		set st1.d7 to ((st1.d7 / 24) + 1) if level < 6 sound "VO_MASS" end } }

GenerationPhase {	GenerationTime ((.8-((level-1)*.007))^(level-1))/20 PieceStartingLocation (4,0) GenerationBeginScript {		set pf.d2 to 1 set pf.d4 to 0 }	GenerationEndScript {		set st0.d4 to st0.d4 + 1 } }

FallingPhase {	FallSpeed (.8-((level-1)*.007))^(level-1) SoftDropSpeed ((.8-((level-1)*.007))^(level-1))/20 HardDropSpeed 0.0001 MoveTolerance 1 }

LockPhase {	MovementRestartsClock Duration 0.5 }

PatternPhase {	PatternBeginScript {		set ph.d0 to 0 }	PatternEndScript {		if ph.d0 = 1 set pf.d6 to pf.d6 + 1 end } }

IteratePhase {	PrimaryIterator {		IteratorExpression pf.d3=1 MinoIteratorScript {			kill mino if level < 15 sound "FX_LEVEL" message "LEVEL UP!" end set pf.d3 to pf.d3+1 }	} }

EliminatePhase {	FallSpeed 0.05 EliminateBeginScript {		set ph.d0 to 0 }	LineCollapsedScript {		set ph.d0 to ph.d0 + 1 }	GroupLandedScript {		sound "FX_LNE01" }	EliminateEndScript {		if ph.d0 > 0 if cascades = 2 set st1.d4 to st1.d4 + 2 end if cascades > 2 set st1.d4 to st1.d4 + 1 end end if ph.d0 >= st1.d6			set st1.d6 to ph.d0		end } }

SolidifyPhase {	IteratorTags 31 MinoIteratorScript {		set ph.d0 to ph.d0+ 1 }	SolidifyEndScript {		if ph.d0 = 0 set pf.d3 to pf.d3 + 1 if pf.d3 = 1 touch end next level end } }

GravityPhase {	GravityEnabled FallSpeed 0.05 GroupLandedScript {		sound "FX_LOCK" } }

CompletionPhase {	CompletionBeginScript {		if pl.d8 - goal set pl.d7 to (((pl.d9-goal)/pl.d9)-(level time/120)) * 20 if pl.d7 > 4 set pl.d7 to 4 end mino mood pl.d7		 set pl.d8 to goal end }	CompletionEndScript {		if cascades > st1.d5			set st1.d5 to cascades end if cascades = 2 message "2 Cascade" line color (109,0,23) sound "FX_MTRS1" sound "VO_CAS02" end if cascades = 3 message "3 Cascades" line color (39,0,87) sound "FX_MTRS2" sound "VO_CAS03" end if cascades = 4 message "4 Cascades" line color (39,0,87) sound "FX_MTRS3" sound "VO_CAS04" end if cascades = 5 message "5 Cascades" line color (116,55,0) sound "FX_MTRS4" sound "VO_CAS05" end if cascades = 6 message "6 Cascades" line color (116,55,0) sound "FX_MTRS5" sound "VO_CAS06" end if cascades = 7 message "7 Cascades" line color (0,91,56) sound "FX_MTRS6" sound "VO_CAS07" end if cascades = 8 message "8 Cascades" line color (0,91,56) sound "FX_MTRS6" sound "VO_CAS08" end if cascades = 9 message "9 Cascades" line color (118,119,0) sound "FX_MTRS6" sound "VO_CAS09" end if cascades = 10 message "10 Cascades" line color (118,119,0) sound "FX_MTRS6" sound "VO_CAS10" end if cascades >= 11 message "Super Cascade!!!" line color (0,36,154) sound "VO_AMAZING" sound "FX_MTRS6" end } }

EventScripts {	GameStartScript {		set st2.d7 to rank sound "FX_LEVEL" set ghost to 1 set st1.d3 to 0 set st1.d4 to 0 set st1.d5 to 0 set st1.d6 to 0 set st1.d7 to 0 set st0.d4 to 0 set st0.d5 to 0 set st0.d7 to 0 set st0.d8 to 0 line color (30,30,30) }	LevelStartScript {		if level < 5 mino intensity low else if level < 10 mino intensity medium else mino intensity high end end set pf.d0 to 0 set pf.d8 to 0 set pf.d9 to 5 mixed garbage level set pf.d9 to 0 set pf.d8 to 5 mixed garbage 1 set pf.d3 to 0 set pf.d7 to 0 set pl.d9 to goal set pl.d8 to goal }	LevelEndScript {		if level >= 15 sound "VO_EXLNT" win end }	MoveSuccessfulScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	MoveFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	RotateSuccessfulScript {		sound "FX_RTA01" set st0.d5 to st0.d5 + 1 }	RotateFailedScript {		sound "FX_LND01" set st0.d5 to st0.d5 + 1 }	HardDropStartScript {		sound "FX_HRDDP" set st0.d5 to st0.d5 + 1 set pf.d2 to 0 }	SoftDropStepScript {		sound "FX_FALL" set st0.d5 to st0.d5 + 1 }	FallStepScript {		sound "FX_FALL" }	TouchdownScript {		if pf.d2		 sound "FX_LND01" end }	LockdownScript {		if pf.d2		 sound "FX_LCK01" end if piece.id = 1 if spin shape "T-spin1" at piece.x, piece.y				if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 else shape "T-spin2" at piece.x, piece.y					if result = 1 if level < 6 sound "VO_TSPIN" else sound "FX_RWD01" end set pf.d4 to 1 end end end end }	GameSecondScript {		set st0.d8 to game time }	LevelSecondScript {		set st0.d7 to level time } }

CustomEvent {	Name "Intro" TriggerType LevelTime 3 Script {		if level < 4 sound "VO_INT06" end } }

CustomEvent {	Name "Time Up" TriggerType LevelTime 120 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_OVRTIME" end end end } }

CustomEvent {	Name "30" TriggerType LevelTime 90 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_30TIC" end end end } }

CustomEvent {	Name "20" TriggerType LevelTime 100 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_20TIC" end end end } }

CustomEvent {	Name "10" TriggerType LevelTime 110 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_10TIC" end end end sound "FX_TIC10" } }

CustomEvent {	Name "9" TriggerType LevelTime 111 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_09TIC" end end end sound "FX_TIC09" } }

CustomEvent {	Name "8" TriggerType LevelTime 112 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_08TIC" end end end sound "FX_TIC08" } }

CustomEvent {	Name "7" TriggerType LevelTime 113 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_07TIC" end end end sound "FX_TIC07" } }

CustomEvent {	Name "6" TriggerType LevelTime 114 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_06TIC" end end end sound "FX_TIC06" } }

CustomEvent {	Name "5" TriggerType LevelTime 115 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_05TIC" end end end sound "FX_TIC05" } }

CustomEvent {	Name "4" TriggerType LevelTime 116 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_04TIC" end end end sound "FX_TIC04" } }

CustomEvent {	Name "3" TriggerType LevelTime 117 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_03TIC" end end end sound "FX_TIC03" } }

CustomEvent {	Name "2" TriggerType LevelTime 118 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_02TIC" end end end sound "FX_TIC02" } }

CustomEvent {	Name "1" TriggerType LevelTime 119 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_01TIC" end end end sound "FX_TIC01" } }

CustomEvent {	Name "Countdown" TriggerType LevelTime 108 Script {		if rank = st2.d7			if level >= rank if rank < 15 sound "VO_COUNTDWN" end end end } }

CustomEvent {	Name "Go for a Rank Up" TriggerType LevelTime 1 Script {		if rank = st2.d7			if level >= rank if rank < 15 message "GO FOR A RANK UP!!!" end end end } }