From 5852d650d32246509b7c6828c705d0d5787c6872 Mon Sep 17 00:00:00 2001 From: euphyy Date: Thu, 7 Feb 2013 01:07:46 +0000 Subject: * Renewal item updates, mostly misc items (incl. bugreport:7167). * A couple of quest_db updates. * Moved El Dicastes Guide to a separate file and fixed viewpoint syntax. * Fixed bugreport:7238, two mob skill mode changes. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17122 54d463be-8e91-2dee-dedb-b68131a5f0ec --- db/re/item_db.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'db/re') diff --git a/db/re/item_db.txt b/db/re/item_db.txt index 49a80d28e..87e352349 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -3893,7 +3893,7 @@ 6342,Fade_Notation_Purple,Fade Notation Purple,3,0,,10,,,,,,,,,,,,,{},{},{} 6343,Fade_Notation_Blue,Fade Notation Blue,3,0,,10,,,,,,,,,,,,,{},{},{} 6344,Muscle_Story,Muscle Story,3,0,,0,,,,,,,,,,,,,{},{},{} -6345,Love_Ball,Love Ball,3,0,,0,,,,,,,,,,,,,{},{},{} +6345,Love_Ball,Love Lump,3,0,,0,,,,,,,,,,,,,{},{},{} 6346,Seagate_Mark,Seagate Mark,3,0,,0,,,,,,,,,,,,,{},{},{} 6347,Bless_Word_Paper1,Bless Word Paper,3,4020,,0,,,,,,,,,,,,,{},{},{} 6348,Bless_Word_Paper2,Bless Word Paper,3,4020,,0,,,,,,,,,,,,,{},{},{} @@ -6158,7 +6158,7 @@ //13064, //13065, 13066,P_Dagger3,Eden Dagger III,4,0,,0,165:80,,1,0,0xFE9F7EEF,7,2,2,3,60,0,1,{},{},{} -13067,Kris,Kris,4,20,,700,107:70,,1,1,0xFE9F7EEF,2,2,2,3,30,1,1,{ bonus2 bHpDrainRate,50,10; },{},{} +13067,Caress,Keris,4,20,,700,107:70,,1,1,0xFE9F7EEF,2,2,2,3,30,1,1,{ bonus2 bHpDrainRate,20,10; },{},{} 13068,Pompano,Pompano,4,0,,0,160:100,,3,0,0xFE9F7EEF,7,2,2,1,50,0,1,{ bonus bUnbreakableWeapon,0; autobonus "{ bonus bBaseAtk,30; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,20; }",10,7000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bMatk,10; } },{},{} 13069,As-nail,As-nail,4,56000,,500,160:80,,1,0,0x000654E2,7,2,2,4,110,1,1,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Freeze,100+(getrefine()*50); },{},{} 13070,Scarlet-nail,Scarlet-nail,4,56000,,500,160:80,,1,0,0x000654E2,7,2,2,4,110,1,1,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Stone,100+(getrefine()*50); },{},{} -- cgit v1.2.3-70-g09d2 From 8afbce9c76307f5e0430d6ba253c543a3c234a21 Mon Sep 17 00:00:00 2001 From: playtester Date: Sun, 17 Feb 2013 14:45:29 +0000 Subject: - Fixed several detector bitsets (hint: detector bitset is only for insects, demons and bosses, please keep that in mind when converting the modes) - Implemented Nydhogg's Memory as described in bugreport:7261 git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17134 54d463be-8e91-2dee-dedb-b68131a5f0ec --- db/re/mob_db.txt | 14 +++++++------- db/re/mob_skill_db.txt | 7 +++++-- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'db/re') diff --git a/db/re/mob_db.txt b/db/re/mob_db.txt index e608cbf49..a3525cb38 100644 --- a/db/re/mob_db.txt +++ b/db/re/mob_db.txt @@ -1180,7 +1180,7 @@ 2071,HEADLESS_MULE,Headless Mule,Headless Mule,80,6620,1,1011,1120,1,210,267,33,44,68,51,50,35,67,20,10,12,2,6,63,0x3985,165,1216,816,432,0,0,0,0,0,0,0,7120,4000,2317,5,7097,1000,7122,1000,1269,1,2317,1,1255,2,0,0,0,0,0,0 2072,JAGUAR,Jaguar,Jaguar,71,3914,1,720,512,1,192,234,44,15,69,30,45,5,59,5,10,12,1,2,42,0x91,150,576,1248,480,0,0,0,0,0,0,0,7171,3000,7172,2000,919,1000,756,40,1810,1,0,0,0,0,0,0,0,0,0,0 2073,TOUCAN,Toucan,Toucan,70,3640,1,659,544,1,166,201,12,12,54,14,40,35,44,10,10,12,1,2,44,0x1089,155,960,1440,960,0,0,0,0,0,0,0,917,3000,7053,1000,510,50,508,100,2612,200,0,0,0,0,0,0,0,0,0,0 -2074,CURUPIRA,Curupira,Curupira,68,3096,1,622,450,1,140,175,42,12,32,23,38,20,45,10,10,12,1,7,22,0x118B,250,528,480,384,0,0,0,0,0,0,0,517,3000,757,250,1011,10,7267,500,1505,100,0,0,0,0,0,0,0,0,0,0 +2074,CURUPIRA,Curupira,Curupira,68,3096,1,622,450,1,140,175,42,12,32,23,38,20,45,10,10,12,1,7,22,0x108B,250,528,480,384,0,0,0,0,0,0,0,517,3000,757,250,1011,10,7267,500,1505,100,0,0,0,0,0,0,0,0,0,0 // Event MVP 2075,E_VADON_X,Ragunta,Ragunta,150,25000000,0,9999999,9999999,1,7000,10000,500,500,100,100,100,100,100,100,10,12,2,5,88,0x37B5,150,1632,432,540,4999999,0,0,0,0,0,0,960,5000,7095,3000,7093,3000,984,1000,985,500,7444,50,617,10,0,0,0,0,6414,9000 @@ -1256,12 +1256,12 @@ 2135,CREEPER,Creeper,Creeper,100,1000,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,3,22,0x40,2000,192,192,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2136,LITTLE_FATUM,Little Fatum,Little Fatum,142,85100,1,7500,6500,1,442,894,51,198,10,66,17,148,148,97,10,12,0,7,44,0x3885,150,432,300,432,0,0,0,0,0,0,0,6395,5000,7938,100,11519,100,2465,3,0,0,0,0,0,0,0,0,0,0,4511,1 2137,MIMING,Miming,Miming,140,81200,1,7100,6300,1,430,652,120,120,90,66,105,77,133,77,10,12,0,0,20,0x3885,250,576,1140,504,0,0,0,0,0,0,0,6394,5000,7938,100,969,1,2853,3,0,0,0,0,0,0,0,0,0,0,4510,1 -2138,NYDHOG_MEMORY1_1,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0xC9,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2139,NYDHOG_MEMORY1_2,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0xC9,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2140,NYDHOG_MEMORY2_1,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0xC9,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2141,NYDHOG_MEMORY2_2,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0xC9,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2142,NYDHOG_MEMORY3_1,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0xC9,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -2143,NYDHOG_MEMORY3_2,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0xC9,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2138,NYDHOG_MEMORY1_1,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x161,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2139,NYDHOG_MEMORY1_2,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x161,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2140,NYDHOG_MEMORY2_1,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x161,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2141,NYDHOG_MEMORY2_2,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x161,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2142,NYDHOG_MEMORY3_1,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x161,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2143,NYDHOG_MEMORY3_2,Nydhogg's Memory,Nydhogg's Memory,130,10,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x161,200,1248,576,1248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2144,G_ANTLER_SCARABA,Antler Scaraba,Antler Scaraba,136,62600,1,0,0,1,412,822,155,102,23,99,59,129,91,45,10,12,1,4,42,0x3985,200,504,624,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2145,G_RAKE_SCARABA,Rake Scaraba,Rake Scaraba,139,67700,1,0,0,1,830,942,250,70,90,66,145,52,112,77,10,12,1,4,42,0x3985,150,588,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2146,G_S_NYDHOG,G_S_NYDHOG,G_S_NYDHOG,117,300000,0,0,0,2,840,1680,60,60,1,30,30,136,88,30,10,12,2,9,87,0x37B5,150,1596,1620,864,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/db/re/mob_skill_db.txt b/db/re/mob_skill_db.txt index 5ba654c93..662754b4b 100644 --- a/db/re/mob_skill_db.txt +++ b/db/re/mob_skill_db.txt @@ -5884,8 +5884,8 @@ 2086,Rake Scaraba@NPC_STONESKIN,attack,675,3,10000,1000,30000,no,self,myhpltmaxrate,50,,,,,,6, 2086,Rake Scaraba@NPC_STONESKIN,chase,675,3,10000,1000,30000,no,self,myhpltmaxrate,50,,,,,,6, 2086,Rake Scaraba@PF_SPIDERWEB,chase,405,1,300,0,10000,yes,target,always,0,,,,,,7, -2086,Rake Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,19,0x81,,,,, -2086,Rake Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,0,6,0x3095,,,,, +2086,Rake Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,19,0x181,,,,, +2086,Rake Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,0,6,0x3195,,,,, 2087,Queen Scaraba@AL_HEAL,attack,28,11,10000,0,5000,no,friend,friendhpltmaxrate,60,,,,,,3, 2087,Queen Scaraba@AL_HEAL,attack,28,11,10000,0,5000,no,self,myhpltmaxrate,30,,,,,,3, 2087,Queen Scaraba@AL_HEAL,chase,28,11,10000,0,5000,no,friend,friendhpltmaxrate,60,,,,,,3, @@ -6428,14 +6428,17 @@ 2137,Miming@NPC_SILENCEATTACK,chase,178,2,500,700,5000,no,target,always,0,,,,,,32, 2138,Nydhogg's Memory@NPC_TALK,idle,682,10,2500,0,10000,yes,self,always,0,,,,,,,35 2138,Nydhogg's Memory@NPC_TALK,attack,682,10,10000,0,30000,yes,self,always,0,,,,,,,35 +2138,Nydhogg's Memory@NPC_SUMMONSLAVE,idle,196,1,10000,0,0,no,self,onspawn,0,2139,,,,,, 2139,Nydhogg's Memory@NPC_TALK,idle,682,10,2500,0,10000,yes,self,always,0,,,,,,,36 2139,Nydhogg's Memory@NPC_TALK,attack,682,10,10000,0,30000,yes,self,always,0,,,,,,,36 2140,Nydhogg's Memory@NPC_TALK,idle,682,10,2500,0,10000,yes,self,always,0,,,,,,,37 2140,Nydhogg's Memory@NPC_TALK,attack,682,10,10000,0,30000,yes,self,always,0,,,,,,,37 +2140,Nydhogg's Memory@NPC_SUMMONSLAVE,idle,196,1,10000,0,0,no,self,onspawn,0,2141,,,,,, 2141,Nydhogg's Memory@NPC_TALK,idle,682,10,2500,0,10000,yes,self,always,0,,,,,,,38 2141,Nydhogg's Memory@NPC_TALK,attack,682,10,10000,0,30000,yes,self,always,0,,,,,,,38 2142,Nydhogg's Memory@NPC_TALK,idle,682,10,2500,0,10000,yes,self,always,0,,,,,,,39 2142,Nydhogg's Memory@NPC_TALK,attack,682,10,10000,0,30000,yes,self,always,0,,,,,,,39 +2142,Nydhogg's Memory@NPC_SUMMONSLAVE,idle,196,1,10000,0,0,no,self,onspawn,0,2143,,,,,, 2143,Nydhogg's Memory@NPC_TALK,idle,682,10,2500,0,10000,yes,self,always,0,,,,,,,40 2143,Nydhogg's Memory@NPC_TALK,attack,682,10,10000,0,30000,yes,self,always,0,,,,,,,40 -- cgit v1.2.3-70-g09d2 From 7d59a35f2a7c1c3aa99b223d3758448608581e8b Mon Sep 17 00:00:00 2001 From: euphyy Date: Wed, 6 Mar 2013 02:04:59 +0000 Subject: * Initial implementation of Archangel Wing Enchants script. * Added some Malangdo coin exchange NPCs, more will come later. * Updated Malangdo warp portals. * Fixed item ID 12220 and clarified documentation of 'getiteminfo' types 11 and 14 (bugreport:7256). * Minor Renewal item database update. * Applied changes from r17171 to SQL databases. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17172 54d463be-8e91-2dee-dedb-b68131a5f0ec --- db/pre-re/item_db.txt | 2 +- db/re/item_db.txt | 2 +- npc/merchants/coin_exchange.txt | 2 + npc/re/merchants/coin_exchange.txt | 2 +- npc/re/quests/quests_malangdo.txt | 193 ++++++++++++++++++++++++++++++++++++- sql-files/item_db.sql | 6 +- sql-files/item_db_re.sql | 46 ++++----- 7 files changed, 221 insertions(+), 32 deletions(-) (limited to 'db/re') diff --git a/db/pre-re/item_db.txt b/db/pre-re/item_db.txt index 633222feb..59d61be1c 100644 --- a/db/pre-re/item_db.txt +++ b/db/pre-re/item_db.txt @@ -4765,7 +4765,7 @@ 12217,Aspersio_5_Scroll,LV5 Aspersio Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(countitem(523)>0) { skilleffect "PR_ASPERSIO",0; sc_start SC_ASPERSIO,180000,5; delitem 523,1; } },{},{} 12218,Assumptio_5_Scroll,LV5 Assumptio Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ skilleffect "HP_ASSUMPTIO",0; sc_start SC_ASSUMPTIO,100000,5; },{},{} 12219,Wind_Walk_10_Scroll,LV10 Wind Walker Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ skilleffect "SN_WINDWALK",0; sc_start SC_WINDWALK,250000,5; },{},{} -12220,Adrenaline_Scroll,LV5 Adrenaline Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),14)==6||getiteminfo(getequipid(EQI_HAND_R),14)==7) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; } },{},{} +12220,Adrenaline_Scroll,LV5 Adrenaline Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ set .@type,getiteminfo(getequipid(EQI_HAND_R),11); if (.@type==6||.@type==7||.@type==8) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; } },{},{} 12221,Megaphone_,Megaphone,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ input @megaphone$; announce strcharinfo(0) + ": " + @megaphone$,bc_all,0xFF0000; end; },{},{} 12225,Sweet_Candy_Striper,Sweet Candy Cane,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1245; },{},{} 12226,Examination1,Examination 1,0,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SpeedUp0,5400000,0; percentheal 100,100; sc_start SC_STRFOOD,5400000,10; sc_start SC_DEXFOOD,5400000,5; sc_start SC_ATKPOTION,5400000,22; sc_start SC_MATKFOOD,5400000,15; },{},{} diff --git a/db/re/item_db.txt b/db/re/item_db.txt index 87e352349..680f01d08 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -5519,7 +5519,7 @@ 12217,Aspersio_5_Scroll,LV5 Aspersio Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(countitem(523)>0) { skilleffect "PR_ASPERSIO",0; sc_start SC_ASPERSIO,180000,5; delitem 523,1; } },{},{} 12218,Assumptio_5_Scroll,LV5 Assumptio Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ skilleffect "HP_ASSUMPTIO",0; sc_start SC_ASSUMPTIO,100000,5; },{},{} 12219,Wind_Walk_10_Scroll,LV10 Wind Walker Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ skilleffect "SN_WINDWALK",0; sc_start SC_WINDWALK,250000,5; },{},{} -12220,Adrenaline_Scroll,LV5 Adrenaline Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),14)==6||getiteminfo(getequipid(EQI_HAND_R),14)==7) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; } },{},{} +12220,Adrenaline_Scroll,LV5 Adrenaline Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ set .@type,getiteminfo(getequipid(EQI_HAND_R),11); if (.@type==6||.@type==7||.@type==8) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; } },{},{} 12221,Megaphone_,Megaphone,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ input @megaphone$; announce strcharinfo(0) + ": " + @megaphone$,bc_all,0xFF0000; end; },{},{} 12225,Sweet_Candy_Striper,Sweet Candy Cane,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1245; },{},{} 12226,Examination1,Examination 1,0,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SpeedUp0,5400000,0; percentheal 100,100; sc_start SC_STRFOOD,5400000,10; sc_start SC_DEXFOOD,5400000,5; sc_start SC_ATKPOTION,5400000,22; sc_start SC_MATKFOOD,5400000,15; },{},{} diff --git a/npc/merchants/coin_exchange.txt b/npc/merchants/coin_exchange.txt index a894485a8..c52db9787 100644 --- a/npc/merchants/coin_exchange.txt +++ b/npc/merchants/coin_exchange.txt @@ -13,6 +13,8 @@ //= 1.2 Optimized and merged into one file. [Euphy] //============================================================ +// Manuk & Splendide +//============================================================ - script ::merchant_13_2 -1,{ set .@n$, "["+strnpcinfo(1)+"]"; mes .@n$; diff --git a/npc/re/merchants/coin_exchange.txt b/npc/re/merchants/coin_exchange.txt index 04fa93ce8..92afddca0 100644 --- a/npc/re/merchants/coin_exchange.txt +++ b/npc/re/merchants/coin_exchange.txt @@ -824,4 +824,4 @@ malangdo,150,135,5 script Roving Merchant 495,{ callfunc "F_mal_coin",1,"[Roving Merchant]",.@names$[.@i],.@items[.@i],0,200,0; next; } -} \ No newline at end of file +} diff --git a/npc/re/quests/quests_malangdo.txt b/npc/re/quests/quests_malangdo.txt index 685da8b24..ac610cc65 100644 --- a/npc/re/quests/quests_malangdo.txt +++ b/npc/re/quests/quests_malangdo.txt @@ -3,14 +3,17 @@ //===== By: ================================================== //= Muad_Dib //===== Current Version: ===================================== -//= 1.1 +//= 1.2 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= -//= Quest NPCs related to Malangdo. +//= Quest NPCs related to Malangdo: +//== Help the bad cats in danger, Clean the Ship, +//== Help Chef Nyas, Archangel Wing Enchants //===== Additional Comments: ================================= //= 1.0 First version. [Euphy] //= 1.1 Added two quests. +//= 1.2 Added Archangel Wing Enchants. //============================================================ // Help the bad cats in danger :: mal_bad_guys @@ -1903,4 +1906,188 @@ mal_in02,187,58,3 script Chef Nyas 548,{ mes "If you don't have any business, don't touch vegetable and go away."; close; } -} \ No newline at end of file +} + +// Archangel Wing Enchants :: enc_angel +//============================================================ +malangdo,234,153,6 script Notice Board#mal 837,{ + mes "^0000FFThere's a hastily written message on this bulletin board.^000000"; + next; + mes "A fallen angel within will unlock a hidden enchantment to Archangel Wings."; + close; +} + +mal_in01,15,16,3 script Fallen Angel#mal 403,{ + disable_items; + if (checkweight(1201,1) == 0) { + mes "You are carrying too many items, please reduce them and come back!"; + close; + } + if (MaxWeight - Weight < 10000) { + mes "You have overweight, please reduce it and come back!"; + close; + } + if (getequipid(EQI_GARMENT) == 2573) { + if (Zeny >= 1000000) + set .@menu$, "Enchant Archangel Wing"; + else + set .@menu$, "^999999You do not have enough zeny!^000000"; + } else + set .@menu$, "^999999You have not equipped the Archangel Wing!^000000"; + mes "[Fallen Angel]"; + mes "You seem like a poor guy!"; + next; + mes "[Fallen Angel]"; + mes "If you have an Archangel Wing, I will enchant my capability into the useless 4th slot. Would you like me to do so?"; + next; + switch(select("What is that?:"+.@menu$+":Enchant Initialization")) { + case 1: + switch(select("Stop speaking:What are you going to do?")) { + case 1: + mes "[Fallen Angel]"; + mes "What did you say?"; + close; + case 2: + mes "[Fallen Angel]"; + mes "I can enchant my capability into your Archangel Wing if you pay 1,000,000 zeny. But you can't enchant it again without resetting it."; + next; + mes "[Fallen Angel]"; + mes "The enchantment is dangerous, so ^ff0000the wing might be damaged^000000! Nevertheless, my good blessing will retain the ^0000ffcard and refine level^0000ff!"; + close; + } + case 2: + if (Zeny < 1000000) { + mes "[Fallen Angel]"; + mes "I can't do it if you can't pay!"; + close; + } + mes "[Fallen Angel]"; + mes "There are 2 important notices. First, the enchantment requires ^0000ff1,000,000 zeny^000000."; + next; + mes "[Fallen Angel]"; + mes "Second, ^ff0000although the rate is not high, the Archangel Wing might be damaged^000000! This is very unlucky!"; + mes "If you can accept these conditions, I will enchant the wing for you."; + next; + if(select("Let me consider...:I accept, let's enchant!") == 1) { + mes "[Fallen Angel]"; + mes "Ok! Take your time to consider!"; + close; + } + specialeffect2 EF_REPAIRWEAPON; + progressbar "ffff00",2; + if (getequipisequiped(EQI_GARMENT) == 0) { + mes "[Fallen Angel]"; + mes "The Archangel Wing has been taken out!"; + close; + } + if (getequipid(EQI_GARMENT) != 2573) { + mes "[Fallen Angel]"; + mes "Don't take off the item!"; + close; + } + if (getequipcardid(EQI_GARMENT,3)) { + mes "[Fallen Angel]"; + mes "This Archangel Wing is enchanted! Please initialize it or bring another Archangel Wing for me!"; + close; + } + set .@equip_refine, getequiprefinerycnt(EQI_GARMENT); + setarray .@equip_card[0], getequipcardid(EQI_GARMENT,0),getequipcardid(EQI_GARMENT,1),getequipcardid(EQI_GARMENT,2); + + set .@i, rand(1,900); + if (.@i < 2) set .@enchant,4848; //Immuned1 + else if (.@i < 3) set .@enchant,4849; //Cranial1 + else if (.@i < 4) set .@enchant,4852; //Heal_Amount5 + else if (.@i < 9) set .@enchant,4853; //S_Str + else if (.@i < 14) set .@enchant,4854; //S_Agi + else if (.@i < 19) set .@enchant,4855; //S_Vital + else if (.@i < 24) set .@enchant,4856; //S_Int + else if (.@i < 29) set .@enchant,4857; //S_Dex + else if (.@i < 34) set .@enchant,4858; //S_Luck + else if (.@i < 39) set .@enchant,4851; //Heal_Amount4 + else if (.@i < 49) set .@enchant,4850; //Heal_Amount3 + else if (.@i < 74) set .@enchant,4760; //Matk1 + else if (.@i < 84) set .@enchant,4761; //Matk2 + else if (.@i < 109) set .@enchant,4817; //Sharp2 + else if (.@i < 119) set .@enchant,4816; //Sharp3 + else if (.@i < 144) set .@enchant,4814; //Spell2 + else if (.@i < 154) set .@enchant,4813; //Spell3 + else if (.@i < 179) set .@enchant,4833; //Expert_Archer2 + else if (.@i < 189) set .@enchant,4834; //Expert_Archer3 + else if (.@i < 214) set .@enchant,4810; //Fighting_Spirit2 + else if (.@i < 224) set .@enchant,4809; //Fighting_Spirit3 + else if (.@i < 259) set .@enchant,4701; //Strength2 + else if (.@i < 294) set .@enchant,4731; //Agility2 + else if (.@i < 329) set .@enchant,4721; //Dexterity2 + else if (.@i < 364) set .@enchant,4741; //Vitality2 + else if (.@i < 399) set .@enchant,4751; //Luck2 + else if (.@i < 434) set .@enchant,4711; //Inteligence2 + else if (.@i < 504) set .@enchant,4700; //Strength1 + else if (.@i < 574) set .@enchant,4730; //Agility1 + else if (.@i < 644) set .@enchant,4720; //Dexterity1 + else if (.@i < 714) set .@enchant,4740; //Vitality1 + else if (.@i < 784) set .@enchant,4750; //Luck1 + else if (.@i < 854) set .@enchant,4710; //Inteligence1 + else set .@enchant,0; + + set Zeny, Zeny - 1000000; + delequip EQI_GARMENT; + if (.@enchant == 0) { + mes "[Fallen Angel]"; + mes "Be merciful to the survivor,"; + mes "Send flowers to the dead."; + next; + mes "[Fallen Angel]"; + mes "Help for justice,"; + mes "Elimination of evil."; + next; + mes "[Fallen Angel]"; + mes "But the important point is... the Archangel Wing is damaged!"; + close; + } + getitem2 2573,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@enchant; //Archangel_Wing + if (.@i < 4) + announce strcharinfo(0)+" has enchanted Archangel Wing with amazing capability!",bc_all,0xFF0000,FW_NORMAL,10; + mes "[Fallen Angel]"; + mes "Take it!"; + mes "I believe that you will become the dominator of the new world!"; + close; + case 3: + mes "[Fallen Angel]"; + mes "Initialization requires ^0000ff3 units of Silvervine Fruit^000000. The wing will not be damaged except for the enchanted capability."; + next; + if(select("Let me consider...:Ok, I want initialize it.") == 1) { + mes "[Fallen Angel]"; + mes "Ok! Take your time to consider!"; + close; + } + specialeffect2 EF_REPAIRWEAPON; + progressbar "ffff00",2; + if (getequipisequiped(EQI_GARMENT) == 0) { + mes "[Fallen Angel]"; + mes "The Archangel Wing has been taken out!"; + close; + } + if (getequipid(EQI_GARMENT) != 2573) { + mes "[Fallen Angel]"; + mes "Oh... you have unequipped the Archangel Wing!"; + close; + } + if (countitem(6417) < 3) { + mes "[Fallen Angel]"; + mes "I can't do it if you can't pay!"; + close; + } + if (getequipcardid(EQI_GARMENT,3) < 4700) { // Armor Enchant System + mes "[Fallen Angel]"; + mes "This equipment has not been enchanted, please check it again!"; + close; + } + set .@equip_refine, getequiprefinerycnt(EQI_GARMENT); + setarray .@equip_card[0], getequipcardid(EQI_GARMENT,0),getequipcardid(EQI_GARMENT,1),getequipcardid(EQI_GARMENT,2); + delequip EQI_GARMENT; + getitem2 2573,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],0; //Archangel_Wing + mes "[Fallen Angel]"; + mes "Take it!"; + close; + } +} diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql index 9b0c8fff4..7271e9d0d 100644 --- a/sql-files/item_db.sql +++ b/sql-files/item_db.sql @@ -4796,7 +4796,7 @@ REPLACE INTO `item_db` VALUES (12216,'Inc_Agi_10_Scroll','LV10 Agil Scroll',2,2, REPLACE INTO `item_db` VALUES (12217,'Aspersio_5_Scroll','LV5 Aspersio Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(countitem(523)>0) { skilleffect "PR_ASPERSIO",0; sc_start SC_ASPERSIO,180000,5; delitem 523,1; }',NULL,NULL); REPLACE INTO `item_db` VALUES (12218,'Assumptio_5_Scroll','LV5 Assumptio Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'skilleffect "HP_ASSUMPTIO",0; sc_start SC_ASSUMPTIO,100000,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (12219,'Wind_Walk_10_Scroll','LV10 Wind Walker Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'skilleffect "SN_WINDWALK",0; sc_start SC_WINDWALK,250000,5;',NULL,NULL); -REPLACE INTO `item_db` VALUES (12220,'Adrenaline_Scroll','LV5 Adrenaline Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(getiteminfo(getequipid(EQI_HAND_R),14)==6||getiteminfo(getequipid(EQI_HAND_R),14)==7) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (12220,'Adrenaline_Scroll','LV5 Adrenaline Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'set .@type,getiteminfo(getequipid(EQI_HAND_R),11); if (.@type==6||.@type==7||.@type==8) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; }',NULL,NULL); REPLACE INTO `item_db` VALUES (12221,'Megaphone_','Megaphone',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'input @megaphone$; announce strcharinfo(0) + ": " + @megaphone$,bc_all,0xFF0000; end;',NULL,NULL); REPLACE INTO `item_db` VALUES (12225,'Sweet_Candy_Striper','Sweet Candy Cane',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'pet 1245;',NULL,NULL); REPLACE INTO `item_db` VALUES (12226,'Examination1','Examination 1',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SpeedUp0,5400000,0; percentheal 100,100; sc_start SC_STRFOOD,5400000,10; sc_start SC_DEXFOOD,5400000,5; sc_start SC_ATKPOTION,5400000,22; sc_start SC_MATKFOOD,5400000,15;',NULL,NULL); @@ -4805,7 +4805,7 @@ REPLACE INTO `item_db` VALUES (12228,'Examination3','Examination 3',0,20,NULL,50 REPLACE INTO `item_db` VALUES (12229,'Examination4','Examination 4',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SpeedUp0,5400000,0; percentheal 100,100; sc_start SC_STRFOOD,5400000,3; sc_start SC_AGIFOOD,5400000,5; sc_start SC_VITFOOD,5400000,10; sc_start SC_MATKFOOD,5400000,52;',NULL,NULL); REPLACE INTO `item_db` VALUES (12230,'Examination5','Examination 5',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SpeedUp0,5400000,0; percentheal 100,100; sc_start SC_INTFOOD,5400000,3; sc_start SC_DEXFOOD,5400000,12; sc_start SC_ATKPOTION,5400000,20; sc_start SC_MATKFOOD,5400000,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (12231,'Examination6','Examination 6',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,100; sc_start SC_SpeedUp0,5400000,0; sc_start SC_STRFOOD,5400000,6; sc_start SC_DEXFOOD,5400000,6; sc_start SC_AGIFOOD,5400000,6; sc_start SC_INTFOOD,5400000,6; sc_start SC_VITFOOD,5400000,6; sc_start SC_LUKFOOD,5400000,6; sc_start SC_ATKPOTION,5400000,24; sc_start SC_MATKFOOD,5400000,24;',NULL,NULL); -REPLACE INTO `item_db` VALUES (12232,'Gingerbread','Ginger Bread',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db` VALUES (12232,'Gingerbread','Ginger Bread',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ASPDPOTION1,900000,0; sc_start SC_SpeedUp0,900000,0;',NULL,NULL); REPLACE INTO `item_db` VALUES (12233,'Kvass','Kvass',0,20,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (12234,'Cacao99','Fierce Cacao 99%',0,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 25,0;',NULL,NULL); REPLACE INTO `item_db` VALUES (12235,'Strawberry_Choco','Chocolate Strawberry',2,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 0,5; skilleffect "AL_BLESSING",0; sc_start SC_BLESSING,240000,10;',NULL,NULL); @@ -4987,7 +4987,7 @@ REPLACE INTO `item_db` VALUES (12410,'Spareribs_H','Spareribs H',2,NULL,NULL,0,N REPLACE INTO `item_db` VALUES (12411,'HE_Battle_Manual','HE Battle Manual',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXPBOOST,900000,200;',NULL,NULL); REPLACE INTO `item_db` VALUES (12412,'HE_Bubble_Gum','HE Bubble Gum',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ITEMBOOST,900000,300;',NULL,NULL); REPLACE INTO `item_db` VALUES (12413,'PCBang_Coupon_Box2','PCBang Coupon Box2',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (12414,'Guarana_Candy','Guarana Candy',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCASPDRATE,1800000,10; sc_start SC_INCREASEAGI,140000,5; skilleffect "AL_INCAGI",0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (12414,'Guarana_Candy','Guarana Candy',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ASPDPOTION0,1800000,0; sc_start SC_INCREASEAGI,140000,5; skilleffect "AL_INCAGI",0;',NULL,NULL); REPLACE INTO `item_db` VALUES (12415,'Siege_Teleport_Scroll2','Siege Teleport Scroll2',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (12416,'LUcky_Egg_C3','LUcky Egg C3',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (12417,'Boost500','Boost500',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index e27070ac4..becbfdc65 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -1626,7 +1626,7 @@ REPLACE INTO `item_db_re` VALUES (2569,'Mercy_Shawl','Mercy Shawl',5,20,NULL,400 REPLACE INTO `item_db_re` VALUES (2570,'Judgement_Shawl','Judgement Shawl',5,20,NULL,400,NULL,12,NULL,NULL,0x00000100,7,2,4,NULL,'100',1,0,'bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AB_ORATIO",getskilllv("AB_ORATIO") ? getskilllv("AB_ORATIO") : 2,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2571,'Para_Team_Manteau2','Eden Team Manteau II',5,NULL,NULL,0,NULL,18,NULL,NULL,0xFFFFFFFF,7,2,4,NULL,'60',NULL,0,'bonus bFlee,12; bonus2 bSubEle,Ele_Neutral,10;',NULL,NULL); #2572, -REPLACE INTO `item_db_re` VALUES (2573,'Archangel_Wings','Archangel Wings',5,NULL,NULL,200,NULL,18,NULL,1,0xFFFFFFFF,7,2,4,NULL,NULL,1,1,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2573,'Archangel_Wing','Archangel Wings',5,NULL,NULL,200,NULL,18,NULL,1,0xFFFFFFFF,7,2,4,NULL,NULL,1,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2574,'Urj_Manteau','Urj Manteau',5,20,NULL,600,NULL,20,NULL,NULL,0x00000080,8,2,4,NULL,'100',1,0,'bonus bMaxHPRate,2; bonus2 bSubEle,Ele_Neutral,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2575,'Pertz_Manteau','Pertz Manteau',5,20,NULL,600,NULL,16,NULL,NULL,0x00000080,8,2,4,NULL,'100',1,0,'bonus bFlee,10; bonus bCritical,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2576,'Adventurer\'s_Backpack','Adventurer\'s Backpack',5,NULL,NULL,200,NULL,20,NULL,1,0xFFFFFFFF,7,2,4,NULL,NULL,1,2,'skill "BS_GREED",1; if(getrefine()>6) { if(readparam(bStr)>=90){ bonus bBaseAtk,20; } if(readparam(bInt)>=90){ bonus bMatk,30; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,10; } if(readparam(bAgi)>=90){ bonus bAspdRate,8; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,10; } } if(getrefine()>8) { if(readparam(bStr)>=90){ bonus bBaseAtk,10; } if(readparam(bInt)>=90){ bonus bMatk,20; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,5; } if(readparam(bAgi)>=90){ bonus bAspd,1; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,5; } }',NULL,NULL); @@ -5381,7 +5381,7 @@ REPLACE INTO `item_db_re` VALUES (12216,'Inc_Agi_10_Scroll','LV10 Agil Scroll',2 REPLACE INTO `item_db_re` VALUES (12217,'Aspersio_5_Scroll','LV5 Aspersio Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(countitem(523)>0) { skilleffect "PR_ASPERSIO",0; sc_start SC_ASPERSIO,180000,5; delitem 523,1; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12218,'Assumptio_5_Scroll','LV5 Assumptio Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'skilleffect "HP_ASSUMPTIO",0; sc_start SC_ASSUMPTIO,100000,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12219,'Wind_Walk_10_Scroll','LV10 Wind Walker Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'skilleffect "SN_WINDWALK",0; sc_start SC_WINDWALK,250000,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12220,'Adrenaline_Scroll','LV5 Adrenaline Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(getiteminfo(getequipid(EQI_HAND_R),14)==6||getiteminfo(getequipid(EQI_HAND_R),14)==7) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12220,'Adrenaline_Scroll','LV5 Adrenaline Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'set .@type,getiteminfo(getequipid(EQI_HAND_R),11); if (.@type==6||.@type==7||.@type==8) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12221,'Megaphone_','Megaphone',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'input @megaphone$; announce strcharinfo(0) + ": " + @megaphone$,bc_all,0xFF0000; end;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12225,'Sweet_Candy_Striper','Sweet Candy Cane',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'pet 1245;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12226,'Examination1','Examination 1',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SpeedUp0,5400000,0; percentheal 100,100; sc_start SC_STRFOOD,5400000,10; sc_start SC_DEXFOOD,5400000,5; sc_start SC_ATKPOTION,5400000,22; sc_start SC_MATKFOOD,5400000,15;',NULL,NULL); @@ -5390,7 +5390,7 @@ REPLACE INTO `item_db_re` VALUES (12228,'Examination3','Examination 3',0,20,NULL REPLACE INTO `item_db_re` VALUES (12229,'Examination4','Examination 4',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SpeedUp0,5400000,0; percentheal 100,100; sc_start SC_STRFOOD,5400000,3; sc_start SC_AGIFOOD,5400000,5; sc_start SC_VITFOOD,5400000,10; sc_start SC_MATKFOOD,5400000,52;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12230,'Examination5','Examination 5',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SpeedUp0,5400000,0; percentheal 100,100; sc_start SC_INTFOOD,5400000,3; sc_start SC_DEXFOOD,5400000,12; sc_start SC_ATKPOTION,5400000,20; sc_start SC_MATKFOOD,5400000,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12231,'Examination6','Examination 6',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,100; sc_start SC_SpeedUp0,5400000,0; sc_start SC_STRFOOD,5400000,6; sc_start SC_DEXFOOD,5400000,6; sc_start SC_AGIFOOD,5400000,6; sc_start SC_INTFOOD,5400000,6; sc_start SC_VITFOOD,5400000,6; sc_start SC_LUKFOOD,5400000,6; sc_start SC_ATKPOTION,5400000,24; sc_start SC_MATKFOOD,5400000,24;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12232,'Gingerbread','Ginger Bread',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12232,'Gingerbread','Ginger Bread',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ASPDPOTION1,900000,0; sc_start SC_SpeedUp0,900000,0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12233,'Kvass','Kvass',0,20,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12234,'Cacao99','Fierce Cacao 99%',0,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 25,0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12235,'Strawberry_Choco','Chocolate Strawberry',2,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 0,5; skilleffect "AL_BLESSING",0; sc_start SC_BLESSING,240000,10;',NULL,NULL); @@ -5572,7 +5572,7 @@ REPLACE INTO `item_db_re` VALUES (12410,'Spareribs_H','Spareribs H',2,NULL,NULL, REPLACE INTO `item_db_re` VALUES (12411,'HE_Battle_Manual','HE Battle Manual',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXPBOOST,900000,200;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12412,'HE_Bubble_Gum','HE Bubble Gum',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ITEMBOOST,900000,300;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12413,'PCBang_Coupon_Box2','PCBang Coupon Box2',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12414,'Guarana_Candy','Guarana Candy',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCASPDRATE,1800000,10; sc_start SC_INCREASEAGI,140000,5; skilleffect "AL_INCAGI",0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12414,'Guarana_Candy','Guarana Candy',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ASPDPOTION0,1800000,0; sc_start SC_INCREASEAGI,140000,5; skilleffect "AL_INCAGI",0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12415,'Siege_Teleport_Scroll2','Siege Teleport Scroll2',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12416,'LUcky_Egg_C3','LUcky Egg C3',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12417,'Boost500','Boost500',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -7290,30 +7290,30 @@ REPLACE INTO `item_db_re` VALUES (16678,'Universal_Catalog_Gold_Box50','Universa REPLACE INTO `item_db_re` VALUES (16679,'Universal_Catalog_Gold_Box10','Universal Catalog Gold 10 Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16680,'Universal_Catalog_Gold_Box50','Universal Catalog Gold 50 Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,50;',NULL,NULL); # -REPLACE INTO `item_db_re` VALUES (16740,'The_Sea_God\'s_Call_23_Hour_Box','The Sea God\'s Call 23 Hour Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16741,'Cutlass_1_Day_Box','Cutlass 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1198,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16742,'Cutlass_7_Day_Box','Cutlass 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1198,604800;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16743,'Marlin_1_Day_Box','Marlin 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1489,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16744,'Marlin_7_Day_Box','Marlin 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1489,604800;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16745,'Pompano_1_Day_Box','Pompano 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13068,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16746,'Pompano_7_Day_Box','Pompano 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13068,604800;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16747,'Tuna_1_Day_Box','Tuna 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 16016,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16748,'Tuna_7_Day_Box','Tuna 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 16016,604800;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16749,'Malangdo_Crab_1_Day_Box','Malangdo Crab 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18107,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16750,'Malangdo_Crab_7_Day_Box','Malangdo Crab 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18107,604800;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16751,'Zebra_Eel_1_Day_Box','Zebra Eel 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16752,'Zebra_Eel_7_Day_Box','Zebra Eel 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16740,'Ptotection_Seagod_Box','The Sea God\'s Call 23 Hour Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16741,'Hairtail_Box1,'Cutlass 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1198,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16742,'Hairtail_Box2','Cutlass 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1198,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16743,'Spearfish_Box1','Marlin 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1489,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16744,'Spearfish_Box2','Marlin 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1489,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16745,'Saurel_Box1','Pompano 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13068,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16746,'Saurel_Box2','Pompano 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13068,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16747,'Tuna_Box1','Tuna 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 16016,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16748,'Tuna_Box2','Tuna 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 16016,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16749,'Malang_Crab_Box1','Malangdo Crab 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18107,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16750,'Malang_Crab_Box2','Malangdo Crab 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18107,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16751,'Brindle_Eel_Box1','Zebra Eel 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16752,'Brindle_Eel_Box2','Zebra Eel 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,604800;',NULL,NULL); # -REPLACE INTO `item_db_re` VALUES (16763,'The_Sea_God\'s_Call_7_Day_Box','The Sea God\'s Call 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,604800;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16764,'The_Sea_God\'s_Call_15_Day_Box','The Sea God\'s Call 15 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,1209600;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16765,'Octopus_Hunting_Skewer_23_Hour_Box','Octopus Hunting Skewer 23 Hour Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16766,'Octopus_Hunting_Skewer_3_Day_Box','Octopus Hunting Skewer 3 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,259200;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16767,'Octopus_Hunting_Skewer_7_Day_Box','Octopus Hunting Skewer 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16763,'Ptotection_Seagod_Box2','The Sea God\'s Call 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16764,'Ptotection_Seagod_Box3','The Sea God\'s Call 15 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,1209600;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16765,'Octo_Hstick_Box','Octopus Hunting Skewer 23 Hour Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16766,'Octo_Hstick_Box2','Octopus Hunting Skewer 3 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,259200;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16767,'Octo_Hstick_Box3','Octopus Hunting Skewer 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,604800;',NULL,NULL); # REPLACE INTO `item_db_re` VALUES (16776,'Universal_Catalog_Gold_Box10','Universal Catalog Gold 10 Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16777,'Universal_Catalog_Gold_Box50','Universal Catalog Gold 50 Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,50;',NULL,NULL); # -REPLACE INTO `item_db_re` VALUES (16998,'Archangel_Wings_Box','Archangel Wings Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2573,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16998,'Archangel_Wing_Box','Archangel Wings Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2573,1;',NULL,NULL); # REPLACE INTO `item_db_re` VALUES (17155,'Enhance_Huuma_Shuriken_Box','Enhance Huuma Shuriken Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13316,86400;',NULL,NULL); # Mechanic/Genetic Cannonballs -- cgit v1.2.3-70-g09d2 From 000dd6aa4dff13e8cfb7d0f58d6b89df1bad0e05 Mon Sep 17 00:00:00 2001 From: euphyy Date: Sat, 9 Mar 2013 20:55:52 +0000 Subject: * Added remaining Malangdo coin traders. * Renewal item database update: -- Implemented nearly all remaining Malangdo items. -- Added Upg_* boxes (follow-up r17180). -- Corrected many kRO names. * Updated Renewal item_trade database for Dewata, Malangdo, and Upg_* boxes. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17186 54d463be-8e91-2dee-dedb-b68131a5f0ec --- db/re/item_db.txt | 23 ++++---- sql-files/item_db_re.sql | 90 +++++++++++++++++++------------- sql-files/upgrades/2013-03-06--00-00.sql | 2 +- 3 files changed, 68 insertions(+), 47 deletions(-) (limited to 'db/re') diff --git a/db/re/item_db.txt b/db/re/item_db.txt index 680f01d08..e551a3e2f 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -6233,7 +6233,7 @@ 13205,Poison_Sphere,Poison Sphere,10,80,,5,50,,,,0x01000000,7,2,32768,,1,,5,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,500; },{},{} 13206,Blind_Sphere,Blind Sphere,10,80,,5,50,,,,0x01000000,7,2,32768,,1,,5,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; },{},{} 13207,Freezing_Sphere,Freezing Sphere,10,80,,5,50,,,,0x01000000,7,2,32768,,1,,5,{ bonus bAtkEle,Ele_Water; },{},{} -13208,Gong_Bug,Gong Bug,10,0,,20,50,,,,0x01000000,7,2,32768,,50,,3,{},{},{} +13208,Gong_Bug,Sow Bug,10,0,,20,50,,,,0x01000000,7,2,32768,,50,,3,{ /*bonus2 bAddEff,Eff_Stun,?;*/ },{},{} // Shurikens & Kunais 13250,Shuriken,Shuriken,10,4,,5,10,,,,0x02000000,7,2,32768,,1,,6,{},{},{} 13251,Nimbus_Shuriken,Nimbus Shuriken,10,10,,5,30,,,,0x02000000,7,2,32768,,20,,6,{},{},{} @@ -6278,7 +6278,10 @@ 13289,Petti_Noodle_To_Throw,Throwing Petite Tail Soup,10,100,,50,0,,,,0x00040000,8,2,32768,,99,,9,{ sc_start SC_PUTTI_TAILS_NOODLES,300000,20; },{},{} 13290,Black_Thing_To_Throw,Throwing Black Mass,10,100,,50,0,,,,0x00040000,8,2,32768,,99,,9,{ sc_start SC_STOMACHACHE,60000,rand(5,10); },{},{} // More Shurikens & Kunais -13294,Explosive_Kunai,Explosive Kunai,10,100,,50,30,,,,0x02000000,7,2,32768,,100,,7,{ bonus bAtkEle,Ele_Neutral; },{},{} +13291,Starfish,Starfish,10,0,,5,110,,,,0x02000000,7,2,32768,,50,,7,{ bonus bAtkEle,Ele_Neutral; /*bonus2 bAddEff,Eff_Stun,?;*/ },{},{} +13292,Dried_Squid,Dried Squid,10,10,,20,50,,,,0x02000000,7,2,32768,,1,,7,{ bonus bAtkEle,Ele_Neutral; /*bonus2 bAddEff,Eff_Blind,?;*/ },{},{} +13293,Flying_Fish,Flying Fish,10,10,,20,50,,,,0x02000000,7,2,32768,,1,,6,{ bonus bAtkEle,Ele_Neutral; /*bonus2 bAddEff,Eff_Bleeding,?;*/ },{},{} +13294,Explosive_Kunai,Explosive Kunai,10,100,,30,50,,,,0x02000000,7,2,32768,,100,,7,{ bonus bAtkEle,Ele_Neutral; },{},{} // Ninja Fuuma Shurikens 13300,Huuma_Bird_Wing,Huuma Wing Shuriken,4,90000,,3000,150,,1,0,0x02000000,7,2,34,4,65,1,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1; },{},{} 13301,Huuma_Giant_Wheel,Huuma Giant Wheel Shuriken,4,40000,,2500,50,,1,3,0x02000000,7,2,34,4,42,1,22,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100; },{},{} @@ -7302,10 +7305,10 @@ //15033, //15034, //15035, -15036,Urj_Plate,Urj Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5; },{},{} -15037,Pertz_Plate,Pertz Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bBaseAtk,20; bonus bFlee,17; },{},{} -15038,Sabath's_Cloth,Sabath's Cloth,5,20,,100,,45,,1,0x00001000,7,2,16,,100,1,0,{ bonus bLuk,3; bonus3 bAutoSpell,"ASC_METEORASSAULT",getskilllv("ASC_METEORASSAULT"),10; },{},{} -15039,Nabeu's_Cloth,Nabeu's Cloth,5,20,,100,,45,,1,0x00001000,7,2,16,,100,1,0,{ bonus bStr,2; bonus bInt,2; },{},{} +15036,Ur_Plate,Urj Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5; },{},{} +15037,Peuz_Plate,Pertz Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bBaseAtk,20; bonus bFlee,17; },{},{} +15038,Sabah_Cloth,Sabath's Cloth,5,20,,100,,45,,1,0x00001000,7,2,16,,100,1,0,{ bonus bLuk,3; bonus3 bAutoSpell,"ASC_METEORASSAULT",getskilllv("ASC_METEORASSAULT"),10; },{},{} +15039,Nab_Cloth,Nabeu's Cloth,5,20,,100,,45,,1,0x00001000,7,2,16,,100,1,0,{ bonus bStr,2; bonus bInt,2; },{},{} //15040, //15041, 15042,White_Wing_Suit,White Wing Suit,5,20,,100,,45,,1,0x00000800,7,2,16,,100,1,0,{ bonus bLongAtkRate,getrefine()*2; bonus bFlee,getrefine(); },{},{} @@ -7313,12 +7316,12 @@ 15044,Green_Surgical_Gown,Green Surgical Gown,5,56000,,660,,66,,1,0x00040000,7,2,16,,100,1,0,{ bonus bDex,1; bonus bMaxSP,30; },{},{} //15045, 15046,Siege_Plate,Siege Plate,5,0,,3300,,85,,1,0x006444A2,7,2,16,,95,1,0,{ bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bHealpower2,12; bonus bAddItemHealRate,12; } if(getrefine()>8) { bonus bMaxHPRate,25; } },{},{} -15047,Siege_Suit,Siege Suit,5,0,,750,,50,,1,0x036E5CEA,7,2,16,,95,1,0,{ bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bFlee2,5; bonus bLongAtkDef,20; } if(getrefine()>8) { bonus bMaxHPRate,15; } },{},{} +15047,Siege_Suits,Siege Suit,5,0,,750,,50,,1,0x036E5CEA,7,2,16,,95,1,0,{ bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bFlee2,5; bonus bLongAtkDef,20; } if(getrefine()>8) { bonus bMaxHPRate,15; } },{},{} 15048,Siege_Robe,Siege Robe,5,0,,500,,40,,1,0x00818315,7,2,16,,95,1,0,{ bonus bMdef,20; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bFlee,5; bonus bLongAtkDef,15; } if(getrefine()>8) { bonus bMaxHP,1000; bonus bMaxSP,100; } },{},{} //15049, //15050, -15051,Bakunawa_Scale_Armor,Bakunawa Scale Armor,5,20,,500,,55,,0,0xFFFFFFFF,7,2,16,,1,1,0,{ bonus2 bSubRace,RC_Boss,getrefine()/2; bonus bAllStats,1; },{},{} -15052,Bayani_Bakunawa_Scale_Armor,Bayani Bakunawa Scale Armor,5,20,,500,,55,,1,0xFFFFFFFF,7,2,16,,1,1,0,{ bonus2 bSubRace,RC_Boss,getrefine()/2; bonus bAllStats,2; },{},{} +15051,Bakonawa_Armor,Bakunawa Scale Armor,5,20,,500,,55,,0,0xFFFFFFFF,7,2,16,,1,1,0,{ bonus2 bSubRace,RC_Boss,getrefine()/2; bonus bAllStats,1; },{},{} +15052,Bayani_Bakonawa_Armor,Bayani Bakunawa Scale Armor,5,20,,500,,55,,1,0xFFFFFFFF,7,2,16,,1,1,0,{ bonus2 bSubRace,RC_Boss,getrefine()/2; bonus bAllStats,2; },{},{} 15053,Special_Ninja_Suit,Special Ninja Suit,5,10000,,1200,,70,,0,0x02000000,7,2,16,,100,1,0,{ bonus bAgi,1+(getrefine()/3); },{},{} 15054,Ninja_Scale_Armor,Ninja Scale Armor,5,10000,,1800,,90,,1,0x02000000,7,2,16,,100,1,0,{ bonus bMaxHPRate,15; bonus bMaxSPRate,-30; },{},{} 15055,Armor_of_Nothingness,Armor of Nothingness,5,10000,,1500,,60,,1,0x02000000,7,2,16,,100,1,0,{ bonus bAgi,1; },{},{} @@ -7339,7 +7342,7 @@ //16012, 16013,Judgement_Mace1,Judgement Mace I,4,20,,1200,140:180,,1,2,0x00000100,2,2,2,3,100,1,8,{ bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",10,7000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{} 16014,P_Mace3,Eden Mace III,4,0,,0,172,,1,0,0x0004C5B3,7,2,2,3,60,0,8,{},{},{} -//16015, +16015,Cat_Club,Cat Club,4,20,,700,88,,1,3,0x0004C5B3,7,2,2,1,1,1,8,{ bonus2 bAddRace,RC_Brute,15; },{},{} 16016,Tuna,Tuna,4,0,,0,180,,1,0,0x0004C5B3,7,2,2,1,50,0,8,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,100; bonus3 bAutoSpell,"SM_BASH",5+5*(getskilllv("SM_BASH")==10),10; if(BaseLevel>99) { bonus bBaseAtk,20; } },{},{} 16017,Bloody_Cross,Bloody Cross,4,20,,1500,170,,1,0,0x00008110,7,2,2,4,100,1,8,{ bonus bAtkEle,Ele_Dark; bonus3 bAutoSpell,"WL_HELLINFERNO",1,10+(getrefine()*5); },{},{} 16018,Judgement_Mace2,Judgement Mace II,4,20,,1200,170:180,,1,1,0x00000100,2,2,2,3,130,1,8,{ bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{} diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index becbfdc65..d79ea7141 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -585,7 +585,7 @@ REPLACE INTO `item_db_re` VALUES (1194,'F_Executioner_C','Executioner',4,2,NULL, REPLACE INTO `item_db_re` VALUES (1195,'E_Executioner_C','Executioner',4,2,NULL,0,'190',NULL,1,NULL,0x00004082,7,2,34,4,NULL,NULL,3,'bonus bAtkEle,Ele_Dark;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1196,'Chrome_Twohand_Sword','Chrome Two-Handed Sword',4,20,NULL,400,'280',NULL,1,NULL,0x00004082,7,2,34,3,'110',1,3,'bonus bUnbreakableWeapon,0; bonus bAgi,3; bonus bMaxHPRate,-10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1197,'P_Slayer3','Eden Slayer III',4,NULL,NULL,0,'200',NULL,1,NULL,0x00004082,7,2,34,3,'60',NULL,3,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1198,'Cutlass','Cutlass',4,NULL,NULL,0,'220',NULL,3,NULL,0x00004082,7,2,34,1,'50',NULL,3,'bonus bUnbreakableWeapon,0; bonus bCritical,20; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bBaseAtk,50; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1198,'Hairtail','Cutlass',4,NULL,NULL,0,'220',NULL,3,NULL,0x00004082,7,2,34,1,'50',NULL,3,'bonus bUnbreakableWeapon,0; bonus bCritical,20; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bBaseAtk,50; }',NULL,NULL); # Daggers REPLACE INTO `item_db_re` VALUES (1201,'Knife','Knife',4,50,NULL,400,'17',NULL,1,3,0xFE9F7EEF,7,2,2,1,'1',1,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1202,'Knife_','Knife',4,50,NULL,400,'17',NULL,1,4,0xFE9F7EEF,7,2,2,1,'1',1,1,NULL,NULL,NULL); @@ -1248,12 +1248,12 @@ REPLACE INTO `item_db_re` VALUES (2162,'Bible_Of_Promise2','Bible Of Promise Vol #2165, #2166, #2167, -REPLACE INTO `item_db_re` VALUES (2168,'Immune_Shield','Immune Shield',5,20,NULL,700,NULL,55,NULL,1,0xFFFFFFFF,7,2,32,NULL,'1',1,1,'if(getrefine()>=5){ bonus2 bSubEle,Ele_Neutral,getrefine()-4; } if(getrefine()>=7){ bonus2 bSubEle,Ele_Neutral,5; } if(getrefine()>=9){ bonus2 bSubEle,Ele_Water,10; bonus2 bSubEle,Ele_Wind,10; bonus2 bSubEle,Ele_Earth,10; bonus2 bSubEle,Ele_Fire,10; } if(getrefine()>=13){ bonus2 bSubEle,Ele_Neutral,12-getrefine(); }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2169,'Kalasag','Kalasag',5,20,NULL,400,NULL,40,NULL,NULL,0xFFFFFFFF,7,2,32,NULL,'1',1,1,'bonus2 bSubRace,RC_Boss,getrefine()/3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2170,'Bayani_Kalasag','Bayani Kalasag',5,20,NULL,400,NULL,40,NULL,1,0xFFFFFFFF,7,2,32,NULL,'1',1,1,'bonus2 bSubRace,RC_Boss,getrefine()/3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2171,'Fox_Wrist_Guard','Fox Wrist Guard',5,40000,NULL,200,NULL,45,NULL,1,0x02000000,7,2,32,NULL,'100',1,1,'bonus bFlee,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2172,'Wolf_Wrist_Guard','Wolf Wrist Guard',5,45000,NULL,250,NULL,70,NULL,1,0x02000000,7,2,32,NULL,'100',1,1,'autobonus "{bonus bBaseAtk,100; bonus bFlee,-50;}",10,5000,BF_WEAPON,"{specialeffect2 EF_ENHANCE;}";',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2173,'Crescent_Wrist_Guard','Crescent Wrist Guard',5,45000,NULL,250,NULL,45,NULL,1,0x02000000,7,2,32,NULL,'100',1,1,'bonus bDelayRate,-2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2168,'Immuned_Shield','Immune Shield',5,20,NULL,700,NULL,55,NULL,1,0xFFFFFFFF,7,2,32,NULL,'1',1,1,'if(getrefine()>=5){ bonus2 bSubEle,Ele_Neutral,getrefine()-4; } if(getrefine()>=7){ bonus2 bSubEle,Ele_Neutral,5; } if(getrefine()>=9){ bonus2 bSubEle,Ele_Water,10; bonus2 bSubEle,Ele_Wind,10; bonus2 bSubEle,Ele_Earth,10; bonus2 bSubEle,Ele_Fire,10; } if(getrefine()>=13){ bonus2 bSubEle,Ele_Neutral,12-getrefine(); }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2169,'Kalasak','Kalasag',5,20,NULL,400,NULL,40,NULL,NULL,0xFFFFFFFF,7,2,32,NULL,'1',1,1,'bonus2 bSubRace,RC_Boss,getrefine()/3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2170,'Bayani_Kalasak','Bayani Kalasag',5,20,NULL,400,NULL,40,NULL,1,0xFFFFFFFF,7,2,32,NULL,'1',1,1,'bonus2 bSubRace,RC_Boss,getrefine()/3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2171,'Fox_Armguard','Fox Wrist Guard',5,40000,NULL,200,NULL,45,NULL,1,0x02000000,7,2,32,NULL,'100',1,1,'bonus bFlee,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2172,'Wolf_Armguard','Wolf Wrist Guard',5,45000,NULL,250,NULL,70,NULL,1,0x02000000,7,2,32,NULL,'100',1,1,'autobonus "{bonus bBaseAtk,100; bonus bFlee,-50;}",10,5000,BF_WEAPON,"{specialeffect2 EF_ENHANCE;}";',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2173,'Crescent_Armguard','Crescent Wrist Guard',5,45000,NULL,250,NULL,45,NULL,1,0x02000000,7,2,32,NULL,'100',1,1,'bonus bDelayRate,-2;',NULL,NULL); # GM Shield REPLACE INTO `item_db_re` VALUES (2199,'Ahura_Mazda','Ahura Mazdah',5,1,NULL,10,NULL,10000,NULL,NULL,0xFFFFFFFF,7,2,32,NULL,'1',1,0,'bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; skill "CR_FULLPROTECTION",5; skill "WZ_ESTIMATION",1; skill "ST_FULLSTRIP",5; skill "HW_MAGICPOWER", 10; bonus bMaxHPRate,200; bonus bNoKnockback,0; bonus bDelayRate,-20; bonus bSpeedRate,25; bonus bIntravision,0;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;'); # Headgears @@ -1534,15 +1534,15 @@ REPLACE INTO `item_db_re` VALUES (2471,'Mercy_Shoes','Mercy Shoes',5,20,NULL,300 REPLACE INTO `item_db_re` VALUES (2472,'Judgement_Shoes','Judgement Shoes',5,20,NULL,300,NULL,12,NULL,NULL,0x00000100,7,2,64,NULL,'100',1,0,'bonus bMaxSP,150; bonus2 bSkillAtk,"AB_JUDEX",30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2473,'Para_Team_Boots4','Eden Team Boots IV',5,NULL,NULL,0,NULL,20,NULL,NULL,0xFFFFFFFF,7,2,64,NULL,'60',NULL,0,'bonus bAgi,1; bonus bVit,1; bonus bHPrecovRate,28; bonus bSPrecovRate,12;',NULL,NULL); #2474, -REPLACE INTO `item_db_re` VALUES (2475,'Urj_Greaves','Urj Greaves',5,20,NULL,900,NULL,32,NULL,1,0x00000080,8,2,64,NULL,'100',1,0,'bonus bMaxSP,40; if(getequiprefinerycnt(EQI_SHOES)>7) bonus bMaxHPRate,getequiprefinerycnt(EQI_SHOES)-7;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2476,'Pertz_Greaves','Pertz Greaves',5,20,NULL,900,NULL,32,NULL,1,0x00000080,8,2,64,NULL,'100',1,0,'bonus bMaxSP,40; bonus bAgi,-7+(getequiprefinerycnt(EQI_SHOES)>8)?8:getequiprefinerycnt(EQI_SHOES);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2477,'Sabath_Shoes','Sabath Shoes',5,20,NULL,400,NULL,18,NULL,1,0x00001000,7,2,64,NULL,'100',1,0,'bonus bMaxSP,30; bonus bLuk,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2478,'Nabeu\'s_Shoes','Nabeu\'s Shoes',5,20,NULL,400,NULL,18,NULL,1,0x00001000,7,2,64,NULL,'100',1,0,'bonus bFlee,3; bonus bInt,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2475,'Ur_Greave','Urj Greaves',5,20,NULL,900,NULL,32,NULL,1,0x00000080,8,2,64,NULL,'100',1,0,'bonus bMaxSP,40; if(getequiprefinerycnt(EQI_SHOES)>7) bonus bMaxHPRate,getequiprefinerycnt(EQI_SHOES)-7;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2476,'Peuz_Greave','Pertz Greaves',5,20,NULL,900,NULL,32,NULL,1,0x00000080,8,2,64,NULL,'100',1,0,'bonus bMaxSP,40; bonus bAgi,-7+(getequiprefinerycnt(EQI_SHOES)>8)?8:getequiprefinerycnt(EQI_SHOES);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2477,'Sabah_Shoes','Sabath Shoes',5,20,NULL,400,NULL,18,NULL,1,0x00001000,7,2,64,NULL,'100',1,0,'bonus bMaxSP,30; bonus bLuk,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2478,'Nab_Shoes','Nabeu\'s Shoes',5,20,NULL,400,NULL,18,NULL,1,0x00001000,7,2,64,NULL,'100',1,0,'bonus bFlee,3; bonus bInt,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2479,'White_Wing_Boots','White Wing Boots',5,20,NULL,400,NULL,18,NULL,1,0x00000800,7,2,64,NULL,'100',1,0,'bonus bAgi,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2480,'Black_Wing_Boots','Black Wing Boots',5,20,NULL,400,NULL,18,NULL,1,0x00000800,8,2,64,NULL,'100',1,0,'bonus bInt,2; bonus bMaxSPRate,5;',NULL,NULL); #2481, #2482, -REPLACE INTO `item_db_re` VALUES (2483,'Siege_Greaves','Siege Greaves',5,NULL,NULL,750,NULL,30,NULL,1,0x006444A2,7,2,64,NULL,'95',1,0,'bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2483,'Siege_Greave','Siege Greaves',5,NULL,NULL,750,NULL,30,NULL,1,0x006444A2,7,2,64,NULL,'95',1,0,'bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2484,'Siege_Boots','Siege Boots',5,NULL,NULL,500,NULL,20,NULL,1,0x036E5CEA,7,2,64,NULL,'95',1,0,'bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2485,'Siege_Shoes','Siege Shoes',5,NULL,NULL,350,NULL,15,NULL,1,0x00818315,7,2,64,NULL,'95',1,0,'bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,1;',NULL,NULL); #2486, @@ -1550,8 +1550,8 @@ REPLACE INTO `item_db_re` VALUES (2485,'Siege_Shoes','Siege Shoes',5,NULL,NULL,3 #2488, #2489, #2490, -REPLACE INTO `item_db_re` VALUES (2491,'Nightmare_Bangungot_Boots','Nightmare Bangungot Boots',5,20,NULL,600,NULL,10,NULL,NULL,0xFFFFFFFF,7,2,64,NULL,'1',1,0,'bonus bMdef,getrefine(); if(getrefine()>=14){ bonus bSpeedRate,25; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2492,'Bayani_Nightmare_Bangungot_Boots','Bayani Nightmare Bangungot Boots',5,20,NULL,600,NULL,10,NULL,1,0xFFFFFFFF,7,2,64,NULL,'1',1,0,'bonus bMdef,getrefine(); if(getrefine()>=12){ bonus bSpeedRate,25; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2491,'Bangungot_Boots','Nightmare Bangungot Boots',5,20,NULL,600,NULL,10,NULL,NULL,0xFFFFFFFF,7,2,64,NULL,'1',1,0,'bonus bMdef,getrefine(); if(getrefine()>=14){ bonus bSpeedRate,25; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2492,'Bayani_Bangungot_Boots','Bayani Nightmare Bangungot Boots',5,20,NULL,600,NULL,10,NULL,1,0xFFFFFFFF,7,2,64,NULL,'1',1,0,'bonus bMdef,getrefine(); if(getrefine()>=12){ bonus bSpeedRate,25; }',NULL,NULL); # Garments # =================================================================== REPLACE INTO `item_db_re` VALUES (2501,'Hood','Hood',5,1000,NULL,200,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,4,NULL,NULL,1,0,NULL,NULL,NULL); @@ -1913,11 +1913,14 @@ REPLACE INTO `item_db_re` VALUES (2864,'Light_Of_Cure','Liht Of Cure',5,20,NULL, REPLACE INTO `item_db_re` VALUES (2865,'Seal_Of_Cathedral','Seal Of Cathedral',5,20,NULL,0,NULL,NULL,NULL,NULL,0x00000100,7,2,136,NULL,'110',NULL,0,'bonus bInt,2; bonus bHealPower,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2866,'Ring_Of_Archbishop','Ring Of Archbishop',5,20,NULL,0,NULL,NULL,NULL,NULL,0x00000100,7,2,136,NULL,'110',NULL,0,'bonus bDex,2; bonus bHealPower,2;',NULL,NULL); # -REPLACE INTO `item_db_re` VALUES (2883,'Urj_Seal','Urj Seal',5,20,NULL,200,NULL,4,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bMaxHPrate,2; bonus2 bSkillUseSP,"LK_SPIRALPIERCE",5; bonus2 bSkillUseSP,"RK_HUNDREDSPEAR",5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2884,'Pertz_Seal','Pertz Seal',5,20,NULL,200,NULL,3,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,20; bonus bMaxSP,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2872,'G_Honor_Certificate','G Honor Certificate',5,NULL,NULL,0,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2873,'Cat_Hand_Glove','Cat Hand Glove',5,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus bAgi,1; bonus bVit,1; bonus bDex,1; bonus bLuk,1;',NULL,NULL); +# +REPLACE INTO `item_db_re` VALUES (2883,'Ur_Seal','Urj Seal',5,20,NULL,200,NULL,4,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bMaxHPrate,2; bonus2 bSkillUseSP,"LK_SPIRALPIERCE",5; bonus2 bSkillUseSP,"RK_HUNDREDSPEAR",5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2884,'Peuz_Seal','Pertz Seal',5,20,NULL,200,NULL,3,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,20; bonus bMaxSP,20;',NULL,NULL); #2885, -REPLACE INTO `item_db_re` VALUES (2886,'Sabath_Seal','Sabath Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bCritical,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2887,'Nabeu\'s_Seal','Nabeu\'s Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,10; bonus bMatk,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2886,'Sabah_Ring','Sabath Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bCritical,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2887,'Nab_Ring','Nabeu\'s Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,10; bonus bMatk,20;',NULL,NULL); #2888, #2889, REPLACE INTO `item_db_re` VALUES (2890,'White_Wing_Brooch','White Wing Brooch',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00000800,7,2,136,NULL,'100',NULL,0,'bonus bDex,2; bonus bLongAtkRate,3;',NULL,NULL); @@ -1934,8 +1937,8 @@ REPLACE INTO `item_db_re` VALUES (2899,'Sound_Amplification_Device','Sound Ampli REPLACE INTO `item_db_re` VALUES (2907,'Bawaya_Symbol_Tattoo','Bawaya Symbol Tattoo',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus bMatkRate,7; bonus bFixedCastrate,-7;',NULL,NULL); #2908, #2909, -REPLACE INTO `item_db_re` VALUES (2910,'Bakunawa_Symbol_Tattoo','Bakunawa Symbol Tattoo',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus2 bAddRace,RC_NonBoss,7; bonus2 bAddRace,RC_Boss,7; bonus bAspdRate,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2911,'Bangungot_Symbol_Tattoo','Bangungot Symbol Tattoo',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus bHealPower,4; bonus bHealPower2,7;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2910,'Bakonawa_Tattoo','Bakunawa Symbol Tattoo',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus2 bAddRace,RC_NonBoss,7; bonus2 bAddRace,RC_Boss,7; bonus bAspdRate,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2911,'Bangungot_Tattoo','Bangungot Symbol Tattoo',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus bHealPower,4; bonus bHealPower2,7;',NULL,NULL); # Cards # =================================================================== REPLACE INTO `item_db_re` VALUES (4001,'Poring_Card','Poring Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bLuk,2; bonus bFlee2,1;',NULL,NULL); @@ -3938,7 +3941,7 @@ REPLACE INTO `item_db_re` VALUES (6432,'Full_Bucket','Full Pail',3,NULL,NULL,300 REPLACE INTO `item_db_re` VALUES (6433,'Clean_Brush','Cleaning Brush',3,NULL,NULL,300,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6434,'Fix_Kit','Fix Kit',3,NULL,NULL,1000,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6435,'Fresh_Fruit','Fresh Fruit',3,NULL,NULL,100,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (6436,'Sea_God\'s_Call','Sea God\'s Call',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6436,'Ptotection_Seagod','Sea God\'s Call',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6437,'Scaraba_Perfume','Scaraba Perfume',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); # REPLACE INTO `item_db_re` VALUES (6440,'General_Lubrication','General Lubrication',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -6139,7 +6142,10 @@ REPLACE INTO `item_db_re` VALUES (13288,'Drocera_Stew_To_Throw','Throwing Droser REPLACE INTO `item_db_re` VALUES (13289,'Petti_Noodle_To_Throw','Throwing Petite Tail Soup',10,100,NULL,50,NULL,NULL,NULL,NULL,0x00040000,8,2,32768,NULL,'99',NULL,9,'sc_start SC_PUTTI_TAILS_NOODLES,300000,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13290,'Black_Thing_To_Throw','Throwing Black Mass',10,100,NULL,50,NULL,NULL,NULL,NULL,0x00040000,8,2,32768,NULL,'99',NULL,9,'sc_start SC_STOMACHACHE,60000,rand(5,10);',NULL,NULL); # More Shurikens & Kunais -REPLACE INTO `item_db_re` VALUES (13294,'Explosive_Kunai','Explosive Kunai',10,100,NULL,50,'30',NULL,NULL,NULL,0x02000000,7,2,32768,NULL,'100',NULL,7,'bonus bAtkEle,Ele_Neutral;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13291,'Starfish','Starfish',10,NULL,NULL,5,'110',NULL,NULL,NULL,0x02000000,7,2,32768,NULL,'50',NULL,7,'bonus bAtkEle,Ele_Neutral; /* bonus2 bAddEff,Eff_Stun,?; */',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13292,'Dried_Squid','Dried Squid',10,10,NULL,20,'50',NULL,NULL,NULL,0x02000000,7,2,32768,NULL,'1',NULL,7,'bonus bAtkEle,Ele_Neutral; /* bonus2 bAddEff,Eff_Blind,?; */',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13293,'Flying_Fish','Flying_Fish',10,10,NULL,20,'50',NULL,NULL,NULL,0x02000000,7,2,32768,NULL,'1',NULL,6,'bonus bAtkEle,Ele_Neutral; /* bonus2 bAddEff,Eff_Bleeding,?; */',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13294,'Explosive_Kunai','Explosive Kunai',10,100,NULL,30,'50',NULL,NULL,NULL,0x02000000,7,2,32768,NULL,'100',NULL,7,'bonus bAtkEle,Ele_Neutral;',NULL,NULL); # Ninja Fuuma Shurikens REPLACE INTO `item_db_re` VALUES (13300,'Huuma_Bird_Wing','Huuma Wing Shuriken',4,90000,NULL,3000,'150',NULL,1,NULL,0x02000000,7,2,34,4,'65',1,22,'bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13301,'Huuma_Giant_Wheel','Huuma Giant Wheel Shuriken',4,40000,NULL,2500,'50',NULL,1,3,0x02000000,7,2,34,4,'42',1,22,'bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); @@ -7163,10 +7169,10 @@ REPLACE INTO `item_db_re` VALUES (15032,'Tidon','Tidon',5,20,NULL,500,NULL,2,NUL #15033, #15034, #15035, -REPLACE INTO `item_db_re` VALUES (15036,'Urj_Plate','Urj Plate',5,20,NULL,3000,NULL,110,NULL,NULL,0x00000080,8,2,16,NULL,'100',1,0,'bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15037,'Pertz_Plate','Pertz Plate',5,20,NULL,3000,NULL,110,NULL,NULL,0x00000080,8,2,16,NULL,'100',1,0,'bonus bMdef,10; bonus bBaseAtk,20; bonus bFlee,17;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15038,'Sabath\'s_Cloth','Sabath\'s Cloth',5,20,NULL,100,NULL,45,NULL,1,0x00001000,7,2,16,NULL,'100',1,0,'bonus bLuk,3; bonus3 bAutoSpell,"ASC_METEORASSAULT",getskilllv("ASC_METEORASSAULT"),10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15039,'Nabeu\'s_Cloth','Nabeu\'s Cloth',5,20,NULL,100,NULL,45,NULL,1,0x00001000,7,2,16,NULL,'100',1,0,'bonus bStr,2; bonus bInt,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15036,'Ur_Plate','Urj Plate',5,20,NULL,3000,NULL,110,NULL,NULL,0x00000080,8,2,16,NULL,'100',1,0,'bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15037,'Peuz_Plate','Pertz Plate',5,20,NULL,3000,NULL,110,NULL,NULL,0x00000080,8,2,16,NULL,'100',1,0,'bonus bMdef,10; bonus bBaseAtk,20; bonus bFlee,17;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15038,'Sabah_Cloth','Sabath\'s Cloth',5,20,NULL,100,NULL,45,NULL,1,0x00001000,7,2,16,NULL,'100',1,0,'bonus bLuk,3; bonus3 bAutoSpell,"ASC_METEORASSAULT",getskilllv("ASC_METEORASSAULT"),10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15039,'Nab_Cloth','Nabeu\'s Cloth',5,20,NULL,100,NULL,45,NULL,1,0x00001000,7,2,16,NULL,'100',1,0,'bonus bStr,2; bonus bInt,2;',NULL,NULL); #15040, #15041, REPLACE INTO `item_db_re` VALUES (15042,'White_Wing_Suit','White Wing Suit',5,20,NULL,100,NULL,45,NULL,1,0x00000800,7,2,16,NULL,'100',1,0,'bonus bLongAtkRate,getrefine()*2; bonus bFlee,getrefine();',NULL,NULL); @@ -7174,12 +7180,12 @@ REPLACE INTO `item_db_re` VALUES (15043,'Black_Wing_Suit','Black Wing Suit',5,20 REPLACE INTO `item_db_re` VALUES (15044,'Green_Surgical_Gown','Green Surgical Gown',5,56000,NULL,660,NULL,66,NULL,1,0x00040000,7,2,16,NULL,'100',1,0,'bonus bDex,1; bonus bMaxSP,30;',NULL,NULL); #15045, REPLACE INTO `item_db_re` VALUES (15046,'Siege_Plate','Siege Plate',5,NULL,NULL,3300,NULL,85,NULL,1,0x006444A2,7,2,16,NULL,'95',1,0,'bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bHealpower2,12; bonus bAddItemHealRate,12; } if(getrefine()>8) { bonus bMaxHPRate,25; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15047,'Siege_Suit','Siege Suit',5,NULL,NULL,750,NULL,50,NULL,1,0x036E5CEA,7,2,16,NULL,'95',1,0,'bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bFlee2,5; bonus bLongAtkDef,20; } if(getrefine()>8) { bonus bMaxHPRate,15; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15047,'Siege_Suits','Siege Suit',5,NULL,NULL,750,NULL,50,NULL,1,0x036E5CEA,7,2,16,NULL,'95',1,0,'bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bFlee2,5; bonus bLongAtkDef,20; } if(getrefine()>8) { bonus bMaxHPRate,15; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15048,'Siege_Robe','Siege Robe',5,NULL,NULL,500,NULL,40,NULL,1,0x00818315,7,2,16,NULL,'95',1,0,'bonus bMdef,20; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bFlee,5; bonus bLongAtkDef,15; } if(getrefine()>8) { bonus bMaxHP,1000; bonus bMaxSP,100; }',NULL,NULL); #15049, #15050, -REPLACE INTO `item_db_re` VALUES (15051,'Bakunawa_Scale_Armor','Bakunawa Scale Armor',5,20,NULL,500,NULL,55,NULL,NULL,0xFFFFFFFF,7,2,16,NULL,'1',1,0,'bonus2 bSubRace,RC_Boss,getrefine()/2; bonus bAllStats,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15052,'Bayani_Bakunawa_Scale_Armor','Bayani Bakunawa Scale Armor',5,20,NULL,500,NULL,55,NULL,1,0xFFFFFFFF,7,2,16,NULL,'1',1,0,'bonus2 bSubRace,RC_Boss,getrefine()/2; bonus bAllStats,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15051,'Bakonawa_Armor','Bakunawa Scale Armor',5,20,NULL,500,NULL,55,NULL,NULL,0xFFFFFFFF,7,2,16,NULL,'1',1,0,'bonus2 bSubRace,RC_Boss,getrefine()/2; bonus bAllStats,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15052,'Bayani_Bakonawa_Armor','Bayani Bakunawa Scale Armor',5,20,NULL,500,NULL,55,NULL,1,0xFFFFFFFF,7,2,16,NULL,'1',1,0,'bonus2 bSubRace,RC_Boss,getrefine()/2; bonus bAllStats,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15053,'Special_Ninja_Suit','Special Ninja Suit',5,10000,NULL,1200,NULL,70,NULL,NULL,0x02000000,7,2,16,NULL,'100',1,0,'bonus bAgi,1+(getrefine()/3);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15054,'Ninja_Scale_Armor','Ninja Scale Armor',5,10000,NULL,1800,NULL,90,NULL,1,0x02000000,7,2,16,NULL,'100',1,0,'bonus bMaxHPRate,15; bonus bMaxSPRate,-30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15055,'Armor_of_Nothingness','Armor of Nothingness',5,10000,NULL,1500,NULL,60,NULL,1,0x02000000,7,2,16,NULL,'100',1,0,'bonus bAgi,1;',NULL,NULL); @@ -7200,7 +7206,7 @@ REPLACE INTO `item_db_re` VALUES (16010,'Red_Ether_Bag','Red Ether Bag',4,20,NUL #16012, REPLACE INTO `item_db_re` VALUES (16013,'Judgement_Mace1','Judgement Mace I',4,20,NULL,1200,'140:180',NULL,1,2,0x00000100,2,2,2,3,'100',1,8,'bonus bStr,1; bonus bInt,1; autobonus "{bonus2 bAddRace,RC_Demon,20;}",10,7000,BF_WEAPON|BF_MAGIC,"{specialeffect2 EF_BLOODDRAIN;}";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16014,'P_Mace3','Eden Mace III',4,NULL,NULL,0,'172',NULL,1,NULL,0x0004C5B3,7,2,2,3,'60',NULL,8,NULL,NULL,NULL); -#16015, +REPLACE INTO `item_db_re` VALUES (16015,'Cat_Club','Cat Club',4,20,NULL,700,'88',NULL,3,NULL,0x0004C5B3,7,2,2,1,'1',1,8,'bonus2 bAddRace,RC_Brute,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16016,'Tuna','Tuna',4,NULL,NULL,0,'180',NULL,1,NULL,0x0004C5B3,7,2,2,1,'50',NULL,8,'bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,100; bonus3 bAutoSpell,"SM_BASH",5+5*(getskilllv("SM_BASH")==10),10; if(BaseLevel>99) { bonus bBaseAtk,20; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16017,'Bloody_Cross','Bloody Cross',4,20,NULL,1500,'170',NULL,1,NULL,0x00008110,7,2,2,4,'100',1,8,'bonus bAtkEle,Ele_Dark; bonus3 bAutoSpell,"WL_HELLINFERNO",1,10+(getrefine()*5);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16018,'Judgement_Mace2','Judgement Mace II',4,20,NULL,1200,'170:180',NULL,1,1,0x00000100,2,2,2,3,'130',1,8,'bonus bStr,2; bonus bInt,2; autobonus "{bonus2 bAddRace,RC_Demon,40;}",10,7000,BF_WEAPON|BF_MAGIC,"{specialeffect2 EF_BLOODDRAIN;}";',NULL,NULL); @@ -7304,18 +7310,30 @@ REPLACE INTO `item_db_re` VALUES (16750,'Malang_Crab_Box2','Malangdo Crab 7 Day REPLACE INTO `item_db_re` VALUES (16751,'Brindle_Eel_Box1','Zebra Eel 1 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,86400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16752,'Brindle_Eel_Box2','Zebra Eel 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,604800;',NULL,NULL); # -REPLACE INTO `item_db_re` VALUES (16763,'Ptotection_Seagod_Box2','The Sea God\'s Call 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,604800;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16764,'Ptotection_Seagod_Box3','The Sea God\'s Call 15 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,1209600;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16765,'Octo_Hstick_Box','Octopus Hunting Skewer 23 Hour Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,86400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16766,'Octo_Hstick_Box2','Octopus Hunting Skewer 3 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,259200;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16767,'Octo_Hstick_Box3','Octopus Hunting Skewer 7 Day Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6442,604800;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16770,'Silvervine_Fruit_Box10','Silvervine 10 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6417,10; getitem 12636,30;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16771,'Silvervine_Fruit_Box40','Silvervine 40 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6417,40; getitem 12636,120;',NULL,NULL); # REPLACE INTO `item_db_re` VALUES (16776,'Universal_Catalog_Gold_Box10','Universal Catalog Gold 10 Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16777,'Universal_Catalog_Gold_Box50','Universal Catalog Gold 50 Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,50;',NULL,NULL); # +REPLACE INTO `item_db_re` VALUES (16979,'Silvervine_Fruit_Box4','Silvervine 4 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6417,4; getitem 12636,12;',NULL,NULL); +# REPLACE INTO `item_db_re` VALUES (16998,'Archangel_Wing_Box','Archangel Wings Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2573,1;',NULL,NULL); # -REPLACE INTO `item_db_re` VALUES (17155,'Enhance_Huuma_Shuriken_Box','Enhance Huuma Shuriken Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13316,86400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17013,'Malang_Woe_Encard_Box','Malang Woe Encard Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 16740,1; getitem 16765,1;',NULL,NULL); +# +REPLACE INTO `item_db_re` VALUES (17084,'Upg_Katar_Box','Upg Katar Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 1292,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17085,'Upg_Two_Handed_Axe_Box','Upg Two Handed Axe Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 1394,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17086,'Upg_Lance_Box','Upg Lance Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 1491,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17087,'Upg_Book_Box','Upg Book Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 1585,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17088,'Upg_Staff_Box','Upg Staff Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2015,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17089,'Upg_Dagger_Box','Upg Dagger Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13071,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17090,'Upg_Revolver_Box','Upg Revolver',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13115,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17091,'Upg_Mace_Box','Upg Mace Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 16019,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17092,'Upg_Bow_Box','Upg Bow Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 18112,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17093,'Upg_Twohand_Sword_Box','Upg Two-Handed Sword Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 21000,1;',NULL,NULL); +# +REPLACE INTO `item_db_re` VALUES (17155,'Upg_Huuma_Shuriken_Box','Upg Huuma Shuriken Box',2,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13316,86400;',NULL,NULL); # Mechanic/Genetic Cannonballs REPLACE INTO `item_db_re` VALUES (18000,'Cannon_Ball','Cannon Ball',10,100,NULL,10,'100',NULL,NULL,NULL,0x00040400,8,2,32768,NULL,'99',NULL,8,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18001,'Holy_Cannon_Ball','Holy Cannon Ball',10,200,NULL,10,'120',NULL,NULL,NULL,0x00040400,8,2,32768,NULL,'99',NULL,8,'bonus bAtkEle,Ele_Holy;',NULL,NULL); diff --git a/sql-files/upgrades/2013-03-06--00-00.sql b/sql-files/upgrades/2013-03-06--00-00.sql index 844e3d8a8..8d46be76a 100644 --- a/sql-files/upgrades/2013-03-06--00-00.sql +++ b/sql-files/upgrades/2013-03-06--00-00.sql @@ -6,4 +6,4 @@ DELETE FROM `quest` WHERE `quest_id` > 9154 AND `quest_id` < 9166; DELETE FROM `global_reg_value` WHERE `str` = 'dewata_gatti'; DELETE FROM `global_reg_value` WHERE `str` = 'dewata_legend'; DELETE FROM `global_reg_value` WHERE `str` = 'dewata_oldman'; -INSERT INTO `sql_updates` (`timestamp`) VALUES (1362528000); \ No newline at end of file +INSERT INTO `sql_updates` (`timestamp`) VALUES (1362528000); -- cgit v1.2.3-70-g09d2 From 278e9949a662dd320c5fc408f585da4600526154 Mon Sep 17 00:00:00 2001 From: playtester Date: Fri, 15 Mar 2013 20:37:30 +0000 Subject: - Then % ASPD bonus from Spear Quicken now depends on RENEWAL_ASPD rather than RENEWAL, this should fix the problem that there is no ASPD bonus at all if RENEWAL is activated but RENEWAL_ASPD is not (bugreport:7357) - Added missing critical bonus on Valorous Assaulter's Katzbalger, it was only missing in the renewal db (bugreport:7355) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17199 54d463be-8e91-2dee-dedb-b68131a5f0ec --- db/re/item_db.txt | 2 +- src/map/status.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'db/re') diff --git a/db/re/item_db.txt b/db/re/item_db.txt index e551a3e2f..f07291dbe 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -540,7 +540,7 @@ 1181,Tae_Goo_Lyeon,Tae Goo Lyeon,4,20,,2000,250,,1,2,0x00004082,2,2,34,4,90,1,3,{ bonus bFlee2,10; if(JobLevel>=70) autobonus "{ bonus bBaseAtk,50; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; if(getrefine()>8) { bonus bVariableCastrate,-20; bonus bDelayRate,-20; } },{},{} 1182,Bloody_Eater,Bloody Eater,4,20,,1200,200,,1,2,0x00004082,7,2,34,4,50,1,3,{ bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100; },{},{} 1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,4,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{} -1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,4,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{} +1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,4,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{} 1185,Violet_Fear,Violet Fear,4,20,,2200,275,,1,2,0x00004082,2,2,34,4,80,1,3,{ bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefRace,RC_NonBoss; }",50,5000; },{},{} 1186,Death_Guidance,Death Guidance,4,20,,2000,200,,1,2,0x00004082,2,2,34,4,70,1,3,{ bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; if( getrefine()>8 ) bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",2,20; else bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",1,20; },{},{} 1187,Krieger_Twohand_Sword1,Glorious Claymore,4,20,,0,220,,1,0,0x00004082,7,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-3,1); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",getskilllv("LK_CONCENTRATION")>1?getskilllv("LK_CONCENTRATION"):1,30; bonus3 bAutoSpell,"LK_AURABLADE",getskilllv("LK_AURABLADE")>1?getskilllv("LK_AURABLADE"):1,30; } },{},{} diff --git a/src/map/status.c b/src/map/status.c index 5d41acbe0..1ed8d91b5 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -7258,7 +7258,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_MERC_QUICKEN: val2 = 300; break; -#ifndef RENEWAL +#ifndef RENEWAL_ASPD case SC_SPEARQUICKEN: val2 = 200+10*val1; break; -- cgit v1.2.3-70-g09d2 From 4519b9f207fec921433843278198a8ff886c9a72 Mon Sep 17 00:00:00 2001 From: playtester Date: Thu, 28 Mar 2013 14:43:29 +0000 Subject: - Fixed more chances on item status changes - Fixed class requirements of Heart Breaker Hammerfall in renewal (bugreport:7418) - Increased minimum respawn delay for monsters to 5000ms, this is needed to prevent the client from thinking the newly spawned monster is the same than the killed one; one problem it can cause is described in bugreport:7390, also at least in pre-renewal the minimum respawn time is 5 seconds officially and handling this via the code is much better than updating all spawn files - Implemented the official formula for Potion Pitcher when used by monsters git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17219 54d463be-8e91-2dee-dedb-b68131a5f0ec --- db/pre-re/item_db.txt | 8 ++++---- db/re/item_db.txt | 12 ++++++------ src/map/mob.c | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'db/re') diff --git a/db/pre-re/item_db.txt b/db/pre-re/item_db.txt index 59d61be1c..f996dcf1d 100644 --- a/db/pre-re/item_db.txt +++ b/db/pre-re/item_db.txt @@ -616,7 +616,7 @@ 1271,Blood_Tears,Blood Tears,4,20,,1700,120,,1,2,0x00001000,2,2,34,4,55,1,16,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",2,30; } else bonus3 bAutoSpell,"NPC_WIDEBLEEDING",1,30; },{},{} 1272,Scratcher,Scratcher,4,20,,0,120,,1,0,0x00001000,7,2,34,1,0,0,16,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{} 1273,Bloody_Roar_C,Refined Bloody Roar,4,1,,0,148,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160; },{},{} -1274,Unholy_Touch_C,Refined Unholy Touch,4,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,500; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{} +1274,Unholy_Touch_C,Refined Unholy Touch,4,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{} 1275,Katar_Of_Cold_Icicle_,Katar of Frozen Icicle,4,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; },{},{} 1276,Katar_Of_Thornbush_,Katar of Quaking,4,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Earth; bonus2 bAddEff,Eff_Blind,500; },{},{} 1277,Katar_Of_Raging_Blaze_,Katar of Raging Blaze,4,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500; },{},{} @@ -673,7 +673,7 @@ 1375,Berdysz,Berdysz,4,20,,2500,200,,1,2,0x000444A2,2,2,34,3,70,1,7,{ bonus2 bSubSize,Size_Medium,13; bonus2 bSubSize,Size_Large,15; },{},{} 1376,Heart_Breaker,Heart Breaker,4,20,,2000,175,,1,1,0x000444A2,2,2,34,4,70,1,7,{ bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30; },{},{} 1377,Hurricane_Fury,Hurricane's Fury,4,20,,3500,332,,1,1,0x000444A2,2,2,34,4,80,1,7,{ bonus2 bSubSize,Size_Medium,10+getrefine(); bonus bAspdRate,getrefine(); bonus3 bAutoSpell,"NPC_PULSESTRIKE",5,20; },{},{} -1378,Great_Axe_C,Refined Great Axe,4,1,,0,215,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,1500; },{},{} +1378,Great_Axe_C,Refined Great Axe,4,1,,0,215,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,2000; },{},{} 1379,BF_Two_Handed_Axe1,Valorous Insane Battle Axe,4,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{} 1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,4,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{} 1381,N_Battle_Axe,Novice Battle Axe,4,0,,0,100,,1,3,0x000444A2,7,2,34,1,3,0,7,{},{},{} @@ -1551,7 +1551,7 @@ 2730,Morroc_Seal,Seal of Continental Guard,5,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bMaxHP,50; bonus bAspdRate,3; },{},{} 2731,Morroc_Charm_Stone,Rune Spellstone,5,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bMaxSP,50; bonus bCastRate,-1; },{},{} 2732,Morroc_Ring,Death Loop,5,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bCritical,5; },{},{} -2733,Medal_Gunner,Sheriff Badge,5,20,,0,,1,,0,0x01000000,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Blind,1000,ATF_LONG; },{},{} +2733,Medal_Gunner,Sheriff Badge,5,20,,0,,1,,0,0x01000000,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Blind,100,ATF_LONG; },{},{} 2734,Directive_A,Directive,5,0,,0,,1,,0,0x00000001,7,2,136,,0,0,0,{},{},{} 2735,Directive_B,Directive,5,0,,0,,1,,0,0x00000001,7,2,136,,0,0,0,{},{},{} 2736,Navel_Ring,Navel Ring,5,20,,100,,0,,0,0xFFFFFFFE,7,2,136,,75,0,0,{ bonus bDex,3; bonus bLuk,3; bonus bMdef,2; },{},{} @@ -2543,7 +2543,7 @@ 5373,Darkness_Helm,Dark Randgris Helm,5,20,,300,,2,,1,0xFFFFFFFF,7,2,768,,0,1,379,{ bonus bDex,3; bonus bMdef,1; },{},{} 5374,L_Magestic_Goat,Gigantic Majestic Goat,5,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,0,1,380,{ bonus2 bAddRace,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{} 5375,L_Orc_Hero_Helm,Orc Hero Headdress,5,20,,900,,5,,1,0xFFFFFFFF,7,2,768,,0,1,381,{ bonus bStr,2; bonus3 bAutoSpellWhenHit,"BS_WEAPONPERFECT",3,10; },{},{} -5376,Satanic_Chain_P,Flying Evil Wing,5,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,382,{ bonus bMaxSP,120; bonus3 bAddEffWhenHit,Eff_Curse,100,ATF_SELF; },{},{} +5376,Satanic_Chain_P,Flying Evil Wing,5,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,382,{ bonus bMaxSP,120; bonus2 bAddEff2,Eff_Curse,300; },{},{} 5377,Antique_Pipe,Gentleman's Pipe,5,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,383,{ bonus2 bSubRace,RC_DemiHuman,2; },{},{} 5378,Rabbit_Ear_Hat,Bunny Top Hat,5,20,,300,,0,,0,0xFFFFFFFF,7,2,256,,0,1,384,{ bonus bAgi,3; bonus3 bAutoSpellWhenHit,"AL_INCAGI",5,10; },{},{} 5379,Balloon_Hat,Tam,5,0,,800,,3,,1,0xFFFFFFFF,7,2,256,,50,1,385,{ bonus bMdef,2; bonus bMatkRate,2+(getrefine()/2); },{},{} diff --git a/db/re/item_db.txt b/db/re/item_db.txt index f07291dbe..de07386a4 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -631,7 +631,7 @@ 1271,Blood_Tears,Blood Tears,4,20,,1700,120,,1,2,0x00001000,2,2,34,4,55,1,16,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",2,30; } else bonus3 bAutoSpell,"NPC_WIDEBLEEDING",1,30; },{},{} 1272,Scratcher,Scratcher,4,20,,0,120,,1,0,0x00001000,7,2,34,1,0,0,16,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{} 1273,Bloody_Roar_C,Refined Bloody Roar,4,1,,0,148,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160; },{},{} -1274,Unholy_Touch_C,Refined Unholy Touch,4,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,500; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{} +1274,Unholy_Touch_C,Refined Unholy Touch,4,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{} 1275,Katar_Of_Cold_Icicle_,Katar of Frozen Icicle,4,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; },{},{} 1276,Katar_Of_Thornbush_,Katar of Quaking,4,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Earth; bonus2 bAddEff,Eff_Blind,500; },{},{} 1277,Katar_Of_Raging_Blaze_,Katar of Raging Blaze,4,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500; },{},{} @@ -698,9 +698,9 @@ 1373,Brood_Axe_C,Refined Bloody Axe,4,2,,0,205,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bStr,20; bonus bSpeedRate,25; bonus bAspdRate,5; },{},{} 1374,Tomahawk_C,Tomahawk,4,2,,0,200,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bAtkEle,Ele_Wind; skill "ITM_TOMAHAWK",1; },{},{} 1375,Berdysz,Berdysz,4,20,,2500,200,,1,2,0x000444A2,2,2,34,3,70,1,7,{ bonus2 bSubSize,Size_Medium,13; bonus2 bSubSize,Size_Large,15; },{},{} -1376,Heart_Breaker,Heart Breaker,4,20,,2000,175,,1,1,0x000444A2,2,2,34,4,70,1,7,{ bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30; },{},{} +1376,Heart_Breaker,Heart Breaker,4,20,,2000,175,,1,1,0x000444A2,2,2,34,4,70,1,7,{ bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)||(Class==Job_Mechanic)||(Class==Job_Mechanic_T)||(Class==Job_Genetic)||(Class==Job_Genetic_T)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30; },{},{} 1377,Hurricane_Fury,Hurricane's Fury,4,20,,3500,332,,1,1,0x000444A2,2,2,34,4,80,1,7,{ bonus2 bSubSize,Size_Medium,10+getrefine(); bonus bAspdRate,getrefine(); bonus3 bAutoSpell,"NPC_PULSESTRIKE",5,20; },{},{} -1378,Great_Axe_C,Refined Great Axe,4,1,,0,215,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,1500; },{},{} +1378,Great_Axe_C,Refined Great Axe,4,1,,0,215,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,2000; },{},{} 1379,BF_Two_Handed_Axe1,Valorous Insane Battle Axe,4,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{} 1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,4,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{} 1381,N_Battle_Axe,Novice Battle Axe,4,0,,0,100,,1,3,0x000444A2,7,2,34,1,3,0,7,{},{},{} @@ -1764,7 +1764,7 @@ 2730,Morroc_Seal,Seal of Continental Guard,5,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bMaxHP,50; bonus bAspdRate,3; },{},{} 2731,Morroc_Charm_Stone,Rune Spellstone,5,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bMaxSP,50; bonus bVariableCastrate,-1; },{},{} 2732,Morroc_Ring,Death Loop,5,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bCritical,5; },{},{} -2733,Medal_Gunner,Sheriff Badge,5,20,,0,,1,,0,0x01000000,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Blind,1000,ATF_LONG; },{},{} +2733,Medal_Gunner,Sheriff Badge,5,20,,0,,1,,0,0x01000000,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Blind,100,ATF_LONG; },{},{} 2734,Directive_A,Directive,5,0,,0,,1,,0,0x00000001,7,2,136,,0,0,0,{},{},{} 2735,Directive_B,Directive,5,0,,0,,1,,0,0x00000001,7,2,136,,0,0,0,{},{},{} 2736,Navel_Ring,Navel Ring,5,20,,100,,0,,0,0xFFFFFFFE,7,2,136,,75,0,0,{ bonus bDex,3; bonus bLuk,3; bonus bMdef,2; },{},{} @@ -3067,7 +3067,7 @@ 5373,Darkness_Helm,Dark Randgris Helm,5,20,,300,,2,,1,0xFFFFFFFF,7,2,768,,0,1,379,{ bonus bDex,3; bonus bMdef,1; },{},{} 5374,L_Magestic_Goat,Gigantic Majestic Goat,5,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,0,1,380,{ bonus2 bAddRace,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{} 5375,L_Orc_Hero_Helm,Orc Hero Headdress,5,20,,900,,5,,1,0xFFFFFFFF,7,2,768,,0,1,381,{ bonus bStr,2; bonus3 bAutoSpellWhenHit,"BS_WEAPONPERFECT",3,10; },{},{} -5376,Satanic_Chain_P,Flying Evil Wing,5,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,382,{ bonus bMaxSP,120; bonus3 bAddEffWhenHit,Eff_Curse,100,ATF_SELF; },{},{} +5376,Satanic_Chain_P,Flying Evil Wing,5,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,382,{ bonus bMaxSP,120; bonus2 bAddEff2,Eff_Curse,300; },{},{} 5377,Antique_Pipe,Gentleman's Pipe,5,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,383,{ bonus2 bSubRace,RC_DemiHuman,2; },{},{} 5378,Rabbit_Ear_Hat,Bunny Top Hat,5,20,,300,,0,,0,0xFFFFFFFF,7,2,256,,0,1,384,{ bonus bAgi,3; bonus3 bAutoSpellWhenHit,"AL_INCAGI",5,10; },{},{} 5379,Balloon_Hat,Tam,5,0,,800,,3,,1,0xFFFFFFFF,7,2,256,,50,1,385,{ bonus bMdef,2; bonus bMatkRate,2+(getrefine()/2); },{},{} @@ -6153,7 +6153,7 @@ 13059,E_Asura_C,Asura,4,1,,0,120,,1,0,0x02000000,7,2,2,1,1,0,1,{},{},{} 13060,E_Counter_Dagger_C,Counter Dagger,4,1,,0,209,,1,0,0x00810204,7,2,2,4,1,0,1,{},{},{} 13061,Black_Wing,Black Wing,4,20,,600,142,,1,1,0x00020000,7,2,2,3,102,1,1,{ bonus2 bSkillAtk,"SC_FATALMENACE",30+(getrefine()*2); bonus bMatkRate,(getrefine()*3); },{},{} -13062,Ancient_Dagger,Ancient Dagger,4,20,,600,107,,0,0,0x028F5EEE,2,2,2,4,120,1,1,{ bonus bMatk,120; bonus bMaxSP,100; bonus bSPrecovRate,5; bonus2 bAddEff2,Eff_Curse,50; },{},{} +13062,Ancient_Dagger,Ancient Dagger,4,20,,600,107,,0,0,0x028F5EEE,2,2,2,4,120,1,1,{ bonus bMatk,120; bonus bMaxSP,100; bonus bSPrecovRate,5; bonus2 bAddEff2,Eff_Curse,20; bonus3 bAddEff,Eff_Curse,20,ATF_SELF|ATF_SKILL; },{},{} //13063, //13064, //13065, diff --git a/src/map/mob.c b/src/map/mob.c index 6a507a099..df7e2c365 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -875,8 +875,8 @@ int mob_setdelayspawn(struct mob_data *md) spawntime = spawntime/100*battle_config.mob_spawn_delay; } - if (spawntime < 500) //Min respawn time (is it needed?) - spawntime = 500; + if (spawntime < 5000) //Monsters should never respawn faster than within 5 seconds + spawntime = 5000; if( md->spawn_timer != INVALID_TIMER ) delete_timer(md->spawn_timer, mob_delayspawn); -- cgit v1.2.3-70-g09d2 From 20bf5d10514810b19f48437fe5b0efc4e8e20092 Mon Sep 17 00:00:00 2001 From: technote24 Date: Thu, 4 Apr 2013 19:27:46 +0000 Subject: =Database *Added the latest NPC's tags and ID's. *Added place holders for all of the latest existing monster tags and ID's. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17230 54d463be-8e91-2dee-dedb-b68131a5f0ec --- db/re/mob_db.txt | 731 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 731 insertions(+) (limited to 'db/re') diff --git a/db/re/mob_db.txt b/db/re/mob_db.txt index a3525cb38..bfbd55d8a 100644 --- a/db/re/mob_db.txt +++ b/db/re/mob_db.txt @@ -1528,3 +1528,734 @@ 2378,MER_ANTLER_SCARABA,Antler Scaraba,Antler Scaraba,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2379,XMAS_SMOKEY_SOCK,Smokey Sock,Smokey Sock,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2380,XMAS_SMOKEY_GIFT,Smokey Gift,Smokey Gift,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + +// Monster's Waitting To Be Coded In +//2381,E_VADON_X_S +//2382,E_VADON_X_H +//2383,E_VADON_X_H_S +//2384,KRAKEN_LEG_1 +//2385,KRAKEN_LEG_2 +//2386,KRAKEN_LEG_3 +//2387,KRAKEN_LEG_4 +//2388,KRAKEN_LEG_5 +//2389,G_KRAKEN_LEG_1 +//2390,G_KRAKEN_LEG_2 +//2391,G_KRAKEN_LEG_3 +//2392,G_KRAKEN_LEG_4 +//2393,G_KRAKEN_LEG_5 +//2394,MERMAN_SE +//2395,SEIREN +//2396,POSEIDON +//2397,KRAKEN_BABY +//2398,LITTLE_PORING +//2399,E_MINI_DEMON +//2400,E_DIABOLIC +//2401,G_PORING +//2402,POPORING_IMMUNE_M +//2403,POPORING_IMMUNE_A +//2404,DEAD_PLANKTON +//2405,WEAK_SKELETON +//2406,WEAK_SKEL_SOLDIER +//2407,SAILOR_SKELETON +//2408,DUMMY_10 +//2409,DUMMY_50 +//2410,DUMMY_100 +//2411,DUMMY_150 +//2412,E_VALKIWI +//2413,DUMMY_10_FIRE +//2414,RUNAWAY_BOOK +//2415,L_SEYREN +//2416,L_EREMES +//2417,L_HARWORD +//2418,L_SHECIL +//2419,L_KATRINN +//2420,L_MAGALETA +//2421,L_YGNIZEM +//2422,L_WHIKEBAIN +//2423,L_ARMAIA +//2424,L_KAVAC +//2425,L_DANCER +//2426,L_RAWREL +//2427,L_EREND +//2428,G_L_SEYREN +//2429,G_L_EREMES +//2430,G_L_HARWORD +//2431,G_L_SHECIL +//2432,G_L_KATRINN +//2433,G_L_MAGALETA +//2434,G_L_YGNIZEM +//2435,G_L_WHIKEBAIN +//2436,G_L_ARMAIA +//2437,G_L_KAVAC +//2438,G_L_DANCER +//2439,G_L_RAWREL +//2440,G_L_EREND +//2441,B_NOVICE +//2442,B_SUPERNOVICE +//2443,AIRA +//2444,KULUNA +//2445,MALLINA +//2446,EZELLA +//2447,LUNE +//2448,MORIN +//2449,NASARIN +//2450,THIEF_PORING +//2451,BABY_STRANGE +//2452,TREASURE_BOX_TE +//2453,TREASURE_BOX_TE_1 +//2454,TREASURE_BOX_TE_2 +//2455,TREASURE_BOX_TE_3 +//2456,TREASURE_BOX_TE_4 +//2457,TREASURE_BOX_TE_5 +//2458,TREASURE_BOX_TE_6 +//2459,TREASURE_BOX_TE_7 +//2460,TREASURE_BOX_TE_8 +//2461,TREASURE_BOX_TE_9 +//2462,TREASURE_BOX_TE_10 +//2463,E_BOMBPORING +//2464,MG_ZOMBIE +//2465,MG_WRAITH +//2466,MG_GHOUL +//2467,MG_ARCLOUSE +//2468,MG_RAYDRIC +//2469,MG_RAYDRIC_ARCHER +//2470,MG_KNIGHT_OF_ABYSS +//2471,MG_KHALITZBURG +//2472,MG_BLOODY_KNIGHT +//2473,MG_M_UNDEAD_KNIGHT +//2474,MG_F_UNDEAD_KNIGHT +//2475,MG_CORRUPTION_ROOT +//2476,MG_AMDARAIS +//2477,NG_WANDER_MAN +//2478,NG_RIDEWORD +//2479,NG_MIMIC +//2480,NG_EVIL_DRUID +//2481,NG_WRAITH_DEAD +//2482,G_MG_KHALITZBURG +//2483,NG_BAPHOMET +//2484,G_NG_BAPHOMET_ +//2485,NG_CHIMERA +//2486,ISIS_ANNIV +//2487,PASANA_ANNIV +//2488,OSIRIS_ANNIV +//2489,GM_WOMAN +//2490,GM_SAY +//2491,GM_SMOKIE +//2492,GM_PHOENIX +//2493,GM_MEN +//2494,GM_HINALLE +//2495,HIDDEN_MOB2 +//2496,I_UZHAS +//2497,I_DOKEBI +//2498,G_WISH_MAIDEN +//2499,J_PORING +//2500,E_MEGALODON +//2501,E_ASTER +//2502,E_CRAB +//2503,E_SHELLFISH +//2504,E_COELACANTH_N_E +//2505,E_RED_ERUMA +//2506,E_KING_DRAMOH +//2507,E_CORNUTUS +//2508,E_PENOMENA +//2509,KRAKEN_LEG_6 +//2510,WATERMELON_1 +//2511,WATERMELON_2 +//2512,WATERMELON_3 +//2513,WATERMELON_4 +//2514,WATERMELON_5 +//2515,WATERMELON_6 +//2516,WATERMELON_7 +//2517,WATERMELON_8 +//2518,WATERMELON_9 +//2519,WATERMELON_10 +//2520,WATERMELON_11 +//2521,WATERMELON_12 +//2522,WATERMELON_13 +//2523,WATERMELON_14 +//2524,WATERMELON_15 +//2525,WATERMELON_16 +//2526,E_BANDIT +//2527,ME_ANOPHELES +//2528,FACEWORM +//2529,FACEWORM_QUEEN +//2530,FACEWORM_DARK +//2531,VENOM_BUG +//2532,FACEWORM_QUEEN_R +//2533,FACEWORM_QUEEN_G +//2534,FACEWORM_QUEEN_B +//2535,FACEWORM_QUEEN_Y +//2536,HIDDEN_MOB3 +//2537,HIDDEN_MOB4 +//2538,E_KING_PORING +//2539,HIDDEN_MOB5 +//2540,FACEWORM_EGG +//2541,FACEWORM_LARVA +//2542,IRENE_ELDER +//2543,PAYONSOLDIER +//2544,PAYONSOLDIER2 +//2545,GUARDDOG +//2546,GUARDDOG2 +//2547,MER_GARM_BABY +//2548,MER_HILLSRION +//2549,GEFFEN_MAGE_1 +//2550,GEFFEN_MAGE_2 +//2551,GEFFEN_MAGE_3_1 +//2552,GEFFEN_MAGE_3_2 +//2553,GEFFEN_MAGE_3_3 +//2554,GEFFEN_MAGE_4 +//2555,GEFFEN_MAGE_5 +//2556,GEFFEN_MAGE_6 +//2557,GEFFEN_MAGE_7 +//2558,GEFFEN_MAGE_8 +//2559,GEFFEN_MAGE_9 +//2560,GEFFEN_MAGE_10 +//2561,GEFFEN_MAGE_11 +//2562,GEFFEN_MAGE_12 +//2563,FEI_KANABIAN +//2564,GEFFEN_FENRIR +//2565,ALPHONSE +//2566,ALPHONSE_JR +//2567,E_GEFFEN_MAGE_3_2 +//2568,E_GEFFEN_MAGE_3_3 +//2569,G_ANOPHELES +//2570,G_BREEZE +//2571,G_BUTOIJO +//2572,G_CARAMEL +//2573,G_CHONCHON +//2574,G_CIVIL_SERVANT +//2575,G_COCO +//2576,G_CREAMY +//2577,G_FABRE +//2578,G_HORN +//2579,G_HYLOZOIST +//2580,G_KAHO +//2581,G_LUDE +//2582,G_LUNATIC +//2583,G_MARTIN +//2584,G_MINERAL +//2585,G_MOLE +//2586,G_NERAID +//2587,G_OBSIDIAN +//2588,G_PITMAN +//2589,G_POPORING +//2590,G_ROCKER +//2591,G_SAVAGE +//2592,G_SIORAVA +//2593,G_SIROMA +//2594,G_SNOWIER +//2595,G_STAINER +//2596,G_STAPO +//2597,G_STEEL_CHONCHON +//2598,G_UNGOLIANT +//2599,G_WILD_RIDER +//2600,G_WOLF +//2601,G_YOYO +//2602,G_ZIPPER_BEAR +//2603,C1_ZOMBIE_SLAUGHTER +//2604,C2_ZOMBIE_PRISONER +//2605,C3_ZOMBIE_MASTER +//2606,C4_ZOMBIE +//2607,C5_ZAKUDAM +//2608,C1_YOYO +//2609,C2_YOYO +//2610,C3_WORM_TAIL +//2611,C4_WOOTAN_FIGHTER +//2612,C5_WOOD_GOBLIN +//2613,C1_WOLF +//2614,C2_WIND_GHOST +//2615,C3_WILOW +//2616,C4_WILD_ROSE +//2617,C5_WICKED_NYMPH +//2618,C2_WHISPER +//2619,C3_WEAK_SKELETON +//2620,C4_WANDER_MAN +//2621,C5_VIOLY +//2622,C1_VIOLY +//2623,C2_VIOLY +//2624,C3_VENOMOUS +//2625,C4_VENATU_1 +//2626,C5_VAVAYAGA +//2627,C1_VANBERK +//2628,C2_VADON +//2629,C3_UNGOLIANT +//2630,C4_TOUCAN +//2631,C5_TIYANAK +//2632,C2_THIEF_BUG +//2633,C3_THIEF_BUG +//2634,C4_THIEF_BUG +//2635,C5_THARA_FROG +//2636,C1_TEDDY_BEAR +//2637,C2_TATACHO +//2638,C3_TAROU +//2639,C4_TAMRUAN +//2640,C5_STING +//2641,C1_STEM_WORM +//2642,C2_STEEL_CHONCHON +//2643,C3_STAPO +//2644,C4_STALACTIC_GOLEM +//2645,C5_STAINER +//2646,C1_SPORE +//2647,C2_SOLIDER +//2648,C3_SOLDIER_SKELETON +//2649,C4_SOLDIER_SKELETON +//2650,C5_SOLACE +//2651,C1_SOHEE +//2652,C2_SNOWIER +//2653,C3_SNAKE +//2654,C4_SMOKIE +//2655,C5_SLEEPER +//2656,C1_SLEEPER +//2657,C2_SKOGUL +//2658,C3_SKELETON_GENERAL +//2659,C4_SKELETON_GENERAL +//2660,C5_SKEL_WORKER +//2661,C1_SIROMA +//2662,C2_SIDE_WINDER +//2663,C3_SIDE_WINDER +//2664,C4_SHINOBI +//2665,C5_SHELTER +//2666,C1_SHELLFISH +//2667,C2_SHECIL +//2668,C3_SEE_OTTER +//2669,C4_SEDORA +//2670,C5_SCORPION +//2671,C1_SAVAGE_BABE +//2672,C2_SAVAGE +//2673,C3_SAVAGE +//2674,C4_SAND_MAN +//2675,C5_SALAMANDER +//2676,C1_SAILOR_SKELETON +//2677,C2_ROWEEN +//2678,C3_RODA_FROG +//2679,C4_RODA_FROG +//2680,C5_ROCKER +//2681,C1_RIDEWORD +//2682,C2_RIDEWORD +//2683,C3_RICE_CAKE_BOY +//2684,C4_RETRIBUTION +//2685,C5_RETRIBUTION +//2686,C1_RETRIBUTION +//2687,C2_REQUIEM +//2688,C3_REMOVAL +//2689,C5_RED_ERUMA +//2690,C1_RAYDRIC +//2691,C2_RAYDRIC +//2692,C3_RAWREL +//2693,C4_RAKE_SCARABA +//2694,C5_RAGGLER +//2695,C1_RAFFLESIA +//2696,C3_PORING +//2697,C4_PORING +//2698,C5_PORING +//2699,C1_PORING +//2700,C2_PORCELLIO +//2701,C3_POPORING +//2702,C4_POPORING +//2703,C5_POPORING +//2704,C1_POISON_TOAD +//2705,C2_POISON_SPORE +//2706,C3_PLASMA_Y +//2707,C4_PLANKTON +//2708,C5_PITMAN +//2709,C1_PIRANHA +//2710,C2_PINGUICULA_D +//2711,C3_PINGUICULA +//2712,C4_PICKY_ +//2713,C5_PHEN +//2714,C1_PETIT +//2715,C2_PETIT +//2716,C3_PENOMENA +//2717,C4_PENOMENA +//2718,C5_PECOPECO +//2719,C1_PASANA +//2720,C2_PARASITE +//2721,C3_OWL_DUKE +//2722,C4_ORK_WARRIOR +//2723,C5_ORC_ZOMBIE +//2724,C1_ORC_SKELETON +//2725,C2_ORC_LADY +//2726,C3_OBSERVATION +//2727,C4_NOXIOUS +//2728,C5_NOVUS +//2729,C1_NOVUS +//2730,C2_NOVUS +//2731,C3_NOVUS +//2732,C4_NIGHTMARE_TERROR +//2733,C5_NG_WRAITH_DEAD +//2734,C1_NG_WANDER_MAN +//2735,C2_NEPENTHES +//2736,C3_NECROMANCER +//2737,C4_MYSTCASE +//2738,C5_MUSCIPULAR +//2739,C1_MUMMY +//2740,C2_MUMMY +//2741,C3_MUKA +//2742,C4_MOROCC_1 +//2743,C5_MOROCC_1 +//2744,C1_MOROCC_1 +//2745,C2_MOLE +//2746,C3_MIYABI_NINGYO +//2747,C4_MINOROUS +//2748,C5_MINOROUS +//2749,C1_MINOROUS +//2750,C2_MINERAL +//2751,C3_MIMING +//2752,C4_MIMIC +//2753,C5_MIMIC +//2754,C1_METALLER +//2755,C2_METALING +//2756,C3_METALING +//2757,C4_MERMAN +//2758,C5_MENBLATT +//2759,C1_MEDUSA +//2760,C2_MARTIN +//2761,C3_MARIONETTE +//2762,C4_MARIN +//2763,C5_MARDUK +//2764,C1_MANTIS +//2765,C2_MANDRAGORA +//2766,C3_MANANANGGAL +//2767,C4_MAJORUROS +//2768,C5_MAGNOLIA +//2769,C1_MAGMARING +//2770,C2_LUNATIC +//2771,C3_LUNATIC +//2772,C4_LUDE +//2773,C5_LUCIOLA_VESPA +//2774,C1_LOLI_RURI +//2775,C2_LIVE_PEACH_TREE +//2776,C3_LITTLE_PORING +//2777,C4_LITTLE_FATUM +//2778,C5_LI_ME_MANG_RYANG +//2779,C1_LES +//2780,C2_LEIB_OLMAI +//2781,C3_LEAF_CAT +//2782,C4_L_WHIKEBAIN +//2783,C5_L_EREMES +//2784,C1_KOBOLD_ARCHER +//2785,C2_KOBOLD_1 +//2786,C3_KNOCKER +//2787,C4_KIND_OF_BEETLE +//2788,C5_KASA +//2789,C1_KARAKASA +//2790,C2_ISIS +//2791,C3_ISILLA +//2792,C4_INJUSTICE +//2793,C5_INCREASE_SOIL +//2794,C1_ICE_TITAN +//2795,C2_IARA +//2796,C3_HYEGUN +//2797,C4_HUNTER_FLY +//2798,C5_HORNET +//2799,C1_HORN_SCARABA +//2800,C2_HORN +//2801,C3_HODREMLIN +//2802,C4_HODE +//2803,C5_HILL_WIND_1 +//2804,C1_HILL_WIND_1 +//2805,C2_HIGH_ORC +//2806,C3_HARPY +//2807,C4_HARPY +//2808,C5_GREEN_IGUANA +//2809,C1_GREATEST_GENERAL +//2810,C2_GRAND_PECO +//2811,C3_GRAND_PECO +//2812,C4_GOLEM +//2813,C5_GOBLIN_1 +//2814,C1_GOBLIN_1 +//2815,C2_GOAT +//2816,C3_GOAT +//2817,C4_GLD_KOBOLD_2 +//2818,C5_GLD_KOBOLD_2 +//2819,C1_GLD_DARK_SHADOW +//2820,C2_GLD_DARK_SHADOW +//2821,C3_GIANT_HONET +//2822,C4_GHOUL +//2823,C5_GHOUL +//2824,C1_GEOGRAPHER +//2825,C2_GEOGRAPHER +//2826,C3_GARGOYLE +//2827,C4_GARGOYLE +//2828,C5_GALION +//2829,C1_FUR_SEAL +//2830,C2_FREEZER +//2831,C3_FREEZER +//2832,C4_FERUS_ +//2833,C5_FARMILIAR +//2834,C1_FAKE_ANGEL +//2835,C2_FABRE +//2836,C3_FABRE +//2837,C4_EXPLOSION +//2838,C5_EVIL_DRUID +//2839,C1_ELDER_WILOW +//2840,C2_ELDER_WILOW +//2841,C3_ECHIO +//2842,C4_DUSTINESS +//2843,C1_DRYAD +//2844,C2_DROSERA +//2845,C3_DROPS +//2846,C4_DRILLER +//2847,C5_DRAINLIAR +//2848,C1_DRAGON_TAIL +//2849,C2_DRACO +//2850,C3_DOLOMEDES +//2851,C4_DOKEBI +//2852,C5_DISGUISE +//2853,C1_DIMIK_1 +//2854,C2_DEVIRUCHI +//2855,C3_DESERT_WOLF_B +//2856,C4_DESERT_WOLF_B +//2857,C5_DENIRO +//2858,C1_DEATHWORD +//2859,C2_DEATHWORD +//2860,C3_DEATHWORD +//2861,C4_DARK_PRIEST +//2862,C5_DANCING_DRAGON +//2863,C1_CREAMY +//2864,C2_CORNUTUS +//2865,C3_COOKIE +//2866,C4_CONSTANT +//2867,C5_COMODO +//2868,C1_COCO +//2869,C2_COCO +//2870,C3_CLOCK +//2871,C4_CLOCK +//2872,C5_CHONCHON +//2873,C1_CENTIPEDE +//2874,C2_CENERE +//2875,C3_CELIA +//2876,C4_CATERPILLAR +//2877,C5_CARAT +//2878,C1_CARAMEL +//2879,C2_BUNGISNGIS +//2880,C3_BREEZE +//2881,C4_BREEZE +//2882,C5_BRADIUM_GOLEM +//2883,C1_BLOOD_BUTTERFLY +//2884,C3_BIGFOOT +//2885,C4_BATHORY +//2886,C5_BANSHEE_MASTER +//2887,C1_BANSHEE +//2888,C2_BANASPATY +//2889,C3_ASSULTER +//2890,C4_ARGOS +//2891,C5_ARGIOPE +//2892,C1_ARGIOPE +//2893,C2_ARCLOUSE +//2894,C3_ARCLOUSE +//2895,C4_APOCALIPS +//2896,C5_ANTLER_SCARABA +//2897,C1_ANTIQUE_BOOK +//2898,C2_ANTIQUE_BOOK +//2899,C4_ANOLIAN +//2900,C5_ANGRA_MANTIS +//2901,C1_ANGRA_MANTIS +//2902,C2_ANDRE +//2903,C3_ANCIENT_MIMIC +//2904,C4_ANACONDAQ +//2905,C5_AMBERNITE +//2906,C1_ALNOLDI +//2907,C2_ALLIGATOR +//2908,C3_ALIZA +//2909,C4_ALICEL +//2910,C5_ALARM +//2911,C1_AGAV +//2912,C2_ACIDUS_ +//2913,C3_ACIDUS_ +//2914,E_GEFFEN_MAGE_3_1 +//2915,HIDDEN_MOB6 +//2916,BIG_BEN +//2917,BIG_BELL +//2918,TIME_KEEPER +//2919,NEO_PUNK +//2920,ARC_ELDER +//2921,OWL_VISCOUNT +//2922,G_OWL_VISCOUNT +//2923,OWL_MARQUEES +//2924,T_ELDER_WILOW +//2925,T_WILOW +//2926,T_HARPY +//2927,T_MINERAL +//2928,T_GIBBET +//2929,T_PLASMA_G +//2930,T_SOLACE +//2931,T_METALING +//2932,T_POPORING +//2933,T_DEVILING +//2934,T_ARCHANGELING +//2935,T_EVIL_CLOUD_HERMIT +//2936,E_GHOSTRING +//2937,M_LOKI +//2938,MM_MAGIC_SEAL +//2939,MM_EVIL_SHADOW1 +//2940,MM_EVIL_SHADOW2 +//2941,MM_EVIL_SHADOW3 +//2942,MM_EVIL_FANATICS +//2943,MM_ICE_MINE +//2944,J_HORNET +//2945,J_MUMMY +//2946,J_ANUBIS +//2947,J_EGGYRA +//2948,CURSED_SOLDIER +//2949,CURSED_SENTINEL +//2950,BROKEN_MIND +//2951,FLOATING_WORD +//2952,LIKE_LOVE +//2953,CURSED_MEMORY +//2954,COLORLESS_VOW +//2955,OLD_FRIENDSHIP +//2956,SWEET_SLAUGHTER +//2957,FORGOTTEN_NAME +//2958,FATAL_DAYS +//2959,TORTUROUS_REDEEMER +//2960,MM_FLAMECROSS +//2961,E_TORTUROUS_REDEEMER +//2962,E_DEVILING +//2963,WOODIE +//2964,EXP_1000 +//2965,TW_APOCALIPS_H +//2966,TW_B_EREMES +//2967,TW_B_HARWORD +//2968,TW_B_SEYREN +//2969,TW_BAPHOMET2 +//2970,TW_DARK_LORD +//2971,TW_DARK_SNAKE_LORD +//2972,TW_DOPPELGANGER +//2973,TW_DRACULA +//2974,TW_EDDGA +//2975,TW_FALLINGBISHOP +//2976,TW_GLOOMUNDERNIGHT +//2977,TW_IFRIT +//2978,TW_KTULLANUX +//2979,TW_LORD_OF_DEATH2 +//2980,TW_MISTRESS +//2981,TW_ORK_HERO2 +//2982,TW_OSIRIS2 +//2983,TW_RANDGRIS +//2984,TW_TURTLE_GENERAL +//2985,E_MYSTERIOUS_BUG +//2986,J_XMAS_SMOKEY_GIFT +//2987,XM_TREE +//2988,XM_ANTONIO +//2989,XM_COOKIE +//2990,XM_CRUISER +//2991,XM_MYSTCASE +//2992,XM_LUDE +//2993,XM_HYLOZOIST +//2994,XM_MARIONETTE +//2995,XM_TEDDY_BEAR +//2996,XM_CELINE_KIMI +//2997,G_XM_CELINE_KIMI +//2998,EP14_MORS_EVENT +//2999,EP14_MORS_BOSSA +//3000,EP14_MORS_BOSSB +//3001,EP14_MORS_MOB1 +//3002,EP14_MORS_MOB2 +//3003,EP14_MORS_MOB3 +//3004,EP14_MORS_MOB4 +//3005,EP14_MORS_MOB5 +//3006,EP14_MORS_MOB6 +//3007,EP14_MORS_DUMMY +//3008,EP14_MORS_HIDDEN +//3009,EP14_3_DEATH_BOSS +//3010,EP14_3_DEATH_A_MOB1 +//3011,EP14_3_DEATH_A_MOB2 +//3012,EP14_3_DEATH_A_MOB3 +//3013,EP14_3_DEATH_B_MOB1 +//3014,EP14_3_DEATH_B_MOB2 +//3015,EP14_3_DEATH_B_MOB3 +//3016,EP14_3_DEATH_C_MOB1 +//3017,EP14_3_DEATH_C_MOB2 +//3018,EP14_3_DEATH_C_MOB3 +//3019,CELINE_KIMI +//3020,FIRE_CONDOR +//3021,FIRE_SAND_MAN +//3022,FIRE_FRILLDORA +//3023,FIRE_GOLEM +//3024,14_3_MERCENARY_A +//3025,14_3_MERCENARY_B +//3026,FIREPIT +//3027,FULBUK +//3028,SONIA +//3029,GRIM_REAPER_ANKOU +//3030,STANDING_SOUL +//3031,MUTANT_NECROMANCER +//3032,MUTANT_GHOUL +//3033,MUTANT_OSIRIS +//3034,MUTANT_ARCHER_SKELETON +//3035,MUTANT_WRAITH_DEAD +//3036,MUTANT_VERIT +//3037,MUTANT_LUDE +//3038,HIDDEN_MOB7 +//3039,B_MOROCC_1 +//3040,B_MOROCC_2 +//3041,B_MOROCC_4 +//3042,WATERMELON_17 +//3043,WATERMELON_18 +//3044,WATERMELON_19 +//3045,WATERMELON_20 +//3046,WATERMELON_21 +//3047,WATERMELON_22 +//3048,WATERMELON_23 +//3049,WATERMELON_24 +//3050,WATERMELON_25 +//3051,WATERMELON_26 +//3052,WATERMELON_27 +//3053,WATERMELON_28 +//3054,WATERMELON_29 +//3055,WATERMELON_30 +//3056,WATERMELON_31 +//3057,WATERMELON_32 +//3058,WATERMELON_33 +//3059,EIGHT_DIVISION +//3060,E_QUESTION_OCTOPUS +//3061,E_ANGRY_MIMIC +//3062,GIANT_DEVIRUCHI +//3063,DEVIRUCHI_W +//3064,GIANT_DEVIRUCHI_W +//3065,E_ICE_MINE +//3066,SNAKE_NEWYEAR +//3067,E_ORC_WOMAN +//3068,E_PYTHON_SKIN +//3069,PERE1 +//3070,PERE2 +//3071,PERE3 +//3072,PERE4 +//3073,GRAND_PERE +//3074,TIMEHOLDER +//3075,WA_TREASURE +//3076,WA_MONSTER_1 +//3077,WA_MONSTER_2 +//3078,WA_MONSTER_3 +//3079,WA_MONSTER_4 +//3080,WA_MONSTER_5 +//3081,WA_MONSTER_6 +//3082,WA_MONSTER_7 +//3083,WA_MONSTER_8 +//3084,WA_MONSTER_9 +//3085,WA_MONSTER_10 +//3086,WA_MERCENARY +//3087,M_NYDHOG +//3088,MM_BRINARANEA_BABY +//3089,MM_LOCO_KASA +//3090,MM_LOCO_SALAMANDER +//3091,MM_BRINARANEA +//3092,MM_MUSPELLSKOLL +//3093,MM_BRINARANEA_CORE +//3094,MM_MUSPELLSKOLL_CORE +//3095,MM_GOD_SHADOW +//3096,MM_MOROCC_KID +//3097,MM_MOROCC_ADT +//3098,MM_MOROCC_ORIGIN +//3099,MM_MOROCC_REST +//3100,MM_MANA_BLACK +//3101,MM_MANA_WHITE +//3102,MM_MANA_RED +//3103,MM_MANA_YELLOW +//3104,MM_MANA_BLUE +//3105,MM_GB_MOROCC_1 +//3106,MM_GB_MOROCC_4 +//3107,E_EASTER_BUNNY +//3108,JITTERBUG1 +//3109,JITTERBUG2 -- cgit v1.2.3-70-g09d2 From 19b8cbb835e867febb597b34187f6bbca48cbe7b Mon Sep 17 00:00:00 2001 From: shennetsind Date: Mon, 22 Apr 2013 18:28:18 -0300 Subject: Hercules April 22 MEGA-ULTRA-LONG Patch~! http://hercules.ws/board/topic/470-hercules-april-22-patch/ Signed-off-by: shennetsind --- conf/atcommand.conf | 7 + conf/channels.conf | 22 +- conf/map-server.conf | 9 +- db/cashshop_db.conf | 55 + db/cashshop_db.txt | 45 - db/const.txt | 2 - db/pre-re/item_combo_db.txt | 14 +- db/pre-re/item_trade.txt | 4 +- db/pre-re/map_zone_db.conf | 34 +- db/pre-re/skill_db.txt | 1 - db/re/item_combo_db.txt | 14 +- db/re/item_trade.txt | 4 +- db/re/map_zone_db.conf | 34 +- db/re/skill_db.txt | 1 - doc/script_commands.txt | Bin 593352 -> 289408 bytes src/char/char.c | 28 +- src/config/const.h | 4 +- src/config/core.h | 16 +- src/map/Makefile.in | 4 +- src/map/atcommand.c | 4914 ++++++++++++------------ src/map/atcommand.h | 98 +- src/map/battle.c | 95 +- src/map/buyingstore.c | 31 +- src/map/buyingstore.h | 31 +- src/map/clif.c | 1217 +++--- src/map/clif.h | 22 +- src/map/guild.c | 8 +- src/map/intif.c | 2 +- src/map/irc-bot.c | 272 ++ src/map/irc-bot.h | 58 + src/map/itemdb.c | 31 +- src/map/itemdb.h | 1 + src/map/log.c | 608 ++- src/map/log.h | 84 +- src/map/mail.c | 2 +- src/map/map.c | 465 ++- src/map/map.h | 51 +- src/map/mob.c | 63 +- src/map/npc.c | 4 +- src/map/packets_struct.h | 324 ++ src/map/party.c | 2 +- src/map/pc.c | 82 +- src/map/pc.h | 11 +- src/map/pc_groups.c | 40 +- src/map/pc_groups.h | 5 +- src/map/pet.c | 4 +- src/map/script.c | 6873 ++++++++++++++++------------------ src/map/script.h | 4 - src/map/searchstore.c | 201 +- src/map/searchstore.h | 42 +- src/map/skill.c | 6 +- src/map/skill.h | 1 - src/map/sql/CMakeLists.txt | 4 +- src/map/status.c | 4 + src/map/trade.c | 4 +- src/map/unit.c | 4 +- src/map/vending.c | 183 +- src/map/vending.h | 31 +- vcproj-10/map-server.vcxproj | 2 + vcproj-10/map-server.vcxproj.filters | 6 + vcproj-12/map-server.vcxproj | 2 + vcproj-12/map-server.vcxproj.filters | 6 + vcproj-9/map-server.vcproj | 8 + 63 files changed, 8590 insertions(+), 7614 deletions(-) create mode 100644 db/cashshop_db.conf delete mode 100644 db/cashshop_db.txt create mode 100644 src/map/irc-bot.c create mode 100644 src/map/irc-bot.h (limited to 'db/re') diff --git a/conf/atcommand.conf b/conf/atcommand.conf index 67af3b91f..6e35d5327 100644 --- a/conf/atcommand.conf +++ b/conf/atcommand.conf @@ -59,6 +59,13 @@ aliases: { channel: ["main"] } +/* list of commands that should not be logged at all */ +/* add as many commands as you like */ +nolog: { + iteminfo: 1 + mobinfo: 1 +} + /* Commands help file */ help: { @include "conf/help.txt" diff --git a/conf/channels.conf b/conf/channels.conf index b12d2da8b..3584fc2ea 100644 --- a/conf/channels.conf +++ b/conf/channels.conf @@ -1,3 +1,14 @@ +//==================================================== +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//= +//= http://hercules.ws/board/ +//==================================================== +//= http://hercules.ws/board/topic/316-introducing-hercules-channel-system/ chsys: ( { /* default channels (available on boot) */ @@ -18,6 +29,7 @@ chsys: ( Cyan: "0x00b89d" Yellow: "0xffff90" Green: "0x28bf00" + Light_Green: "0x3dff98" Normal: "0x00ff00" /* as many colors as you like */ } @@ -33,7 +45,15 @@ chsys: ( ally_channel_enabled: true ally_channel_name: "ally" /* available as #ally */ ally_channel_color: "Green" - ally_channel_autojoin: true + ally_channel_autojoin: true /* will members autojoin to their respective #ally chats when they log-in? */ + /* "irc_channel" is a special channel connected to a specific chat room in any irc network */ + irc_channel_enabled: false + irc_channel_name: "irc" /* available as #irc */ + irc_channel_color: "Light_Green" + irc_channel_network: "irc.rizon.net:6665" /* network to connect to (:and port) */ + irc_channel_channel: "#Hercules" /* channel in the network above to join */ + irc_channel_nick: "Hercules_chSysBot" /* nick the bot will use */ + irc_channel_nick_pw: "" /* password to this nick (if any) to identify to nick server on the irc network */ } ) diff --git a/conf/map-server.conf b/conf/map-server.conf index b251e69ec..cac5421e6 100644 --- a/conf/map-server.conf +++ b/conf/map-server.conf @@ -89,18 +89,19 @@ minsave_time: 100 // Apart from the autosave_time, players will also get saved when involved // in the following (add as needed): -// 1: after every successful trade -// 2: after every vending transaction -// 4: after closing storage/guild storage. +// 1: After every successful trade +// 2: After every vending transaction +// 4: After closing storage/guild storage. // 8: After hatching/returning to egg a pet. // 16: After successfully sending a mail with attachment // 32: After successfully submitting an item for auction // 64: After successfully get/delete/complete a quest +// 128: After every buying store transaction // NOTE: These settings decrease the chance of dupes/lost items when there's a // server crash at the expense of increasing the map/char server lag. If your // server rarely crashes, but experiences interserver lag, you may want to set // these off. -save_settings: 127 +save_settings: 255 // Message of the day file, when a character logs on, this message is displayed. motd_txt: conf/motd.txt diff --git a/db/cashshop_db.conf b/db/cashshop_db.conf new file mode 100644 index 000000000..381d898e0 --- /dev/null +++ b/db/cashshop_db.conf @@ -0,0 +1,55 @@ +//==================================================== +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//= +//= http://hercules.ws/board/ +//==================================================== +//= http://hercules.ws/board/topic/367-introducing-cash-shop-support/ + +cash_shop: ( +{ + cat_0: { //New + Apple:100 + ID531:250 + } + + cat_1: { //Popular + ID513:100 + Banana_Juice:250 + } + + cat_2: { //Limited + Grape:100 + ID533:250 + } + + cat_3: { //Rental + ID515:100 + Carrot_Juice:250 + } + + cat_4: { //Permanent + Green_Herb:100 + ID510:250 + } + + cat_5: { //Scroll + ID501:100 + ID502:250 + } + + cat_6: { //Usable + White_Potion:150 + Blue_Potion:500 + } + + cat_7: { //Other + ID909:400 + ID907:500 + } +} +) \ No newline at end of file diff --git a/db/cashshop_db.txt b/db/cashshop_db.txt deleted file mode 100644 index fc6a803c7..000000000 --- a/db/cashshop_db.txt +++ /dev/null @@ -1,45 +0,0 @@ -// Hercules Cash Shop Database -// Format: -// Tab ID or Tab Name, ItemID or Item Name, Price -// -// Tabs: -// 0 = New -// 1 = Popular -// 2 = Limited -// 3 = Rental -// 4 = Permanent -// 5 = Scroll -// 6 = Usable -// 7 = Other - -//New -New,Apple,100 -0,531,250 - -//Popular -1,513,100 -Popular,Banana_Juice,250 - -//Limited -2,Grape,100 -Limited,533,250 - -//Rental -Rental,515,100 -3,Carrot_Juice,250 - -//Permanent -4,Green_Herb,100 -Permanent,510,250 - -//Scroll -5,501,100 -5,502,250 - -//Usable -usable,White_Potion,150 -usable,Blue_Potion,500 - -//Other -7,909,400 -7,907,500 \ No newline at end of file diff --git a/db/const.txt b/db/const.txt index d3d5991ab..ec051c4b0 100644 --- a/db/const.txt +++ b/db/const.txt @@ -333,8 +333,6 @@ mf_snow 16 mf_fog 17 mf_sakura 18 mf_leaves 19 -mf_rain 20 -mf_nogo 22 mf_clouds 23 mf_clouds2 24 mf_fireworks 25 diff --git a/db/pre-re/item_combo_db.txt b/db/pre-re/item_combo_db.txt index c1eb3c039..f745d25b7 100644 --- a/db/pre-re/item_combo_db.txt +++ b/db/pre-re/item_combo_db.txt @@ -9,10 +9,10 @@ 1421:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; } 1422:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; } 1428:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; } -1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getrefine(); } -1472:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getrefine(); } -1473:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getrefine(); } -1473:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getrefine(); } +1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HAND_R); } +1472:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HAND_R); } +1473:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HAND_R); } +1473:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HAND_R); } 1474:2527,{ bonus2 bAddRace,RC_Dragon,5; } 1477:2700,{ bonus2 bResEff,Eff_Confusion,9500; } 1479:2700,{ bonus2 bResEff,Eff_Confusion,9500; } @@ -23,11 +23,11 @@ 1573:2716:2717,{ bonus bInt,5; bonus bMaxHP,700; bonus bAspdRate,5; } 1615:18539,{ bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R); bonus bCastRate,-10; } 1616:2515,{ bonus bSpeedRate,25; } -1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getrefine()*3; } +1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_R)*3; } 1618:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; } -1620:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getrefine()*3; } +1620:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_R)*3; } 1620:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; } -1629:5045,{ bonus bDex,2; bonus bInt,2; bonus bSPrecovRate,5; bonus bMatkRate,getrefine(); } +1629:5045,{ bonus bDex,2; bonus bInt,2; bonus bSPrecovRate,5; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R); } 1631:2129,{ bonus2 bSkillAtk,"PR_MAGNUS",20; bonus3 bAutoSpellWhenHit,"PR_TURNUNDEAD",1,20; } 1636:18539,{ bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R); bonus bCastRate,-10; } 1723:2718,{ bonus bDex,1; bonus bMaxSP,50; bonus bSPrecovRate,10; } diff --git a/db/pre-re/item_trade.txt b/db/pre-re/item_trade.txt index b5fedbd62..84b0220f5 100644 --- a/db/pre-re/item_trade.txt +++ b/db/pre-re/item_trade.txt @@ -1,6 +1,6 @@ //Item Trading Restrictions File //Specify here special rules for item trading. -//Item ID, TradeMask, GM-Level Override +//Item ID, TradeMask, Group-Level Override //Trading mask values: //1:Item can't be droped //2:Item can't be traded (nor vended) @@ -13,7 +13,7 @@ //256:Item can't be auctioned //Example: //1161,67,50 //Balmung: No drop, No trade, No Guild Store (1+2+64 =67), -//only GMs of GM-level 50 and up can override the setting. +//only groups of group-level 50 and up can override the setting. // Wedding Related items 2634,507,100 // Wedding Ring diff --git a/db/pre-re/map_zone_db.conf b/db/pre-re/map_zone_db.conf index 36689ac57..6fb18084b 100644 --- a/db/pre-re/map_zone_db.conf +++ b/db/pre-re/map_zone_db.conf @@ -16,10 +16,41 @@ //= maps can be linked to a specific zone through the zone mapflag //= 'mapflagzone' //== available types for 'disabled_skills': -//= PLAYER, HOMUN, MERCENARY, MONSTER, ALL and NONE +//= PLAYER, HOMUN, MERCENARY, MONSTER, PET, ELEMENTAL, ALL and NONE //== More on //= http://hercules.ws/board/topic/302-introducing-hercules-map-zone-database/ +//= (TODO: replace with wiki link and detail the wiki page in a decent format ^) zones: ( +{ + /* All zone is a dynamic (very special) zone that is forcebly inherited by ALL maps automatically */ + name: "All" /* changing this name requires MAP_ZONE_ALL_NAME to also be changed in src/map/map.h file */ + + disabled_skills: { + //both examples below disable napalm beat (id 11) to players + //MG_NAPALMBEAT: "PLAYER" + //ID11: "PLAYER" + } + + disabled_items: { + //Both examples below disable apple (id 501) + //Apple: true + //ID501: true + } + + mapflags: ( ) + + /* "command:min-group-lv-to-override" e.g. "heal: 70" */ + disabled_commands: { + //Example Below makes @heal be used in maps within this zone only by those group lv 70 and above + //heal: 70 + } + skill_damage_cap: { + //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage, + // (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h) + // to players and monsters. + //MG_FIREBOLT: (50,"PLAYER | MONSTER") + } +}, { /* Normal zone is applied to all maps that are not pkable (where players cant fight each other) */ /* However, it wont be applied to maps with its own zones (specified thru mapflag) */ @@ -37,6 +68,7 @@ zones: ( } mapflags: ( ) + }, { /* PvP zone is applied to all maps with a pvp mapflag */ diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index 806bb4d11..df52ec439 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -38,7 +38,6 @@ // 0x1000- disable usage on enemies (for non-offensive skills). // 0x2000- skill ignores land protector (e.g. arrow shower) // 0x4000- chorus skill -// 0x8000- skill wont be passed to clones // 13 maxcount: max amount of skill instances to place on the ground when // player_land_skill_limit/monster_land_skill_limit is enabled. For skills // that attack using a path, this is the path length to be used. diff --git a/db/re/item_combo_db.txt b/db/re/item_combo_db.txt index d921689c3..26b955d9b 100644 --- a/db/re/item_combo_db.txt +++ b/db/re/item_combo_db.txt @@ -12,10 +12,10 @@ 1422:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; } 1428:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; } 1433:2153,{ bonus2 bSkillAtk,"CR_GRANDCROSS",10; bonus2 bSkillAtk,"LG_RAYOFGENESIS",10; } -1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getrefine(); } -1472:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getrefine(); } -1473:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getrefine(); } -1473:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getrefine(); } +1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getequiprefinerycnt(EQI_HAND_R); } +1472:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getequiprefinerycnt(EQI_HAND_R); } +1473:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getequiprefinerycnt(EQI_HAND_R); } +1473:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getequiprefinerycnt(EQI_HAND_R); } 1474:2527,{ bonus2 bAddRace,RC_Dragon,5; } 1477:2700,{ bonus2 bResEff,Eff_Confusion,9500; } 1479:2700,{ bonus2 bResEff,Eff_Confusion,9500; } @@ -26,11 +26,11 @@ 1573:2716:2717,{ bonus bInt,5; bonus bMaxHP,700; bonus bAspdRate,5; } 1615:18539,{ bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R); bonus bVariableCastrate,-10; } 1616:2515,{ bonus bSpeedRate,25; } -1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getrefine()*3; } +1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_R)*3; } 1618:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; } -1620:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getrefine()*3; } +1620:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_R)*3; } 1620:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; } -1629:5045,{ bonus bDex,2; bonus bInt,2; bonus bSPrecovRate,5; bonus bMatkRate,getrefine(); } +1629:5045,{ bonus bDex,2; bonus bInt,2; bonus bSPrecovRate,5; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R); } 1631:2129,{ bonus2 bSkillAtk,"PR_MAGNUS",20; bonus3 bAutoSpellWhenHit,"PR_TURNUNDEAD",1,20; } 1636:18539,{ bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R); bonus bVariableCastrate,-10; } 1657:2471:2569:15029,{ bonus bHealPower,25; } diff --git a/db/re/item_trade.txt b/db/re/item_trade.txt index 9ad2a8c65..c6faa991b 100644 --- a/db/re/item_trade.txt +++ b/db/re/item_trade.txt @@ -1,6 +1,6 @@ //Item Trading Restrictions File //Specify here special rules for item trading. -//Item ID, TradeMask, GM-Level Override +//Item ID, TradeMask, Group-Level Override //Trading mask values: //1:Item can't be droped //2:Item can't be traded (nor vended) @@ -13,7 +13,7 @@ //256:Item can't be auctioned //Example: //1161,67,50 //Balmung: No drop, No trade, No Guild Store (1+2+64 =67), -//only GMs of GM-level 50 and up can override the setting. +//only groups of group-level 50 and up can override the setting. // Wedding Related items 2634,507,100 // Wedding Ring diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf index 36689ac57..6fb18084b 100644 --- a/db/re/map_zone_db.conf +++ b/db/re/map_zone_db.conf @@ -16,10 +16,41 @@ //= maps can be linked to a specific zone through the zone mapflag //= 'mapflagzone' //== available types for 'disabled_skills': -//= PLAYER, HOMUN, MERCENARY, MONSTER, ALL and NONE +//= PLAYER, HOMUN, MERCENARY, MONSTER, PET, ELEMENTAL, ALL and NONE //== More on //= http://hercules.ws/board/topic/302-introducing-hercules-map-zone-database/ +//= (TODO: replace with wiki link and detail the wiki page in a decent format ^) zones: ( +{ + /* All zone is a dynamic (very special) zone that is forcebly inherited by ALL maps automatically */ + name: "All" /* changing this name requires MAP_ZONE_ALL_NAME to also be changed in src/map/map.h file */ + + disabled_skills: { + //both examples below disable napalm beat (id 11) to players + //MG_NAPALMBEAT: "PLAYER" + //ID11: "PLAYER" + } + + disabled_items: { + //Both examples below disable apple (id 501) + //Apple: true + //ID501: true + } + + mapflags: ( ) + + /* "command:min-group-lv-to-override" e.g. "heal: 70" */ + disabled_commands: { + //Example Below makes @heal be used in maps within this zone only by those group lv 70 and above + //heal: 70 + } + skill_damage_cap: { + //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage, + // (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h) + // to players and monsters. + //MG_FIREBOLT: (50,"PLAYER | MONSTER") + } +}, { /* Normal zone is applied to all maps that are not pkable (where players cant fight each other) */ /* However, it wont be applied to maps with its own zones (specified thru mapflag) */ @@ -37,6 +68,7 @@ zones: ( } mapflags: ( ) + }, { /* PvP zone is applied to all maps with a pvp mapflag */ diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index ed4671c00..0bb63d7e9 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -38,7 +38,6 @@ // 0x1000- disable usage on enemies (for non-offensive skills). // 0x2000- skill ignores land protector (e.g. arrow shower) // 0x4000- chorus skill -// 0x8000- skill wont be passed to clones // 13 maxcount: max amount of skill instances to place on the ground when // player_land_skill_limit/monster_land_skill_limit is enabled. For skills // that attack using a path, this is the path length to be used. diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 38c442f74..aa3112d62 100644 Binary files a/doc/script_commands.txt and b/doc/script_commands.txt differ diff --git a/src/char/char.c b/src/char/char.c index ce0d067a7..109f74c36 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -1059,13 +1059,6 @@ int mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) j += mmo_char_tobuf(WBUFP(buf, j), &p); } -#if PACKETVER >= 20130000 - /* for some reason the client doesn't like "3" characters (yes...3) we gotta send a fake one or it wont display any =_= */ - if( j == 432 ){/* we just duplicate the last visually the client will say 4 chars instead of 3 though >_> */ - j += mmo_char_tobuf(WBUFP(buf, j), &p); - } -#endif - memset(sd->new_name,0,sizeof(sd->new_name)); SqlStmt_Free(stmt); @@ -1888,7 +1881,7 @@ int mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p) return 106+offset; } - + int mmo_char_send006b(int fd, struct char_session_data* sd); //---------------------------------------- // [Ind/Hercules] notify client about charselect window data //---------------------------------------- @@ -1906,10 +1899,7 @@ void mmo_char_send082d(int fd, struct char_session_data* sd) { WFIFOB(fd,8) = sd->char_slots; memset(WFIFOP(fd,9), 0, 20); // unused bytes WFIFOSET(fd,29); - WFIFOHEAD(fd, 6); - WFIFOW(fd,0) = 0x9a0; - WFIFOL(fd,2) = 1; - WFIFOSET(fd, 6); + mmo_char_send006b(fd,sd); } //---------------------------------------- @@ -4342,20 +4332,6 @@ int parse_char(int fd) RFIFOSKIP(fd, 8); } break; - - /* [Ind/Hercules] after hours reading over and over Shakto's network report, finally found this little ***hole */ - case 0x9a1: - FIFOSD_CHECK(2); - { - int j = 4; - RFIFOSKIP(fd, 2); - WFIFOHEAD(fd,j + (MAX_CHARS*MAX_CHAR_BUF)); - WFIFOW(fd,0) = 0x99d; - j+=mmo_chars_fromsql(sd, WFIFOP(fd,j)); - WFIFOW(fd,2) = j; - WFIFOSET(fd,j); - } - break; // unknown packet received default: diff --git a/src/config/const.h b/src/config/const.h index 825824c62..53f24da6f 100644 --- a/src/config/const.h +++ b/src/config/const.h @@ -53,9 +53,9 @@ /* pointer size fix which fixes several gcc warnings */ #ifdef __64BIT__ - #define __64BPRTSIZE(y) (intptr)y + #define __64BPTRSIZE(y) (intptr)y #else - #define __64BPRTSIZE(y) y + #define __64BPTRSIZE(y) y #endif /* ATCMD_FUNC(mobinfo) HIT and FLEE calculations */ diff --git a/src/config/core.h b/src/config/core.h index c9b1463de..bec6cb507 100644 --- a/src/config/core.h +++ b/src/config/core.h @@ -34,11 +34,6 @@ /// We kindly ask you to consider keeping it enabled, it helps us improve Hercules. //#define STATS_OPT_OUT -/// uncomment to enable query_sql script command and mysql logs to function on it's own thread -/// be aware this feature is under tests and you should use at your own risk, we however -/// welcome any feedback you may have regarding this feature, please send us all bug reports. -//#define BETA_THREAD_TEST - /// Uncomment to enable the Cell Stack Limit mod. /// It's only config is the battle_config cell_stack_limit. /// Only chars affected are those defined in BL_CHAR (mobs and players currently) @@ -51,6 +46,17 @@ /// - but is not the official behaviour. //#define CIRCULAR_AREA +//This is the distance at which @autoloot works, +//if the item drops farther from the player than this, +//it will not be autolooted. [Skotlex] +//Note: The range is unlimited unless this define is set. +//#define AUTOLOOT_DISTANCE AREA_SIZE + +/// Uncomment to switch the way map zones' "skill_damage_cap" functions. +/// When commented the cap takes place before modifiers, as to have them be useful. +/// When uncommented the cap takes place after modifiers. +//#define HMAP_ZONE_DAMAGE_CAP_TYPE + /// Uncomment to enable Non Stackable items unique ID /// By enabling it, the system will create an unique id for each new non stackable item created //#define NSI_UNIQUE_ID diff --git a/src/map/Makefile.in b/src/map/Makefile.in index 78f5c42c4..bb99b6a05 100644 --- a/src/map/Makefile.in +++ b/src/map/Makefile.in @@ -17,7 +17,7 @@ MAP_OBJ = map.o chrif.o clif.o pc.o status.o npc.o \ storage.o skill.o atcommand.o battle.o battleground.o \ intif.o trade.o party.o vending.o guild.o pet.o \ log.o mail.o date.o unit.o homunculus.o mercenary.o quest.o instance.o \ - buyingstore.o searchstore.o duel.o pc_groups.o elemental.o + buyingstore.o searchstore.o duel.o pc_groups.o elemental.o irc-bot.o MAP_SQL_OBJ = $(MAP_OBJ:%=obj_sql/%) \ obj_sql/mapreg_sql.o MAP_H = map.h chrif.h clif.h pc.h status.h npc.h \ @@ -27,7 +27,7 @@ MAP_H = map.h chrif.h clif.h pc.h status.h npc.h \ log.h mail.h date.h unit.h homunculus.h mercenary.h quest.h instance.h mapreg.h \ buyingstore.h searchstore.h duel.h pc_groups.h \ ../config/core.h ../config/renewal.h ../config/secure.h ../config/const.h \ - ../config/classes/general.h elemental.h packets.h packets_struct.h + ../config/classes/general.h elemental.h packets.h packets_struct.h irc-bot.h HAVE_MYSQL=@HAVE_MYSQL@ ifeq ($(HAVE_MYSQL),yes) diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 0fc803198..e9c8c5fba 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1,5 +1,6 @@ -// Copyright (c) Athena Dev Teams - Licensed under GNU GPL -// For more information, see LICENCE in the main folder +// Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// See the LICENSE file +// Portions Copyright (c) Athena Dev Teams #include "../common/cbasetypes.h" #include "../common/mmo.h" @@ -43,6 +44,7 @@ #include "unit.h" #include "mapreg.h" #include "quest.h" +#include "searchstore.h" #include #include @@ -50,36 +52,11 @@ #include -#define ATCOMMAND_LENGTH 50 -#define ACMD_FUNC(x) static int atcommand_ ## x (const int fd, struct map_session_data* sd, const char* command, const char* message) -#define MAX_MSG 1500 - - -typedef struct AtCommandInfo AtCommandInfo; -typedef struct AliasInfo AliasInfo; - -int atcmd_binding_count = 0; - -struct AtCommandInfo { - char command[ATCOMMAND_LENGTH]; - AtCommandFunc func; - char* at_groups;/* quick @commands "can-use" lookup */ - char* char_groups;/* quick @charcommands "can-use" lookup */ -}; - -struct AliasInfo { - AtCommandInfo *command; - char alias[ATCOMMAND_LENGTH]; -}; - - -char atcommand_symbol = '@'; // first char of the commands -char charcommand_symbol = '#'; +#define ACMD(x) static bool atcommand_ ## x (const int fd, struct map_session_data* sd, const char* command, const char* message, struct AtCommandInfo *info) static char* msg_table[MAX_MSG]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others) static DBMap* atcommand_db = NULL; //name -> AtCommandInfo static DBMap* atcommand_alias_db = NULL; //alias -> AtCommandInfo -static config_t atcommand_config; static char atcmd_output[CHAT_SIZE_MAX]; static char atcmd_player_name[NAME_LENGTH]; @@ -92,12 +69,12 @@ static void atcommand_get_suggestions(struct map_session_data* sd, const char *n struct atcmd_binding_data* get_atcommandbind_byname(const char* name) { int i = 0; - if( *name == atcommand_symbol || *name == charcommand_symbol ) + if( *name == atcommand->at_symbol || *name == atcommand->char_symbol ) name++; // for backwards compatibility - ARR_FIND( 0, atcmd_binding_count, i, strcmp(atcmd_binding[i]->command, name) == 0 ); + ARR_FIND( 0, atcommand->binding_count, i, strcmp(atcommand->binding[i]->command, name) == 0 ); - return ( i < atcmd_binding_count ) ? atcmd_binding[i] : NULL; + return ( i < atcommand->binding_count ) ? atcommand->binding[i] : NULL; } //----------------------------------------------------------- @@ -169,107 +146,79 @@ void do_final_msg(void) /** * retrieves the help string associated with a given command. - * - * @param name the name of the command to retrieve help information for - * @return the string associated with the command, or NULL */ -static const char* atcommand_help_string(const char* command) -{ - const char* str = NULL; - config_setting_t* info; - - if( *command == atcommand_symbol || *command == charcommand_symbol ) - {// remove the prefix symbol for the raw name of the command - command ++; - } - - // convert alias to the real command name - command = atcommand_checkalias(command); - - // attept to find the first default help command - info = config_lookup(&atcommand_config, "help"); - - if( info == NULL ) - {// failed to find the help property in the configuration file - return NULL; - } - - if( !config_setting_lookup_string( info, command, &str ) ) - {// failed to find the matching help string - return NULL; - } - - // push the result from the method - return str; +static inline const char* atcommand_help_string(AtCommandInfo *info) { + return info->help; } + /*========================================== * @send (used for testing packet sends from the client) *------------------------------------------*/ -ACMD_FUNC(send) +ACMD(send) { int len=0,off,end,type; long num; - + // read message type as hex number (without the 0x) if(!message || !*message || - !((sscanf(message, "len %x", &type)==1 && (len=1)) - || sscanf(message, "%x", &type)==1) ) + !((sscanf(message, "len %x", &type)==1 && (len=1)) + || sscanf(message, "%x", &type)==1) ) { int i; for (i = 900; i <= 903; ++i) clif->message(fd, msg_txt(i)); - return -1; + return false; } - + #define PARSE_ERROR(error,p) \ - {\ - clif->message(fd, (error));\ - sprintf(atcmd_output, ">%s", (p));\ - clif->message(fd, atcmd_output);\ - } -//define PARSE_ERROR - +{\ +clif->message(fd, (error));\ +sprintf(atcmd_output, ">%s", (p));\ +clif->message(fd, atcmd_output);\ +} + //define PARSE_ERROR + #define CHECK_EOS(p) \ - if(*(p) == 0){\ - clif->message(fd, "Unexpected end of string");\ - return -1;\ - } -//define CHECK_EOS - +if(*(p) == 0){\ +clif->message(fd, "Unexpected end of string");\ +return false;\ +} + //define CHECK_EOS + #define SKIP_VALUE(p) \ - {\ - while(*(p) && !ISSPACE(*(p))) ++(p); /* non-space */\ - while(*(p) && ISSPACE(*(p))) ++(p); /* space */\ - } -//define SKIP_VALUE - +{\ +while(*(p) && !ISSPACE(*(p))) ++(p); /* non-space */\ +while(*(p) && ISSPACE(*(p))) ++(p); /* space */\ +} + //define SKIP_VALUE + #define GET_VALUE(p,num) \ - {\ - if(sscanf((p), "x%lx", &(num)) < 1 && sscanf((p), "%ld ", &(num)) < 1){\ - PARSE_ERROR("Invalid number in:",(p));\ - return -1;\ - }\ - } -//define GET_VALUE - +{\ +if(sscanf((p), "x%lx", &(num)) < 1 && sscanf((p), "%ld ", &(num)) < 1){\ +PARSE_ERROR("Invalid number in:",(p));\ +return false;\ +}\ +} + //define GET_VALUE + if (type > 0 && type < MAX_PACKET_DB) { - + if(len) {// show packet length sprintf(atcmd_output, msg_txt(904), type, packet_db[type].len); // Packet 0x%x length: %d clif->message(fd, atcmd_output); - return 0; + return true; } - + len=packet_db[type].len; off=2; if(len == 0) {// unknown packet - ERROR sprintf(atcmd_output, msg_txt(905), type); // Unknown packet: 0x%x clif->message(fd, atcmd_output); - return -1; + return false; } else if(len == -1) {// dynamic packet len=SHRT_MAX-4; // maximum length @@ -277,7 +226,7 @@ ACMD_FUNC(send) } WFIFOHEAD(fd, len); WFIFOW(fd,0)=TOW(type); - + // parse packet contents SKIP_VALUE(message); while(*message != 0 && off < len){ @@ -316,12 +265,12 @@ ACMD_FUNC(send) {// find start of string if(*message == 0 || ISSPACE(*message)){ PARSE_ERROR(msg_txt(906),message); // Not a string: - return -1; + return false; } ++message; } } - + // parse string ++message; CHECK_EOS(message); @@ -346,7 +295,7 @@ ACMD_FUNC(send) CHECK_EOS(message); if(!ISXDIGIT(*message)){ PARSE_ERROR(msg_txt(907),message); // Not a hexadecimal digit: - return -1; + return false; } num=(ISDIGIT(*message)?*message-'0':TOLOWER(*message)-'a'+10); if(ISXDIGIT(*message)){ @@ -399,7 +348,7 @@ ACMD_FUNC(send) ++message; CHECK_EOS(message); } - + // terminate the string if(off < end) {// fill the rest with 0's @@ -409,11 +358,11 @@ ACMD_FUNC(send) } else {// unknown PARSE_ERROR(msg_txt(908),message); // Unknown type of value in: - return -1; + return false; } SKIP_VALUE(message); } - + if(packet_db[type].len == -1) {// send dynamic packet WFIFOW(fd,2)=TOW(off); WFIFOSET(fd,off); @@ -424,11 +373,11 @@ ACMD_FUNC(send) } } else { clif->message(fd, msg_txt(259)); // Invalid packet - return -1; + return false; } sprintf (atcmd_output, msg_txt(258), type, type); // Sent packet 0x%x (%d) clif->message(fd, atcmd_output); - return 0; + return true; #undef PARSE_ERROR #undef CHECK_EOS #undef SKIP_VALUE @@ -438,34 +387,34 @@ ACMD_FUNC(send) /*========================================== * @rura, @warp, @mapmove *------------------------------------------*/ -ACMD_FUNC(mapmove) +ACMD(mapmove) { char map_name[MAP_NAME_LENGTH_EXT]; unsigned short mapindex; short x = 0, y = 0; int16 m = -1; - + nullpo_retr(-1, sd); - + memset(map_name, '\0', sizeof(map_name)); - + if (!message || !*message || (sscanf(message, "%15s %hd %hd", map_name, &x, &y) < 3 && sscanf(message, "%15[^,],%hd,%hd", map_name, &x, &y) < 1)) { - + clif->message(fd, msg_txt(909)); // Please enter a map (usage: @warp/@rura/@mapmove ). - return -1; - } - + return false; + } + mapindex = mapindex_name2id(map_name); if (mapindex) m = map_mapindex2mapid(mapindex); - + if (!mapindex) { // m < 0 means on different server! [Kevin] clif->message(fd, msg_txt(1)); // Map not found. - return -1; + return false; } - + if ((x || y) && map_getcell(m, x, y, CELL_CHKNOPASS)) { //This is to prevent the pc_setpos call from printing an error. clif->message(fd, msg_txt(2)); @@ -474,138 +423,138 @@ ACMD_FUNC(mapmove) } if (map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(247)); - return -1; + return false; } if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(248)); - return -1; + return false; } if (pc_setpos(sd, mapindex, x, y, CLR_TELEPORT) != 0) { clif->message(fd, msg_txt(1)); // Map not found. - return -1; + return false; } - + clif->message(fd, msg_txt(0)); // Warped. - return 0; + return true; } /*========================================== * Displays where a character is. Corrected version by Silent. [Skotlex] *------------------------------------------*/ -ACMD_FUNC(where) +ACMD(where) { struct map_session_data* pl_sd; - + nullpo_retr(-1, sd); memset(atcmd_player_name, '\0', sizeof atcmd_player_name); - + if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { clif->message(fd, msg_txt(910)); // Please enter a player name (usage: @where ). - return -1; + return false; } - + pl_sd = map_nick2sd(atcmd_player_name); if (pl_sd == NULL || strncmp(pl_sd->status.name, atcmd_player_name, NAME_LENGTH) != 0 || (pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) && pc_get_group_level(pl_sd) > pc_get_group_level(sd) && !pc_has_permission(sd, PC_PERM_WHO_DISPLAY_AID)) - ) { + ) { clif->message(fd, msg_txt(3)); // Character not found. - return -1; + return false; } - + snprintf(atcmd_output, sizeof atcmd_output, "%s %s %d %d", pl_sd->status.name, mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y); clif->message(fd, atcmd_output); - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(jumpto) +ACMD(jumpto) { struct map_session_data *pl_sd = NULL; - + nullpo_retr(-1, sd); - + if (!message || !*message) { clif->message(fd, msg_txt(911)); // Please enter a player name (usage: @jumpto/@warpto/@goto ). - return -1; + return false; } - + if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. - return -1; + return false; } - + if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(247)); // You are not authorized to warp to this map. - return -1; + return false; } - + if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map. - return -1; + return false; } - + if( pc_isdead(sd) ) { clif->message(fd, msg_txt(664)); - return -1; + return false; } - + pc_setpos(sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT); sprintf(atcmd_output, msg_txt(4), pl_sd->status.name); // Jumped to %s clif->message(fd, atcmd_output); - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(jump) +ACMD(jump) { short x = 0, y = 0; - + nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + sscanf(message, "%hd %hd", &x, &y); - + if (map[sd->bl.m].flag.noteleport && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map. - return -1; + return false; } - + if( pc_isdead(sd) ) { clif->message(fd, msg_txt(664)); - return -1; + return false; } - + if ((x || y) && map_getcell(sd->bl.m, x, y, CELL_CHKNOPASS)) { //This is to prevent the pc_setpos call from printing an error. clif->message(fd, msg_txt(2)); if (!map_search_freecell(NULL, sd->bl.m, &x, &y, 10, 10, 1)) x = y = 0; //Invalid cell, use random spot. } - + pc_setpos(sd, sd->mapindex, x, y, CLR_TELEPORT); sprintf(atcmd_output, msg_txt(5), sd->bl.x, sd->bl.y); // Jumped to %d %d clif->message(fd, atcmd_output); - return 0; + return true; } /*========================================== * Display list of online characters with * various info. *------------------------------------------*/ -ACMD_FUNC(who) +ACMD(who) { struct map_session_data *pl_sd = NULL; struct s_mapiterator *iter = NULL; @@ -621,24 +570,24 @@ ACMD_FUNC(who) */ int display_type = 1; int map_id = -1; - + nullpo_retr(-1, sd); - + if (strstr(command, "map") != NULL) { if (sscanf(message, "%15s %23s", map_name, player_name) < 1 || (map_id = map_mapname2mapid(map_name)) < 0) map_id = sd->bl.m; } else { sscanf(message, "%23s", player_name); } - + if (strstr(command, "2") != NULL) display_type = 2; else if (strstr(command, "3") != NULL) display_type = 3; - + level = pc_get_group_level(sd); StringBuf_Init(&buf); - + iter = mapit_getallusers(); for (pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter)) { if (!((pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) || (pl_sd->sc.option & OPTION_INVISIBLE)) && pc_get_group_level(pl_sd) > level)) { // you can look only lower or same level @@ -651,7 +600,7 @@ ACMD_FUNC(who) if (pc_get_group_id(pl_sd) > 0) // Player title, if exists StringBuf_Printf(&buf, msg_txt(344), pc_group_id2name(pc_get_group_id(pl_sd))); // "(%s) " StringBuf_Printf(&buf, msg_txt(347), pl_sd->status.base_level, pl_sd->status.job_level, - job_name(pl_sd->status.class_)); // "| Lv:%d/%d | Job: %s" + job_name(pl_sd->status.class_)); // "| Lv:%d/%d | Job: %s" break; } case 3: { @@ -666,7 +615,7 @@ ACMD_FUNC(who) default: { struct party_data *p = party_search(pl_sd->status.party_id); struct guild *g = pl_sd->guild; - + StringBuf_Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s " if (pc_get_group_id(pl_sd) > 0) // Player title, if exists StringBuf_Printf(&buf, msg_txt(344), pc_group_id2name(pc_get_group_id(pl_sd))); // "(%s) " @@ -683,7 +632,7 @@ ACMD_FUNC(who) } } mapit_free(iter); - + if (map_id < 0) { if (count == 0) StringBuf_Printf(&buf, msg_txt(28)); // No player found. @@ -701,13 +650,13 @@ ACMD_FUNC(who) } clif->message(fd, StringBuf_Value(&buf)); StringBuf_Destroy(&buf); - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(whogm) +ACMD(whogm) { struct map_session_data* pl_sd; struct s_mapiterator* iter; @@ -717,28 +666,28 @@ ACMD_FUNC(whogm) char player_name[NAME_LENGTH]; struct guild *g; struct party_data *p; - + nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); memset(match_text, '\0', sizeof(match_text)); memset(player_name, '\0', sizeof(player_name)); - + if (sscanf(message, "%199[^\n]", match_text) < 1) strcpy(match_text, ""); for (j = 0; match_text[j]; j++) match_text[j] = TOLOWER(match_text[j]); - + count = 0; level = pc_get_group_level(sd); - + iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { pl_level = pc_get_group_level(pl_sd); if (!pl_level) continue; - + if (match_text[0]) { memcpy(player_name, pl_sd->status.name, NAME_LENGTH); @@ -756,28 +705,28 @@ ACMD_FUNC(whogm) count++; continue; } - + sprintf(atcmd_output, msg_txt(914), // Name: %s (GM:%d) | Location: %s %d %d - pl_sd->status.name, pl_level, - mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y); + pl_sd->status.name, pl_level, + mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y); clif->message(fd, atcmd_output); - + sprintf(atcmd_output, msg_txt(915), // BLvl: %d | Job: %s (Lvl: %d) - pl_sd->status.base_level, - job_name(pl_sd->status.class_), pl_sd->status.job_level); + pl_sd->status.base_level, + job_name(pl_sd->status.class_), pl_sd->status.job_level); clif->message(fd, atcmd_output); - + p = party_search(pl_sd->status.party_id); g = pl_sd->guild; - + sprintf(atcmd_output,msg_txt(916), // Party: '%s' | Guild: '%s' - p?p->party.name:msg_txt(917), g?g->name:msg_txt(917)); // None. - + p?p->party.name:msg_txt(917), g?g->name:msg_txt(917)); // None. + clif->message(fd, atcmd_output); count++; } mapit_free(iter); - + if (count == 0) clif->message(fd, msg_txt(150)); // No GM found. else if (count == 1) @@ -786,70 +735,70 @@ ACMD_FUNC(whogm) sprintf(atcmd_output, msg_txt(152), count); // %d GMs found. clif->message(fd, atcmd_output); } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(save) +ACMD(save) { nullpo_retr(-1, sd); - + pc_setsavepoint(sd, sd->mapindex, sd->bl.x, sd->bl.y); if (sd->status.pet_id > 0 && sd->pd) intif_save_petdata(sd->status.account_id, &sd->pd->pet); - + chrif_save(sd,0); - + clif->message(fd, msg_txt(6)); // Your save point has been changed. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(load) +ACMD(load) { int16 m; - + nullpo_retr(-1, sd); - + m = map_mapindex2mapid(sd->status.save_point.map); if (m >= 0 && map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(249)); // You are not authorized to warp to your save map. - return -1; + return false; } if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map. - return -1; + return false; } - + pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_OUTSIGHT); clif->message(fd, msg_txt(7)); // Warping to save point.. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(speed) +ACMD(speed) { int speed; - + nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if (!message || !*message || sscanf(message, "%d", &speed) < 1) { sprintf(atcmd_output, msg_txt(918), MIN_WALK_SPEED, MAX_WALK_SPEED); // Please enter a speed value (usage: @speed <%d-%d>). clif->message(fd, atcmd_output); - return -1; + return false; } - + if (speed < 0) { sd->base_status.speed = DEFAULT_WALK_SPEED; sd->state.permanent_speed = 0; // Remove lock when set back to default speed. @@ -859,100 +808,100 @@ ACMD_FUNC(speed) } status_calc_bl(&sd->bl, SCB_SPEED); clif->message(fd, msg_txt(8)); // Speed changed. - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(storage) +ACMD(storage) { nullpo_retr(-1, sd); - + if (sd->npc_id || sd->state.vending || sd->state.buyingstore || sd->state.trading || sd->state.storage_flag) - return -1; - + return false; + if (storage_storageopen(sd) == 1) { //Already open. clif->message(fd, msg_txt(250)); - return -1; + return false; } - + clif->message(fd, msg_txt(919)); // Storage opened. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(guildstorage) +ACMD(guildstorage) { nullpo_retr(-1, sd); - + if (!sd->status.guild_id) { clif->message(fd, msg_txt(252)); - return -1; + return false; } - + if (sd->npc_id || sd->state.vending || sd->state.buyingstore || sd->state.trading) - return -1; - + return false; + if (sd->state.storage_flag == 1) { clif->message(fd, msg_txt(250)); - return -1; + return false; } - + if (sd->state.storage_flag == 2) { clif->message(fd, msg_txt(251)); - return -1; + return false; } - + storage_guild_storageopen(sd); clif->message(fd, msg_txt(920)); // Guild storage opened. - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(option) +ACMD(option) { int param1 = 0, param2 = 0, param3 = 0; nullpo_retr(-1, sd); - + if (!message || !*message || sscanf(message, "%d %d %d", ¶m1, ¶m2, ¶m3) < 1 || param1 < 0 || param2 < 0 || param3 < 0) {// failed to match the parameters so inform the user of the options const char* text; - + // attempt to find the setting information for this command - text = atcommand_help_string( command ); - + text = atcommand_help_string( info ); + // notify the user of the requirement to enter an option clif->message(fd, msg_txt(921)); // Please enter at least one option. - + if( text ) {// send the help text associated with this command clif->message( fd, text ); } - - return -1; + + return false; } - + sd->sc.opt1 = param1; sd->sc.opt2 = param2; pc_setoption(sd, param3); - + clif->message(fd, msg_txt(9)); // Options changed. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(hide) +ACMD(hide) { nullpo_retr(-1, sd); if (sd->sc.option & OPTION_INVISIBLE) { @@ -962,10 +911,10 @@ ACMD_FUNC(hide) else status_set_viewdata(&sd->bl, sd->status.class_); clif->message(fd, msg_txt(10)); // Invisible: Off - + // increment the number of pvp players on the map map[sd->bl.m].users_pvp++; - + if( map[sd->bl.m].flag.pvp && !map[sd->bl.m].flag.pvp_nocalcrank ) {// register the player for ranking calculations sd->pvp_timer = add_timer( gettick() + 200, pc_calc_pvprank_timer, sd->bl.id, 0 ); @@ -976,10 +925,10 @@ ACMD_FUNC(hide) sd->sc.option |= OPTION_INVISIBLE; sd->vd.class_ = INVISIBLE_CLASS; clif->message(fd, msg_txt(11)); // Invisible: On - + // decrement the number of pvp players on the map map[sd->bl.m].users_pvp--; - + if( map[sd->bl.m].flag.pvp && !map[sd->bl.m].flag.pvp_nocalcrank && sd->pvp_timer != INVALID_TIMER ) {// unregister the player for ranking delete_timer( sd->pvp_timer, pc_calc_pvprank_timer ); @@ -987,25 +936,25 @@ ACMD_FUNC(hide) } } clif->changeoption(&sd->bl); - - return 0; + + return true; } /*========================================== * Changes a character's class *------------------------------------------*/ -ACMD_FUNC(jobchange) +ACMD(jobchange) { int job = 0, upper = 0; const char* text; nullpo_retr(-1, sd); - + if (!message || !*message || sscanf(message, "%d %d", &job, &upper) < 1) { int i; bool found = false; - + upper = 0; - + // Normal Jobs for( i = JOB_NOVICE; i < JOB_MAX_BASIC && !found; i++ ){ if (strncmpi(message, job_name(i), 16) == 0) { @@ -1013,7 +962,7 @@ ACMD_FUNC(jobchange) found = true; } } - + // High Jobs, Babys and Third for( i = JOB_NOVICE_HIGH; i < JOB_MAX && !found; i++ ){ if (strncmpi(message, job_name(i), 16) == 0) { @@ -1021,85 +970,85 @@ ACMD_FUNC(jobchange) found = true; } } - + if (!found) { - text = atcommand_help_string(command); + text = atcommand_help_string(info); if (text) clif->message(fd, text); - return -1; + return false; } } - + if (job == JOB_KNIGHT2 || job == JOB_CRUSADER2 || job == JOB_WEDDING || job == JOB_XMAS || job == JOB_SUMMER || job == JOB_LORD_KNIGHT2 || job == JOB_PALADIN2 || job == JOB_BABY_KNIGHT2 || job == JOB_BABY_CRUSADER2 || job == JOB_STAR_GLADIATOR2 - || (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2) || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2) - ) // Deny direct transformation into dummy jobs - {clif->message(fd, msg_txt(923)); //"You can not change to this job by command." - return 0;} - + || (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2) || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2) + ) // Deny direct transformation into dummy jobs + {clif->message(fd, msg_txt(923)); //"You can not change to this job by command." + return true;} + if (pcdb_checkid(job)) { if (pc_jobchange(sd, job, upper) == 0) clif->message(fd, msg_txt(12)); // Your job has been changed. else { clif->message(fd, msg_txt(155)); // You are unable to change your job. - return -1; + return false; } } else { - text = atcommand_help_string(command); + text = atcommand_help_string(info); if (text) clif->message(fd, text); - return -1; + return false; } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(kill) +ACMD(kill) { nullpo_retr(-1, sd); status_kill(&sd->bl); clif->message(sd->fd, msg_txt(13)); // A pity! You've died. if (fd != sd->fd) clif->message(fd, msg_txt(14)); // Character killed. - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(alive) +ACMD(alive) { nullpo_retr(-1, sd); if (!status_revive(&sd->bl, 100, 100)) { clif->message(fd, msg_txt(667)); - return -1; + return false; } clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1); clif->message(fd, msg_txt(16)); // You've been revived! It's a miracle! - return 0; + return true; } /*========================================== * +kamic [LuzZza] *------------------------------------------*/ -ACMD_FUNC(kami) +ACMD(kami) { unsigned long color=0; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if(*(command + 5) != 'c' && *(command + 5) != 'C') { if (!message || !*message) { clif->message(fd, msg_txt(980)); // Please enter a message (usage: @kami ). - return -1; + return false; } - + sscanf(message, "%199[^\n]", atcmd_output); if (strstr(command, "l") != NULL) clif->broadcast(&sd->bl, atcmd_output, strlen(atcmd_output) + 1, 0, ALL_SAMEMAP); @@ -1108,22 +1057,22 @@ ACMD_FUNC(kami) } else { if(!message || !*message || (sscanf(message, "%lx %199[^\n]", &color, atcmd_output) < 2)) { clif->message(fd, msg_txt(981)); // Please enter color and message (usage: @kamic ). - return -1; + return false; } - + if(color > 0xFFFFFF) { clif->message(fd, msg_txt(982)); // Invalid color. - return -1; + return false; } intif_broadcast2(atcmd_output, strlen(atcmd_output) + 1, color, 0x190, 12, 0, 0); } - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(heal) +ACMD(heal) { int hp = 0, sp = 0; // [Valaris] thanks to fov nullpo_retr(-1, sd); @@ -1133,30 +1082,30 @@ ACMD_FUNC(heal) // some overflow checks if( hp == INT_MIN ) hp++; if( sp == INT_MIN ) sp++; - + if ( hp == 0 && sp == 0 ) { if (!status_percent_heal(&sd->bl, 100, 100)) clif->message(fd, msg_txt(157)); // HP and SP have already been recovered. else clif->message(fd, msg_txt(17)); // HP, SP recovered. - return 0; + return true; } - + if ( hp > 0 && sp >= 0 ) { if(!status_heal(&sd->bl, hp, sp, 0)) clif->message(fd, msg_txt(157)); // HP and SP are already with the good value. else clif->message(fd, msg_txt(17)); // HP, SP recovered. - return 0; + return true; } - + if ( hp < 0 && sp <= 0 ) { status_damage(NULL, &sd->bl, -hp, -sp, 0, 0); clif->damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, 4, 0); clif->message(fd, msg_txt(156)); // HP or/and SP modified. - return 0; + return true; } - + //Opposing signs. if ( hp ) { if (hp > 0) @@ -1166,22 +1115,22 @@ ACMD_FUNC(heal) clif->damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, 4, 0); } } - + if ( sp ) { if (sp > 0) status_heal(&sd->bl, 0, sp, 0); else status_damage(NULL, &sd->bl, 0, -sp, 0, 0); } - + clif->message(fd, msg_txt(156)); // HP or/and SP modified. - return 0; + return true; } /*========================================== * @item command (usage: @item ) (modified by [Yor] for pet_egg) *------------------------------------------*/ -ACMD_FUNC(item) +ACMD(item) { char item_name[100]; int number = 0, item_id, flag = 0; @@ -1189,54 +1138,54 @@ ACMD_FUNC(item) struct item_data *item_data; int get_count, i; nullpo_retr(-1, sd); - + memset(item_name, '\0', sizeof(item_name)); - + if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1 && - sscanf(message, "%99s %d", item_name, &number) < 1 - )) { + sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1 && + sscanf(message, "%99s %d", item_name, &number) < 1 + )) { clif->message(fd, msg_txt(983)); // Please enter an item name or ID (usage: @item ). - return -1; + return false; } - + if (number <= 0) number = 1; - + if ((item_data = itemdb_searchname(item_name)) == NULL && (item_data = itemdb_exists(atoi(item_name))) == NULL) { clif->message(fd, msg_txt(19)); // Invalid item ID or name. - return -1; + return false; } - + item_id = item_data->nameid; get_count = number; //Check if it's stackable. if (!itemdb_isstackable2(item_data)) get_count = 1; - + for (i = 0; i < number; i += get_count) { // if not pet egg if (!pet_create_egg(sd, item_id)) { memset(&item_tmp, 0, sizeof(item_tmp)); item_tmp.nameid = item_id; item_tmp.identify = 1; - + if ((flag = pc_additem(sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) clif->additem(sd, 0, 0, flag); } } - + if (flag == 0) clif->message(fd, msg_txt(18)); // Item created. - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(item2) +ACMD(item2) { struct item item_tmp; struct item_data *item_data; @@ -1245,26 +1194,26 @@ ACMD_FUNC(item2) int identify = 0, refine = 0, attr = 0; int c1 = 0, c2 = 0, c3 = 0, c4 = 0; nullpo_retr(-1, sd); - + memset(item_name, '\0', sizeof(item_name)); - + if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 && - sscanf(message, "%99s %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 - )) { + sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 && + sscanf(message, "%99s %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 + )) { clif->message(fd, msg_txt(984)); // Please enter all parameters (usage: @item2 clif->message(fd, msg_txt(985)); // ). - return -1; + return false; } - + if (number <= 0) number = 1; - + item_id = 0; if ((item_data = itemdb_searchname(item_name)) != NULL || (item_data = itemdb_exists(atoi(item_name))) != NULL) item_id = item_data->nameid; - + if (item_id > 500) { int flag = 0; int loop, get_count, i; @@ -1299,59 +1248,59 @@ ACMD_FUNC(item2) if ((flag = pc_additem(sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) clif->additem(sd, 0, 0, flag); } - + if (flag == 0) clif->message(fd, msg_txt(18)); // Item created. } else { clif->message(fd, msg_txt(19)); // Invalid item ID or name. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(itemreset) +ACMD(itemreset) { int i; nullpo_retr(-1, sd); - + for (i = 0; i < MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount && sd->status.inventory[i].equip == 0) { pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_COMMAND); } } clif->message(fd, msg_txt(20)); // All of your items have been removed. - - return 0; + + return true; } /*========================================== * Atcommand @lvlup *------------------------------------------*/ -ACMD_FUNC(baselevelup) +ACMD(baselevelup) { int level=0, i=0, status_point=0; nullpo_retr(-1, sd); level = atoi(message); - + if (!message || !*message || !level) { clif->message(fd, msg_txt(986)); // Please enter a level adjustment (usage: @lvup/@blevel/@baselvlup ). - return -1; + return false; } - + if (level > 0) { if (sd->status.base_level >= pc_maxbaselv(sd)) { // check for max level by Valaris clif->message(fd, msg_txt(47)); // Base level can't go any higher. - return -1; + return false; } // End Addition if ((unsigned int)level > pc_maxbaselv(sd) || (unsigned int)level > pc_maxbaselv(sd) - sd->status.base_level) // fix positiv overflow level = pc_maxbaselv(sd) - sd->status.base_level; for (i = 0; i < level; i++) status_point += pc_gets_status_point(sd->status.base_level + i); - + sd->status.status_point += status_point; sd->status.base_level += (unsigned int)level; status_percent_heal(&sd->bl, 100, 100); @@ -1360,7 +1309,7 @@ ACMD_FUNC(baselevelup) } else { if (sd->status.base_level == 1) { clif->message(fd, msg_txt(158)); // Base level can't go any lower. - return -1; + return false; } level*=-1; if ((unsigned int)level >= sd->status.base_level) @@ -1385,27 +1334,27 @@ ACMD_FUNC(baselevelup) pc_baselevelchanged(sd); if(sd->status.party_id) party_send_levelup(sd); - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(joblevelup) +ACMD(joblevelup) { int level=0; nullpo_retr(-1, sd); - + level = atoi(message); - + if (!message || !*message || !level) { clif->message(fd, msg_txt(987)); // Please enter a level adjustment (usage: @joblvup/@jlevel/@joblvlup ). - return -1; + return false; } if (level > 0) { if (sd->status.job_level >= pc_maxjoblv(sd)) { clif->message(fd, msg_txt(23)); // Job level can't go any higher. - return -1; + return false; } if ((unsigned int)level > pc_maxjoblv(sd) || (unsigned int)level > pc_maxjoblv(sd) - sd->status.job_level) // fix positiv overflow level = pc_maxjoblv(sd) - sd->status.job_level; @@ -1416,7 +1365,7 @@ ACMD_FUNC(joblevelup) } else { if (sd->status.job_level == 1) { clif->message(fd, msg_txt(159)); // Job level can't go any lower. - return -1; + return false; } level *=-1; if ((unsigned int)level >= sd->status.job_level) // fix negativ overflow @@ -1436,60 +1385,54 @@ ACMD_FUNC(joblevelup) clif->updatestatus(sd, SP_NEXTJOBEXP); clif->updatestatus(sd, SP_SKILLPOINT); status_calc_pc(sd, 0); - - return 0; + + return true; } /*========================================== * @help *------------------------------------------*/ -ACMD_FUNC(help) -{ - config_setting_t *help; - const char *text = NULL; +ACMD(help) { const char *command_name = NULL; char *default_command = "help"; - + AtCommandInfo *tinfo = NULL; + nullpo_retr(-1, sd); - - help = config_lookup(&atcommand_config, "help"); - if (help == NULL) { - clif->message(fd, msg_txt(27)); // "Commands help is not available." - return -1; - } - + if (!message || !*message) { command_name = default_command; // If no command_name specified, display help for @help. } else { - if (*message == atcommand_symbol || *message == charcommand_symbol) + if (*message == atcommand->at_symbol || *message == atcommand->char_symbol) ++message; command_name = atcommand_checkalias(message); } - - if (!pc_can_use_command(sd, command_name, COMMAND_ATCOMMAND)) { + + if (!atcommand->can_use2(sd, command_name, COMMAND_ATCOMMAND)) { sprintf(atcmd_output, msg_txt(153), message); // "%s is Unknown Command" clif->message(fd, atcmd_output); atcommand_get_suggestions(sd, command_name, true); - return -1; + return false; } - - if (!config_setting_lookup_string(help, command_name, &text)) { - sprintf(atcmd_output, msg_txt(988), atcommand_symbol, command_name); // There is no help for %c%s. + + tinfo = get_atcommandinfo_byname(atcommand_checkalias(command_name)); + + if ( !tinfo || tinfo->help == NULL ) { + sprintf(atcmd_output, msg_txt(988), atcommand->at_symbol, command_name); // There is no help for %c%s. clif->message(fd, atcmd_output); atcommand_get_suggestions(sd, command_name, true); - return -1; + return false; } - - sprintf(atcmd_output, msg_txt(989), atcommand_symbol, command_name); // Help for command %c%s: + + sprintf(atcmd_output, msg_txt(989), atcommand->at_symbol, command_name); // Help for command %c%s: clif->message(fd, atcmd_output); - + { // Display aliases DBIterator* iter; AtCommandInfo *command_info; AliasInfo *alias_info = NULL; StringBuf buf; bool has_aliases = false; - + StringBuf_Init(&buf); StringBuf_AppendStr(&buf, msg_txt(990)); // Available aliases: command_info = get_atcommandinfo_byname(command_name); @@ -1505,10 +1448,10 @@ ACMD_FUNC(help) clif->message(fd, StringBuf_Value(&buf)); StringBuf_Destroy(&buf); } - + // Display help contents - clif->message(fd, text); - return 0; + clif->message(fd, tinfo->help); + return true; } // helper function, used in foreach calls to stop auto-attack timers @@ -1538,18 +1481,18 @@ static int atcommand_pvpoff_sub(struct block_list *bl,va_list ap) return 0; } -ACMD_FUNC(pvpoff) +ACMD(pvpoff) { nullpo_retr(-1, sd); - + if (!map[sd->bl.m].flag.pvp) { clif->message(fd, msg_txt(160)); // PvP is already Off. - return -1; + return false; } - + map_zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); map[sd->bl.m].flag.pvp = 0; - + if (!battle_config.pk_mode) { clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); @@ -1557,7 +1500,7 @@ ACMD_FUNC(pvpoff) map_foreachinmap(atcommand_pvpoff_sub,sd->bl.m, BL_PC); map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0); clif->message(fd, msg_txt(31)); // PvP: Off. - return 0; + return true; } /*========================================== @@ -1577,61 +1520,61 @@ static int atcommand_pvpon_sub(struct block_list *bl,va_list ap) return 0; } -ACMD_FUNC(pvpon) +ACMD(pvpon) { nullpo_retr(-1, sd); - + if (map[sd->bl.m].flag.pvp) { clif->message(fd, msg_txt(161)); // PvP is already On. - return -1; + return false; } map_zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME)); map[sd->bl.m].flag.pvp = 1; - + if (!battle_config.pk_mode) {// display pvp circle and rank clif->map_property_mapall(sd->bl.m, MAPPROPERTY_FREEPVPZONE); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); map_foreachinmap(atcommand_pvpon_sub,sd->bl.m, BL_PC); } - + clif->message(fd, msg_txt(32)); // PvP: On. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(gvgoff) +ACMD(gvgoff) { nullpo_retr(-1, sd); - + if (!map[sd->bl.m].flag.gvg) { clif->message(fd, msg_txt(162)); // GvG is already Off. - return -1; + return false; } - + map_zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); map[sd->bl.m].flag.gvg = 0; clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0); clif->message(fd, msg_txt(33)); // GvG: Off. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(gvgon) +ACMD(gvgon) { nullpo_retr(-1, sd); - + if (map[sd->bl.m].flag.gvg) { clif->message(fd, msg_txt(163)); // GvG is already On. - return -1; + return false; } map_zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME)); @@ -1639,133 +1582,133 @@ ACMD_FUNC(gvgon) clif->map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); clif->message(fd, msg_txt(34)); // GvG: On. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(model) +ACMD(model) { int hair_style = 0, hair_color = 0, cloth_color = 0; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if (!message || !*message || sscanf(message, "%d %d %d", &hair_style, &hair_color, &cloth_color) < 1) { sprintf(atcmd_output, msg_txt(991), // Please enter at least one value (usage: @model ). MIN_HAIR_STYLE, MAX_HAIR_STYLE, MIN_HAIR_COLOR, MAX_HAIR_COLOR, MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); clif->message(fd, atcmd_output); - return -1; + return false; } - + if (hair_style >= MIN_HAIR_STYLE && hair_style <= MAX_HAIR_STYLE && hair_color >= MIN_HAIR_COLOR && hair_color <= MAX_HAIR_COLOR && cloth_color >= MIN_CLOTH_COLOR && cloth_color <= MAX_CLOTH_COLOR) { - pc_changelook(sd, LOOK_HAIR, hair_style); - pc_changelook(sd, LOOK_HAIR_COLOR, hair_color); - pc_changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); - clif->message(fd, msg_txt(36)); // Appearence changed. + pc_changelook(sd, LOOK_HAIR, hair_style); + pc_changelook(sd, LOOK_HAIR_COLOR, hair_color); + pc_changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); + clif->message(fd, msg_txt(36)); // Appearence changed. } else { clif->message(fd, msg_txt(37)); // An invalid number was specified. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * @dye && @ccolor *------------------------------------------*/ -ACMD_FUNC(dye) +ACMD(dye) { int cloth_color = 0; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if (!message || !*message || sscanf(message, "%d", &cloth_color) < 1) { sprintf(atcmd_output, msg_txt(992), MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); // Please enter a clothes color (usage: @dye/@ccolor ). clif->message(fd, atcmd_output); - return -1; + return false; } - + if (cloth_color >= MIN_CLOTH_COLOR && cloth_color <= MAX_CLOTH_COLOR) { pc_changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); clif->message(fd, msg_txt(36)); // Appearence changed. } else { clif->message(fd, msg_txt(37)); // An invalid number was specified. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * @hairstyle && @hstyle *------------------------------------------*/ -ACMD_FUNC(hair_style) +ACMD(hair_style) { int hair_style = 0; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if (!message || !*message || sscanf(message, "%d", &hair_style) < 1) { sprintf(atcmd_output, msg_txt(993), MIN_HAIR_STYLE, MAX_HAIR_STYLE); // Please enter a hair style (usage: @hairstyle/@hstyle ). clif->message(fd, atcmd_output); - return -1; + return false; } - + if (hair_style >= MIN_HAIR_STYLE && hair_style <= MAX_HAIR_STYLE) { - pc_changelook(sd, LOOK_HAIR, hair_style); - clif->message(fd, msg_txt(36)); // Appearence changed. + pc_changelook(sd, LOOK_HAIR, hair_style); + clif->message(fd, msg_txt(36)); // Appearence changed. } else { clif->message(fd, msg_txt(37)); // An invalid number was specified. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * @haircolor && @hcolor *------------------------------------------*/ -ACMD_FUNC(hair_color) +ACMD(hair_color) { int hair_color = 0; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if (!message || !*message || sscanf(message, "%d", &hair_color) < 1) { sprintf(atcmd_output, msg_txt(994), MIN_HAIR_COLOR, MAX_HAIR_COLOR); // Please enter a hair color (usage: @haircolor/@hcolor ). clif->message(fd, atcmd_output); - return -1; + return false; } - + if (hair_color >= MIN_HAIR_COLOR && hair_color <= MAX_HAIR_COLOR) { - pc_changelook(sd, LOOK_HAIR_COLOR, hair_color); - clif->message(fd, msg_txt(36)); // Appearence changed. + pc_changelook(sd, LOOK_HAIR_COLOR, hair_color); + clif->message(fd, msg_txt(36)); // Appearence changed. } else { clif->message(fd, msg_txt(37)); // An invalid number was specified. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * @go [city_number or city_name] - Updated by Harbin *------------------------------------------*/ -ACMD_FUNC(go) +ACMD(go) { int i; int town; char map_name[MAP_NAME_LENGTH]; int16 m; - + const struct { char map[MAP_NAME_LENGTH]; int x, y; @@ -1811,37 +1754,32 @@ ACMD_FUNC(go) { MAP_MALAYA, 242, 211 }, // 34=Malaya Port { MAP_ECLAGE, 110, 39 }, // 35=Eclage }; - + nullpo_retr(-1, sd); - - if( map[sd->bl.m].flag.nogo && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE) ) { - clif->message(sd->fd,msg_txt(995)); // You cannot use @go on this map. - return 0; - } - + memset(map_name, '\0', sizeof(map_name)); memset(atcmd_output, '\0', sizeof(atcmd_output)); - + // get the number town = atoi(message); - + if (!message || !*message || sscanf(message, "%11s", map_name) < 1 || town < 0 || town >= ARRAYLENGTH(data)) {// no value matched so send the list of locations const char* text; - + // attempt to find the text help string - text = atcommand_help_string( command ); - + text = atcommand_help_string( info ); + clif->message(fd, msg_txt(38)); // Invalid location number, or name. - + if( text ) {// send the text to the client clif->message( fd, text ); } - - return -1; + + return false; } - + // get possible name of the city map_name[MAP_NAME_LENGTH-1] = '\0'; for (i = 0; map_name[i]; i++) @@ -1930,36 +1868,36 @@ ACMD_FUNC(go) } else if (strncmp(map_name, "eclage", 3) == 0) { town = 35; } - + if (town >= 0 && town < ARRAYLENGTH(data)) { m = map_mapname2mapid(data[town].map); if (m >= 0 && map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(247)); - return -1; + return false; } if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(248)); - return -1; + return false; } if (pc_setpos(sd, mapindex_name2id(data[town].map), data[town].x, data[town].y, CLR_TELEPORT) == 0) { clif->message(fd, msg_txt(0)); // Warped. } else { clif->message(fd, msg_txt(1)); // Map not found. - return -1; + return false; } } else { // if you arrive here, you have an error in town variable when reading of names clif->message(fd, msg_txt(38)); // Invalid location number or name. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(monster) +ACMD(monster) { char name[NAME_LENGTH]; char monster[NAME_LENGTH]; @@ -1971,14 +1909,14 @@ ACMD_FUNC(monster) short mx, my; unsigned int size; nullpo_retr(-1, sd); - + memset(name, '\0', sizeof(name)); memset(monster, '\0', sizeof(monster)); memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if (!message || !*message) { - clif->message(fd, msg_txt(80)); // Give the display name or monster name/id please. - return -1; + clif->message(fd, msg_txt(80)); // Give the display name or monster name/id please. + return false; } if (sscanf(message, "\"%23[^\"]\" %23s %d", name, monster, &number) > 1 || sscanf(message, "%23s \"%23[^\"]\" %d", monster, name, &number) > 1) { @@ -1994,42 +1932,42 @@ ACMD_FUNC(monster) name[0] = '\0'; } else { clif->message(fd, msg_txt(80)); // Give a display name and monster name/id please. - return -1; + return false; } - + if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) mob_id = mobdb_checkid(atoi(monster)); - + if (mob_id == 0) { clif->message(fd, msg_txt(40)); // Invalid monster ID or name. - return -1; + return false; } - + if (mob_id == MOBID_EMPERIUM) { clif->message(fd, msg_txt(83)); // Monster 'Emperium' cannot be spawned. - return -1; + return false; } - + if (number <= 0) number = 1; - + if( !name[0] ) strcpy(name, "--ja--"); - + // If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive if (battle_config.atc_spawn_quantity_limit && number > battle_config.atc_spawn_quantity_limit) number = battle_config.atc_spawn_quantity_limit; - + if (strcmp(command+1, "monstersmall") == 0) size = SZ_MEDIUM; // This is just gorgeous [mkbu95] else if (strcmp(command+1, "monsterbig") == 0) size = SZ_BIG; else size = SZ_SMALL; - + if (battle_config.etc_log) ShowInfo("%s monster='%s' name='%s' id=%d count=%d (%d,%d)\n", command, monster, name, mob_id, number, sd->bl.x, sd->bl.y); - + count = 0; range = (int)sqrt((float)number) +2; // calculation of an odd number (+ 4 area around) for (i = 0; i < number; i++) { @@ -2037,7 +1975,7 @@ ACMD_FUNC(monster) k = mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, eventname, size, AI_NONE); count += (k != 0) ? 1 : 0; } - + if (count != 0) if (number == count) clif->message(fd, msg_txt(39)); // All monster summoned! @@ -2045,12 +1983,12 @@ ACMD_FUNC(monster) sprintf(atcmd_output, msg_txt(240), count); // %d monster(s) summoned! clif->message(fd, atcmd_output); } - else { - clif->message(fd, msg_txt(40)); // Invalid monster ID or name. - return -1; - } - - return 0; + else { + clif->message(fd, msg_txt(40)); // Invalid monster ID or name. + return false; + } + + return true; } /*========================================== @@ -2060,13 +1998,13 @@ static int atkillmonster_sub(struct block_list *bl, va_list ap) { struct mob_data *md; int flag; - + nullpo_ret(md=(struct mob_data *)bl); flag = va_arg(ap, int); - + if (md->guardian_data) return 0; //Do not touch WoE mobs! - + if (flag) status_zap(bl,md->status.hp, 0); else @@ -2074,41 +2012,41 @@ static int atkillmonster_sub(struct block_list *bl, va_list ap) return 1; } -ACMD_FUNC(killmonster) +ACMD(killmonster) { int map_id, drop_flag; char map_name[MAP_NAME_LENGTH_EXT]; nullpo_retr(-1, sd); - + memset(map_name, '\0', sizeof(map_name)); - + if (!message || !*message || sscanf(message, "%15s", map_name) < 1) map_id = sd->bl.m; else { if ((map_id = map_mapname2mapid(map_name)) < 0) map_id = sd->bl.m; } - + drop_flag = strcmp(command+1, "killmonster2"); - + map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, -drop_flag); - + clif->message(fd, msg_txt(165)); // All monsters killed! - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(refine) +ACMD(refine) { int i,j, position = 0, refine = 0, current_position, final_refine; int count; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if (!message || !*message || sscanf(message, "%d %d", &position, &refine) < 2) { clif->message(fd, msg_txt(996)); // Please enter a position and an amount (usage: @refine <+/- amount>). sprintf(atcmd_output, msg_txt(997), EQP_HEAD_LOW); // %d: Lower Headgear @@ -2131,11 +2069,11 @@ ACMD_FUNC(refine) clif->message(fd, atcmd_output); sprintf(atcmd_output, msg_txt(1006), EQP_HEAD_MID); // %d: Mid Headgear clif->message(fd, atcmd_output); - return -1; + return false; } - + refine = cap_value(refine, -MAX_REFINE, MAX_REFINE); - + count = 0; for (j = 0; j < EQI_MAX-1; j++) { if ((i = sd->equip_index[j]) < 0) @@ -2146,10 +2084,10 @@ ACMD_FUNC(refine) continue; if(j == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == i || sd->equip_index[EQI_HEAD_LOW] == i)) continue; - + if(position && !(sd->status.inventory[i].equip & position)) continue; - + final_refine = cap_value(sd->status.inventory[i].refine + refine, 0, MAX_REFINE); if (sd->status.inventory[i].refine != final_refine) { sd->status.inventory[i].refine = final_refine; @@ -2163,7 +2101,7 @@ ACMD_FUNC(refine) count++; } } - + if (count == 0) clif->message(fd, msg_txt(166)); // No item has been refined. else if (count == 1) @@ -2172,40 +2110,40 @@ ACMD_FUNC(refine) sprintf(atcmd_output, msg_txt(168), count); // %d items have been refined. clif->message(fd, atcmd_output); } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(produce) +ACMD(produce) { char item_name[100]; int item_id, attribute = 0, star = 0; struct item_data *item_data; struct item tmp_item; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); memset(item_name, '\0', sizeof(item_name)); - + if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d %d", item_name, &attribute, &star) < 1 && - sscanf(message, "%99s %d %d", item_name, &attribute, &star) < 1 - )) { + sscanf(message, "\"%99[^\"]\" %d %d", item_name, &attribute, &star) < 1 && + sscanf(message, "%99s %d %d", item_name, &attribute, &star) < 1 + )) { clif->message(fd, msg_txt(1007)); // Please enter at least one item name/ID (usage: @produce <# of very's>). - return -1; + return false; } - + if ( (item_data = itemdb_searchname(item_name)) == NULL && - (item_data = itemdb_exists(atoi(item_name))) == NULL ) { + (item_data = itemdb_exists(atoi(item_name))) == NULL ) { clif->message(fd, msg_txt(170)); //This item is not an equipment. - return -1; + return false; } - + item_id = item_data->nameid; - + if (itemdb_isequip2(item_data)) { int flag = 0; if (attribute < MIN_ATTRIBUTE || attribute > MAX_ATTRIBUTE) @@ -2218,33 +2156,33 @@ ACMD_FUNC(produce) tmp_item.identify = 1; tmp_item.card[0] = CARD0_FORGE; tmp_item.card[1] = item_data->type==IT_WEAPON? - ((star*5) << 8) + attribute:0; + ((star*5) << 8) + attribute:0; tmp_item.card[2] = GetWord(sd->status.char_id, 0); tmp_item.card[3] = GetWord(sd->status.char_id, 1); clif->produce_effect(sd, 0, item_id); clif->misceffect(&sd->bl, 3); - + if ((flag = pc_additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND))) clif->additem(sd, 0, 0, flag); } else { sprintf(atcmd_output, msg_txt(169), item_id, item_data->name); // The item (%d: '%s') is not equipable. clif->message(fd, atcmd_output); - return -1; + return false; } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(memo) +ACMD(memo) { int position = 0; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if( !message || !*message || sscanf(message, "%d", &position) < 1 ) { int i; @@ -2257,78 +2195,78 @@ ACMD_FUNC(memo) sprintf(atcmd_output, msg_txt(171), i); // %d - void clif->message(sd->fd, atcmd_output); } - return 0; + return true; } - + if( position < 0 || position >= MAX_MEMOPOINTS ) { sprintf(atcmd_output, msg_txt(1008), 0, MAX_MEMOPOINTS-1); // Please enter a valid position (usage: @memo ). clif->message(fd, atcmd_output); - return -1; + return false; } - + pc_memo(sd, position); - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(gat) +ACMD(gat) { int y; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + for (y = 2; y >= -2; y--) { sprintf(atcmd_output, "%s (x= %d, y= %d) %02X %02X %02X %02X %02X", - map[sd->bl.m].name, sd->bl.x - 2, sd->bl.y + y, - map_getcell(sd->bl.m, sd->bl.x - 2, sd->bl.y + y, CELL_GETTYPE), - map_getcell(sd->bl.m, sd->bl.x - 1, sd->bl.y + y, CELL_GETTYPE), - map_getcell(sd->bl.m, sd->bl.x, sd->bl.y + y, CELL_GETTYPE), - map_getcell(sd->bl.m, sd->bl.x + 1, sd->bl.y + y, CELL_GETTYPE), - map_getcell(sd->bl.m, sd->bl.x + 2, sd->bl.y + y, CELL_GETTYPE)); - + map[sd->bl.m].name, sd->bl.x - 2, sd->bl.y + y, + map_getcell(sd->bl.m, sd->bl.x - 2, sd->bl.y + y, CELL_GETTYPE), + map_getcell(sd->bl.m, sd->bl.x - 1, sd->bl.y + y, CELL_GETTYPE), + map_getcell(sd->bl.m, sd->bl.x, sd->bl.y + y, CELL_GETTYPE), + map_getcell(sd->bl.m, sd->bl.x + 1, sd->bl.y + y, CELL_GETTYPE), + map_getcell(sd->bl.m, sd->bl.x + 2, sd->bl.y + y, CELL_GETTYPE)); + clif->message(fd, atcmd_output); } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(displaystatus) +ACMD(displaystatus) { int i, type, flag, tick, val1 = 0, val2 = 0, val3 = 0; nullpo_retr(-1, sd); - + if (!message || !*message || (i = sscanf(message, "%d %d %d %d %d %d", &type, &flag, &tick, &val1, &val2, &val3)) < 1) { clif->message(fd, msg_txt(1009)); // Please enter a status type/flag (usage: @displaystatus { { {}}}). - return -1; + return false; } if (i < 2) flag = 1; if (i < 3) tick = 0; - + clif->status_change(&sd->bl, type, flag, tick, val1, val2, val3); - - return 0; + + return true; } /*========================================== * @stpoint (Rewritten by [Yor]) *------------------------------------------*/ -ACMD_FUNC(statuspoint) +ACMD(statuspoint) { int point; unsigned int new_status_point; - + if (!message || !*message || (point = atoi(message)) == 0) { clif->message(fd, msg_txt(1010)); // Please enter a number (usage: @stpoint ). - return -1; + return false; } - + if(point < 0) { if(sd->status.status_point < (unsigned int)(-point)) @@ -2348,7 +2286,7 @@ ACMD_FUNC(statuspoint) { new_status_point = sd->status.status_point + point; } - + if (new_status_point != sd->status.status_point) { sd->status.status_point = new_status_point; clif->updatestatus(sd, SP_STATUSPOINT); @@ -2358,26 +2296,26 @@ ACMD_FUNC(statuspoint) clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. else clif->message(fd, msg_txt(149)); // Unable to increase the number/value. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * @skpoint (Rewritten by [Yor]) *------------------------------------------*/ -ACMD_FUNC(skillpoint) +ACMD(skillpoint) { int point; unsigned int new_skill_point; nullpo_retr(-1, sd); - + if (!message || !*message || (point = atoi(message)) == 0) { clif->message(fd, msg_txt(1011)); // Please enter a number (usage: @skpoint ). - return -1; + return false; } - + if(point < 0) { if(sd->status.skill_point < (unsigned int)(-point)) @@ -2397,7 +2335,7 @@ ACMD_FUNC(skillpoint) { new_skill_point = sd->status.skill_point + point; } - + if (new_skill_point != sd->status.skill_point) { sd->status.skill_point = new_skill_point; clif->updatestatus(sd, SP_SKILLPOINT); @@ -2407,75 +2345,75 @@ ACMD_FUNC(skillpoint) clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. else clif->message(fd, msg_txt(149)); // Unable to increase the number/value. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * @zeny *------------------------------------------*/ -ACMD_FUNC(zeny) +ACMD(zeny) { int zeny=0, ret=-1; nullpo_retr(-1, sd); - + if (!message || !*message || (zeny = atoi(message)) == 0) { clif->message(fd, msg_txt(1012)); // Please enter an amount (usage: @zeny ). - return -1; + return false; } - + if(zeny > 0){ if((ret=pc_getzeny(sd,zeny,LOG_TYPE_COMMAND,NULL)) == 1) - clif->message(fd, msg_txt(149)); // Unable to increase the number/value. + clif->message(fd, msg_txt(149)); // Unable to increase the number/value. } else { if( sd->status.zeny < -zeny ) zeny = -sd->status.zeny; if((ret=pc_payzeny(sd,-zeny,LOG_TYPE_COMMAND,NULL)) == 1) - clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. + clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. } if(!ret) clif->message(fd, msg_txt(176)); //ret=0 mean cmd success - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(param) +ACMD(param) { int i, value = 0, new_value, max; const char* param[] = { "str", "agi", "vit", "int", "dex", "luk" }; short* status[6]; //we don't use direct initialization because it isn't part of the c standard. nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); - + if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) { clif->message(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>). - return -1; + return false; } - + ARR_FIND( 0, ARRAYLENGTH(param), i, strcmpi(command+1, param[i]) == 0 ); - + if( i == ARRAYLENGTH(param) || i > MAX_STATUS_TYPE) { // normally impossible... clif->message(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>). - return -1; + return false; } - + status[0] = &sd->status.str; status[1] = &sd->status.agi; status[2] = &sd->status.vit; status[3] = &sd->status.int_; status[4] = &sd->status.dex; status[5] = &sd->status.luk; - + if( battle_config.atcommand_max_stat_bypass ) max = SHRT_MAX; else max = pc_maxparameter(sd); - + if(value < 0 && *status[i] <= -value) { new_value = 1; } else if(max - *status[i] < value) { @@ -2483,7 +2421,7 @@ ACMD_FUNC(param) } else { new_value = *status[i] + value; } - + if (new_value != *status[i]) { *status[i] = new_value; clif->updatestatus(sd, SP_STR + i); @@ -2495,29 +2433,29 @@ ACMD_FUNC(param) clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. else clif->message(fd, msg_txt(149)); // Unable to increase the number/value. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * Stat all by fritz (rewritten by [Yor]) *------------------------------------------*/ -ACMD_FUNC(stat_all) +ACMD(stat_all) { int index, count, value, max, new_value; short* status[6]; //we don't use direct initialization because it isn't part of the c standard. nullpo_retr(-1, sd); - + status[0] = &sd->status.str; status[1] = &sd->status.agi; status[2] = &sd->status.vit; status[3] = &sd->status.int_; status[4] = &sd->status.dex; status[5] = &sd->status.luk; - + if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) { value = pc_maxparameter(sd); max = pc_maxparameter(sd); @@ -2527,17 +2465,17 @@ ACMD_FUNC(stat_all) else max = pc_maxparameter(sd); } - + count = 0; for (index = 0; index < ARRAYLENGTH(status); index++) { - + if (value > 0 && *status[index] > max - value) new_value = max; else if (value < 0 && *status[index] <= -value) new_value = 1; else new_value = *status[index] +value; - + if (new_value != (int)*status[index]) { *status[index] = new_value; clif->updatestatus(sd, SP_STR + index); @@ -2545,7 +2483,7 @@ ACMD_FUNC(stat_all) count++; } } - + if (count > 0) { // if at least 1 stat modified status_calc_pc(sd, 0); clif->message(fd, msg_txt(84)); // All stats changed! @@ -2554,268 +2492,268 @@ ACMD_FUNC(stat_all) clif->message(fd, msg_txt(177)); // You cannot decrease that stat anymore. else clif->message(fd, msg_txt(178)); // You cannot increase that stat anymore. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(guildlevelup) +ACMD(guildlevelup) { int level = 0; short added_level; struct guild *guild_info; nullpo_retr(-1, sd); - + if (!message || !*message || sscanf(message, "%d", &level) < 1 || level == 0) { clif->message(fd, msg_txt(1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>). - return -1; + return false; } - + if (sd->status.guild_id <= 0 || (guild_info = sd->guild) == NULL) { clif->message(fd, msg_txt(43)); // You're not in a guild. - return -1; + return false; } //if (strcmp(sd->status.name, guild_info->master) != 0) { // clif->message(fd, msg_txt(44)); // You're not the master of your guild. - // return -1; + // return false; //} - + added_level = (short)level; if (level > 0 && (level > MAX_GUILDLEVEL || added_level > ((short)MAX_GUILDLEVEL - guild_info->guild_lv))) // fix positiv overflow added_level = (short)MAX_GUILDLEVEL - guild_info->guild_lv; else if (level < 0 && (level < -MAX_GUILDLEVEL || added_level < (1 - guild_info->guild_lv))) // fix negativ overflow added_level = 1 - guild_info->guild_lv; - + if (added_level != 0) { intif_guild_change_basicinfo(guild_info->guild_id, GBI_GUILDLV, &added_level, sizeof(added_level)); clif->message(fd, msg_txt(179)); // Guild level changed. } else { clif->message(fd, msg_txt(45)); // Guild level change failed. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(makeegg) +ACMD(makeegg) { struct item_data *item_data; int id, pet_id; nullpo_retr(-1, sd); - + if (!message || !*message) { clif->message(fd, msg_txt(1015)); // Please enter a monster/egg name/ID (usage: @makeegg ). - return -1; + return false; } - + if ((item_data = itemdb_searchname(message)) != NULL) // for egg name id = item_data->nameid; else - if ((id = mobdb_searchname(message)) != 0) // for monster name - ; - else - id = atoi(message); - + if ((id = mobdb_searchname(message)) != 0) // for monster name + ; + else + id = atoi(message); + pet_id = search_petDB_index(id, PET_CLASS); if (pet_id < 0) pet_id = search_petDB_index(id, PET_EGG); if (pet_id >= 0) { sd->catch_target_class = pet_db[pet_id].class_; intif_create_pet( - sd->status.account_id, sd->status.char_id, - (short)pet_db[pet_id].class_, (short)mob_db(pet_db[pet_id].class_)->lv, - (short)pet_db[pet_id].EggID, 0, (short)pet_db[pet_id].intimate, - 100, 0, 1, pet_db[pet_id].jname); + sd->status.account_id, sd->status.char_id, + (short)pet_db[pet_id].class_, (short)mob_db(pet_db[pet_id].class_)->lv, + (short)pet_db[pet_id].EggID, 0, (short)pet_db[pet_id].intimate, + 100, 0, 1, pet_db[pet_id].jname); } else { clif->message(fd, msg_txt(180)); // The monster/egg name/id doesn't exist. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(hatch) +ACMD(hatch) { nullpo_retr(-1, sd); if (sd->status.pet_id <= 0) clif->sendegg(sd); else { clif->message(fd, msg_txt(181)); // You already have a pet. - return -1; + return false; } - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(petfriendly) +ACMD(petfriendly) { int friendly; struct pet_data *pd; nullpo_retr(-1, sd); - + if (!message || !*message || (friendly = atoi(message)) < 0) { clif->message(fd, msg_txt(1016)); // Please enter a valid value (usage: @petfriendly <0-1000>). - return -1; + return false; } - + pd = sd->pd; if (!pd) { clif->message(fd, msg_txt(184)); // Sorry, but you have no pet. - return -1; + return false; } - + if (friendly < 0 || friendly > 1000) { clif->message(fd, msg_txt(37)); // An invalid number was specified. - return -1; + return false; } - + if (friendly == pd->pet.intimate) { clif->message(fd, msg_txt(183)); // Pet intimacy is already at maximum. - return -1; + return false; } - + pet_set_intimate(pd, friendly); clif->send_petstatus(sd); clif->message(fd, msg_txt(182)); // Pet intimacy changed. - return 0; + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(pethungry) +ACMD(pethungry) { int hungry; struct pet_data *pd; nullpo_retr(-1, sd); - + if (!message || !*message || (hungry = atoi(message)) < 0) { clif->message(fd, msg_txt(1017)); // Please enter a valid number (usage: @pethungry <0-100>). - return -1; + return false; } - + pd = sd->pd; if (!sd->status.pet_id || !pd) { clif->message(fd, msg_txt(184)); // Sorry, but you have no pet. - return -1; + return false; } if (hungry < 0 || hungry > 100) { clif->message(fd, msg_txt(37)); // An invalid number was specified. - return -1; + return false; } if (hungry == pd->pet.hungry) { clif->message(fd, msg_txt(186)); // Pet hunger is already at maximum. - return -1; + return false; } - + pd->pet.hungry = hungry; clif->send_petstatus(sd); clif->message(fd, msg_txt(185)); // Pet hunger changed. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(petrename) +ACMD(petrename) { struct pet_data *pd; nullpo_retr(-1, sd); if (!sd->status.pet_id || !sd->pd) { clif->message(fd, msg_txt(184)); // Sorry, but you have no pet. - return -1; + return false; } pd = sd->pd; if (!pd->pet.rename_flag) { clif->message(fd, msg_txt(188)); // You can already rename your pet. - return -1; + return false; } - + pd->pet.rename_flag = 0; intif_save_petdata(sd->status.account_id, &pd->pet); clif->send_petstatus(sd); clif->message(fd, msg_txt(187)); // You can now rename your pet. - - return 0; + + return true; } /*========================================== * *------------------------------------------*/ -ACMD_FUNC(recall) { +ACMD(recall) { struct map_session_data *pl_sd = NULL; - + nullpo_retr(-1, sd); - + if (!message || !*message) { clif->message(fd, msg_txt(1018)); // Please enter a player name (usage: @recall ). - return -1; + return false; } - + if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. - return -1; + return false; } - + if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) { clif->message(fd, msg_txt(81)); // Your GM level doesn't authorize you to preform this action on the specified player. - return -1; + return false; } - + if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(1019)); // You are not authorized to warp someone to this map. - return -1; + return false; } if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(1020)); // You are not authorized to warp this player from their map. - return -1; + return false; } if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) { - return -1; + return false; } pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); sprintf(atcmd_output, msg_txt(46), pl_sd->status.name); // %s recalled! clif->message(fd, atcmd_output); - - return 0; + + return true; } /*========================================== * charblock command (usage: charblock ) * This command do a definitiv ban on a player *------------------------------------------*/ -ACMD_FUNC(char_block) +ACMD(char_block) { nullpo_retr(-1, sd); - + memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); - + if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { clif->message(fd, msg_txt(1021)); // Please enter a player name (usage: @charblock/@block ). - return -1; + return false; } - + chrif_char_ask_name(sd->status.account_id, atcmd_player_name, 1, 0, 0, 0, 0, 0, 0); // type: 1 - block clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it. - - return 0; + + return true; } /*========================================== @@ -2833,24 +2771,24 @@ ACMD_FUNC(char_block) * @ban +1m-2mn1s-6y test_player * this example adds 1 month and 1 second, and substracts 2 minutes and 6 years at the same time. *------------------------------------------*/ -ACMD_FUNC(char_ban) +ACMD(char_ban) { char * modif_p; int year, month, day, hour, minute, second, value; time_t timestamp; struct tm *tmtime; nullpo_retr(-1, sd); - + memset(atcmd_output, '\0', sizeof(atcmd_output)); memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); - + if (!message || !*message || sscanf(message, "%255s %23[^\n]", atcmd_output, atcmd_player_name) < 2) { clif->message(fd, msg_txt(1022)); // Please enter ban time and a player name (usage: @charban/@ban/@banish/@charbanish