Browse Source

* Follow-up r17030: documented and added bMagicAtkEle to item_combo_db (bugreport:6943).
* Follow-up r17029: moved 'clearinventory' alias to atcommand_athena.conf.
* Custom Quest Shop updated to v1.5, which replaces categories with shop IDs.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17031 54d463be-8e91-2dee-dedb-b68131a5f0ec

euphyy 12 years ago
parent
commit
b11c97a776

+ 1 - 0
conf/atcommand_athena.conf

@@ -55,6 +55,7 @@ aliases: {
 	kill: ["die"]
 	guildstorage: ["gstorage"]
 	accinfo: ["accountinfo"]
+	itemreset: ["clearinventory"]
 }
 
 /* Commands help file */

+ 8 - 8
db/re/item_combo_db.txt

@@ -49,14 +49,14 @@
 1776:18114,{ bonus bLongAtkRate,20; }
 2001:2677,{ bonus bMatkRate,10; bonus bDex,2; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; }
 2001:2711,{ bonus bMatkRate,10; bonus bDex,2; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; }
-2007:2467:2859:15025,{ bonus2 bSubEle,Ele_Earth,-50; }
-2008:2468:2860:15026,{ bonus2 bSubEle,Ele_Wind,-50; }
-2009:2469:2861:15027,{ bonus2 bSubEle,Ele_Water,-50; }
-2010:2470:2862:15028,{ bonus2 bSubEle,Ele_Fire,-50; }
-2011:2467:2859:15025,{ bonus2 bSubEle,Ele_Earth,-50; }
-2012:2468:2860:15026,{ bonus2 bSubEle,Ele_Wind,-50; }
-2013:2469:2861:15027,{ bonus2 bSubEle,Ele_Water,-50; }
-2014:2470:2862:15028,{ bonus2 bSubEle,Ele_Fire,-50; }
+2007:2467:2859:15025,{ bonus2 bMagicAtkEle,Ele_Wind,40; bonus2 bMagicAtkEle,Ele_Earth,-30; bonus2 bSubEle,Ele_Earth,-50; }
+2008:2468:2860:15026,{ bonus2 bMagicAtkEle,Ele_Water,40; bonus2 bMagicAtkEle,Ele_Wind,-30; bonus2 bSubEle,Ele_Wind,-50; }
+2009:2469:2861:15027,{ bonus2 bMagicAtkEle,Ele_Fire,40; bonus2 bMagicAtkEle,Ele_Water,-30; bonus2 bSubEle,Ele_Water,-50; }
+2010:2470:2862:15028,{ bonus2 bMagicAtkEle,Ele_Earth,40; bonus2 bMagicAtkEle,Ele_Fire,-30; bonus2 bSubEle,Ele_Fire,-50; }
+2011:2467:2859:15025,{ bonus2 bMagicAtkEle,Ele_Wind,60; bonus2 bMagicAtkEle,Ele_Earth,-60; bSubEle,Ele_Earth,-50; }
+2012:2468:2860:15026,{ bonus2 bMagicAtkEle,Ele_Water,60; bonus2 bMagicAtkEle,Ele_Wind,-60; bonus2 bSubEle,Ele_Wind,-50; }
+2013:2469:2861:15027,{ bonus2 bMagicAtkEle,Ele_Fire,60; bonus2 bMagicAtkEle,Ele_Water,-60; bonus2 bSubEle,Ele_Water,-50; }
+2014:2470:2862:15028,{ bonus2 bMagicAtkEle,Ele_Earth,60; bonus2 bMagicAtkEle,Ele_Fire,-60; bonus2 bSubEle,Ele_Fire,-50; }
 2109:2717:2239,{ bonus bHPrecovRate,15; bonus bSPrecovRate,15; bonus bMatkRate,7; }
 2114:2353:5122,{ bonus bStr,2; bonus bDef,5; bonus bMdef,5; if(BaseClass==Job_Swordman) bonus bDef,6; }
 2115:2353:5124,{ bonus bDef,2-getequiprefinerycnt(EQI_HAND_L)-getequiprefinerycnt(EQI_HEAD_TOP); bonus bMdef,5+getequiprefinerycnt(EQI_HAND_L)+getequiprefinerycnt(EQI_HEAD_TOP); }

+ 2 - 2
doc/atcommands.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 20121127
+//= 20121219
 //===== Description: =========================================
 //= List of available atcommands and their functions.
 //============================================================
@@ -685,7 +685,7 @@ Deletes all items in storage (or guild storage).
 
 @clearcart
 
-Deletes all items in cart, but it will not remove the cart.
+Deletes all items in cart, but does not remove the cart.
 
 ---------------------------------------
 

+ 4 - 1
doc/item_bonus.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 20110124
+//= 20121219
 //===== Description: =========================================
 //= List of script instructions used in item bonuses,
 //= mainly bonus/bonus2/bonus3/bonus4/bonus5 arguments.
@@ -132,6 +132,9 @@ bonus2 bMagicAddEle,n,x; 		+x% magical damage against element n
 bonus2 bSubEle,n,x;			x% Damage reduction against element n.
 					n: 	0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
 						6=Holy, 7=Dark, 8=Spirit, 9=Undead
+bonus2 bMagicAtkEle,n,x; 		Increases damage of n element magic by x%.
+					n: 	0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
+						6=Holy, 7=Dark, 8=Spirit, 9=Undead
 bonus2 bAddDamageClass,n,x;		+x% extra physical damage against monsters of class n
 					Against players, n is their job id
 bonus2 bAddMagicDamageClass,n,x;	+x% extra magical damage against monsters of class n

+ 148 - 105
npc/custom/quests/quest_shop.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Euphy
 //===== Current Version: =====================================
-//= 1.4c
+//= 1.5
 //===== Compatible With: =====================================
 //= rAthena SVN r16862+
 //===== Description: =========================================
@@ -11,60 +11,94 @@
 //= Includes support for multiple shops & cashpoints.
 //= Item Preview script by ToastOfDoom.
 //============================================================
-					
-prontera,164,203,6	script	Quest Shop	998,{
+
+// Shop NPCs -- supplying no argument displays entire menu.
+//	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
+//============================================================
+prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }
+
+
+// Script Core
+//============================================================
+-	script	quest_shop	-1,{ 
 function Add; function Chk; function Slot; function A_An;
+OnInit:
+	freeloop(1);
 
-	if (.Shops$ == "") set .@i, select(.menu$);
-	else set .@i,1;
-	dispbottom "Select one item at a time.";
-	callshop "qshop"+.@i,1;
-	npcshopattach "qshop"+.@i;
-	end;
+// -----------------------------------------------------------
+//  Basic shop settings.
+// -----------------------------------------------------------
 
-function Add {
-	if (getitemname(getarg(1)) == "null") {
-		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
-		return;
-	}
-	for(set .@n,5; .@n<127; set .@n,.@n+2) {
-		if (!getarg(.@n,0)) break;
-		if (getitemname(getarg(.@n)) == "null") {
-			debugmes "Quest requirement #"+getarg(.@n)+" invalid (skipped).";
-			return;
-		}
+	set .Announce,1;	// Announce quest completion? (1: yes / 0: no)
+	set .ShowSlot,1;	// Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
+	set .ShowID,0;  	// Show item IDs? (1: yes / 0: no)
+	set .ShowZeny,0;	// Show Zeny cost, if any? (1: yes / 0: no)
+
+// -----------------------------------------------------------
+//  Points variable -- optional quest requirement.
+//	setarray .Points$[0],"<variable name>","<display name>";
+// -----------------------------------------------------------
+
+	setarray .Points$[0],"#CASHPOINTS","Cash Points";
+
+// -----------------------------------------------------------
+//  Shop IDs -- to add shops, copy dummy data at bottom of file.
+//	setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
+// -----------------------------------------------------------
+
+	setarray .Shops$[1],"Headgears","Weapons","Other";
+
+// -----------------------------------------------------------
+//  Quest items -- do NOT use a reward item more than once!
+//	Add(<shop ID>,<reward ID>,<reward amount>,
+//	    <Zeny cost>,<point cost>,
+//	    <required item ID>,<required item amount>{,...});
+// -----------------------------------------------------------
+
+	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
+	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
+	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
+	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);
+
+	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
+	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
+
+	Add(3,531,1,3,0,512,1,713,1);
+	Add(3,532,1,3,0,513,1,713,1);
+	Add(3,533,1,3,0,514,1,713,1);
+	Add(3,534,1,3,0,515,1,713,1);
+
+// -----------------------------------------------------------
+
+	freeloop(0);
+	set .menu$,"";
+	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
+		set .menu$, .menu$+.Shops$[.@i]+":";
+		npcshopdelitem "qshop"+.@i,909;
 	}
-	for(set .@i,2; .@i<.@n; set .@i,.@i+1)
-		set getd(".q_"+getarg(1)+"["+(.@i-2)+"]"), getarg(.@i);
-	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
-	return;
-}
-function Chk {
-	if (getarg(0) < getarg(1)) {
-		set @qe0,1;
-		return "^FF0000";
+	end;
+
+OnMenu:
+	set .@size, getarraysize(@i);
+	if (!.@size) set .@i, select(.menu$);
+	else if (.@size == 1) set .@i, @i[0];
+	else {
+		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
+			set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
+		set .@i, @i[select(.@menu$)-1];
 	}
-	else return "^00FF00";
-}
-function Slot {
-	set .@s$,getitemname(getarg(0));
-	switch(.ShowSlot) {
-		case 1: if (!getitemslots(getarg(0))) return .@s$;
-		case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]";
-		default: return .@s$;
+	if (.Shops$[.@i] == "") {
+		message strcharinfo(0),"An error has occurred.";
+		end;
 	}
-}
-function A_An {
-	setarray .@A$[0],"a","e","i","o","u";
-	set .@B$, "_"+getarg(0);
-	for(set .@i,0; .@i<5; set .@i,.@i+1)
-		if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);
-	return "a "+getarg(0);
-}
+	dispbottom "Select one item at a time.";
+	callshop "qshop"+.@i,1;
+	npcshopattach "qshop"+.@i;
+	end;
 
 OnBuyItem:
-	set .@q[0],@bought_nameid;
-	copyarray .@q[1],getd(".q_"+@bought_nameid+"[0]"),getarraysize(getd(".q_"+@bought_nameid+"[0]"));
+	set .@q[0],@bought_nameid[0];
+	copyarray .@q[1],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0]));
 	if (!.@q[1]) {
 		message strcharinfo(0),"An error has occurred.";
 		end;
@@ -75,15 +109,16 @@ OnBuyItem:
 	if (.@q[2]) mes " > "+Chk(Zeny,.@q[2])+.@q[2]+" Zeny^000000";
 	if (.@q[3]) mes " > "+Chk(getd(.Points$[0]),.@q[3])+.@q[3]+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+.@q[3]+")^000000";
 	if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2)
-		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1])+((.DisplayID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+.@q[.@i+1]+")^000000";
+		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+.@q[.@i+1]+")^000000";
 	next;
-	set @qe1, getiteminfo(.@q[0],5);
-	set @qe2, getiteminfo(.@q[0],11);
-	addtimer 1000, strnpcinfo(1)+"::OnEnd";
+	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
+	if (((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512)) && @qe[2] > 0)
+		set .@preview,1;
+	addtimer 1000, strnpcinfo(0)+"::OnEnd";
 	while(1) {
-		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((((@qe1&1) || (@qe1&256) || (@qe1&512)) && @qe2 > 0 && !@qe6)?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
+		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[6])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
 		case 1:
-			if (@qe0) { 
+			if (@qe[0]) { 
 				mes "[Quest Shop]";
 				mes "You're missing one or more quest requirements.";
 				close;
@@ -102,74 +137,82 @@ OnBuyItem:
 			specialeffect2 699;
 			close;
 		case 2:
-			set @qe3, getlook(LOOK_HEAD_BOTTOM);
-			set @qe4, getlook(LOOK_HEAD_TOP);
-			set @qe5, getlook(LOOK_HEAD_MID);
-			set @qe6,1;
-			if (@qe1&1) changelook LOOK_HEAD_BOTTOM, @qe2;
-			if (@qe1&256) changelook LOOK_HEAD_TOP, @qe2;
-			if (@qe1&512) changelook LOOK_HEAD_MID, @qe2;
+			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), 1;
+			if (@qe[1] & 1) changelook LOOK_HEAD_BOTTOM, @qe[2];
+			if (@qe[1] & 256) changelook LOOK_HEAD_TOP, @qe[2];
+			if (@qe[1] & 512) changelook LOOK_HEAD_MID, @qe[2];
 			break;
 		case 3:
 			close;
 		}
 	}
+
 OnEnd:
-	if (@qe6) {
-		changelook LOOK_HEAD_BOTTOM, @qe3;
-		changelook LOOK_HEAD_TOP, @qe4;
-		changelook LOOK_HEAD_MID, @qe5;
+	if (@qe[6]) {
+		changelook LOOK_HEAD_BOTTOM, @qe[3];
+		changelook LOOK_HEAD_TOP, @qe[4];
+		changelook LOOK_HEAD_MID, @qe[5];
 	}
-	for(set .@i,0; .@i<7; set .@i,.@i+1)
-		setd "@qe"+.@i,0;
+	deletearray @qe[0],7;
 	end;
-OnInit:
-	freeloop(1);
-// --------------------- Config ---------------------
-// Custom points, if needed: "<variable>","<name to display>"
-	setarray .Points$[0],"#CASHPOINTS","Cash Points";
-
-	set .Announce,1;	// Announce quest completion? (1: yes / 0: no)
-	set .ShowSlot,1;	// Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
-	set .DisplayID,0;	// Show item IDs? (1: yes / 0: no)
-	set .ShowZeny,0;	// Show Zeny cost, if any? (1: yes / 0: no)
-
-// Shop categories, if needed: "<Shop 1>","<Shop 2>"{,...};
-// Duplicate dummy data for any additional shops (bottom of script).
-// If no categories, use the second line instead (remove //).
-
-	setarray .Shops$[1],"Headgears","Weapons","Other";
-	// set .Shops$,"n/a";
 
-// Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>,
-//     <required item ID>,<required item amount>{,...});
-// Shop number corresponds with order above (default is 1).
-// Note: Do NOT use a reward item more than once!
+function Add {
+	if (getitemname(getarg(1)) == "null") {
+		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
+		return;
+	}
+	for(set .@n,5; .@n<127; set .@n,.@n+2) {
+		if (!getarg(.@n,0)) break;
+		if (getitemname(getarg(.@n)) == "null") {
+			debugmes "Quest requirement #"+getarg(.@n)+" invalid (skipped).";
+			return;
+		}
+	}
+	for(set .@i,2; .@i<.@n; set .@i,.@i+1)
+		set getd(".q_"+getarg(1)+"["+(.@i-2)+"]"), getarg(.@i);
+	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
+	return;
+}
 
-	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
-	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
-	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
-	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);
+function Chk {
+	if (getarg(0) < getarg(1)) {
+		set @qe[0],1;
+		return "^FF0000";
+	}
+	else return "^00FF00";
+}
 
-	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
-	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
+function Slot {
+	set .@s$,getitemname(getarg(0));
+	switch(.ShowSlot) {
+		case 1: if (!getitemslots(getarg(0))) return .@s$;
+		case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]";
+		default: return .@s$;
+	}
+}
 
-	Add(3,531,1,3,0,512,1,713,1);
-	Add(3,532,1,3,0,513,1,713,1);
-	Add(3,533,1,3,0,514,1,713,1);
-	Add(3,534,1,3,0,515,1,713,1);
+function A_An {
+	setarray .@A$[0],"a","e","i","o","u";
+	set .@B$, "_"+getarg(0);
+	for(set .@i,0; .@i<5; set .@i,.@i+1)
+		if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);
+	return "a "+getarg(0);
+}
+}
 
-// --------------------------------------------------
-	freeloop(0);
-	set .menu$,"";
-	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
-		set .menu$, .menu$+.Shops$[.@i]+":";
-		npcshopdelitem "qshop"+.@i,909;
-	}
+function	script	qshop	{
+	deletearray @i[0],getarraysize(@i);
+	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
+		set @i[.@i],getarg(.@i);
+	doevent "quest_shop::OnMenu";
 	end;
 }
 
-// -------- Dummy data (duplicate as needed) --------
+
+// Dummy shop data -- copy as needed.
+//============================================================
 -	shop	qshop1	-1,909:-1
 -	shop	qshop2	-1,909:-1
 -	shop	qshop3	-1,909:-1
+-	shop	qshop4	-1,909:-1
+-	shop	qshop5	-1,909:-1

+ 3 - 2
npc/re/jobs/3-1/ranger.txt

@@ -46,7 +46,7 @@ tur_dun01,156,36,5	script	Survival Instructor#jr01	59,{
 			}
 			mes "[Survival Instructor, Rescue]";
 			mes "Huh?";
-			mes "How did you come again and find me?";
+			mes "How did you find me?";
 			next;
 			mes "[Survival Instructor, Rescue]";
 			mes "Well, it's a passing mark that you recognize me... let me see.";
@@ -300,7 +300,8 @@ tur_dun01,156,36,5	script	Survival Instructor#jr01	59,{
 	next;
 	mes "[Survival Instructor, Rescue]";
 	mes "What's up?";
-	mes "The monsters here are a little tough so be careful.";
+	mes "The monsters here are a";
+	mes "little tough so be careful.";
 	close;
 }
 

+ 0 - 1
src/map/atcommand.c

@@ -8819,7 +8819,6 @@ void atcommand_basecommands(void) {
 		ACMD_DEF(item),
 		ACMD_DEF(item2),
 		ACMD_DEF(itemreset),
-		ACMD_DEF2("clearinventory", itemreset),
 		ACMD_DEF(clearstorage),
 		ACMD_DEF(cleargstorage),
 		ACMD_DEF(clearcart),