We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Notes:Tetris Worlds (Windows)
Jump to navigation
Jump to search
This page contains notes for the game Tetris Worlds (Windows).
Contents
TWS (Tetris Worlds Script) files
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 <exp> - 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 <exp> "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 <exp> - fires once when the game time equals the expression
// LevelTime <exp> - 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
}
}