This commit is contained in:
Deadly Silence 2013-07-24 23:27:42 +02:00
commit 489dda35cc
27 changed files with 2494 additions and 181 deletions

2
.gitignore vendored
View File

@ -23,6 +23,7 @@
/Makefile.cache /Makefile.cache
/map-server_sql /map-server_sql
/mapcache /mapcache
/nbproject
# /3rdparty/libconfig/ # /3rdparty/libconfig/
/3rdparty/libconfig/Makefile /3rdparty/libconfig/Makefile
@ -34,6 +35,7 @@
# /conf/ # /conf/
/conf/import /conf/import
/conf/msg_conf/import
# /log/ # /log/
/log/*.log /log/*.log

View File

@ -1707,7 +1707,7 @@ packet_ver: 30
0x089c,26,friendslistadd,2 0x089c,26,friendslistadd,2
0x0885,5,hommenu,2:4 0x0885,5,hommenu,2:4
0x0961,36,storagepassword,2:4:20 0x0961,36,storagepassword,2:4:20
0x0288,-1,cashshopbuy,2:4:6:10 0x0288,-1,cashshopbuy,2:4:8:10
0x091c,26,partyinvite2,2 0x091c,26,partyinvite2,2
0x094b,19,wanttoconnection,2:6:10:14:18 0x094b,19,wanttoconnection,2:6:10:14:18
0x0369,7,actionrequest,2:6 0x0369,7,actionrequest,2:6
@ -1816,7 +1816,7 @@ packet_ver: 34
0x0447,2,booking_playcancel,0 0x0447,2,booking_playcancel,0
0x044A,6,clientversion,2 0x044A,6,clientversion,2
0x0844,2,cashshopopen,0 0x0844,2,cashshopopen,0
0x0848,-1,cashshopbuy,2:4:6:10 0x0848,-1,cashshopbuy,2:6:4:10
0x084a,2,cashshopclose,0 0x084a,2,cashshopclose,0
0x084b,19 //fallitem4 0x084b,19 //fallitem4
0x085a,90,useskilltoposinfo,2:4:6:8:10 0x085a,90,useskilltoposinfo,2:4:6:8:10

View File

@ -14,4 +14,4 @@
8,Buwaya Cave,3600,1@ma_c,35,57,1@ma_c 8,Buwaya Cave,3600,1@ma_c,35,57,1@ma_c
9,Bakonawa Lake,7200,1@ma_b,64,51,1@ma_b 9,Bakonawa Lake,7200,1@ma_b,64,51,1@ma_b
//10,Wolfchev's Laboratory,14400,1@lhz,45,148,1@lhz //10,Wolfchev's Laboratory,14400,1@lhz,45,148,1@lhz
//11,Old Glast Heim,3600,1@gl_k,150,20,1@gl_k,2@gl_k 11,Old Glast Heim,3600,1@gl_k,150,20,1@gl_k,2@gl_k

View File

@ -4114,6 +4114,7 @@
6583,3rd_Test_Pass,3rd Test Pass,3,0,,0,,,,,,,,,,,,,{},{},{} 6583,3rd_Test_Pass,3rd Test Pass,3,0,,0,,,,,,,,,,,,,{},{},{}
6593,Cryptura_Hair_Coupon,Cryptura Hair Coupon,3,0,,0,,,,,,,,,,,,,{},{},{} 6593,Cryptura_Hair_Coupon,Cryptura Hair Coupon,3,0,,0,,,,,,,,,,,,,{},{},{}
6606,P_Cart_C,P Cart C,3,0,,10,,,,,,,,,,,,,{},{},{} 6606,P_Cart_C,P Cart C,3,0,,10,,,,,,,,,,,,,{},{},{}
6608,Coagulated_Spell,Coagulated Spell,3,0,,10,,,,,,,,,,,,,{},{},{}
6616,Lmtd_Manny_Card,Lmtd Manny Card,3,20,,10,,,,,,,,,,,,,{},{},{} 6616,Lmtd_Manny_Card,Lmtd Manny Card,3,20,,10,,,,,,,,,,,,,{},{},{}
6617,Lmtd_Sid_Card,Lmtd Sid Card,3,20,,10,,,,,,,,,,,,,{},{},{} 6617,Lmtd_Sid_Card,Lmtd Sid Card,3,20,,10,,,,,,,,,,,,,{},{},{}
6618,Lmtd_Diego_Card,Lmtd Diego Card,3,20,,10,,,,,,,,,,,,,{},{},{} 6618,Lmtd_Diego_Card,Lmtd Diego Card,3,20,,10,,,,,,,,,,,,,{},{},{}
@ -7758,17 +7759,17 @@
16691,Scorpius_Scroll,Scorpius Scroll,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 16691,Scorpius_Scroll,Scorpius Scroll,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
// //
16740,Ptotection_Seagod_Box,The Sea God's Call 23 Hour Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 6436,86400; },{},{} 16740,Ptotection_Seagod_Box,The Sea God's Call 23 Hour Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 6436,86400; },{},{}
16741,Hairtail_Box1,Cutlass 1 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 1198,86400; },{},{} 16741,Hairtail_Box1,Cutlass 1 Hour Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 1198,3600; },{},{}
16742,Hairtail_Box2,Cutlass 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 1198,604800; },{},{} 16742,Hairtail_Box2,Cutlass 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 1198,604800; },{},{}
16743,Spearfish_Box1,Marlin 1 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 1489,86400; },{},{} 16743,Spearfish_Box1,Marlin 1 Hour Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 1489,3600; },{},{}
16744,Spearfish_Box2,Marlin 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 1489,604800; },{},{} 16744,Spearfish_Box2,Marlin 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 1489,604800; },{},{}
16745,Saurel_Box1,Pompano 1 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 13068,86400; },{},{} 16745,Saurel_Box1,Pompano 1 Hour Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 13068,3600; },{},{}
16746,Saurel_Box2,Pompano 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 13068,604800; },{},{} 16746,Saurel_Box2,Pompano 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 13068,604800; },{},{}
16747,Tuna_Box1,Tuna 1 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 16016,86400; },{},{} 16747,Tuna_Box1,Tuna 1 Hour Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 16016,3600; },{},{}
16748,Tuna_Box2,Tuna 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 16016,604800; },{},{} 16748,Tuna_Box2,Tuna 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 16016,604800; },{},{}
16749,Malang_Crab_Box1,Malangdo Crab 1 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 18107,86400; },{},{} 16749,Malang_Crab_Box1,Malangdo Crab 1 Hour Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 18107,3600; },{},{}
16750,Malang_Crab_Box2,Malangdo Crab 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 18107,604800; },{},{} 16750,Malang_Crab_Box2,Malangdo Crab 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 18107,604800; },{},{}
16751,Brindle_Eel_Box1,Zebra Eel 1 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 18108,86400; },{},{} 16751,Brindle_Eel_Box1,Zebra Eel 1 Hour Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 18108,3600; },{},{}
16752,Brindle_Eel_Box2,Zebra Eel 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 18108,604800; },{},{} 16752,Brindle_Eel_Box2,Zebra Eel 7 Day Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 18108,604800; },{},{}
16753,Unbreak_Weap_Box,Unbreakable Weapon Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6438,1; },{},{} 16753,Unbreak_Weap_Box,Unbreakable Weapon Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6438,1; },{},{}
16754,F_Unbreak_Weap_Box,Unbreakable Weapon Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6438,1; },{},{} 16754,F_Unbreak_Weap_Box,Unbreakable Weapon Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6438,1; },{},{}

View File

@ -1615,19 +1615,22 @@
//2461,TREASURE_BOX_TE_9 //2461,TREASURE_BOX_TE_9
//2462,TREASURE_BOX_TE_10 //2462,TREASURE_BOX_TE_10
//2463,E_BOMBPORING //2463,E_BOMBPORING
//2464,MG_ZOMBIE
//2465,MG_WRAITH // Old Glast Heim (currently placeholders)
//2466,MG_GHOUL 2464,MG_ZOMBIE,Zombie,Zombie,17,9340,1,117,87,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,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
//2467,MG_ARCLOUSE 2465,MG_WRAITH,Wraith,Wraith,77,23168,1,1190,1191,1,335,396,80,40,62,26,30,55,76,5,10,12,2,1,89,0x3695,300,1816,576,240,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
//2468,MG_RAYDRIC 2466,MG_GHOUL,Ghoul,Ghoul,61,12614,1,583,656,1,216,245,78,5,56,12,19,11,27,10,10,12,1,1,49,0x3885,250,2456,912,504,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
//2469,MG_RAYDRIC_ARCHER 2467,MG_ARCLOUSE,Arclouse,Arclouze,107,14020,1,1844,2607,1,269,309,101,36,60,73,45,35,140,15,10,12,1,4,42,0x3195,100,960,500,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
//2470,MG_KNIGHT_OF_ABYSS 2468,MG_RAYDRIC,Raydric,Raydric,115,25408,1,20770,2076,1,572,668,89,15,129,87,55,32,76,27,10,12,2,7,47,0x3095,150,824,780,420,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
//2471,MG_KHALITZBURG 2469,MG_RAYDRIC_ARCHER,Raydric Archer,Raydric Archer,82,30370,1,1049,1332,9,377,395,63,40,53,24,40,15,112,30,10,12,1,6,47,0x2185,200,1152,1152,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
//2472,MG_BLOODY_KNIGHT 2470,MG_KNIGHT_OF_ABYSS,Knight of Abyss,Abysmal Knight,122,332970,1,4779,4013,1,810,1002,102,50,121,55,68,70,97,37,10,12,2,7,87,0x3695,300,1500,500,1000,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
//2473,MG_M_UNDEAD_KNIGHT 2471,MG_KHALITZBURG,Khalitzburg,Khalitzburg,118,109860,1,2862,2147,1,737,833,125,10,121,48,40,31,89,32,10,12,2,1,29,0x3695,350,528,1000,396,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
//2474,MG_F_UNDEAD_KNIGHT 2472,MG_BLOODY_KNIGHT,Bloody Knight,Bloody Knight,116,285000,1,7348,6511,3,942,1065,122,50,132,59,70,57,98,45,10,12,2,0,87,0x3695,250,828,528,192,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
//2475,MG_CORRUPTION_ROOT 2473,MG_M_UNDEAD_KNIGHT,Undead Knight,Undead Knight,133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x37B5,170,140,384,288,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
//2476,MG_AMDARAIS 2474,MG_F_UNDEAD_KNIGHT,Undead Knight,Undead Knight,133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x37B5,170,140,384,288,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
2475,MG_CORRUPTION_ROOT,Root of Corruption,Root of Corruption,136,3190000,1,240120,187920,3,710,1762,213,123,86,89,120,131,101,92,14,12,2,7,62,0x1A4,170,854,2016,480,120060,607,5500,608,3500,732,5500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2476,MG_AMDARAIS,Amdarias,Amdarias,143,3283990,1,74288,77950,2,8860,10022,32,66,140,159,30,109,300,90,10,12,2,2,63,0x37B5,200,1152,1152,576,37144,617,5500,617,5000,616,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
//2477,NG_WANDER_MAN //2477,NG_WANDER_MAN
//2478,NG_RIDEWORD //2478,NG_RIDEWORD
//2479,NG_MIMIC //2479,NG_MIMIC

View File

@ -7999,3 +7999,45 @@
2362,Nightmare Amon Ra@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,, 2362,Nightmare Amon Ra@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
2362,Nightmare Amon Ra@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,, 2362,Nightmare Amon Ra@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,,
2362,Nightmare Amon Ra@AL_HEAL,idle,28,11,10000,0,10000,yes,self,myhpltmaxrate,50,,,,,,, 2362,Nightmare Amon Ra@AL_HEAL,idle,28,11,10000,0,10000,yes,self,myhpltmaxrate,50,,,,,,,
// Old Glast Heim (currently placeholders)
2464,MG Zombie@AL_HEAL,idle,28,10,10000,0,5000,yes,self,always,0,,,,,,,26
2464,MG Zombie@NPC_UNDEADATTACK,chase,347,10,8000,1000,5000,yes,target,always,0,,,,,,,
2465,MG Wraith@NPC_ENERGYDRAIN,attack,200,1,500,0,5000,yes,target,always,0,,,,,,,
2466,MG Ghoul@NPC_UNDEADATTACK,chase,347,10,8000,1000,5000,yes,target,always,0,,,,,,,
2467,MG Arclouse@NPC_GROUNDATTACK,attack,185,10,2000,0,5000,yes,target,always,0,,,,,,,
2468,MG Raydric@BS_MAXIMIZE,attack,114,5,500,1000,5000,no,self,always,0,,,,,,,
2468,MG Raydric@BS_MAXIMIZE,chase,114,5,500,1000,5000,no,self,always,0,,,,,,,
2468,MG Raydric@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,0,0,,,,,,
2468,MG Raydric@SM_MAGNUM,attack,7,9,500,500,5000,no,self,always,0,,,,,,6,
2468,MG Raydric@CR_AUTOGUARD,chase,249,2,2000,0,300000,yes,self,longrangeattacked,,,,,,,,
2468,MG Raydric@CR_AUTOGUARD,attack,249,2,500,0,300000,yes,self,always,0,,,,,,,
2469,MG Raydric Archer@AC_CHARGEARROW,attack,148,1,500,0,5000,yes,target,always,0,,,,,,9,
2469,MG Raydric Archer@NPC_DARKNESSATTACK,attack,190,10,500,500,5000,no,target,always,0,,,,,,9,
2469,MG Raydric Archer@CR_AUTOGUARD,attack,249,2,500,0,300000,yes,self,always,0,,,,,,,
2470,MG Knight of Abyss@AC_CHARGEARROW,chase,148,1,500,0,5000,yes,target,always,0,,,,,,,
2470,MG Knight of Abyss@KN_BRANDISHSPEAR,attack,57,20,500,1000,5000,no,target,always,0,,,,,,9,
2470,MG Knight of Abyss@NPC_DARKNESSATTACK,attack,190,5,500,500,5000,no,target,always,0,,,,,,9,
2470,MG Knight of Abyss@CR_AUTOGUARD,chase,249,10,2000,0,300000,yes,self,longrangeattacked,,,,,,,,
2470,MG Knight of Abyss@CR_AUTOGUARD,attack,249,10,500,0,300000,yes,self,always,0,,,,,,,
2472,MG Bloody Knight@KN_BRANDISHSPEAR,attack,57,5,500,1000,5000,no,target,always,0,,,,,,9,
2472,MG Bloody Knight@NPC_CHANGEFIRE,attack,164,1,10000,2000,600000,no,self,myhpltmaxrate,20,,,,,,,
2472,MG Bloody Knight@NPC_DARKNESSATTACK,attack,190,2,500,500,5000,no,target,always,0,,,,,,9,
2472,MG Bloody Knight@CR_SHIELDCHARGE,attack,250,5,500,0,5000,yes,target,always,0,,,,,,9,
2472,MG Bloody Knight@WZ_METEOR,attack,83,5,2000,0,5000,no,target,myhpltmaxrate,20,,,,,,,
2472,MG Bloody Knight@WZ_METEOR,chase,83,5,2000,0,5000,no,target,myhpltmaxrate,20,,,,,,,
2472,MG Bloody Knight@NPC_WEAPONBRAKER,attack,343,5,500,0,30000,yes,target,always,0,,,,,,,
2475,MG_CORRUPTION_ROOT@NPC_HELLJUDGEMENT,idle,662,10,10000,4000,100,no,self,always,0,,,,,,36,
2475,MG_CORRUPTION_ROOT@NPC_HELLJUDGEMENT,attack,662,10,10000,1000,10000,no,self,always,0,,,,,,36,
2475,MG_CORRUPTION_ROOT@NPC_DARKSTRIKE,attack,340,10,2000,0,5000,yes,target,always,0,,,,,,,
2475,MG_CORRUPTION_ROOT@NPC_SILENCEATTACK,attack,178,10,2000,0,5000,no,target,always,0,,,,,,,
2475,MG_CORRUPTION_ROOT@NPC_PETRIFYATTACK,attack,180,5,500,500,5000,no,target,always,0,,,,,,3,
//2475,MG_CORRUPTION_ROOT@NPC_TALK,idle,682,10,10000,0,60000,no,self,myhpltmaxrate,100,,,,,,,41
2476,MG_AMDARAIS@NPC_DRAGONFEAR,chase,659,5,10000,0,30000,no,self,always,0,,,,,,6,
2476,MG_AMDARAIS@NPC_DRAGONFEAR,attack,659,5,2000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32,
2476,MG_AMDARAIS@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,,
2476,MG_AMDARAIS@NPC_FIREBREATH,attack,654,5,500,800,5000,no,target,always,0,,,,,,32,
2476,MG_AMDARAIS@NPC_DARKBREATH,attack,202,5,500,800,5000,no,target,always,0,,,,,,36,
2476,MG_AMDARAIS@NPC_WEAPONBRAKER,attack,343,10,500,0,30000,yes,target,always,0,,,,,,,
2476,MG_AMDARAIS@MG_FIREBALL,chase,17,20,5000,500,1000,no,target,always,0,,,,,,,
//2476,MG_AMDARAIS@NPC_TALK,idle,682,10,10000,0,60000,no,self,myhpltmaxrate,100,,,,,,,42

View File

@ -1305,9 +1305,9 @@
//-- NC_MAGNETICFIELD //-- NC_MAGNETICFIELD
2272,500:1000:1500,0,0,15000,0,20000:15000:10000,-1 2272,500:1000:1500,0,0,15000,0,20000:15000:10000,-1
//-- NC_NEUTRALBARRIER //-- NC_NEUTRALBARRIER
2273,500:1000:1500,0,0,30000:45000:60000,0,20000:15000:10000,-1 2273,0,0,0,30000:45000:60000,0,20000:15000:10000,500:1000:1500
//-- NC_STEALTHFIELD //-- NC_STEALTHFIELD
2274,500:1000:1500,0,0,15000:20000:25000,0,20000:15000:10000,-1 2274,0,0,0,15000:20000:25000,0,20000:15000:10000,500:1000:1500
//-- NC_REPAIR //-- NC_REPAIR
2275,200:300:400:500:600,1000,0,0,0,0,-1 2275,200:300:400:500:600,1000,0,0,0,0,-1

View File

@ -841,8 +841,8 @@
2270,0,6,4,0,0x3,7,1,1,yes,0,0,0,none,0, NC_INFRAREDSCAN,Infrared Scan 2270,0,6,4,0,0x3,7,1,1,yes,0,0,0,none,0, NC_INFRAREDSCAN,Infrared Scan
2271,9,6,1,0,0x1,0,3,1,yes,0,0,0,none,0, NC_ANALYZE,Analyze 2271,9,6,1,0,0x1,0,3,1,yes,0,0,0,none,0, NC_ANALYZE,Analyze
2272,0,6,4,0,0x3,1:2:3,3,1,yes,0,0,0,none,0, NC_MAGNETICFIELD,Magnetic Field 2272,0,6,4,0,0x3,1:2:3,3,1,yes,0,0,0,none,0, NC_MAGNETICFIELD,Magnetic Field
2273,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0, NC_NEUTRALBARRIER,Neutral Barrier 2273,0,6,4,0,0x1,0,3,1,yes,0,0x2000,0,none,0, NC_NEUTRALBARRIER,Neutral Barrier
2274,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0, NC_STEALTHFIELD,Stealth Field 2274,0,6,4,0,0x1,0,3,1,yes,0,0x2000,0,none,0, NC_STEALTHFIELD,Stealth Field
2275,5,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0, NC_REPAIR,Repair 2275,5,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0, NC_REPAIR,Repair
2276,0,0,0,0,0,0,10,0,no,0,0,0,none,0, NC_TRAININGAXE,Axe Training 2276,0,0,0,0,0,0,10,0,no,0,0,0,none,0, NC_TRAININGAXE,Axe Training
2277,0,0,0,0,0,0,5,0,no,0,0,0,none,0, NC_RESEARCHFE,Research Fire/Earth 2277,0,0,0,0,0,0,5,0,no,0,0,0,none,0, NC_RESEARCHFE,Research Fire/Earth

View File

@ -117,8 +117,8 @@
2253,0xd6, , 0, 1,1000,enemy, 0x002 //RA_FIRINGTRAP 2253,0xd6, , 0, 1,1000,enemy, 0x002 //RA_FIRINGTRAP
2254,0xd7, , 0, 1,1000,enemy, 0x002 //RA_ICEBOUNDTRAP 2254,0xd7, , 0, 1,1000,enemy, 0x002 //RA_ICEBOUNDTRAP
2273,0xe2, , 1, 0, 500,friend,0x000 //NC_NEUTRALBARRIER 2273,0xe2, , 2, 0, 500,friend,0x000 //NC_NEUTRALBARRIER
2274,0xe3, , 1, 0, 500,all, 0x000 //NC_STEALTHFIELD 2274,0xe3, , 2, 0, 500,all, 0x000 //NC_STEALTHFIELD
2299,0xcc, , 0, 1,1000,all, 0x006 //SC_MANHOLE 2299,0xcc, , 0, 1,1000,all, 0x006 //SC_MANHOLE
2300,0xcd, , 0, 1,1000,all, 0x006 //SC_DIMENSIONDOOR 2300,0xcd, , 0, 1,1000,all, 0x006 //SC_DIMENSIONDOOR

View File

@ -414,8 +414,8 @@ G6: Go("schg_dun01",200,124);
// -------------------------------------------------- // --------------------------------------------------
menu "Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3, menu "Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3,
"Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7,
"Nidhoggur's Nest",I7, "Octopus Cave",I8, "Orc's Memory",I9, "Sealed Shrine",I10; "Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I111;
I1: Restrict("RE"); I1: Restrict("RE");
Go("ma_scene01",172,175); Go("ma_scene01",172,175);
@ -431,8 +431,10 @@ I6: Restrict("RE");
I7: Go("nyd_dun02",95,193); I7: Go("nyd_dun02",95,193);
I8: Restrict("RE"); I8: Restrict("RE");
Go("mal_dun01",152,230); Go("mal_dun01",152,230);
I9: Go("gef_fild10",240,198); I9: Restrict("RE");
I10: Go("monk_test",306,143); Go("glast_01",204,268);
I10: Go("gef_fild10",240,198);
I11: Go("monk_test",306,143);
// -------------------------------------------------- // --------------------------------------------------
Special: Special:

View File

@ -4,7 +4,7 @@
//= Kalen - Original jAthena //= Kalen - Original jAthena
//= Fredzilla - Converted, Lupus //= Fredzilla - Converted, Lupus
//===== Current Version: ===================================== //===== Current Version: =====================================
//= 3.7 //= 3.7a
//===== Compatible With: ===================================== //===== Compatible With: =====================================
//= rAthena SVN //= rAthena SVN
//===== Description: ========================================= //===== Description: =========================================
@ -20,6 +20,7 @@
//= 3.6 Applied Correction bug with for loop. [L0ne_W0lf] //= 3.6 Applied Correction bug with for loop. [L0ne_W0lf]
//= 3.6a Fixed a little Exploit to bug the quest with a timeout. (bugreport:2252) [Samuray22] //= 3.6a Fixed a little Exploit to bug the quest with a timeout. (bugreport:2252) [Samuray22]
//= 3.7 Added Quest Log commands. [Kisuka] //= 3.7 Added Quest Log commands. [Kisuka]
//= 3.7a Fixed a label execution. [Euphy]
//============================================================ //============================================================
comodo,180,153,4 script Sonotora#1 90,{ comodo,180,153,4 script Sonotora#1 90,{
@ -1323,7 +1324,7 @@ OnDisable:
// Backup Dancers // Backup Dancers
//============================================================ //============================================================
job_duncer,63,110,4 script Backdancer#1::BackDancer 724,{ job_duncer,63,110,4 script Backdancer#1 724,{
end; end;
OnSmile: OnSmile:
@ -1400,3 +1401,4 @@ OnOmg:
//= Concentration' to 'Attention Concentrate' [Lupus] //= Concentration' to 'Attention Concentrate' [Lupus]
//= 3.0 Some optimization, typos, added missing dialogues (4Kb lighter) [Lupus] //= 3.0 Some optimization, typos, added missing dialogues (4Kb lighter) [Lupus]
//= 3.1 Implemented JOBLVL as in other quests [Lupus] //= 3.1 Implemented JOBLVL as in other quests [Lupus]
//============================================================

File diff suppressed because it is too large Load Diff

View File

@ -457,7 +457,7 @@ mora,99,93,5 script Artifact Crafter#pa0829 495,{
break; break;
} }
set .@item, .@items[(.@select-2)%4]; set .@item, .@items[(.@select-2)%4];
if (countitem(6380) == 0 || countitem(.@item) == 0) { if (countitem(6380) < 2 || countitem(.@item) == 0) {
mes "[Artifact Crafter]"; mes "[Artifact Crafter]";
mes "You have to have 2 Mora Coins and an item to be reinforced before I can do my work."; mes "You have to have 2 Mora Coins and an item to be reinforced before I can do my work.";
close; close;
@ -634,7 +634,7 @@ mora,148,98,3 script Artifact Researcher#new 521,{
} }
if (Zeny < 100000 || countitem(6380) == 0) { if (Zeny < 100000 || countitem(6380) == 0) {
mes "[Artifact Researcher]"; mes "[Artifact Researcher]";
mes "I'm not giving these services out for free pal. 100,000 zeny or 1 Mora Coin. Is that too much to ask?"; mes "I'm not giving these services out for free pal. 100,000 zeny and 1 Mora Coin. Is that too much to ask?";
close; close;
} }
mes "[Artifact Researcher]"; mes "[Artifact Researcher]";

View File

@ -3,7 +3,7 @@
//===== By: ================================================== //===== By: ==================================================
//= Gennosuke Kouga, Muad_Dib //= Gennosuke Kouga, Muad_Dib
//===== Current Version: ===================================== //===== Current Version: =====================================
//= 2.0 //= 2.1
//===== Compatible With: ===================================== //===== Compatible With: =====================================
//= rAthena SVN //= rAthena SVN
//===== Description: ========================================= //===== Description: =========================================
@ -30,6 +30,7 @@
//= 1.9 Updated "Fish Tails" with RE coordinates. //= 1.9 Updated "Fish Tails" with RE coordinates.
//= 1.9a Minor fix. [Joseph] //= 1.9a Minor fix. [Joseph]
//= 2.0 Fixed variables. [Joseph] //= 2.0 Fixed variables. [Joseph]
//= 2.1 Added reset option to "Kareka". [Euphy]
//============================================================ //============================================================
// Entrance // Entrance
@ -6924,8 +6925,37 @@ dic_in01,42,264,3 script Adventurer Clerk#ep133 453,{
mes "[Kareka]"; mes "[Kareka]";
mes "Do you want to upgrade the ^990099Light of El Dicastes^000000 again?"; mes "Do you want to upgrade the ^990099Light of El Dicastes^000000 again?";
next; next;
// The reset feature was disabled in previous versions.
//mes "[Kareka]";
//mes "Ha ha ha, that is out of the question. This item is very rare and valuable so I cannot give you a new one.";
//close;
mes "[Kareka]"; mes "[Kareka]";
mes "Ha ha ha, that is out of the question. This item is very rare and valuable so I cannot give you a new one."; mes "That will cost ^9900996 Sapha Certifications^000000 in order to retry.";
mes "And note this, your current Light of El Dicastes will be destroyed along with all of its enchantments.";
next;
mes "[Kareka]";
mes "Are you sure you want to do this?";
next;
if(select("No, let me think about it.:Take my Light of El Dicastes.") == 2) {
if (countitem(2844) == 0 || countitem(6304) < 6) {
mes "[Kareka]";
mes "You need to bring the Light of El Dicastes and 6 Sapha Certifications!";
mes "Don't try to cheat me!";
close;
}
mes "[Kareka]";
mes "Ok, let's get this started.";
mes "I'm going to remove all enchantments from your Light of El Dicastes.";
mes "Haaap--!";
specialeffect2 EF_REPAIRWEAPON;
progressbar "ffff00",3;
delitem 6304,6; //Sapa_Feat_Cert
delitem 2844,1; //El_Dicastes_Light
getitem 2844,1; //El_Dicastes_Light
set ep13_3_ring2,0;
}
close; close;
} }
if (countitem(6304) < 1) { if (countitem(6304) < 1) {

View File

@ -53,6 +53,7 @@ npc: npc/re/instances/BuwayaCave.txt
npc: npc/re/instances/HazyForest.txt npc: npc/re/instances/HazyForest.txt
npc: npc/re/instances/MalangdoCulvert.txt npc: npc/re/instances/MalangdoCulvert.txt
npc: npc/re/instances/OctopusCave.txt npc: npc/re/instances/OctopusCave.txt
npc: npc/re/instances/OldGlastHeim.txt
// ---------------- Kafras & Cool Event Corp. ------------------- // ---------------- Kafras & Cool Event Corp. -------------------
npc: npc/re/kafras/kafras.txt npc: npc/re/kafras/kafras.txt

View File

@ -3,7 +3,7 @@
//===== By: ================================================== //===== By: ==================================================
//= Chilly //= Chilly
//===== Current Version: ===================================== //===== Current Version: =====================================
//= 1.1 //= 1.2
//===== Compatible With: ===================================== //===== Compatible With: =====================================
//= rAthena SVN //= rAthena SVN
//===== Description: ========================================= //===== Description: =========================================
@ -11,9 +11,11 @@
//===== Additional Comments: ================================= //===== Additional Comments: =================================
//= 1.0 First Version. //= 1.0 First Version.
//= 1.1 Updated to match official scripts. [Masao] //= 1.1 Updated to match official scripts. [Masao]
//= 1.2 Added official Jeepney warp scripts. [Euphy]
//============================================================ //============================================================
// Town Warps // Town Warps
//============================================================
ma_in01,86,16,0 warp mal_in_ws 1,1,malaya,115,212 ma_in01,86,16,0 warp mal_in_ws 1,1,malaya,115,212
ma_in01,24,77,0 warp mal_in_inn 1,1,malaya,178,208 ma_in01,24,77,0 warp mal_in_inn 1,1,malaya,178,208
malaya,370,277,0 warp malaya_mal_fild01 1,1,ma_fild01,40,272 malaya,370,277,0 warp malaya_mal_fild01 1,1,ma_fild01,40,272
@ -31,6 +33,7 @@ ma_fild01,251,190,0 warp mf_minga_mf_in_minga 1,1,ma_in01,108,160
ma_in01,105,160,0 warp mf_in_minga_mf_minga 1,1,ma_fild01,248,190 ma_in01,105,160,0 warp mf_in_minga_mf_minga 1,1,ma_fild01,248,190
// Locked Warps // Locked Warps
//============================================================
malaya,178,211,0 script malaya_inn 45,1,1,{ malaya,178,211,0 script malaya_inn 45,1,1,{
end; end;
OnTouch: OnTouch:
@ -86,13 +89,60 @@ OnTouch:
end; end;
} }
// Car Warps // Jeepney Warps
ma_zif01,30,22,0 warp malaya_car0001 1,1,malaya,241,238 //============================================================
ma_zif02,30,22,0 warp malaya_car0002 1,1,malaya,71,43 function script F_Malaya_Warp {
ma_zif03,30,22,0 warp malaya_car0003 1,1,malaya,284,129 mes "Where would you like to go?";
ma_zif04,30,22,0 warp malaya_car0004 1,1,malaya,134,247 next;
ma_zif05,30,22,0 warp malaya_car0005 1,1,malaya,341,150 set .@i$, getarg(select("Back outside",getarg(1)+" Jeepney",getarg(2)+" Jeepney") - 1);
ma_zif06,30,22,0 warp malaya_car0006 1,1,malaya,294,293 close2;
ma_zif07,30,22,0 warp malaya_car0007 1,1,malaya,239,221 switch(getarg(3)) {
ma_zif08,30,22,0 warp malaya_car0008 1,1,malaya,59,246 case 1: // 12 passenger
ma_zif09,30,22,0 warp malaya_car0009 1,1,malaya,254,68 if (.@i$ == "Center")
warp "malaya",241,238;
if (.@i$ == "Southwest")
warp "malaya",71,43;
else if (.@i$ == "Southeast")
warp "malaya",284,129;
break;
case 2: // 30 passenger
if (.@i$ == "Northwest")
warp "malaya",134,247;
else if (.@i$ == "Southeast")
warp "malaya",341,150;
else if (.@i$ == "Northeast")
warp "malaya",294,293;
break;
case 3: // 60 passenger
if (.@i$ == "Center")
warp "malaya",239,221;
else if (.@i$ == "Northwest")
warp "malaya",59,246;
else if (.@i$ == "Southeast")
warp "malaya",254,68;
break;
}
end;
}
ma_zif01,30,22,0 script Town Warp#zif01 45,1,1,{ callfunc "F_Malaya_Warp","Center","Southwest","Southeast",1; }
ma_zif02,30,22,0 script Town Warp#zif02 45,1,1,{ callfunc "F_Malaya_Warp","Southwest","Center","Southeast",1; }
ma_zif03,30,22,0 script Town Warp#zif03 45,1,1,{ callfunc "F_Malaya_Warp","Southeast","Center","Southwest",1; }
ma_zif04,30,22,0 script Town Warp#zif04 45,1,1,{ callfunc "F_Malaya_Warp","Northwest","Southeast","Northeast",2; }
ma_zif05,30,22,0 script Town Warp#zif05 45,1,1,{ callfunc "F_Malaya_Warp","Southeast","Northwest","Northeast",2; }
ma_zif06,30,22,0 script Town Warp#zif06 45,1,1,{ callfunc "F_Malaya_Warp","Northeast","Northwest","Southeast",2; }
ma_zif07,30,22,0 script Town Warp#zif07 45,1,1,{ callfunc "F_Malaya_Warp","Center","Northwest","Southeast",3; }
ma_zif08,30,22,0 script Town Warp#zif08 45,1,1,{ callfunc "F_Malaya_Warp","Northwest","Center","Southeast",3; }
ma_zif09,30,22,0 script Town Warp#zif09 45,1,1,{ callfunc "F_Malaya_Warp","Southeast","Center","Northwest",3; }
//ma_zif01,30,22,0 warp malaya_car0001 1,1,malaya,241,238
//ma_zif02,30,22,0 warp malaya_car0002 1,1,malaya,71,43
//ma_zif03,30,22,0 warp malaya_car0003 1,1,malaya,284,129
//ma_zif04,30,22,0 warp malaya_car0004 1,1,malaya,134,247
//ma_zif05,30,22,0 warp malaya_car0005 1,1,malaya,341,150
//ma_zif06,30,22,0 warp malaya_car0006 1,1,malaya,294,293
//ma_zif07,30,22,0 warp malaya_car0007 1,1,malaya,239,221
//ma_zif08,30,22,0 warp malaya_car0008 1,1,malaya,59,246
//ma_zif09,30,22,0 warp malaya_car0009 1,1,malaya,254,68

View File

@ -4145,6 +4145,7 @@ REPLACE INTO `item_db_re` VALUES (6581,'Holy_Amulet','Holy Amulet',3,20,NULL,10,
REPLACE INTO `item_db_re` VALUES (6583,'3rd_Test_Pass','3rd Test Pass',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6583,'3rd_Test_Pass','3rd Test Pass',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (6593,'Cryptura_Hair_Coupon','Cryptura Hair Coupon',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6593,'Cryptura_Hair_Coupon','Cryptura Hair Coupon',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (6606,'P_Cart_C','P Cart C',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6606,'P_Cart_C','P Cart C',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (6608,'Coagulated_Spell','Coagulated Spell',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (6616,'Lmtd_Manny_Card','Lmtd Manny Card',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6616,'Lmtd_Manny_Card','Lmtd Manny Card',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (6617,'Lmtd_Sid_Card','Lmtd Sid Card',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6617,'Lmtd_Sid_Card','Lmtd Sid Card',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (6618,'Lmtd_Diego_Card','Lmtd Diego Card',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6618,'Lmtd_Diego_Card','Lmtd Diego Card',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@ -7789,17 +7790,17 @@ REPLACE INTO `item_db_re` VALUES (16688,'RWC2010_SuitcaseB','RWC2010 SuitcaseB',
REPLACE INTO `item_db_re` VALUES (16691,'Scorpius_Scroll','Scorpius Scroll',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 (16691,'Scorpius_Scroll','Scorpius Scroll',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 (16740,'Ptotection_Seagod_Box','The Sea God\'s Call 23 Hour Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 6436,86400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16740,'Ptotection_Seagod_Box','The Sea God\'s Call 23 Hour Box',2,20,NULL,10,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,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1198,86400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16741,'Hairtail_Box1','Cutlass 1 Hour Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1198,3600;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (16742,'Hairtail_Box2','Cutlass 7 Day Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1198,604800;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16742,'Hairtail_Box2','Cutlass 7 Day Box',2,20,NULL,10,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,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1489,86400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16743,'Spearfish_Box1','Marlin 1 Hour Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1489,3600;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (16744,'Spearfish_Box2','Marlin 7 Day Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 1489,604800;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16744,'Spearfish_Box2','Marlin 7 Day Box',2,20,NULL,10,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,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13068,86400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16745,'Saurel_Box1','Pompano 1 Hour Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13068,3600;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (16746,'Saurel_Box2','Pompano 7 Day Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13068,604800;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16746,'Saurel_Box2','Pompano 7 Day Box',2,20,NULL,10,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,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 16016,86400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16747,'Tuna_Box1','Tuna 1 Hour Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 16016,3600;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (16748,'Tuna_Box2','Tuna 7 Day Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 16016,604800;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16748,'Tuna_Box2','Tuna 7 Day Box',2,20,NULL,10,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,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18107,86400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16749,'Malang_Crab_Box1','Malangdo Crab 1 Hour Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18107,3600;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (16750,'Malang_Crab_Box2','Malangdo Crab 7 Day Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18107,604800;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16750,'Malang_Crab_Box2','Malangdo Crab 7 Day Box',2,20,NULL,10,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,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,86400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16751,'Brindle_Eel_Box1','Zebra Eel 1 Hour Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,3600;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (16752,'Brindle_Eel_Box2','Zebra Eel 7 Day Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,604800;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16752,'Brindle_Eel_Box2','Zebra Eel 7 Day Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 18108,604800;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (16753,'Unbreak_Weap_Box','Unbreakable Weapon Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6438,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16753,'Unbreak_Weap_Box','Unbreakable Weapon Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6438,1;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (16754,'F_Unbreak_Weap_Box','Unbreakable Weapon Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6438,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16754,'F_Unbreak_Weap_Box','Unbreakable Weapon Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6438,1;',NULL,NULL);

View File

@ -1681,19 +1681,22 @@ REPLACE INTO `mob_db` VALUES (2380,'XMAS_SMOKEY_GIFT','Smokey Gift','Smokey Gift
#2461,TREASURE_BOX_TE_9 #2461,TREASURE_BOX_TE_9
#2462,TREASURE_BOX_TE_10 #2462,TREASURE_BOX_TE_10
#2463,E_BOMBPORING #2463,E_BOMBPORING
#2464,MG_ZOMBIE
#2465,MG_WRAITH # Old Glast Heim (currently placeholders)
#2466,MG_GHOUL REPLACE INTO `mob_db` VALUES (2464,'MG_ZOMBIE','Zombie','Zombie',17,9340,1,117,87,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,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);
#2467,MG_ARCLOUSE REPLACE INTO `mob_db` VALUES (2465,'MG_WRAITH','Wraith','Wraith',77,23168,1,1190,1191,1,335,396,80,40,62,26,30,55,76,5,10,12,2,1,89,0x3695,300,1816,576,240,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);
#2468,MG_RAYDRIC REPLACE INTO `mob_db` VALUES (2466,'MG_GHOUL','Ghoul','Ghoul',61,12614,1,583,656,1,216,245,78,5,56,12,19,11,27,10,10,12,1,1,49,0x3885,250,2456,912,504,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);
#2469,MG_RAYDRIC_ARCHER REPLACE INTO `mob_db` VALUES (2467,'MG_ARCLOUSE','Arclouse','Arclouze',107,14020,1,1844,2607,1,269,309,101,36,60,73,45,35,140,15,10,12,1,4,42,0x3195,100,960,500,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);
#2470,MG_KNIGHT_OF_ABYSS REPLACE INTO `mob_db` VALUES (2468,'MG_RAYDRIC','Raydric','Raydric',115,25408,1,20770,2076,1,572,668,89,15,129,87,55,32,76,27,10,12,2,7,47,0x3095,150,824,780,420,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);
#2471,MG_KHALITZBURG REPLACE INTO `mob_db` VALUES (2469,'MG_RAYDRIC_ARCHER','Raydric Archer','Raydric Archer',82,30370,1,1049,1332,9,377,395,63,40,53,24,40,15,112,30,10,12,1,6,47,0x2185,200,1152,1152,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);
#2472,MG_BLOODY_KNIGHT REPLACE INTO `mob_db` VALUES (2470,'MG_KNIGHT_OF_ABYSS','Knight of Abyss','Abysmal Knight',122,332970,1,4779,4013,1,810,1002,102,50,121,55,68,70,97,37,10,12,2,7,87,0x3695,300,1500,500,1000,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);
#2473,MG_M_UNDEAD_KNIGHT REPLACE INTO `mob_db` VALUES (2471,'MG_KHALITZBURG','Khalitzburg','Khalitzburg',118,109860,1,2862,2147,1,737,833,125,10,121,48,40,31,89,32,10,12,2,1,29,0x3695,350,528,1000,396,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);
#2474,MG_F_UNDEAD_KNIGHT REPLACE INTO `mob_db` VALUES (2472,'MG_BLOODY_KNIGHT','Bloody Knight','Bloody Knight',116,285000,1,7348,6511,3,942,1065,122,50,132,59,70,57,98,45,10,12,2,0,87,0x3695,250,828,528,192,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);
#2475,MG_CORRUPTION_ROOT REPLACE INTO `mob_db` VALUES (2473,'MG_M_UNDEAD_KNIGHT','Undead Knight','Undead Knight',133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x37B5,170,140,384,288,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);
#2476,MG_AMDARAIS REPLACE INTO `mob_db` VALUES (2474,'MG_F_UNDEAD_KNIGHT','Undead Knight','Undead Knight',133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x37B5,170,140,384,288,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);
REPLACE INTO `mob_db` VALUES (2475,'MG_CORRUPTION_ROOT','Root of Corruption','Root of Corruption',136,3190000,1,240120,187920,3,710,1762,213,123,86,89,120,131,101,92,14,12,2,7,62,0x1A4,170,854,2016,480,120060,607,5500,608,3500,732,5500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
REPLACE INTO `mob_db` VALUES (2476,'MG_AMDARAIS','Amdarias','Amdarias',143,3283990,1,74288,77950,2,8860,10022,32,66,140,159,30,109,300,90,10,12,2,2,63,0x37B5,200,1152,1152,576,37144,617,5500,617,5000,616,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
#2477,NG_WANDER_MAN #2477,NG_WANDER_MAN
#2478,NG_RIDEWORD #2478,NG_RIDEWORD
#2479,NG_MIMIC #2479,NG_MIMIC

View File

@ -8027,3 +8027,45 @@ REPLACE INTO `mob_skill_db` VALUES (2362,'Nightmare Amon Ra@AL_TELEPORT','idle',
REPLACE INTO `mob_skill_db` VALUES (2362,'Nightmare Amon Ra@AL_TELEPORT','walk',26,1,5000,0,5000,'yes','self','rudeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `mob_skill_db` VALUES (2362,'Nightmare Amon Ra@AL_TELEPORT','walk',26,1,5000,0,5000,'yes','self','rudeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2362,'Nightmare Amon Ra@AL_HEAL','idle',28,11,10000,0,10000,'yes','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `mob_skill_db` VALUES (2362,'Nightmare Amon Ra@AL_HEAL','idle',28,11,10000,0,10000,'yes','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
# Old Glast Heim (currently placeholders)
REPLACE INTO `mob_skill_db` VALUES (2464,'MG Zombie@AL_HEAL','idle',28,10,10000,0,5000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,'26');
REPLACE INTO `mob_skill_db` VALUES (2464,'MG Zombie@NPC_UNDEADATTACK','chase',347,10,8000,1000,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2465,'MG Wraith@NPC_ENERGYDRAIN','attack',200,1,500,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2466,'MG Ghoul@NPC_UNDEADATTACK','chase',347,10,8000,1000,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2467,'MG Arclouse@NPC_GROUNDATTACK','attack',185,10,2000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2468,'MG Raydric@BS_MAXIMIZE','attack',114,5,500,1000,5000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2468,'MG Raydric@BS_MAXIMIZE','chase',114,5,500,1000,5000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2468,'MG Raydric@NPC_EMOTION','chase',197,1,2000,0,5000,'yes','self','always','0',0,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2468,'MG Raydric@SM_MAGNUM','attack',7,9,500,500,5000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,'6',NULL);
REPLACE INTO `mob_skill_db` VALUES (2468,'MG Raydric@CR_AUTOGUARD','chase',249,2,2000,0,300000,'yes','self','longrangeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2468,'MG Raydric@CR_AUTOGUARD','attack',249,2,500,0,300000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2469,'MG Raydric Archer@AC_CHARGEARROW','attack',148,1,500,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL);
REPLACE INTO `mob_skill_db` VALUES (2469,'MG Raydric Archer@NPC_DARKNESSATTACK','attack',190,10,500,500,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL);
REPLACE INTO `mob_skill_db` VALUES (2469,'MG Raydric Archer@CR_AUTOGUARD','attack',249,2,500,0,300000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2470,'MG Knight of Abyss@AC_CHARGEARROW','chase',148,1,500,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2470,'MG Knight of Abyss@KN_BRANDISHSPEAR','attack',57,20,500,1000,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL);
REPLACE INTO `mob_skill_db` VALUES (2470,'MG Knight of Abyss@NPC_DARKNESSATTACK','attack',190,5,500,500,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL);
REPLACE INTO `mob_skill_db` VALUES (2470,'MG Knight of Abyss@CR_AUTOGUARD','chase',249,10,2000,0,300000,'yes','self','longrangeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2470,'MG Knight of Abyss@CR_AUTOGUARD','attack',249,10,500,0,300000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2472,'MG Bloody Knight@KN_BRANDISHSPEAR','attack',57,5,500,1000,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL);
REPLACE INTO `mob_skill_db` VALUES (2472,'MG Bloody Knight@NPC_CHANGEFIRE','attack',164,1,10000,2000,600000,'no','self','myhpltmaxrate','20',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2472,'MG Bloody Knight@NPC_DARKNESSATTACK','attack',190,2,500,500,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL);
REPLACE INTO `mob_skill_db` VALUES (2472,'MG Bloody Knight@CR_SHIELDCHARGE','attack',250,5,500,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL);
REPLACE INTO `mob_skill_db` VALUES (2472,'MG Bloody Knight@WZ_METEOR','attack',83,5,2000,0,5000,'no','target','myhpltmaxrate','20',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2472,'MG Bloody Knight@WZ_METEOR','chase',83,5,2000,0,5000,'no','target','myhpltmaxrate','20',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2472,'MG Bloody Knight@NPC_WEAPONBRAKER','attack',343,5,500,0,30000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2475,'MG_CORRUPTION_ROOT@NPC_HELLJUDGEMENT','idle',662,10,10000,4000,100,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,'36',NULL);
REPLACE INTO `mob_skill_db` VALUES (2475,'MG_CORRUPTION_ROOT@NPC_HELLJUDGEMENT','attack',662,10,10000,1000,10000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,'36',NULL);
REPLACE INTO `mob_skill_db` VALUES (2475,'MG_CORRUPTION_ROOT@NPC_DARKSTRIKE','attack',340,10,2000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2475,'MG_CORRUPTION_ROOT@NPC_SILENCEATTACK','attack',178,10,2000,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2475,'MG_CORRUPTION_ROOT@NPC_PETRIFYATTACK','attack',180,5,500,500,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'3',NULL);
#REPLACE INTO `mob_skill_db` VALUES (2475,'MG_CORRUPTION_ROOT@NPC_TALK','idle',682,10,10000,0,60000,'no','self','myhpltmaxrate','100',NULL,NULL,NULL,NULL,NULL,NULL,'41');
REPLACE INTO `mob_skill_db` VALUES (2476,'MG_AMDARAIS@NPC_DRAGONFEAR','chase',659,5,10000,0,30000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,'6',NULL);
REPLACE INTO `mob_skill_db` VALUES (2476,'MG_AMDARAIS@NPC_DRAGONFEAR','attack',659,5,2000,1000,20000,'no','self','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,'32',NULL);
REPLACE INTO `mob_skill_db` VALUES (2476,'MG_AMDARAIS@NPC_CRITICALSLASH','attack',170,1,500,500,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2476,'MG_AMDARAIS@NPC_FIREBREATH','attack',654,5,500,800,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'32',NULL);
REPLACE INTO `mob_skill_db` VALUES (2476,'MG_AMDARAIS@NPC_DARKBREATH','attack',202,5,500,800,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'36',NULL);
REPLACE INTO `mob_skill_db` VALUES (2476,'MG_AMDARAIS@NPC_WEAPONBRAKER','attack',343,10,500,0,30000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `mob_skill_db` VALUES (2476,'MG_AMDARAIS@MG_FIREBALL','chase',17,20,5000,500,1000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
#REPLACE INTO `mob_skill_db` VALUES (2476,'MG_AMDARAIS@NPC_TALK','idle',682,10,10000,0,60000,'no','self','myhpltmaxrate','100',NULL,NULL,NULL,NULL,NULL,NULL,'42');

View File

@ -6823,10 +6823,17 @@ ACMD_FUNC(mobinfo)
continue; continue;
if (mob->mvpitem[i].p > 0) { if (mob->mvpitem[i].p > 0) {
j++; j++;
if (j == 1) if (j == 1) {
if (item_data->slot)
sprintf(atcmd_output2, " %s[%d] %02.02f%%", item_data->jname, item_data->slot, (float)mob->mvpitem[i].p / 100);
else
sprintf(atcmd_output2, " %s %02.02f%%", item_data->jname, (float)mob->mvpitem[i].p / 100); sprintf(atcmd_output2, " %s %02.02f%%", item_data->jname, (float)mob->mvpitem[i].p / 100);
} else {
if (item_data->slot)
sprintf(atcmd_output2, " - %s[%d] %02.02f%%", item_data->jname, item_data->slot, (float)mob->mvpitem[i].p / 100);
else else
sprintf(atcmd_output2, " - %s %02.02f%%", item_data->jname, (float)mob->mvpitem[i].p / 100); sprintf(atcmd_output2, " - %s %02.02f%%", item_data->jname, (float)mob->mvpitem[i].p / 100);
}
strcat(atcmd_output, atcmd_output2); strcat(atcmd_output, atcmd_output2);
} }
} }

View File

@ -894,7 +894,8 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
if(sc->data[SC_TATAMIGAESHI] && (flag&(BF_MAGIC|BF_LONG)) == BF_LONG) if(sc->data[SC_TATAMIGAESHI] && (flag&(BF_MAGIC|BF_LONG)) == BF_LONG)
return 0; return 0;
if( sc->data[SC_NEUTRALBARRIER] && (flag&(BF_MAGIC|BF_LONG)) == (BF_MAGIC|BF_LONG) ) { // TODO: Find out whether Neutral Barrier really blocks all splash damage or just specific cases (Earthquake)
if( sc->data[SC_NEUTRALBARRIER] && ((flag&(BF_MAGIC|BF_LONG)) == BF_LONG || (skill_id && skill_get_splash(skill_id,skill_lv))) ) {
d->dmg_lv = ATK_MISS; d->dmg_lv = ATK_MISS;
return 0; return 0;
} }
@ -1991,6 +1992,9 @@ static bool is_attack_hitting(struct Damage wd, struct block_list *src, struct b
else if (nk&NK_IGNORE_FLEE) else if (nk&NK_IGNORE_FLEE)
return true; return true;
if( sc && (sc->data[SC_NEUTRALBARRIER] || sc->data[SC_NEUTRALBARRIER_MASTER]) && wd.flag&BF_LONG )
return false;
flee = tstatus->flee; flee = tstatus->flee;
#ifdef RENEWAL #ifdef RENEWAL
hitrate = 0; //Default hitrate hitrate = 0; //Default hitrate
@ -3588,9 +3592,9 @@ static int battle_calc_skill_constant_addition(struct Damage wd, struct block_li
case SR_GATEOFHELL: case SR_GATEOFHELL:
atk = (sstatus->max_hp - status_get_hp(src)); atk = (sstatus->max_hp - status_get_hp(src));
if(sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == SR_FALLENEMPIRE) { if(sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == SR_FALLENEMPIRE) {
atk = ( ((int64)sstatus->max_sp * (1 + skill_lv * 2 / 10)) + 40 * status_get_lv(src) ); atk += ( ((int64)sstatus->max_sp * (1 + skill_lv * 2 / 10)) + 40 * status_get_lv(src) );
} else { } else {
atk = ( ((int64)sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src) ); atk += ( ((int64)sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src) );
} }
break; break;
case SR_TIGERCANNON: // (Tiger Cannon skill level x 240) + (Target Base Level x 40) case SR_TIGERCANNON: // (Tiger Cannon skill level x 240) + (Target Base Level x 40)
@ -4787,19 +4791,32 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
if( mflag&ELE_DARK ){ skillratio *= 4; s_ele = ELE_DARK; } if( mflag&ELE_DARK ){ skillratio *= 4; s_ele = ELE_DARK; }
skillratio /= 5; skillratio /= 5;
break; break;
case WL_COMET: { case WL_COMET:
struct status_change * sc = status_get_sc(src); i = ( sc ? distance_xy(target->x, target->y, sc->comet_x, sc->comet_y) : 8 );
if( sc ) if( i <= 3 )
i = distance_xy(target->x, target->y, sc->comet_x, sc->comet_y); skillratio += 2400 + 500 * skill_lv; // 7 x 7 cell
else if( i <= 5 )
skillratio += 1900 + 500 * skill_lv; // 11 x 11 cell
else if( i <= 7 )
skillratio += 1400 + 500 * skill_lv; // 15 x 15 cell
else else
i = 8; skillratio += 900 + 500 * skill_lv; // 19 x 19 cell
if( i < 2 ) skillratio = 2500 + 500 * skill_lv;
else if( sd && sd->status.party_id ){
if( i < 4 ) skillratio = 1600 + 400 * skill_lv; struct map_session_data* psd;
else int p_sd[5] = {0, 0, 0, 0, 0}, c; // just limit it to 5
if( i < 6 ) skillratio = 1200 + 300 * skill_lv;
else c = 0;
skillratio = 800 + 200 * skill_lv; memset (p_sd, 0, sizeof(p_sd));
party_foreachsamemap(skill_check_condition_char_sub, sd, 3, &sd->bl, &c, &p_sd, skill_id);
c = ( c > 1 ? rand()%c : 0 );
if( (psd = map_id2sd(p_sd[c])) && pc_checkskill(psd,WL_COMET) > 0 ){
skillratio = skill_lv * 400; //MATK [{( Skill Level x 400 ) x ( Caster's Base Level / 120 )} + 2500 ] %
RE_LVL_DMOD(120);
skillratio += 2500;
status_zap(&psd->bl, 0, skill_get_sp(skill_id, skill_lv) / 2);
}
} }
break; break;
case WL_CHAINLIGHTNING_ATK: case WL_CHAINLIGHTNING_ATK:
@ -6164,14 +6181,18 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
} }
break; break;
case BL_MOB: case BL_MOB:
if(((((TBL_MOB*)target)->special_state.ai == AI_SPHERE || //Marine Spheres {
(((TBL_MOB*)target)->special_state.ai == AI_FLORA && battle_config.summon_flora&1)) && //Floras struct mob_data *md = ((TBL_MOB*)target);
s_bl->type == BL_PC && src->type != BL_MOB) || (((TBL_MOB*)target)->special_state.ai == AI_ZANZOU && t_bl->id != s_bl->id)) //Zanzoe if(((md->special_state.ai == AI_SPHERE || //Marine Spheres
{ //Targettable by players (md->special_state.ai == AI_FLORA && battle_config.summon_flora&1)) && s_bl->type == BL_PC && src->type != BL_MOB) || //Floras
(md->special_state.ai == AI_ZANZOU && t_bl->id != s_bl->id) || //Zanzoe
(md->special_state.ai == AI_FAW && (t_bl->id != s_bl->id || (s_bl->type == BL_PC && src->type != BL_MOB)))
){ //Targettable by players
state |= BCT_ENEMY; state |= BCT_ENEMY;
strip_enemy = 0; strip_enemy = 0;
} }
break; break;
}
case BL_SKILL: case BL_SKILL:
{ {
TBL_SKILL *su = (TBL_SKILL*)target; TBL_SKILL *su = (TBL_SKILL*)target;

View File

@ -14523,13 +14523,13 @@ void clif_cashshop_ack(struct map_session_data* sd, int error)
WFIFOSET(fd, packet_len(0x289)); WFIFOSET(fd, packet_len(0x289));
} }
// TODO: find a more accurate date for this
#if PACKETVER < 20130320
/// Request to buy item(s) from cash shop (CZ_PC_BUY_CASH_POINT_ITEM). /// Request to buy item(s) from cash shop (CZ_PC_BUY_CASH_POINT_ITEM).
/// 0288 <name id>.W <amount>.W /// 0288 <name id>.W <amount>.W
/// 0288 <name id>.W <amount>.W <kafra points>.L (PACKETVER >= 20070711) /// 0288 <name id>.W <amount>.W <kafra points>.L (PACKETVER >= 20070711)
/// 0288 <packet len>.W <kafra points>.L <count>.W { <amount>.W <name id>.W }.4B*count (PACKETVER >= 20100803) /// 0288 <packet len>.W <kafra points>.L <count>.W { <amount>.W <name id>.W }.4B*count (PACKETVER >= 20100803)
/// 0848 <packet len>.W <count>.W <packet len>.W <kafra points>.L <count>.W { <amount>.W <name id>.W <tab>.W }.6B*count (PACKETVER >= 20130000)
void clif_parse_cashshop_buy(int fd, struct map_session_data *sd){ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd){
int fail = 0; int fail = 0;
struct s_packet_db* info; struct s_packet_db* info;
@ -14547,23 +14547,30 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd){
fail = npc_cashshop_buy(sd, nameid, amount, points); fail = npc_cashshop_buy(sd, nameid, amount, points);
#else #else
#if PACKETVER < 20130000 //found accurate date
int s_itl = 6;
#else
int s_itl = 4;//item _list size
#endif
int len = RFIFOW(fd,info->pos[0]); int len = RFIFOW(fd,info->pos[0]);
int points = RFIFOL(fd,info->pos[1]); int points = RFIFOL(fd,info->pos[1]);
int count = RFIFOW(fd,info->pos[2]); int count = RFIFOW(fd,info->pos[2]);
unsigned short* item_list = (unsigned short*)RFIFOP(fd,info->pos[3]); unsigned short* item_list = (unsigned short*)RFIFOP(fd,info->pos[3]);
if( len < 10 || len != 10 + count * 4) if( len < 10 || len != 10 + count * s_itl){
{ ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!\n", sd->status.char_id, len, 10 + count * s_itl);
ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!\n", sd->status.char_id, len, 10 + count * 4);
return; return;
} }
#if PACKETVER < 20130000
fail = npc_cashshop_buylist(sd,points,count,item_list); fail = npc_cashshop_buylist(sd,points,count,item_list);
#else PACKETVER >= 20130000
cashshop_buylist( sd, points, count, item_list);
#endif
#endif #endif
} }
clif_cashshop_ack(sd,fail); clif_cashshop_ack(sd,fail);
} }
#endif
/// Adoption System /// Adoption System
/// ///
@ -16506,21 +16513,7 @@ void clif_parse_cashshop_list_request( int fd, struct map_session_data* sd ){
clif_cashshop_list( fd ); clif_cashshop_list( fd );
} }
// TODO: find a more accurate date for this
#if PACKETVER >= 20130320
void clif_parse_cashshop_buy( int fd, struct map_session_data *sd ){
struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)];
uint16 length = RFIFOW( fd, info->pos[0] );
uint16 count = RFIFOW( fd, info->pos[1] );
if( length < 10 || length < ( 10 + count * 6 ) ){
return;
}
cashshop_buylist( sd, RFIFOL( fd, info->pos[2] ),
count, (uint16 *)RFIFOP( fd, info->pos[3] ) );
}
#endif
void clif_cashshop_result( struct map_session_data *sd, uint16 item_id, uint16 result ){ void clif_cashshop_result( struct map_session_data *sd, uint16 item_id, uint16 result ){
WFIFOHEAD( sd->fd, 16 ); WFIFOHEAD( sd->fd, 16 );

View File

@ -312,6 +312,7 @@ enum mob_ai {
AI_FLORA, AI_FLORA,
AI_ZANZOU, AI_ZANZOU,
AI_LEGION, AI_LEGION,
AI_FAW,
AI_MAX AI_MAX
}; };

View File

@ -8836,7 +8836,7 @@ BUILDIN_FUNC(monster)
if (script_hasdata(st, 10)) { if (script_hasdata(st, 10)) {
ai = script_getnum(st, 10); ai = script_getnum(st, 10);
if (ai > 4) { if (ai >= AI_MAX) {
ShowWarning("buildin_monster: Attempted to spawn non-existing ai %d for monster class %d\n", ai, class_); ShowWarning("buildin_monster: Attempted to spawn non-existing ai %d for monster class %d\n", ai, class_);
return 1; return 1;
} }
@ -11065,6 +11065,7 @@ BUILDIN_FUNC(emotion)
return 0; return 0;
} }
static int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list ap) static int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list ap)
{ {
int16 m=va_arg(ap,int); int16 m=va_arg(ap,int);
@ -11076,7 +11077,7 @@ static int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list
if( if(
(sd->status.guild_id == g_id && flag&1) || //Warp out owners (sd->status.guild_id == g_id && flag&1) || //Warp out owners
(sd->status.guild_id != g_id && flag&2) || //Warp out outsiders (sd->status.guild_id != g_id && flag&2) || //Warp out outsiders
(sd->status.guild_id == 0) // Warp out players not in guild [Valaris] (sd->status.guild_id == 0 && flag&2) // Warp out players not in guild
) )
pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT);
return 1; return 1;
@ -11092,6 +11093,15 @@ static int buildin_maprespawnguildid_sub_mob(struct block_list *bl,va_list ap)
return 0; return 0;
} }
/*
* Function to kickout guildies out of a map. (Put them back into thei save point)
* (mob are being killed)
* m : mapid
* g_id : owner guild id
* flag & 1 : Warp out owners
* flag & 2 : Warp out outsider
* flag & 4 : reserved for mob
* */
BUILDIN_FUNC(maprespawnguildid) BUILDIN_FUNC(maprespawnguildid)
{ {
const char *mapname=script_getstr(st,2); const char *mapname=script_getstr(st,2);

View File

@ -10445,6 +10445,10 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
**/ **/
case NC_NEUTRALBARRIER: case NC_NEUTRALBARRIER:
case NC_STEALTHFIELD: case NC_STEALTHFIELD:
if( (sc->data[SC_NEUTRALBARRIER_MASTER] && skill_id == NC_NEUTRALBARRIER) || (sc->data[SC_STEALTHFIELD_MASTER] && skill_id == NC_STEALTHFIELD) ) {
skill_clear_unitgroup(src);
return 0;
}
skill_clear_unitgroup(src); // To remove previous skills - cannot used combined skill_clear_unitgroup(src); // To remove previous skills - cannot used combined
if( (sg = skill_unitsetting(src,skill_id,skill_lv,src->x,src->y,0)) != NULL ) { if( (sg = skill_unitsetting(src,skill_id,skill_lv,src->x,src->y,0)) != NULL ) {
sc_start2(src,src,skill_id == NC_NEUTRALBARRIER ? SC_NEUTRALBARRIER_MASTER : SC_STEALTHFIELD_MASTER,100,skill_lv,sg->group_id,skill_get_time(skill_id,skill_lv)); sc_start2(src,src,skill_id == NC_NEUTRALBARRIER ? SC_NEUTRALBARRIER_MASTER : SC_STEALTHFIELD_MASTER,100,skill_lv,sg->group_id,skill_get_time(skill_id,skill_lv));
@ -10461,7 +10465,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
if( md ) if( md )
{ {
md->master_id = src->id; md->master_id = src->id;
md->special_state.ai = AI_FLORA; md->special_state.ai = AI_FAW;
if( md->deletetimer != INVALID_TIMER ) if( md->deletetimer != INVALID_TIMER )
delete_timer(md->deletetimer, mob_timer_delete); delete_timer(md->deletetimer, mob_timer_delete);
md->deletetimer = add_timer (gettick() + skill_get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0); md->deletetimer = add_timer (gettick() + skill_get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0);
@ -12557,7 +12561,7 @@ int skill_unit_ondamaged (struct skill_unit *src, struct block_list *bl, int dam
/*========================================== /*==========================================
* *
*------------------------------------------*/ *------------------------------------------*/
static int skill_check_condition_char_sub (struct block_list *bl, va_list ap) int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
{ {
int *c, skill_id; int *c, skill_id;
struct block_list *src; struct block_list *src;
@ -15135,18 +15139,17 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
skill_delunit(unit); skill_delunit(unit);
return 1; return 1;
} }
if( !(skill_get_inf2(unit->group->skill_id)&(INF2_SONG_DANCE|INF2_TRAP)) || unit->group->skill_id == WZ_FIREPILLAR ) { //It deletes everything except songs/dances and traps //It deletes everything except traps and barriers
if( !(skill_get_inf2(unit->group->skill_id)&(INF2_TRAP|INF2_NOLP)) || unit->group->skill_id == WZ_FIREPILLAR ) {
skill_delunit(unit); skill_delunit(unit);
return 1; return 1;
} }
break; break;
case HW_GANBANTEIN: case HW_GANBANTEIN:
case LG_EARTHDRIVE: case LG_EARTHDRIVE:
if( !(unit->group->state.song_dance&0x1) ) {// Don't touch song/dance. // Officially songs/dances are removed
skill_delunit(unit); skill_delunit(unit);
return 1; return 1;
}
break;
case SA_VOLCANO: case SA_VOLCANO:
case SA_DELUGE: case SA_DELUGE:
case SA_VIOLENTGALE: case SA_VIOLENTGALE:
@ -15209,7 +15212,7 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
break; break;
} }
if (unit->group->skill_id == SA_LANDPROTECTOR && !(skill_get_inf2(skill_id)&(INF2_SONG_DANCE|INF2_TRAP))) { //It deletes everything except songs/dances/traps if (unit->group->skill_id == SA_LANDPROTECTOR && !(skill_get_inf2(skill_id)&(INF2_TRAP|INF2_NOLP))) { //It deletes everything except traps and barriers
(*alive) = 0; (*alive) = 0;
return 1; return 1;
} }
@ -15844,7 +15847,7 @@ int skill_unit_timer_sub_onplace (struct block_list* bl, va_list ap) {
nullpo_ret(group); nullpo_ret(group);
if( !(skill_get_inf2(group->skill_id)&(INF2_SONG_DANCE|INF2_TRAP|INF2_NOLP)) && map_getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR) ) if( !(skill_get_inf2(group->skill_id)&(INF2_TRAP|INF2_NOLP)) && group->skill_id != NC_NEUTRALBARRIER && map_getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR) )
return 0; //AoE skills are ineffective. [Skotlex] return 0; //AoE skills are ineffective. [Skotlex]
if( battle_check_target(&unit->bl,bl,group->target_flag) <= 0 ) if( battle_check_target(&unit->bl,bl,group->target_flag) <= 0 )
@ -17069,20 +17072,28 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid) {
x = sd->sc.comet_x; x = sd->sc.comet_x;
y = sd->sc.comet_y; y = sd->sc.comet_y;
sd->sc.comet_x = sd->sc.comet_y = 0; sd->sc.comet_x = sd->sc.comet_y = 0;
sd->menuskill_val = 0;
class_ = (nameid == 990 || nameid == 991) ? 2043 + nameid - 990 : (nameid == 992) ? 2046 : 2045;
// Item picked decides the mob class
switch(nameid) {
case 990: class_ = 2043; break;
case 991: class_ = 2044; break;
case 992: class_ = 2046; break;
default: class_ = 2045; break;
}
md = mob_once_spawn_sub(&sd->bl, sd->bl.m, x, y, sd->status.name, class_, "", SZ_SMALL, AI_NONE); md = mob_once_spawn_sub(&sd->bl, sd->bl.m, x, y, sd->status.name, class_, "", SZ_SMALL, AI_NONE);
if( md ) { if( md ) {
struct unit_data *ud = unit_bl2ud(&md->bl);
md->master_id = sd->bl.id; md->master_id = sd->bl.id;
md->special_state.ai = AI_FLORA; md->special_state.ai = AI_FAW;
if(ud) {
ud->skill_id = NC_MAGICDECOY;
ud->skill_lv = skill;
}
if( md->deletetimer != INVALID_TIMER ) if( md->deletetimer != INVALID_TIMER )
delete_timer(md->deletetimer, mob_timer_delete); delete_timer(md->deletetimer, mob_timer_delete);
md->deletetimer = add_timer (gettick() + skill_get_time(NC_MAGICDECOY,skill), mob_timer_delete, md->bl.id, 0); md->deletetimer = add_timer (gettick() + skill_get_time(NC_MAGICDECOY,skill), mob_timer_delete, md->bl.id, 0);
mob_spawn(md); mob_spawn(md);
md->status.matk_min = md->status.matk_max = 250 + (50 * skill);
} }
return 0; return 0;
@ -17908,6 +17919,17 @@ int skill_disable_check(struct status_change *sc, uint16 skill_id)
case RA_CAMOUFLAGE: case RA_CAMOUFLAGE:
if( sc->data[status_skill2sc(skill_id)] ) if( sc->data[status_skill2sc(skill_id)] )
return 1; return 1;
break;
// These 2 skills contain a master and are not correctly pulled using skill2sc
case NC_NEUTRALBARRIER:
if( sc->data[SC_NEUTRALBARRIER_MASTER] )
return 1;
break;
case NC_STEALTHFIELD:
if( sc->data[SC_STEALTHFIELD_MASTER] )
return 1;
break;
} }
return 0; return 0;

View File

@ -312,6 +312,7 @@ int skill_delayfix( struct block_list *bl, uint16 skill_id, uint16 skill_lv);
// Skill conditions check and remove [Inkfish] // Skill conditions check and remove [Inkfish]
int skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv); int skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
int skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv); int skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
int skill_check_condition_char_sub (struct block_list *bl, va_list ap);
int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type); int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type);
struct skill_condition skill_get_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv); struct skill_condition skill_get_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
int skill_disable_check(struct status_change *sc, uint16 skill_id); int skill_disable_check(struct status_change *sc, uint16 skill_id);

View File

@ -603,7 +603,7 @@ void initChangeTables(void) {
set_sc( NC_INFRAREDSCAN , SC_INFRAREDSCAN , SI_INFRAREDSCAN , SCB_FLEE ); set_sc( NC_INFRAREDSCAN , SC_INFRAREDSCAN , SI_INFRAREDSCAN , SCB_FLEE );
set_sc( NC_ANALYZE , SC_ANALYZE , SI_ANALYZE , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 ); set_sc( NC_ANALYZE , SC_ANALYZE , SI_ANALYZE , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 );
set_sc( NC_MAGNETICFIELD , SC_MAGNETICFIELD , SI_MAGNETICFIELD , SCB_NONE ); set_sc( NC_MAGNETICFIELD , SC_MAGNETICFIELD , SI_MAGNETICFIELD , SCB_NONE );
set_sc( NC_NEUTRALBARRIER , SC_NEUTRALBARRIER , SI_NEUTRALBARRIER , SCB_NONE ); set_sc( NC_NEUTRALBARRIER , SC_NEUTRALBARRIER , SI_NEUTRALBARRIER , SCB_DEF|SCB_MDEF );
set_sc( NC_STEALTHFIELD , SC_STEALTHFIELD , SI_STEALTHFIELD , SCB_NONE ); set_sc( NC_STEALTHFIELD , SC_STEALTHFIELD , SI_STEALTHFIELD , SCB_NONE );
/** /**
* Royal Guard * Royal Guard
@ -1764,8 +1764,6 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin
if( tsc ) { if( tsc ) {
if( tsc->option&hide_flag && !(status->mode&(MD_BOSS|MD_DETECTOR))) if( tsc->option&hide_flag && !(status->mode&(MD_BOSS|MD_DETECTOR)))
return 0; return 0;
if( tsc->data[SC_STEALTHFIELD] && !(status->mode&MD_BOSS) )
return 0;
} }
} }
return 1; return 1;
@ -1895,11 +1893,8 @@ static unsigned short status_base_atk(const struct block_list *bl, const struct
// equation, hinting that perhaps non-players should use this for batk. // equation, hinting that perhaps non-players should use this for batk.
// [Skotlex] // [Skotlex]
#ifdef RENEWAL #ifdef RENEWAL
if (bl->type == BL_HOM) { if (bl->type == BL_HOM)
// str = ((rstr + dex + status->luk) / 3) + (((TBL_HOM*)bl)->homunculus.level / 10); str = floor((rstr + dex + status->luk) / 3) + floor(((TBL_HOM*)bl)->homunculus.level / 10);
str = (((rstr + dex + status->luk) / 3) + (((TBL_HOM*)bl)->homunculus.level / 10))*2; //Because Renewal ATK isn't implemented we adjust the actual ATK until it is
return cap_value(str, 0, USHRT_MAX);
}
#endif #endif
dstr = str/10; dstr = str/10;
str += dstr*dstr; str += dstr*dstr;
@ -2063,39 +2058,6 @@ int status_calc_mob_(struct mob_data* md, bool first)
status->speed = 2; status->speed = 2;
} }
if (flag&16 && mbl)
{ //Max HP setting from Summon Flora/marine Sphere
struct unit_data *ud = unit_bl2ud(mbl);
//Remove special AI when this is used by regular mobs.
if (mbl->type == BL_MOB && !((TBL_MOB*)mbl)->special_state.ai)
md->special_state.ai = AI_NONE;
if (ud)
{ // different levels of HP according to skill level
switch(ud->skill_id){
case AM_SPHEREMINE:
status->max_hp = 2000 + 400*ud->skill_lv;
break;
case KO_ZANZOU:
status->max_hp = 3000 + 3000 * ud->skill_lv;
break;
case AM_CANNIBALIZE:
status->max_hp = 1500 + 200*ud->skill_lv + 10*status_get_lv(mbl);
status->mode|= MD_CANATTACK|MD_AGGRESSIVE;
break;
case MH_SUMMON_LEGION:{
int homblvl = status_get_lv(mbl);
status->max_hp = 10 * (100 * (ud->skill_lv + 2) + homblvl);
status->batk = 100 * (ud->skill_lv+5) / 2;
status->def = 10 * (100 * (ud->skill_lv+2) + homblvl);
//status->aspd_rate = 10 * (2 * (20 - ud->skill_lv) - homblvl/10);
//status->aspd_rate = max(100,status->aspd_rate);
break;
}
}
status->hp = status->max_hp;
}
}
if (flag&1) if (flag&1)
{ // increase from mobs leveling up [Valaris] { // increase from mobs leveling up [Valaris]
int diff = md->level - md->db->lv; int diff = md->level - md->db->lv;
@ -2178,6 +2140,60 @@ int status_calc_mob_(struct mob_data* md, bool first)
} }
} }
if (flag&16 && mbl)
{ //Max HP setting from Summon Flora/marine Sphere
struct unit_data *ud = unit_bl2ud(mbl);
//Remove special AI when this is used by regular mobs.
if (mbl->type == BL_MOB && !((TBL_MOB*)mbl)->special_state.ai)
md->special_state.ai = AI_NONE;
if (ud)
{ // different levels of HP according to skill level
if(!ud->skill_id) // FIXME: We lost the unit data for magic decoy in somewhere before this
ud->skill_id = ((TBL_PC*)mbl)->menuskill_id;
switch(ud->skill_id){
case AM_SPHEREMINE:
status->max_hp = 2000 + 400*ud->skill_lv;
break;
case KO_ZANZOU:
status->max_hp = 3000 + 3000 * ud->skill_lv;
break;
case AM_CANNIBALIZE:
status->max_hp = 1500 + 200*ud->skill_lv + 10*status_get_lv(mbl);
status->mode|= MD_CANATTACK|MD_AGGRESSIVE;
break;
case MH_SUMMON_LEGION:
{
int homblvl = status_get_lv(mbl);
status->max_hp = 10 * (100 * (ud->skill_lv + 2) + homblvl);
status->batk = 100 * (ud->skill_lv+5) / 2;
status->def = 10 * (100 * (ud->skill_lv+2) + homblvl);
//status->aspd_rate = 10 * (2 * (20 - ud->skill_lv) - homblvl/10);
//status->aspd_rate = max(100,status->aspd_rate);
break;
}
case NC_SILVERSNIPER:
{
struct status_data *mstatus = status_get_status_data(mbl);
if(!mstatus)
break;
status->max_hp = (1000 * ud->skill_lv) + (mstatus->hp / 3) + (status_get_lv(mbl) * 12);
status->batk = (((ud->skill_lv > 3)?300:100) + (200 * ud->skill_lv));
break;
}
case NC_MAGICDECOY:
{
struct status_data *mstatus = status_get_status_data(mbl);
if(!mstatus)
break;
status->max_hp = (1000 * ((TBL_PC*)mbl)->menuskill_val) + (mstatus->hp * 4) + (status_get_lv(mbl) * 12);
status->matk_min = status->matk_max = 250 + 50*((TBL_PC*)mbl)->menuskill_val;
break;
}
}
status->hp = status->max_hp;
}
}
if( first ) //Initial battle status if( first ) //Initial battle status
memcpy(&md->status, status, sizeof(struct status_data)); memcpy(&md->status, status, sizeof(struct status_data));
@ -3508,9 +3524,11 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str
regen->flag = 0; regen->flag = 0;
if ( if (
sc->data[SC_DANCING] || sc->data[SC_OBLIVIONCURSE] || sc->data[SC_MAXIMIZEPOWER] sc->data[SC_DANCING] || sc->data[SC_OBLIVIONCURSE] ||
|| ( #ifdef RENEWAL
(bl->type == BL_PC && ((TBL_PC*)bl)->class_&MAPID_UPPERMASK) == MAPID_MONK && sc->data[SC_MAXIMIZEPOWER] ||
#endif
( (bl->type == BL_PC && ((TBL_PC*)bl)->class_&MAPID_UPPERMASK) == MAPID_MONK &&
(sc->data[SC_EXTREMITYFIST] || (sc->data[SC_EXPLOSIONSPIRITS] && (!sc->data[SC_SPIRIT] || sc->data[SC_SPIRIT]->val2 != SL_MONK))) (sc->data[SC_EXTREMITYFIST] || (sc->data[SC_EXPLOSIONSPIRITS] && (!sc->data[SC_SPIRIT] || sc->data[SC_SPIRIT]->val2 != SL_MONK)))
) )
) //No natural SP regen ) //No natural SP regen
@ -5016,6 +5034,8 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc,
def -= def * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100; def -= def * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100;
if( sc->data[SC_FORCEOFVANGUARD] ) if( sc->data[SC_FORCEOFVANGUARD] )
def += def * 2 * sc->data[SC_FORCEOFVANGUARD]->val1 / 100; def += def * 2 * sc->data[SC_FORCEOFVANGUARD]->val1 / 100;
if( sc->data[SC_NEUTRALBARRIER] )
def += def * (10 + sc->data[SC_NEUTRALBARRIER]->val1 * 5) / 100;
if(sc->data[SC_SATURDAYNIGHTFEVER]) if(sc->data[SC_SATURDAYNIGHTFEVER])
def -= def * (10 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100; def -= def * (10 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100;
if(sc->data[SC_EARTHDRIVE]) if(sc->data[SC_EARTHDRIVE])
@ -5127,6 +5147,8 @@ static defType status_calc_mdef(struct block_list *bl, struct status_change *sc,
mdef += 25*mdef/100; mdef += 25*mdef/100;
if(sc->data[SC_FREEZE]) if(sc->data[SC_FREEZE])
mdef += 25*mdef/100; mdef += 25*mdef/100;
if( sc->data[SC_NEUTRALBARRIER] )
mdef += mdef * (10 + sc->data[SC_NEUTRALBARRIER]->val1 * 5) / 100;
if( sc->data[SC_MARSHOFABYSS] ) if( sc->data[SC_MARSHOFABYSS] )
mdef -= mdef * ( 6 + 6 * sc->data[SC_MARSHOFABYSS]->val3/10 + (bl->type == BL_MOB ? 5 : 3) * sc->data[SC_MARSHOFABYSS]->val2/36 ) / 100; mdef -= mdef * ( 6 + 6 * sc->data[SC_MARSHOFABYSS]->val3/10 + (bl->type == BL_MOB ? 5 : 3) * sc->data[SC_MARSHOFABYSS]->val2/36 ) / 100;
if(sc->data[SC_ANALYZE]) if(sc->data[SC_ANALYZE])