Преглед изворни кода

Merge pull request #8 from Atemo/master

Message conf fr update.
Akinari1087 пре 11 година
родитељ
комит
01677cf333

+ 10 - 9
conf/msg_conf/map_msg_frn.conf

@@ -1,10 +1,10 @@
 // rAthena map_msg_frn.conf
 // Configuration des Messages
-// Pour changer la traduction, changez seulement le message (seconde colonne), vous n'avez pas besoin de modifier le code source,
-// ou bien utilisez conf/import/map_msg_frn_conf.txt
+// Changez seulement le message - dans la deuxième colonne - pour modifier la traduction ; ou utilisez conf/import/map_msg_frn_conf.txt
+// vous n'avez pas besoin de modifier le code source.
 // Format:
 // // Message en français
-// msg_nombre: Message
+// msg_numéro: Message
 
 //   0-410: réservés pour les commandes GM
 // 500-900: autres
@@ -883,12 +883,13 @@
 1045: Battlegrounds ON (type %d)
 1046: PvP Flags: 
 1047: GvG Flags:
-1048: Teleport Flags:
-1049: Weather Flags:
-1050: Other Flags:
-1051: Other Flags2:
-//1052-1064 free
-1065:  No Exp Penalty: %s | No Zeny Penalty: %s
+1048: Teleportation Flags:
+1049: Météo Flags:
+1050: Autres Flags:
+1051: Autres Flags2:
+1052: Réglage des dégâts des Skills:
+//1053-1064 free
+1065: Pas de pénalité d'Exp: %s | Pas de pénalité de Zeny: %s
 1066: On
 1067: Off
 1068: No Save (Retour au dernier point de sauvegarde)

+ 21 - 24
npc/custom/etc/monster_arena.txt

@@ -225,7 +225,7 @@ L_High:
 	close2;
 	savepoint "gon_test",56,99;
 	set @battle,1;
-	atcommand strcharinfo(0) + "@option 64 0 64";
+	atcommand "@option 64 0 64";
 	warp "gon_test",72,87;
 	end;
 
@@ -233,7 +233,7 @@ L_4to6:
 	close2;
 	savepoint "gon_test",56,99;
 	set @battle,1;
-	atcommand strcharinfo(0) + "@option 64 0 64";
+	atcommand "@option 64 0 64";
 	warp "gon_test",57,86;
 	end;
 
@@ -241,7 +241,7 @@ L_1to3:
 	close2;
 	savepoint "gon_test",56,99;
 	set @battle,1;
-	atcommand strcharinfo(0) + "@option 64 0 64";
+	atcommand "@option 64 0 64";
 	warp "gon_test",43,87;
 	end;
 
@@ -249,7 +249,7 @@ L_Exit:
 	close2;
 	savepoint "prontera",149,186;
 	set @battle,0;
-	atcommand strcharinfo(0) + "@option 0 0 0";
+	atcommand "@option 0 0 0";
 	warp "prontera",149,186;
 	end;
 
@@ -257,7 +257,7 @@ L_Spec:
 	close2;
 	savepoint "gon_test",56,99;
 	set @battle,0;
-	atcommand strcharinfo(0) + "@option 0 0 0";
+	atcommand "@option 0 0 0";
 	warp "gon_test",57,99;
 	end;
 
@@ -325,13 +325,13 @@ L_Sell:
 	mes "You have: ^FF0000" + #monpoints + "^000000 experience points";
 	mes "How many would you like to sell?";
 	next;
-	input @sellexp;
-	if (@sellexp > #monpoints) goto L_NoExp;
-	set #monpoints,#monpoints-@sellexp;
-	set @sellearn,100*@sellexp; // Price of exp
-	set Zeny, Zeny+@sellearn;
+	input .@sellexp;
+	if (.@sellexp > #monpoints) goto L_NoExp;
+	set #monpoints,#monpoints-.@sellexp;
+	set .@sellearn,100*.@sellexp; // Price of exp
+	set Zeny, Zeny+.@sellearn;
 	mes "[Monster Trainer]";
-	mes "You earned ^0000FF" + @sellearn + "^000000z.";
+	mes "You earned ^0000FF" + .@sellearn + "^000000z.";
 	close;
 
 
@@ -716,9 +716,7 @@ gon_test,56,91,6	script	OnSpecialKilled	-1,{
 }
 
 function	script	duelkill	{
-	if (strcharinfo(0) == $@duelist1$ || strcharinfo(0) == $@duelist2$) goto L_Heal;
-	end;
-L_Heal:
+	if (strcharinfo(0) != $@duelist1$ && strcharinfo(0) != $@duelist2$) end;
 	announce strcharinfo(0) + " won the Duel",1;
 	set @fighting,0;
 	set #heal,0;
@@ -744,8 +742,8 @@ gon_test,55,103,6	script	Nurse	90,{
 	end;
 
 L_Heal:
-	set @healrate,140 / #monster; //Rate of heal per click
-	set @healing,@healing + @healrate;
+	set .@healrate,140 / #monster; //Rate of heal per click
+	set @healing,@healing + .@healrate;
 	end;
 
 L_NoHeal:
@@ -770,8 +768,7 @@ gon_test	mapflag	noskill
 
 // Duel Arena //
 gon_test,58,103,5	script	Duel Master#01	92,{
-	if ($@duelist1$ == "") set @duel,0;
-	if ($@monster1 == "") set @duel,0;
+	if ($@duelist1$ == "" || $@monster1 == 0) set $@duel,0;
 	set @marena,1;
 	if (#monster == 0) goto L_NoMon;
 	mes "[Duel Master]";
@@ -799,7 +796,7 @@ gon_test,58,103,5	script	Duel Master#01	92,{
 	set $@duelist1$,strcharinfo(0);
 	set @battle,1;
 	announce strcharinfo(0) + " [Monster Level: " + $@monster1 + "] is waiting for a duel",1;
-	atcommand strcharinfo(0) + "@option 64 0 64";
+	atcommand "@option 64 0 64";
 	warp "gon_test",49,5;
 	close;
 
@@ -827,7 +824,7 @@ L_Duel2:
 	set $@duelist2$,strcharinfo(0);
 	set @battle,1;
 	announce strcharinfo(0) + " [Monster Level: " + $@monster2 + "] has joined the duel",1;
-	atcommand strcharinfo(0) + "@option 64 0 64";
+	atcommand "@option 64 0 64";
 	warp "gon_test",49,5;
 	close;
 
@@ -840,7 +837,7 @@ L_Dueling:
 
 L_Spec:
 	set @battle,0;
-	atcommand strcharinfo(0) + "@option 64 0 64";
+	atcommand "@option 64 0 64";
 	warp "gon_test",49,5;
 	close;
 
@@ -873,14 +870,14 @@ L_Leave:
 	if ($@duelist2$ == strcharinfo(0)) goto L_Leave2;
 
 L_Leave3:
-	atcommand strcharinfo(0) + "@option 0 0 0";
+	atcommand "@option 0 0 0";
 	set @battle,0;
 	warp "gon_test",57,99;
 	close;
 
 L_Leave1:
-	set $@duelist1$,$@duelist2$;
-	set $@monster1,$@monster2;
+	set $@duelist1$,"";
+	set $@monster1,0;
 	set $@duel,$@duel-1;
 	announce strcharinfo(0) + " stopped dueling",1;
 	goto L_Leave3;

+ 4 - 4
npc/custom/etc/mvp_arena.txt

@@ -51,19 +51,19 @@ quiz_00,49,31,4	script	MVP Arena Guide	778,{
 
 // Keepers
 function	script	Keeper	{
+	set .@arg, getarg(0);
 	mes "[ ^0065DF"+strnpcinfo(1)+"^000000 ]";
 	mes "Which arena would you";
 	mes "like to enter?";
-	set .@menu$,"";
 	for(set .@i,1; .@i<9; set .@i,.@i+1)
-		set .@menu$, .@menu$+"Arena "+.@i+" ["+getmapusers("pvp_n_"+.@i+"-"+getarg(0))+"/20]:";
+		set .@menu$, .@menu$+"Arena "+.@i+" ["+getmapusers("pvp_n_"+.@i+"-"+.@arg)+"/20]:";
 	set .@i, select(.@menu$);
-	if (getmapusers("pvp_n_"+.@i+"-"+getarg(0))>19) {
+	if (getmapusers("pvp_n_"+.@i+"-"+ .@arg)>19) {
 		mes "[ ^0065DF"+strnpcinfo(1)+"^000000 ]";
 		mes "Sorry, this arena is full!";
 		close;
 	}
-	warp "pvp_n_"+.@i+"-"+getarg(0),102,102;
+	warp "pvp_n_"+.@i+"-"+ .@arg,102,102;
 	close;
 }
 quiz_00,56,31,4	script	Alpha MVP	770,{ callfunc "Keeper",2; }

+ 15 - 19
npc/custom/etc/penal_servitude.txt

@@ -19,23 +19,19 @@
 sec_pri,36,58,1	script	Chief Warder	105,{ 
 	mes "[Saddeus]";
 	emotion e_what;
-	if (Sex) {
-		mes "Mr. Prisoner #"+BaseLevel+JobLevel+",";
-	} else {
-		mes "Ms. Prisoner #"+BaseLevel+JobLevel+",";
-	}
+	mes (Sex?"Mr.":"Ms.")+". Prisoner #"+BaseLevel+JobLevel+",";
 	mes "what's the noise over there?";
 	next;
 	menu "Let me free, I'll pay!",-, "Let me to work off my freedom!",M_Q1, "Nothing",M_NO_THANKS;
 
 M_PAY:
 	mes "[Saddeus]";
-	set @MUSTPAY,(PRISON+1)*1000000;
-	if (@MUSTPAY<1000000) set @MUSTPAY,1000000;
-	if (@MUSTPAY>100000000) set @MUSTPAY,100000000;
-	if (PRISON==1) mes "I can't remember you. Is it your 1st time?";
-	if (PRISON>1) mes "You again? Sombody hasn't grown wiser from the very first visit...";
-	mes "OK, we could release you for ^FF0000"+@MUSTPAY+"z^000000.";
+	set .@MUSTPAY,(PRISON+1)*1000000;
+	if (.@MUSTPAY<1000000) set .@MUSTPAY,1000000;
+	if (.@MUSTPAY>100000000) set .@MUSTPAY,100000000;
+	if (PRISON==0) mes "I can't remember you. Is it your 1st time?";
+	if (PRISON>1) mes "You again? Somebody hasn't grown wiser from the very first visit...";
+	mes "OK, we could release you for ^FF0000"+.@MUSTPAY+"z^000000.";
 	next;
 	menu "I pay cash!",M_PAYCASH,"Do you accept cheques?",M_PAYBANK,"I've changed my mind.",-;
 
@@ -44,8 +40,8 @@ M_PAY:
 	close;
 
 M_PAYCASH:
-	if (@MUSTPAY>Zeny) goto L_NOCASH;
-	set Zeny,Zeny-@MUSTPAY;
+	if (.@MUSTPAY>Zeny) goto L_NOCASH;
+	set Zeny,Zeny-.@MUSTPAY;
 	mes "[Saddeus]";
 	mes "OK, sing here and there.";
 	goto L_RELEASE;
@@ -56,8 +52,8 @@ L_NOCASH:
 	close;
 
 M_PAYBANK:
-	if (@MUSTPAY>#kafrabank) goto L_NOBANK;
-	set #kafrabank,#kafrabank-@MUSTPAY;
+	if (.@MUSTPAY>#kafrabank) goto L_NOBANK;
+	set #kafrabank,#kafrabank-.@MUSTPAY;
 	mes "[Saddeus]";
 	mes "OK, sign your cheque. And put down your name in my book.";
 	goto L_RELEASE;
@@ -96,10 +92,10 @@ M_Q1:
 
 	nude;
 
-	set @rw,rand(1,4);
-	if (@rw==2) goto L_W2;
-	if (@rw==3) goto L_W3;
-	if (@rw==4) goto L_W4;
+	set .@rw,rand(1,4);
+	if (.@rw==2) goto L_W2;
+	if (.@rw==3) goto L_W3;
+	if (.@rw==4) goto L_W4;
 
 L_W1:
 	savepoint "sec_in02",179,76;

+ 76 - 234
npc/custom/etc/rpsroulette.txt

@@ -14,270 +14,112 @@
 //============================================================
 
 cmd_in02,182,126,2	script	Crazy Boris	85,{
-	mes "Crazy Boris";
-	set @counter,1;
+	set .@counter,1;
 	mes "Hey you! Up for Rock Scissors Roulette?";
 	next;
 	menu "Let me play.",PLAY,"Explain the rules.",RULES,"Leave",LEAVE;
-	SAME:
+SAME:
 	mes "Draw! Again!";
 	next;
-	goto PLAY;
+PLAY:
+	mes "Rock... Paper...";
+	set .@opp, rand(1,3);
+	menu "^0000FFROCK!",-,"^FF0000SCISSORS!",SCISSORS,"^00FF00PAPER!^000000",PAPER;
+
+  	if (.@lastchoice == 1) set .@opp, rand(1,3);
+  	if (.@opp == 1) emotion e_rock;
+  	else if (.@opp == 2) emotion e_scissors;
+  	else emotion e_paper;
+  	set .@lastchoice,1;
+	if (.@opp == 1) goto SAME;
+	if (.@opp == 2) goto WIN;
+	goto LOSE;
+
+SCISSORS:
+	if (.@lastchoice == 2) set .@opp,rand(1,2);
+  	if (.@opp == 1) emotion e_rock;
+  	else if (.@opp == 2) emotion e_scissors;
+  	else emotion e_paper;
+  	set .@lastchoice,2;
+	if (.@opp == 1) goto LOSE;
+	if (.@opp == 2) goto SAME;
+	goto WIN;
+
+PAPER:
+	if (.@lastchoice == 3) set .@opp,rand(2,3);
+  	if (.@opp == 1) emotion e_rock;
+  	else if (.@opp == 2) emotion e_scissors;
+  	else emotion e_paper;
+  	set .@lastchoice,3;
+	if (.@opp == 1) goto WIN;
+	if (.@opp == 2) goto LOSE;
+	goto SAME;
 
 WIN:
 	mes "Damnit, You Win!";
 	emotion e_swt2;
 	next;
-	goto OPPPULL;
+	set .@win, 1;
+	goto YOUPULL;
 
 LOSE:
 	emotion e_heh;
 	mes "Boorah! You Lose!";
 	next;
-	goto YOUPULL;
-
-PLAY:
-	mes "Rock... Paper...";
-	set @opp,rand (1,3);
-	menu "^0000FFROCK!",ROCK,"^FF0000SCISSORS!",SCISSORS,"^00FF00PAPER!^000000",PAPER;
-
-ROCK:
-  	if (@lastchoice == 1) set @opp,rand (1,3);
-  	if (@opp == 1) emotion e_rock;
-  	if (@opp == 2) emotion e_scissors;
-  	if (@opp == 3) emotion paper;
-  	set @lastchoice,1;
-	if (@opp == 1) goto SAME;
-	if (@opp == 2) goto WIN;
-	if (@opp == 3) goto LOSE;
-
-SCISSORS:
-	if (@lastchoice == 2) set @opp,rand (1,2);
-  	if (@opp == 1) emotion e_rock;
-  	if (@opp == 2) emotion e_scissors;
-  	if (@opp == 3) emotion paper;
-  	set @lastchoice,2;
-	if (@opp == 1) goto LOSE;
-	if (@opp == 2) goto SAME;
-	if (@opp == 3) goto WIN;
-
-PAPER:
-	if (@lastchoice == 3) set @opp,rand (2,3);
-  	if (@opp == 1) emotion e_rock;
-  	if (@opp == 2) emotion e_scissors;
-  	if (@opp == 3) emotion paper;
-  	set @lastchoice,3;
-	if (@opp == 1) goto WIN;
-	if (@opp == 2) goto LOSE;
-	if (@opp == 3) goto SAME;
+	set .@win, 0;
 
 YOUPULL:
-	if (@counter == 1) goto ONE;
-	if (@counter == 2) goto TWO;
-	if (@counter == 3) goto THREE;
-	if (@counter == 4) goto FOUR;
-	if (@counter == 5) goto FIVE;
-	if (@counter == 6) goto SIX;
-
-OPPPULL:
-	if (@counter == 1) goto ONEa;
-	if (@counter == 2) goto TWOa;
-	if (@counter == 3) goto THREEa;
-	if (@counter == 4) goto FOURa;
-	if (@counter == 5) goto FIVEa;
-	if (@counter == 6) goto SIXa;
-
-ONE:
-	set @counter,2;
-	mes "1 of 6";
-	set @pull,rand (1,6);
-	next;
-	if (@pull == 1) goto DIE;
-	if (@pull != 1) goto SAFE;
-
-TWO:
-	set @counter,3;
-	mes "2 of 6";
-	set @pull,rand (1,5);
-	next;
-	if (@pull == 1) goto DIE;
-	if (@pull != 1) goto SAFE;
-
-THREE:
-	set @counter,4;
-	mes "3 of 6";
-	set @pull,rand (1,4);
-	next;
-	if (@pull == 1) goto DIE;
-	if (@pull != 1) goto SAFE;
-
-FOUR:
-	set @counter,5;
-	mes "4 of 6";
-	set @pull,rand (1,3);
-	next;
-	if (@pull == 1) goto DIE;
-	if (@pull != 1) goto SAFE;
-
-FIVE:
-	set @counter,6;
-	mes "5 of 6";
-	set @pull,rand (1,2);
-	if (@pull == 1) set @pull,rand (1,2);
-	next;
-	if (@pull == 1) goto DIE;
-	if (@pull != 1) goto SAFE;
-
-SIX:
-	mes "6 of 6";
-	mes "Say your prayers";
-	set @pull,1;
-	next;
-	if (@pull == 1) goto DIE;
-	if (@pull != 1) goto SAFE;
-
-ONEa:
-	set @counter,2;
-	mes "1 of 6";
-	set @pull,rand (1,6);
-	next;
-	if (@pull == 1) goto KILL;
-	if (@pull != 1) goto SAFE;
-
-TWOa:
-	set @counter,3;
-	mes "2 of 6";
-	set @pull,rand (1,5);
-	next;
-	if (@pull == 1) goto KILL;
-	if (@pull != 1) goto SAFE;
-
-THREEa:
-	set @counter,4;
-	mes "3 of 6";
-	set @pull,rand (1,4);
-	next;
-	if (@pull == 1) goto KILL;
-	if (@pull != 1) goto SAFE;
-
-FOURa:
-	set @counter,5;
-	mes "4 of 6";
-	set @pull,rand (1,3);
-	next;
-	if (@pull == 1) goto KILL;
-	if (@pull != 1) goto SAFE;
-
-FIVEa:
-	set @counter,6;
-	mes "5 of 6";
-	set @pull,rand (1,2);
-	next;
-	if (@pull == 1) goto KILL;
-	if (@pull != 1) goto SAFE;
-
-SIXa:
-	mes "6 of 6";
-	mes "Say your prayers";
-	set @pull,1;
-	next;
-	if (@pull == 1) goto KILL;
-	if (@pull != 1) goto SAFE;
-
-SAFE:
+	mes .@counter +" of 6";
+	if ( .@counter == 6 )
+		mes "Say your prayers";
+	set .@pull, rand( 1,( 7 -.@counter ) );
+	set .@counter, .@counter +1;
+	next;
+	if ( .@pull == 1 ) {
+		if ( .@win ) goto KILL;
+		specialeffect2 EF_SUI_EXPLOSION;
+		emotion e_gg;
+		percentheal -100,-100;
+		mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
+		mes "You're dead!";
+		close;
+	}
 	emotion e_pif;
 	mes "*^0000FFClick^000000* whew...";
 	goto PLAY;
 
-DIE:
-	specialeffect2 EF_SUI_EXPLOSION;
-	emotion e_gg;
-	percentheal -100,-100;
-	mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
-	mes "You're dead!";
-	close;
-
-KILL:
-	specialeffect EF_SUI_EXPLOSION;
-	emotion e_omg;
-	mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
-	mes "OWWW @#$%^!! THAT HURT LIKE HELL!!";
-	next;
-	goto PRIZE;
-
 RULES:
 	mes "Ok here are the rules:";
 	mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best.";
 	mes "Beat me to win a prize.";
-	menu "Let me play.",CONT,"No thanks.",LEAVE;
-
-CONT:
+	next;
+	menu "Let me play.",-,"No thanks.",LEAVE;
 	mes "Ok here we go...";
 	next;
 	goto PLAY;
 
-PRIZE:
+KILL:
+	specialeffect EF_SUI_EXPLOSION;
+	emotion e_omg;
+	mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
+	mes "OWWW @#$%^!! THAT HURT LIKE HELL!!";
+	next;
 	mes "Congratulations! You have won...";
-	set @prize,rand (1,10);
-	if (@prize == 1) goto P1;
-	if (@prize == 2) goto P2;
-	if (@prize == 3) goto P3;
-	if (@prize == 4) goto P4;
-	if (@prize == 5) goto P5;
-	if (@prize == 6) goto P6;
-	if (@prize == 7) goto P7;
-	if (@prize == 8) goto P8;
-	if (@prize == 9) goto P9;
-	if (@prize == 10) goto P10;
-
-P1:
-	mes "10x Oridicon!";
-	getitem 984,10;
-	close;
-
-P2:
-	mes "10x Elunium!";
-	getitem 985,10;
-	close;
-
-P3:
-	mes "100x Fly Wings!";
-	getitem 601,100;
-	close;
-
-P4:
-	mes "8x Old Blue Box!";
-	getitem 603,8;
-	close;
-
-P5:
-	mes "4x Old Violet Box!";
-	getitem 617,4;
-	close;
-
-P6:
-	mes "1x Old Card Album!";
-	getitem 616,1;
-	close;
-
-P7:
-	mes "10x Dead Branch!";
-	getitem 604,10;
-	close;
-
-P8:
-	mes "3x Gold!";
-	getitem 969,3;
-	close;
-
-P9:
-	mes "10x Elunium!";
-	getitem 985,10;
-	close;
-
-P10:
-	mes "20x Blue Potion!";
-	getitem 505,20;
+	switch( rand( 1,10 ) ) {
+		case 1: setarray .@reward[0], 10,984; break;
+		case 3: setarray .@reward[0],100,601; break;	// 100x Fly Wings
+		case 4: setarray .@reward[0],  8,603; break;	// 8x Old Blue Box
+		case 5: setarray .@reward[0],  4,617; break;	// 4x Old Violet Box
+		case 6: setarray .@reward[0],  1,616; break;	// 1x Old Card Album
+		case 7: setarray .@reward[0], 10,604; break;	// 10x Dead Branch
+		case 8: setarray .@reward[0],  3,969; break;	// 3x Gold
+		case 10: setarray .@reward[0],20,505; break;	// 20x Blue Potion
+		case 2:
+		case 9:
+			setarray .@reward[0], 10,985;
+	}
+	mes .@reward[0] +"x "+ getitemname( .@reward[1] ) +"!";
+	getitem .@reward[1], .@reward[0];
 	close;
 
 LEAVE:

+ 39 - 51
npc/custom/etc/shifty_assassin.txt

@@ -14,27 +14,22 @@
 //============================================================
 
 morocc,148,86,5	script	Shifty Assassin	725,{
-	set $ninja_price,250000;
+	set .@ninja_price,250000;
 
 	// STARTS THE MENU //
 M_Start:
 	mes "[Shifty Assassin]";
 	mes "What do you want?";
 	next;
-	if (getgmlevel() > 90) goto M_GM;
-	menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check,"Cancel",M_Exit;
-M_GM:
-	menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check,"Add Ninjas",M_Add,"Cancel",M_Exit;
+	menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check, ( getgmlevel() > 90 ? "Add Ninjas" : "" ),-,"Cancel",M_Exit;
 
 	// GM MENU TO ADD NINJAS //
-M_Add:
 	mes "[Shifty Assassin]";
 	mes "How many ninjas do you want to make available?";
 	next;
-	set @add,0;
-	input @add;
-	set $ninja_avail,$ninja_avail+@add;
-	mes @add + " ninjas added.";
+	input .@add;
+	set $ninja_avail, $ninja_avail+.@add;
+	mes .@add +" ninjas added.";
 	close;
 
 	// BUY NINJAS //
@@ -42,24 +37,23 @@ M_Buy:
 	mes "[Shifty Assassin]";
 	mes "How many ninjas do you want buy?";
 	mes "There are ^0000FF" + $ninja_avail + "^000000 ninjas available.";
-	mes "They cost ^0000FF" + $ninja_price + " zeny ^000000each.";
+	mes "They cost ^0000FF" + .@ninja_price + " zeny ^000000each.";
 
-	set @buy,0;
-	input @buy;
+	input .@buy;
 	next;
 	if ($ninja_avail < 1) goto NoNinjas;
-	if ($ninja_avail < @buy) goto NotEnoughNinjas;
-	set @price,@buy*$ninja_price;
-	if (Zeny < @price) goto NoZeny;
+	if ($ninja_avail < .@buy) goto NotEnoughNinjas;
+	set .@price, .@buy*.@ninja_price;
+	if (Zeny < .@price) goto NoZeny;
 
 	mes "[Shifty Assassin]";
-	mes "That will cost you ^0000FF" + @price + " zeny^000000.";
+	mes "That will cost you ^0000FF"+ .@price +" zeny^000000.";
 	next;
 	menu "Continue",-,"Cancel",M_Exit;
 
-	set Zeny, Zeny-@price;
-	set #ninjas,#ninjas+@buy;
-	set $ninja_avail,$ninja_avail-@buy;
+	set Zeny, Zeny - .@price;
+	set #ninjas, #ninjas + .@buy;
+	set $ninja_avail, $ninja_avail - .@buy;
 
 	mes "[Shifty Assassin]";
 	mes "Thank you.";
@@ -73,34 +67,38 @@ M_Kill:
 	mes "^FF0000Type the name exactly, otherwise I won't be able to find the victim.^000000";
 	next;
 	menu "Continue",-,"Cancel",M_Exit;
-	set @name$,"0";
-	input @name$;
+	input .@name$;
+	if ( !getcharid( 3,.@name$ ) ) {
+		mes "[Shifty Assassin]";
+		mes .@name$ +" is not online.";
+		close;
+	}
 	next;
 	mes "[Shifty Assassin]";
 	mes "Active Ninjas: "+#ninjas;
 	mes "Resting Ninjas: "+#ninjasr;
 	mes "How many do you want to send?";
-	set @number,0;
-	input @number;
-	if (@number < 1) goto NoNinjasSent;
-	if (@number > #ninjas) goto NotEnoughNinjas1;
-	if (@number > 10) goto TooManyNinjas;
-	set @chance,rand (1,12);
-	set #ninjas,#ninjas-@number;
+	input .@number;
+	if (.@number < 1) goto NoNinjasSent;
+	if (.@number > #ninjas) goto NotEnoughNinjas1;
+	if (.@number > 10) goto TooManyNinjas;
+	set .@chance, rand(1,12);
+	set #ninjas,#ninjas-.@number;
 	set #ninjas,#ninjas+#ninjasr;
 	set #ninjasr,0;
-	if (@number < @chance) goto M_Failure;
+	if (.@number < .@chance) goto M_Failure;
 
 	// SUCCESSFUL ATTACK //
 	mes "Sending ninjas now.";
 	next;
 	mes "[Shifty Assassin]";
-	set @ninjasurvived,rand (1,@number);
-	set #ninjasr,@number-@ninjasurvived;
+	set .@ninjasurvived, rand(1,.@number);
+	set #ninjasr,.@number-.@ninjasurvived;
 	mes "Your attack succeeded but only ^FF0000" + #ninjasr + "^000000 Ninjas survived.";
-
-	atcommand strcharinfo(0) + "@kill "+@name$;
-	announce @name$+" has been assassinated by " + strcharinfo(0) +"'s Ninjas.",bc_npc;
+	set .@acc_id, getcharid( 3,.@name$ );
+	if ( .@acc_id )
+		unitkill .@acc_id;
+	announce .@name$ +" has been assassinated by " + strcharinfo(0) +"'s Ninjas.",bc_npc;
 	close;
 
 	// FAILED ATTACK //
@@ -108,11 +106,11 @@ M_Failure:
 	mes "Sending ninjas now.";
 	next;
 	mes "[Shifty Assassin]";
-	set @ninjasurvived,rand (1,@number);
-	set #ninjasr,@number-@ninjasurvived;
+	set .@ninjasurvived, rand(1,.@number);
+	set #ninjasr, .@number-.@ninjasurvived;
 	mes "Your attack failed and only ^FF0000" + #ninjasr + "^000000 Ninjas survived.";
 
-	announce @name$+" has survived " + strcharinfo(0) +"'s Ninja attack.",8;
+	announce .@name$+" has survived " + strcharinfo(0) +"'s Ninja attack.",8;
 	close;
 
 	// NINJAS BUSY FOR WOE //
@@ -173,26 +171,16 @@ M_Exit:
 
 // TIMER DELAY NINJA ADDER //
 OnClock0600:
-	set $ninja_avail,$ninja_avail+2;
-	end;
 OnClock1200:
-	set $ninja_avail,$ninja_avail+2;
-	end;
 OnClock1500:
-	set $ninja_avail,$ninja_avail+2;
-	end;
-OnClock1800:
-	set $ninja_avail,$ninja_avail+3;
-	end;
 OnClock1900:
-	set $ninja_avail,$ninja_avail+2;
-	end;
 OnClock2000:
-	set $ninja_avail,$ninja_avail+2;
-	end;
 OnClock0000:
 	set $ninja_avail,$ninja_avail+2;
 	end;
+OnClock1800:
+	set $ninja_avail,$ninja_avail+3;
+	end;
 OnInit:
 	set $ninja_avail,$ninja_avail+1;
 	end;

+ 29 - 0
src/map/atcommand.c

@@ -8698,6 +8698,35 @@ static void atcommand_commands_sub(struct map_session_data* sd, const int fd, At
 	dbi_destroy(iter);
 	clif_displaymessage(fd,line_buff);
 
+	if ( atcmd_binding_count ) {
+		int i, count_bind, gm_lvl = pc_get_group_level(sd);
+		for( i = count_bind = 0; i < atcmd_binding_count; i++ ) {
+			if ( gm_lvl >= ( type -1 ? atcmd_binding[i]->level2 : atcmd_binding[i]->level ) ) {
+				unsigned int slen = strlen(atcmd_binding[i]->command);
+				if ( count_bind == 0 ) {
+					cur = line_buff;
+					memset(line_buff,' ',CHATBOX_SIZE);
+					line_buff[CHATBOX_SIZE-1] = 0;
+					clif_displaymessage(fd, "-----------------");
+					clif_displaymessage(fd, "Customs commands :");
+				}
+				if (slen + cur - line_buff >= CHATBOX_SIZE) {
+					clif_displaymessage(fd,line_buff);
+					cur = line_buff;
+					memset(line_buff,' ',CHATBOX_SIZE);
+					line_buff[CHATBOX_SIZE-1] = 0;
+				}
+				memcpy(cur,atcmd_binding[i]->command,slen);
+				cur += slen+(10-slen%10);
+				count_bind++;
+			}
+		}
+		if ( count_bind )
+			clif_displaymessage(fd,line_buff);// last one
+		count += count_bind;
+		
+	}
+
 	sprintf(atcmd_output, msg_txt(sd,274), count); // "%d commands found."
 	clif_displaymessage(fd, atcmd_output);