Permalink
Cannot retrieve contributors at this time
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
249 lines (235 sloc)
6.15 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Capuche cleaning Base on the poring race by Zell_ff8, xianz, Neko, for fun | |
| prontera,139,184,5 script Poring Race 882,{ | |
| if( .access_Prace == 0 ) { | |
| mes "[Poring Race Staff]"; | |
| mes "Poring Race has ended."; | |
| close; | |
| } | |
| mes "[Poring Race Staff]"; | |
| mes "Do you want to participate on Poring Race?"; | |
| if( select( "Yes","No" ) -1 ) { | |
| next; | |
| mes "[Poring Race Staff]"; | |
| mes "See you again next time!"; | |
| close; | |
| } | |
| if( .access_Prace == 0 ) { | |
| next; | |
| mes "[Poring Race Staff]"; | |
| mes "..."; | |
| mes "..."; | |
| mes "Cheater!!~~"; | |
| close; | |
| } | |
| close2; | |
| @prace_winner$ = ""; | |
| warp "p_track01",52,41; | |
| end; | |
| // OnInit: | |
| OnMinute20: | |
| if( gettime(3)%2 ) end; | |
| set .access_Prace, 1; | |
| announce "Poring Race is now open!",0,0xFFAB54; | |
| setnpctimer 100000,"Bidder#prace0"; | |
| startnpctimer "Bidder#prace0"; | |
| end; | |
| OnPraceEnd: | |
| set .access_Prace, 0; | |
| announce "Poring Race is over!",0,0xFFAB54; | |
| end; | |
| } | |
| p_track01,58,41,3 script Bidder#prace0 877,{ | |
| function checkevent; | |
| mes "[Bidder]"; | |
| if( getstrlen( @prace_winner$ ) ) { | |
| mes "You have choose ^00bb00"+ @prace_winner$ +"^000000"; | |
| close; | |
| } | |
| else if ( checkevent() || .start ) { | |
| mes "There is a race in progress..."; | |
| close; | |
| } | |
| else if( !getvariableofnpc( .access_Prace,"Poring Race" ) ) { | |
| mes "There is no race."; | |
| close; | |
| } | |
| mes "Choose the poring you want to bet:"; | |
| mes "It will cost "+ .zeny_req +" Zeny."; | |
| .@s = select( .menu_$ ); | |
| if( .@s == 7 ) { | |
| next; | |
| mes "[Bidder]"; | |
| mes "Goodbye."; | |
| close; | |
| } | |
| .@c$ = .monst_$[ .@s -1 ]; | |
| if ( checkevent() ) { | |
| next; | |
| mes "[Bidder]"; | |
| mes "..."; | |
| mes "..."; | |
| mes "Cheater!!~~"; | |
| close; | |
| } | |
| else if( Zeny < .zeny_req ) { | |
| next; | |
| mes "[Bidder]"; | |
| mes "You don't have enough Zeny."; | |
| close; | |
| } | |
| Zeny -= .zeny_req; | |
| @prace_winner$ = .@c$; | |
| .prace_bidders[ .prace_bets ] = getcharid(3); | |
| .prace_bets++; | |
| next; | |
| mes "[Bidder]"; | |
| mes "I have "+ .prace_bets +" bets."; | |
| initnpctimer; | |
| npctalk "I got "+ strcharinfo(0) +" bet!"; | |
| close; | |
| OnTimer60000: | |
| npctalk "I got "+ .prace_bets +" bets. Anyone else?"; | |
| end; | |
| OnTimer80000: | |
| npctalk "The race will start soon. Last chance."; | |
| end; | |
| OnTimer90000: | |
| stopnpctimer; | |
| .start = 1; | |
| mapannounce "p_track01","Porings, on your marks...",1,0xFFAB54; | |
| sleep 2500; | |
| for( .@i = 3; .@i > 0; .@i-- ) { | |
| mapannounce "p_track01","..."+ .@i +"...",1,0xFFAB54; | |
| sleep 1000; | |
| } | |
| donpcevent strnpcinfo(0) +"::OnStartRace"; | |
| sleep 1000; | |
| mapannounce "p_track01","Gooo!!!",1,0xFFAB54; | |
| end; | |
| OnTimer320000: | |
| mapwarp "p_track01","prontera",142,170; | |
| donpcevent "Poring Race::OnPraceEnd"; | |
| .prace_winner$ = ""; | |
| .start = .prace_bets = 0; | |
| donpcevent strnpcinfo(0) +"::OnReturnRace"; | |
| end; | |
| OnStartRace: | |
| callsub L_label, "OnRace"; | |
| OnStopRace: | |
| callsub L_label, "OnStop"; | |
| OnReturnRace: | |
| callsub L_label, "OnReturn"; | |
| L_label: | |
| donpcevent "Metaling#prace3::"+ getarg(0); | |
| donpcevent "Poring#prace1::"+ getarg(0); | |
| donpcevent "Poporing#prace6::"+ getarg(0); | |
| donpcevent "Angeling#prace2::"+ getarg(0); | |
| donpcevent "Santa Poring#prace5::"+ getarg(0); | |
| donpcevent "Deviling#prace4::"+ getarg(0); | |
| if( getarg(0) == "OnStop" && .prace_winner$ != "" ) | |
| callsub L_WinRace; | |
| end; | |
| L_WinRace: | |
| mapannounce "p_track01", "The winner is "+ .prace_winner$,1,0xFFAB54; | |
| donpcevent strnpcinfo(0) +"::OnChequeo"; | |
| sleep 3000; | |
| donpcevent strnpcinfo(0) +"::OnReturnRace"; | |
| sleep 10000; | |
| mapwarp "p_track01","prontera",142,170; | |
| donpcevent "Poring Race::OnPraceEnd"; | |
| .prace_winner$ = ""; | |
| .start = .prace_bets = 0; | |
| end; | |
| OnChequeo: | |
| for( .@i = 0 ; .@i < getarraysize( .prace_bidders ); .@i++ ) { | |
| if( attachrid( .prace_bidders[.@i] ) && getstrlen( @prace_winner$ ) ) { | |
| dispbottom "The winner is "+ .prace_winner$ +" and you have bet for "+ @prace_winner$ +"."; | |
| if( @prace_winner$ == .prace_winner$ ) { | |
| dispbottom "You have won!"; | |
| mapannounce "p_track01"," Congratulations! "+ strcharinfo(0) +" has won!",1,0xFFAB54; | |
| getitem .item_gained, .item_num_gain; | |
| emotion 21,1; | |
| } | |
| else { | |
| dispbottom "You have lost."; | |
| emotion 28,1; | |
| } | |
| @prace_winner$ = ""; | |
| } | |
| } | |
| deletearray .prace_bidders; | |
| end; | |
| OnInit: | |
| .zeny_req = 3500; | |
| .item_gained = 7199; | |
| .item_num_gain = 2; | |
| setarray .monst_$,"Poring","Angeling","Metaling","Deviling","Santa Poring","Poporing","None"; | |
| .menu_$ = implode( .monst_$, ":" ); | |
| end; | |
| function checkevent { | |
| getmapxy .@mapname$, .@x1, .@y, 1, "Poring#prace1"; | |
| getmapxy .@mapname$, .@x2, .@y, 1, "Angeling#prace2"; | |
| getmapxy .@mapname$, .@x3, .@y, 1, "Metaling#prace3"; | |
| getmapxy .@mapname$, .@x4, .@y, 1, "Deviling#prace4"; | |
| getmapxy .@mapname$, .@x5, .@y, 1, "Santa Poring#prace5"; | |
| getmapxy .@mapname$, .@x6, .@y, 1, "Poporing#prace6"; | |
| .@t = ( .@x1 + .@x2 + .@x3 + .@x4 + .@x5 + .@x6 ) != 58 * 6; | |
| return .@t; | |
| } | |
| } | |
| //----------------------------------- | |
| // Racer NPC's | |
| //----------------------------------- | |
| - script pori_race -1,{ | |
| OnRace: | |
| initnpctimer; | |
| end; | |
| OnStop: | |
| stopnpctimer; | |
| end; | |
| OnReturn: | |
| sleep 1000; | |
| while( strnpcinfo(1) != .monst$[ .@i ] ) .@i++; | |
| movenpc strnpcinfo(3), 58, .walk_t[.@i]; | |
| end; | |
| OnTimer1100: | |
| getmapxy .@mapname$,.@x,.@y,1, strnpcinfo(3); | |
| if( rand(100) < .prace_random ) | |
| npcwalkto .@x-1, .@y; | |
| .@r = rand( .prace_random2 ); | |
| if ( .@x -1 == 29 ) { | |
| while( strnpcinfo(1) != .monst$[ .@i ] ) .@i++; | |
| set getvariableofnpc( .prace_winner$, "Bidder#prace0" ), .monst$[ .@i ]; | |
| emotion 29; | |
| donpcevent "Bidder#prace0::OnStopRace"; | |
| end; | |
| } | |
| stopnpctimer; | |
| setnpctimer .@r; | |
| startnpctimer; | |
| end; | |
| OnInit: | |
| deletearray .walk_t; | |
| deletearray .monst$; | |
| setarray .walk_t, 38, 36, 34, 32, 30, 28; | |
| setarray .monst$, "Poring", "Angeling", "Metaling", "Deviling", "Santa Poring", "Poporing"; | |
| .prace_random = 70; | |
| .prace_random2 = 600; | |
| end; | |
| } | |
| p_track01,58,38,2 duplicate(pori_race) Poring#prace1 1002 | |
| p_track01,58,36,2 duplicate(pori_race) Angeling#prace2 1096 | |
| p_track01,58,34,2 duplicate(pori_race) Metaling#prace3 1613 | |
| p_track01,58,32,2 duplicate(pori_race) Deviling#prace4 1582 | |
| p_track01,58,30,2 duplicate(pori_race) Santa Poring#prace5 1062 | |
| p_track01,58,28,2 duplicate(pori_race) Poporing#prace6 1031 | |
| p_track01,78,42,0 warp p_track002 1,3,prontera,142,170 | |
| p_track01 mapflag nobranch | |
| p_track01 mapflag noicewall | |
| p_track01 mapflag nomemo | |
| p_track01 mapflag noreturn | |
| p_track01 mapflag noteleport | |
| p_track01 mapflag nowarpto | |
| p_track01 mapflag nowarp | |
| p_track01 mapflag pvp off | |
| p_track01 mapflag nosave |