Merge branch 'master' of https://github.com/rathena/rathena
This commit is contained in:
commit
489dda35cc
2
.gitignore
vendored
2
.gitignore
vendored
@ -23,6 +23,7 @@
|
||||
/Makefile.cache
|
||||
/map-server_sql
|
||||
/mapcache
|
||||
/nbproject
|
||||
|
||||
# /3rdparty/libconfig/
|
||||
/3rdparty/libconfig/Makefile
|
||||
@ -34,6 +35,7 @@
|
||||
|
||||
# /conf/
|
||||
/conf/import
|
||||
/conf/msg_conf/import
|
||||
|
||||
# /log/
|
||||
/log/*.log
|
||||
|
@ -1707,7 +1707,7 @@ packet_ver: 30
|
||||
0x089c,26,friendslistadd,2
|
||||
0x0885,5,hommenu,2:4
|
||||
0x0961,36,storagepassword,2:4:20
|
||||
0x0288,-1,cashshopbuy,2:4:6:10
|
||||
0x0288,-1,cashshopbuy,2:4:8:10
|
||||
0x091c,26,partyinvite2,2
|
||||
0x094b,19,wanttoconnection,2:6:10:14:18
|
||||
0x0369,7,actionrequest,2:6
|
||||
@ -1816,7 +1816,7 @@ packet_ver: 34
|
||||
0x0447,2,booking_playcancel,0
|
||||
0x044A,6,clientversion,2
|
||||
0x0844,2,cashshopopen,0
|
||||
0x0848,-1,cashshopbuy,2:4:6:10
|
||||
0x0848,-1,cashshopbuy,2:6:4:10
|
||||
0x084a,2,cashshopclose,0
|
||||
0x084b,19 //fallitem4
|
||||
0x085a,90,useskilltoposinfo,2:4:6:8:10
|
||||
|
@ -14,4 +14,4 @@
|
||||
8,Buwaya Cave,3600,1@ma_c,35,57,1@ma_c
|
||||
9,Bakonawa Lake,7200,1@ma_b,64,51,1@ma_b
|
||||
//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
|
||||
|
@ -4114,6 +4114,7 @@
|
||||
6583,3rd_Test_Pass,3rd Test Pass,3,0,,0,,,,,,,,,,,,,{},{},{}
|
||||
6593,Cryptura_Hair_Coupon,Cryptura Hair Coupon,3,0,,0,,,,,,,,,,,,,{},{},{}
|
||||
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,,,,,,,,,,,,,{},{},{}
|
||||
6617,Lmtd_Sid_Card,Lmtd Sid 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,,,,,,{},{},{}
|
||||
//
|
||||
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; },{},{}
|
||||
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; },{},{}
|
||||
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; },{},{}
|
||||
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; },{},{}
|
||||
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; },{},{}
|
||||
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; },{},{}
|
||||
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; },{},{}
|
||||
|
@ -1615,19 +1615,22 @@
|
||||
//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
|
||||
|
||||
// Old Glast Heim (currently placeholders)
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
//2478,NG_RIDEWORD
|
||||
//2479,NG_MIMIC
|
||||
|
@ -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,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,,,,,,,
|
||||
|
||||
// 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
|
||||
|
@ -1305,9 +1305,9 @@
|
||||
//-- NC_MAGNETICFIELD
|
||||
2272,500:1000:1500,0,0,15000,0,20000:15000:10000,-1
|
||||
//-- 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
|
||||
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
|
||||
2275,200:300:400:500:600,1000,0,0,0,0,-1
|
||||
|
||||
|
@ -841,8 +841,8 @@
|
||||
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
|
||||
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
|
||||
2274,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0, NC_STEALTHFIELD,Stealth Field
|
||||
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,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
|
||||
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
|
||||
|
@ -117,8 +117,8 @@
|
||||
2253,0xd6, , 0, 1,1000,enemy, 0x002 //RA_FIRINGTRAP
|
||||
2254,0xd7, , 0, 1,1000,enemy, 0x002 //RA_ICEBOUNDTRAP
|
||||
|
||||
2273,0xe2, , 1, 0, 500,friend,0x000 //NC_NEUTRALBARRIER
|
||||
2274,0xe3, , 1, 0, 500,all, 0x000 //NC_STEALTHFIELD
|
||||
2273,0xe2, , 2, 0, 500,friend,0x000 //NC_NEUTRALBARRIER
|
||||
2274,0xe3, , 2, 0, 500,all, 0x000 //NC_STEALTHFIELD
|
||||
|
||||
2299,0xcc, , 0, 1,1000,all, 0x006 //SC_MANHOLE
|
||||
2300,0xcd, , 0, 1,1000,all, 0x006 //SC_DIMENSIONDOOR
|
||||
|
@ -414,8 +414,8 @@ G6: Go("schg_dun01",200,124);
|
||||
// --------------------------------------------------
|
||||
|
||||
menu "Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3,
|
||||
"Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6,
|
||||
"Nidhoggur's Nest",I7, "Octopus Cave",I8, "Orc's Memory",I9, "Sealed Shrine",I10;
|
||||
"Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7,
|
||||
"Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I111;
|
||||
|
||||
I1: Restrict("RE");
|
||||
Go("ma_scene01",172,175);
|
||||
@ -431,8 +431,10 @@ I6: Restrict("RE");
|
||||
I7: Go("nyd_dun02",95,193);
|
||||
I8: Restrict("RE");
|
||||
Go("mal_dun01",152,230);
|
||||
I9: Go("gef_fild10",240,198);
|
||||
I10: Go("monk_test",306,143);
|
||||
I9: Restrict("RE");
|
||||
Go("glast_01",204,268);
|
||||
I10: Go("gef_fild10",240,198);
|
||||
I11: Go("monk_test",306,143);
|
||||
|
||||
// --------------------------------------------------
|
||||
Special:
|
||||
|
@ -4,7 +4,7 @@
|
||||
//= Kalen - Original jAthena
|
||||
//= Fredzilla - Converted, Lupus
|
||||
//===== Current Version: =====================================
|
||||
//= 3.7
|
||||
//= 3.7a
|
||||
//===== Compatible With: =====================================
|
||||
//= rAthena SVN
|
||||
//===== Description: =========================================
|
||||
@ -20,6 +20,7 @@
|
||||
//= 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.7 Added Quest Log commands. [Kisuka]
|
||||
//= 3.7a Fixed a label execution. [Euphy]
|
||||
//============================================================
|
||||
|
||||
comodo,180,153,4 script Sonotora#1 90,{
|
||||
@ -1323,7 +1324,7 @@ OnDisable:
|
||||
|
||||
// Backup Dancers
|
||||
//============================================================
|
||||
job_duncer,63,110,4 script Backdancer#1::BackDancer 724,{
|
||||
job_duncer,63,110,4 script Backdancer#1 724,{
|
||||
end;
|
||||
|
||||
OnSmile:
|
||||
@ -1400,3 +1401,4 @@ OnOmg:
|
||||
//= Concentration' to 'Attention Concentrate' [Lupus]
|
||||
//= 3.0 Some optimization, typos, added missing dialogues (4Kb lighter) [Lupus]
|
||||
//= 3.1 Implemented JOBLVL as in other quests [Lupus]
|
||||
//============================================================
|
||||
|
2057
npc/re/instances/OldGlastHeim.txt
Normal file
2057
npc/re/instances/OldGlastHeim.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -457,7 +457,7 @@ mora,99,93,5 script Artifact Crafter#pa0829 495,{
|
||||
break;
|
||||
}
|
||||
set .@item, .@items[(.@select-2)%4];
|
||||
if (countitem(6380) == 0 || countitem(.@item) == 0) {
|
||||
if (countitem(6380) < 2 || countitem(.@item) == 0) {
|
||||
mes "[Artifact Crafter]";
|
||||
mes "You have to have 2 Mora Coins and an item to be reinforced before I can do my work.";
|
||||
close;
|
||||
@ -634,7 +634,7 @@ mora,148,98,3 script Artifact Researcher#new 521,{
|
||||
}
|
||||
if (Zeny < 100000 || countitem(6380) == 0) {
|
||||
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;
|
||||
}
|
||||
mes "[Artifact Researcher]";
|
||||
|
@ -3,7 +3,7 @@
|
||||
//===== By: ==================================================
|
||||
//= Gennosuke Kouga, Muad_Dib
|
||||
//===== Current Version: =====================================
|
||||
//= 2.0
|
||||
//= 2.1
|
||||
//===== Compatible With: =====================================
|
||||
//= rAthena SVN
|
||||
//===== Description: =========================================
|
||||
@ -30,6 +30,7 @@
|
||||
//= 1.9 Updated "Fish Tails" with RE coordinates.
|
||||
//= 1.9a Minor fix. [Joseph]
|
||||
//= 2.0 Fixed variables. [Joseph]
|
||||
//= 2.1 Added reset option to "Kareka". [Euphy]
|
||||
//============================================================
|
||||
|
||||
// Entrance
|
||||
@ -6924,8 +6925,37 @@ dic_in01,42,264,3 script Adventurer Clerk#ep133 453,{
|
||||
mes "[Kareka]";
|
||||
mes "Do you want to upgrade the ^990099Light of El Dicastes^000000 again?";
|
||||
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 "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;
|
||||
}
|
||||
if (countitem(6304) < 1) {
|
||||
|
@ -53,6 +53,7 @@ npc: npc/re/instances/BuwayaCave.txt
|
||||
npc: npc/re/instances/HazyForest.txt
|
||||
npc: npc/re/instances/MalangdoCulvert.txt
|
||||
npc: npc/re/instances/OctopusCave.txt
|
||||
npc: npc/re/instances/OldGlastHeim.txt
|
||||
|
||||
// ---------------- Kafras & Cool Event Corp. -------------------
|
||||
npc: npc/re/kafras/kafras.txt
|
||||
|
@ -3,7 +3,7 @@
|
||||
//===== By: ==================================================
|
||||
//= Chilly
|
||||
//===== Current Version: =====================================
|
||||
//= 1.1
|
||||
//= 1.2
|
||||
//===== Compatible With: =====================================
|
||||
//= rAthena SVN
|
||||
//===== Description: =========================================
|
||||
@ -11,9 +11,11 @@
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.0 First Version.
|
||||
//= 1.1 Updated to match official scripts. [Masao]
|
||||
//= 1.2 Added official Jeepney warp scripts. [Euphy]
|
||||
//============================================================
|
||||
|
||||
// Town Warps
|
||||
//============================================================
|
||||
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
|
||||
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
|
||||
|
||||
// Locked Warps
|
||||
//============================================================
|
||||
malaya,178,211,0 script malaya_inn 45,1,1,{
|
||||
end;
|
||||
OnTouch:
|
||||
@ -86,13 +89,60 @@ OnTouch:
|
||||
end;
|
||||
}
|
||||
|
||||
// Car 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
|
||||
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
|
||||
// Jeepney Warps
|
||||
//============================================================
|
||||
function script F_Malaya_Warp {
|
||||
mes "Where would you like to go?";
|
||||
next;
|
||||
set .@i$, getarg(select("Back outside",getarg(1)+" Jeepney",getarg(2)+" Jeepney") - 1);
|
||||
close2;
|
||||
switch(getarg(3)) {
|
||||
case 1: // 12 passenger
|
||||
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
|
||||
|
@ -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 (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 (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 (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);
|
||||
@ -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 (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 (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 (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 (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 (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 (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 (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);
|
||||
|
@ -1681,19 +1681,22 @@ REPLACE INTO `mob_db` VALUES (2380,'XMAS_SMOKEY_GIFT','Smokey Gift','Smokey Gift
|
||||
#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
|
||||
|
||||
# Old Glast Heim (currently placeholders)
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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
|
||||
#2478,NG_RIDEWORD
|
||||
#2479,NG_MIMIC
|
||||
|
@ -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_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');
|
||||
|
||||
|
@ -6823,10 +6823,17 @@ ACMD_FUNC(mobinfo)
|
||||
continue;
|
||||
if (mob->mvpitem[i].p > 0) {
|
||||
j++;
|
||||
if (j == 1)
|
||||
sprintf(atcmd_output2, " %s %02.02f%%", item_data->jname, (float)mob->mvpitem[i].p / 100);
|
||||
else
|
||||
sprintf(atcmd_output2, " - %s %02.02f%%", item_data->jname, (float)mob->mvpitem[i].p / 100);
|
||||
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);
|
||||
} 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
|
||||
sprintf(atcmd_output2, " - %s %02.02f%%", item_data->jname, (float)mob->mvpitem[i].p / 100);
|
||||
}
|
||||
strcat(atcmd_output, atcmd_output2);
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
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;
|
||||
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)
|
||||
return true;
|
||||
|
||||
if( sc && (sc->data[SC_NEUTRALBARRIER] || sc->data[SC_NEUTRALBARRIER_MASTER]) && wd.flag&BF_LONG )
|
||||
return false;
|
||||
|
||||
flee = tstatus->flee;
|
||||
#ifdef RENEWAL
|
||||
hitrate = 0; //Default hitrate
|
||||
@ -3586,11 +3590,11 @@ static int battle_calc_skill_constant_addition(struct Damage wd, struct block_li
|
||||
atk = (30*pc_checkskill(sd, RA_TOOTHOFWUG));
|
||||
break;
|
||||
case SR_GATEOFHELL:
|
||||
atk = (sstatus->max_hp - status_get_hp(src));
|
||||
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) );
|
||||
}else{
|
||||
atk = ( ((int64)sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src) );
|
||||
atk = (sstatus->max_hp - status_get_hp(src));
|
||||
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) );
|
||||
} else {
|
||||
atk += ( ((int64)sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status_get_lv(src) );
|
||||
}
|
||||
break;
|
||||
case SR_TIGERCANNON: // (Tiger Cannon skill level x 240) + (Target Base Level x 40)
|
||||
@ -4787,21 +4791,34 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
if( mflag&ELE_DARK ){ skillratio *= 4; s_ele = ELE_DARK; }
|
||||
skillratio /= 5;
|
||||
break;
|
||||
case WL_COMET: {
|
||||
struct status_change * sc = status_get_sc(src);
|
||||
if( sc )
|
||||
i = distance_xy(target->x, target->y, sc->comet_x, sc->comet_y);
|
||||
case WL_COMET:
|
||||
i = ( sc ? distance_xy(target->x, target->y, sc->comet_x, sc->comet_y) : 8 );
|
||||
if( i <= 3 )
|
||||
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
|
||||
i = 8;
|
||||
if( i < 2 ) skillratio = 2500 + 500 * skill_lv;
|
||||
else
|
||||
if( i < 4 ) skillratio = 1600 + 400 * skill_lv;
|
||||
else
|
||||
if( i < 6 ) skillratio = 1200 + 300 * skill_lv;
|
||||
else
|
||||
skillratio = 800 + 200 * skill_lv;
|
||||
skillratio += 900 + 500 * skill_lv; // 19 x 19 cell
|
||||
|
||||
if( sd && sd->status.party_id ){
|
||||
struct map_session_data* psd;
|
||||
int p_sd[5] = {0, 0, 0, 0, 0}, c; // just limit it to 5
|
||||
|
||||
c = 0;
|
||||
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:
|
||||
skillratio += 100 + 300 * skill_lv;
|
||||
RE_LVL_DMOD(100);
|
||||
@ -6164,14 +6181,18 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
|
||||
}
|
||||
break;
|
||||
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
|
||||
s_bl->type == BL_PC && src->type != BL_MOB) || (((TBL_MOB*)target)->special_state.ai == AI_ZANZOU && t_bl->id != s_bl->id)) //Zanzoe
|
||||
{ //Targettable by players
|
||||
{
|
||||
struct mob_data *md = ((TBL_MOB*)target);
|
||||
if(((md->special_state.ai == AI_SPHERE || //Marine Spheres
|
||||
(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;
|
||||
strip_enemy = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BL_SKILL:
|
||||
{
|
||||
TBL_SKILL *su = (TBL_SKILL*)target;
|
||||
|
@ -14523,13 +14523,13 @@ void clif_cashshop_ack(struct map_session_data* sd, int error)
|
||||
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).
|
||||
/// 0288 <name id>.W <amount>.W
|
||||
/// 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)
|
||||
/// 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){
|
||||
|
||||
int fail = 0;
|
||||
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);
|
||||
#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 points = RFIFOL(fd,info->pos[1]);
|
||||
int count = RFIFOW(fd,info->pos[2]);
|
||||
unsigned short* item_list = (unsigned short*)RFIFOP(fd,info->pos[3]);
|
||||
|
||||
if( len < 10 || len != 10 + count * 4)
|
||||
{
|
||||
ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!\n", sd->status.char_id, 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);
|
||||
return;
|
||||
}
|
||||
#if PACKETVER < 20130000
|
||||
fail = npc_cashshop_buylist(sd,points,count,item_list);
|
||||
#else PACKETVER >= 20130000
|
||||
cashshop_buylist( sd, points, count, item_list);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
clif_cashshop_ack(sd,fail);
|
||||
}
|
||||
#endif
|
||||
|
||||
/// Adoption System
|
||||
///
|
||||
@ -16506,21 +16513,7 @@ void clif_parse_cashshop_list_request( int fd, struct map_session_data* sd ){
|
||||
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 ){
|
||||
WFIFOHEAD( sd->fd, 16 );
|
||||
|
@ -312,6 +312,7 @@ enum mob_ai {
|
||||
AI_FLORA,
|
||||
AI_ZANZOU,
|
||||
AI_LEGION,
|
||||
AI_FAW,
|
||||
AI_MAX
|
||||
};
|
||||
|
||||
|
@ -8809,11 +8809,11 @@ BUILDIN_FUNC(guildchangegm)
|
||||
BUILDIN_FUNC(monster)
|
||||
{
|
||||
const char* mapn = script_getstr(st,2);
|
||||
int x = script_getnum(st,3);
|
||||
int y = script_getnum(st,4);
|
||||
int x = script_getnum(st,3);
|
||||
int y = script_getnum(st,4);
|
||||
const char* str = script_getstr(st,5);
|
||||
int class_ = script_getnum(st,6);
|
||||
int amount = script_getnum(st,7);
|
||||
int class_ = script_getnum(st,6);
|
||||
int amount = script_getnum(st,7);
|
||||
const char* event = "";
|
||||
unsigned int size = SZ_SMALL;
|
||||
unsigned int ai = AI_NONE;
|
||||
@ -8836,7 +8836,7 @@ BUILDIN_FUNC(monster)
|
||||
|
||||
if (script_hasdata(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_);
|
||||
return 1;
|
||||
}
|
||||
@ -11065,6 +11065,7 @@ BUILDIN_FUNC(emotion)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list ap)
|
||||
{
|
||||
int16 m=va_arg(ap,int);
|
||||
@ -11076,7 +11077,7 @@ static int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list
|
||||
if(
|
||||
(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 == 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);
|
||||
return 1;
|
||||
@ -11092,6 +11093,15 @@ static int buildin_maprespawnguildid_sub_mob(struct block_list *bl,va_list ap)
|
||||
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)
|
||||
{
|
||||
const char *mapname=script_getstr(st,2);
|
||||
|
@ -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_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
|
||||
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));
|
||||
@ -10461,7 +10465,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
||||
if( md )
|
||||
{
|
||||
md->master_id = src->id;
|
||||
md->special_state.ai = AI_FLORA;
|
||||
md->special_state.ai = AI_FAW;
|
||||
if( md->deletetimer != INVALID_TIMER )
|
||||
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);
|
||||
@ -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;
|
||||
struct block_list *src;
|
||||
@ -15135,18 +15139,17 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
|
||||
skill_delunit(unit);
|
||||
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);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case HW_GANBANTEIN:
|
||||
case LG_EARTHDRIVE:
|
||||
if( !(unit->group->state.song_dance&0x1) ) {// Don't touch song/dance.
|
||||
skill_delunit(unit);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
// Officially songs/dances are removed
|
||||
skill_delunit(unit);
|
||||
return 1;
|
||||
case SA_VOLCANO:
|
||||
case SA_DELUGE:
|
||||
case SA_VIOLENTGALE:
|
||||
@ -15209,7 +15212,7 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
|
||||
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;
|
||||
return 1;
|
||||
}
|
||||
@ -15844,7 +15847,7 @@ int skill_unit_timer_sub_onplace (struct block_list* bl, va_list ap) {
|
||||
|
||||
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]
|
||||
|
||||
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;
|
||||
y = sd->sc.comet_y;
|
||||
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);
|
||||
if( md ) {
|
||||
struct unit_data *ud = unit_bl2ud(&md->bl);
|
||||
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 )
|
||||
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);
|
||||
mob_spawn(md);
|
||||
md->status.matk_min = md->status.matk_max = 250 + (50 * skill);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -17908,6 +17919,17 @@ int skill_disable_check(struct status_change *sc, uint16 skill_id)
|
||||
case RA_CAMOUFLAGE:
|
||||
if( sc->data[status_skill2sc(skill_id)] )
|
||||
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;
|
||||
|
@ -312,6 +312,7 @@ int skill_delayfix( struct block_list *bl, uint16 skill_id, uint16 skill_lv);
|
||||
// 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_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);
|
||||
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);
|
||||
|
110
src/map/status.c
110
src/map/status.c
@ -603,7 +603,7 @@ void initChangeTables(void) {
|
||||
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_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 );
|
||||
/**
|
||||
* Royal Guard
|
||||
@ -1764,8 +1764,6 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin
|
||||
if( tsc ) {
|
||||
if( tsc->option&hide_flag && !(status->mode&(MD_BOSS|MD_DETECTOR)))
|
||||
return 0;
|
||||
if( tsc->data[SC_STEALTHFIELD] && !(status->mode&MD_BOSS) )
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
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.
|
||||
// [Skotlex]
|
||||
#ifdef RENEWAL
|
||||
if (bl->type == BL_HOM) {
|
||||
// str = ((rstr + dex + status->luk) / 3) + (((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);
|
||||
}
|
||||
if (bl->type == BL_HOM)
|
||||
str = floor((rstr + dex + status->luk) / 3) + floor(((TBL_HOM*)bl)->homunculus.level / 10);
|
||||
#endif
|
||||
dstr = str/10;
|
||||
str += dstr*dstr;
|
||||
@ -2063,39 +2058,6 @@ int status_calc_mob_(struct mob_data* md, bool first)
|
||||
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)
|
||||
{ // increase from mobs leveling up [Valaris]
|
||||
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
|
||||
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;
|
||||
|
||||
if (
|
||||
sc->data[SC_DANCING] || sc->data[SC_OBLIVIONCURSE] || sc->data[SC_MAXIMIZEPOWER]
|
||||
|| (
|
||||
(bl->type == BL_PC && ((TBL_PC*)bl)->class_&MAPID_UPPERMASK) == MAPID_MONK &&
|
||||
sc->data[SC_DANCING] || sc->data[SC_OBLIVIONCURSE] ||
|
||||
#ifdef RENEWAL
|
||||
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)))
|
||||
)
|
||||
) //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;
|
||||
if( sc->data[SC_FORCEOFVANGUARD] )
|
||||
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])
|
||||
def -= def * (10 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100;
|
||||
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;
|
||||
if(sc->data[SC_FREEZE])
|
||||
mdef += 25*mdef/100;
|
||||
if( sc->data[SC_NEUTRALBARRIER] )
|
||||
mdef += mdef * (10 + sc->data[SC_NEUTRALBARRIER]->val1 * 5) / 100;
|
||||
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;
|
||||
if(sc->data[SC_ANALYZE])
|
||||
|
Loading…
x
Reference in New Issue
Block a user