======================= Triple Triad Global ======================= @@ Triple Triad Global (#300) @create Triple Triad Global @link Triple Triad Global = #314 @set Triple Triad Global = TRUST @set Triple Triad Global = WIZARD &TT Triple Triad Global= &TT`CMD Triple Triad Global= &TT`CMD`ADDCARD Triple Triad Global=$+TTW/Card Add *=*: @assert u(%#/TT`WIZARD) ; th [setq(Data,firstof(switch(hasattr(me,TT`DATA`%0),1,TT`DATA`%0,0),wildgrepi(me,TT`DATA`*,%0)),Num,pmatch(%0))] ; @assert %q=@pemit %#=[ansi(rD,Triple Triad)] - There are no cards with this name. ; @assert hasattr(%q,TT`STATS)=@pemit %#=[ansi(rD,Triple Triad)] - This player hasn't initialized the game to play yet. ; @include me/TT`FNC`CHECKCARDS=%# ; th [setq(ID,extract(%q,3,1,`))][setq(Set,Left(%q,1),Nb,Right(%q,3),LV,extract(u(TT`DATA`%q`STAT),6,1))][setq(Cards,u(%q/TT`CARDS`%q))] ; &TT`CARDS`%q %q=[replace(%q,%q,bound(inc(extract(%q,%q,1)),0,extract(u(TT`DATA`MAX`%q),%q,1)))] ; @include me/TT`FNC`CHECKSTASH=%q ; @pemit %#=[ansi(gD,Triple Triad)] - You have added a %1 Card to %0's stash. &TT`CMD`ADDPOINTS Triple Triad Global=$+TTW/Points Add *=*:@assert u(%#/TT`WIZARD) ; th [setq(Num,pmatch(%0))][setq(Stats,u(%q/TT`STATS))] ; @assert hasattr(%q,TT`STATS)=@pemit %#=[ansi(rD,Triple Triad)] - This player hasn't initialized the game to play yet. ; @assert isnum(%1)=@pemit %#=[ansi(rD,Triple Triad)] - You can only enter numbers for points. ; &TT`STATS %q=[replace(%q,12,bound(add(extract(%q,12,1),floor(%1)),0,10000))] ; @pemit %#=[ansi(gD,Triple Triad)] - You have added [floor(trim(%1))] Card Points to %0. They now have [extract(u(%q/TT`STATS),12,1)] points. &TT`CMD`ADDSET Triple Triad Global=$+TTW/Series New */*=*,*,*: @break hasttr(me/TT`DATA`SET`%0)=@pemit %#=[ansi(rD,Triple Triad)] - There is already a series with the ID %0. ; @break gt(strlen(%0),1)=@pemit %#=[ansi(gD,Triple Triad)] - ID should only be one letter. ; @break match(%0,0)=@pemit %#=[ansi(gD,Triple Triad)] - ID cannot be number 0. ; &TT`DATA`SETS me=[insert(u(me/TT`DATA`SETS),-1,%0)] ; &TT`DATA`SET`%0 me=%1 ; &TT`DATA`COST`%0`RAND me=%2 ; &TT`DATA`COST`%0`SING me=%3 ; &TT`DATA`MAX`%0 me=%4 ; @pemit %#=[ansi(gD,Triple Triad)] - You have created a %0 Series, costing %2/%3 per level, named [ansi(gD,%1)]. &TT`CMD`CANCELGAME Triple Triad Global=$+TT/Cancel: @assert nattr(me/TT`GAME`%#`GAME)=@pemit %#=[ansi(rD,Triple Triad)] - You are not in a game. ; th [setq(ID,u(me/TT`GAME`%#`GAME))][setq(Blue,u(me/TT`GAME`%q`BLUE),Red,u(me/TT`GAME`%q`RED),Rules,u(me/TT`GAME`%q`RULES))][setq(Opp,switch(%#,%q,%q,%q,%q))] ; @break match(u(me/TT`GAME`%q`MODE),2) ; @switch/inline and(u(TT`GAME`%q`MODE),gt(conn(%q),1))=1,&TT`STATS %#=[setq(Stats,u(%#/TT`STATS))][replace(%q,6,inc(extract(%q,6,1)))] ; @pemit [u(me/TT`GAME`%q`BLUE)]=[ansi(rD,Triple Triad)] - [switch(%#,[u(me/TT`GAME`%q`BLUE)],You have canceled the game.,[name(%#)] has canceled the game.)] ; @pemit [u(me/TT`GAME`%q`RED)]=[ansi(rD,Triple Triad)] - [switch(%#,[u(me/TT`GAME`%q`RED)],You have canceled the game.,[name(%#)] has canceled the game.)] ; @wipe me/TT`GAME`[u(me/TT`GAME`%q`BLUE)] ; @wipe me/TT`GAME`[u(me/TT`GAME`%q`RED)] ; @switch/inline and(not(match(%q,Private)),not(match(%q,Broadcast)),words(u(TT`GAME`%q`SPECTATE)))=1,@dolist/inline u(TT`GAME`%q`SPECTATE)=@pemit %i0=[ansi(rD,Triple Triad)] - [name(%#)] has canceled the game %q. ; @switch/inline and(not(match(%q,Private)),match(%q,Broadcast))=1,@oemit loc(%q)/%q %q=[ansi(rD,Triple Triad)] - [name(%#)] has canceled the game. ; @wipe me/TT`GAME`%q &TT`CMD`CHECKCARD Triple Triad Global=$+TT/Card *: th [setq(Att,firstof(switch(hasattr(me,TT`DATA`%0),1,TT`DATA`[ucstr(%0)],0),wildgrepi(me,TT`DATA`*,%0)))] ; @assert %q=@pemit %#=[ansi(rD,Triple Triad)] - There are no cards that match the name [ansi(gD,%0)]. ; th [setq(ID,extract(%q,3,1,`))][setq(Set,left(%q,1),Nb,right(%q,3),Name,u(TT`DATA`%q))][setq(NCard,extract(u(%#/TT`CARDS`%q),%q,1),LV,extract(u(TT`DATA`%q`STAT),6,1))] ; @pemit %#=[align(1 -7 1 40,,u(me/TT`GRID`DRAW`CARD,%q,B,None,0),,%r[ansi(cD,Card %q)] : %q%r[ansi(hrD,Num Owned)] : %q%r[ansi(gD,Card Lvl)]%b%b: %q%r[ansi(yD,Series)] %b%b%b: [u(TT`DATA`SET`%q)])] &TT`CMD`DECK Triple Triad Global= &TT`CMD`DECK`ADD Triple Triad Global=$+TT/Deck Add/*=*: @assert hasattr(%#,TT`DECK`%0)=@pemit %#=[ansi(rD,Triple Triad)] - You don't have a deck with this name. ; th [setq(Deck,u(%#/TT`DECK`%0),Init,u(%#/TT`DECK`%0),Error,0)] ; @dolist/inline/delimit \, %1={ th [setq(Att,firstof(switch(hasattr(me,TT`DATA`[trim(%i0)]),1,TT`DATA`%i0,0),wildgrepi(me,TT`DATA`*,[trim(%i0)])))] ; @assert %q=@pemit %#=[ansi(rD,Triple Triad)] - There is no card named [ansi(gD,%i0)]. ; th [setq(Card,ucstr(extract(%q,3,1,`)))][setq(Set,left(%q,1),Num,Right(%q,3))][setq(Empty,match(%q,0000))] ; @assert gt(%q,0)=@pemit %#=[ansi(rD,Triple Triad)] - Your %0 deck is already full. ; th [setq(Deck,replace(%q,%q,ucstr(%q)),Found,0,TLV,0)][iter(lnum(1,5),[switch(extract(%q,%i0,1),%q,setq(Found,inc(%q)))])][setq(Poss,extract(u(%#/TT`CARDS`%q),%q,1))] ; @assert gte(%q,%q)=@pemit %#=[ansi(rD,Triple Triad)] - You don't possess enough [ansi(gD,u(TT`DATA`%i0))] cards to add to your hand. } ; th [iter(%q,[setq(TLV,add(%q,extract(u(TT`DATA`%i0`STAT),6,1)))])] ; @pemit %#=[ansi(gD,Triple Triad)] - Your %0 deck current setup :%r%rTotal Card Level : %q%r[switch(lte(%q,u(me/TT`DECK`MAX)),0,Your deck goes over the level limit of [u(me/TT`DECK`MAX)] levels. You cannot use this deck without the [ansi(gD,Limitless)] rule.%r%r)][align(-15 0 -15 0 -15 0 -15 0 -15,[switch(extract(%q,1,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,1,1,%b),B,None,0))], ,[switch(extract(%q,2,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,2,1,%b),B,None,0))], ,[switch(extract(%q,3,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,3,1,%b),B,None,0))], ,[switch(extract(%q,4,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,4,1,%b),B,None,0))], ,[switch(extract(%q,5,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,5,1,%b),B,None,0))])] ; &TT`DECK`%0 %#=%q &TT`CMD`DECK`CHECK Triple Triad Global=$+TT/Deck Check=*:@assert hasattr(%#,TT`DECK`%0)=@pemit %#=[ansi(rD,Triple Triad)] - You don't have a deck with this name. ; th [setq(Deck,u(%#/TT`DECK`%0))][setq(Found,words(matchall(%q,0000)),TLV,0)][setq(Stop,0)][iter(lnum(1,5),[setq(C1,extract(%q,%i0,1),Found1,1)][setq(TLV,add(%q,extract(u(TT`DATA`%q`STAT),6,1)))][setq(Set,left(%q,1),Nb,right(%q,3))][setq(Num,extract(u(%#/TT`CARDS`%q),%q,1),LV,extract(u(TT`DATA`%q`STAT),6,1),Found1,words(matchall(%q,%q)))][switch(and(not(match(%q,0000)),gt(%q,%q)),1,[setq(Stop,%i0)])])] ; @pemit %#=[ansi(gD,Triple Triad)] - Your %0 deck current setup :%r[align(10 15 5 50,,Cards :%rTotal Level :,[sub(5,%q)]%r%q,[switch(%q,>0,[ansi(rD,You are still missing %q cards.)])][switch(%q,>[u(TT`DECK`MAX)],%r[ansi(rD,Your total level is over [u(TT`DECK`MAX)].)]%r)][switch(and(gt(%q,0),not(lt(%q,5))),1,%r[ansi(rD,You don't have enough [u(me/TT`DATA`[extract(%q,%q,1)])] cards left in your stash to use in this deck.)]%r)])]%r%r[align(-15 0 -15 0 -15 0 -15 0 -15,[switch(extract(%q,1,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,1,1,%b),B,None,0))], ,[switch(extract(%q,2,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,2,1,%b),B,None,0))], ,[switch(extract(%q,3,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,3,1,%b),B,None,0))], ,[switch(extract(%q,4,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,4,1,%b),B,None,0))], ,[switch(extract(%q,5,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,5,1,%b),B,None,0))])] &TT`CMD`DECK`DEL Triple Triad Global=$+TT/Deck Delete=*:@assert hasattr(%#,TT`DECK`%0)=@pemit %#=[ansi(rD,Triple Triad)] - You don't have a deck with this name. ; @wipe %#/TT`DECK`%0 ; @pemit %#=[ansi(gD,Triple Triad)] - You have deleted your [ansi(gD,%0)] deck. &TT`CMD`DECK`DETAIL Triple Triad Global=$+TT/Detail:@include me/TT`FNC`DECK`DETAIL=1 &TT`CMD`DECK`DETAIL2 Triple Triad Global=$+TT/Detail *:@include me/TT`FNC`DECK`DETAIL=%0 &TT`CMD`DECK`LIST Triple Triad Global=$+TT/Deck List:@pemit %#=[ansi(gD,Triple Triad Decks)] : [iter(wildgrepi(%#,TT`DECK`*,*),extract(%i0,3,1,`))] &TT`CMD`DECK`MAKE Triple Triad Global=$+TT/Deck Create=*:@break gt(words(%0),1)=@pemit %#=[ansi(rD,Triple Triad)] - Invalid Deck name, you can only use single worded names. Consider using numbers or separators such as ` or _ instead. ; @break hasattr(%#,TT`DECK`%0)=@pemit %#=[ansi(rD,Triple Triad)] - You already have a deck with this name. ; &TT`DECK`%0 %#=0000 0000 0000 0000 0000 ; @pemit %#=[ansi(gD,Triple Triad)] - You have created your [ansi(gD,%0)] deck. Use the [ansi(gD,+TT/Deck Add/%0=\,\,...)] to add a card to your deck. &TT`CMD`DECK`REM Triple Triad Global=$+TT/Deck Rem/*=*:@assert hasattr(%#,TT`DECK`%0)=@pemit %#=[ansi(rD,Triple Triad)] - You don't have a deck with this name. ; th [setq(Deck,ucstr(u(%#/TT`DECK`%0)),Init,u(%#/TT`DECK`%0),Error,0)] ; @dolist/inline/delimit \, %1={ th [setq(Att,firstof(switch(hasattr(me,TT`DATA`[trim(%i0)]),1,TT`DATA`%i0,0),wildgrepi(me,TT`DATA`*,[trim(%i0)])))] ; @assert %q=@pemit %#=[ansi(rD,Triple Triad)] - I don't recognize the [ansi(gD,%i0)] card. ; th [setq(Card,ucstr(extract(%q,3,1,`)))] ; @assert match(%q,%q)=@pemit %#=[ansi(rD,Triple Triad)] - You don't have the [ansi(gD,u(TT`DATA`%i0))] card in your deck. ; th [setq(Set,left(%q,1),Num,Right(%q,3))][setq(Deck,remove(%q,%q))][setq(Deck,insert(%q,-1,0000))] } ; @pemit %#=[ansi(gD,Triple Triad)] - Your %0 deck current setup :%r[align(-15 0 -15 0 -15 0 -15 0 -15,[switch(extract(%q,1,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,1,1,%b),B,None,0))], ,[switch(extract(%q,2,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,2,1,%b),B,None,0))], ,[switch(extract(%q,3,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,3,1,%b),B,None,0))], ,[switch(extract(%q,4,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,4,1,%b),B,None,0))], ,[switch(extract(%q,5,1,%b),0000,[ansi(wB,u(TT`DECK`DRAW`BLANK,None,0))],u(me/TT`DECK`DRAW`CARD,extract(%q,5,1,%b),B,None,0))])] ; &TT`DECK`%0 %#=%q &TT`CMD`DECK`STASH Triple Triad Global=$+TT/Stash:@include me/TT`FNC`DECK`STASH=1 &TT`CMD`DECK`STASH2 Triple Triad Global=$+TT/Stash *:@include me/TT`FNC`DECK`STASH=%0 &TT`CMD`GAME Triple Triad Global= &TT`CMD`GAME`OPTION Triple Triad Global=$+TT/Option *:@assert [nattr(me/TT`GAME`%#`GAME)] ; th [setq(ID,u(me/TT`GAME`%#`GAME))][setq(Rules,u(me/TT`GAME`%q`RULES))]; @break and(match(%q,Broadcast),match(%0,Broadcast))=@pemit %#=[ansi(rD,Triple Triad)] - This game is already broadcasting. ; @break and(match(%q,Private),match(%0,Private))=@pemit %#=[ansi(rD,Triple Triad)] - This game is already private. ; @assert or(match(%0,None),match(%0,Private),match(%0,Broadcast))=@pemit %#=[ansi(rD,Triple Triad)] - Invalid option, use Broadcast, Private or None. ; @switch/inline %0=None,th [setq(Rules,remove(%q,Broadcast))][setq(Rules,remove(%q,Private))],private,th [setq(Rules,remove(%q,Broadcast))][setq(Rules,insert(%q,-1,Private))],broadcast,th [setq(Rules,remove(%q,Private))][setq(Rules,insert(%q,-1,Broadcast))] ; &TT`GAME`%q`RULES me=%q ; th [setq(Blue,u(TT`GAME`%q`BLUE),Red,u(TT`GAME`%q`RED))] ; @switch/inline %0=Private,@remit loc(%#)=[ansi(gD,Triple Triad)] - [name(%q)] is in a match against [name(%q)] and has made the game private.,None,@remit loc(%#)=[ansi(gD,Triple Triad)] - [name(%q)] is in a match against [name(%q)] and has opened the game for spectating.,Broadcast,{ @remit loc(%#)=[ansi(gD,Triple Triad)] - [name(%q)] is in a match against [name(%q)] and is now broadcasting the game. ; @oemit loc(%q)/%q %q=u(TT`GRID`SP,%q,%q,%q) } ; @wipe me/TT`GAME`%q`SPECTATE &TT`CMD`INIT Triple Triad Global=$+TT/Starter:@break [gt([extract(u(%#/TT`STATS),7,1)],4)]=@pemit %#=[ansi(rD,Triple Triad)] - You can only use this command if you have less than 4 cards remaining. Consider using the [ansi(gD,+TT/Buy)] if you wish to get more cards. ; @dol/inline u(TT`DATA`SETS)=&TT`CARDS`%i0 %#=[trim(repeat(0%b,nattr(me/TT`DATA`%i0*)))] ; @dolist/inline lnum(1,9)={ @include me/TT`FNC`RANDCARD=%#,A,1,1 } ; @dolist/inline lnum(1,7)={ @include me/TT`FNC`RANDCARD=%#,A,2,1 } ; @dolist/inline lnum(1,4)={ @include me/TT`FNC`RANDCARD=%#,A,3,1 } ; &TT`STATS %#=[switch(hasattr(%#,TT`STATS),1,replace(u(%#/TT`STATS),7,20),0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)] ; @pemit %#=[ansi(gD,Triple Triad)] - You are now ready to play Triple Triad, and have received your initial 20 playing cards. &TT`CMD`JOINGAME Triple Triad Global=$+TT/Accept *:@assert nattr(me/TT`GAME`%#`GAME)=@pemit %#=[ansi(rD,Triple Triad)] - You have no game invite. ; @assert hasattr(%#,TT`DECK`%0)=@pemit %#=[ansi(rD,Triple Triad)] - You don't have a deck with this name. ; @include me/TT`FNC`CHECKCARDS=%# ; th [setq(ID,u(me/TT`GAME`%#`GAME))][setq(Rules,u(me/TT`GAME`%q`RULES))] ; @include me/TT`FNC`GAMEDECK=%#,%0,%q ; &TT`GAME`%#`SIDE me=Red ; &TT`GAME`%#`HAND me=u(%#/TT`DECK`%0) ; &TT`GAME`%#`INIT me=u(me/TT`GAME`%#`HAND) ; &TT`GAME`%q`PLAYERS me=[insert(u(TT`GAME`%q`PLAYERS),-1,%#,%b)] ; &TT`GAME`%q`RED me=%# ; &TT`GAME`%q`GRID me=[switch(match(%q,Wall),>0,0001 0001 0001 0001 0001 0001 0000 0000 0000 0001 0001 0000 0000 0000 0001 0001 0000 0000 0000 0001 0001 0001 0001 0001 0001,0002 0002 0002 0002 0002 0002 0000 0000 0000 0002 0002 0000 0000 0000 0002 0002 0000 0000 0000 0002 0002 0002 0002 0002 0002)] ; &TT`GAME`%q`GRIDC me=D D D D D D D D D D D D D D D D D D D D D D D D D ; &TT`GAME`%q`ELEM me=None None None None None [switch(match(%q,Elemental),0,None None None None None None None None None None None None None None None,[u(me/TT`FNC`RANDELEM)])] None None None None None ; &TT`GAME`%q`TURN me=randword(u(TT`GAME`%q`PLAYERS)) ; th [setq(Blue,u(me/TT`GAME`%q`BLUE),Red,u(me/TT`GAME`%q`Red))] [setq(NRed,5,NBlue,5)] ; @pemit %q=u(TT`GRID`P1,%q,%q,%q) ; @pemit %q=u(TT`GRID`P2,%q,%q,%q) ; &TT`GAME`%q`MODE me=1 ; @include me/TT`FNC`ADDSTATS=%q ; @switch/inline and(not(match(%q,Private)),not(match(%q,Broadcast)))=1,@oemit loc(%#)/%q %q=[ansi(gD,Triple Triad)] - [name(%q)] has challenged [name(%q)] to a game. Use +TT/Spectate Join=[name(%q)] to view it. ; @switch/inline and(not(match(%q,Private)),match(%q,Broadcast))=1, { @include me/TT`FNC`SCORE=%q,%q,%q ; @oemit loc(%#)/%q %q=[ansi(gD,Triple Triad)] - [name(%q)] has challenged [name(%q)] to a game. Game is being broadcasted to the room : %r%r[u(TT`GRID`SP,%q,u(TT`GAME`%q`BLUE),u(TT`GAME`%q`RED))] } &TT`CMD`NEWCARD Triple Triad Global=$+TTW/Card New */*=*: @assert u(%#/TT`WIZARD) ; th [setq(Set,%0,Name,%1,Stats,%2)][setq(Max,inc(nattr(me/TT`DATA`%q*`STAT)),LV,extract(%q,6,1))][setq(ID,%q[repeat(0,sub(3,strlen(%q)))]%q)] ; @assert match(u(TT`DATA`SETS),%q)=@pemit %#=[ansi(rD,Triple Triad)] - There are no series with that ID. ; @assert match(lnum(1,10),%q)=@pemit %#=[ansi(rD,Triple Triad)] - The level is invalid, it has to be between 1 and 10. ; @dolist/inline lnum(1,4)=@assert [setq(A,extract(%q,%i0,1))] [and(isnum(%qA),match(lnum(1,10),%qA),not(match(%qA,.)))]=@pemit %#=[ansi(rD,Triple Triad)] - Only use numbers between 1 and 10. Use 10 instead of "A" ; @break [setq(A,extract(%q,5,1))] [not(match(Lightning Fire Ice Water Earth Wind Poison Holy None,%qA))]=@pemit %#=[ansi(rD,Triple Triad)] - Invalid Elemental. Make sure you only use one of the following : [ansi(gD,Lightning Fire Ice Water Wind Earth Poison Holy None)] ; @break wildgrepi(me,TT`DATA`*,%q)=@pemit %#=[ansi(rD,Triple Triad)] - There's already a card with this name. ; &TT`DATA`%q`STAT me=%q ; &TT`DATA`%q me=%q ; @pemit %#=[ansi(gD,Triple Triad)] - You have created the [ansi(gD,%q)] Card, ID %q, in the [ansi(nbD,u(TT`DATA`SET`%q))] series, with the following stats : [extract(%q,1,6)] &TT`CMD`NEWGAME Triple Triad Global=$+TT/Game *=*,*:@break [nattr(me/TT`GAME`%#`GAME)]=@pemit %#=[ansi(rD,Triple Triad)] - You are already in a game. ; @break [nattr(me/TT`GAME`[pmatch(%0)]`GAME)]=@pemit %#=[ansi(rD,Triple Triad)] - [name(pmatch(%0))] is already in a game, or already has an invite. ; @dolist/inline %2={ @assert match(Open Same Plus Wall Combo Elemental None One Diff All Limitless Private Broadcast,%iL)=@pemit %#=[ansi(rD,Triple Triad)] - The %i0 rule is invalid. Valid rules are [ansi(gD,Open)], [ansi(gD,Same)], [ansi(gD,Same Wall)], [ansi(gD,Plus)], [ansi(gD,Combo)], [ansi(gD,Elemental)] and [ansi(gD,Limitless)]. Trading rules are [ansi(gD,None)], [ansi(gD,One)], [ansi(gD,Diff)] and [ansi(gD,All)]. Spectating options are [ansi(gD,Private)] and [ansi(gD,Broadcast)]. } ; th [setq(Trade,[switch(match(%2,None),>0,1)] [switch(match(%2,One),>0,1)] [switch(match(%2,Diff),>0,1)] [switch(match(%2,All),>0,1)])] ; @break gt(words(%q),1)=@pemit %#=[ansi(rD,Triple Triad)] - You can only use one Trading rule at a time. ; th [setq(Trade,[switch(match(%2,Broadcast),>0,1)] [switch(match(%2,Private),>0,1)])] ; @break gt(words(%q),1)=@pemit %#=[ansi(rD,Triple Triad)] - You can only use one option between Private or Broadcast at a time. ; @include me/TT`FNC`GAMEDECK=%#,%1,%2 ; @assert [locate(%#,%0,PTmn)]= @pemit %#=[ansi(rD,Triple Triad)] - That person is not in this room. ; @include me/TT`FNC`CHECKCARDS=%# ; th [setq(Rules,%2)][switch(or(match(%q,None),match(%q,One),match(%q,Diff),match(%q,All)),0,[setq(Rules,One%b%q)])] ; @include me/TT`FNC`NEWID ; &TT`GAME`%q`PLAYERS me=%# ; &TT`GAME`%q`BLUE me=%# ; &TT`GAME`%q`RULES me=%q ; &TT`GAME`%q`MODE me=0 ; &TT`GAME`%#`GAME me=%q ; &TT`GAME`%#`SIDE me=Blue ; &TT`GAME`%#`HAND me=u(%#/TT`DECK`%1) ; &TT`GAME`%#`INIT me=u(me/TT`GAME`%#`HAND) ; &TT`GAME`[pmatch(%0)]`GAME me=%q ; @pemit %#=[ansi(rD,Triple Triad)] - You have have invited [name([locate(%#,%0,PTmn)])] to a game using the rules : [ansi(gD,%q)] ; @pemit [pmatch(%0)]=[ansi(gD,Triple Triad)] - [name(%#)] has invited you to a game using the rules : [ansi(gD,Trading : [switch(match(%q,none),>0,None%b)][switch(match(%q,one),>0,One%b)][switch(match(%q,diff),>0,Diff%b)][switch(match(%q,all),>0,All%b)]- [switch(match(%q,open),>0,Open%b)][switch(match(%q,same),>0,Same%b)][switch(match(%q,wall),>0,Wall%b)][switch(match(%q,plus),>0,Plus%b)][switch(match(%q,combo),>0,Combo%b)][switch(match(%q,elemental),>0,Elemental%b)][switch(match(%q,limitless),>0,[ansi(rD,Limitless)])])] &TT`CMD`PICKCARD Triple Triad Global=$+TT/Choose *:@assert [nattr(me/TT`GAME`%#`GAME)] ; th [setq(ID,u(TT`GAME`%#`GAME))][setq(Win,u(TT`GAME`%q`WINNER))] ; @assert match(u(me/TT`GAME`%q`MODE),2) ; th [setq(Winner,extract(%q,1,1),Loser,extract(%q,2,1),Diff,extract(%q,3,1),Deck,extract(%q,4,5))] ; @assert match(%q,%#) ; th [setq(Pick1,[switch(u(TT`GAME`%q`RULES),*One*,1,*Diff*,%q,*All*,5)],Pick2,words(%0,\,))] ; @break not(match(%q,%q))=@pemit %#=[ansi(rD,Triple Triad)] - You need to pick %q cards using the command [ansi(gD,+TT/Choose Card1\,Card2\,...)]. ; @dolist/delimit/inline \, %0={ @switch/inline %i0=None,,{ th [setq(Found,firstof(switch(hasattr(me,TT`DATA`%0),1,TT`DATA`%i0,0),wildgrepi(me,TT`DATA`*,%i0)))][setq(Card,extract(%q,3,1,`))][setq(Set,left(%q,1),Nb,right(%q,3),LV,extract(u(TT`DATA`%q`STAT),6,1))] ; @assert %q=@pemit %#=[ansi(rD,Triple Triad)] - The card %i0 is not a valid name. ; @assert match(%q,%q)=@pemit %#=[ansi(rD,Triple Triad)] - Your opponent did not play with the %i0 card. You can only pick cards used in the game. ; th [setq(Cards,u(%q/TT`CARDS`%q))] ; @break gt(inc(extract(%q,%q,1)),extract(u(TT`DATA`MAX`%q),%q,1))=@pemit %#=[ansi(rD,Triple Triad)] - You already have the limit for the card u[(TT`DATA`%q)]. ; &TT`GAME`%q`WINLIST me=[insert(u(me/TT`GAME`%q`WINLIST),-1,%q,\,)] } ; } ; th [setq(WinList,u(me/TT`GAME`%q`WINLIST))] ; @dolist/inline/delimit \, %q={ th [setq(Set,left(%i0,1),Nb,right(%i0,3),LV,extract(u(TT`DATA`%i0`STAT),6,1))] ; &TT`CARDS`%q %q=[setq(Cards,u(%q/TT`CARDS`%q))][replace(%q,%q,bound(inc(extract(%q,%q,1)),0,extract(u(TT`DATA`MAX`%q),%q,1)))] ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,9,inc(extract(%q,9,1)))] ; &TT`CARDS`%q %q=[setq(Cards,u(%q/TT`CARDS`%q))][replace(%q,%q,bound(dec(extract(%q,%q,1)),0,extract(u(TT`DATA`MAX`%q),%q,1)))] ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,11,inc(extract(%q,11,1)))] } ; @switch/inline words(%q,\,)=0,{ @pemit %q=[ansi(gD,Triple Triad)] - You have taken no cards from your opponent. ; @pemit %q=[ansi(rD,Triple Triad)] - Your opponent has choosen to take no cards from you. },{ @pemit %q=[ansi(gD,Triple Triad)] - You have earned your cards\, they were added to your stash. ; @pemit %q=[ansi(rD,Triple Triad)] - You have lost the following cards : [trim(iter(%q,%b[u(TT`DATA`%i0)],\,,\,))] ; @include me/TT`FNC`CHECKSTASH=%q ; @include me/TT`FNC`CHECKSTASH=%q } ; @wipe me/TT`GAME`%q ; @wipe me/TT`GAME`%q ; @wipe me/TT`GAME`%q &TT`CMD`PLAYCARD Triple Triad Global=$+TT/Play *=*:@assert nattr(me/TT`GAME`%#`GAME) ; @assert match(1 2 3 4 5,%0)=@pemit %#=[ansi(rD,Triple Triad)] - You need to pick a card between 1 and 5. ; @assert match(1 2 3 4 5 6 7 8 9,%1)=@pemit %#=[ansi(rD,Triple Triad)] - You need to pick a grid position between 1 and 9. ; th [setq(Hand,u(me/TT`GAME`%#`HAND))][setq(Card,extract(%q,%0,1,%b))] ; @break match(0000,%q)=@pemit %#=[ansi(rD,Triple Triad)] - You already played card #%0 from your hand. Please choose another to play. ; th [setq(ID,u(me/TT`GAME`%#`GAME))][setq(Grid,u(me/TT`GAME`%q`GRID),Color,u(me/TT`GAME`%q`GRIDC),Turn,u(me/TT`GAME`%q`TURN),PLAYERS,u(me/TT`GAME`%q`PLAYERS))][setq(PCol,[switch(u(me/TT`GAME`%#`SIDE),Blue,B,Red,R)])] ; @assert match(%q,%#)=@pemit %#=[ansi(rD,Triple Triad)] - It's not your turn to play. ; th [setq(POSX,div(dec(%1),3),POSY,inc(mod(dec(%1),3)))][setq(POS,u(TT`FNC`FINDPOS,%q,%q))] ; @assert match(0000,extract(%q,%q,1,%b))=@pemit %#=[ansi(rD,Triple Triad)] - There's already a card in the spot #%1 of the grid, please choose another. ; @wipe me/TT`GAME`%q`COMBO ; &TT`GAME`%q`GRID me=[replace(%q,%q,%q,%b)] ; &TT`GAME`%q`GRIDC me=[replace(%q,%q,%q,%b)] ; &TT`GAME`%#`HAND me=[replace(%q,%0,0000,%b)] ; @include/nobreak me/TT`PLAY`POS=%q,%1,%q,1 ; @switch/inline [and(gt(words(%q,%b),0),match(%q,Combo))]=>0,{ @include/nobreak me/TT`PLAY`COMBO=%q,%q } ; &TT`GAME`%q`TURN me=[trim(remove(%q,%#))] ; @include/clearregs me/TT`FNC`SHOW`GRID=%# &TT`CMD`REFUSEGAME Triple Triad Global=$+TT/Refuse: @assert nattr(me/TT`GAME`%#`GAME)=@pemit %#=[ansi(rD,Triple Triad)] - You have no game invite. ; th [setq(ID,u(me/TT`GAME`%#`GAME))] ;@pemit %#=[ansi(rD,Triple Triad)] - You have refused the game against [name(u(me/TT`GAME`%q`BLUE))]. ; @pemit [u(me/TT`GAME`%q`BLUE)]=[ansi(rD,Triple Triad)] - [name(%#)] has refused your game invite. ; @wipe me/TT`GAME`[u(me/TT`GAME`%q`BLUE)] ; @wipe me/TT`GAME`%# ; @wipe me/TT`GAME`%q &TT`CMD`REMCARD Triple Triad Global=$+TTW/Card Rem *=*: @assert u(%#/TT`WIZARD) ; th [setq(Num,pmatch(%0),Data,wildgrepi(me,TT`DATA`*,%1))] ; @assert %q=@pemit %#=[ansi(rD,Triple Triad)] - There are no cards with this name. ; @assert hasattr(%q/TT`STATS)=@pemit %#=[ansi(rD,Triple Triad)] - This player hasn't initialized the game to play yet. ; @include me/TT`FNC`CHECKCARDS=%# ; th [setq(ID,extract(%q,3,1,`))][setq(Set,Left(%q,1),Nb,Right(%q,3),LV,extract(u(TT`DATA`%q`STAT),6,1))][setq(Cards,u(%q/TT`CARDS`%q))] ; &TT`CARDS`%q %q=[replace(%q,%q,bound(dec(extract(%q,%q,1)),0,extract(u(TT`DATA`MAX`%q),%q,1)))] ; @include me/TT`FNC`CHECKSTASH=%q ; @pemit %#=[ansi(gD,Triple Triad)] - You have removed a %1 Card from %0's stash. &TT`CMD`REMPOINTS Triple Triad Global=$+TTW/Points Rem *=*:@assert u(%#/TT`WIZARD) ; th [setq(Num,pmatch(%0))][setq(Stats,u(%q/TT`STATS))] ; @assert isnum(%1)=@pemit %#=[ansi(rD,Triple Triad)] - You can only enter numbers for points. ; @assert hasattr(%q,TT`STATS)=@pemit %#=[ansi(rD,Triple Triad)] - This player hasn't initialized the game to play yet. ; &TT`STATS %q=[replace(%q,12,bound(sub(extract(%q,12,1),floor(%1)),0,10000))] ; @pemit %#=[ansi(gD,Triple Triad)] - You have removed [floor(trim(%1))] Card Points from %0. They now have [extract(u(%q/TT`STATS),12,1)] points. &TT`CMD`RNDSTATS Triple Triad Global=$+TT/Help Random=*:@include me/TT`FNC`RNDSTATS=%0 ; th [setq(1,%q)] ; @include me/TT`FNC`RNDSTATS=%0 ; th [setq(2,%q)] ; @include me/TT`FNC`RNDSTATS=%0 ; th [setq(3,%q)] ; @include me/TT`FNC`RNDSTATS=%0 ; th [setq(4,%q)] ; @include me/TT`FNC`RNDSTATS=%0 ; th [setq(5,%q)] ; @pemit %#=+[repeat(-,40)]+%r[align(1. -38 1.,|,[ansi(gD,Triple Triad Help%rRandom Card Stats%rLevel %0)],|)]%r+[repeat(-,40)]+%r[align(1. -38 1.,|,%r%q1%r%q2%r%q3%r%q4%r%q5%r%r,|)]%r+[repeat(-,40)]+%r &TT`CMD`SEEGRID Triple Triad Global=$+TT/Grid:@assert hasattr(me,TT`GAME`%#`GAME) ; th [setq(ID,u(me/TT`GAME`%#`GAME))][setq(Rules,u(me/TT`GAME`%q`RULES))][setq(Blue,u(TT`GAME`%q`BLUE),Red,u(TT`GAME`%q`RED))] ; @include me/TT`FNC`SCORE=%q,%q,%q ; @pemit %#=u(TT`GRID`[switch(%q,%#,P1,P2)],%q,%q,%q) ; @assert u(TT`GAME`%q`SPECTATE) ; @dolist/inline u(TT`GAME`%q`SPECTATE)=@pemit %i0=u(TT`GRID`SP,%q,%q,%q) &TT`CMD`SPEC Triple Triad Global= &TT`CMD`SPEC`LEAVE Triple Triad Global=$+TT/Spectate Leave: th [setq(ID,u(TT`GAME`%#`SPECTATE))] ; @assert %q=@pemit %#=[ansi(rD,Triple Triad)] - Your are not spectating any games. ; &TT`GAME`%q`SPECTATE me=remove(u(TT`GAME`%q`SPECTATE),%#,%b) ; @wipe me/TT`GAME`%#`SPECTATE ; @pemit %#=[ansi(rD,Triple Triad)] - You have stopped spectating this game. ; @pemit u(TT`GAME`%q`BLUE)=[ansi(gD,Triple Triad)] - [name(%#)] stops spectating the game. ; @pemit u(TT`GAME`%q`RED)=[ansi(gD,Triple Triad)] - [name(%#)] stops spectating the game. &TT`CMD`SPECTATE Triple Triad Global=$+TT/Spectate Join=*: @break [nattr(me/TT`GAME`%#`GAME)]=@pemit %#=[ansi(rD,Triple Triad)] - You cannot spectate while you are in a game. ; @assert [nattr(me/TT`GAME`[pmatch(%0)]`GAME)]=@pemit %#=[ansi(rD,Triple Triad)] - [name(pmatch(%0))] is not in a game. ; @assert [locate(%#,%0,PTmn)]= @pemit %#=[ansi(rD,Triple Triad)] - That person is not in this room. ; th [setq(ID,u(me/TT`GAME`[pmatch(%0)]`GAME))][setq(Rules,u(me/TT`GAME`%q`RULES))] ; @break match(%q,Private)=@pemit %#=[ansi(rD,Triple Triad)] - This game is private, spectating is not allowed. ; &TT`GAME`%q`SPECTATE me=insert(u(TT`GAME`%q`SPECTATE),-1,%#,%b) ; &TT`GAME`%#`SPECTATE me=%q ; @pemit %#=[ansi(gD,Triple Triad)] - You are now spectating game #%q ; th [setq(Blue,u(TT`GAME`%q`BLUE),Red,u(TT`GAME`%q`RED))] ; @pemit %q=[ansi(gD,Triple Triad)] - [name(%#)] is now spectating the game. ; @pemit %q=[ansi(gD,Triple Triad)] - [name(%#)] is now spectating the game. ; @include me/TT`FNC`SCORE=%q,%q,%q ; @pemit %#=u(TT`GRID`SP,%q,%q,%q) &TT`CMD`STATS Triple Triad Global=$+TT/Stats:th [setq(Stats,u(%#/TT`STATS))] ; @pemit %#=u(me/TT`FNC`STATS,[name(%#)]) &TT`CMD`STATS2 Triple Triad Global=$+TT/Stats *: th [setq(Num,[locate(%#,%0,PTmn)])][setq(Stats,u(%q/TT`STATS))] ; @assert %q ; @pemit %#=u(me/TT`FNC`STATS,[name(%q)]) &TT`CMD`WINLIST Triple Triad Global=$+TT/Winlist: @assert [nattr(me/TT`GAME`%#`GAME)] ; th [setq(ID,u(TT`GAME`%#`GAME))][setq(Win,u(TT`GAME`%q`WINNER))][setq(Winner,extract(%q,1,1),Loser,extract(%q,2,1),Diff,extract(%q,3,1),Deck,extract(%q,4,5))] ; @assert match(u(me/TT`GAME`%q`MODE),2) ; @assert match(%q,%#) ; @pemit %#=[ansi(gD,Triple Triad)] - You have won the game, you can choose %q cards from your opponent : %r%r%b[iter(%q,[setq(Num,extract(u(%#/TT`CARDS`[left(%i0,1)]),Right(%i0,3),1))][ansi(cD,%i0)][space(6)][u(TT`DATA`%i0)][space(sub(25,strlen(u(TT`DATA`%i0))))]You own %q of this card.%r)] %r%rUse the command [ansi(gD,+TT/Choose Card[repeat(\,Card,dec(%q))])] to pick your cards. You can replace any card by [ansi(gD,None)] if you decide to take less than the amount you have earned, or if there are no cards you can take from your opponent. ; @pemit %q=[ansi(rD,Triple Triad)] - You have lost the game. Your opponent is currently choosing their winning cards.} &TT`DATA Triple Triad Global= &TT`DATA`0001 Triple Triad Global=10 10 10 10 None 0 &TT`DATA`0002 Triple Triad Global=0 0 0 0 None 0 &TT`DATA`A001 Triple Triad Global=Geezard &TT`DATA`A001`STAT Triple Triad Global=1 5 4 1 None 1 &TT`DATA`A002 Triple Triad Global=Funguar &TT`DATA`A002`STAT Triple Triad Global=5 3 1 1 None 1 &TT`DATA`A003 Triple Triad Global=Bite Bug &TT`DATA`A003`STAT Triple Triad Global=1 5 3 3 None 1 &TT`DATA`A004 Triple Triad Global=Red Bat &TT`DATA`A004`STAT Triple Triad Global=6 2 1 1 None 1 &TT`DATA`A005 Triple Triad Global=Blobra &TT`DATA`A005`STAT Triple Triad Global=2 5 3 1 None 1 &TT`DATA`A006 Triple Triad Global=Gayla &TT`DATA`A006`STAT Triple Triad Global=2 4 1 4 Lightning 1 &TT`DATA`A007 Triple Triad Global=Gesper &TT`DATA`A007`STAT Triple Triad Global=1 1 5 4 None 1 &TT`DATA`A008 Triple Triad Global=Goblin &TT`DATA`A008`STAT Triple Triad Global=3 1 5 2 Earth 1 &TT`DATA`A009 Triple Triad Global=Blood Soul &TT`DATA`A009`STAT Triple Triad Global=2 1 1 6 None 1 &TT`DATA`A010 Triple Triad Global=Crawler &TT`DATA`A010`STAT Triple Triad Global=4 3 2 4 None 1 &TT`DATA`A011 Triple Triad Global=Cockatrice &TT`DATA`A011`STAT Triple Triad Global=2 6 1 2 Thunder 1 &TT`DATA`A012 Triple Triad Global=Grat &TT`DATA`A012`STAT Triple Triad Global=7 1 1 3 None 2 &TT`DATA`A013 Triple Triad Global=Buel &TT`DATA`A013`STAT Triple Triad Global=6 3 2 2 None 2 &TT`DATA`A014 Triple Triad Global=Mesmerize &TT`DATA`A014`STAT Triple Triad Global=5 4 3 3 None 2 &TT`DATA`A015 Triple Triad Global=Glacial Eye &TT`DATA`A015`STAT Triple Triad Global=6 3 1 4 Ice 2 &TT`DATA`A016 Triple Triad Global=Belhelmel &TT`DATA`A016`STAT Triple Triad Global=3 3 4 5 None 2 &TT`DATA`A017 Triple Triad Global=Trustaevis &TT`DATA`A017`STAT Triple Triad Global=5 5 3 2 Wind 2 &TT`DATA`A018 Triple Triad Global=Anacondaur &TT`DATA`A018`STAT Triple Triad Global=5 5 1 3 Poison 2 &TT`DATA`A019 Triple Triad Global=Creeps &TT`DATA`A019`STAT Triple Triad Global=5 2 2 5 Lightning 2 &TT`DATA`A020 Triple Triad Global=Grendel &TT`DATA`A020`STAT Triple Triad Global=4 2 4 5 Lightning 2 &TT`DATA`A021 Triple Triad Global=Jelly Eye &TT`DATA`A021`STAT Triple Triad Global=3 7 2 1 None 2 &TT`DATA`A022 Triple Triad Global=Grand Mantis &TT`DATA`A022`STAT Triple Triad Global=5 3 2 5 Lightning 2 &TT`DATA`A023 Triple Triad Global=Forbidden &TT`DATA`A023`STAT Triple Triad Global=6 2 6 3 None 3 &TT`DATA`A024 Triple Triad Global=Armadodo &TT`DATA`A024`STAT Triple Triad Global=6 6 3 1 Earth 3 &TT`DATA`A025 Triple Triad Global=Tri-Face &TT`DATA`A025`STAT Triple Triad Global=3 5 5 5 Poison 3 &TT`DATA`A026 Triple Triad Global=Fastoticalon &TT`DATA`A026`STAT Triple Triad Global=7 3 5 1 Earth 3 &TT`DATA`A027 Triple Triad Global=Snow Lion &TT`DATA`A027`STAT Triple Triad Global=7 3 1 5 Ice 3 &TT`DATA`A028 Triple Triad Global=Ochu &TT`DATA`A028`STAT Triple Triad Global=5 3 6 3 None 3 &TT`DATA`A029 Triple Triad Global=SAM08G &TT`DATA`A029`STAT Triple Triad Global=5 4 6 2 Fire 3 &TT`DATA`A030 Triple Triad Global=Death Claw &TT`DATA`A030`STAT Triple Triad Global=4 2 4 7 Fire 3 &TT`DATA`A031 Triple Triad Global=Cactuar &TT`DATA`A031`STAT Triple Triad Global=6 3 2 6 None 3 &TT`DATA`A032 Triple Triad Global=Tonberry &TT`DATA`A032`STAT Triple Triad Global=3 4 6 4 None 3 &TT`DATA`A033 Triple Triad Global=Abyss Worm &TT`DATA`A033`STAT Triple Triad Global=7 5 2 3 Earth 3 &TT`DATA`A034 Triple Triad Global=Turtapod &TT`DATA`A034`STAT Triple Triad Global=2 7 3 6 None 4 &TT`DATA`A035 Triple Triad Global=Vysage &TT`DATA`A035`STAT Triple Triad Global=6 5 5 4 None 4 &TT`DATA`A036 Triple Triad Global=T-Rexaur &TT`DATA`A036`STAT Triple Triad Global=4 7 6 2 None 4 &TT`DATA`A037 Triple Triad Global=Bomb &TT`DATA`A037`STAT Triple Triad Global=2 3 7 6 Fire 4 &TT`DATA`A038 Triple Triad Global=Blitz &TT`DATA`A038`STAT Triple Triad Global=1 7 6 4 Lightning 4 &TT`DATA`A039 Triple Triad Global=Wendigo &TT`DATA`A039`STAT Triple Triad Global=7 6 3 1 None 4 &TT`DATA`A040 Triple Triad Global=Coeurl &TT`DATA`A040`STAT Triple Triad Global=7 4 4 4 None 4 &TT`DATA`A041 Triple Triad Global=Imp &TT`DATA`A041`STAT Triple Triad Global=3 6 7 3 None 4 &TT`DATA`A042 Triple Triad Global=Blue Dragon &TT`DATA`A042`STAT Triple Triad Global=6 3 2 7 Poison 4 &TT`DATA`A043 Triple Triad Global=Adamantoise &TT`DATA`A043`STAT Triple Triad Global=4 6 5 5 Earth 4 &TT`DATA`A044 Triple Triad Global=Hexadragon &TT`DATA`A044`STAT Triple Triad Global=7 3 5 4 Fire 4 &TT`DATA`A045 Triple Triad Global=Iron Giant &TT`DATA`A045`STAT Triple Triad Global=6 5 5 6 None 5 &TT`DATA`A046 Triple Triad Global=Bememoth &TT`DATA`A046`STAT Triple Triad Global=3 7 6 5 None 5 &TT`DATA`A047 Triple Triad Global=Chimera &TT`DATA`A047`STAT Triple Triad Global=7 3 6 5 Water 5 &TT`DATA`A048 Triple Triad Global=Pupu &TT`DATA`A048`STAT Triple Triad Global=3 1 10 2 None 5 &TT`DATA`A049 Triple Triad Global=Elastoid &TT`DATA`A049`STAT Triple Triad Global=6 7 2 6 None 5 &TT`DATA`A050 Triple Triad Global=G1M47N &TT`DATA`A050`STAT Triple Triad Global=5 4 5 7 None 5 &TT`DATA`A051 Triple Triad Global=Malboro &TT`DATA`A051`STAT Triple Triad Global=7 2 7 4 Poison 5 &TT`DATA`A052 Triple Triad Global=Ruby Dragon &TT`DATA`A052`STAT Triple Triad Global=7 4 2 7 Fire 5 &TT`DATA`A053 Triple Triad Global=Elnoyle &TT`DATA`A053`STAT Triple Triad Global=5 6 3 7 None 5 &TT`DATA`A054 Triple Triad Global=Tonberry King &TT`DATA`A054`STAT Triple Triad Global=4 4 6 7 None 5 &TT`DATA`A055 Triple Triad Global=Evil Eye &TT`DATA`A055`STAT Triple Triad Global=6 7 6 2 None 5 &TT`DATA`A056 Triple Triad Global=Gizamaluke &TT`DATA`A056`STAT Triple Triad Global=2 4 8 8 None 6 &TT`DATA`A057 Triple Triad Global=Elvoret &TT`DATA`A057`STAT Triple Triad Global=7 4 8 3 Wind 6 &TT`DATA`A058 Triple Triad Global=X-ATM092 &TT`DATA`A058`STAT Triple Triad Global=4 3 8 7 None 6 &TT`DATA`A059 Triple Triad Global=Granaldo &TT`DATA`A059`STAT Triple Triad Global=7 5 2 8 None 6 &TT`DATA`A060 Triple Triad Global=Princess Pudding &TT`DATA`A060`STAT Triple Triad Global=1 3 8 8 Holy 6 &TT`DATA`A061 Triple Triad Global=Iguion &TT`DATA`A061`STAT Triple Triad Global=8 2 2 8 None 6 &TT`DATA`A062 Triple Triad Global=Abadon &TT`DATA`A062`STAT Triple Triad Global=6 5 8 4 None 6 &TT`DATA`A063 Triple Triad Global=Trauma &TT`DATA`A063`STAT Triple Triad Global=4 6 8 5 None 6 &TT`DATA`A064 Triple Triad Global=Tunnel Armor &TT`DATA`A064`STAT Triple Triad Global=1 8 8 4 None 6 &TT`DATA`A065 Triple Triad Global=Enkidu &TT`DATA`A065`STAT Triple Triad Global=6 4 5 8 None 6 &TT`DATA`A066 Triple Triad Global=Calcobrena &TT`DATA`A066`STAT Triple Triad Global=7 1 5 8 None 6 &TT`DATA`A067 Triple Triad Global=Propagator &TT`DATA`A067`STAT Triple Triad Global=8 8 4 4 NonE 7 &TT`DATA`A068 Triple Triad Global=Jumbo Cactuar &TT`DATA`A068`STAT Triple Triad Global=8 4 8 4 None 7 &TT`DATA`A069 Triple Triad Global=Antlion &TT`DATA`A069`STAT Triple Triad Global=8 8 5 2 Earth 7 &TT`DATA`A070 Triple Triad Global=Lich &TT`DATA`A070`STAT Triple Triad Global=5 8 6 6 Poison 7 &TT`DATA`A071 Triple Triad Global=Maliris &TT`DATA`A071`STAT Triple Triad Global=8 3 6 7 Fire 7 &TT`DATA`A072 Triple Triad Global=Kraken &TT`DATA`A072`STAT Triple Triad Global=8 8 3 5 Water 7 &TT`DATA`A073 Triple Triad Global=Tiamat &TT`DATA`A073`STAT Triple Triad Global=8 4 8 8 Wind 7 &TT`DATA`A074 Triple Triad Global=Dark Elf &TT`DATA`A074`STAT Triple Triad Global=5 5 7 8 None 7 &TT`DATA`A075 Triple Triad Global=Red Giant &TT`DATA`A075`STAT Triple Triad Global=6 7 8 4 None 7 &TT`DATA`A076 Triple Triad Global=Catoblepas &TT`DATA`A076`STAT Triple Triad Global=1 7 8 7 None 7 &TT`DATA`A077 Triple Triad Global=Demon Wall &TT`DATA`A077`STAT Triple Triad Global=7 8 7 2 None 7 &TT`DATA`A078 Triple Triad Global=Asura &TT`DATA`A078`STAT Triple Triad Global=7 8 7 2 None 8 &TT`DATA`A079 Triple Triad Global=Garuda &TT`DATA`A079`STAT Triple Triad Global=7 8 7 2 Wind 8 &TT`DATA`A080 Triple Triad Global=Ixion &TT`DATA`A080`STAT Triple Triad Global=7 8 7 2 Lightning 8 &TT`DATA`A081 Triple Triad Global=Minimog &TT`DATA`A081`STAT Triple Triad Global=7 8 7 2 None 8 &TT`DATA`A082 Triple Triad Global=Chicobo &TT`DATA`A082`STAT Triple Triad Global=9 4 4 8 None 8 &TT`DATA`A083 Triple Triad Global=Quezacolt &TT`DATA`A083`STAT Triple Triad Global=2 4 9 9 Lightning 8 &TT`DATA`A084 Triple Triad Global=Shiva &TT`DATA`A084`STAT Triple Triad Global=6 9 7 4 Ice 8 &TT`DATA`A085 Triple Triad Global=Ifrit &TT`DATA`A085`STAT Triple Triad Global=9 8 6 2 Fire 8 &TT`DATA`A086 Triple Triad Global=Siren &TT`DATA`A086`STAT Triple Triad Global=8 2 9 6 None 8 &TT`DATA`A087 Triple Triad Global=Sacred &TT`DATA`A087`STAT Triple Triad Global=5 9 1 9 Earth 8 &TT`DATA`A088 Triple Triad Global=Minotaur &TT`DATA`A088`STAT Triple Triad Global=9 9 5 2 Earth 8 &TT`DATA`A089 Triple Triad Global=Carbuncle &TT`DATA`A089`STAT Triple Triad Global=8 4 4 10 None 9 &TT`DATA`A090 Triple Triad Global=Diabolos &TT`DATA`A090`STAT Triple Triad Global=5 3 10 8 None 9 &TT`DATA`A091 Triple Triad Global=Leviathan &TT`DATA`A091`STAT Triple Triad Global=8 7 10 1 Water 9 &TT`DATA`A092 Triple Triad Global=Odin &TT`DATA`A092`STAT Triple Triad Global=8 5 10 3 None 9 &TT`DATA`A093 Triple Triad Global=Pandemona &TT`DATA`A093`STAT Triple Triad Global=10 7 1 7 Wind 9 &TT`DATA`A094 Triple Triad Global=Cerberus &TT`DATA`A094`STAT Triple Triad Global=7 10 4 6 None 9 &TT`DATA`A095 Triple Triad Global=Alexander &TT`DATA`A095`STAT Triple Triad Global=9 2 10 4 Holy 9 &TT`DATA`A096 Triple Triad Global=Phoenix &TT`DATA`A096`STAT Triple Triad Global=7 10 2 7 Fire 9 &TT`DATA`A097 Triple Triad Global=Bahamut &TT`DATA`A097`STAT Triple Triad Global=10 6 8 2 None 9 &TT`DATA`A098 Triple Triad Global=Doomtrain &TT`DATA`A098`STAT Triple Triad Global=3 10 1 10 Poison 9 &TT`DATA`A099 Triple Triad Global=Eden &TT`DATA`A099`STAT Triple Triad Global=4 10 3 9 None 9 &TT`DATA`A100 Triple Triad Global=JENOVA &TT`DATA`A100`STAT Triple Triad Global=10 8 7 2 None 10 &TT`DATA`A101 Triple Triad Global=Zeromus &TT`DATA`A101`STAT Triple Triad Global=6 10 7 6 None 10 &TT`DATA`A102 Triple Triad Global=Sin &TT`DATA`A102`STAT Triple Triad Global=5 9 10 3 None 10 &TT`DATA`A103 Triple Triad Global=Ozma &TT`DATA`A103`STAT Triple Triad Global=10 4 8 6 None 10 &TT`DATA`A104 Triple Triad Global=Goddess &TT`DATA`A104`STAT Triple Triad Global=9 2 6 10 None 10 &TT`DATA`A105 Triple Triad Global=Demon &TT`DATA`A105`STAT Triple Triad Global=2 10 6 9 None 10 &TT`DATA`A106 Triple Triad Global=Fiend &TT`DATA`A106`STAT Triple Triad Global=8 6 5 10 None 10 &TT`DATA`A107 Triple Triad Global=Omega Weapon &TT`DATA`A107`STAT Triple Triad Global=4 10 10 2 None 10 &TT`DATA`A108 Triple Triad Global=Ultima Weapon &TT`DATA`A108`STAT Triple Triad Global=10 3 10 5 None 10 &TT`DATA`A109 Triple Triad Global=Giant of Babil &TT`DATA`A109`STAT Triple Triad Global=6 4 9 10 None 10 &TT`DATA`A110 Triple Triad Global=Chaos &TT`DATA`A110`STAT Triple Triad Global=10 9 4 6 None 10 &TT`DATA`COST Triple Triad Global= &TT`DATA`COST`A Triple Triad Global= &TT`DATA`COST`A`RAND Triple Triad Global=5 &TT`DATA`COST`A`SING Triple Triad Global=10 &TT`DATA`COST`X Triple Triad Global= &TT`DATA`COST`X`RAND Triple Triad Global=0 &TT`DATA`COST`X`SING Triple Triad Global=20 &TT`DATA`F031 Triple Triad Global=Cactuar &TT`DATA`F055 Triple Triad Global=Ahriman &TT`DATA`F056 Triple Triad Global= &TT`DATA`F056`STAT Triple Triad Global=2 4 8 8 Water 6 &TT`DATA`F066 Triple Triad Global=Calcabrina &TT`DATA`F067 Triple Triad Global= &TT`DATA`F067`STAT Triple Triad Global=8 8 4 4 None 7 &TT`DATA`F075 Triple Triad Global=Red Giant &TT`DATA`F076 Triple Triad Global=Catoblepas &TT`DATA`F076`STAT Triple Triad Global=1 7 8 7 None 7 &TT`DATA`F077 Triple Triad Global=Demon Wall &TT`DATA`F077`STAT Triple Triad Global=7 8 7 2 None 7 &TT`DATA`F078 Triple Triad Global=Asura &TT`DATA`F078`STAT Triple Triad Global=4 9 4 8 None 8 &TT`DATA`F079 Triple Triad Global=Garuda &TT`DATA`F079`STAT Triple Triad Global=9 3 6 7 Wind 8 &TT`DATA`F080 Triple Triad Global=Ixion &TT`DATA`F080`STAT Triple Triad Global=3 6 7 9 Lightning 8 &TT`DATA`F081 Triple Triad Global=Minimog &TT`DATA`F081`STAT Triple Triad Global=9 2 7 9 None 8 &TT`DATA`F082 Triple Triad Global=Chicobo &TT`DATA`F082`STAT Triple Triad Global=9 4 4 8 None 8 &TT`DATA`F083 Triple Triad Global= &TT`DATA`F083`STAT Triple Triad Global=2 4 9 9 Lightning 8 &TT`DATA`F108 Triple Triad Global= &TT`DATA`F108`STAT Triple Triad Global=10 3 10 3 None 10 &TT`DATA`MAX Triple Triad Global= &TT`DATA`MAX`A Triple Triad Global=9 9 7 7 5 5 2 2 1 1 &TT`DATA`MAX`X Triple Triad Global=1 1 1 1 1 1 1 1 1 1 &TT`DATA`SET Triple Triad Global= &TT`DATA`SET`A Triple Triad Global=Final Fantasy &TT`DATA`SET`X Triple Triad Global=Custom Cards &TT`DATA`SETS Triple Triad Global=A X &TT`DATA`X001 Triple Triad Global=Ultros @set Triple Triad Global/TT`DATA`X001=no_command &TT`DATA`X001`STAT Triple Triad Global=6 5 4 1 Water 3 @set Triple Triad Global/TT`DATA`X001`STAT=no_command &TT`DATA`X002 Triple Triad Global=Windstorm @set Triple Triad Global/TT`DATA`X002=no_command &TT`DATA`X002`STAT Triple Triad Global=7 6 3 4 Wind 5 @set Triple Triad Global/TT`DATA`X002`STAT=no_command &TT`DECK Triple Triad Global= &TT`DECK`DRAW Triple Triad Global= &TT`DECK`DRAW`BLANK Triple Triad Global=None%r%r[switch(%1,0,+,%1)][repeat(-,5)]+%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r+[repeat(-,5)]+%r &TT`DECK`DRAW`CARD Triple Triad Global=[setq(Card,u(v(TT`GLOBAL)/TT`DATA`%0`STAT))][setq(CStats,extract(%q,1,4,%b),CElem,extract(%q,5,1,%b),Name,u(v(TT`GLOBAL)/TT`DATA`%0))][setq(Up,bound(extract(%q,1,1,%b),1,10),Left,bound(extract(%q,2,1,%b),1,10),Right,bound(extract(%q,3,1,%b),1,10),Down,bound(extract(%q,4,1,%b),1,10))][setq(Up,switch(%q,10,A,%q),Left,switch(%q,10,A,%q),Right,switch(%q,10,A,%q),Down,switch(%q,10,A,%q))][ansi(cD,left(%q,15))]%r[ansi(cD,Card %0)]%r[ansi(hrD,Level [extract(u(v(TT`GLOBAL)/TT`DATA`%0`STAT),6,1)])]%r[ansi(switch(%1,R,xR,B,wB),[switch(%3,0,+,%3)][repeat(-,5)]+%r|[switch(extract(%q,5,1,%b),Fire,ansi(yR,F),Lightning,ansi(xC,L),Ice,ansi(xC,I),Earth,ansi(xG,E),Wind,ansi(xG,W),Holy,ansi(xW,H),Poison,ansi(xM,P),Water,ansi(wB,W),%b)]%b%q%b%b|%r|%b%q%b%q%b|%r|%b%b%q%b%b|%r+[repeat(-,3)][switch(%2,None,--,%q,ansi(switch(%1,R,w,B,hr),+1),ansi(switch(%1,R,w,B,hr),-1))]+%r)] &TT`DECK`MAX Triple Triad Global=20 &TT`FNC Triple Triad Global= &TT`FNC`ADDSTATS Triple Triad Global=th [setq(Blue,u(me/TT`GAME`%0`BLUE),Red,u(me/TT`GAME`%0`RED),Rules,u(me/TT`GAME`%0`RULES))][setq(BStats,u(%q/TT`STATS),RStats,u(%q/TT`STATS))] ; &TT`STATS %q=[u(me/TT`FNC`ADDSTATS2,%q,%q,1)] ; &TT`STATS %q=[u(me/TT`FNC`ADDSTATS2,%q,%q,0)] &TT`FNC`ADDSTATS2 Triple Triad Global=[inc(extract(%0,1,1))] [add(%2,extract(%0,2,1))] [extract(%0,3,9)] [bound(add(5,extract(%0,12,1)),0,10000)] [switch(match(%1,Open),>0,inc(extract(%0,13,1)),extract(%0,13,1))] [switch(match(%1,Same),>0,inc(extract(%0,14,1)),extract(%0,14,1))] [switch(match(%1,Wall),>0,inc(extract(%0,15,1)),extract(%0,15,1))] [switch(match(%1,Plus),>0,inc(extract(%0,16,1)),extract(%0,16,1))] [switch(match(%1,Combo),>0,inc(extract(%0,17,1)),extract(%0,17,1))] [switch(match(%1,Elemental),>0,inc(extract(%0,18,1)),extract(%0,18,1))] [switch(match(%1,None),>0,inc(extract(%0,19,1)),extract(%0,19,1))] [switch(match(%1,One),>0,inc(extract(%0,20,1)),extract(%0,20,1))] [switch(match(%1,Diff),>0,inc(extract(%0,21,1)),extract(%0,21,1))] [switch(match(%1,All),>0,inc(extract(%0,22,1)),extract(%0,22,1))] [switch(match(%1,Limitless),>0,inc(extract(%0,23,1)),extract(%0,23,1))] &TT`FNC`BLUEWIN Triple Triad Global=th [setq(Blue,u(me/TT`GAME`%0`BLUE),Red,u(me/TT`GAME`%0`RED))][setq(Rules,u(me/TT`GAME`%0`RULES))][setq(Stats,u(%q/TT`STATS))][setq(Stats,replace(%q,3,inc(extract(%q,3,1))))][setq(Stats,replace(%q,12,bound(add(5,extract(%q,12,1)),0,10000)))] ; &TT`STATS %q=%q ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,4,inc(extract(%q,4,1)))] ; @switch/inline and(not(match(%q,Private)),not(match(%q,Broadcast)),words(u(TT`GAME`%q`SPECTATE)))=1,@dolist/inline u(TT`GAME`%q`SPECTATE)=@pemit %i0=[ansi(gD,Triple Triad)] - [name(%q)] has won the game! ; @switch/inline and(not(match(%q,Private)),match(%q,Broadcast))=1,@oemit loc(%q)/%q %q=[ansi(gD,Triple Triad)] - [name(%q)] has won the game! ; @switch/inline %q=*None*,{ @pemit %q=[ansi(gD,Triple Triad)] - You have won the game! ; @pemit %q=[ansi(rD,Triple Triad)] - You have lost the game. ; @wipe me/TT`GAME`%q ; @wipe me/TT`GAME`%q ; @wipe me/TT`GAME`%q },*All*,{ @include me/TT`FNC`TAKECARD=%0,%q,%q,[u(me/TT`GAME`%q`INIT)] },{ &TT`GAME`%0`MODE me=2 ; th [setq(NbCard,switch(u(TT`GAME`%q`RULES),*One*,1,*Diff*,[abs(div(sub(%q,%q),2))]))] ; &TT`GAME`%0`WINNER me=%q %q %q [u(me/TT`GAME`%q`INIT)] ; @pemit %q=[ansi(gD,Triple Triad)] - You have won the game, you can choose %q cards from your opponent : %r%r%b[iter(u(me/TT`GAME`%q`INIT),[setq(Num,extract(u(%q/TT`CARDS`[left(%i0,1)]),Right(%i0,3),1))][ansi(cD,%i0)][space(6)][u(TT`DATA`%i0)][space(sub(25,strlen(u(TT`DATA`%i0))))]You own %q of this card.%r)] %r%rUse the command [ansi(gD,+TT/Choose Card[repeat(\,Card,dec(%q))])] to pick your cards. You can replace any card by [ansi(gD,None)] if you decide to take less than the amount you have earned, or if there are no cards you can take from your opponent. ; @pemit %q=[ansi(rD,Triple Triad)] - You have lost the game. Your opponent is currently choosing their winning cards.} ; @switch/inline gt(words(u(TT`GAME`%q`SPECTATE)),0)=1,@dolist/inline u(TT`GAME`%q`SPECTATE)=@Wipe me/TT`GAME`%q`SPECTATE &TT`FNC`CARD Triple Triad Global= &TT`FNC`CARD`DETAIL Triple Triad Global=[setq(Set,left(%q,1),Nb,right(%q,3),Data,u(v(TT`GLOBAL)/TT`DATA`%q`STAT))][setq(Name,u(v(TT`GLOBAL)/TT`DATA`%q),Qty,extract(u(%#/TT`CARDS`%q),%q,1))][setq(Lv,extract(%q,6,1),Up,extract(%q,1,1),Left,extract(%q,2,1),Right,extract(%q,3,1),Down,extract(%q,4,1),Elem,extract(%q,5,1))][setq(Up,switch(%q,10,A,%q),Down,switch(%q,10,A,%q),Left,switch(%q,10,A,%q),Right,switch(%q,10,A,%q))][ansi(wB,+-----+)] [ansi(cD,Card : %q)]%r%b[ansi(wB,|[switch(%q,Fire,ansi(yR,F),Lightning,ansi(xC,L),Ice,ansi(xC,I),Earth,ansi(xG,E),Wind,ansi(xG,W),Holy,ansi(xW,H),Poison,ansi(xM,P),Water,ansi(wB,W),%b)]%b%q%b%b|)] %q%r%b[ansi(wB,|%b%q%b%q%b|)] [ansi(gD,Level :)] %q%r%b[ansi(wB,|%b%b%q%b%b|)] [ansi(gD,Owned :)] %q%r%b[ansi(wB,+-----+)] &TT`FNC`CHECKCARDS Triple Triad Global=@dolist/inline u(TT`DATA`SETS)={ th [setq(Check1,nattr(me/TT`DATA`%i0*),Check2,words(u(%0/TT`CARDS`%i0)))] ; @switch/inline gt(%q,%q)=&TT`CARDS`%i0 %0=[u(%0/TT`CARDS`%i0)][repeat(%b0,sub(%q,%q))] } &TT`FNC`CHECKSTASH Triple Triad Global=th [setq(TCards,0,RCards,0)][trim(iter(u(TT`DATA`SETS),iter(u(%0/TT`CARDS`%i0),[setq(TCards,add(%q,%i0))][switch(%i1,X,[setq(RCards,add(%q,%i0))])])))] ; &TT`STATS %0=[setq(Stats,u(%0/TT`STATS))][replace(%q,7,%q)] ; &TT`STATS %0=[setq(Stats,u(%0/TT`STATS))][replace(%q,8,%q)] &TT`FNC`DECK Triple Triad Global= &TT`FNC`DECK`DETAIL Triple Triad Global=th [setq(S,mul(dec(%0),15))][trim(iter(u(TT`DATA`SETS),[switch(words(u(%#/TT`CARDS`%i0)),>0,[iter(lnum(1,words(u(%#/TT`CARDS`%i0))),[setq(Card,extract(u(%#/TT`CARDS`%i1),%i0,1))][setq(CardList,switch(%q,0,%q,insert(%q,-1,%i1[repeat(0,sub(3,strlen(%i0)))]%i0)))])])]))][setq(NCard,words(%q))] ; @assert gte(%q,inc(%qS)) ; @pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad - Your Cards Page %0)],|)]%r+[repeat(-,78)]+%r[u(TT`FNC`SHOW`DETAIL)]%r[switch(%q,>[add(15,%qS)],[align(1 -76 1,|,Continued in [ansi(gD,+TT/Detail [inc(%0)])],|)]%r+[repeat(-,78)]+%r)] &TT`FNC`DECK`STASH Triple Triad Global=th [setq(S,mul(dec(%0),40))][trim(iter(u(TT`DATA`SETS),[switch(words(u(%#/TT`CARDS`%i0)),>0,[iter(lnum(1,words(u(%#/TT`CARDS`%i0))),[setq(Card,extract(u(%#/TT`CARDS`%i1),%i0,1))][setq(CardList,switch(%q,0,%q,insert(%q,-1,%i1[repeat(0,sub(3,strlen(%i0)))]%i0)))])])]))][setq(NCard,words(%q))] ; @assert gt(%q,inc(%qS)) ; @pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad - Your Cards Page %0)],|)]%r+[repeat(-,78)]+%r[align(1. 36 1. 37 1.,|,%r%b[iter(lnum(add(%qS,1),switch(%q,<[add(%qS,21)],%q,[add(%qS,20)])),[setq(Card,extract(%q,%i0,1))][setq(Set,left(%q,1),Nb,right(%q,3),Data,u(TT`DATA`%q`STAT))][setq(Name,u(TT`DATA`%q),Qty,extract(u(%#/TT`CARDS`%q),%q,1))][ansi(cD,%q)] %q[space(sub(27,strlen(%q)))]x%q%r)][repeat(%r,sub([add(%qS,21)],switch(%q,<[add(%qS,21)],%q,[add(%qS,20)])))],|,%r[switch(%q,<[add(%qS,21)],%b[repeat(%r,18)],%b[iter(lnum([add(%qS,21)],switch(%q,<[add(%qS,41)],%q,[add(%qS,40)])),[setq(Card,extract(%q,%i0,1))][setq(Set,left(%q,1),Nb,right(%q,3),Data,u(TT`DATA`%q`STAT))][setq(Name,u(TT`DATA`%q),Qty,extract(u(%#/TT`CARDS`%q),%q,1))][ansi(cD,%q)] %q[space(sub(27,strlen(%q)))]x%q%r)][repeat(%r,sub([add(%qS,41)],switch(%q,<[add(%qS,41)],%q,[add(%qS,40)])))])],|)]%r+[repeat(-,78)]+%r[switch(%q,>[add(%qS,40)],[align(1 -76 1,|,Continued in [ansi(gD,+TT/Stash [inc(%0)])],|)]%r+[repeat(-,78)]+%r)] &TT`FNC`FINDNUM Triple Triad Global=[add(mul(dec(div(%0,5)),3),mod(dec(%0),5))] &TT`FNC`FINDPOS Triple Triad Global=[add(mul(inc(%0),5),inc(%1))] &TT`FNC`FINISH Triple Triad Global=th [setq(Blue,u(me/TT`GAME`%0`BLUE),Red,u(me/TT`GAME`%0`RED))] ; @switch/inline %q=%q,{ @include me/TT`FNC`TIEGAME=%0 },>%q,{ @include/clearregs me/TT`FNC`BLUEWIN=%0 },{ @include/clearregs me/TT`FNC`REDWIN=%0 } &TT`FNC`GAMEDECK Triple Triad Global=th [setq(Deck,u(%0/TT`DECK`%1),Found,0,TLV,0)] ; @break match(%q,0000)=@pemit %0=[ansi(rD,Triple Triad)] - Your deck does not have 5 cards. ; th [setq(Stop,0)][iter(lnum(1,5),[setq(C1,extract(%q,%i0,1))][setq(LV,extract(u(TT`DATA`%q`STAT),6,1),Nb,right(%q,3),Set,Left(%q,1))][setq(Num,extract(u(%0/TT`CARDS`%q),%q,1),TLV,add(%q,%q),Found,words(matchall(%q,%q)))][switch(gt(%q,%q),1,[setq(Stop,%i0)])])] ; @break %q=@pemit %0=[ansi(rD,Triple Triad)] - Your deck is not complete. You don't have enough [u(me/TT`DATA`[extract(%q,%q,1)])] cards left for your deck. ; @break and(gt(%q,u(me/TT`DECK`MAX)),not(match(%2,Limitless)))=@pemit %0=[ansi(rD,Triple Triad)] - Your deck's level is too high, and the game is Limited to [u(me/TT`DECK`MAX)] levels. &TT`FNC`NEWID Triple Triad Global=th [setq(ID,rand(10,99))] ; @retry nattr(me/TT`GAME`%q`PLAYERS) &TT`FNC`POS Triple Triad Global= &TT`FNC`POS`COMP Triple Triad Global=[switch(%0,>%1,UD,<%1,DU,switch(%2,<%3,RL,>%3,LR))] &TT`FNC`RANDCARD Triple Triad Global=th [setq(Nb,rand(1,nattr(v(TT`GLOBAL)/TT`DATA`%1*)))][setq(ID,%1[repeat(0,sub(3,strlen(%q)))]%q)][setq(Name,u(v(TT`GLOBAL)/TT`DATA`%q),LV,extract(u(v(TT`GLOBAL)/TT`DATA`%q`STAT),6,1))][setq(Max,extract(u(v(TT`GLOBAL)/TT`DATA`MAX`%1),%q,1),Num,extract(u(%0/TT`CARDS`%1),%q,1))] ; @retry not(match(%q,%2)) ; @switch/inline gt(inc(%q),%q)=1,{ @switch/inline %3=1,@retry 1,0,{ @pemit %0=[ansi(rD,Triple Triad)] - You got the [ansi(gD,%q)] card but you already had the maximum amount you can hold. You were given back your points. ; @break 1 } } ; &TT`CARDS`%1 %0=[replace(u(%0/TT`CARDS`%1),%q,bound(inc(%q),1,%q),%b)] &TT`FNC`RANDELEM Triple Triad Global=[setq(ListE,Fire Water Ice Lightning Earth Wind Poison Holy)]None [switch(rand(1,100),<91,None,randword(%q))] [switch(rand(1,100),<91,None,randword(%q))] [switch(rand(1,100),<91,None,randword(%q))] None None [switch(rand(1,100),<91,None,randword(%q))] [switch(rand(1,100),<91,None,randword(%q))] [switch(rand(1,100),<91,None,randword(%q))] None None [switch(rand(1,100),<91,None,randword(%q))] [switch(rand(1,100),<91,None,randword(%q))] [switch(rand(1,100),<91,None,randword(%q))] None &TT`FNC`REDWIN Triple Triad Global=th [setq(Blue,u(me/TT`GAME`%0`BLUE),Red,u(me/TT`GAME`%0`RED))][setq(Rules,u(me/TT`GAME`%0`RULES))][setq(Stats,u(%q/TT`STATS))][setq(Stats,replace(%q,3,inc(extract(%q,3,1))))][setq(Stats,replace(%q,12,bound(add(5,extract(%q,12,1)),0,10000)))] ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,3,inc(extract(%q,3,1)))] ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,12,add(5,extract(%q,12,1)))] ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,4,inc(extract(%q,4,1)))] ; @switch/inline and(not(match(%q,Private)),not(match(%q,Broadcast)),words(u(TT`GAME`%q`SPECTATE)))=1,@dolist/inline u(TT`GAME`%q`SPECTATE)=@pemit %i0=[ansi(gD,Triple Triad)] - [name(%q)] has won the game! ; @switch/inline and(not(match(%q,Private)),match(%q,Broadcast))=1,@oemit loc(%q)/%q %q=[ansi(gD,Triple Triad)] - [name(%q)] has won the game! ; @switch/inline %q=*None*,{ @pemit %q=[ansi(gD,Triple Triad)] - You have won the game! ; @pemit %q=[ansi(rD,Triple Triad)] - You have lost the game. ; @wipe me/TT`GAME`%q ; @wipe me/TT`GAME`%q ; @wipe me/TT`GAME`%q },*All*,{ @include me/TT`FNC`TAKECARD=%0,%q,%q,[u(me/TT`GAME`%q`INIT)] },{ &TT`GAME`%0`MODE me=2 ; th [setq(NbCard,switch(u(TT`GAME`%q`RULES),*One*,1,*Diff*,[abs(div(sub(%q,%q),2))]))] ; &TT`GAME`%0`WINNER me=%q %q [abs(div(sub(%q,%q),2))] [u(me/TT`GAME`%q`INIT)] ; @pemit %q=[ansi(gD,Triple Triad)] - You have won the game, you can choose %q cards from your opponent : %r%r%b[iter(u(me/TT`GAME`%q`INIT),[setq(Num,extract(u(%q/TT`CARDS`[Left(%i0,1)]),right(%i0,3),1))][ansi(cD,%i0)][space(6)][u(TT`DATA`%i0)][space(sub(25,strlen(u(TT`DATA`%i0))))]You own %q of this card.%r)]%r%rUse the command [ansi(gD,+TT/Choose Card[repeat(\,Card,dec(%q))])] to pick your cards. You can replace any card by [ansi(gD,None)] if you decide to take less than the amount you have earned, or if there are no cards you can take from your opponent. ; @pemit %q=[ansi(rD,Triple Triad)] - You have lost the game. Your opponent is currently choosing their winning cards.} ; @switch/inline gt(words(u(TT`GAME`%q`SPECTATE)),0)=1,@dolist/inline u(TT`GAME`%q`SPECTATE)=@Wipe me/TT`GAME`%q`SPECTATE &TT`FNC`RNDSTATS Triple Triad Global=th [setq(Min,extract(10 12 14 16 18 20 22 24 24 26,%0,1),Max,extract(13 15 17 19 21 23 25 26 27 29,%0,1))][setq(R1,Rand(1,10),R2,Rand(1,10),R3,Rand(1,10),R4,Rand(1,10))] ; @retry or(lt(add(%q,%q,%q,%q),%q),gt(add(%q,%q,%q,%q),%q)) ; th [setq(Result,%q %q %q %q)] &TT`FNC`SCORE Triple Triad Global=th [setq(NBlue,0,NRed,0)][setq(Color,u(TT`GAME`%0`GRIDC),HandP1,u(TT`GAME`%1`HAND),HandP2,u(TT`GAME`%2`HAND))] [iter(%q,if(not(match(%i0,0000)),setq(NBlue,inc(%q))))] [iter(%q,if(not(match(%i0,0000)),setq(NRed,inc(%q))))] [iter(%q,if(match(%i0,B),setq(NBlue,inc(%q))))][iter(%q,if(match(%i0,R),setq(NRed,inc(%q))))] &TT`FNC`SHOW Triple Triad Global= &TT`FNC`SHOW`DETAIL Triple Triad Global=[align(1. 25 24 25 1.,|,%r%b[iter(lnum(add(%qS,1),switch(%q,<[add(%qS,6)],%q,[add(%qS,5)])),[setq(Card,extract(%q,%i0,1))][u(v(TT`GLOBAL)/TT`FNC`CARD`DETAIL)]%r)][repeat(%r,sub([add(%qS,6)],switch(%q,<[add(%qS,6)],%q,[add(%qS,5)])))],%r[switch(%q,<[add(%qS,6)],%b[repeat(%r,18)],%b[iter(lnum([add(%qS,6)],switch(%q,<[add(%qS,11)],%q,[add(%qS,10)])),[setq(Card,extract(%q,%i0,1))][u(v(TT`GLOBAL)/TT`FNC`CARD`DETAIL)]%r)][repeat(%r,sub([add(%qS,11)],switch(%q,<[add(%qS,11)],%q,[add(%qS,10)])))])],%r[switch(%q,<[add(%qS,11)],%b[repeat(%r,18)],%b[iter(lnum([add(%qS,11)],switch(%q,<[add(%qS,16)],%q,[add(%qS,15)])),[setq(Card,extract(%q,%i0,1))][u(v(TT`GLOBAL)/TT`FNC`CARD`DETAIL)]%r)][repeat(%r,sub([add(%qS,16)],switch(%q,<[add(%qS,16)],%q,[add(%qS,15)])))])],|)]%r+[repeat(-,78)]+ &TT`FNC`SHOW`GRID Triple Triad Global=th [setq(ID,u(me/TT`GAME`%0`GAME))][setq(Rules,u(me/TT`GAME`%q`RULES),Blue,u(TT`GAME`%q`BLUE),Red,u(TT`GAME`%q`RED))] ; @include me/TT`FNC`SCORE=%q,%q,%q ; @pemit %q=u(TT`GRID`P1,%q,%q,%q) ; @pemit %q=u(TT`GRID`P2,%q,%q,%q) ; @switch/inline and(not(match(%q,Private)),not(match(%q,Broadcast)),words(u(TT`GAME`%q`SPECTATE)))=1,@dolist/inline u(TT`GAME`%q`SPECTATE)=@pemit %i0=u(TT`GRID`SP,%q,%q,%q) ; @switch/inline and(not(match(%q,Private)),match(%q,Broadcast))=1,@oemit loc(%q)/%q %q=u(TT`GRID`SP,%q,%q,%q) ; @switch/inline match(u(TT`GAME`%q`GRID),0000)=0,@include me/TT`FNC`FINISH=%q &TT`FNC`STATS Triple Triad Global=%r+[repeat(-,78)+%r[align(1 -76 1,|,[ansi(gD,Triple Triad - %0's Stats)],|)]%r+[repeat(-,39)+[repeat(-,38)+%r[align(1. 27(cD) >4 4 1. 27(cD) >4 3 1.,|,%r[ansi(ngD,Game Stats)]%rPlayed :%rInstigator :%rWin :%rLose :%rTies :%rDid Not Finish :%r%r,%r%r[extract(%q,1,1)]%b%r[extract(%q,2,1)]%b%r[extract(%q,3,1)]%b%r[extract(%q,4,1)]%b%r[extract(%q,5,1)]%b%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,6,1),extract(%q,1,1)),100),0))][\%]%r%r,%b,|,%r[ansi(ngD,Card Stats)]%rOwned :%rRare :%rWon :%rBought :%rLost :%rPoints Earned :%r%r,%r%r[extract(%q,7,1)]%b%r[extract(%q,8,1)]%b%r[extract(%q,9,1)]%b%r[extract(%q,10,1)]%b%r[extract(%q,11,1)]%b%r[extract(%q,12,1)]%b%r%r,%b,|)]%r+[repeat(-,39)+[repeat(-,38)+%r[align(1. 27(cD) >4 4 1. 27(cD) >4 3 1.,|,%r[ansi(ngD,Rules Stats)]%rOpen :%rSame :%rWall :%rPlus :%rCombo :%rElemental :%r%r,%r%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,13,1),extract(%q,1,1)),100),0))][\%]%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,14,1),extract(%q,1,1)),100),0))][\%]%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,15,1),extract(%q,1,1)),100),0))][\%]%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,16,1),extract(%q,1,1)),100),0))][\%]%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,17,1),extract(%q,1,1)),100),0))][\%]%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,18,1),extract(%q,1,1)),100),0))][\%]%r%r,%b,%b,%r%rNone :%rOne :%rDiff :%rAll :%r%rLimitless :%r%r,%r%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,19,1),extract(%q,1,1)),100),0))][\%]%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,20,1),extract(%q,1,1)),100),0))][\%]%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,21,1),extract(%q,1,1)),100),0))][\%]%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,22,1),extract(%q,1,1)),100),0))][\%]%r%r[switch(extract(%q,1,1),0,0,round(mul(fdiv(extract(%q,23,1),extract(%q,1,1)),100),0))][\%]%r%r,%b,|)]%r+[repeat(-,78)+ &TT`FNC`TAKECARD Triple Triad Global=th [setq(ID,%0)] ; th [setq(Winner,%1,Loser,%2,Deck,%3)] ; @dolist/inline %q={ th [setq(Set,left(%i0,1),Nb,right(%i0,3),LV,extract(u(TT`DATA`%i0`STAT),6,1))] ; &TT`CARDS`%q %q=[setq(Cards,u(%q/TT`CARDS`%q))][replace(%q,%q,bound(inc(extract(%q,%q,1)),0,extract(u(TT`DATA`MAX`%q),%q,1)))] ; &TT`CARDS`%q %q=[setq(Cards,u(%q/TT`CARDS`%q))][replace(%q,%q,bound(dec(extract(%q,%q,1)),0,extract(u(TT`DATA`MAX`%q),%q,1)))] ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,9,inc(extract(%q,9,1)))] ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,11,inc(extract(%q,11,1)))] } ; @pemit %q=[ansi(bD,Triple Triad)] - You have earned all of the opponent's cards used in this game\, they were added to your stash. ; @pemit %q=[ansi(rD,Triple Triad)] - You have lost all of the cards used in this game. ; @wipe #300/TT`GAME`%q ; @wipe me/TT`GAME`%q ; @wipe me/TT`GAME`%q ; @include me/TT`FNC`CHECKSTASH=%q ; @include me/TT`FNC`CHECKSTASH=%q &TT`FNC`TIEGAME Triple Triad Global=th [setq(Blue,u(me/TT`GAME`%0`BLUE),Red,u(me/TT`GAME`%0`RED))] ; @pemit %q=%r[ansi(gD,Triple Triad)] - You have tied the game! The cards are reset for a new game.%r ; @pemit %q=%r[ansi(gD,Triple Triad)] - You have tied the game! The cards are reset for a new game.%r ; @switch/inline and(not(match(%q,Private)),not(match(%q,Broadcast)),words(u(TT`GAME`%q`SPECTATE)))=1,@dolist/inline u(TT`GAME`%q`SPECTATE)=@pemit %i0=[ansi(gD,Triple Triad)] - Tied game! The Cards are reset. ; @switch/inline and(not(match(%q,Private)),match(%q,Broadcast))=1,@oemit loc(%q)/%q %q=[ansi(gD,Triple Triad)] - Tied game! The Cards are reset. ; &TT`GAME`%q`HAND me=u(TT`GAME`%q`INIT) ; &TT`GAME`%q`HAND me=u(TT`GAME`%q`INIT) ; &TT`GAME`%q`GRID me=[switch(match(%q,Wall),>0,0001 0001 0001 0001 0001 0001 0000 0000 0000 0001 0001 0000 0000 0000 0001 0001 0000 0000 0000 0001 0001 0001 0001 0001 0001,0002 0002 0002 0002 0002 0002 0000 0000 0000 0002 0002 0000 0000 0000 0002 0002 0000 0000 0000 0002 0002 0002 0002 0002 0002)] ; &TT`GAME`%0`GRIDC me=D D D D D D D D D D D D D D D D D D D D D D D D D ; &TT`GAME`%q`ELEM me=None None None None None [switch(match(%q,Elemental),0,None None None None None None None None None,[u(me/TT`FNC`RANDELEM)])] None None None None None ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,5,inc(extract(%q,5,1)))] ; &TT`STATS %q=[setq(Stats,u(%q/TT`STATS))][replace(%q,5,inc(extract(%q,5,1)))] ; &TT`GAME`%0`TURN me=randword(u(TT`GAME`%0`PLAYERS)) ; @include/clearregs me/TT`FNC`SHOW`GRID=%q &TT`GAME Triple Triad Global= &TT`GLOBAL Triple Triad Global=#300 &TT`GRID Triple Triad Global= &TT`GRID`BLANK Triple Triad Global= &TT`GRID`BLANK`HAND Triple Triad Global=[switch(%1,0,+,%1)][repeat(-,5)]+%r|%b%b%b%b%b|%r|%b%b[switch(%0,Fire,ansi(yR,F),Lightning,ansi(xC,L),Ice,ansi(xC,I),Earth,ansi(xG,E),Wind,ansi(xG,W),Holy,ansi(xW,H),Poison,ansi(xM,P),Water,ansi(wB,W),%b)]%b%b|%r|%b%b%b%b%b|%r+[repeat(-,5)]+%r &TT`GRID`DRAW Triple Triad Global= &TT`GRID`DRAW`BLANK Triple Triad Global=[switch(%1,0,+,u(TT`FNC`FINDNUM,%1))][repeat(-,5)]+%r|%b%b%b%b%b|%r|%b%b[switch(%0,Fire,ansi(yR,F),Lightning,ansi(xC,L),Ice,ansi(xC,I),Earth,ansi(xG,E),Wind,ansi(xG,W),Holy,ansi(xW,H),Poison,ansi(xM,P),Water,ansi(wB,W),%b)]%b%b|%r|%b%b%b%b%b|%r+[repeat(-,5)]+%r &TT`GRID`DRAW`CARD Triple Triad Global=[setq(Card,u(me/TT`DATA`%0`STAT))][setq(CStats,extract(%q,1,4,%b),CElem,extract(%q,5,1,%b))][ansi(switch(%1,R,hwR,B,wB),[switch(%3,0,+,u(TT`FNC`FINDNUM,%3))][repeat(-,5)]+%r|[switch(extract(%q,5,1,%b),Fire,ansi(nyR,F),Lightning,ansi(nxC,L),Ice,ansi(nxC,I),Earth,ansi(nxG,E),Wind,ansi(nxG,W),Holy,ansi(nxW,H),Poison,ansi(nxM,P),Water,ansi(hwB,W),%b)]%b[switch(extract(%q,1,1,%b),10,A,extract(%q,1,1,%b))]%b%b|%r|%b[switch(extract(%q,2,1,%b),10,A,extract(%q,2,1,%b))]%b[switch(extract(%q,3,1,%b),10,A,extract(%q,3,1,%b))]%b|%r|%b%b[switch(extract(%q,4,1,%b),10,A,extract(%q,4,1,%b))]%b%b|%r+[repeat(-,3)][switch(%2,None,--,%q,ansi(switch(%1,R,bW,B,rW),+1),ansi(switch(%1,R,bW,B,rW),-1))]+%r)] &TT`GRID`DRAW`HAND Triple Triad Global=[setq(Card,u(me/TT`DATA`%0`STAT))][setq(CStats,extract(%q,1,4,%b),CElem,extract(%q,5,1,%b))][ansi(switch(%1,R,hwR,B,wB),[switch(%3,0,+,%3)][repeat(-,5)]+%r|[switch(extract(%q,5,1,%b),Fire,ansi(nyR,F),Lightning,ansi(nxC,L),Ice,ansi(nxC,I),Earth,ansi(nxG,E),Wind,ansi(nxG,W),Holy,ansi(nxW,H),Poison,ansi(nxM,P),Water,ansi(hwB,W),%b)]%b[switch(extract(%q,1,1,%b),10,A,extract(%q,1,1,%b))]%b%b|%r|%b[switch(extract(%q,2,1,%b),10,A,extract(%q,2,1,%b))]%b[switch(extract(%q,3,1,%b),10,A,extract(%q,3,1,%b))]%b|%r|%b%b[switch(extract(%q,4,1,%b),10,A,extract(%q,4,1,%b))]%b%b|%r+[repeat(-,3)][switch(%2,None,--,%q,ansi(switch(%1,R,bW,B,rW),+1),ansi(switch(%1,R,bW,B,rW),-1))]+%r)] &TT`GRID`P1 Triple Triad Global=[setq(HandP1,u(me/TT`GAME`%1`HAND),HandP2,u(me/TT`GAME`%2`HAND))][setq(Grid,u(me/TT`GAME`%0`GRID),Color,u(me/TT`GAME`%0`GRIDC),Elem,u(me/TT`GAME`%0`ELEM))][ulocal(me/TT`GRID`P1`TOP,%0,%1,%2)][ulocal(me/TT`GRID`P1`CENTER,%0,%1,%2)][ulocal(me/TT`GRID`P1`BOTTOM,,%0,%1,%2)] &TT`GRID`P1`BOTTOM Triple Triad Global=[align(1 7 0 7 0 7 0 7 0 7 38,,[switch(extract(%q,1,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,1))],u(me/TT`GRID`DRAW`HAND,extract(%q,1,1,%b),B,None,1))], ,[switch(extract(%q,2,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,2))],u(me/TT`GRID`DRAW`HAND,extract(%q,2,1,%b),B,None,2))], ,[switch(extract(%q,3,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,3))],u(me/TT`GRID`DRAW`HAND,extract(%q,3,1,%b),B,None,3))], ,[switch(extract(%q,4,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,4))],u(me/TT`GRID`DRAW`HAND,extract(%q,4,1,%b),B,None,4))], ,[switch(extract(%q,5,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,5))],u(me/TT`GRID`DRAW`HAND,extract(%q,5,1,%b),B,None,5))],%b[iter(1 2 3 4 5,[space(2)]%i0. [u(TT`DATA`[extract(%q,%i0,1,%b)])]%r)])] &TT`GRID`P1`CENTER Triple Triad Global=[align(1 -25 7 7 7 -25 1,%b,%r%r%r%r[switch(u(me/TT`GAME`%0`TURN),%1,[ansi(cD,It's%ryour turn%r to play.)],[ansi(rD,It's%r[name(%2)]'s%r turn to play.)])]%r%r%r%r%r [ansi(gD,Trading : [switch(match(%q,none),>0,None%b)][switch(match(%q,one),>0,One%b)][switch(match(%q,diff),>0,Diff%b)][switch(match(%q,all),>0,All%b)]%r-%r [switch(match(%q,open),>0,Open%b)][switch(match(%q,same),>0,Same%b)][switch(match(%q,wall),>0,Wall%b)][switch(match(%q,plus),>0,Plus%b)][switch(match(%q,combo),>0,Combo%b)][switch(match(%q,elemental),>0,Elemental%b)][switch(match(%q,limitless),>0,[ansi(rD,Limitless)])])],[iter(7 12 17,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),%i0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),%i0))])],[iter(8 13 18,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),%i0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),%i0))])],[iter(9 14 19,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),%i0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),%i0))])],%r[ansi(rD,Score:%r%q)]%r%r%r%r%r%r%r%r%r%r%r%r[ansi(cD,Score:%r%q)],%b)]%r%r &TT`GRID`P1`TOP Triple Triad Global=[switch(match(u(me/TT`GAME`%0`RULES),Open),>0,[align(39 7 0 7 0 7 0 7 0 7,%b[iter(1 2 3 4 5,[space(2)]%i0. [u(TT`DATA`[extract(%q,%i0,1,%b)])]%r)],[switch(extract(%q,1,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,1))],u(me/TT`GRID`DRAW`HAND,extract(%q,1,1,%b),R,None,1))],,[switch(extract(%q,2,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,2))],u(me/TT`GRID`DRAW`HAND,extract(%q,2,1,%b),R,None,2))],,[switch(extract(%q,3,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,3))],u(me/TT`GRID`DRAW`HAND,extract(%q,3,1,%b),R,None,3))],,[switch(extract(%q,4,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,4))],u(me/TT`GRID`DRAW`HAND,extract(%q,4,1,%b),R,None,4))],,[switch(extract(%q,5,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,5))],u(me/TT`GRID`DRAW`HAND,extract(%q,5,1,%b),R,None,5))],%b)],[align(40 7 0 7 0 7 0 7 0 7,,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,0))],,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,0))],,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,0))],,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,0))],,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,0))],%b)])]%r%r &TT`GRID`P2 Triple Triad Global=[setq(HandP1,u(me/TT`GAME`%1`HAND),HandP2,ulocal(me/TT`GAME`%2`HAND))][setq(Grid,u(me/TT`GAME`%0`GRID),Color,u(me/TT`GAME`%0`GRIDC),Elem,u(me/TT`GAME`%0`ELEM))][ulocal(me/TT`GRID`P2`TOP,%0,%1,%2)][ulocal(me/TT`GRID`P2`CENTER,%0,%1,%2)][ulocal(me/TT`GRID`P2`BOTTOM,,%0,%1,%2)] &TT`GRID`P2`BOTTOM Triple Triad Global=[align(1 7 0 7 0 7 0 7 0 7 38,,[switch(extract(%q,1,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,1))],u(me/TT`GRID`DRAW`HAND,extract(%q,1,1,%b),R,None,1))], ,[switch(extract(%q,2,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,2))],u(me/TT`GRID`DRAW`HAND,extract(%q,2,1,%b),R,None,2))], ,[switch(extract(%q,3,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,3))],u(me/TT`GRID`DRAW`HAND,extract(%q,3,1,%b),R,None,3))], ,[switch(extract(%q,4,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,4))],u(me/TT`GRID`DRAW`HAND,extract(%q,4,1,%b),R,None,4))], ,[switch(extract(%q,5,1,%b),0000,[ansi(hwR,u(TT`GRID`BLANK`HAND,None,5))],u(me/TT`GRID`DRAW`HAND,extract(%q,5,1,%b),R,None,5))],%b[iter(1 2 3 4 5,[space(2)]%i0. [u(TT`DATA`[extract(%q,%i0,1,%b)])]%r)])] &TT`GRID`P2`CENTER Triple Triad Global=[align(1 -25 7 7 7 -25 1,%b,%r%r%r[switch(u(me/TT`GAME`%0`TURN),%1,[ansi(cD,It's%r[name(%1)]'s%r turn to play.)],[ansi(rD,It's%ryour turn%r turn to play.)])]%r%r%r%r%r[ansi(gD,Trading : [switch(match(%q,none),>0,None%b)][switch(match(%q,one),>0,One%b)][switch(match(%q,diff),>0,Diff%b)][switch(match(%q,all),>0,All%b)]%r-%r [switch(match(%q,open),>0,Open%b)][switch(match(%q,same),>0,Same%b)][switch(match(%q,wall),>0,Wall%b)][switch(match(%q,plus),>0,Plus%b)][switch(match(%q,combo),>0,Combo%b)][switch(match(%q,elemental),>0,Elemental%b)][switch(match(%q,limitless),>0,[ansi(rD,Limitless)])])],[iter(7 12 17,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),%i0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),%i0))])],[iter(8 13 18,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),%i0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),%i0))])],[iter(9 14 19,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),%i0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),%i0))])],%r[ansi(cD,Score:%r%q)]%r%r%r%r%r%r%r%r%r%r%r%r[ansi(rD,Score:%r%q)],%b)]%r%r &TT`GRID`P2`TOP Triple Triad Global=[switch(match(u(me/TT`GAME`%0`RULES),Open),>0,[align(40 7 0 7 0 7 0 7 0 7,%b[iter(1 2 3 4 5,%b[space(2)]%i0. [u(TT`DATA`[extract(%q,%i0,1,%b)])]%r)],[switch(extract(%q,1,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,1))],u(me/TT`GRID`DRAW`HAND,extract(%q,1,1,%b),B,None,1))],,[switch(extract(%q,2,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,2))],u(me/TT`GRID`DRAW`HAND,extract(%q,2,1,%b),B,None,2))],,[switch(extract(%q,3,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,3))],u(me/TT`GRID`DRAW`HAND,extract(%q,3,1,%b),B,None,3))],,[switch(extract(%q,4,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,4))],u(me/TT`GRID`DRAW`HAND,extract(%q,4,1,%b),B,None,4))],,[switch(extract(%q,5,1,%b),0000,[ansi(wB,u(TT`GRID`BLANK`HAND,None,5))],u(me/TT`GRID`DRAW`HAND,extract(%q,5,1,%b),B,None,5))],%b)],[align(40 7 0 7 0 7 0 7 0 7,,[ansi(wB,u(TT`GRID`BLANK`HAND,None,0))],,[ansi(wB,u(TT`GRID`BLANK`HAND,None,0))],,[ansi(wB,u(TT`GRID`BLANK`HAND,None,0))],,[ansi(wB,u(TT`GRID`BLANK`HAND,None,0))],,[ansi(wB,u(TT`GRID`BLANK`HAND,None,0))],%b)])]%r%r &TT`GRID`SP Triple Triad Global=[setq(Grid,u(me/TT`GAME`%0`GRID),Color,u(me/TT`GAME`%0`GRIDC),Elem,u(me/TT`GAME`%0`ELEM),Rules,u(me/TT`GAME`%0`RULES))][ulocal(me/TT`GRID`SP`CENTER,%0,%1,%2)] &TT`GRID`SP`CENTER Triple Triad Global=[align(1 -25 7 7 7 -25 1,%b,%r%r%r%r[switch(u(me/TT`GAME`%0`TURN),%1,[ansi(cD,It's%r[name(%1)]'s%r turn to play.)],[ansi(rD,It's%r[name(%2)]'s%r turn to play.)])]%r%r%r%r%r [ansi(gD,Trading : [switch(match(%q,none),>0,None%b)][switch(match(%q,one),>0,One%b)][switch(match(%q,diff),>0,Diff%b)][switch(match(%q,all),>0,All%b)]%r-%r [switch(match(%q,open),>0,Open%b)][switch(match(%q,same),>0,Same%b)][switch(match(%q,wall),>0,Wall%b)][switch(match(%q,plus),>0,Plus%b)][switch(match(%q,combo),>0,Combo%b)][switch(match(%q,elemental),>0,Elemental%b)][switch(match(%q,limitless),>0,[ansi(rD,Limitless)])])],[iter(7 12 17,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),0))])],[iter(8 13 18,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),0))])],[iter(9 14 19,[switch(extract(%q,%i0,1,%b),0000,[ansi(dD,u(TT`GRID`DRAW`BLANK,extract(%q,%i0,1,%b),0))],u(me/TT`GRID`DRAW`CARD,extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),extract(%q,%i0,1,%b),0))])],%r[ansi(rD,[name(%1)]%rScore:%r%q)]%r%r%r%r%r%r%r%r%r%r[ansi(cD,[name(%2)]%rScore:%r%q)],%b)]%r%r &TT`HELP Triple Triad Global= &TT`HELP`ALL Triple Triad Global=$+TT/Help All:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - All Rule)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rSelf-explanatory\, this rule lets the victor take away all of the cards used by their opponent in the game.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`BASIC Triple Triad Global=$+TT/Help Basic:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - The Basics)],|)]%r+[repeat(-,78)]+%r[align(1. 7 68 1.,|,%r[ansi(wB,+-----+%r|[ansi(yR,F)]%b5%b%b|%r|%b3%b2%b|%r|%b%b4%b%b|%r+-----+%r)],%rThis is a standard game card. It features 4 'attack levels'\, or Ranks\, ranging from 1 to 10 (or A). The top left corner also has an elemental\, in this case Fire. We will come back to Elementals later. The cards come in two colors\, Blue and Red.%r,|)]%r[align(1. 76 1.,|,%rWhen you play\, the position of those numbers is important. The direction it faces (Up, Left, Right, Down) will 'attack' in that direction. Like below.%r,|)]%r[align(1. 60 7 7 1.,|,%rIn this example\, the 2 from the blue card is higher than the 1 of the red card. Which means that the Blue card wins. In a game\, it would flip the Red card to the Blue color. This is the most basic rule\, the 'Attack' rule. It will be refered to in other rules later.%r%r,%r[ansi(wB,+-----+%r|[ansi(yR,F)]%b5%b%b|%r|%b3%b2%b|%r|%b%b4%b%b|%r+-----+%r)],%r[ansi(hwR,+-----+%r|%b%b7%b%b|%r|%b1%b1%b|%r|%b%b2%b%b|%r+-----+%r)],|)]%r[align(1. 76 1.,|,The cards are divided into 10 levels\, which comes in play when you build your deck. You have a limit of [u(TT`DECK`MAX)] levels when you add all 5 cards of your hand\, for the purpose of balancing strength during games. This limit can be bypassed using the [ansi(gD,Limitless)] rule.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`BROADCAST Triple Triad Global=$+TT/Help Broadcast:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - Broadcast Option)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rThe game results and grid will be sent to the entire room. This is mostly for use in certain RP or events\, such as a tournament's final. Please avoid using this option unless everyone in the room agrees to it of course!%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`CARDS Triple Triad Global=$+TT/Help Cards:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - The Cards)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rTo play the game\, you first need to get cards. With these commands you get get more familiarized with the cards you possess and view basic information as well. Note there are limits per card different cards that you can have in your stash\, depending on their level and series. [ansi(rD,If you try to take cards over that limit\, they will be lost without warning.)]%r,|)]%r+[repeat(-,78)+%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Starter)]%r,%b,%rInitializes you for playing\, and gives you a starting set of 20 cards : Level 1 x 5\, Level 2 x 4\, Level 3 x 3\, Level 4 x 2\, Level 5 to 10 x1%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Stash )]%r,%b,%rChecks on your current stash of cards and their ammount. Page is optional.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Detail )]%r,%b,%rSimilar to stash\, but shows more details like the card values. Page is optional.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Card )]%r,%b,%rChecks on a card's Level\, Stats and how much you own of it.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Stats )]%r,%b,%rChecks on the Game stats of a player. can be omitted to check on your own statistics.%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`COMBO Triple Triad Global=$+TT/Help Combo:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - Combo Rule)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rYou ever seen a game that you were winning by a landslide and a single card from your opponent turned it into a crushing defeat for you? That's the Combo rule. It doesn't work on its own\, it first requires a Same\, Wall or a Plus combination to be used. When Same or Plus is triggered\, the two cards that were flipped to your color are played in as if they had been placed by you\, using the standard 'attack' rule.%r%r,|)]%r[align(1. 7 7 60 1.,|,[ansi(wB,+-----+%r|%b%b5%b%b|%r|%b3%b2%b|%r|%b%b4%b%b|%r+-----+%r)]%r[ansi(hwR,+-----+%r|%b%b8%b%b|%r|%b6%b2%b|%r|%b%b3%b%b|%r+-----+%r)]%r[ansi(hwR,+-----+%r|%b%b1%b%b|%r|%b3%b4%b|%r|%b%b5%b%b|%r+-----+%r)],[ansi(hwR,+-----+%r|%b%b3%b%b|%r|%bA%b6%b|%r|%b%b6%b%b|%r+-----+%r)],This is the same example than the Plus rule\, to which we added one card. In the Plus rule\, only the two nearby cards would be flipped. But by adding the Combo rule\, the bottom-most card will also be flipped. How so? Because the middle card flips to Blue\, and since the Combo rule is in effect\, the '3' on the middle card is higher than the '1' on the lower card. A single card\, and you turned 3 cards to Blue.%r%rFurthermore\, each card that was flipped as part of the Combo will also be considered as played in on that turn. So the bottom card will also try to 'attack' nearby cards. It's possible to flip the entire board in a single card with this.%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`CUSTOM Triple Triad Global=$+TT/Help Custom:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - Custom Cards)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rCustom cards are unique cards\, in the "X" series. They are priced higher than standard series of cards\, because of their rarity\, and created by request or need. Each custom card can also reflect the personality of the depicted person\, their style and their elemental. While many people can buy these cards\, each player can only have one of each in their stash. Custom cards are not about the power or level they display\, but about their rarity and collecting value. Few people choose to play with them when using Trading rules. %r%rThe price of creating a Custom card is [div(u(v(TT`GLOBAL)/TT`DATA`COST`X`SING),2)] points per level. The cards can be of any level\, but the total points used on the card need to match with the level :%r%r,|)]%r[align(1. 38 0 37 1.,|,[ansi(gD,Level %b1)] : 10-13%r[ansi(gD,Level %b2)] : 12-15%r[ansi(gD,Level %b3)] : 14-17%r[ansi(gD,Level %b4)] : 16-19%r[ansi(gD,Level %b5)] : 18-21%r,,[ansi(gD,Level %b6)] : 20-23%r[ansi(gD,Level %b7)] : 22-25%r[ansi(gD,Level %b8)] : 24-26%r[ansi(gD,Level %b9)] : 24-27%r[ansi(gD,Level 10)] : 26-29%r,|)]%r[align(1. 76 1.,|,%rThe command to create a new custom card is :%r[ansi(gD,+TT/Custom /= )]%rExample : [ansi(gD,+TT/Custom [name(%#)]/4=3 4 5 6 Fire)]%r%rThe [ansi(gD,+TT/Help Random=)] command is a tool to help you\, giving you 5 random series of 4 numbers that are within the range of the specified level.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`DECK Triple Triad Global=$+TT/Help Deck:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - The Cards)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rAfter getting your cards\, you need a Deck to play. The Decks are referenced by a [ansi(rD,single word name)] that you give it. Decks start as empty\, and then you edit then adding or removing cards. Decks with less than 5 cards cannot be used in a game.%r%rThere is a warning if your deck is higher than [u(TT`DECK`MAX)] levels by adding all 5 cards\, but you can still keep the deck as such\, for use of the [ansi(gD,Limitless)] rule.%r%r,|)]%r+[repeat(-,78)]+%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Deck Create=%r)]%r,%b,%rCreates a Deck named .%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Deck Delete=%r)]%r,%b,%rDeletes your deck.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Deck List)]%r,%b,%rList your currently saved decks.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Deck Add/=%r\,\,...)]%r,%b,%rAdds the Card to the Deck. You can add many cards in a single command like this.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Deck Rem/=%r\,\,...)]%r,%b,%rRemoves the Card from the Deck . You can remove many cards with a single command.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Deck Check=%r)]%r,%b,%rReviews the cards in your Deck\, but also the total level of the cards. It also lets you know if you're lacking cards to play with that deck.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`DIFF Triple Triad Global=$+TT/Help Diff:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - Diff Rule)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rThis rule allows you to take as many cards as the score difference. The number of cards you get is (Score-5). So with this rule you can choose 1 to 4 cards from your opponent's hand.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`ELEM Triple Triad Global=$+TT/Help Elemental:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - Elemental Rule)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rWhen you play a game with the Elemental rule\, some icons will appear on the otherwise empty game grid. Those match the icons that appear in the upper left corner of the cards. Those are Elementals. There are 8 elementals\, and playing a card on that spot will have one of two effects :%r%r-If the card played has the same elemental\, all of the 'attack' values will increase by one (Maximum of 10/A).%r%r-If the card played is different elemental\, or has no elemental\, each value will decrease by one (Minimum of 1).%r%r,|)]%r[align(1. 7 68 1.,|,[ansi(wB,+-----+%r|[ansi(yF,F)]%b5%b%b|%r|%b3%b2%b|%r|%b%b4%b%b|%r+---[ansi(hr,+1)]+%r)],These value changes do NOT affect the use of Same/Plus/Wall combinations\, but it DOES affect the Combo's rule 'attack' values. For Same/Wall/Plus\, only the original value applies.%r%rWhen a card is under the effect of elemental\, the bottom left corner shows a "+1" or a "-1" to show there is a value change\, like you can see on the example on the left. Pay attention!%r%r,|)]%r[align(1. 16 20 1 20 15 1.,|,,[ansi(yR,F)] Fire%r[ansi(xC,I)] Ice%r[ansi(xG,W)] Wind%r[ansi(xG,E)] Earth%r%r,%b,[ansi(xC,L)] Lightning%r[ansi(wB,W)] Water%r[ansi(xW,H)] Holy%r[ansi(xM,P)] Poison%r%r,%b,|)]%r+[repeat(-,78)]+%r &TT`HELP`GRID Triple Triad Global=$+TT/Help Grid:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - The Grid)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rHere is a sample of the game grid as you will see during the game.%r%rFirst up\, the Top of the grid.%r%r,|)]%r+[repeat(-,78)]+%r[align(1. 36 7 0 7 0 7 0 7 0 7 1.,|,%r1. Funguar%r2. Bite Bug%r3. Buel%r4. Snow Lion%r5. Phoenix%r,%r[ansi(hwR,1-----+%r|%b%b5%b%b|%r|%b3%b1%b|%r|%b%b1%b%b|%r+-----+)]%r,,%r[ansi(hwR,2-----+%r|%b%b1%b%b|%r|%b5%b3%b|%r|%b%b3%b%b|%r+-----+)]%r,,%r[ansi(hwR,3-----+%r|%b%b6%b%b|%r|%b3%b2%b|%r|%b%b2%b%b|%r+-----+)]%r,,%r[ansi(hwR,4-----+%r|[ansi(xC,I)]%b7%b%b|%r|%b3%b1%b|%r|%b%b5%b%b|%r+-----+)]%r,,%r[ansi(hwR,5-----+%r|[ansi(yR,F)]%b7%b%b|%r|%bA%b2%b|%r|%b%b7%b%b|%r+-----+)]%r,|)]%r[align(1. 76 1.,|,%rThis is where you will see your opponent's cards. If you are using the Open rule\, as in the example\, you will see the card names and their values as well. The left side has the names of the cards still unplayed\, while the right side has the card pictures.%r%rNote the numbers in the upper left corner of each card picture to help you figure out which card is which.%r%r,|)]%r+[repeat(-,78)]+%r[align(1 -76 1,|,Continued in [ansi(gD,+TT/Help Grid2)],|)]%r+[repeat(-,78)]+%r &TT`HELP`GRID2 Triple Triad Global=$+TT/Help Grid2:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - The Grid Part 2)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rThis time\, its the middle of the grid.%r%r,|)]%r+[repeat(-,78)]+%r[align(1. -25 7 7 7 -26 1.,|,%r%r%r%r%r%r%r%r[ansi(cD,It's%ryour turn%rto play)],%r[ansi(wB,1-----+%r|%b%b5%b%b|%r|%b3%b1%b|%r|%b%b1%b%b|%r+---[ansi(hr,-1)]+)]%r%r[ansi(dD,4-----+%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r+-----+)]%r%r[ansi(dD,7-----+%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r+-----+)]%r%r,%r[ansi(hwR,2-----+%r|%b%b5%b%b|%r|%b3%b1%b|%r|%b%b1%b%b|%r+-----+)]%r%r[ansi(dD,5-----+%r|%b%b%b%b%b|%r|%b%b[ansi(yR,F)]%b%b|%r|%b%b%b%b%b|%r+-----+)]%r%r[ansi(dD,8-----+%r|%b%b%b%b%b|%r|%b%b[ansi(xC,I)]%b%b|%r|%b%b%b%b%b|%r+-----+)]%r%r,%r[ansi(dD,3-----+%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r+-----+)]%r%r[ansi(dD,6-----+%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r+-----+)]%r%r[ansi(dD,9-----+%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r|%b%b%b%b%b|%r+-----+)]%r%r,%r%r[ansi(rD,Score:%r5)]%r%r%r%r%r%r%r%r%r%r%r%r[ansi(cD,Score:%r5)],|)]%r[align(1. 76 1.,|,Things to note\, the card pictures are also numbered for convenience when you play. The empty spots with a colored letter are the Elemental in effect. Thus the spot #5 is Fire and the spot #8 is Ice. Also because of the elemental rule\, you can see that the card in #1 has a '-1' in it.%r%rThe left side shows who's turn it is\, while the right side shows the current score.%r%r,|)]%r+[repeat(-,78)]+%r[align(1 -76 1,|,Continued in [ansi(gD,+TT/Help Grid3)],|)]%r+[repeat(-,78)]+%r &TT`HELP`GRID3 Triple Triad Global=$+TT/Help Grid3:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - The Grid Part 3)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rFinally the bottom part.%r%r,|)]%r+[repeat(-,78)]+%r[align(1. 7 0 7 0 7 0 7 0 7 36 1.,|,%r[ansi(wB,1-----+%r|%b%b5%b%b|%r|%b3%b1%b|%r|%b%b1%b%b|%r+-----+)]%r,,%r[ansi(wB,2-----+%r|%b%b1%b%b|%r|%b5%b3%b|%r|%b%b3%b%b|%r+-----+)]%r,,%r[ansi(wB,3-----+%r|%b%b6%b%b|%r|%b3%b2%b|%r|%b%b2%b%b|%r+-----+)]%r,,%r[ansi(wB,4-----+%r|[ansi(xC,I)]%b7%b%b|%r|%b3%b1%b|%r|%b%b5%b%b|%r+-----+)]%r,,%r[ansi(wB,5-----+%r|[ansi(yR,F)]%b7%b%b|%r|%bA%b2%b|%r|%b%b7%b%b|%r+-----+)]%r,%r1. Funguar%r2. Bite Bug%r3. Buel%r4. Snow Lion%r5. Phoenix%r,|)]%r[align(1. 76 1.,|,%rAs you can see\, same basic as the top part\, except you will always be able to see what cards are in your hand\, of course. Your hand is always at the bottom\, no matter if you play Red or Blue.%r%r,|)]%r+[repeat(-,78)]+ &TT`HELP`LIMITLESS Triple Triad Global=$+TT/Help Limitless:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - Limitless Rule)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rNormally when you build a deck\, you are limited to a total of [u(TT`DECK`MAX)] levels\, by adding all of your cards together. The Limitless rule can be considered as an Exhibition rule\, in which that limit is removed. It allows players to play with high level cards all they wish.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`MAIN Triple Triad Global=$+TT/Help:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rThe most popular card game in Esthar makes his way to this multiverse\, and now you can enjoy it as well! Collect the cards\, play the game\, buy new ones\, earn them from your opponents\, anything goes! Here's how you can play it too!%r%r,|)]%r+[repeat(-,78)]+%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Help Basic)]%r,%b,%rHere is the basic understanding of the game.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Help Grid)]%r,%b,%rBasic outline and placement of the grid.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Help Rules)]%r,%b,%rWhat are the different rules and how they work.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Help Cards)]%r,%b,%rHow to start the game\, check on cards and statistics.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Help Deck)]%r,%b,%rHow to create and edit your decks.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Help Shop)]%r,%b,%rHow to buy new cards.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Help Play)]%r,%b,%rHow to play the game.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`NONE Triple Triad Global=$+TT/Help None:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - None Rule)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rThis Trading rule allows to play others without fear of losing their precious cards. It's considered as an exhibition rule as a result.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`ONE Triple Triad Global=$+TT/Help One:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - One Rule)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rThe default trading rule\, if you don't specify any trading rule\, it automatically sets it as [ansi(gD,One)]. This rule allows the victor to take one card of their choosing from the loser's hand. Only cards that are played can be taken like this.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`OPEN Triple Triad Global=$+TT/Help Open:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - Open Rule)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rSimple and to the point\, this rule will allow you to see what your opponent's cards are\ in their hands\, before they play it. Beware\, it also means they can see yours.%r%rFrom a gameplay standpoint\, it gives an advantage to see what cards your opponent has left\, so you can try to corner them or block them from earning a card\, or setting up Same/Plus/Wall combinations.%r%r,|)]%r+[repeat(-,78)]+%r &TT`HELP`PLAY Triple Triad Global=$+TT/Help Play:@pemit %#=+[repeat(-,78)]+%r[align(1 -76 1,|,[ansi(gD,Triple Triad Help - The Gameplay)],|)]%r+[repeat(-,78)]+%r[align(1. 76 1.,|,%rWhen you are ready to play\, here's how you do it!%r%r,|)]%r+[repeat(-,78)]+%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Game =%r\,%r <...>)]%r,%b,%rStart a game vs \, using \, and the specified. It sends the invite to the requested player. The invite also shows has the rules chosen for the game. Put spaces between each rule.,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Accept )]%r,%b,%rThe invited person uses this to start the game using their specified Deck.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Refuse)]%r,%b,%rIf the invited person refuses to play.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Play =)]%r,%b,%rPlays the Card # from your hand into the Grid position #. Use the numbers seen in the top left corner of each card for this.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Grid)]%r,%b,%rIf you lost track of the game\, this will allow you to check the on the table one more.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Choose \,\,<...>)]%r,%b,%rAfter winning the game\, if trading rules allow\, you can take cards from your opponent's hand. Put commas between each card.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Cancel)]%r,%b,%rCancels the current game. Cards will not be lost doing this\, but if done in the middle of a game\, a record will be kept in the player's statistics.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Spectate Join=)]%r,%b,%rEnters spectating mode for the game is playing.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Spectate Leave)]%r,%b,%rStops spectating the game in progress.%r,|)]%r[align(1. 20 1 53 1.,|,%r[ansi(gD,+TT/Option