From b11c97a776b9c6eca14c5ab269fdfde1a9d72642 Mon Sep 17 00:00:00 2001 From: euphyy Date: Thu, 20 Dec 2012 02:18:26 +0000 Subject: [PATCH] * 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 --- conf/atcommand_athena.conf | 1 + db/re/item_combo_db.txt | 16 +- doc/atcommands.txt | 4 +- doc/item_bonus.txt | 5 +- npc/custom/quests/quest_shop.txt | 267 ++++++++++++++++++------------- npc/re/jobs/3-1/ranger.txt | 5 +- src/map/atcommand.c | 1 - 7 files changed, 173 insertions(+), 126 deletions(-) diff --git a/conf/atcommand_athena.conf b/conf/atcommand_athena.conf index 84acdcf233..5a0a5b289d 100644 --- a/conf/atcommand_athena.conf +++ b/conf/atcommand_athena.conf @@ -55,6 +55,7 @@ aliases: { kill: ["die"] guildstorage: ["gstorage"] accinfo: ["accountinfo"] + itemreset: ["clearinventory"] } /* Commands help file */ diff --git a/db/re/item_combo_db.txt b/db/re/item_combo_db.txt index 431f97f15b..e3fa004924 100644 --- a/db/re/item_combo_db.txt +++ b/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); } diff --git a/doc/atcommands.txt b/doc/atcommands.txt index 4d233e27f9..28bedfa1be 100644 --- a/doc/atcommands.txt +++ b/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. --------------------------------------- diff --git a/doc/item_bonus.txt b/doc/item_bonus.txt index 6125301415..490f3bc243 100644 --- a/doc/item_bonus.txt +++ b/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 diff --git a/npc/custom/quests/quest_shop.txt b/npc/custom/quests/quest_shop.txt index d4668ffc44..0714fcb57f 100644 --- a/npc/custom/quests/quest_shop.txt +++ b/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,17 +11,151 @@ //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //============================================================ - -prontera,164,203,6 script Quest Shop 998,{ -function Add; function Chk; function Slot; function A_An; - if (.Shops$ == "") set .@i, select(.menu$); - else set .@i,1; +// Shop NPCs -- supplying no argument displays entire menu. +// callfunc "qshop"{,{,{,...}}}; +//============================================================ +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); + +// ----------------------------------------------------------- +// Basic shop settings. +// ----------------------------------------------------------- + + 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],"",""; +// ----------------------------------------------------------- + + setarray .Points$[0],"#CASHPOINTS","Cash Points"; + +// ----------------------------------------------------------- +// Shop IDs -- to add shops, copy dummy data at bottom of file. +// setarray .Shops$[1],"",""{,...}; +// ----------------------------------------------------------- + + setarray .Shops$[1],"Headgears","Weapons","Other"; + +// ----------------------------------------------------------- +// Quest items -- do NOT use a reward item more than once! +// Add(,,, +// ,, +// ,{,...}); +// ----------------------------------------------------------- + + 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; + } + 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]; + } + if (.Shops$[.@i] == "") { + message strcharinfo(0),"An error has occurred."; + end; + } dispbottom "Select one item at a time."; callshop "qshop"+.@i,1; npcshopattach "qshop"+.@i; end; +OnBuyItem: + 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; + } + mes "[Quest Shop]"; + mes "Reward: ^0055FF"+((.@q[1]>1)?.@q[1]+"x ":"")+Slot(.@q[0])+"^000000"; + mes "Requirements:"; + 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 "+Chk(countitem(.@q[.@i]),.@q[.@i+1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+.@q[.@i+1]+")^000000"; + next; + 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:"+((.@preview && !@qe[6])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { + case 1: + if (@qe[0]) { + mes "[Quest Shop]"; + mes "You're missing one or more quest requirements."; + close; + } + if (!checkweight(.@q[0],.@q[1])) { + mes "[Quest Shop]"; + mes "^FF0000You need "+(((.@q[1]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; + close; + } + if (.@q[2]) set Zeny, Zeny-.@q[2]; + if (.@q[3]) setd .Points$[0], getd(.Points$[0])-.@q[3]; + if (.@q[4]) for(set .@i,4; .@i1)?.@q[1]+"x ":"")+Slot(.@q[0])+"^000000"; - mes "Requirements:"; - 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 "+Chk(countitem(.@q[.@i]),.@q[.@i+1])+((.DisplayID)?"{"+.@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"; - while(1) { - switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((((@qe1&1) || (@qe1&256) || (@qe1&512)) && @qe2 > 0 && !@qe6)?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { - case 1: - if (@qe0) { - mes "[Quest Shop]"; - mes "You're missing one or more quest requirements."; - close; - } - if (!checkweight(.@q[0],.@q[1])) { - mes "[Quest Shop]"; - mes "^FF0000You need "+(((.@q[1]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; - close; - } - if (.@q[2]) set Zeny, Zeny-.@q[2]; - if (.@q[3]) setd .Points$[0], getd(.Points$[0])-.@q[3]; - if (.@q[4]) for(set .@i,4; .@i","" - 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: "",""{,...}; -// 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 corresponds with order above (default is 1). -// Note: Do NOT use a reward item more than once! - - 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; - } +function script qshop { + deletearray @i[0],getarraysize(@i); + for(set .@i,0; .@i