Ver código fonte

Made the checks in the dye maker npc more dynamic (also fixes missing 'countitem' bug)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11145 54d463be-8e91-2dee-dedb-b68131a5f0ec
ultramage 17 anos atrás
pai
commit
c3f5165bba
1 arquivos alterados com 28 adições e 17 exclusões
  1. 28 17
      npc/merchants/dye_maker.txt

+ 28 - 17
npc/merchants/dye_maker.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= eAthena Dev Team
 //===== Current Version: ===================================== 
-//= 1.2b
+//= 1.3
 //===== Compatible With: ===================================== 
 //= eAthena SVN
 //===== Description: ========================================= 
@@ -13,6 +13,7 @@
 //= 1.1 Spell Checked [Nexon] 
 //= 1.2 Rescripted to Aegis 10.3 standard. [L0ne_W0lf]
 //= 1.2b Fixed typos in variable names [ultramage]
+//= 1.3 Made the checks more dynamic [ultramage]
 //============================================================ 
 
 morocc_in,146,99,3	script	Java Dullihan	58,{
@@ -101,49 +102,57 @@ S_MakeDye:
 	switch(getarg(0)) {
 	case 1:
 		mes "Mmm... I need 30 Red Herbs, 1 Counteragent, and 1 Empty Bottle to make Red Dyestuffs. The fee is only 3000 zeny to make it.";
-		setarray .@item[0], 507,30, 0,0, 0,0, 0,0, 0,0;
+		setarray .@item[0], 507, 973, 713;
+		setarray .@count[0], 30,   1,   1;
 		set .@cost,3000;
 		set .@dyestuff,975;
 		break;
 	case 2:
 		mes "Mmm... I need 30 Yellow Herbs, 1 Couneragent, and 1 Empty Bottle to make Lemon Dyestuffs. The fee is only 3000 zeny to make it.";
-		setarray .@item[0], 508,30, 0,0, 0,0, 0,0, 0,0;
+		setarray .@item[0], 508, 973, 713;
+		setarray .@count[0], 30,   1,   1;
 		set .@cost,3000;
 		set .@dyestuff,976;
 		break;
 	case 3:
 		mes "Mmm... I need 20 Blue Herbs, 1 Counteragent, and 1 Empty Bottle to make Cobaltblue Dyestuff. It's hard to use the Blue Herb, so the fee is going to be 3500 zeny.";
-		setarray .@item[0], 510,20, 0,0, 0,0, 0,0, 0,0;
+		setarray .@item[0], 510, 973, 713;
+		setarray .@count[0], 20,   1,   1;
 		set .@cost,3500;
 		set .@dyestuff,978;
 		break;
 	case 4:
 		mes "Mmm... I need 5 Blue Herbs, 20 Green Herbs, 20 Yellow Herbs, 1 Counteragent, 1 Mixture, and 1 Empty Bottle to make Darkgreen Dyestuffs. Don't get all of the materials confused. The fee is only 5000 zeny.";
-		setarray .@item[0], 510,5, 511,20, 508,20, 974,1, 0,0;
+		setarray .@item[0], 510, 511, 508, 974, 973, 713;
+		setarray .@count[0],  5,  20,  20,   1,   1,   1;
 		set .@cost,5000;
 		set .@dyestuff,979;
 		break;
 	case 5:
 		mes "Mmm... I need 20 Red Herbs, 20 Yellow Herbs, 1 Counteragent, 1 Mixture, and 1 Empty Bottle to make Orange Dyestuff. The fee is going to be 5000 zeny.";
-		setarray .@item[0], 507,20, 508,20, 974,1, 0,0, 0,0;
+		setarray .@item[0], 507, 508, 974, 973, 713;
+		setarray .@count[0], 20,  20,   1,   1,   1;
 		set .@cost,5000;
 		set .@dyestuff,980;
 		break;
 	case 6:
 		mes "Mmm... I need 10 Blue Herbs, 30 Red Herbs, 1 Counteragent, 1 Mixture, and 1 Empty Bottle to make Violet Dyestuffs. The fee will be 5000 zeny.";
-		setarray .@item[0], 510,10, 507,30, 974,1, 0,0, 0,0;
+		setarray .@item[0], 510, 507, 974, 973, 713;
+		setarray .@count[0], 10,  30,   1,   1,   1;
 		set .@cost,5000;
 		set .@dyestuff,981;
 		break;
 	case 7:
 		mes "Mmm... I need 30 White Herbs, 1 Counteragent, and 1 Empty bottle to make White Dyestuffs. The fee will be 3000 zeny.";
-		setarray .@item[0], 509,30, 0,0, 0,0, 0,0, 0,0;
+		setarray .@item[0], 509, 973, 713;
+		setarray .@count[0], 30,   1,   1; 
 		set .@cost,3000;
 		set .@dyestuff,982;
 		break;
 	case 8:
 		mes "Mmm... I need 30 of each Red, Yellow, and Green Herb, 5 Blue Herbs, 1 Counteragent, 1 Mixture, and 1 Empty Bottle. The process takes longer and more effort than the others, so it is going to be 7000 zeny.";
-		setarray .@item[0], 507,30, 508,30, 511,30, 510,5, 974,1;
+		setarray .@item[0], 507, 508, 511, 510, 974, 973, 713;
+		setarray .@count[0], 30,  30,  30,   5,   1,   1,   1;
 		set .@cost,7000;
 		set .@dyestuff,983;
 		break;
@@ -158,21 +167,23 @@ S_MakeDye:
 	}
 	next;
 	if (select("Make Dyestuffs:Cancel") == 1) {
-		if (.@item[0] < .@item[1] || .@item[2] < .@item[3] || .@item[4] < .@item[5] || .@item[6] < .@item[7] || .@item[8] < .@item[9] || countitem(973)== 0 || countitem(713) == 0 || Zeny < .@cost) {
+		set .@size, getarraysize(.@item);
+		// check requirements
+		for (set .@i,0 ; .@i < .@size ; set .@i,.@i+1)
+			countitem(.@item[.@i]) >= .@count[.@i];
+		if (.@i < .@size || Zeny < .@cost) {
 			mes "[Dye Maker Java Dullihan]";
 			mes "Hmmm. Not enough...";
 			mes "I don't think I'll be able to make the color you want with those materials. Why don't you go get some more materials...?";
 			close;
 		}
-		delitem .@item[0],.@item[1];
-		delitem .@item[2],.@item[3];
-		delitem .@item[4],.@item[5];
-		delitem .@item[6],.@item[7];
-		delitem .@item[8],.@item[9];
-		delitem 973,1; //Counteragent
-		delitem 713,1; //Empty Bottle
+		// delete items
+		for (set .@i, 0; .@i < .@size ; set .@i, .@i+1)
+			delitem .@item[.@i], .@count[.@i];
 		set zeny,zeny-.@cost;
+		// get dyestuff
 		getitem .@dyestuff,1;
+		
 		mes "[Dye Maker Java Dullihan]";
 		mes "Hmm... It came out pretty well. A very rich color. Of course I'll be trying harder to make a more charming color...";
 		next;