If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
Notes:Tetris Worlds (Windows)
(Redirected from Notes:Tetris Worlds (PC))
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 } }