summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhemagx <ibrahem.h.basyone@gmail.com>2016-10-22 02:28:16 +0200
committerhemagx <ibrahem.h.basyone@gmail.com>2016-10-22 02:28:16 +0200
commitf072f3c9771cf0154f3b207970d86cc857708050 (patch)
tree34579ba5f0b3f71f681489883939d0ac770c7c0a
parentd8441a3522797a25b5bcc46d6e5b38adebd0a70b (diff)
parent431b8aad001d959225aaa41b8d0a80c4d5526229 (diff)
downloadhercules-f072f3c9771cf0154f3b207970d86cc857708050.tar.gz
hercules-f072f3c9771cf0154f3b207970d86cc857708050.tar.bz2
hercules-f072f3c9771cf0154f3b207970d86cc857708050.tar.xz
hercules-f072f3c9771cf0154f3b207970d86cc857708050.zip
Merge pull request #1458 from dastgir/2016-1_summoner
Introduces Summoner Class
-rw-r--r--conf/map/battle/player.conf5
-rw-r--r--conf/map/help.txt2
-rw-r--r--conf/messages.conf3
-rw-r--r--db/constants.conf15
-rw-r--r--db/job_db2.txt2
-rw-r--r--db/pre-re/exp.txt4
-rw-r--r--db/pre-re/item_db.conf12
-rw-r--r--db/pre-re/job_db.conf48
-rw-r--r--db/pre-re/map_zone_db.conf2
-rw-r--r--db/pre-re/skill_db.conf806
-rw-r--r--db/pre-re/skill_tree.conf90
-rw-r--r--db/re/exp.txt4
-rw-r--r--db/re/item_db.conf997
-rw-r--r--db/re/job_db.conf48
-rw-r--r--db/re/map_zone_db.conf2
-rw-r--r--db/re/skill_db.conf806
-rw-r--r--db/re/skill_tree.conf90
-rw-r--r--db/sc_config.txt4
-rw-r--r--doc/item_db.txt4
-rw-r--r--npc/kafras/functions_kafras.txt5
-rw-r--r--sql-files/main.sql4
-rw-r--r--sql-files/upgrades/2016-10-03--20-27.sql23
-rw-r--r--sql-files/upgrades/index.txt1
-rw-r--r--src/char/char.c63
-rw-r--r--src/char/char.h2
-rw-r--r--src/char/inter.c3
-rw-r--r--src/common/mmo.h4
-rw-r--r--src/map/battle.c65
-rw-r--r--src/map/battle.h2
-rw-r--r--src/map/clif.c24
-rw-r--r--src/map/itemdb.c5
-rw-r--r--src/map/itemdb.h2
-rw-r--r--src/map/map.c1
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/packets.h150
-rw-r--r--src/map/pc.c39
-rw-r--r--src/map/pc.h2
-rw-r--r--src/map/script.c7
-rw-r--r--src/map/skill.c217
-rw-r--r--src/map/skill.h48
-rw-r--r--src/map/status.c134
-rw-r--r--src/map/status.h32
-rw-r--r--src/map/unit.c5
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc4
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.Hooks.inc12
45 files changed, 3662 insertions, 137 deletions
diff --git a/conf/map/battle/player.conf b/conf/map/battle/player.conf
index e478a92a1..39e1d9287 100644
--- a/conf/map/battle/player.conf
+++ b/conf/map/battle/player.conf
@@ -110,9 +110,12 @@ max_parameter: 99
// Same as max_parameter, but for 3rd classes.
max_third_parameter: 130
-// Same as max_parameter, but for extend classes (Ex. Super Novice, Kagero/Oboro, Rebellion).
+// Same as max_parameter, but for extended classes (Ex. Super Novice, Kagero/Oboro, Rebellion).
max_extended_parameter: 125
+// Same as max_parameter, but for summoner class
+max_summoner_parameter: 120
+
// Same as max_parameter, but for baby classes.
max_baby_parameter: 80
diff --git a/conf/map/help.txt b/conf/map/help.txt
index a65c7de70..846c16276 100644
--- a/conf/map/help.txt
+++ b/conf/map/help.txt
@@ -102,7 +102,7 @@ jobchange: "Params: <job name|ID>\n" "Changes your job.\n"
" 23 Super Novice 24 Gunslinger 25 Ninja 4045 Super Baby\n"
"4046 Taekwon 4047 Star Gladiator 4049 Soul Linker 4050 Gangsi\n"
"4051 Death Knight 4052 Dark Collector 4190 Ex. Super Novice 4191 Ex. Super Baby\n"
- "4211 Kagerou 4212 Oboro 4215 Rebellion\n"
+ "4211 Kagerou 4212 Oboro 4215 Rebellion 4218 Summoner\n"
"----- Baby Novice And Baby 1st Class -----\n"
"4023 Baby Novice 4024 Baby Swordman 4025 Baby Magician 4026 Baby Archer\n"
"4027 Baby Acolyte 4028 Baby Merchant 4029 Baby Thief\n"
diff --git a/conf/messages.conf b/conf/messages.conf
index b9386b88e..a97a755f7 100644
--- a/conf/messages.conf
+++ b/conf/messages.conf
@@ -608,8 +608,9 @@
666: Sura T
667: Genetic T
668: Shadow Chaser T
+669: Summoner
-//669-855 FREE (please start using from the top if you need, leave the 669+ range for new jobs)
+//670-855 FREE (please start using from the top if you need, leave the 670+ range for new jobs)
// MvP Tomb
856: Tomb
diff --git a/db/constants.conf b/db/constants.conf
index c22435a36..09c0fa9e4 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -225,6 +225,8 @@ constants_db: {
Job_Oboro: 4212
Job_Rebellion: 4215
+ Job_Summoner: 4218
+
comment__: "Job masks / Job map_ids"
EAJL_2_1: 0x0100
EAJL_2_2: 0x0200
@@ -248,6 +250,7 @@ constants_db: {
EAJ_GUNSLINGER: 0x0009
EAJ_NINJA: 0x000A
EAJ_GANGSI: 0x000D
+ EAJ_SUMMONER: 0x000E
EAJ_SUPER_NOVICE: 0x0100
EAJ_KNIGHT: 0x0101
@@ -1380,6 +1383,18 @@ constants_db: {
SC_G_LIFEPOTION: 640
SC_MYSTICPOWDER: 641
+ // Summoner
+ SC_SUHIDE: 642
+ SC_SU_STOOP: 643
+ SC_SPRITEMABLE: 644
+ SC_CATNIPPOWDER: 645
+ SC_SV_ROOTTWIST: 646
+ SC_BITESCAR: 647
+ SC_ARCLOUSEDASH: 648
+ SC_TUNAPARTY: 649
+ SC_SHRIMP: 650
+ SC_FRESHSHRIMP: 651
+
comment__: "Emotes"
e_gasp: 0
e_what: 1
diff --git a/db/job_db2.txt b/db/job_db2.txt
index c2cc06064..37bb7cca1 100644
--- a/db/job_db2.txt
+++ b/db/job_db2.txt
@@ -289,3 +289,5 @@
4212,5,0,4,0,2,3,0,1,6,0,5,1,2,0,4,6,3,0,1,5,2,0,6,3,4,0,5,0,2,0,1,4,0,5,4,0,3,5,1,0,2,4,1,0,5,6,2,1,0,5
// Rebellion
4215,0,5,0,4,0,3,5,4,2,6,0,0,3,4,0,2,5,4,3,6,0,0,3,5,1,4,2,0,0,6,3,0,5,4,1,0,0,5,0,2,6,0,5,3,4,0,0,0,0,1
+// Summoner
+4218,5,0,3,0,5,3,0,2,4,0,2,4,5,0,2,4,5,0,2,4,5,0,6,3,5,0,2,0,6,0,4,5,0,6,0,4,6,0,2,0,5,4,3,0,5,6,3,2,0,5 \ No newline at end of file
diff --git a/db/pre-re/exp.txt b/db/pre-re/exp.txt
index 840a216eb..0d4c44d51 100644
--- a/db/pre-re/exp.txt
+++ b/db/pre-re/exp.txt
@@ -7,7 +7,7 @@
//================================
//Base - Normal and Baby Jobs
-99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4046:4047:4048:4049:4050:4051:4052,0,9,16,25,36,77,112,153,200,253,320,385,490,585,700,830,970,1120,1260,1420,1620,1860,1990,2240,2504,2950,3426,3934,4474,6889,7995,9174,10425,11748,13967,15775,17678,19677,21773,30543,34212,38065,42102,46323,53026,58419,64041,69892,75973,102468,115254,128692,142784,157528,178184,196300,215198,234879,255341,330188,365914,403224,442116,482590,536948,585191,635278,687211,740988,925400,1473746,1594058,1718928,1848355,1982340,2230113,2386162,2547417,2713878,3206160,3681024,4022472,4377024,4744680,5125440,5767272,6204000,6655464,7121664,7602600,9738720,11649960,13643520,18339300,23836800,35658000,48687000,58135000,99999998,100300002,100600902,100902708,101205414,101509034,101813561,102119002,102425359,102732638,103040840,103349964,103660020,103970998,104282915,104595762,104909549,105224282,105539955,105856574,106174147,106492668,106812152,107132590,107453992,107776356,108099683,108423981,108749258,109075506,109402732,109730946,110060139,110390318,110721493,111053662,111386827,111720986,112056149,112392322,112729499,113067686,113406893,113747119,114088363,114430627,114773918,115118244,115463597,115809993,116157424,116505898,116855416,117205984,117557604,117910275,118264005,118618802,118974658,119331582,119689581,120048655,120408804,120770028,121132344,121495743,121860233,122225815,122592496,122960276,123329155,123699142,124070244,124442453,124815785,125190233,125565805,125942508,126320342,126699307,127079404,127460648,127843032,128226563,128611242,128997076,129384065,129772218,130161535,130552023,130943682,131336513,131730524,132125722,132522099,132919665,133318425,133718382,134119541,134521905,134925472,135330251,135736249,136143467,136551905,136961562,137372455,137784568,138197932,138612532,139028368,139445456,139863795,140283386,140704245,141126355,141549734,141974380,142400310,142827507,143255989,143685754,144116820,144549169,144982818,145417767,145854016,146291581,146730461,147170658,147612171,148055015,148499176,148944668,149391509,149839681,150289202,150740070,151192287,151645868,152100812,152557121,153014794,153473847,153934264,154396078,154859271,155323845,155789814,156257180,156725958,157196133,157667719,158140718,158615145,159091000,159568284,160046996,160527136,161008720,161491749,161976222,162462156,162949549,163438404,163928718,164420509,164913776,165408520,165904741,166402453,166901658,167402372,167904578,168408293,168913516,169420264,169928520,170438301,170949622,171462468,171976854,172492782,173010265,173529306,174049903,174572057,175095783,175621067,176147938,176676383,177206416,177738038,178271249,178806065,179342485,179880511,180420157,180961424,181504312,182048836,182594982,183142764,183692200,184243272,184795997,185350391,185906439,186464155,187023556,187584626,188147381,188711822,189277963,189845805,190415349,190986594,191559555,192134234,192710646,193288775,193868638,194450249,195033610,195618720,196205580,196794204,197384594,197976749,198570686,199166404,199763903,200363199,200964293,201567185,202171889,202778407,203386739,203996900,204608890,205222726,205838392,206455919,207075292,207696526,208319621,208944579,209571414,210200126,210830732,211463232,212097626,212733929,213372142,214012264,214654297,215298271,215944171,216592013,217241796,217893521,218547205,219202846,219860461,220520050,221181612,221845165,222510708,223178240,223847779,224519324,225192890,225868479,226546090,227225739,227907425,228591151,229276930,229964763,230654667,231346640,232040684,232736814,233435031,234135333,234837738,235542262,236248887,236957631,237668509,238381522,239096669,239813967,240533414,241255013,241978778,242704725,243432839,244163135,244895630,245630324,246367216,247106322,247847644,248591196,249336978,250084992,250835252,251587759,252342528,253099560,253858855,254620429,255384298,256150462,256918920,257689674,258462754,259238145,260015863,260795909,261578297,262363044,263150134,263939583,264731408,265525607,266322182,267121148,267922521,268726301,269532488,270341083,271152116,271965590,272781502,273599854,274420645,275243907,276069641,276897846,277728555,278561735,279397419,280235606,281076328,281919554,282765316,283613613,284464446,285317847,286173815,287032351,287893455,288757126,289623397,290492268,291363738,292237841,293114575,293993909,294875907,295760537,296647831,297537789,298430411,299325697,300223679,301124357,302027731,302933833,303842631,304754158,305668412,306585427,307505202,308427738,309353033,310281089,311211937,312145578,313082011,314021268,314963350,315908256,316855987,317806574,318759986,319716286,320675443,321637489,322602423,323570246,324540957,325514589,326491142,327470616,328453042,329438422,330426754,331418039,332412309,333409563,334409803,335413028,336419270,337428528,338440836,339456161,340474535,341495958,342520463,343548016,344578683,345612431,346649260,347689203,348732290,349778492,350827838,351880330,352935968,353994783,355056775,356121945,357190325,358261914,359336713,360414721,361495971,362580463,363668196,364759204,365853485,366951040,368051900,369156067,370263539,371374350,372488466,373605953,374726777,375850972,376978536,378109471,379243808,380381547,381522688,382667264,383815273,384966717,386121628,387280004,388441848,389607189,390776029,391948368,393124205,394303572,395486503,396672963,397862987,399056573,400253754,401454529,402658900,403866897,405078521,406293772,407512649,408735186,409961414,411191300,412424878,413662147,414903139,416147854,417396292,418648485,419904434,421164170,422427661,423694939,424966037,426240955,427519691,428802248,430088655,431378914,432673057,433971084,435272994,436578820,437888561,439202250,440519855,441841408,443166941,444496454,445829946,447167451,448508967,449854496,451204068,452557685,453915378,455277147,456642993,458012946,459387008,460765178,462147489,463533940,464924563,466319359,467718327,469121500,470528878,471940460,473356279,474776366,476200691,477629316,479062209,480499404,481940900,483386728,484836890,486291416,487750308,489213565,490681218,492153269,493629750,495110659,496595998,498085798,499580059,501078814,502582062,504089804,505602071,507118896,508640279,510166219,511696717,513231804,514771514,516315845,517864798,519418405,520976666,522539612,524107245,525679564,527256601,528838388,530424926,532016213,533612283,535213136,536818770,538429251,540044547,541664688,543289709,544919608,546554386,548194042,549838641,551488183,553142668,554802095,556466529,558135971,559810419,561489875,563174337,564863870,566558475,568258151,569962962,571672844,573387862,575108015,576833368,578563856,580299543,582040430,583786581,585537931,587294546,589056423,590823629,592596099,594373896,596157022,597945475,599739320,601538558,603343188,605153210,606968688,608789622,610616013,612447860,614285228,616128116,617976525,619830454,621689968,623555066,625425750,627302018,629183935,631071501,632964715,634863643,636768220,638678509,640594576,642516357,644443914,646377249,648316425,650261378,652212173,654168810,656131352,658099735,660074024,662054283,664040448,666032583,668030687,670034761,672044870,674061012,676083189,678111463,680145836,682186307,684232877,686285609,688344503,690409559,692480779,694558224,696641897,698731860,700828050,702930530,705039366,707154492,709275974,711403810,713538066,715678677,717825706,719979220,722139152,724305568,726478467,728657914,730843909,733036451,735235604,737441306,739653619,741872608,744098273,746330614,748569631,750815324,753067757,755326995,757592972,759865754,762145341,764431796,766725119,769025311,771332371,773646365,775967291,778295214,780630134,782972050,785320964,787676939,790039975,792410136,794787358,797171706,799563243,801961970,804367886,806780992,809201351,811628965,814063896,816506080,818955647,821412532,823876798,826348447,828827478,831313955,833807943,836309377,838818321,841334776,843858806,846390410,848929588,851476406,854030863,856592958,859162756,861740258,864325526,866918498,869519301,872127872,874744273,877368507,880000635,882640660,885288580,887944460,890608299,893280163,895960051,898647962,901343898,904047922,906760098,909480427,912208908,914945541,917690391,920443458,923204805,925974433,928752406,931538660,934333323,937136331,939947748,942767639,945595938,948432775,951278086,954131934,956994319,959865306,962744895,965633150,968530071,971435658,974349975,977273022,980204863,983145499,986094929,989053217,992020428,994996498,997981490,1000975469,1003978435,1006990388,1010011392,1013041447,1016080617,1019128903,1022186304,1025252884,1028328644,1031413647,1034507894,1037611449,1040724312,1043846482,1046978025,1050119004,1053269354,1056429206,1059598493,1062777281,1065965634,1069163551,1072371032,1075588143,1078814882,1082051315,1085297504,1088553451,1091819155,1095094616,1098379962,1101675066,1104980056,1108295059,1111619948,1114954851,1118299768,1121654698,1125019643,1128394730,1131779959,1135175331,1138580845,1141996630,1145422685,1148859012,1152305609,1155762605,1159229871,1162707537,1166195731,1169694323,1173203443,1176723090,1180253265,1183794096,1187345454,1190907469,1194480267,1198063721,1201657960,1205262983,1208878790,1212505509,1216143013,1219791430,1223450888,1227121258,1230802669,1234495121,1238198615,1241913277,1245638981,1249375983,1253124154,1256883494,1260654132,1264436068,1268229430,1272034090,1275850176,1279677817,1283516884,1287367505,1291229681,1295103412,1298988697,1302885665,1306794316,1310714778,1314646923,1318590880,1322546648,1326514355,1330493874,1334485333,1338488860,1342504326,1346531861,1350571463,1354623262,1358687130,1362763193,1366851453,1370952039,1375064948,1379190183,1383327743,1387477756,1391640222,1395815141,1400002642,1404202725,1408415389,1412640635,1416878591,1421129257,1425392633,1429668847,1433957900,1438259791,1442574649,1446902346,1451243137,1455596895,1459963749,1464343697,1468736741,1473143009,1477562500,1481995214,1486441280
+99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4046:4047:4048:4049:4050:4051:4052:4218,0,9,16,25,36,77,112,153,200,253,320,385,490,585,700,830,970,1120,1260,1420,1620,1860,1990,2240,2504,2950,3426,3934,4474,6889,7995,9174,10425,11748,13967,15775,17678,19677,21773,30543,34212,38065,42102,46323,53026,58419,64041,69892,75973,102468,115254,128692,142784,157528,178184,196300,215198,234879,255341,330188,365914,403224,442116,482590,536948,585191,635278,687211,740988,925400,1473746,1594058,1718928,1848355,1982340,2230113,2386162,2547417,2713878,3206160,3681024,4022472,4377024,4744680,5125440,5767272,6204000,6655464,7121664,7602600,9738720,11649960,13643520,18339300,23836800,35658000,48687000,58135000,99999998,100300002,100600902,100902708,101205414,101509034,101813561,102119002,102425359,102732638,103040840,103349964,103660020,103970998,104282915,104595762,104909549,105224282,105539955,105856574,106174147,106492668,106812152,107132590,107453992,107776356,108099683,108423981,108749258,109075506,109402732,109730946,110060139,110390318,110721493,111053662,111386827,111720986,112056149,112392322,112729499,113067686,113406893,113747119,114088363,114430627,114773918,115118244,115463597,115809993,116157424,116505898,116855416,117205984,117557604,117910275,118264005,118618802,118974658,119331582,119689581,120048655,120408804,120770028,121132344,121495743,121860233,122225815,122592496,122960276,123329155,123699142,124070244,124442453,124815785,125190233,125565805,125942508,126320342,126699307,127079404,127460648,127843032,128226563,128611242,128997076,129384065,129772218,130161535,130552023,130943682,131336513,131730524,132125722,132522099,132919665,133318425,133718382,134119541,134521905,134925472,135330251,135736249,136143467,136551905,136961562,137372455,137784568,138197932,138612532,139028368,139445456,139863795,140283386,140704245,141126355,141549734,141974380,142400310,142827507,143255989,143685754,144116820,144549169,144982818,145417767,145854016,146291581,146730461,147170658,147612171,148055015,148499176,148944668,149391509,149839681,150289202,150740070,151192287,151645868,152100812,152557121,153014794,153473847,153934264,154396078,154859271,155323845,155789814,156257180,156725958,157196133,157667719,158140718,158615145,159091000,159568284,160046996,160527136,161008720,161491749,161976222,162462156,162949549,163438404,163928718,164420509,164913776,165408520,165904741,166402453,166901658,167402372,167904578,168408293,168913516,169420264,169928520,170438301,170949622,171462468,171976854,172492782,173010265,173529306,174049903,174572057,175095783,175621067,176147938,176676383,177206416,177738038,178271249,178806065,179342485,179880511,180420157,180961424,181504312,182048836,182594982,183142764,183692200,184243272,184795997,185350391,185906439,186464155,187023556,187584626,188147381,188711822,189277963,189845805,190415349,190986594,191559555,192134234,192710646,193288775,193868638,194450249,195033610,195618720,196205580,196794204,197384594,197976749,198570686,199166404,199763903,200363199,200964293,201567185,202171889,202778407,203386739,203996900,204608890,205222726,205838392,206455919,207075292,207696526,208319621,208944579,209571414,210200126,210830732,211463232,212097626,212733929,213372142,214012264,214654297,215298271,215944171,216592013,217241796,217893521,218547205,219202846,219860461,220520050,221181612,221845165,222510708,223178240,223847779,224519324,225192890,225868479,226546090,227225739,227907425,228591151,229276930,229964763,230654667,231346640,232040684,232736814,233435031,234135333,234837738,235542262,236248887,236957631,237668509,238381522,239096669,239813967,240533414,241255013,241978778,242704725,243432839,244163135,244895630,245630324,246367216,247106322,247847644,248591196,249336978,250084992,250835252,251587759,252342528,253099560,253858855,254620429,255384298,256150462,256918920,257689674,258462754,259238145,260015863,260795909,261578297,262363044,263150134,263939583,264731408,265525607,266322182,267121148,267922521,268726301,269532488,270341083,271152116,271965590,272781502,273599854,274420645,275243907,276069641,276897846,277728555,278561735,279397419,280235606,281076328,281919554,282765316,283613613,284464446,285317847,286173815,287032351,287893455,288757126,289623397,290492268,291363738,292237841,293114575,293993909,294875907,295760537,296647831,297537789,298430411,299325697,300223679,301124357,302027731,302933833,303842631,304754158,305668412,306585427,307505202,308427738,309353033,310281089,311211937,312145578,313082011,314021268,314963350,315908256,316855987,317806574,318759986,319716286,320675443,321637489,322602423,323570246,324540957,325514589,326491142,327470616,328453042,329438422,330426754,331418039,332412309,333409563,334409803,335413028,336419270,337428528,338440836,339456161,340474535,341495958,342520463,343548016,344578683,345612431,346649260,347689203,348732290,349778492,350827838,351880330,352935968,353994783,355056775,356121945,357190325,358261914,359336713,360414721,361495971,362580463,363668196,364759204,365853485,366951040,368051900,369156067,370263539,371374350,372488466,373605953,374726777,375850972,376978536,378109471,379243808,380381547,381522688,382667264,383815273,384966717,386121628,387280004,388441848,389607189,390776029,391948368,393124205,394303572,395486503,396672963,397862987,399056573,400253754,401454529,402658900,403866897,405078521,406293772,407512649,408735186,409961414,411191300,412424878,413662147,414903139,416147854,417396292,418648485,419904434,421164170,422427661,423694939,424966037,426240955,427519691,428802248,430088655,431378914,432673057,433971084,435272994,436578820,437888561,439202250,440519855,441841408,443166941,444496454,445829946,447167451,448508967,449854496,451204068,452557685,453915378,455277147,456642993,458012946,459387008,460765178,462147489,463533940,464924563,466319359,467718327,469121500,470528878,471940460,473356279,474776366,476200691,477629316,479062209,480499404,481940900,483386728,484836890,486291416,487750308,489213565,490681218,492153269,493629750,495110659,496595998,498085798,499580059,501078814,502582062,504089804,505602071,507118896,508640279,510166219,511696717,513231804,514771514,516315845,517864798,519418405,520976666,522539612,524107245,525679564,527256601,528838388,530424926,532016213,533612283,535213136,536818770,538429251,540044547,541664688,543289709,544919608,546554386,548194042,549838641,551488183,553142668,554802095,556466529,558135971,559810419,561489875,563174337,564863870,566558475,568258151,569962962,571672844,573387862,575108015,576833368,578563856,580299543,582040430,583786581,585537931,587294546,589056423,590823629,592596099,594373896,596157022,597945475,599739320,601538558,603343188,605153210,606968688,608789622,610616013,612447860,614285228,616128116,617976525,619830454,621689968,623555066,625425750,627302018,629183935,631071501,632964715,634863643,636768220,638678509,640594576,642516357,644443914,646377249,648316425,650261378,652212173,654168810,656131352,658099735,660074024,662054283,664040448,666032583,668030687,670034761,672044870,674061012,676083189,678111463,680145836,682186307,684232877,686285609,688344503,690409559,692480779,694558224,696641897,698731860,700828050,702930530,705039366,707154492,709275974,711403810,713538066,715678677,717825706,719979220,722139152,724305568,726478467,728657914,730843909,733036451,735235604,737441306,739653619,741872608,744098273,746330614,748569631,750815324,753067757,755326995,757592972,759865754,762145341,764431796,766725119,769025311,771332371,773646365,775967291,778295214,780630134,782972050,785320964,787676939,790039975,792410136,794787358,797171706,799563243,801961970,804367886,806780992,809201351,811628965,814063896,816506080,818955647,821412532,823876798,826348447,828827478,831313955,833807943,836309377,838818321,841334776,843858806,846390410,848929588,851476406,854030863,856592958,859162756,861740258,864325526,866918498,869519301,872127872,874744273,877368507,880000635,882640660,885288580,887944460,890608299,893280163,895960051,898647962,901343898,904047922,906760098,909480427,912208908,914945541,917690391,920443458,923204805,925974433,928752406,931538660,934333323,937136331,939947748,942767639,945595938,948432775,951278086,954131934,956994319,959865306,962744895,965633150,968530071,971435658,974349975,977273022,980204863,983145499,986094929,989053217,992020428,994996498,997981490,1000975469,1003978435,1006990388,1010011392,1013041447,1016080617,1019128903,1022186304,1025252884,1028328644,1031413647,1034507894,1037611449,1040724312,1043846482,1046978025,1050119004,1053269354,1056429206,1059598493,1062777281,1065965634,1069163551,1072371032,1075588143,1078814882,1082051315,1085297504,1088553451,1091819155,1095094616,1098379962,1101675066,1104980056,1108295059,1111619948,1114954851,1118299768,1121654698,1125019643,1128394730,1131779959,1135175331,1138580845,1141996630,1145422685,1148859012,1152305609,1155762605,1159229871,1162707537,1166195731,1169694323,1173203443,1176723090,1180253265,1183794096,1187345454,1190907469,1194480267,1198063721,1201657960,1205262983,1208878790,1212505509,1216143013,1219791430,1223450888,1227121258,1230802669,1234495121,1238198615,1241913277,1245638981,1249375983,1253124154,1256883494,1260654132,1264436068,1268229430,1272034090,1275850176,1279677817,1283516884,1287367505,1291229681,1295103412,1298988697,1302885665,1306794316,1310714778,1314646923,1318590880,1322546648,1326514355,1330493874,1334485333,1338488860,1342504326,1346531861,1350571463,1354623262,1358687130,1362763193,1366851453,1370952039,1375064948,1379190183,1383327743,1387477756,1391640222,1395815141,1400002642,1404202725,1408415389,1412640635,1416878591,1421129257,1425392633,1429668847,1433957900,1438259791,1442574649,1446902346,1451243137,1455596895,1459963749,1464343697,1468736741,1473143009,1477562500,1481995214,1486441280
//Base - Trans Jobs
99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,10,18,28,40,85,123,168,220,278,400,481,613,731,875,1038,1213,1400,1575,1775,2268,2604,2786,3136,3506,4130,4796,5508,6264,9645,12392,14220,16159,18209,21649,24451,27401,30499,33748,47342,58160,64711,71573,78749,90144,99312,108870,118816,129154,174196,213220,238080,264150,291427,329640,363155,398116,434526,472381,610848,731828,806448,884232,965180,1073896,1170382,1270556,1374422,1481976,1850800,3389616,3666333,3953534,4251217,4559382,5129260,5488173,5859059,6241919,7374168,9570662,10458427,11380262,12336168,13326144,14994907,16130400,17304206,18516326,19766760,29216160,34949880,40930560,55017900,71510400,106974000,146061000,174405000,343210000,343896395,344584167,345273319,345963849,346655758,347349046,348043745,348739822,349437278,350136145,350836423,351538079,352241147,352945625,353651514,354358813,355067524,355777645,356489178,357202153,357916539,358632367,359349607,360068289,360788415,361509983,362232994,362957448,363683345,364410717,365139532,365869789,366601522,367334729,368069379,368805505,369543105,370282180,371022730,371764755,372508287,373253294,373999776,374747765,375497261,376248232,377000710,377754695,378510187,379267186,380025724,380785769,381547321,382310412,383075010,383841148,384608824,385378039,386148794,386921087,387694920,388470291,389247234,390025716,390805769,391587361,392370524,393155258,393941564,394729440,395518888,396309907,397102529,397896722,398692519,399489886,400288857,401089431,401891608,402695388,403500772,404307759,405116349,405926574,406738402,407551866,408366965,409183699,410002068,410822073,411643713,412466988,413291899,414118477,414946690,415776570,416608118,417441333,418276215,419112765,419950982,420790867,421632450,422475702,423320652,424167270,425015587,425865604,426717320,427570735,428425850,429282696,430141242,431001519,431863495,432727203,433592643,434459814,435328716,436199350,437071747,437945876,438821768,439699392,440578779,441459930,442342844,443227522,444113963,445002168,445892168,446783932,447677492,448572847,449469966,450368880,451269622,452172159,453076492,453982621,454890577,455800361,456711940,457625348,458540582,459457645,460376535,461297285,462219862,463144299,464070564,464998689,465928673,466860517,467794221,468729784,469667239,470606554,471547761,472490859,473435817,474382667,475331409,476282074,477234631,478189080,479145453,480103718,481063907,482026019,482990055,483956015,484923899,485893739,486865502,487839222,488814897,489792529,490772116,491753659,492737158,493722613,494710056,495699455,496690842,497684216,498679579,499676930,500676268,501677595,502680942,503686276,504693631,505703006,506714400,507727815,508743250,509760737,510780244,511801803,512825382,513851013,514878696,515908432,516940219,517974091,519010014,520048022,521088114,522130290,523174551,524220895,525269324,526319837,527372466,528427211,529484040,530542986,531604048,532667226,533732552,534799995,535869586,536941325,538015180,539091184,540169368,541249668,542332149,543416810,544503651,545592673,546683875,547777257,548872820,549970563,551070486,552172590,553276938,554383467,555492240,556603194,557716392,558831834,559949457,561069324,562191436,563315792,564442393,565571238,566702391,567835790,568971432,570109384,571249580,572392084,573536833,574683890,575833257,576984931,578138915,579295207,580453807,581614716,582777934,583943460,585111359,586281567,587454083,588628973,589806234,590985805,592167748,593352064,594538752,595727814,596919248,598113055,599309234,600507851,601708840,602912266,604118064,605326300,606536908,607749954,608965436,610183355,611403711,612626503,613851733,615079399,616309567,617542171,618777212,620014754,621254797,622497277,623742258,624989740,626239723,627492207,628747192,630004678,631264665,632527153,633792206,635059760,636329879,637602499,638877684,640155434,641435750,642718631,644004076,645292087,646582663,647875804,649171510,650469846,651770746,653074276,654380435,655689159,657000513,658314496,659631108,660950349,662272219,663596719,664923912,666253734,667586250,668921395,670259233,671599765,672942926,674288780,675637328,676988569,678342503,679699195,681058580,682420659,683785495,685153025,686523312,687896356,689272159,690650654,692031907,693415982,694802814,696192403,697584750,698979919,700377845,701778593,703182163,704588490,705997638,707409609,708824400,710242014,711662449,713085770,714511913,715940941,717372791,718807527,720245148,721685591,723128920,724575135,726024235,727476285,728931221,730389043,731849815,733313472,734780080,736249637,737722144,739197537,740675944,742157300,743641607,745128864,746619070,748112290,749608525,751107709,752609908,754115120,755623346,757134587,758648841,760166110,761686392,763209753,764736127,766265580,767798111,769333656,770872279,772413980,773958760,775506681,777057681,778611759,780168979,781729277,783292718,784859301,786429026,788001893,789577903,791157055,792739349,794324786,795913429,797505214,799100205,800698403,802299808,803904354,805512172,807123195,808737425,810354861,811975568,813599482,815226666,816857120,818490781,820127712,821767978,823411514,825058321,826708399,828361811,830018494,831678511,833341863,835008550,836678571,838351927,840028618,841708643,843392067,845078826,846768983,848462476,850159367,851859656,853563345,855270432,856980918,858694867,860412215,862133026,863857299,865584972,867316107,869050705,870788766,872530291,874275342,876023856,877775897,879531401,881290432,883052990,884819075,886588687,888361826,890138556,891918814,893702598,895489974,897280940,899075498,900873647,902675388,904480719,906289642,908102219,909918389,911738213,913561693,915388763,917219489,919053935,920892036,922733792,924579267,926428398,928281248,930137754,931997979,933861923,935729651,937601099,939476266,941355216,943237886,945124339,947014576,948908596,950806400,952707988,954613359,956522578,958435580,960352430,962273128,964197673,966126066,968058307,969994395,971934331,973878179,975825939,977777546,979733065,981692496,983655839,985623094,987594324,989569467,991548585,993531679,995518685,997509667,999504689,1001503687,1003506661,1005513675,1007524665,1009539695,1011558765,1013581875,1015609025,1017640215,1019675446,1021714780,1023758155,1025805633,1027857216,1029912903,1031972695,1034036590,1036104654,1038176822,1040253158,1042333663,1044418272,1046507113,1048600123,1050697301,1052798647,1054904226,1057014037,1059128016,1061246228,1063368673,1065495414,1067626387,1069761593,1071901095,1074044894,1076192990,1078345382,1080502006,1082662992,1084828338,1086997916,1089171855,1091350155,1093532816,1095719837,1097911219,1100106962,1102307193,1104511786,1106720739,1108934181,1111151983,1113374275,1115601056,1117832197,1120067827,1122307946,1124552555,1126801652,1129055238,1131313313,1133575877,1135843058,1138114728,1140390888,1142671664,1144956929,1147246812,1149541312,1151840429,1154144035,1156452258,1158765098,1161082556,1163404631,1165731451,1168062888,1170398943,1172739743,1175085161,1177435324,1179790104,1182149629,1184513900,1186882917,1189256679,1191635186,1194018439,1196406438,1198799181,1201196799,1203599162,1206006271,1208418253,1210835109,1213256710,1215683186,1218114535,1220550757,1222991854,1225437824,1227888668,1230344385,1232805105,1235270698,1237741165,1240216634,1242696977,1245182321,1247672668,1250168017,1252668367,1255173720,1257684075,1260199431,1262719790,1265245150,1267775641,1270311134,1272851757,1275397382,1277948137,1280504023,1283065039,1285631185,1288202461,1290778867,1293360404,1295947071,1298538868,1301135924,1303738110,1306345554,1308958257,1311576090,1314199182,1316827532,1319461141,1322100008,1324744133,1327393646,1330048417,1332708446,1335373862,1338044537,1340720598,1343402046,1346088753,1348780846,1351478326,1354181193,1356889575,1359603344,1362322499,1365047170,1367777227,1370512799,1373253758,1376000232,1378752221,1381509725,1384272743,1387041277,1389815326,1392594890,1395380098,1398170820,1400967185,1403769066,1406576590,1409389757,1412208439,1415032764,1417862732,1420698473,1423539856,1426386883,1429239681,1432098122,1434962335,1437832191,1440707819,1443589218,1446476389,1449369331,1452268045,1455172530,1458082787,1460998944,1463920872,1466848700,1469782299,1472721798,1475667197,1478618496,1481575694,1484538793,1487507791,1490482817,1493463743,1496450568,1499443422,1502442304,1505447085,1508457895,1511474732,1514497598,1517526492,1520561541,1523602619,1526649725,1529702988,1532762406,1535827853,1538899456,1541977215,1545061130,1548151202,1551247430,1554349943,1557458611,1560573437,1563694546,1566821940,1569955491,1573095326,1576241446,1579393850,1582552538,1585717640,1588889026,1592066825,1595250908,1598441404,1601638185,1604841379,1608050985,1611267004,1614489436,1617718409,1620953795,1624195721,1627444061,1630698942,1633960235,1637228070,1640502445,1643783362,1647070948,1650365075,1653665743,1656973081,1660286959,1663607507,1666934724,1670268610,1673609166,1676956391,1680310285,1683670849,1687038210,1690412240,1693793069,1697180566,1700574861,1703975953,1707383843,1710798531,1714220145,1717648556,1721083764,1724525899,1727974959,1731430817,1734893600,1738363310,1741839945,1745323635,1748814250,1752311791,1755816386,1759328035,1762846610,1766372239,1769904922,1773444660,1776991451,1780545425,1784106452,1787674663,1791249927,1794832373,1798422002,1802018813,1805622807,1809233983,1812852341,1816478010,1820110861,1823751022,1827398495,1831053278,1834715371,1838384775,1842061490,1845745515,1849436979,1853135754,1856841967,1860555620,1864276711,1868005241,1871741210,1875484618,1879235593,1882994006,1886759987,1890533407,1894314394,1898102947,1901899068,1905702757,1909514140,1913333091,1917159736,1920993949,1924835858,1928685462,1932542761,1936407755,1940280573,1944161087,1948049295,1951945328,1955849184,1959760864,1963680367,1967607694,1971542844,1975485818,1979436744,1983395622,1987362324,1991336977,1995319582,1999310139,2003308648,2007315237,2011329778,2015352399,2019383101,2023421754,2027468487,2031523428,2035586450,2039657552,2043736862,2047824253,2051919851,2056023658,2060135674,2064255898,2068384330,2072521099,2076666076
@@ -16,7 +16,7 @@
10,0:4023,1,10,18,28,40,91,151,205,268,340
//Job - 1st Classes & Baby 1st Classes
-50,1:2:3:4:5:6:4024:4025:4026:4027:4028:4029:4046:4050,1,30,43,58,76,116,180,220,272,336,520,604,699,802,948,1125,1668,1937,2226,3040,3988,5564,6272,7021,9114,11473,15290,16891,18570,23229,28359,36478,39716,43088,52417,62495,78160,84175,90404,107611,125915,153941,191781,204351,248352,286212,386371,409795,482092,509596,519787,530182,540785,551600,562631,573883,585360,597067,609008,621188,633611,646283,659208,672392,685839,699555,713546,727816,742372,757219,772363,787810,803566,819637,836029,852749,869803,887199,904942,923040,941500,960329,979535,999125,1019107,1039489,1060278,1081483,1103112,1125174,1147677,1170630,1194042,1217922,1242280,1267125,1292467,1318316,1344682,1371575,1399006,1426986,1455525,1484635,1514327,1544613,1575505,1607015,1639155,1671938,1705376,1739483,1774272,1809757,1845952,1882871,1920528,1958938,1998116,2038078,2078839,2120415,2162823,2206079,2250200,2295203,2341107,2387929,2435687,2484400,2534087,2584768,2636463,2689192,2742975,2797834,2853790,2910865,2969082,3028463,3089032,3150812,3213828,3278104,3343666,3410539,3478749,3548323,3619289,3691674,3765507,3840817,3917633,3995985,4075904,4157422,4240570,4325381,4411888,4500125,4590127,4681929,4775567,4871078,4968499,5067868,5169225,5272609,5378061,5485622,5595334,5707240,5821384,5937811,6056567,6177698,6301251,6427275,6555820,6686936,6820674,6957087,7096228,7238152,7382914,7530572,7681183,7834806,7991501,8151330,8314356,8480642,8650254,8823258,8999722,9179716,9363310,9550576,9741587,9936418,10135146,10337848,10544604,10755495,10970604,11190015,11413815,11642091,11874932,12112430,12354678,12601771,12853806,13110881,13373098,13640559,13913369,14191636,14475468,14764977,15060276,15361481,15668710,15982083,16301724,16627758,16960312,17299517,17645505,17998413,18358379,18725547,19100058,19482058,19871698,20269131,20674514,21088003,21509763,21939958,22378756,22826330,23282856,23748512,24223481,24707949,25202106,25706147,26220270,26744674,27279566,27825156,28381658,28949290,29528275
+50,1:2:3:4:5:6:4024:4025:4026:4027:4028:4029:4046:4050:4218,1,30,43,58,76,116,180,220,272,336,520,604,699,802,948,1125,1668,1937,2226,3040,3988,5564,6272,7021,9114,11473,15290,16891,18570,23229,28359,36478,39716,43088,52417,62495,78160,84175,90404,107611,125915,153941,191781,204351,248352,286212,386371,409795,482092,509596,519787,530182,540785,551600,562631,573883,585360,597067,609008,621188,633611,646283,659208,672392,685839,699555,713546,727816,742372,757219,772363,787810,803566,819637,836029,852749,869803,887199,904942,923040,941500,960329,979535,999125,1019107,1039489,1060278,1081483,1103112,1125174,1147677,1170630,1194042,1217922,1242280,1267125,1292467,1318316,1344682,1371575,1399006,1426986,1455525,1484635,1514327,1544613,1575505,1607015,1639155,1671938,1705376,1739483,1774272,1809757,1845952,1882871,1920528,1958938,1998116,2038078,2078839,2120415,2162823,2206079,2250200,2295203,2341107,2387929,2435687,2484400,2534087,2584768,2636463,2689192,2742975,2797834,2853790,2910865,2969082,3028463,3089032,3150812,3213828,3278104,3343666,3410539,3478749,3548323,3619289,3691674,3765507,3840817,3917633,3995985,4075904,4157422,4240570,4325381,4411888,4500125,4590127,4681929,4775567,4871078,4968499,5067868,5169225,5272609,5378061,5485622,5595334,5707240,5821384,5937811,6056567,6177698,6301251,6427275,6555820,6686936,6820674,6957087,7096228,7238152,7382914,7530572,7681183,7834806,7991501,8151330,8314356,8480642,8650254,8823258,8999722,9179716,9363310,9550576,9741587,9936418,10135146,10337848,10544604,10755495,10970604,11190015,11413815,11642091,11874932,12112430,12354678,12601771,12853806,13110881,13373098,13640559,13913369,14191636,14475468,14764977,15060276,15361481,15668710,15982083,16301724,16627758,16960312,17299517,17645505,17998413,18358379,18725547,19100058,19482058,19871698,20269131,20674514,21088003,21509763,21939958,22378756,22826330,23282856,23748512,24223481,24707949,25202106,25706147,26220270,26744674,27279566,27825156,28381658,28949290,29528275
//Job - 2nd Classes & Baby 2nd Classes
50,7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4051:4052,1,144,184,284,348,603,887,1096,1598,2540,3676,4290,4946,6679,9492,12770,14344,16005,20642,27434,35108,38577,42206,52708,66971,82688,89544,96669,117821,144921,174201,186677,199584,238617,286366,337147,358435,380376,447685,526989,610246,644736,793535,921810,1106758,1260955,1487304,1557657,1990632,2083386,2125053,2167554,2210905,2255123,2300225,2346229,2393153,2441016,2489836,2539632,2590424,2642232,2695076,2748977,2803956,2860035,2917235,2975579,3035090,3095791,3157706,3220860,3285277,3350982,3418001,3486360,3556087,3627208,3699752,3773746,3849220,3926204,4004728,4084822,4166518,4249848,4334844,4421540,4509970,4600169,4692172,4786015,4881735,4979369,5078956,5180535,5284145,5389827,5497623,5607575,5719726,5834120,5950802,6069817,6191213,6315037,6441337,6570163,6701566,6835597,6972308,7111754,7253988,7399067,7547048,7697988,7851947,8008985,8169164,8332547,8499197,8669180,8842563,9019414,9199802,9383797,9571472,9762901,9958158,10157320,10360466,10567675,10779028,10994608,11214499,11438788,11667563,11900914,12138932,12381710,12629343,12881929,13139567,13402358,13670404,13943811,14222686,14507139,14797281,15093226,15395090,15702991,16017050,16337390,16664137,16997419,17337368,17684115,18037797,18398551,18766522,19141852,19524688,19915181,20313483,20719753,21134146,21556828,21987964,22427722,22876276,23333801,23800475,24276485,24762013,25257251,25762396,26277643,26803196,27339259,27886044,28443764,29012638,29592890,30184747,30788442,31404210,32032293,32672937,33326394,33992921,34672777,35366230,36073555,36795026,37530923,38281541,39047170,39828110,40624673,41437164,42265906,43111221,43973443,44852912,45749969,46664966,47598266,48550228,49521231,50511655,51521888,52552324,53603369,54675434,55768939,56884317,58022001,59182438,60366087,61573408,62804874,64060968,65342186,66649026,67982003,69341638,70728471,72143040,73585899,75057612,76558766,78089941,79651741,81244777,82869669,84527063,86217603,87941950,89700789,91494806,93324702,95191196,97095022,99036922,101017656,103038007,105098766,107200741,109344756,111531644,113762278,116037523,118358268,120725435
diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf
index 4ba5719a4..4e77704da 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -1702,6 +1702,7 @@ item_db: (
Dark_Collector: true
Kagerou: true
Rebellion: true
+ Summoner: true
}
EquipLv: 40
BuyingStore: true
@@ -67170,6 +67171,16 @@ item_db: (
Script: <" itemheal 0,10; ">
},
{
+ Id: 11602
+ AegisName: "Catnip_Fruit"
+ Name: "Catnip Fruit"
+ Type: 0
+ Buy: 15
+ Weight: 1
+ Upper: 63
+ Script: <" itemheal rand(10, 40), 0; ">
+},
+{
Id: 11701
AegisName: "Girl_Bunch_Of_Flower"
Name: "Girl's Bouquet"
@@ -93370,6 +93381,7 @@ item_db: (
Dark_Collector: true
Kagerou: true
Rebellion: true
+ Summoner: true
}
EquipLv: 40
Script: <" sc_start SC_ATTHASTE_POTION2, 1800000, 0; ">
diff --git a/db/pre-re/job_db.conf b/db/pre-re/job_db.conf
index 1c8e4ca60..5f5131726 100644
--- a/db/pre-re/job_db.conf
+++ b/db/pre-re/job_db.conf
@@ -1390,3 +1390,51 @@ Expanded_Super_Novice: {
Expanded_Super_Baby: {
Inherit: ("Novice")
}
+// Summoner HP/SP is not known, below table are generated and near to official HP/SP.
+Summoner: {
+ Weight: 20000
+ BaseASPD: {
+ Fist: 45
+ Dagger: 55
+ Rod: 55
+ Book: 43
+ TwoHandRod: 55
+ }
+ HPTable:[ 40, 69, 80, 92, 105, 119, 134, 150, 167, 185, // 1 - 10
+ 204, 224, 245, 268, 291, 315, 341, 367, 395, 423, // 11 - 20
+ 453, 484, 515, 548, 582, 617, 653, 690, 728, 767, // 21 - 30
+ 807, 848, 890, 934, 978, 1023, 1070, 1117, 1166, 1215, // 31 - 40
+ 1266, 1317, 1370, 1424, 1479, 1534, 1591, 1649, 1708, 1768, // 41 - 50
+ 1829, 1891, 1955, 2019, 2084, 2150, 2218, 2286, 2356, 2426, // 51 - 60
+ 2498, 2570, 2644, 2719, 2794, 2871, 2949, 3028, 3108, 3189, // 61 - 70
+ 3271, 3354, 3438, 3523, 3610, 3697, 3785, 3875, 3965, 4056, // 71 - 80
+ 4149, 4242, 4337, 4433, 4529, 4627, 4726, 4826, 4927, 5029, // 81 - 90
+ 5132, 5236, 5341, 5447, 5554, 5662, 5772, 5882, 5993, 6106, // 91 - 100
+ 6219, 6334, 6449, 6566, 6684, 6802, 6922, 7043, 7165, 7288, // 101 - 110
+ 7412, 7537, 7663, 7790, 7918, 8047, 8177, 8309, 8441, 8574, // 111 - 120
+ 8709, 8844, 8981, 9118, 9257, 9397, 9537, 9679, 9822, 9966, // 121 - 130
+ 10111, 10257, 10404, 10552, 10701, 10851, 11002, 11155, 11308, 11462, // 131 - 140
+ 11618, 11774, 11932, 12090, 12250, 12410, 12572, 12735, 12898, 13063, // 141 - 150
+ 13229, 13396, 13564, 13733, 13903, 14074, 14246, 14420, 14594, 14769, // 151 - 160
+ 14946, 15123, 15301, 15481, 15661, 15843, 16026, 16209, 16394, 16580, // 161 - 170
+ 16767, 16955, 17144, 17334, 17525] // 171 - 175
+
+ SPTable:[ 8, 10, 13, 15, 18, 20, 23, 25, 28, 30, // 1 - 10
+ 33, 35, 38, 40, 43, 45, 48, 50, 53, 55, // 11 - 20
+ 58, 60, 63, 65, 68, 70, 73, 75, 78, 80, // 21 - 30
+ 83, 85, 88, 90, 93, 95, 98, 100, 103, 105, // 31 - 40
+ 108, 110, 113, 115, 118, 120, 123, 125, 128, 130, // 41 - 50
+ 133, 135, 138, 140, 143, 145, 148, 150, 153, 155, // 51 - 60
+ 158, 160, 163, 165, 168, 170, 173, 175, 178, 180, // 61 - 70
+ 183, 185, 188, 190, 193, 195, 198, 200, 203, 205, // 71 - 80
+ 208, 210, 213, 215, 218, 220, 223, 225, 228, 230, // 81 - 90
+ 233, 235, 238, 240, 243, 245, 248, 250, 253, 255, // 91 - 100
+ 258, 260, 263, 265, 268, 270, 273, 275, 278, 280, // 101 - 110
+ 283, 285, 288, 290, 293, 295, 298, 300, 303, 305, // 111 - 120
+ 308, 310, 313, 315, 318, 320, 323, 325, 328, 330, // 121 - 130
+ 333, 335, 338, 340, 343, 345, 348, 350, 353, 355, // 131 - 140
+ 358, 360, 363, 365, 368, 370, 373, 375, 378, 380, // 141 - 150
+ 383, 385, 388, 390, 393, 395, 398, 400, 403, 405, // 151 - 160
+ 408, 410, 413, 415, 418, 420, 423, 425, 428, 430, // 161 - 170
+ 433, 435, 438, 440, 443] // 171 - 175
+}
diff --git a/db/pre-re/map_zone_db.conf b/db/pre-re/map_zone_db.conf
index 0a02e9240..cab00bbb9 100644
--- a/db/pre-re/map_zone_db.conf
+++ b/db/pre-re/map_zone_db.conf
@@ -159,6 +159,7 @@ zones: (
BS_GREED: "PLAYER"
SC_FATALMENACE: "PLAYER"
SC_DIMENSIONDOOR: "PLAYER"
+ SU_LOPE: "PLAYER"
}
disabled_items: {
@@ -225,6 +226,7 @@ zones: (
CASH_ASSUMPTIO: "PLAYER"
SC_FATALMENACE: "PLAYER"
SC_DIMENSIONDOOR: "PLAYER"
+ SU_LOPE: "PLAYER"
}
disabled_items: {
Assumptio_5_Scroll: true
diff --git a/db/pre-re/skill_db.conf b/db/pre-re/skill_db.conf
index a8a58924a..9a9b64038 100644
--- a/db/pre-re/skill_db.conf
+++ b/db/pre-re/skill_db.conf
@@ -32172,10 +32172,37 @@ skill_db: (
}
},
{
- Id: 5015
- Name: "SR_FLASHCOMBO_ATK_STEP1"
- Description: "Flash Combo Attack Step 1"
- MaxLevel: 5
+ Id: 5018
+ Name: "SU_BASIC_SKILL"
+ Description: "New Basic Skill"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5019
+ Name: "SU_BITE"
+ Description: "Bite"
+ MaxLevel: 1
+ Range: 2
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ InterruptCast: true
+ CastTime: 1000
+ AfterCastActDelay: 1000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: 10
+ }
+},
+{
+ Id: 5020
+ Name: "SU_HIDE"
+ Description: "Hide"
+ MaxLevel: 1
Hit: "BDT_SKILL"
SkillType: {
Self: true
@@ -32183,15 +32210,67 @@ skill_db: (
DamageType: {
NoDamage: true
}
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: -1
+ CoolDown: 15000
+ FixedCastTime: 0
Requirements: {
- SPCost: 1
+ SPCost: 30
}
},
{
- Id: 5016
- Name: "SR_FLASHCOMBO_ATK_STEP2"
- Description: "Flash Combo Attack Step 2"
- MaxLevel: 5
+ Id: 5021
+ Name: "SU_SCRATCH"
+ Description: "Scratch"
+ MaxLevel: 3
+ Range: 2
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ DamageType: {
+ SplashArea: true
+ }
+ SplashRange: 1
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: 10000
+ CoolDown: {
+ Lv1: 3000
+ Lv2: 2000
+ Lv3: 1000
+ Lv4: 1
+ Lv5: 1
+ Lv6: 1
+ Lv7: 1
+ Lv8: 1
+ Lv9: 1
+ Lv10: 1
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 25
+ Lv3: 30
+ Lv4: 35
+ Lv5: 40
+ Lv6: 45
+ Lv7: 50
+ Lv8: 55
+ Lv9: 60
+ Lv10: 65
+ }
+ }
+},
+{
+ Id: 5022
+ Name: "SU_STOOP"
+ Description: "Stoop"
+ MaxLevel: 1
Hit: "BDT_SKILL"
SkillType: {
Self: true
@@ -32199,30 +32278,609 @@ skill_db: (
DamageType: {
NoDamage: true
}
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: 6000
+ CoolDown: 15000
+ FixedCastTime: 0
Requirements: {
- SPCost: 1
+ SPCost: 10
}
},
{
- Id: 5017
- Name: "SR_FLASHCOMBO_ATK_STEP3"
- Description: "Flash Combo Attack Step 3"
+ Id: 5023
+ Name: "SU_LOPE"
+ Description: "Lope"
+ MaxLevel: 3
+ Range: {
+ Lv1: 6
+ Lv2: 10
+ Lv3: 14
+ Lv4: 18
+ Lv5: 22
+ Lv6: 26
+ Lv7: 30
+ Lv8: 34
+ Lv9: 38
+ Lv10: 42
+ }
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Place: true
+ }
+ DamageType: {
+ NoDamage: true
+ }
+ InterruptCast: true
+ CastTime: 500
+ AfterCastActDelay: 1000
+ CoolDown: {
+ Lv1: 2000
+ Lv2: 4000
+ Lv3: 6000
+ Lv4: 8000
+ Lv5: 10000
+ Lv6: 12000
+ Lv7: 14000
+ Lv8: 16000
+ Lv9: 18000
+ Lv10: 20000
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 30
+ Lv2: 30
+ Lv3: 30
+ Lv4: 30
+ Lv5: 30
+ Lv6: 30
+ Lv7: 30
+ Lv8: 30
+ Lv9: 30
+ Lv10: 30
+ }
+ }
+},
+{
+ Id: 5024
+ Name: "SU_SPRITEMABLE"
+ Description: "Spirit Marble"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5025
+ Name: "SU_POWEROFLAND"
+ Description: "Power of Land"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5026
+ Name: "SU_SV_STEMSPEAR"
+ Description: "Silvervine Stem Spear"
MaxLevel: 5
+ Range: 9
Hit: "BDT_SKILL"
SkillType: {
- Self: true
+ Enemy: true
+ }
+ AttackType: "Magic"
+ Element: {
+ Lv1: "Ele_Earth"
+ Lv2: "Ele_Fire"
+ Lv3: "Ele_Water"
+ Lv4: "Ele_Wind"
+ Lv5: "Ele_Ghost"
+ }
+ InterruptCast: true
+ CastTime: 2500
+ AfterCastActDelay: 1000
+ SkillData1: 10000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 40
+ Lv2: 40
+ Lv3: 40
+ Lv4: 40
+ Lv5: 40
+ Lv6: 40
+ Lv7: 40
+ Lv8: 40
+ Lv9: 40
+ Lv10: 40
+ }
+ }
+},
+{
+ Id: 5027
+ Name: "SU_CN_POWDERING"
+ Description: "Catnip Powdering"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ DamageType: {
+ NoDamage: true
+ SplashArea: true
+ }
+ SplashRange: {
+ Lv1: 3
+ Lv2: 3
+ Lv3: 5
+ Lv4: 5
+ Lv5: 7
+ }
+ InterruptCast: true
+ SkillInstances: 1
+ CastTime: 1500
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 3000
+ Lv2: 4000
+ Lv3: 5000
+ Lv4: 6000
+ Lv5: 7000
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 40
+ Lv2: 36
+ Lv3: 32
+ Lv4: 28
+ Lv5: 24
+ }
+ Items: {
+ Catnip_Fruit: 1
+ }
+ }
+ Unit: {
+ Id: 0x106
+ Layout: {
+ Lv1: 1
+ Lv2: 1
+ Lv3: 2
+ Lv4: 2
+ Lv5: 3
+ }
+ Interval: -1
+ Target: "Enemy"
+ Flag: {
+ UF_PATHCHECK: true
+ UF_RANGEDSINGLEUNIT: true
+ }
+ }
+},
+{
+ Id: 5028
+ Name: "SU_CN_METEOR"
+ Description: "Catnip Meteor"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_MULTIHIT"
+ SkillType: {
+ Place: true
+ }
+ AttackType: "Magic"
+ SplashRange: {
+ Lv1: 3
+ Lv2: 3
+ Lv3: 5
+ Lv4: 5
+ Lv5: 7
+ }
+ NumberOfHits: {
+ Lv1: 1
+ Lv2: 2
+ Lv3: 3
+ Lv4: 4
+ Lv5: 5
+ }
+ InterruptCast: true
+ CastTime: 6000
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 1500
+ Lv2: 2000
+ Lv3: 2500
+ Lv4: 3000
+ Lv5: 3500
+ }
+ SkillData2: 20000
+ CoolDown: {
+ Lv1: 2000
+ Lv2: 3000
+ Lv3: 4000
+ Lv4: 5000
+ Lv5: 6000
+
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 35
+ Lv3: 50
+ Lv4: 65
+ Lv5: 80
+ }
+ Items: {
+ Catnip_Fruit: 1
+ }
+ }
+ Unit: {
+ Id: 0x86
+ Range: 1
+ Interval: 500
+ Target: "Enemy"
+ Flag: {
+ UF_PATHCHECK: true
+ }
+ }
+},
+{
+ Id: 5029
+ Name: "SU_SV_ROOTTWIST"
+ Description: "Silvervine Root Twist"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
}
DamageType: {
NoDamage: true
}
+ InterruptCast: true
+ SkillInstances: 1
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 7000
+ Lv2: 9000
+ Lv3: 11000
+ Lv4: 13000
+ Lv5: 15000
+ Lv6: 17000
+ Lv7: 19000
+ Lv8: 21000
+ Lv9: 23000
+ Lv10: 25000
+ }
+ CoolDown: 3000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 10
+ Lv2: 12
+ Lv3: 14
+ Lv4: 16
+ Lv5: 18
+ Lv6: 20
+ Lv7: 22
+ Lv8: 24
+ Lv9: 26
+ Lv10: 28
+ }
+ }
+ Unit: {
+ Id: 0x107
+ Interval: 1000
+ Target: "Enemy"
+ Flag: {
+ UF_PATHCHECK: true
+ }
+ }
+},
+{
+ Id: 5030
+ Name: "SU_SV_ROOTTWIST_ATK"
+ Description: "Silver Vine Root Twist Attack"
+ MaxLevel: 5
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Magic"
+ Element: "Ele_Poison"
+ DamageType: {
+ IgnoreElement: true
+ IgnoreDefense: true
+ }
+ SkillInstances: 1
+ AfterCastActDelay: 1000
+ FixedCastTime: 0
Requirements: {
SPCost: 1
}
},
{
- Id: 5018
- Name: "SR_FLASHCOMBO_ATK_STEP4"
- Description: "Flash Combo Attack Step 4"
+ Id: 5031
+ Name: "SU_POWEROFLIFE"
+ Description: "Power of Life"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5032
+ Name: "SU_SCAROFTAROU"
+ Description: "Scar of Tarou"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ InterruptCast: true
+ CastTime: 500
+ AfterCastActDelay: 1000
+ SkillData1: 9000
+ SkillData2: 1000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 10
+ Lv2: 14
+ Lv3: 18
+ Lv4: 22
+ Lv5: 26
+ Lv6: 30
+ Lv7: 34
+ Lv8: 38
+ Lv9: 42
+ Lv10: 46
+ }
+ }
+},
+{
+ Id: 5033
+ Name: "SU_PICKYPECK"
+ Description: "Picky Peck"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_MULTIHIT"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ NumberOfHits: -5
+ InterruptCast: true
+ CastTime: 2500
+ AfterCastActDelay: 1000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 10
+ Lv2: 19
+ Lv3: 28
+ Lv4: 37
+ Lv5: 46
+ Lv6: 55
+ Lv7: 64
+ Lv8: 73
+ Lv9: 82
+ Lv10: 91
+ }
+ }
+},
+{
+ Id: 5034
+ Name: "SU_PICKYPECK_DOUBLE_ATK"
+ Description: "Picky Peck Double Attack"
+ MaxLevel: 5
+ Hit: "BDT_MULTIHIT"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ NumberOfHits: -5
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: 1
+ }
+},
+{
+ Id: 5035
+ Name: "SU_ARCLOUSEDASH"
+ Description: "Arclouse Dash"
+ MaxLevel: 5
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Friend: true
+ }
+ DamageType: {
+ NoDamage: true
+ }
+ InterruptCast: true
+ CastTime: 2500
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 60000
+ Lv2: 70000
+ Lv3: 80000
+ Lv4: 90000
+ Lv5: 100000
+ Lv6: 110000
+ Lv7: 120000
+ Lv8: 130000
+ Lv9: 140000
+ Lv10: 150000
+ }
+ CoolDown: 10000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 12
+ Lv2: 20
+ Lv3: 28
+ Lv4: 36
+ Lv5: 44
+ Lv6: 52
+ Lv7: 60
+ Lv8: 68
+ Lv9: 76
+ Lv10: 84
+ }
+ }
+},
+{
+ Id: 5036
+ Name: "SU_LUNATICCARROTBEAT"
+ Description: "Lunatic Carrot Beat"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_MULTIHIT"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ DamageType: {
+ SplashArea: true
+ }
+ SplashRange: {
+ Lv1: 1
+ Lv2: 1
+ Lv3: 2
+ Lv4: 2
+ Lv5: 3
+ Lv6: 3
+ Lv7: 4
+ Lv8: 4
+ Lv9: 5
+ Lv10: 5
+ }
+ NumberOfHits: {
+ Lv1: 1
+ Lv2: 2
+ Lv3: 3
+ Lv4: 4
+ Lv5: 5
+ Lv6: 6
+ Lv7: 7
+ Lv8: 8
+ Lv9: 9
+ Lv10: 10
+ }
+ InterruptCast: true
+ CastTime: 3000
+ AfterCastActDelay: 1000
+ SkillData1: 1000
+ CoolDown: 8000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 15
+ Lv2: 25
+ Lv3: 35
+ Lv4: 45
+ Lv5: 55
+ Lv6: 65
+ Lv7: 75
+ Lv8: 85
+ Lv9: 95
+ Lv10: 105
+ }
+ }
+},
+{
+ Id: 5037
+ Name: "SU_POWEROFSEA"
+ Description: "Power of Sea"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5038
+ Name: "SU_TUNABELLY"
+ Description: "Tuna Belly"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Friend: true
+ }
+ DamageType: {
+ NoDamage: true
+ }
+ InterruptCast: true
+ CastTime: 2000
+ AfterCastActDelay: 1000
+ CoolDown: {
+ Lv1: 8000
+ Lv2: 10000
+ Lv3: 12000
+ Lv4: 14000
+ Lv5: 16000
+ Lv6: 18000
+ Lv7: 20000
+ Lv8: 22000
+ Lv9: 24000
+ Lv10: 26000
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 30
+ Lv3: 40
+ Lv4: 50
+ Lv5: 60
+ Lv6: 70
+ Lv7: 80
+ Lv8: 90
+ Lv9: 100
+ Lv10: 110
+ }
+ }
+},
+{
+ Id: 5039
+ Name: "SU_TUNAPARTY"
+ Description: "Tuna Party"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Friend: true
+ }
+ DamageType: {
+ NoDamage: true
+ }
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: 30000
+ CoolDown: 20000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 30
+ Lv3: 40
+ Lv4: 50
+ Lv5: 60
+ Lv6: 70
+ Lv7: 80
+ Lv8: 90
+ Lv9: 100
+ Lv10: 110
+ }
+ }
+},
+{
+ Id: 5040
+ Name: "SU_BUNCHOFSHRIMP"
+ Description: "Bunch of Shrimp"
MaxLevel: 5
Hit: "BDT_SKILL"
SkillType: {
@@ -32230,10 +32888,122 @@ skill_db: (
}
DamageType: {
NoDamage: true
+ SplashArea: true
+ }
+ SplashRange: -1
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 60000
+ Lv2: 90000
+ Lv3: 120000
+ Lv4: 150000
+ Lv5: 180000
+ Lv6: 210000
+ Lv7: 240000
+ Lv8: 270000
+ Lv9: 300000
+ Lv10: 330000
+ }
+ CoolDown: 10000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 44
+ Lv2: 48
+ Lv3: 52
+ Lv4: 56
+ Lv5: 60
+ Lv6: 64
+ Lv7: 68
+ Lv8: 72
+ Lv9: 76
+ Lv10: 80
+ }
+ Items: {
+ Prawn: 1
+ }
+
+ }
+},
+{
+ Id: 5041
+ Name: "SU_FRESHSHRIMP"
+ Description: "Fresh Shrimp"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Friend: true
+ }
+ DamageType: {
+ NoDamage: true
+ SplashArea: true
}
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: 120000
+ CoolDown: 7000
+ FixedCastTime: 0
Requirements: {
- SPCost: 1
+ SPCost: {
+ Lv1: 22
+ Lv2: 24
+ Lv3: 26
+ Lv4: 28
+ Lv5: 30
+ Lv6: 32
+ Lv7: 34
+ Lv8: 36
+ Lv9: 38
+ Lv10: 40
+ }
+ }
+},
+{
+ Id: 5042
+ Name: "SU_CN_METEOR_ATK"
+ Description: ""
+ MaxLevel: 5
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Place: true
+ }
+ SkillInfo: {
+ Chorus: true
+ }
+ AttackType: "Magic"
+ InterruptCast: true
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 35
+ Lv3: 50
+ Lv4: 65
+ Lv5: 80
+ }
+ Items: {
+ Catnip_Fruit: 1
+ }
+ }
+},
+{
+ Id: 5043
+ Name: "SU_LUNATICCARROTBEAT2"
+ Description: "Lunatic Carrot Beat 2"
+ MaxLevel: 5
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
}
+ SkillInfo: {
+ Chorus: true
+ }
+ AttackType: "Weapon"
+ InterruptCast: true
+ Requirements: {
+ SPCost: 1
+ }
},
{
Id: 8001
diff --git a/db/pre-re/skill_tree.conf b/db/pre-re/skill_tree.conf
index 805e7929c..00fc6c915 100644
--- a/db/pre-re/skill_tree.conf
+++ b/db/pre-re/skill_tree.conf
@@ -3955,3 +3955,93 @@ Rebellion: {
}
}
}
+
+Summoner: {
+ skills: {
+ SU_BASIC_SKILL: 1
+ SU_BITE: {
+ MaxLevel: 1
+ SU_BASIC_SKILL: 1
+ }
+ SU_HIDE: {
+ MaxLevel: 1
+ SU_BITE: 1
+ }
+ SU_SCRATCH: {
+ MaxLevel: 3
+ SU_HIDE: 1
+ }
+ SU_STOOP: {
+ MaxLevel: 1
+ SU_SCRATCH: 3
+ }
+ SU_LOPE: {
+ MaxLevel: 3
+ SU_STOOP: 1
+ }
+ SU_SPRITEMABLE: {
+ MaxLevel: 1
+ SU_LOPE: 3
+ }
+ SU_POWEROFLAND: {
+ MaxLevel: 1
+ SU_CN_POWDERING: 3
+ }
+ SU_SV_STEMSPEAR: {
+ MaxLevel: 5
+ SU_SPRITEMABLE: 1
+ }
+ SU_CN_POWDERING: {
+ MaxLevel: 5
+ SU_CN_METEOR: 3
+ }
+ SU_CN_METEOR: {
+ MaxLevel: 5
+ SU_SV_ROOTTWIST: 3
+ }
+ SU_SV_ROOTTWIST: {
+ MaxLevel: 5
+ SU_SV_STEMSPEAR: 3
+ }
+ SU_POWEROFLIFE: {
+ MaxLevel: 1
+ SU_LUNATICCARROTBEAT: 3
+ }
+ SU_SCAROFTAROU: {
+ MaxLevel: 5
+ SU_SV_ROOTTWIST: 3
+ }
+ SU_PICKYPECK: {
+ MaxLevel: 5
+ SU_SPRITEMABLE: 1
+ }
+ SU_ARCLOUSEDASH: {
+ MaxLevel: 5
+ SU_PICKYPECK: 3
+ }
+ SU_LUNATICCARROTBEAT: {
+ MaxLevel: 5
+ SU_SCAROFTAROU: 3
+ }
+ SU_POWEROFSEA: {
+ MaxLevel: 1
+ SU_TUNAPARTY: 3
+ }
+ SU_TUNABELLY: {
+ MaxLevel: 5
+ SU_BUNCHOFSHRIMP: 3
+ }
+ SU_TUNAPARTY: {
+ MaxLevel: 5
+ SU_TUNABELLY: 3
+ }
+ SU_BUNCHOFSHRIMP: {
+ MaxLevel: 5
+ SU_FRESHSHRIMP: 3
+ }
+ SU_FRESHSHRIMP: {
+ MaxLevel: 5
+ SU_SPRITEMABLE: 1
+ }
+ }
+}
diff --git a/db/re/exp.txt b/db/re/exp.txt
index c4be1cd07..b26bc7809 100644
--- a/db/re/exp.txt
+++ b/db/re/exp.txt
@@ -7,7 +7,7 @@
//================================
//Base - Normal and Baby Jobs
-99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4046:4047:4048:4049:4050:4051:4052,0,350,550,900,1500,2200,3200,3800,4200,4550,5000,5500,6000,6100,6350,6700,7350,8000,8400,8800,9200,9700,10300,11000,11800,13000,14000,15000,16000,17000,18000,19000,20000,21000,22000,23200,24000,26000,27500,29000,30000,31500,33000,34000,36000,37500,38000,40000,42000,44500,47000,49000,51000,53000,55000,57000,59000,61500,63000,65000,67000,69000,70000,73000,77000,80000,84000,88000,91000,95000,110000,128000,140000,155000,163000,170000,180000,188000,195000,200000,230000,260000,300000,350000,400000,480000,550000,600000,680000,750000,900000,1000000,1200000,1500000,1800000,2100000,2400000,2800000,3300000,4000000,4015999,4032062,4048190,4064382,4080639,4096961,4113348,4129801,4146319,4162904,4179555,4196273,4213057,4229909,4246828,4263815,4280870,4297993,4315184,4332444,4349773,4367171,4384639,4402177,4419785,4437463,4455212,4473032,4490923,4508886,4526921,4545028,4563207,4581459,4599784,4618182,4636654,4655200,4673820,4692515,4711284,4730128,4749048,4768043,4787114,4806262,4825486,4844787,4864165,4883621,4903155,4922767,4942457,4962226,4982074,5002002,5022009,5042096,5062264,5082512,5102841,5123252,5143744,5164318,5184975,5205714,5226536,5247441,5268430,5289503,5310660,5331902,5353229,5374641,5396139,5417723,5439393,5461150,5482994,5504925,5526944,5549051,5571246,5593530,5615903,5638366,5660919,5683562,5706295,5729119,5752035,5775042,5798141,5821333,5844618,5867996,5891467,5915032,5938691,5962445,5986294,6010238,6034278,6058414,6082647,6106977,6131404,6155929,6180552,6205273,6230093,6255013,6280032,6305151,6330371,6355692,6381114,6406638,6432264,6457992,6483823,6509757,6535795,6561937,6588184,6614536,6640993,6667556,6694225,6721001,6747884,6774875,6801974,6829181,6856497,6883922,6911457,6939102,6966858,6994725,7022703,7050793,7078995,7107310,7135738,7164280,7192936,7221707,7250593,7279594,7308712,7337946,7367297,7396765,7426351,7456056,7485879,7515822,7545884,7576067,7606370,7636795,7667341,7698009,7728800,7759714,7790752,7821914,7853201,7884613,7916151,7947815,7979605,8011523,8043568,8075741,8108043,8140474,8173035,8205726,8238548,8271501,8304586,8337803,8371153,8404637,8438255,8472007,8505894,8539917,8574076,8608371,8642804,8677374,8712083,8746930,8781917,8817044,8852311,8887719,8923269,8958961,8994796,9030774,9066896,9103163,9139575,9176132,9212836,9249686,9286684,9323830,9361124,9398568,9436161,9473905,9511800,9549846,9588044,9626395,9664900,9703559,9742372,9781340,9820464,9859745,9899183,9938779,9978533,10018446,10058519,10098752,10139146,10179702,10220420,10261301,10302345,10343553,10384926,10426465,10468170,10510042,10552081,10594288,10636664,10679210,10721926,10764813,10807871,10851101,10894504,10938081,10981832,11025758,11069860,11114138,11158593,11203226,11248038,11293029,11338200,11383552,11429085,11474800,11520698,11566780,11613046,11659497,11706134,11752957,11799968,11847167,11894555,11942132,11989899,12037857,12086007,12134350,12182886,12231616,12280541,12329662,12378980,12428495,12478208,12528120,12578231,12628543,12679056,12729771,12780689,12831811,12883137,12934668,12986406,13038350,13090502,13142863,13195433,13248214,13301206,13354410,13407826,13461456,13515301,13569361,13623637,13678130,13732841,13787771,13842921,13898291,13953883,14009697,14065735,14121997,14178484,14235197,14292137,14349304,14406700,14464326,14522182,14580269,14638589,14697142,14755929,14814951,14874210,14933706,14993440,15053412,15113624,15174077,15234772,15295710,15356892,15418318,15479990,15541909,15604075,15666490,15729155,15792070,15855237,15918657,15982330,16046258,16110442,16174882,16239580,16304537,16369754,16435232,16500972,16566975,16633242,16699774,16766572,16833637,16900969,16968571,17036445,17104588,17173005,17241695,17310661,17379901,17449418,17519214,17589289,17659644,17730281,17801200,17872403,17943892,18015666,18087727,18160077,18232715,18305645,18378865,18452378,18526186,18600289,18674688,18749385,18824380,18899676,18975273,19051172,19127375,19203884,19280698,19357819,19435250,19512989,19591038,19669401,19748076,19827067,19906375,19986000,20065942,20146204,20226787,20307694,20388923,20470478,20552358,20634566,20717103,20799971,20883170,20966701,21050565,21134765,21219301,21304176,21389391,21474948,21560846,21647088,21733675,21820609,21907889,21995518,22083498,22171830,22260516,22349556,22438953,22528706,22618819,22709294,22800130,22891329,22982892,23074822,23167120,23259787,23352825,23446234,23540017,23634174,23728709,23823621,23918913,24014586,24110643,24207085,24303911,24401126,24498729,24596721,24695105,24793883,24893058,24992628,25092597,25192965,25293734,25394907,25496486,25598470,25700862,25803664,25906877,26010502,26114542,26218998,26323872,26429166,26534881,26641018,26747580,26854568,26961984,27069830,27178107,27286819,27395965,27505546,27615566,27726026,27836928,27948274,28060065,28172302,28284989,28398126,28511717,28625761,28740261,28855219,28970639,29086521,29202864,29319673,29436949,29554694,29672911,29791602,29910766,30030407,30150528,30271128,30392210,30513777,30635829,30758369,30881399,31004924,31128942,31253456,31378468,31503980,31629994,31756512,31883536,32011068,32139110,32267664,32396732,32526317,32656419,32787043,32918190,33049861,33182057,33314782,33448039,33581830,33716157,33851018,33986418,34122359,34258847,34395881,34533461,34671592,34810276,34949515,35089312,35229667,35370584,35512064,35654110,35796726,35939913,36083669,36228000,36372910,36518401,36664471,36811127,36958370,37106199,37254622,37403640,37553252,37703463,37854275,38005691,38157712,38310340,38463579,38617432,38771899,38926985,39082689,39239016,39395970,39553549,39711760,39870604,40030084,40190202,40350958,40512361,40674407,40837103,41000450,41164447,41329103,41494418,41660391,41827031,41994337,42162311,42330959,42500281,42670278,42840958,43012321,43184367,43357103,43530530,43704647,43879464,44054979,44231197,44408118,44585750,44764092,44943146,45122914,45303401,45484611,45666548,45849211,46032606,46216736,46401600,46587204,46773550,46960643,47148484,47337075,47526421,47716523,47907387,48099015,48291409,48484571,48678507,48873219,49068710,49264984,49462041,49659885,49858520,50057951,50258181,50459210,50661042,50863681,51067132,51271397,51476478,51682383,51889110,52096665,52305047,52514265,52724318,52935214,53146954,53359537,53572971,53787261,54002406,54218414,54435286,54653026,54871633,55091115,55311477,55532719,55754848,55977864,56201772,56426576,56652279,56878886,57106400,57334822,57564160,57794413,58025586,58257683,58490711,58724671,58959567,59195403,59432182,59669909,59908584,60148215,60388805,60630356,60872874,61116360,61360822,61606264,61852685,62100091,62348489,62597878,62848268,63099657,63352051,63605456,63859874,64115308,64371765,64629247,64887761,65147307,65407893,65669520,65932194,66195917,66460696,66726535,66993438,67261410,67530450,67800566,68071766,68344051,68617420,68891890,69167452,69444122,69721892,70000771,70280767,70561887,70844131,71127500,71412010,71697652,71984434,72272366,72561453,72851698,73143099,73435664,73729402,74024313,74320405,74617685,74916154,75215812,75516667,75818726,76121999,76426484,76732181,77039108,77347256,77656641,77967262,78279129,78592240,78906604,79222230,79539116,79857272,80176696,80497398,80819385,81142657,81467222,81793088,82120256,82448732,82778526,83109637,83442074,83775835,84110931,84447367,84785153,85124288,85464780,85806638,86149862,86494459,86840429,87187789,87536538,87886677,88238222,88591172,88945528,89301305,89658504,90017133,90377199,90738704,91101654,91466057,91831915,92199234,92568024,92938291,93310036,93683267,94057992,94434219,94811948,95191194,95571951,95954234,96338043,96723387,97110272,97498708,97888693,98280245,98673363,99068048,99464315,99862164,100261603,100662641,101065285,101469543,101875416,102282912,102692038,103102802,103515205,103929263,104344975,104762350,105181396,105602112,106024515,106448604,106874396,107301892,107731090,108162006,108594650,109029020,109465134,109902990,110342598,110783964,111227098,111671998,112118682,112567148,113017414,113469479,113923352,114379039,114836550,115295892,115757065,116220086,116684962,117151693,117620296,118090771,118563124,119037366,119513511,119991559,120471520,120953399,121437207,121922950,122410637,122900276,123391866,123885425,124380959,124878477,125377987,125879489,126382999,126888525,127396075,127905649,128417264,128930926,129446645,129964427,130484275,131006202,131530218,132056330,132584546,133114875,133647324,134181910,134718632,135257491,135798510,136341699,136887055,137434597,137984323,138536250,139090393,139646754,140205331,140766142,141329201,141894509,142462082,143031920,143604040,144178440,144755138,145334149,145915473
+99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4046:4047:4048:4049:4050:4051:4052:4218,0,350,550,900,1500,2200,3200,3800,4200,4550,5000,5500,6000,6100,6350,6700,7350,8000,8400,8800,9200,9700,10300,11000,11800,13000,14000,15000,16000,17000,18000,19000,20000,21000,22000,23200,24000,26000,27500,29000,30000,31500,33000,34000,36000,37500,38000,40000,42000,44500,47000,49000,51000,53000,55000,57000,59000,61500,63000,65000,67000,69000,70000,73000,77000,80000,84000,88000,91000,95000,110000,128000,140000,155000,163000,170000,180000,188000,195000,200000,230000,260000,300000,350000,400000,480000,550000,600000,680000,750000,900000,1000000,1200000,1500000,1800000,2100000,2400000,2800000,3300000,4000000,4015999,4032062,4048190,4064382,4080639,4096961,4113348,4129801,4146319,4162904,4179555,4196273,4213057,4229909,4246828,4263815,4280870,4297993,4315184,4332444,4349773,4367171,4384639,4402177,4419785,4437463,4455212,4473032,4490923,4508886,4526921,4545028,4563207,4581459,4599784,4618182,4636654,4655200,4673820,4692515,4711284,4730128,4749048,4768043,4787114,4806262,4825486,4844787,4864165,4883621,4903155,4922767,4942457,4962226,4982074,5002002,5022009,5042096,5062264,5082512,5102841,5123252,5143744,5164318,5184975,5205714,5226536,5247441,5268430,5289503,5310660,5331902,5353229,5374641,5396139,5417723,5439393,5461150,5482994,5504925,5526944,5549051,5571246,5593530,5615903,5638366,5660919,5683562,5706295,5729119,5752035,5775042,5798141,5821333,5844618,5867996,5891467,5915032,5938691,5962445,5986294,6010238,6034278,6058414,6082647,6106977,6131404,6155929,6180552,6205273,6230093,6255013,6280032,6305151,6330371,6355692,6381114,6406638,6432264,6457992,6483823,6509757,6535795,6561937,6588184,6614536,6640993,6667556,6694225,6721001,6747884,6774875,6801974,6829181,6856497,6883922,6911457,6939102,6966858,6994725,7022703,7050793,7078995,7107310,7135738,7164280,7192936,7221707,7250593,7279594,7308712,7337946,7367297,7396765,7426351,7456056,7485879,7515822,7545884,7576067,7606370,7636795,7667341,7698009,7728800,7759714,7790752,7821914,7853201,7884613,7916151,7947815,7979605,8011523,8043568,8075741,8108043,8140474,8173035,8205726,8238548,8271501,8304586,8337803,8371153,8404637,8438255,8472007,8505894,8539917,8574076,8608371,8642804,8677374,8712083,8746930,8781917,8817044,8852311,8887719,8923269,8958961,8994796,9030774,9066896,9103163,9139575,9176132,9212836,9249686,9286684,9323830,9361124,9398568,9436161,9473905,9511800,9549846,9588044,9626395,9664900,9703559,9742372,9781340,9820464,9859745,9899183,9938779,9978533,10018446,10058519,10098752,10139146,10179702,10220420,10261301,10302345,10343553,10384926,10426465,10468170,10510042,10552081,10594288,10636664,10679210,10721926,10764813,10807871,10851101,10894504,10938081,10981832,11025758,11069860,11114138,11158593,11203226,11248038,11293029,11338200,11383552,11429085,11474800,11520698,11566780,11613046,11659497,11706134,11752957,11799968,11847167,11894555,11942132,11989899,12037857,12086007,12134350,12182886,12231616,12280541,12329662,12378980,12428495,12478208,12528120,12578231,12628543,12679056,12729771,12780689,12831811,12883137,12934668,12986406,13038350,13090502,13142863,13195433,13248214,13301206,13354410,13407826,13461456,13515301,13569361,13623637,13678130,13732841,13787771,13842921,13898291,13953883,14009697,14065735,14121997,14178484,14235197,14292137,14349304,14406700,14464326,14522182,14580269,14638589,14697142,14755929,14814951,14874210,14933706,14993440,15053412,15113624,15174077,15234772,15295710,15356892,15418318,15479990,15541909,15604075,15666490,15729155,15792070,15855237,15918657,15982330,16046258,16110442,16174882,16239580,16304537,16369754,16435232,16500972,16566975,16633242,16699774,16766572,16833637,16900969,16968571,17036445,17104588,17173005,17241695,17310661,17379901,17449418,17519214,17589289,17659644,17730281,17801200,17872403,17943892,18015666,18087727,18160077,18232715,18305645,18378865,18452378,18526186,18600289,18674688,18749385,18824380,18899676,18975273,19051172,19127375,19203884,19280698,19357819,19435250,19512989,19591038,19669401,19748076,19827067,19906375,19986000,20065942,20146204,20226787,20307694,20388923,20470478,20552358,20634566,20717103,20799971,20883170,20966701,21050565,21134765,21219301,21304176,21389391,21474948,21560846,21647088,21733675,21820609,21907889,21995518,22083498,22171830,22260516,22349556,22438953,22528706,22618819,22709294,22800130,22891329,22982892,23074822,23167120,23259787,23352825,23446234,23540017,23634174,23728709,23823621,23918913,24014586,24110643,24207085,24303911,24401126,24498729,24596721,24695105,24793883,24893058,24992628,25092597,25192965,25293734,25394907,25496486,25598470,25700862,25803664,25906877,26010502,26114542,26218998,26323872,26429166,26534881,26641018,26747580,26854568,26961984,27069830,27178107,27286819,27395965,27505546,27615566,27726026,27836928,27948274,28060065,28172302,28284989,28398126,28511717,28625761,28740261,28855219,28970639,29086521,29202864,29319673,29436949,29554694,29672911,29791602,29910766,30030407,30150528,30271128,30392210,30513777,30635829,30758369,30881399,31004924,31128942,31253456,31378468,31503980,31629994,31756512,31883536,32011068,32139110,32267664,32396732,32526317,32656419,32787043,32918190,33049861,33182057,33314782,33448039,33581830,33716157,33851018,33986418,34122359,34258847,34395881,34533461,34671592,34810276,34949515,35089312,35229667,35370584,35512064,35654110,35796726,35939913,36083669,36228000,36372910,36518401,36664471,36811127,36958370,37106199,37254622,37403640,37553252,37703463,37854275,38005691,38157712,38310340,38463579,38617432,38771899,38926985,39082689,39239016,39395970,39553549,39711760,39870604,40030084,40190202,40350958,40512361,40674407,40837103,41000450,41164447,41329103,41494418,41660391,41827031,41994337,42162311,42330959,42500281,42670278,42840958,43012321,43184367,43357103,43530530,43704647,43879464,44054979,44231197,44408118,44585750,44764092,44943146,45122914,45303401,45484611,45666548,45849211,46032606,46216736,46401600,46587204,46773550,46960643,47148484,47337075,47526421,47716523,47907387,48099015,48291409,48484571,48678507,48873219,49068710,49264984,49462041,49659885,49858520,50057951,50258181,50459210,50661042,50863681,51067132,51271397,51476478,51682383,51889110,52096665,52305047,52514265,52724318,52935214,53146954,53359537,53572971,53787261,54002406,54218414,54435286,54653026,54871633,55091115,55311477,55532719,55754848,55977864,56201772,56426576,56652279,56878886,57106400,57334822,57564160,57794413,58025586,58257683,58490711,58724671,58959567,59195403,59432182,59669909,59908584,60148215,60388805,60630356,60872874,61116360,61360822,61606264,61852685,62100091,62348489,62597878,62848268,63099657,63352051,63605456,63859874,64115308,64371765,64629247,64887761,65147307,65407893,65669520,65932194,66195917,66460696,66726535,66993438,67261410,67530450,67800566,68071766,68344051,68617420,68891890,69167452,69444122,69721892,70000771,70280767,70561887,70844131,71127500,71412010,71697652,71984434,72272366,72561453,72851698,73143099,73435664,73729402,74024313,74320405,74617685,74916154,75215812,75516667,75818726,76121999,76426484,76732181,77039108,77347256,77656641,77967262,78279129,78592240,78906604,79222230,79539116,79857272,80176696,80497398,80819385,81142657,81467222,81793088,82120256,82448732,82778526,83109637,83442074,83775835,84110931,84447367,84785153,85124288,85464780,85806638,86149862,86494459,86840429,87187789,87536538,87886677,88238222,88591172,88945528,89301305,89658504,90017133,90377199,90738704,91101654,91466057,91831915,92199234,92568024,92938291,93310036,93683267,94057992,94434219,94811948,95191194,95571951,95954234,96338043,96723387,97110272,97498708,97888693,98280245,98673363,99068048,99464315,99862164,100261603,100662641,101065285,101469543,101875416,102282912,102692038,103102802,103515205,103929263,104344975,104762350,105181396,105602112,106024515,106448604,106874396,107301892,107731090,108162006,108594650,109029020,109465134,109902990,110342598,110783964,111227098,111671998,112118682,112567148,113017414,113469479,113923352,114379039,114836550,115295892,115757065,116220086,116684962,117151693,117620296,118090771,118563124,119037366,119513511,119991559,120471520,120953399,121437207,121922950,122410637,122900276,123391866,123885425,124380959,124878477,125377987,125879489,126382999,126888525,127396075,127905649,128417264,128930926,129446645,129964427,130484275,131006202,131530218,132056330,132584546,133114875,133647324,134181910,134718632,135257491,135798510,136341699,136887055,137434597,137984323,138536250,139090393,139646754,140205331,140766142,141329201,141894509,142462082,143031920,143604040,144178440,144755138,145334149,145915473
//Base - Adv Jobs
99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,420,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,6827199,6854507,6881924,6909451,6937088,6964835,6992693,7020663,7048745,7076939,7105246,7133666,7162200,7190848,7219611,7248489,7277482,7306591,7335816,7365158,7394618,7424196,7453892,7483707,7513641,7543695,7573869,7604164,7634580,7665117,7695777,7726559,7757464,7788493,7819646,7850924,7882327,7913855,7945510,7977291,8009199,8041235,8073399,8105692,8138114,8170666,8203348,8236160,8269104,8302179,8335387,8368728,8402202,8435810,8469552,8503429,8537442,8571591,8605876,8640299,8674859,8709557,8744394,8779371,8814488,8849745,8885143,8920683,8956365,8992189,9028157,9064269,9100525,9136926,9173473,9210166,9247006,9283993,9321128,9358412,9395845,9433427,9471160,9509044,9547079,9585266,9623606,9662099,9700746,9739548,9778505,9817618,9856887,9896314,9935898,9975641,10015543,10055604,10095825,10136207,10176751,10217457,10258326,10299358,10340554,10381915,10423442,10465135,10506995,10549022,10591217,10633581,10676114,10718817,10761691,10804737,10847955,10891346,10934910,10978649,11022563,11066652,11110918,11155361,11199981,11244780,11289758,11334916,11380255,11425775,11471477,11517362,11563430,11609683,11656121,11702744,11749554,11796551,11843736,11891110,11938673,11986427,12034372,12082508,12130837,12179359,12228075,12276986,12326093,12375396,12424896,12474594,12524491,12574588,12624885,12675383,12726083,12776986,12828093,12879404,12930920,12982643,13034572,13086709,13139055,13191610,13244375,13297351,13350539,13403940,13457555,13511384,13565428,13619689,13674167,13728862,13783776,13838910,13894264,13949840,14005638,14061659,14117904,14174374,14231070,14287993,14345144,14402523,14460132,14517971,14576042,14634345,14692881,14751651,14810656,14869897,14929375,14989091,15049046,15109241,15169677,15230354,15291274,15352438,15413846,15475500,15537401,15599549,15661946,15724592,15787489,15850638,15914039,15977694,16041603,16105768,16170190,16234869,16299807,16365005,16430464,16496185,16562168,16628415,16694927,16761705,16828750,16896064,16963647,17031501,17099625,17168021,17236691,17305637,17374857,17444354,17514130,17584185,17654519,17725137,17796035,17867219,17938687,18010441,18082480,18154808,18227426,18300334,18373534,18447027,18520815,18594898,18669276,18743952,18818926,18894200,18969775,19045654,19121835,19198322,19275114,19352213,19429619,19507337,19585364,19663704,19742357,19821324,19900608,19980209,20060127,20140367,20220928,20301810,20383016,20464547,20546405,20628588,20711101,20793943,20877118,20960625,21044465,21128640,21213153,21298003,21383194,21468725,21554597,21640813,21727374,21814282,21901538,21989143,22077099,22165407,22254068,22343083,22432455,22522184,22612271,22702719,22793529,22884700,22976237,23068139,23160411,23253052,23346063,23439447,23533204,23627335,23721844,23816730,23911995,24007642,24103671,24200085,24296883,24394070,24491645,24589609,24687965,24786714,24885859,24985402,25085342,25185682,25286423,25387568,25489116,25591071,25693434,25796206,25899389,26002984,26106994,26211420,26316264,26421527,26527212,26633319,26739851,26846810,26954195,27062011,27170258,27278937,27388050,27497600,27607588,27718016,27828886,27940200,28051959,28164166,28276821,28389925,28503482,28617494,28731962,28846888,28962274,29078121,29194430,29311206,29428449,29546160,29664343,29782999,29902130,30021736,30141821,30262385,30383431,30504964,30626982,30749488,30872484,30995972,31119954,31244432,31369408,31494884,31620861,31747341,31874327,32001823,32129829,32258345,32387375,32516923,32646990,32777576,32908684,33040317,33172475,33305164,33438382,33572133,33706418,33841239,33976603,34112508,34248956,34385950,34523494,34661588,34800232,34939431,35079187,35219502,35360380,35501819,35643825,35786397,35929539,36073256,36217547,36362416,36507863,36653893,36800505,36947704,37095492,37243872,37392845,37542413,37692579,37843348,37994719,38146696,38299280,38452475,38606283,38760707,38915748,39071408,39227691,39384600,39542136,39700302,39859103,40018538,40178608,40339320,40500675,40662676,40825324,40988623,41152576,41317184,41482450,41648375,41814967,41982225,42150150,42318750,42488024,42657973,42828601,42999912,43171909,43344593,43517968,43692037,43866801,44042264,44218430,44395303,44572882,44751169,44930170,45109886,45290325,45471482,45653363,45835975,46019317,46203390,46388203,46573754,46760044,46947081,47134865,47323401,47512691,47702740,47893548,48085119,48277458,48470563,48664443,48859099,49054533,49250747,49447748,49645536,49844115,50043489,50243659,50444632,50646407,50848991,51052385,51256590,51461615,51667459,51874127,52081621,52289943,52499101,52709093,52919925,53131600,53344123,53557497,53771723,53986808,54202752,54419560,54637235,54855782,55075204,55295501,55516679,55738743,55961696,56185539,56410279,56635918,56862460,57089906,57318260,57547530,57777715,58008823,58240856,58473816,58707708,58942535,59178303,59415014,59652673,59891279,60130842,60371360,60612842,60855288,61098706,61343095,61588465,61834814,62082152,62330477,62579794,62830107,63081425,63333746,63587075,63841421,64096782,64353167,64610577,64869014,65128488,65388998,65650552,65913150,66176801,66441503,66707266,66974089,67241980,67510948,67780984,68052104,68324308,68597597,68871986,69147468,69424058,69701748,69980547,70260462,70541502,70823666,71106955,71391376,71676937,71963640,72251490,72540490,72830646,73121966,73414452,73708102,74002932,74298935,74596127,74894508,75194086,75494860,75796839,76100023,76404420,76710029,77016868,77324927,77634223,77944756,78256526,78569550,78883826,79199355,79516145,79834204,80153540,80474146,80796036,81119211,81443680,81769450,82096521,82424901,82754599,83085614,83417954,83751619,84086618,84422958,84760647,85099686,85440082,85781835,86124954,86469447,86815321,87162576,87511221,87861264,88212704,88565550,88919809,89275482,89632577,89991101,90351063,90712463,91075309,91439608,91805361,92172576,92541261,92911424,93283064,93656191,94030811,94406926,94784550,95163685,95544337,95926508,96310213,96695451,97082224,97470547,97860421,98251860,98644858,99039430,99435584,99833321,100232648,100633573,101036105,101440243,101845995,102253370,102662376,103073020,103485310,103899247,104314839,104732093,105151018,105571614,105993897,106417866,106843529,107270896,107699974,108130770,108563285,108997535,109433520,109871248,110310727,110751965,111194970,111639742,112086297,112534635,112984764,113436701,113890444,114346003,114803378,115262583,115723628,116186520,116651260,117117863,117586329,118056667,118528884,119002989,119478997,119956909,120436733,120918476,121402147,121887746,122375288,122864782,123356236,123849658,124345048,124842421,125341787,125843144,126346510,126851891,127359289,127868718,128380188,128893706,129409272,129926902,130446604,130968387,131492250,132018210,132546274,133076450,133608746,134143172,134679733,135218439,135759298,136302326,136847522,137394903,137944468,138496234,139050217,139606417,140164834,140725484,141288382,141853530,142420942,142990620,143562579,144136818,144713355,145292205,145873369,146456861,147042683,147630851,148221363,148814237,149409489,150007118,150607140,151209556,151814382,152421633,153031310,153643429,154257989,154875007,155494500,156116465,156740921,157367883,157997351,158629325,159263837,159900887,160540475,161182633,161827362,162474661,163124546,163777033,164432139,165089864,165750206,166413200,167078844,167747154,168418131,169091791,169768150,170447207,171128980,171813483,172500733,173190730,173883490,174579012,175277315,175978412,176682320,177389040,178098587,178810977,179526210,180244303,180965271,181689115,182415867,183145526,183878092,184613598,185352044,186093446,186837804,187585149,188335482,189088820,189845161,190604538,191366952,192132401,192900919,193672505,194447192,195224978,196005865,196789885,197577037,198367337,199160803,199957432,200757259,201560282,202366518,203175967,203988661,204804600,205623815,206446292,207272062,208101141,208933529,209769259,210608330,211450758,212296544,213145719,213998283,214854270,215713678,216576523,217442822,218312576,219185815,220062539,220942782,221826543,222713838,223604683,224499095,225397072,226298648,227203838,228112643,229025078,229941160,230860904,231784327,232711445,233642273,234576829,235515127,236457168,237402984,238352575,239305974,240263179,241224224,242189108,243157847,244130458,245106973,246087391,247071728,248060002
@@ -23,7 +23,7 @@
10,0:4023,1,4,10,18,28,40,91,151,205,268,340
//Job - 1st Classes & Baby 1st Classes
-50,1:2:3:4:5:6:4024:4025:4026:4027:4028:4029:4046:4050,1,30,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,97180,99123,101105,103127,105189,107292,109437,111625,113857,116134,118456,120825,123241,125705,128219,130783,133398,136065,138786,141561,144392,147279,150224,153228,156292,159417,162605,165857,169174,172557,176008,179528,183118,186780,190515,194325,198211,202175,206218,210342,214548,218838,223214,227678,232231,236875,241612,246444,251372,256399,261526,266756,272091,277532,283082,288743,294517,300407,306415,312543,318793,325168,331671,338304,345070,351971,359010,366190,373513,380983,388602,396374,404301,412387,420634,429046,437626,446378,455305,464411,473699,483172,492835,502691,512744,522998,533457,544126,555008,566108,577430,588978,600757,612772,625027,637527,650277,663282,676547,690077,703878,717955,732314,746960,761899,777136,792678,808531,824701,841195,858018,875178,892681,910534,928744,947318,966264,985589,1005300,1025405,1045913,1066831,1088167,1109930,1132128,1154770,1177865,1201422,1225450,1249958,1274957,1300456,1326465,1352994,1380053,1407654,1435807,1464523,1493813,1523689,1554162,1585245,1616949,1649287,1682272,1715917,1750235,1785239,1820943,1857361,1894508,1932398,1971045,2010465,2050674,2091687,2133520,2176190,2219713,2264107,2309389,2355576,2402687,2450740,2499754,2549749,2600743,2652757,2705812,2759928,2815126,2871428,2928856,2987433,3047181,3108124,3170286,3233691,3298364,3364331,3431617,3500249,3570253,3641657,3714490,3788779,3864554,3941845,4020681,4101094,4183115,4266777,4352112,4439154,4527936,4618494,4710863,4805080,4901181,4999204,5099187,5201170,5305193,5411296,5519521,5629911
+50,1:2:3:4:5:6:4024:4025:4026:4027:4028:4029:4046:4050:4218,1,30,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,97180,99123,101105,103127,105189,107292,109437,111625,113857,116134,118456,120825,123241,125705,128219,130783,133398,136065,138786,141561,144392,147279,150224,153228,156292,159417,162605,165857,169174,172557,176008,179528,183118,186780,190515,194325,198211,202175,206218,210342,214548,218838,223214,227678,232231,236875,241612,246444,251372,256399,261526,266756,272091,277532,283082,288743,294517,300407,306415,312543,318793,325168,331671,338304,345070,351971,359010,366190,373513,380983,388602,396374,404301,412387,420634,429046,437626,446378,455305,464411,473699,483172,492835,502691,512744,522998,533457,544126,555008,566108,577430,588978,600757,612772,625027,637527,650277,663282,676547,690077,703878,717955,732314,746960,761899,777136,792678,808531,824701,841195,858018,875178,892681,910534,928744,947318,966264,985589,1005300,1025405,1045913,1066831,1088167,1109930,1132128,1154770,1177865,1201422,1225450,1249958,1274957,1300456,1326465,1352994,1380053,1407654,1435807,1464523,1493813,1523689,1554162,1585245,1616949,1649287,1682272,1715917,1750235,1785239,1820943,1857361,1894508,1932398,1971045,2010465,2050674,2091687,2133520,2176190,2219713,2264107,2309389,2355576,2402687,2450740,2499754,2549749,2600743,2652757,2705812,2759928,2815126,2871428,2928856,2987433,3047181,3108124,3170286,3233691,3298364,3364331,3431617,3500249,3570253,3641657,3714490,3788779,3864554,3941845,4020681,4101094,4183115,4266777,4352112,4439154,4527936,4618494,4710863,4805080,4901181,4999204,5099187,5201170,5305193,5411296,5519521,5629911
//Job - 2nd Classes & Baby 2nd Classes
50,7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4051:4052,1,1600,2500,4200,7000,10300,15900,18900,20900,22600,24900,28800,31500,32000,33300,35100,40500,44100,46300,48500,50700,56000,59400,63500,68100,75000,85700,90500,96600,102600,108600,119700,126000,132300,138600,146100,157500,170600,180400,190300,196800,214900,225200,232000,245700,255900,279300,294000,308700,327000,345400,355761,366433,377425,388747,400409,412421,424793,437536,450662,464181,478106,492449,507222,522438,538111,554254,570881,588007,605647,623816,642530,661805,681659,702108,723171,744866,767211,790227,813933,838350,863500,889404,916086,943568,971875,1001031,1031061,1061992,1093851,1126666,1160465,1195278,1231136,1268070,1306112,1345295,1385653,1427222,1470038,1514139,1559563,1606349,1654539,1704175,1755300,1807958,1862196,1918061,1975602,2034870,2095916,2158793,2223556,2290262,2358969,2429738,2502630,2577708,2655039,2734690,2816730,2901231,2988267,3077914,3170251,3265358,3363318,3464217,3568143,3675187,3785442,3899005,4015975,4136454,4260547,4388363,4520013,4655613,4795281,4939139,5087313,5239932,5397129,5559042,5725813,5897587,6074514,6256749,6444451,6637784,6836917,7042024,7253284,7470882,7695008,7925858,8163633,8408541,8660796,8920619,9188237,9463883,9747799,10040232,10341438,10651680,10758196,10865777,10974434,11084178,11195019,11306969,11420038,11534238,11649580,11766075,11883735,12002572,12122597,12243822,12366260,12489922,12614821,12740969,12868378,12997061,13127031,13258301,13390883,13524791,13660038,13796638,13934604,14073949,14214688,14356834,14500402,14645405,14791858,14939776,15089173,15240064,15392464,15546388,15701851,15858869,16017457,16177631,16339407,16502800,16667827,16834505,17002848,17172876,17344604,17518049,17693228,17870160,18048861,18229348,18411641,18595756,18781713,18969528,19159223,19350816,19544323,19739767,19937165,20136535,20337901,20541278,20746690,20954156,21163697,21375332,21589085,21804974,22023023,22243254,22465686,22690342,22917245,23146416,23377879,23611658,23847774,24086251,24327114,24570384,24816087,25064248,25314890,25568038,25823718
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 34136aa5c..17287fa8e 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -1728,6 +1728,7 @@ item_db: (
Dark_Collector: true
Kagerou: true
Rebellion: true
+ Summoner: true
}
EquipLv: 40
BuyingStore: true
@@ -18457,6 +18458,391 @@ item_db: (
if(BaseLevel>70) { bonus bMatk,(((BaseLevel-70)/10)*5); }
">
},
+{
+ Id: 1681
+ AegisName: "Short_Foxtail_Staff"
+ Name: "Short Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Atk: 30
+ Range: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 2
+ WeaponLv: 1
+ EquipLv: 1
+ View: 10
+},
+{
+ Id: 1683
+ AegisName: "Enriched_Foxtail_Staff"
+ Name: "Enriched Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 200
+ Atk: 50
+ Matk: 70
+ Range: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 2
+ EquipLv: 12
+ View: 10
+ Script: <" bonus bMaxSP, 50; ">
+},
+{
+ Id: 1684
+ AegisName: "Long_Foxtail_Staff"
+ Name: "Long Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 200
+ Atk: 50
+ Range: 2
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 2
+ WeaponLv: 2
+ EquipLv: 12
+ View: 10
+ Script: <"
+ bonus bLongAtkRate, 5;
+ bonus bMaxHP, 200;
+ ">
+},
+{
+ Id: 1685
+ AegisName: "Dragonfly_Sitting_Foxtail_Staff"
+ Name: "Dragonfly Sitting Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 300
+ Atk: 70
+ Matk: 100
+ Range: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 2
+ EquipLv: 20
+ View: 10
+ Script: <"
+ bonus bInt, 1;
+ bonus bMaxHP, 100;
+ bonus bMaxSP, 150;
+ ">
+},
+{
+ Id: 1686
+ AegisName: "Large_Foxtail_Staff"
+ Name: "Large Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 300
+ Atk: 70
+ Range: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 2
+ WeaponLv: 2
+ EquipLv: 20
+ View: 10
+ Script: <"
+ bonus bLongAtkRate, 8;
+ bonus bDex, 1;
+ bonus bMaxHP, 200;
+ bonus bMaxSP, 100;
+ ">
+},
+{
+ Id: 1687
+ AegisName: "Beginner_Foxtail_Staff"
+ Name: "Beginner Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 100
+ Atk: 40
+ Matk: 15
+ Range: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 1
+ EquipLv: 3
+ View: 10
+ Script: <" bonus bMaxHP, 100; ">
+},
+{
+ Id: 1690
+ AegisName: "Mysterious_Foxtail_Staff"
+ Name: "Mysterious Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 400
+ Atk: 80
+ Matk: 180
+ Range: 1
+ Slots: 3
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 2
+ EquipLv: 60
+ View: 10
+ Script: <"
+ bonus bMaxSP, 10 * (getrefine() / 3) + 50;
+ bonus bMatk, 10 * (getrefine() / 3);
+ ">
+},
+{
+ Id: 1691
+ AegisName: "Strange_God_Foxtail_Staff"
+ Name: "Strange God Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 500
+ Atk: 100
+ Matk: 240
+ Range: 1
+ Slots: 2
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 3
+ EquipLv: 100
+ View: 10
+ Script: <"
+ bonus bMaxSP, 100;
+ bonus bMatkRate, 2 * (getrefine() / 3);
+ bonus bMaxSPrate, getrefine() / 3;
+ if (getrefine() >= 7) {
+ .@r = min(getrefine(), 10) - 7;
+ bonus bWeaponAtkRate,(20 * .@r) + 40;
+ bonus bWeaponMatkRate,(20 * .@r) + 40;
+ }
+
+ ">
+},
+{
+ Id: 1692
+ AegisName: "Magical_Foxtail_Staff"
+ Name: "Magical Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 600
+ Atk: 120
+ Matk: 260
+ Range: 1
+ Slots: 2
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 3
+ EquipLv: 140
+ View: 10
+ Script: <"
+ bonus bMaxSP, 100;
+ bonus bMatkRate, 2 * (getrefine() / 3);
+ bonus bMaxSPrate, getrefine() / 3;
+ if (getrefine() >= 7) {
+ .@r = min(getrefine(), 10) - 7;
+ bonus bWeaponAtkRate, (20 * .@r) + 40;
+ bonus bWeaponMatkRate, (20 * .@r) + 40;
+ }
+
+ ">
+},
+{
+ Id: 1693
+ AegisName: "Magical_Yellow_Foxtail_Staff"
+ Name: "Magical Yellow Foxtail Staff"
+ Type: 5
+ Buy: 20
+ Weight: 700
+ Atk: 140
+ Matk: 280
+ Range: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 4
+ EquipLv: 175
+ View: 10
+ Script: <"
+ bonus bMatkRate, 3 * (getrefine() / 2);
+ bonus4 bAutoSpellOnSkill, SU_FRESHSHRIMP, SU_ARCLOUSEDASH, max(1, getskilllv(SU_ARCLOUSEDASH)), 200;
+ bonus4 bAutoSpellOnSkill, SU_SV_STEMSPEAR, SU_FRESHSHRIMP, max(1, getskilllv(SU_FRESHSHRIMP)), 200;
+ if (getrefine() >= 7) {
+ .@r = min(getrefine(), 10) - 7;
+ bonus bWeaponAtkRate, (20 * .@r) + 40;
+ bonus bWeaponMatkRate, (20 * .@r) + 40;
+ }
+
+ ">
+},
+{
+ Id: 1694
+ AegisName: "Foxtail_Model"
+ Name: "Foxtail Model"
+ Type: 5
+ Buy: 20
+ Weight: 300
+ Atk: 150
+ Range: 1
+ Slots: 3
+ Job: {
+ Summoner: true
+ }
+ Loc: 2
+ WeaponLv: 2
+ EquipLv: 60
+ View: 10
+ Script: <"
+ bonus bLongAtkRate, 8;
+ bonus bMaxHP, 100;
+ bonus bDex, (getrefine() / 3) * 2;
+ bonus bMaxSP, (getrefine() / 3) * 10;
+ ">
+},
+{
+ Id: 1695
+ AegisName: "Delicate_Foxtail_Model"
+ Name: "Delicate Foxtail Model"
+ Type: 5
+ Buy: 20
+ Weight: 300
+ Atk: 195
+ Range: 1
+ Slots: 2
+ Job: {
+ Summoner: true
+ }
+ Loc: 2
+ WeaponLv: 3
+ EquipLv: 100
+ View: 10
+ Script: <"
+ bonus bLongAtkRate, 8;
+ bonus bMaxHP, 200;
+ bonus bDex, (getrefine() / 3) * 3;
+ bonus bMaxSP, (getrefine() / 3) * 15;
+ if (getrefine() >= 7) {
+ .@r = min(getrefine(), 10) - 7;
+ bonus bWeaponAtkRate, (20 * .@r) + 40;
+ bonus bWeaponMatkRate, (20 * .@r) + 40;
+ }
+
+ ">
+},
+{
+ Id: 1696
+ AegisName: "Exquisite_Foxtail_Model"
+ Name: "Exquisite Foxtail Model"
+ Type: 5
+ Buy: 20
+ Weight: 300
+ Atk: 240
+ Range: 1
+ Slots: 2
+ Job: {
+ Summoner: true
+ }
+ Loc: 2
+ WeaponLv: 3
+ EquipLv: 140
+ View: 10
+ Script: <"
+ bonus bLongAtkRate, 8;
+ bonus bMaxHPrate, 5;
+ bonus bDex, (getrefine() / 2) * 3;
+ bonus bMaxSP, (getrefine() / 2) * 15;
+ if (getrefine() >= 7) {
+ .@r = min(getrefine(), 10) - 7;
+ bonus bWeaponAtkRate, (20 * .@r) + 40;
+ bonus bWeaponMatkRate, (20 * .@r) + 40;
+ }
+
+ ">
+},
+{
+ Id: 1697
+ AegisName: "Exquisite_Yellow_Foxtail_Model"
+ Name: "Exquisite Yellow Foxtail Model"
+ Type: 5
+ Buy: 20
+ Weight: 300
+ Atk: 270
+ Range: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 2
+ WeaponLv: 4
+ EquipLv: 175
+ View: 10
+ Script: <"
+ bonus bLongAtkRate, 9;
+ bonus bMaxHPrate, 7;
+ bonus bLongAtkRate, getrefine() / 2;
+ bonus bMaxSP, (getrefine() / 2) * 20;
+ bonus4 bAutoSpellOnSkill, SU_PICKYPECK, SU_FRESHSHRIMP, max(1, getskilllv(SU_FRESHSHRIMP)), 200;
+ if (getrefine() >= 7) {
+ .@r = min(getrefine(), 10) - 7;
+ bonus bWeaponAtkRate, (20 * .@r) + 40;
+ bonus bWeaponMatkRate, (20 * .@r) + 40;
+ }
+
+ ">
+},
+{
+ Id: 1699
+ AegisName: "Paradise_Foxtail_Staff_I"
+ Name: "Eden Group Foxtail I"
+ Type: 5
+ Buy: 20
+ Atk: 120
+ Matk: 135
+ Range: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 2
+ EquipLv: 26
+ Refine: false
+ View: 10
+ Script: <"
+ bonus bDex, 3;
+ bonus bInt, 3;
+ bonus bLongAtkRate, 5;
+ ">
+},
//== Bows ==================================================
{
@@ -84597,6 +84983,16 @@ item_db: (
">
},
{
+ Id: 11602
+ AegisName: "Catnip_Fruit"
+ Name: "Catnip Fruit"
+ Type: 0
+ Buy: 15
+ Weight: 1
+ Upper: 63
+ Script: <" itemheal rand(10,40),0; ">
+},
+{
Id: 11701
AegisName: "Girl_Bunch_Of_Flower"
Name: "Girl's Bouquet"
@@ -95172,6 +95568,7 @@ item_db: (
Dark_Collector: true
Kagerou: true
Rebellion: true
+ Summoner: true
}
EquipLv: 40
Trade: {
@@ -120407,6 +120804,7 @@ item_db: (
Dark_Collector: true
Kagerou: true
Rebellion: true
+ Summoner: true
}
Trade: {
nodrop: true
@@ -124114,6 +124512,27 @@ item_db: (
">
},
{
+ Id: 15126
+ AegisName: "Private_Doram_Suits"
+ Name: "Private Doram Suits"
+ Type: 4
+ Buy: 20
+ Weight: 700
+ Def: 80
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 16
+ EquipLv: 100
+ Script: <"
+ bonus bMaxHP, 500;
+ bonus bMaxSP, 100;
+ bonus bDex, getrefine() / 3;
+ bonus bInt, getrefine() / 3;
+ ">
+},
+{
Id: 15128
AegisName: "Excellion_Suit"
Name: "Excellion Suit"
@@ -124130,6 +124549,27 @@ item_db: (
">
},
{
+ Id: 15129
+ AegisName: "Luxury_Doram_Suit"
+ Name: "Luxury Doram Suit"
+ Type: 4
+ Buy: 20
+ Weight: 800
+ Def: 100
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 16
+ EquipLv: 140
+ Script: <"
+ bonus bMaxHPrate, 10;
+ bonus bMaxSPrate, 10;
+ bonus bDex, getrefine() / 2;
+ bonus bInt, getrefine() / 2;
+ ">
+},
+{
Id: 15138
AegisName: "Egir_Armor_K"
Name: "Aegir Armor"
@@ -124146,6 +124586,67 @@ item_db: (
bonus bUnbreakableArmor, 0;
">
},
+{
+ Id: 15150
+ AegisName: "White_Shirt"
+ Name: "White Shirt"
+ Type: 4
+ Buy: 20
+ Weight: 50
+ Def: 25
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 16
+ EquipLv: 6
+ Script: <"
+ bonus bMaxHP,70;
+ bonus bFlee,5;
+ ">
+},
+{
+ Id: 15151
+ AegisName: "White_Eco-Shirt"
+ Name: "White Eco-Shirt"
+ Type: 4
+ Buy: 20
+ Weight: 100
+ Def: 40
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 16
+ EquipLv: 15
+ Script: <"
+ bonus bMaxHP,150;
+ bonus bFlee,10;
+ ">
+},
+{
+ Id: 15156
+ AegisName: "Elegant_Doram_Suit"
+ Name: "Elegant Doram Suit"
+ Type: 4
+ Buy: 20
+ Weight: 900
+ Def: 120
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 16
+ EquipLv: 175
+ Script: <"
+ bonus bMaxHPrate, 15;
+ bonus bMaxSPrate, 15;
+ bonus bDex, getrefine();
+ bonus bInt, getrefine();
+ if (getrefine() > 9)
+ bonus bUseSPrate, -5;
+ ">
+},
//== More Maces ============================================
{
@@ -144946,6 +145447,70 @@ item_db: (
}
">
},
+{
+ Id: 20788
+ AegisName: "Private_Doram_Manteau"
+ Name: "Private Doram Manteau"
+ Type: 4
+ Buy: 20
+ Weight: 300
+ Def: 20
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 4
+ EquipLv: 100
+ Script: <"
+ bonus bFlee,5;
+ bonus2 bSubEle,Ele_Neutral,2;
+ bonus bFlee2,getrefine()/3;
+ ">
+},
+{
+ Id: 20789
+ AegisName: "Luxury_Doram_Manteau"
+ Name: "Luxury Doram Manteau"
+ Type: 4
+ Buy: 20
+ Weight: 400
+ Def: 25
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 4
+ EquipLv: 140
+ Script: <"
+ bonus bFlee, 7;
+ bonus2 bSubEle,Ele_Neutral, 3;
+ bonus bFlee2, getrefine() / 3;
+ bonus bLuk, getrefine() / 3;
+ ">
+},
+{
+ Id: 20790
+ AegisName: "Elegant_Doram_Manteau"
+ Name: "Elegant Doram Manteau"
+ Type: 4
+ Buy: 20
+ Weight: 500
+ Def: 30
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 4
+ EquipLv: 175
+ Script: <"
+ bonus bFlee, 10;
+ bonus2 bSubEle,Ele_Neutral, 5;
+ bonus bFlee2, getrefine() / 2;
+ bonus bInt, getrefine() / 2;
+ bonus bDex, getrefine() / 2;
+ bonus bLuk, getrefine() / 2;
+ ">
+},
//== New Two-Handed Swords =================================
{
@@ -146105,6 +146670,107 @@ item_db: (
autobonus3 "{ }", 1000, 7000, ALL_CATCRY, "{ montransform LOLI_RURI, 420000; }";
">
},
+{
+ Id: 22076
+ AegisName: "Wooden_Slipper"
+ Name: "Wooden Slipper"
+ Type: 4
+ Buy: 20
+ Weight: 50
+ Def: 10
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 64
+ EquipLv: 9
+ Script: <" bonus2 bHPRegenRate,2,10000; ">
+},
+{
+ Id: 22077
+ AegisName: "Red_Eco-Friendly_Shoes"
+ Name: "Red Eco-Friendly Shoes"
+ Type: 4
+ Buy: 20
+ Weight: 100
+ Def: 20
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 64
+ EquipLv: 18
+ Script: <"
+ bonus bCritical,5;
+ bonus2 bHPRegenRate,4,10000;
+ bonus2 bSPRegenRate,1,10000;
+ ">
+},
+{
+ Id: 22083
+ AegisName: "Private_Doram_Shoes"
+ Name: "Private Doram Shoes"
+ Type: 4
+ Buy: 20
+ Weight: 500
+ Def: 25
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 64
+ EquipLv: 100
+ Script: <"
+ bonus bMaxHP, 100;
+ bonus bMaxSP, 50;
+ bonus bHPrecovRate, getrefine() * 10 / 3;
+ bonus bSPrecovRate, getrefine() * 10 / 3;
+ ">
+},
+{
+ Id: 22084
+ AegisName: "Luxury_Doram_Shoes"
+ Name: "Luxury Doram Shoes"
+ Type: 4
+ Buy: 20
+ Weight: 600
+ Def: 30
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 64
+ EquipLv: 140
+ Script: <"
+ bonus bMaxHP, 300;
+ bonus bMaxSP, 100;
+ bonus bHPrecovRate, 20 * getrefine() / 3;
+ bonus bSPrecovRate, 20 * getrefine() / 3;
+ ">
+},
+{
+ Id: 22085
+ AegisName: "Elegant_Doram_Shoes"
+ Name: "Elegant Doram Shoes"
+ Type: 4
+ Buy: 20
+ Weight: 700
+ Def: 35
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 64
+ EquipLv: 175
+ Script: <"
+ bonus bMaxHPrate, 10;
+ bonus bMaxSPrate, 5;
+ bonus bMaxHP, 100 * getrefine() / 2;
+ bonus bMaxSP, 20 * getrefine() / 2;
+ if ((getrefine() / 2) >= 4)
+ bonus2 bSkillUseSP, SU_LOPE, 5;
+ ">
+},
//== New Etc Items =========================================
{
@@ -149317,6 +149983,31 @@ item_db: (
if (getrefine()>=9) { bonus bDelayrate,-1; }
">
},
+//== New Staffs ============================================
+{
+ Id: 26101
+ AegisName: "Paradise_Foxtail_Staff_III"
+ Name: "Eden Group Foxtail Staff III"
+ Type: 5
+ Buy: 20
+ Atk: 150
+ Matk: 195
+ Range: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 7
+ Loc: 2
+ WeaponLv: 3
+ EquipLv: 60
+ Refine: false
+ View: 10
+ Script: <"
+ bonus bDex,5;
+ bonus bInt,5;
+ bonus bLongAtkRate,7;
+ ">
+},
//== New Katars ============================================
{
@@ -149963,6 +150654,312 @@ item_db: (
bonus bMaxSPrate,3;
">
},
+{
+ Id: 28374
+ AegisName: "Foxtail_Ring"
+ Name: "Foxtail Ring"
+ Type: 4
+ Buy: 20
+ Weight: 100
+ Job: {
+ Summoner: true
+ }
+ Loc: 136
+ EquipLv: 1
+ Refine: false
+ Script: <"
+ bonus2 bExpAddRace,RC_All,5;
+ .@lvl = min(BaseLevel/5,10);
+ bonus bAtk,2*.@lvl;
+ bonus bMatk,2*.@lvl;
+ bonus bMaxHP,10*.@lvl;
+ bonus bMaxSP,5*.@lvl;
+ ">
+},
+{
+ Id: 28380
+ AegisName: "Fresh_Grass_Necklace"
+ Name: "Fresh Grass Necklace"
+ Type: 4
+ Buy: 20
+ Weight: 100
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <"
+ bonus bFlee2,5;
+ bonus2 bSkillCooldown,SU_SCAROFTAROU,-5000;
+ ">
+},
+{
+ Id: 28381
+ AegisName: "Cute_Grass_Necklace"
+ Name: "Cute Grass Necklace"
+ Type: 4
+ Buy: 20
+ Weight: 10
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <"
+ bonus bHealPower,5;
+ bonus2 bSkillCooldown,SU_TUNAPARTY,-7000;
+ ">
+},
+{
+ Id: 28382
+ AegisName: "Charm_Grass_Necklace"
+ Name: "Charm Grass Necklace"
+ Type: 4
+ Buy: 20
+ Weight: 10
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <"
+ bonus bMdef,5;
+ bonus2 bVariableCastrate,SU_CN_METEOR,-1000;
+ ">
+},
+{
+ Id: 28413
+ AegisName: "Lesser_Mackerel_Talisman"
+ Name: "Lesser Mackerel Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <" bonus bVit,1; ">
+},
+{
+ Id: 28414
+ AegisName: "Intermediate_Mackerel_Talisman"
+ Name: "Intermediate Mackerel Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 140
+ Refine: false
+ Script: <" bonus bVit,2; ">
+},
+{
+ Id: 28415
+ AegisName: "Greater_Mackerel_Talisman"
+ Name: "Greater Mackerel Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 175
+ Refine: false
+ Script: <" bonus bVit,3; ">
+},
+{
+ Id: 28416
+ AegisName: "Lesser_Leaf_Talisman"
+ Name: "Lesser Leaf Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <" bonus bInt,1; ">
+},
+{
+ Id: 28417
+ AegisName: "Intermediate_Leaf_Talisman"
+ Name: "Intermediate Leaf Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 140
+ Refine: false
+ Script: <" bonus bInt,2; ">
+},
+{
+ Id: 28418
+ AegisName: "Greater_Leaf_Talisman"
+ Name: "Greater Leaf Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 175
+ Refine: false
+ Script: <" bonus bInt,3; ">
+},
+{
+ Id: 28419
+ AegisName: "Lesser_Rabbit_Talisman"
+ Name: "Lesser Rabbit Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <" bonus bDex,1; ">
+},
+{
+ Id: 28420
+ AegisName: "Intermediate_Rabbit_Talisman"
+ Name: "Intermediate Rabbit Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 140
+ Refine: false
+ Script: <" bonus bDex,2; ">
+},
+{
+ Id: 28421
+ AegisName: "Greater_Rabbit_Talisman"
+ Name: "Greater Rabbit Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 175
+ Refine: false
+ Script: <" bonus bDex,3; ">
+},
+{
+ Id: 28422
+ AegisName: "Shiny_Branch_Talisman"
+ Name: "Shiny Branch Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <"
+ bonus2 bVariableCastrate,SU_SV_STEMSPEAR,-50;
+ bonus2 bSkillAtk,SU_SV_STEMSPEAR,(readparam(bInt)/2)+(20 * getskilllv(SU_SV_STEMSPEAR));
+ //Need to confirm damage formula
+ ">
+},
+{
+ Id: 28423
+ AegisName: "Fresh_Tuna_Talisman"
+ Name: "Fresh Tuna Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <"
+ bonus2 bSkillCooldown,SU_TUNAPARTY,-5000;
+ bonus3 bAutoSpellWhenHit,SU_TUNAPARTY,max(1,getskilllv(SU_TUNAPARTY)),10;
+ ">
+},
+{
+ Id: 28424
+ AegisName: "Chubby_Worm_Talisman"
+ Name: "Chubby Worm Talisman"
+ Type: 4
+ Buy: 0
+ Weight: 100
+ Def: 1
+ Slots: 1
+ Job: {
+ Summoner: true
+ }
+ Upper: 63
+ Loc: 136
+ EquipLv: 100
+ Refine: false
+ Script: <"
+ bonus2 bVariableCastrate,SU_PICKYPECK,-50;
+ bonus2 bSkillAtk,SU_PICKYPECK,(readparam(bDex)/2)+(20 * getskilllv(SU_PICKYPECK));
+ //Need to confirm damage formula
+ ">
+},
//== New Books =============================================
{
diff --git a/db/re/job_db.conf b/db/re/job_db.conf
index 6c13fd355..4b036ae93 100644
--- a/db/re/job_db.conf
+++ b/db/re/job_db.conf
@@ -1732,3 +1732,51 @@ Expanded_Super_Novice: {
Expanded_Super_Baby: {
Inherit: ("Novice")
}
+// Summoner HP/SP is not known, below table are generated and near to official HP/SP.
+Summoner: {
+ Weight: 20000
+ BaseASPD: {
+ Fist: 45
+ Dagger: 55
+ Rod: 55
+ Book: 43
+ TwoHandRod: 55
+ }
+ HPTable:[ 40, 69, 80, 92, 105, 119, 134, 150, 167, 185, // 1 - 10
+ 204, 224, 245, 268, 291, 315, 341, 367, 395, 423, // 11 - 20
+ 453, 484, 515, 548, 582, 617, 653, 690, 728, 767, // 21 - 30
+ 807, 848, 890, 934, 978, 1023, 1070, 1117, 1166, 1215, // 31 - 40
+ 1266, 1317, 1370, 1424, 1479, 1534, 1591, 1649, 1708, 1768, // 41 - 50
+ 1829, 1891, 1955, 2019, 2084, 2150, 2218, 2286, 2356, 2426, // 51 - 60
+ 2498, 2570, 2644, 2719, 2794, 2871, 2949, 3028, 3108, 3189, // 61 - 70
+ 3271, 3354, 3438, 3523, 3610, 3697, 3785, 3875, 3965, 4056, // 71 - 80
+ 4149, 4242, 4337, 4433, 4529, 4627, 4726, 4826, 4927, 5029, // 81 - 90
+ 5132, 5236, 5341, 5447, 5554, 5662, 5772, 5882, 5993, 6106, // 91 - 100
+ 6219, 6334, 6449, 6566, 6684, 6802, 6922, 7043, 7165, 7288, // 101 - 110
+ 7412, 7537, 7663, 7790, 7918, 8047, 8177, 8309, 8441, 8574, // 111 - 120
+ 8709, 8844, 8981, 9118, 9257, 9397, 9537, 9679, 9822, 9966, // 121 - 130
+ 10111, 10257, 10404, 10552, 10701, 10851, 11002, 11155, 11308, 11462, // 131 - 140
+ 11618, 11774, 11932, 12090, 12250, 12410, 12572, 12735, 12898, 13063, // 141 - 150
+ 13229, 13396, 13564, 13733, 13903, 14074, 14246, 14420, 14594, 14769, // 151 - 160
+ 14946, 15123, 15301, 15481, 15661, 15843, 16026, 16209, 16394, 16580, // 161 - 170
+ 16767, 16955, 17144, 17334, 17525] // 171 - 175
+
+ SPTable:[ 8, 10, 13, 15, 18, 20, 23, 25, 28, 30, // 1 - 10
+ 33, 35, 38, 40, 43, 45, 48, 50, 53, 55, // 11 - 20
+ 58, 60, 63, 65, 68, 70, 73, 75, 78, 80, // 21 - 30
+ 83, 85, 88, 90, 93, 95, 98, 100, 103, 105, // 31 - 40
+ 108, 110, 113, 115, 118, 120, 123, 125, 128, 130, // 41 - 50
+ 133, 135, 138, 140, 143, 145, 148, 150, 153, 155, // 51 - 60
+ 158, 160, 163, 165, 168, 170, 173, 175, 178, 180, // 61 - 70
+ 183, 185, 188, 190, 193, 195, 198, 200, 203, 205, // 71 - 80
+ 208, 210, 213, 215, 218, 220, 223, 225, 228, 230, // 81 - 90
+ 233, 235, 238, 240, 243, 245, 248, 250, 253, 255, // 91 - 100
+ 258, 260, 263, 265, 268, 270, 273, 275, 278, 280, // 101 - 110
+ 283, 285, 288, 290, 293, 295, 298, 300, 303, 305, // 111 - 120
+ 308, 310, 313, 315, 318, 320, 323, 325, 328, 330, // 121 - 130
+ 333, 335, 338, 340, 343, 345, 348, 350, 353, 355, // 131 - 140
+ 358, 360, 363, 365, 368, 370, 373, 375, 378, 380, // 141 - 150
+ 383, 385, 388, 390, 393, 395, 398, 400, 403, 405, // 151 - 160
+ 408, 410, 413, 415, 418, 420, 423, 425, 428, 430, // 161 - 170
+ 433, 435, 438, 440, 443] // 171 - 175
+}
diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf
index df223d139..282a85abb 100644
--- a/db/re/map_zone_db.conf
+++ b/db/re/map_zone_db.conf
@@ -193,6 +193,7 @@ zones: (
BS_GREED: "PLAYER"
SC_FATALMENACE: "PLAYER"
SC_DIMENSIONDOOR: "PLAYER"
+ SU_LOPE: "PLAYER"
}
disabled_items: {
@@ -292,6 +293,7 @@ zones: (
CASH_ASSUMPTIO: "PLAYER"
SC_FATALMENACE: "PLAYER"
SC_DIMENSIONDOOR: "PLAYER"
+ SU_LOPE: "PLAYER"
}
disabled_items: {
Assumptio_5_Scroll: true
diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf
index 7503428fc..505aa2603 100644
--- a/db/re/skill_db.conf
+++ b/db/re/skill_db.conf
@@ -33026,10 +33026,37 @@ skill_db: (
}
},
{
- Id: 5015
- Name: "SR_FLASHCOMBO_ATK_STEP1"
- Description: "Flash Combo Attack Step 1"
- MaxLevel: 5
+ Id: 5018
+ Name: "SU_BASIC_SKILL"
+ Description: "New Basic Skill"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5019
+ Name: "SU_BITE"
+ Description: "Bite"
+ MaxLevel: 1
+ Range: 2
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ InterruptCast: true
+ CastTime: 1000
+ AfterCastActDelay: 1000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: 10
+ }
+},
+{
+ Id: 5020
+ Name: "SU_HIDE"
+ Description: "Hide"
+ MaxLevel: 1
Hit: "BDT_SKILL"
SkillType: {
Self: true
@@ -33037,15 +33064,67 @@ skill_db: (
DamageType: {
NoDamage: true
}
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: -1
+ CoolDown: 15000
+ FixedCastTime: 0
Requirements: {
- SPCost: 1
+ SPCost: 30
}
},
{
- Id: 5016
- Name: "SR_FLASHCOMBO_ATK_STEP2"
- Description: "Flash Combo Attack Step 2"
- MaxLevel: 5
+ Id: 5021
+ Name: "SU_SCRATCH"
+ Description: "Scratch"
+ MaxLevel: 3
+ Range: 2
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ DamageType: {
+ SplashArea: true
+ }
+ SplashRange: 1
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: 10000
+ CoolDown: {
+ Lv1: 3000
+ Lv2: 2000
+ Lv3: 1000
+ Lv4: 1
+ Lv5: 1
+ Lv6: 1
+ Lv7: 1
+ Lv8: 1
+ Lv9: 1
+ Lv10: 1
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 25
+ Lv3: 30
+ Lv4: 35
+ Lv5: 40
+ Lv6: 45
+ Lv7: 50
+ Lv8: 55
+ Lv9: 60
+ Lv10: 65
+ }
+ }
+},
+{
+ Id: 5022
+ Name: "SU_STOOP"
+ Description: "Stoop"
+ MaxLevel: 1
Hit: "BDT_SKILL"
SkillType: {
Self: true
@@ -33053,30 +33132,609 @@ skill_db: (
DamageType: {
NoDamage: true
}
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: 6000
+ CoolDown: 15000
+ FixedCastTime: 0
Requirements: {
- SPCost: 1
+ SPCost: 10
}
},
{
- Id: 5017
- Name: "SR_FLASHCOMBO_ATK_STEP3"
- Description: "Flash Combo Attack Step 3"
+ Id: 5023
+ Name: "SU_LOPE"
+ Description: "Lope"
+ MaxLevel: 3
+ Range: {
+ Lv1: 6
+ Lv2: 10
+ Lv3: 14
+ Lv4: 18
+ Lv5: 22
+ Lv6: 26
+ Lv7: 30
+ Lv8: 34
+ Lv9: 38
+ Lv10: 42
+ }
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Place: true
+ }
+ DamageType: {
+ NoDamage: true
+ }
+ InterruptCast: true
+ CastTime: 500
+ AfterCastActDelay: 1000
+ CoolDown: {
+ Lv1: 2000
+ Lv2: 4000
+ Lv3: 6000
+ Lv4: 8000
+ Lv5: 10000
+ Lv6: 12000
+ Lv7: 14000
+ Lv8: 16000
+ Lv9: 18000
+ Lv10: 20000
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 30
+ Lv2: 30
+ Lv3: 30
+ Lv4: 30
+ Lv5: 30
+ Lv6: 30
+ Lv7: 30
+ Lv8: 30
+ Lv9: 30
+ Lv10: 30
+ }
+ }
+},
+{
+ Id: 5024
+ Name: "SU_SPRITEMABLE"
+ Description: "Spirit Marble"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5025
+ Name: "SU_POWEROFLAND"
+ Description: "Power of Land"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5026
+ Name: "SU_SV_STEMSPEAR"
+ Description: "Silvervine Stem Spear"
MaxLevel: 5
+ Range: 9
Hit: "BDT_SKILL"
SkillType: {
- Self: true
+ Enemy: true
+ }
+ AttackType: "Magic"
+ Element: {
+ Lv1: "Ele_Earth"
+ Lv2: "Ele_Fire"
+ Lv3: "Ele_Water"
+ Lv4: "Ele_Wind"
+ Lv5: "Ele_Ghost"
+ }
+ InterruptCast: true
+ CastTime: 2500
+ AfterCastActDelay: 1000
+ SkillData1: 10000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 40
+ Lv2: 40
+ Lv3: 40
+ Lv4: 40
+ Lv5: 40
+ Lv6: 40
+ Lv7: 40
+ Lv8: 40
+ Lv9: 40
+ Lv10: 40
+ }
+ }
+},
+{
+ Id: 5027
+ Name: "SU_CN_POWDERING"
+ Description: "Catnip Powdering"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ DamageType: {
+ NoDamage: true
+ SplashArea: true
+ }
+ SplashRange: {
+ Lv1: 3
+ Lv2: 3
+ Lv3: 5
+ Lv4: 5
+ Lv5: 7
+ }
+ InterruptCast: true
+ SkillInstances: 1
+ CastTime: 1500
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 3000
+ Lv2: 4000
+ Lv3: 5000
+ Lv4: 6000
+ Lv5: 7000
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 40
+ Lv2: 36
+ Lv3: 32
+ Lv4: 28
+ Lv5: 24
+ }
+ Items: {
+ Catnip_Fruit: 1
+ }
+ }
+ Unit: {
+ Id: 0x106
+ Layout: {
+ Lv1: 1
+ Lv2: 1
+ Lv3: 2
+ Lv4: 2
+ Lv5: 3
+ }
+ Interval: -1
+ Target: "Enemy"
+ Flag: {
+ UF_PATHCHECK: true
+ UF_RANGEDSINGLEUNIT: true
+ }
+ }
+},
+{
+ Id: 5028
+ Name: "SU_CN_METEOR"
+ Description: "Catnip Meteor"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_MULTIHIT"
+ SkillType: {
+ Place: true
+ }
+ AttackType: "Magic"
+ SplashRange: {
+ Lv1: 3
+ Lv2: 3
+ Lv3: 5
+ Lv4: 5
+ Lv5: 7
+ }
+ NumberOfHits: {
+ Lv1: 1
+ Lv2: 2
+ Lv3: 3
+ Lv4: 4
+ Lv5: 5
+ }
+ InterruptCast: true
+ CastTime: 6000
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 1500
+ Lv2: 2000
+ Lv3: 2500
+ Lv4: 3000
+ Lv5: 3500
+ }
+ SkillData2: 20000
+ CoolDown: {
+ Lv1: 2000
+ Lv2: 3000
+ Lv3: 4000
+ Lv4: 5000
+ Lv5: 6000
+
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 35
+ Lv3: 50
+ Lv4: 65
+ Lv5: 80
+ }
+ Items: {
+ Catnip_Fruit: 1
+ }
+ }
+ Unit: {
+ Id: 0x86
+ Range: 1
+ Interval: 500
+ Target: "Enemy"
+ Flag: {
+ UF_PATHCHECK: true
+ }
+ }
+},
+{
+ Id: 5029
+ Name: "SU_SV_ROOTTWIST"
+ Description: "Silvervine Root Twist"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
}
DamageType: {
NoDamage: true
}
+ InterruptCast: true
+ SkillInstances: 1
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 7000
+ Lv2: 9000
+ Lv3: 11000
+ Lv4: 13000
+ Lv5: 15000
+ Lv6: 17000
+ Lv7: 19000
+ Lv8: 21000
+ Lv9: 23000
+ Lv10: 25000
+ }
+ CoolDown: 3000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 10
+ Lv2: 12
+ Lv3: 14
+ Lv4: 16
+ Lv5: 18
+ Lv6: 20
+ Lv7: 22
+ Lv8: 24
+ Lv9: 26
+ Lv10: 28
+ }
+ }
+ Unit: {
+ Id: 0x107
+ Interval: 1000
+ Target: "Enemy"
+ Flag: {
+ UF_PATHCHECK: true
+ }
+ }
+},
+{
+ Id: 5030
+ Name: "SU_SV_ROOTTWIST_ATK"
+ Description: "Silver Vine Root Twist Attack"
+ MaxLevel: 5
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Magic"
+ Element: "Ele_Poison"
+ DamageType: {
+ IgnoreElement: true
+ IgnoreDefense: true
+ }
+ SkillInstances: 1
+ AfterCastActDelay: 1000
+ FixedCastTime: 0
Requirements: {
SPCost: 1
}
},
{
- Id: 5018
- Name: "SR_FLASHCOMBO_ATK_STEP4"
- Description: "Flash Combo Attack Step 4"
+ Id: 5031
+ Name: "SU_POWEROFLIFE"
+ Description: "Power of Life"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5032
+ Name: "SU_SCAROFTAROU"
+ Description: "Scar of Tarou"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ InterruptCast: true
+ CastTime: 500
+ AfterCastActDelay: 1000
+ SkillData1: 9000
+ SkillData2: 1000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 10
+ Lv2: 14
+ Lv3: 18
+ Lv4: 22
+ Lv5: 26
+ Lv6: 30
+ Lv7: 34
+ Lv8: 38
+ Lv9: 42
+ Lv10: 46
+ }
+ }
+},
+{
+ Id: 5033
+ Name: "SU_PICKYPECK"
+ Description: "Picky Peck"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_MULTIHIT"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ NumberOfHits: -5
+ InterruptCast: true
+ CastTime: 2500
+ AfterCastActDelay: 1000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 10
+ Lv2: 19
+ Lv3: 28
+ Lv4: 37
+ Lv5: 46
+ Lv6: 55
+ Lv7: 64
+ Lv8: 73
+ Lv9: 82
+ Lv10: 91
+ }
+ }
+},
+{
+ Id: 5034
+ Name: "SU_PICKYPECK_DOUBLE_ATK"
+ Description: "Picky Peck Double Attack"
+ MaxLevel: 5
+ Hit: "BDT_MULTIHIT"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ NumberOfHits: -5
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: 1
+ }
+},
+{
+ Id: 5035
+ Name: "SU_ARCLOUSEDASH"
+ Description: "Arclouse Dash"
+ MaxLevel: 5
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Friend: true
+ }
+ DamageType: {
+ NoDamage: true
+ }
+ InterruptCast: true
+ CastTime: 2500
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 60000
+ Lv2: 70000
+ Lv3: 80000
+ Lv4: 90000
+ Lv5: 100000
+ Lv6: 110000
+ Lv7: 120000
+ Lv8: 130000
+ Lv9: 140000
+ Lv10: 150000
+ }
+ CoolDown: 10000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 12
+ Lv2: 20
+ Lv3: 28
+ Lv4: 36
+ Lv5: 44
+ Lv6: 52
+ Lv7: 60
+ Lv8: 68
+ Lv9: 76
+ Lv10: 84
+ }
+ }
+},
+{
+ Id: 5036
+ Name: "SU_LUNATICCARROTBEAT"
+ Description: "Lunatic Carrot Beat"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_MULTIHIT"
+ SkillType: {
+ Enemy: true
+ }
+ AttackType: "Weapon"
+ Element: "Ele_Weapon"
+ DamageType: {
+ SplashArea: true
+ }
+ SplashRange: {
+ Lv1: 1
+ Lv2: 1
+ Lv3: 2
+ Lv4: 2
+ Lv5: 3
+ Lv6: 3
+ Lv7: 4
+ Lv8: 4
+ Lv9: 5
+ Lv10: 5
+ }
+ NumberOfHits: {
+ Lv1: 1
+ Lv2: 2
+ Lv3: 3
+ Lv4: 4
+ Lv5: 5
+ Lv6: 6
+ Lv7: 7
+ Lv8: 8
+ Lv9: 9
+ Lv10: 10
+ }
+ InterruptCast: true
+ CastTime: 3000
+ AfterCastActDelay: 1000
+ SkillData1: 1000
+ CoolDown: 8000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 15
+ Lv2: 25
+ Lv3: 35
+ Lv4: 45
+ Lv5: 55
+ Lv6: 65
+ Lv7: 75
+ Lv8: 85
+ Lv9: 95
+ Lv10: 105
+ }
+ }
+},
+{
+ Id: 5037
+ Name: "SU_POWEROFSEA"
+ Description: "Power of Sea"
+ MaxLevel: 1
+ NumberOfHits: 0
+},
+{
+ Id: 5038
+ Name: "SU_TUNABELLY"
+ Description: "Tuna Belly"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Friend: true
+ }
+ DamageType: {
+ NoDamage: true
+ }
+ InterruptCast: true
+ CastTime: 2000
+ AfterCastActDelay: 1000
+ CoolDown: {
+ Lv1: 8000
+ Lv2: 10000
+ Lv3: 12000
+ Lv4: 14000
+ Lv5: 16000
+ Lv6: 18000
+ Lv7: 20000
+ Lv8: 22000
+ Lv9: 24000
+ Lv10: 26000
+ }
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 30
+ Lv3: 40
+ Lv4: 50
+ Lv5: 60
+ Lv6: 70
+ Lv7: 80
+ Lv8: 90
+ Lv9: 100
+ Lv10: 110
+ }
+ }
+},
+{
+ Id: 5039
+ Name: "SU_TUNAPARTY"
+ Description: "Tuna Party"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Friend: true
+ }
+ DamageType: {
+ NoDamage: true
+ }
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: 30000
+ CoolDown: 20000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 30
+ Lv3: 40
+ Lv4: 50
+ Lv5: 60
+ Lv6: 70
+ Lv7: 80
+ Lv8: 90
+ Lv9: 100
+ Lv10: 110
+ }
+ }
+},
+{
+ Id: 5040
+ Name: "SU_BUNCHOFSHRIMP"
+ Description: "Bunch of Shrimp"
MaxLevel: 5
Hit: "BDT_SKILL"
SkillType: {
@@ -33084,12 +33742,124 @@ skill_db: (
}
DamageType: {
NoDamage: true
+ SplashArea: true
}
+ SplashRange: -1
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: {
+ Lv1: 60000
+ Lv2: 90000
+ Lv3: 120000
+ Lv4: 150000
+ Lv5: 180000
+ Lv6: 210000
+ Lv7: 240000
+ Lv8: 270000
+ Lv9: 300000
+ Lv10: 330000
+ }
+ CoolDown: 10000
+ FixedCastTime: 0
Requirements: {
- SPCost: 1
+ SPCost: {
+ Lv1: 44
+ Lv2: 48
+ Lv3: 52
+ Lv4: 56
+ Lv5: 60
+ Lv6: 64
+ Lv7: 68
+ Lv8: 72
+ Lv9: 76
+ Lv10: 80
+ }
+ Items: {
+ Prawn: 1
+ }
+
+ }
+},
+{
+ Id: 5041
+ Name: "SU_FRESHSHRIMP"
+ Description: "Fresh Shrimp"
+ MaxLevel: 5
+ Range: 9
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Friend: true
+ }
+ DamageType: {
+ NoDamage: true
+ SplashArea: true
+ }
+ InterruptCast: true
+ AfterCastActDelay: 1000
+ SkillData1: 120000
+ CoolDown: 7000
+ FixedCastTime: 0
+ Requirements: {
+ SPCost: {
+ Lv1: 22
+ Lv2: 24
+ Lv3: 26
+ Lv4: 28
+ Lv5: 30
+ Lv6: 32
+ Lv7: 34
+ Lv8: 36
+ Lv9: 38
+ Lv10: 40
+ }
}
},
{
+ Id: 5042
+ Name: "SU_CN_METEOR_ATK"
+ Description: ""
+ MaxLevel: 5
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Place: true
+ }
+ SkillInfo: {
+ Chorus: true
+ }
+ AttackType: "Magic"
+ InterruptCast: true
+ Requirements: {
+ SPCost: {
+ Lv1: 20
+ Lv2: 35
+ Lv3: 50
+ Lv4: 65
+ Lv5: 80
+ }
+ Items: {
+ Catnip_Fruit: 1
+ }
+ }
+},
+{
+ Id: 5043
+ Name: "SU_LUNATICCARROTBEAT2"
+ Description: "Lunatic Carrot Beat 2"
+ MaxLevel: 5
+ Hit: "BDT_SKILL"
+ SkillType: {
+ Enemy: true
+ }
+ SkillInfo: {
+ Chorus: true
+ }
+ AttackType: "Weapon"
+ InterruptCast: true
+ Requirements: {
+ SPCost: 1
+ }
+},
+{
Id: 8001
Name: "HLIF_HEAL"
Description: "Healing Touch"
diff --git a/db/re/skill_tree.conf b/db/re/skill_tree.conf
index 6e040420b..e9feb2111 100644
--- a/db/re/skill_tree.conf
+++ b/db/re/skill_tree.conf
@@ -3952,3 +3952,93 @@ Rebellion: {
}
}
}
+
+Summoner: {
+ skills: {
+ SU_BASIC_SKILL: 1
+ SU_BITE: {
+ MaxLevel: 1
+ SU_BASIC_SKILL: 1
+ }
+ SU_HIDE: {
+ MaxLevel: 1
+ SU_BITE: 1
+ }
+ SU_SCRATCH: {
+ MaxLevel: 3
+ SU_HIDE: 1
+ }
+ SU_STOOP: {
+ MaxLevel: 1
+ SU_SCRATCH: 3
+ }
+ SU_LOPE: {
+ MaxLevel: 3
+ SU_STOOP: 1
+ }
+ SU_SPRITEMABLE: {
+ MaxLevel: 1
+ SU_LOPE: 3
+ }
+ SU_POWEROFLAND: {
+ MaxLevel: 1
+ SU_CN_POWDERING: 3
+ }
+ SU_SV_STEMSPEAR: {
+ MaxLevel: 5
+ SU_SPRITEMABLE: 1
+ }
+ SU_CN_POWDERING: {
+ MaxLevel: 5
+ SU_CN_METEOR: 3
+ }
+ SU_CN_METEOR: {
+ MaxLevel: 5
+ SU_SV_ROOTTWIST: 3
+ }
+ SU_SV_ROOTTWIST: {
+ MaxLevel: 5
+ SU_SV_STEMSPEAR: 3
+ }
+ SU_POWEROFLIFE: {
+ MaxLevel: 1
+ SU_LUNATICCARROTBEAT: 3
+ }
+ SU_SCAROFTAROU: {
+ MaxLevel: 5
+ SU_SV_ROOTTWIST: 3
+ }
+ SU_PICKYPECK: {
+ MaxLevel: 5
+ SU_SPRITEMABLE: 1
+ }
+ SU_ARCLOUSEDASH: {
+ MaxLevel: 5
+ SU_PICKYPECK: 3
+ }
+ SU_LUNATICCARROTBEAT: {
+ MaxLevel: 5
+ SU_SCAROFTAROU: 3
+ }
+ SU_POWEROFSEA: {
+ MaxLevel: 1
+ SU_TUNAPARTY: 3
+ }
+ SU_TUNABELLY: {
+ MaxLevel: 5
+ SU_BUNCHOFSHRIMP: 3
+ }
+ SU_TUNAPARTY: {
+ MaxLevel: 5
+ SU_TUNABELLY: 3
+ }
+ SU_BUNCHOFSHRIMP: {
+ MaxLevel: 5
+ SU_FRESHSHRIMP: 3
+ }
+ SU_FRESHSHRIMP: {
+ MaxLevel: 5
+ SU_SPRITEMABLE: 1
+ }
+ }
+}
diff --git a/db/sc_config.txt b/db/sc_config.txt
index 104f81102..661e9bb87 100644
--- a/db/sc_config.txt
+++ b/db/sc_config.txt
@@ -492,5 +492,9 @@ SC_TIME_ACCESSORY, 463
SC_MAGICAL_FEATHER, 463
SC_BLOSSOM_FLUTTERING, 463
+// Summoner
+SC_SPRITEMABLE, 205
+SC_BITESCAR, 4
+
// Cant Clear
SC_ALL_RIDING, 397
diff --git a/doc/item_db.txt b/doc/item_db.txt
index 7e637c3c8..ff434ef3c 100644
--- a/doc/item_db.txt
+++ b/doc/item_db.txt
@@ -45,7 +45,7 @@ item_db: (
Rogue: true/false (boolean, defaults to false)
Alchemist: true/false (boolean, defaults to false)
Bard: true/false (boolean, defaults to false)
- Gunslinger: true/false (boolean, defaults to false)
+ Gunslinger: true/false (boolean, defaults to false)
Ninja: true/false (boolean, defaults to false)
Taekwon: true/false (boolean, defaults to false)
Star_Gladiator: true/false (boolean, defaults to false)
@@ -55,6 +55,7 @@ item_db: (
Dark_Collector: true/false (boolean, defaults to false)
Kagerou: true/false (boolean, defaults to false)
Rebellion: true/false (boolean, defaults to false)
+ Summoner: true/false (boolean, defaults to false)
}
Job: Job mask (alternate synxtax, int, defaults to all jobs = 0xFFFFFFFF)
Upper: Upper mask (int, defaults to any = 0x3f)
@@ -179,6 +180,7 @@ Job: Job restrictions. If this block is omitted, item can be equipped by all cl
Dark Collector (2^28): 0x10000000
Kagerou/Oboro (2^29): 0x20000000
Rebellion (2^30): 0x40000000
+ Summoner (2^31): 0x80000000
Some other commonly used values:
All except novice: 0xFFFFFFFE
All (default value): 0xFFFFFFFF
diff --git a/npc/kafras/functions_kafras.txt b/npc/kafras/functions_kafras.txt
index 54db666e6..e1e547174 100644
--- a/npc/kafras/functions_kafras.txt
+++ b/npc/kafras/functions_kafras.txt
@@ -10,6 +10,7 @@
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2012-2015 Hercules Dev Team
+//= Copyright (C) Dastgir
//= Copyright (C) Haru
//= Copyright (C) rAthena Dev Team
//= Copyright (C) Euphy
@@ -47,7 +48,7 @@
//= These functions handle save, storage, cart rental, teleport, and Free
//= Teleport/Warp/Rent Cart options for all Kafra NPCs.
//================= Current Version =======================================
-//= 6.8
+//= 6.9
//=========================================================================
//== Main Function =========================================
@@ -210,7 +211,7 @@ function script F_KafStor {
close;
}
// Unable to access Normal Storage (Insufficient Basic Skills)
- if (basicskillcheck() && getskilllv(NV_BASIC) < 6) {
+ if (basicskillcheck() && getskilllv(NV_BASIC) < 6 && getskilllv(SU_BASIC_SKILL) == 0) {
mes getarg(3);
// Niflheim Specific Message
if (getarg(2) == 1) {
diff --git a/sql-files/main.sql b/sql-files/main.sql
index fe25fb100..5eac523ed 100644
--- a/sql-files/main.sql
+++ b/sql-files/main.sql
@@ -241,6 +241,7 @@ CREATE TABLE IF NOT EXISTS `charlog` (
`account_id` INT(11) NOT NULL DEFAULT '0',
`char_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`char_num` TINYINT(4) NOT NULL DEFAULT '0',
+ `class` MEDIUMINT(9) NOT NULL DEFAULT '0',
`name` VARCHAR(23) NOT NULL DEFAULT '',
`str` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`agi` INT(11) UNSIGNED NOT NULL DEFAULT '0',
@@ -250,7 +251,7 @@ CREATE TABLE IF NOT EXISTS `charlog` (
`luk` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`hair` TINYINT(4) NOT NULL DEFAULT '0',
`hair_color` INT(11) NOT NULL DEFAULT '0'
-) ENGINE=MyISAM;
+) ENGINE=MyISAM;
--
-- Table structure for table `elemental`
@@ -827,6 +828,7 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1450367880); -- 2015-12-1
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1457638175); -- 2016-03-10--22-18.sql
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1467934919); -- 2016-07-08--02-42.sql
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1467935469); -- 2016-07-08--02-51.sql
+INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1475526420); -- 2016-10-03--20-27.sql
--
-- Table structure for table `storage`
diff --git a/sql-files/upgrades/2016-10-03--20-27.sql b/sql-files/upgrades/2016-10-03--20-27.sql
new file mode 100644
index 000000000..6ad840e05
--- /dev/null
+++ b/sql-files/upgrades/2016-10-03--20-27.sql
@@ -0,0 +1,23 @@
+#1475526420
+
+-- This file is part of Hercules.
+-- http://herc.ws - http://github.com/HerculesWS/Hercules
+--
+-- Copyright (C) 2015-2016 Hercules Dev Team
+--
+-- Hercules is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ALTER TABLE `charlog` ADD `class` MEDIUMINT(9) NOT NULL DEFAULT '0' AFTER `char_num`;
+
+INSERT INTO `sql_updates` (`timestamp`) VALUES (1475526420);
diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt
index b0347ab72..0b1051d76 100644
--- a/sql-files/upgrades/index.txt
+++ b/sql-files/upgrades/index.txt
@@ -32,3 +32,4 @@
2016-03-10--22-18.sql
2016-07-08--02-42.sql
2016-07-08--02-51.sql
+2016-10-03--20-27.sql
diff --git a/src/char/char.c b/src/char/char.c
index 945111640..a43f783b5 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -1544,7 +1544,7 @@ int char_check_char_name(char * name, char * esc_name)
* -5: 'Symbols in Character Names are forbidden'
* char_id: Success
**/
-int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style)
+int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job)
{
char name[NAME_LENGTH];
char esc_name[NAME_LENGTH*2+1];
@@ -1557,9 +1557,17 @@ int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int
SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
flag = chr->check_char_name(name,esc_name);
- if( flag < 0 )
+ if (flag < 0)
return flag;
+ switch (starting_job) {
+ case JOB_SUMMONER:
+ case JOB_NOVICE:
+ break;
+ default:
+ return -2; // Char Creation Denied
+ }
+
//check other inputs
#if PACKETVER >= 20120307
if(slot < 0 || slot >= sd->char_slots)
@@ -1580,11 +1588,11 @@ int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int
return -2; /* character account limit exceeded */
#if PACKETVER >= 20120307
- //Insert the new char entry to the database
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `zeny`, `status_point`,`str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`,"
+ // Insert the new char entry to the database
+ if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `class`, `zeny`, `status_point`,`str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`,"
"`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`) VALUES ("
- "'%d', '%d', '%s', '%d', '%d','%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d')",
- char_db, sd->account_id , slot, esc_name, start_zeny, 48, str, agi, vit, int_, dex, luk,
+ "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d')",
+ char_db, sd->account_id , slot, esc_name, starting_job, start_zeny, 48, str, agi, vit, int_, dex, luk,
(40 * (100 + vit)/100) , (40 * (100 + vit)/100 ), (11 * (100 + int_)/100), (11 * (100 + int_)/100), hair_style, hair_color,
mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y) )
{
@@ -1593,10 +1601,10 @@ int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int
}
#else
//Insert the new char entry to the database
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `zeny`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`,"
+ if( SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `class`, `zeny`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`,"
"`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`) VALUES ("
- "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d')",
- char_db, sd->account_id , slot, esc_name, start_zeny, str, agi, vit, int_, dex, luk,
+ "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d')",
+ char_db, sd->account_id , slot, esc_name, starting_job, start_zeny, str, agi, vit, int_, dex, luk,
(40 * (100 + vit)/100) , (40 * (100 + vit)/100 ), (11 * (100 + int_)/100), (11 * (100 + int_)/100), hair_style, hair_color,
mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y) )
{
@@ -1613,9 +1621,9 @@ int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int
// Validation success, log result
if (chr->enable_logs) {
if (SQL_ERROR == SQL->Query(inter->sql_handle,
- "INSERT INTO `%s` (`time`, `char_msg`,`account_id`,`char_id`,`char_num`,`name`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hair`,`hair_color`)"
- "VALUES (NOW(), '%s', '%d', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
- charlog_db, "make new char", sd->account_id, char_id, slot, esc_name, str, agi, vit, int_, dex, luk, hair_style, hair_color))
+ "INSERT INTO `%s` (`time`, `char_msg`, `account_id`, `char_id`, `char_num`, `class`, `name`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hair`, `hair_color`)"
+ "VALUES (NOW(), '%s', '%d', '%d', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
+ charlog_db, "make new char", sd->account_id, char_id, slot, starting_job, esc_name, str, agi, vit, int_, dex, luk, hair_style, hair_color))
Sql_ShowDebug(inter->sql_handle);
}
@@ -4625,10 +4633,12 @@ void char_parse_char_create_new_char(int fd, struct char_session_data* sd)
//turn character creation on/off [Kevin]
result = -2;
} else {
- #if PACKETVER >= 20120307
- result = chr->make_new_char_sql(sd, RFIFOP(fd,2), 1, 1, 1, 1, 1, 1, RFIFOB(fd,26),RFIFOW(fd,27),RFIFOW(fd,29));
+ #if PACKETVER >= 20151001
+ result = chr->make_new_char_sql(sd, RFIFOP(fd,2), 1, 1, 1, 1, 1, 1, RFIFOB(fd,26), RFIFOW(fd,27), RFIFOW(fd,29), RFIFOW(fd, 31));
+ #elif PACKETVER >= 20120307
+ result = chr->make_new_char_sql(sd, RFIFOP(fd,2), 1, 1, 1, 1, 1, 1, RFIFOB(fd,26), RFIFOW(fd,27), RFIFOW(fd,29), JOB_NOVICE);
#else
- result = chr->make_new_char_sql(sd, RFIFOP(fd,2),RFIFOB(fd,26),RFIFOB(fd,27),RFIFOB(fd,28),RFIFOB(fd,29),RFIFOB(fd,30),RFIFOB(fd,31),RFIFOB(fd,32),RFIFOW(fd,33),RFIFOW(fd,35));
+ result = chr->make_new_char_sql(sd, RFIFOP(fd,2), RFIFOB(fd,26), RFIFOB(fd,27), RFIFOB(fd,28), RFIFOB(fd,29), RFIFOB(fd,30), RFIFOB(fd,31), RFIFOB(fd,32), RFIFOW(fd,33), RFIFOW(fd,35), JOB_NOVICE);
#endif
}
@@ -4644,11 +4654,13 @@ void char_parse_char_create_new_char(int fd, struct char_session_data* sd)
// add new entry to the chars list
sd->found_char[char_dat.slot] = result; // the char_id of the new char
}
- #if PACKETVER >= 20120307
- RFIFOSKIP(fd,31);
- #else
- RFIFOSKIP(fd,37);
- #endif
+#if PACKETVER >= 20151001
+ RFIFOSKIP(fd, 36);
+#elif PACKETVER >= 20120307
+ RFIFOSKIP(fd, 31);
+#else
+ RFIFOSKIP(fd, 37);
+#endif
}
// flag:
@@ -5026,17 +5038,22 @@ int char_parse_char(int fd)
break;
// create new char
- #if PACKETVER >= 20120307
+#if PACKETVER >= 20151001
+ // S 0a39 <name>.24B <slot>.B <hair color>.W <hair style>.W <starting job ID>.W <Unknown>.(W or 2 B's)??? <sex>.B
+ case 0xa39:
+ {
+ FIFOSD_CHECK(36);
+#elif PACKETVER >= 20120307
// S 0970 <name>.24B <slot>.B <hair color>.W <hair style>.W
case 0x970:
{
FIFOSD_CHECK(31);
- #else
+#else
// S 0067 <name>.24B <str>.B <agi>.B <vit>.B <int>.B <dex>.B <luk>.B <slot>.B <hair color>.W <hair style>.W
case 0x67:
{
FIFOSD_CHECK(37);
- #endif
+#endif
chr->parse_char_create_new_char(fd, sd);
}
diff --git a/src/char/char.h b/src/char/char.h
index 4dbdfd9db..d7bc96e13 100644
--- a/src/char/char.h
+++ b/src/char/char.h
@@ -147,7 +147,7 @@ struct char_interface {
bool (*char_slotchange) (struct char_session_data *sd, int fd, unsigned short from, unsigned short to);
int (*rename_char_sql) (struct char_session_data *sd, int char_id);
int (*check_char_name) (char * name, char * esc_name);
- int (*make_new_char_sql) (struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style);
+ int (*make_new_char_sql) (struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job);
int (*divorce_char_sql) (int partner_id1, int partner_id2);
int (*count_users) (void);
int (*mmo_char_tobuf) (uint8* buffer, struct mmo_charstatus* p);
diff --git a/src/char/inter.c b/src/char/inter.c
index 05f2bf4f6..fd3fe8c16 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -389,6 +389,9 @@ const char* inter_job_name(int class_)
case JOB_REBELLION:
return inter->msg_txt(655);
+ case JOB_SUMMONER:
+ return inter->msg_txt(669);
+
default:
return inter->msg_txt(620); // "Unknown Job"
}
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 77f706f0d..93151d3ca 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -131,7 +131,7 @@
#define MAX_FAME 1000000000
#define MAX_CART 100
#ifndef MAX_SKILL
-#define MAX_SKILL 1478
+#define MAX_SKILL 1510
#endif
#ifndef MAX_SKILL_ID
#define MAX_SKILL_ID 10015 // [Ind/Hercules] max used skill ID
@@ -993,6 +993,8 @@ enum {
JOB_OBORO,
JOB_REBELLION = 4215,
+ JOB_SUMMONER = 4218,
+
#ifndef JOB_MAX
JOB_MAX,
#endif
diff --git a/src/map/battle.c b/src/map/battle.c
index 67ab8c9b8..8c1a3f364 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -1666,8 +1666,29 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
break;
#endif
/**
- * Arch Bishop
- **/
+ * Summoner
+ **/
+ case SU_BITE:
+ skillratio += 100;
+ break;
+ case SU_SCRATCH:
+ skillratio += -50 + 50 * skill_lv;
+ break;
+ case SU_SCAROFTAROU:
+ skillratio += -100 + 100 * skill_lv;
+ break;
+ case SU_PICKYPECK:
+ case SU_PICKYPECK_DOUBLE_ATK:
+ skillratio += 100 + 100 * skill_lv;
+ if ((status_get_max_hp(target) / 100) <= 50)
+ skillratio *= 2;
+ break;
+ case SU_LUNATICCARROTBEAT:
+ skillratio += 100 + 100 * skill_lv;
+ break;
+ /**
+ * Arch Bishop
+ **/
case AB_JUDEX:
skillratio = 300 + 20 * skill_lv;
RE_LVL_DMOD(100);
@@ -1886,6 +1907,12 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
pc->del_charm(sd, sd->charm_count, sd->charm_type);
}
break;
+ case SU_SV_STEMSPEAR:
+ skillratio += 600;
+ break;
+ case SU_CN_METEOR:
+ skillratio += 100 + 100 * skill_lv;
+ break;
default:
battle->calc_skillratio_magic_unknown(&attack_type, src, target, &skill_id, &skill_lv, &skillratio, &flag);
break;
@@ -3068,6 +3095,9 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
damage -= 50 * damage / 100;//50% reduction to physical ranged attacks
}
+ if (sc->data[SC_SU_STOOP])
+ damage -= damage * 90 / 100;
+
// Compressed code, fixed by map.h [Epoque]
if (src->type == BL_MOB) {
const struct mob_data *md = BL_UCCAST(BL_MOB, src);
@@ -3176,6 +3206,19 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
status_change_end(bl, SC_KYRIE, INVALID_TIMER);
}
+ if ((sce = sc->data[SC_TUNAPARTY]) != NULL && damage > 0) {
+ clif->specialeffect(bl, 336, AREA);
+ sce->val2 -= (int)cap_value(damage, INT_MIN, INT_MAX);
+ if (sce->val2 >= 0) {
+ damage = 0;
+ } else {
+ damage = -sce->val2;
+ }
+ if (sce->val2 <= 0) {
+ status_change_end(bl, SC_TUNAPARTY, INVALID_TIMER);
+ }
+ }
+
if( sc->data[SC_MEIKYOUSISUI] && rnd()%100 < 40 ) // custom value
damage = 0;
@@ -3676,6 +3719,12 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
//Damage calculation from iRO wiki. [Jobbie]
ad.damage = status->get_lv(src) * 10 + sstatus->int_;
break;
+ /**
+ * Summoner
+ */
+ case SU_SV_ROOTTWIST_ATK:
+ ad.damage = 100;
+ break;
default: {
unsigned int skillratio = 100; //Skill dmg modifiers.
MATK_ADD( status->get_matk(src, 2) );
@@ -5199,8 +5248,16 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if (hd != NULL)
ATK_ADD(hd->homunculus.spiritball * 3);
}
+ if ((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) {
+ if (sd != NULL && pc->checkskill(sd, SU_POWEROFLIFE) > 0) {
+ if (pc->checkskill(sd, SU_SCAROFTAROU) == 5 && pc->checkskill(sd, SU_PICKYPECK) == 5 && pc->checkskill(sd, SU_ARCLOUSEDASH) == 5 && pc->checkskill(sd, SU_LUNATICCARROTBEAT) == 5) {
+ ATK_ADDRATE(20);
+ }
+ }
+ }
}
+
switch (skill_id) {
case AS_SONICBLOW:
if (sc && sc->data[SC_SOULLINK] &&
@@ -5263,6 +5320,9 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if( sc && sc->data[SC_MTF_RANGEATK] )
ATK_ADDRATE(sc->data[SC_MTF_RANGEATK]->val1);// temporary it should be 'bonus.long_attack_atk_rate'
#endif
+ if (sc != NULL && sc->data[SC_ARCLOUSEDASH] != NULL && sc->data[SC_ARCLOUSEDASH]->val4 != 0) {
+ ATK_ADDRATE(sc->data[SC_ARCLOUSEDASH]->val4);
+ }
if( (i=pc->checkskill(sd,AB_EUCHARISTICA)) > 0 &&
(tstatus->race == RC_DEMON || tstatus->def_ele == ELE_DARK) )
ATK_ADDRATE(-i);
@@ -7258,6 +7318,7 @@ static const struct battle_data {
{ "save_body_style", &battle_config.save_body_style, 0, 0, 1, },
{ "player_warp_keep_direction", &battle_config.player_warp_keep_direction, 0, 0, 1, },
{ "atcommand_levelup_events", &battle_config.atcommand_levelup_events, 0, 0, 1, },
+ { "max_summoner_parameter", &battle_config.max_summoner_parameter, 120, 10, 10000, },
};
#ifndef STATS_OPT_OUT
/**
diff --git a/src/map/battle.h b/src/map/battle.h
index ebfa0e305..7e7048a38 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -544,6 +544,8 @@ struct Battle_Config {
int player_warp_keep_direction;
int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs
+
+ int max_summoner_parameter; // Summoner Max Stats
};
/* criteria for battle_config.idletime_critera */
diff --git a/src/map/clif.c b/src/map/clif.c
index b92c3185f..424d94205 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -9819,11 +9819,9 @@ void clif_parse_QuitGame(int fd, struct map_session_data *sd) __attribute__((non
void clif_parse_QuitGame(int fd, struct map_session_data *sd)
{
/* Rovert's prevent logout option fixed [Valaris] */
- if( !sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] && !sd->sc.data[SC__INVISIBILITY] &&
- (!battle_config.prevent_logout || DIFF_TICK(timer->gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
- {
+ if (!sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] && !sd->sc.data[SC__INVISIBILITY] && !sd->sc.data[SC_SUHIDE] &&
+ (!battle_config.prevent_logout || DIFF_TICK(timer->gettick(), sd->canlog_tick) > battle_config.prevent_logout)) {
sockt->eof(fd);
-
clif->disconnect_ack(sd, 0);
} else {
clif->disconnect_ack(sd, 1);
@@ -10055,7 +10053,7 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
{
int emoticon = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]);
- if (battle_config.basic_skill_check == 0 || pc->checkskill(sd, NV_BASIC) >= 2) {
+ if (battle_config.basic_skill_check == 0 || pc->check_basicskill(sd, 2)) {
if (emoticon == E_MUTE) {// prevent use of the mute emote [Valaris]
clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
return;
@@ -10115,7 +10113,8 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
sd->sc.data[SC_TRICKDEAD] ||
(sd->sc.data[SC_AUTOCOUNTER] && action_type != 0x07) ||
sd->sc.data[SC_BLADESTOP] ||
- sd->sc.data[SC_DEEP_SLEEP] )
+ sd->sc.data[SC_DEEP_SLEEP] ||
+ sd->sc.data[SC_SUHIDE] )
)
return;
@@ -10155,7 +10154,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
}
break;
case 0x02: // sitdown
- if (battle_config.basic_skill_check && pc->checkskill(sd, NV_BASIC) < 3) {
+ if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 3)) {
clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2);
break;
}
@@ -10240,7 +10239,7 @@ void clif_parse_Restart(int fd, struct map_session_data *sd) {
case 0x01:
/* Rovert's Prevent logout option - Fixed [Valaris] */
if (!sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK]
- && !sd->sc.data[SC_CLOAKINGEXCEED] && !sd->sc.data[SC__INVISIBILITY]
+ && !sd->sc.data[SC_CLOAKINGEXCEED] && !sd->sc.data[SC__INVISIBILITY] && !sd->sc.data[SC_SUHIDE]
&& (!battle_config.prevent_logout || DIFF_TICK(timer->gettick(), sd->canlog_tick) > battle_config.prevent_logout)
) {
//Send to char-server for character selection.
@@ -10428,6 +10427,7 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd)
sd->sc.data[SC_TRICKDEAD] ||
sd->sc.data[SC_BLADESTOP] ||
sd->sc.data[SC_CLOAKINGEXCEED] ||
+ sd->sc.data[SC_SUHIDE] ||
pc_ismuted(&sd->sc, MANNER_NOITEM)
) )
break;
@@ -10760,7 +10760,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
if (pc_ismuted(&sd->sc, MANNER_NOROOM))
return;
- if(battle_config.basic_skill_check && pc->checkskill(sd,NV_BASIC) < 4) {
+ if(battle_config.basic_skill_check && !pc->check_basicskill(sd, 4)) {
clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,3);
return;
}
@@ -10877,7 +10877,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) {
return;
}
- if( battle_config.basic_skill_check && pc->checkskill(sd,NV_BASIC) < 1) {
+ if( battle_config.basic_skill_check && !pc->check_basicskill(sd, 1)) {
clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,0);
return;
}
@@ -11923,7 +11923,7 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd)
clif->message(fd, msg_fd(fd,227)); // Party modification is disabled in this map.
return;
}
- if( battle_config.basic_skill_check && pc->checkskill(sd,NV_BASIC) < 7 ) {
+ if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 7)) {
clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
return;
}
@@ -11945,7 +11945,7 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
clif->message(fd, msg_fd(fd,227)); // Party modification is disabled in this map.
return;
}
- if( battle_config.basic_skill_check && pc->checkskill(sd,NV_BASIC) < 7 ) {
+ if (battle_config.basic_skill_check && !pc->check_basicskill(sd, 7)) {
clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
return;
}
diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index 2e44393fe..97f302b80 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -437,6 +437,9 @@ void itemdb_jobid2mapid(uint64 *bclass, int job_id, bool enable)
case JOB_REBELLION:
mask[1] = 1ULL << MAPID_GUNSLINGER;
break;
+ case JOB_SUMMONER:
+ mask[0] = 1ULL << MAPID_SUMMONER;
+ break;
// Other Classes
case JOB_GANGSI: //Bongun/Munak
mask[0] = 1ULL << MAPID_GANGSI;
@@ -538,6 +541,8 @@ void itemdb_jobmask2mapid(uint64 *bclass, uint64 jobmask)
bclass[1] |= 1ULL<<MAPID_NINJA;
if (jobmask & 1ULL<<30) //Rebellion
bclass[1] |= 1ULL<<MAPID_GUNSLINGER;
+ if (jobmask & 1ULL<<31) //Summoner
+ bclass[0] |= 1ULL<<MAPID_SUMMONER;
}
void create_dummy_data(void)
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index d33805174..16dca9e58 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -54,6 +54,7 @@ enum item_itemid {
ITEMID_WHITE_POTION = 504,
ITEMID_BLUE_POTION = 505,
ITEMID_APPLE = 512,
+ ITEMID_CARROT = 515,
ITEMID_HOLY_WATER = 523,
ITEMID_PUMPKIN = 535,
ITEMID_RED_SLIM_POTION = 545,
@@ -113,6 +114,7 @@ enum item_itemid {
ITEMID_GOLD_KEY77 = 7782,
ITEMID_SILVER_KEY77 = 7783,
ITEMID_TRAP_ALLOY = 7940,
+ ITEMID_CATNIP_FRUIT = 11602,
ITEMID_RED_POUCH_OF_SURPRISE = 12024,
ITEMID_BLOODY_DEAD_BRANCH = 12103,
ITEMID_PORING_BOX = 12109,
diff --git a/src/map/map.c b/src/map/map.c
index 0a60a92b4..4eebafde0 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -337,6 +337,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, int64 tick) {
//status_change_end(bl, SC_BLADESTOP, INVALID_TIMER); //Won't stop when you are knocked away, go figure...
status_change_end(bl, SC_NJ_TATAMIGAESHI, INVALID_TIMER);
status_change_end(bl, SC_MAGICROD, INVALID_TIMER);
+ status_change_end(bl, SC_SU_STOOP, INVALID_TIMER);
if (sc && sc->data[SC_PROPERTYWALK] &&
sc->data[SC_PROPERTYWALK]->val3 >= skill->get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) )
status_change_end(bl,SC_PROPERTYWALK,INVALID_TIMER);
diff --git a/src/map/map.h b/src/map/map.h
index 723691971..c186dab4a 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -88,6 +88,7 @@ enum {
MAPID_XMAS,
MAPID_SUMMER,
MAPID_GANGSI,
+ MAPID_SUMMONER,
//2-1 Jobs
MAPID_SUPER_NOVICE = JOBL_2_1|0x0,
MAPID_KNIGHT,
diff --git a/src/map/packets.h b/src/map/packets.h
index 8b0a733c7..3dc23cb24 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -2930,6 +2930,140 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0980,7,clif->pSelectCart); // CZ_SELECTCART
#endif
+// 2015-10-01bRagexeRE
+#if PACKETVER >= 20151001
+ packet(0x0369,7,clif->pActionRequest,2,6);
+ packet(0x083C,10,clif->pUseSkillToId,2,4,6);
+ packet(0x0437,5,clif->pWalkToXY,2);
+ packet(0x035F,6,clif->pTickSend,2);
+ packet(0x0202,5,clif->pChangeDir,2,4);
+ packet(0x07E4,6,clif->pTakeItem,2);
+ packet(0x0362,6,clif->pDropItem,2,4);
+ packet(0x07EC,8,clif->pMoveToKafra,2,4);
+ packet(0x0364,8,clif->pMoveFromKafra,2,4);
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x096A,6,clif->pGetCharNameRequest,2);
+ packet(0x0368,6,clif->pSolveCharName,2);
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0360,6,clif->pReqClickBuyingStore,2);
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0);
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
+// packet(0x0363,8); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
+ packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0802,26,clif->pPartyInvite2,2);
+// packet(0x0436,4); // CZ_GANGSI_RANK
+ packet(0x023B,26,clif->pFriendsListAdd,2);
+ packet(0x0361,5,clif->pHomMenu,2,4);
+ packet(0x0860,36,clif->pStoragePassword,0);
+#endif
+
+// 2015-10-29aRagexe
+#if PACKETVER >= 20151029
+ packet(0x0369,7,clif->pActionRequest,2,6);
+ packet(0x083C,10,clif->pUseSkillToId,2,4,6);
+ packet(0x0437,5,clif->pWalkToXY,2);
+ packet(0x035F,6,clif->pTickSend,2);
+ packet(0x0202,5,clif->pChangeDir,2,4);
+ packet(0x07E4,6,clif->pTakeItem,2);
+ packet(0x0362,6,clif->pDropItem,2,4);
+ packet(0x07EC,8,clif->pMoveToKafra,2,4);
+ packet(0x0364,8,clif->pMoveFromKafra,2,4);
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x096A,6,clif->pGetCharNameRequest,2);
+ packet(0x0368,6,clif->pSolveCharName,2);
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0360,6,clif->pReqClickBuyingStore,2);
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0);
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0363,8); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8);
+ packet(0x022D,19,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0802,26,clif->pPartyInvite2,2);
+ packet(0x0436,4); // CZ_GANGSI_RANK
+ packet(0x023B,26,clif->pFriendsListAdd,2);
+ packet(0x0361,5,clif->pHomMenu,2,4);
+ packet(0x0860,36,clif->pStoragePassword,0);
+ packet(0x0a39,36);
+#endif
+
+// 2015-11-04aRagexe
+#if PACKETVER >= 20151104
+ packet(0x0369,7,clif->pActionRequest,2,6);
+ packet(0x083C,10,clif->pUseSkillToId,2,4,6);
+ packet(0x0363,5,clif->pWalkToXY,2);
+ packet(0x0886,6,clif->pTickSend,2);
+ packet(0x0928,5,clif->pChangeDir,2,4);
+ packet(0x0964,6,clif->pTakeItem,2);
+ packet(0x0437,6,clif->pDropItem,2,4);
+ packet(0x088B,8,clif->pMoveToKafra,2,4);
+ packet(0x0364,8,clif->pMoveFromKafra,2,4);
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0887,6,clif->pGetCharNameRequest,2);
+ packet(0x0368,6,clif->pSolveCharName,2);
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0436,6,clif->pReqClickBuyingStore,2);
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0);
+ packet(0x023B,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0811,18,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0939,8); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093A,-1,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08A5,26,clif->pPartyInvite2,2);
+ packet(0x08A3,4); // CZ_GANGSI_RANK CZ_GANGSI_RANK
+ packet(0x07EC,26,clif->pFriendsListAdd,2);
+ packet(0x088D,5,clif->pHomMenu,2,4);
+ packet(0x0940,36,clif->pStoragePassword,2,4,20);
+ packet(0x0a39,36);
+#endif
+
+// 2015-12-16aRagexe
+#if PACKETVER >= 20151216
+ packet(0x089D,7,clif->pActionRequest,2,6);
+ packet(0x0968,10,clif->pUseSkillToId,2,4,6);
+ packet(0x08A2,5,clif->pWalkToXY,2);
+ packet(0x085B,6,clif->pTickSend,2);
+ packet(0x022D,5,clif->pChangeDir,2,4);
+ packet(0x08A9,6,clif->pTakeItem,2);
+ packet(0x0966,6,clif->pDropItem,2,4);
+ packet(0x08AC,8,clif->pMoveToKafra,2,4);
+ packet(0x0864,8,clif->pMoveFromKafra,2,4);
+ packet(0x0865,10,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0874,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088B,6,clif->pGetCharNameRequest,2);
+ packet(0x089E,6,clif->pSolveCharName,2);
+ packet(0x0436,12,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0960,2,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0361,6,clif->pReqClickBuyingStore,2);
+ packet(0x083C,2,clif->pReqCloseBuyingStore,0);
+ packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086A,8); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0949,-1,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086E,26,clif->pPartyInvite2,2);
+ packet(0x0364,4); // CZ_GANGSI_RANK
+ packet(0x091D,26,clif->pFriendsListAdd,2);
+ packet(0x0362,5,clif->pHomMenu,2,4);
+ packet(0x0885,36,clif->pStoragePassword,0);
+#endif
+
/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */
#if PACKETVER >= 20110817
packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); /* Thanks to Shakto */
@@ -3175,6 +3309,22 @@ packet(0x96e,-1,clif->ackmergeitems);
packetKeys(0x62C86D09,0x75944F17,0x112C133D); /* Dastgir */
#endif
+#if PACKETVER >= 20151001
+ packetKeys(0x5CFF4561,0x32514AD1,0x06D126D1); /* Dastgir */
+#endif
+
+#if PACKETVER >= 20151029
+ packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); /* Dastgir */
+#endif
+
+#if PACKETVER >= 20151104
+ packetKeys(0x4C17382A,0x7ED174C9,0x29961E4F); /* ossi0110 */
+#endif
+
+#if PACKETVER >= 20151216
+ packetKeys(0x25DD643D,0x61AC39DE,0x77A8206D); /* Dastgir */
+#endif
+
#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3);
#endif
diff --git a/src/map/pc.c b/src/map/pc.c
index 0674f0137..bfd6c0ea5 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1749,7 +1749,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd)
sd->sktree.second = sd->sktree.third = 0;
// limit 1st class and above to novice job levels
- if(skill_point < novice_skills) {
+ if(skill_point < novice_skills && (sd->class_&MAPID_BASEMASK) != MAPID_SUMMONER) {
c = MAPID_NOVICE;
}
// limit 2nd class and above to first class job levels (super novices are exempt)
@@ -4965,6 +4965,7 @@ int pc_useitem(struct map_session_data *sd,int n) {
sd->sc.data[SC_DEEP_SLEEP] ||
sd->sc.data[SC_SATURDAY_NIGHT_FEVER] ||
sd->sc.data[SC_COLD] ||
+ sd->sc.data[SC_SUHIDE] ||
pc_ismuted(&sd->sc, MANNER_NOITEM)
))
return 0;
@@ -5881,6 +5882,7 @@ int pc_jobid2mapid(unsigned short b_class)
case JOB_XMAS: return MAPID_XMAS;
case JOB_SUMMER: return MAPID_SUMMER;
case JOB_GANGSI: return MAPID_GANGSI;
+ case JOB_SUMMONER: return MAPID_SUMMONER;
//2-1 Jobs
case JOB_SUPER_NOVICE: return MAPID_SUPER_NOVICE;
case JOB_KNIGHT: return MAPID_KNIGHT;
@@ -6023,6 +6025,7 @@ int pc_mapid2jobid(unsigned short class_, int sex)
case MAPID_XMAS: return JOB_XMAS;
case MAPID_SUMMER: return JOB_SUMMER;
case MAPID_GANGSI: return JOB_GANGSI;
+ case MAPID_SUMMONER: return JOB_SUMMONER;
//2-1 Jobs
case MAPID_SUPER_NOVICE: return JOB_SUPER_NOVICE;
case MAPID_KNIGHT: return JOB_KNIGHT;
@@ -6362,6 +6365,9 @@ const char* job_name(int class_)
case JOB_REBELLION:
return msg_txt(655);
+ case JOB_SUMMONER:
+ return msg_txt(669);
+
default:
return msg_txt(620); // "Unknown Job"
}
@@ -6487,6 +6493,7 @@ int pc_check_job_name(const char *name) {
{ "Kagerou", JOB_KAGEROU },
{ "Oboro", JOB_OBORO },
{ "Rebellion", JOB_REBELLION },
+ { "Summoner", JOB_SUMMONER },
};
nullpo_retr(-1, name);
@@ -7398,6 +7405,9 @@ int pc_resetskill(struct map_session_data* sd, int flag)
if( homun_alive(sd->hd) && pc->checkskill(sd, AM_CALLHOMUN) )
homun->vaporize(sd, HOM_ST_REST);
+
+ if ((sd->sc.data[SC_SPRITEMABLE] && pc->checkskill(sd, SU_SPRITEMABLE)))
+ status_change_end(&sd->bl, SC_SPRITEMABLE, INVALID_TIMER);
}
for( i = 1; i < MAX_SKILL; i++ ) {
@@ -7422,7 +7432,9 @@ int pc_resetskill(struct map_session_data* sd, int flag)
}
// do not reset basic skill
- if( skill_id == NV_BASIC && (sd->class_&(MAPID_BASEMASK|JOBL_2)) != MAPID_NOVICE )
+ if (skill_id == NV_BASIC && (sd->class_&(MAPID_BASEMASK|JOBL_2)) != MAPID_NOVICE)
+ continue;
+ if (skill_id == SU_BASIC_SKILL && (sd->class_&MAPID_BASEMASK) != MAPID_SUMMONER)
continue;
if( sd->status.skill[i].flag == SKILL_FLAG_PERM_GRANTED )
@@ -8396,6 +8408,9 @@ int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
if( sd->sc.data[SC_EXTREMITYFIST2] )
sp = 0;
#endif
+ if (sd->sc.data[SC_BITESCAR]) {
+ hp = 0;
+ }
}
return status->heal(&sd->bl, hp, sp, 1);
@@ -8618,6 +8633,9 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
if(homun_alive(sd->hd) && !pc->checkskill(sd, AM_CALLHOMUN))
homun->vaporize(sd, HOM_ST_REST);
+ if ((sd->sc.data[SC_SPRITEMABLE] && pc->checkskill(sd, SU_SPRITEMABLE)))
+ status_change_end(&sd->bl, SC_SPRITEMABLE, INVALID_TIMER);
+
if(sd->status.manner < 0)
clif->changestatus(sd,SP_MANNER,sd->status.manner);
@@ -11644,7 +11662,8 @@ bool pc_db_checkid(unsigned int class_)
|| (class_ >= JOB_BABY_RUNE && class_ <= JOB_BABY_MECHANIC2 )
|| (class_ >= JOB_SUPER_NOVICE_E && class_ <= JOB_SUPER_BABY_E )
|| (class_ >= JOB_KAGEROU && class_ <= JOB_OBORO )
- || (class_ >= JOB_REBELLION && class_ < JOB_MAX );
+ || (class_ == JOB_REBELLION)
+ || (class_ >= JOB_SUMMONER && class_ < JOB_MAX );
}
/**
@@ -11662,6 +11681,18 @@ int pc_have_magnifier(struct map_session_data *sd)
}
/**
+ * Checks if player have basic skills learned.
+ * @param sd Player Data
+ * @param level Required Level of Novice Skill
+ * @return bool true, if requirement is satisfied
+ */
+bool pc_check_basicskill(struct map_session_data *sd, int level) {
+ if (pc->checkskill(sd, NV_BASIC) >= level || pc->checkskill(sd, SU_BASIC_SKILL))
+ return true;
+ return false;
+}
+
+/**
* Verifies a chat message, searching for atcommands, checking if the sender
* character can chat, and updating the idle timer.
*
@@ -12117,4 +12148,6 @@ void pc_defaults(void) {
pc->update_idle_time = pc_update_idle_time;
pc->have_magnifier = pc_have_magnifier;
+
+ pc->check_basicskill = pc_check_basicskill;
}
diff --git a/src/map/pc.h b/src/map/pc.h
index fd446813f..5d1404b2a 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -635,6 +635,7 @@ END_ZEROED_BLOCK;
#define pc_is50overweight(sd) ( (sd)->weight*100 >= (sd)->max_weight*battle->bc->natural_heal_weight_rate )
#define pc_is90overweight(sd) ( (sd)->weight*10 >= (sd)->max_weight*9 )
#define pc_maxparameter(sd) ( \
+ ((sd)->class_&MAPID_BASEMASK) == MAPID_SUMMONER ? battle->bc->max_summoner_parameter : \
( ((sd)->class_&MAPID_UPPERMASK) == MAPID_KAGEROUOBORO \
|| ((sd)->class_&MAPID_UPPERMASK) == MAPID_REBELLION \
|| ((sd)->class_&MAPID_THIRDMASK) == MAPID_SUPER_NOVICE_E \
@@ -1094,6 +1095,7 @@ END_ZEROED_BLOCK; /* End */
bool (*process_chat_message) (struct map_session_data *sd, const char *message);
void (*check_supernovice_call) (struct map_session_data *sd, const char *message);
+ bool (*check_basicskill) (struct map_session_data *sd, int level);
};
#ifdef HERCULES_CORE
diff --git a/src/map/script.c b/src/map/script.c
index d1aee29bf..2a39bc832 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -6721,13 +6721,16 @@ BUILDIN(percentheal)
}
sd = script->rid2sd(st);
- if( sd == NULL )
+ if (sd == NULL)
return true;
#ifdef RENEWAL
if( sd->sc.data[SC_EXTREMITYFIST2] )
sp = 0;
#endif
- pc->percentheal(sd,hp,sp);
+ if (sd->sc.data[SC_BITESCAR]) {
+ hp = 0;
+ }
+ pc->percentheal(sd, hp, sp);
return true;
}
diff --git a/src/map/skill.c b/src/map/skill.c
index 2559a7a5b..4c57fbc56 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -131,7 +131,7 @@ int skill_get_index (uint16 skill_id)
skill_id = (1077) + skill_id - 2201;
else if ( skill_id < 3036 ) // 2549 - 3000 are empty - 1020+57+348
skill_id = (1425) + skill_id - 3001;
- else if ( skill_id < 5019 ) // 3036 - 5000 are empty - 1020+57+348+35
+ else if ( skill_id < 5044 ) // 3036 - 5000 are empty - 1020+57+348+35
skill_id = (1460) + skill_id - 5001;
else
ShowWarning("skill_get_index: skill id '%d' is not being handled!\n",skill_id);
@@ -365,7 +365,10 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
nullpo_ret(src);
- switch( skill_id ) {
+ switch (skill_id) {
+ case SU_TUNABELLY:
+ hp = status_get_max_hp(target) * ((20 * skill_lv) - 10) / 100;
+ break;
case BA_APPLEIDUN:
#ifdef RENEWAL
hp = 100+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery
@@ -397,6 +400,11 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
hp += hp * skill2_lv * 2 / 100;
else if (src->type == BL_HOM && (skill2_lv = homun->checkskill(BL_UCAST(BL_HOM, src), HLIF_BRAIN)) > 0)
hp += hp * skill2_lv * 2 / 100;
+ if (sd != NULL && ((skill2_lv = pc->checkskill(sd, SU_POWEROFSEA)) > 0)) {
+ hp += hp * 10 / 100;
+ if (pc->checkskill(sd, SU_TUNABELLY) == 5 && pc->checkskill(sd, SU_TUNAPARTY) == 5 && pc->checkskill(sd, SU_BUNCHOFSHRIMP) == 5 && pc->checkskill(sd, SU_FRESHSHRIMP) == 5)
+ hp += hp * 20 / 100;
+ }
break;
}
@@ -466,8 +474,11 @@ int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* b
skill_id == MER_INCAGI || skill_id == MER_BLESSING))
return 0;
- // Couldn't preserve 3rd Class skills except only when using Reproduce skill. [Jobbie]
- if( !(sd->sc.data[SC__REPRODUCE]) && ((skill_id >= RK_ENCHANTBLADE && skill_id <= LG_OVERBRAND_PLUSATK) || (skill_id >= RL_GLITTERING_GREED && skill_id <= OB_AKAITSUKI) || (skill_id >= GC_DARKCROW && skill_id <= NC_MAGMA_ERUPTION_DOTDAMAGE)))
+ // Couldn't preserve 3rd Class/Summoner skills except only when using Reproduce skill. [Jobbie]
+ if (!(sd->sc.data[SC__REPRODUCE]) &&
+ ((skill_id >= RK_ENCHANTBLADE && skill_id <= LG_OVERBRAND_PLUSATK) ||
+ (skill_id >= RL_GLITTERING_GREED && skill_id <= OB_AKAITSUKI) ||
+ (skill_id >= GC_DARKCROW && skill_id <= SU_FRESHSHRIMP)))
return 0;
// Reproduce will only copy skills according on the list. [Jobbie]
else if( sd->sc.data[SC__REPRODUCE] && !skill->dbs->reproduce_db[skill->get_index(skill_id)] )
@@ -1415,6 +1426,25 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
case MH_XENO_SLASHER:
sc_start2(src, bl, SC_BLOODING, 10 * skill_lv, skill_lv, src->id, skill->get_time(skill_id,skill_lv));
break;
+ /**
+ * Summoner
+ */
+ case SU_SCRATCH:
+ sc_start2(src, bl, SC_BLOODING, (skill_lv * 3), skill_lv, src->id, skill->get_time(skill_id, skill_lv)); // TODO: What's the chance/time?
+ break;
+ case SU_SV_STEMSPEAR:
+ sc_start2(src, bl, SC_BLOODING, 10, skill_lv, src->id, skill->get_time(skill_id, skill_lv));
+ break;
+ case SU_CN_METEOR:
+ sc_start(src, bl, SC_CURSE, 10, skill_lv, skill->get_time2(skill_id, skill_lv)); // TODO: What's the chance/time?
+ break;
+ case SU_SCAROFTAROU:
+ sc_start(src, bl, SC_STUN, 10, skill_lv, skill->get_time2(skill_id, skill_lv)); // TODO: What's the chance/time?
+ break;
+ case SU_LUNATICCARROTBEAT:
+ if (skill->area_temp[3] == 1)
+ sc_start(src, bl, SC_STUN, 10, skill_lv, skill_get_time(skill_id, skill_lv)); // TODO: What's the chance/time?
+ break;
default:
skill->additional_effect_unknown(src, bl, &skill_id, &skill_lv, &attack_type, &dmg_lv, &tick);
break;
@@ -2088,6 +2118,7 @@ int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int
int skill_blown(struct block_list* src, struct block_list* target, int count, int8 dir, int flag)
{
int dx = 0, dy = 0;
+ struct status_change *tsc = status->get_sc(target);
nullpo_ret(src);
@@ -2135,6 +2166,9 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in
dy = -diry[dir];
}
+ if (tsc != NULL && tsc->data[SC_SU_STOOP]) // Any knockback will cancel it.
+ status_change_end(target, SC_SU_STOOP, INVALID_TIMER);
+
return unit->blown(target, dx, dy, count, flag); // send over the proper flag
}
@@ -3442,7 +3476,8 @@ int skill_timerskill(int tid, int64 tick, int id, intptr_t data) {
break;
switch( skl->skill_id ) {
case WZ_METEOR:
- if( skl->type >= 0 ) {
+ case SU_CN_METEOR:
+ if (skl->type >= 0) {
int x = skl->type>>16, y = skl->type&0xFFFF;
if( path->search_long(NULL, src, src->m, src->x, src->y, x, y, CELL_CHKWALL) )
skill->unitsetting(src,skl->skill_id,skl->skill_lv,x,y,skl->flag);
@@ -3961,7 +3996,17 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
break;
- //Splash attack skills.
+ case SU_BITE:
+ skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
+ if (status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) + 10)) // TODO: Need activation chance.
+ skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag);
+ break;
+
+ case SU_PICKYPECK:
+ clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
+ break;
+
+ // Splash attack skills.
case AS_GRIMTOOTH:
case MC_CARTREVOLUTION:
case NPC_SPLASHATTACK:
@@ -4014,7 +4059,9 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
case KO_BAKURETSU:
case GN_ILLUSIONDOPING:
case MH_XENO_SLASHER:
- if( flag&1 ) {//Recursive invocation
+ case SU_SCRATCH:
+ case SU_LUNATICCARROTBEAT:
+ if (flag&1) { //Recursive invocation
// skill->area_temp[0] holds number of targets in area
// skill->area_temp[1] holds the id of the original target
// skill->area_temp[2] counts how many targets have already been processed
@@ -4029,15 +4076,19 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
break;
heal = skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, sflag);
- if( skill_id == NPC_VAMPIRE_GIFT && heal > 0 ) {
+ if (skill_id == NPC_VAMPIRE_GIFT && heal > 0) {
clif->skill_nodamage(NULL, src, AL_HEAL, heal, 1);
status->heal(src,heal,0,0);
}
+ if (skill_id == SU_SCRATCH && status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) + 10)) // TODO: Need activation chance.
+ skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag);
} else {
switch ( skill_id ) {
case NJ_BAKUENRYU:
case LG_EARTHDRIVE:
case GN_CARTCANNON:
+ case SU_SCRATCH:
+ case SU_LUNATICCARROTBEAT:
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
break;
case SR_TIGERCANNON:
@@ -4056,13 +4107,19 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
skill->area_temp[0] = 0;
skill->area_temp[1] = bl->id;
skill->area_temp[2] = 0;
- if( skill_id == WL_CRIMSONROCK ) {
+ if (skill_id == WL_CRIMSONROCK) {
skill->area_temp[4] = bl->x;
skill->area_temp[5] = bl->y;
}
+ if (skill_id == SU_LUNATICCARROTBEAT) {
+ skill->area_temp[3] = 0;
+ }
- if( skill_id == NC_VULCANARM )
- if (sd) pc->overheat(sd,1);
+ if (skill_id == NC_VULCANARM) {
+ if (sd != NULL) {
+ pc->overheat(sd,1);
+ }
+ }
// if skill damage should be split among targets, count them
//SD_LEVEL -> Forced splash damage for Auto Blitz-Beat -> count targets
@@ -4072,6 +4129,15 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
// recursive invocation of skill->castend_damage_id() with flag|1
map->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), skill->splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id);
+
+ if (sd && skill_id == SU_LUNATICCARROTBEAT) {
+ short item_idx = pc->search_inventory(sd, ITEMID_CARROT);
+
+ if (item_idx >= 0) {
+ pc->delitem(sd, item_idx, 1, 0, 1, LOG_TYPE_CONSUME);
+ skill->area_temp[3] = 1;
+ }
+ }
}
break;
@@ -4881,6 +4947,15 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
break;
+ case SU_SV_STEMSPEAR:
+ skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
+ if (status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) + 10)) // TODO: Need activation chance.
+ skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, (skill_id == SU_SV_STEMSPEAR) ? BF_MAGIC : BF_WEAPON, flag);
+ break;
+ case SU_SCAROFTAROU:
+ sc_start(src, bl, status->skill2sc(skill_id), 10, skill_lv, skill->get_time(skill_id, skill_lv)); // TODO: What's the activation chance for the effect?
+ break;
+
case 0:/* no skill - basic/normal attack */
if(sd) {
if (flag & 3){
@@ -5018,6 +5093,8 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
ud->skilltimer=tid;
return skill->castend_pos(tid,tick,id,data);
case GN_WALLOFTHORN:
+ case SU_CN_POWDERING:
+ case SU_SV_ROOTTWIST:
ud->skillx = target->x;
ud->skilly = target->y;
ud->skilltimer = tid;
@@ -5480,6 +5557,10 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
* Arch Bishop
**/
case AB_HIGHNESSHEAL:
+ /**
+ * Summoner
+ */
+ case SU_TUNABELLY:
{
int heal = skill->calc_heal(src, bl, (skill_id == AB_HIGHNESSHEAL)?AL_HEAL:skill_id, (skill_id == AB_HIGHNESSHEAL)?10:skill_lv, true);
int heal_get_jobexp;
@@ -5509,6 +5590,9 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
else if (tsc->data[SC_BERSERK])
heal = 0; //Needed so that it actually displays 0 when healing.
}
+ if (skill_id == AL_HEAL) {
+ status_change_end(bl, SC_BITESCAR, INVALID_TIMER);
+ }
clif->skill_nodamage (src, bl, skill_id, heal, 1);
if( tsc && tsc->data[SC_AKAITSUKI] && heal && skill_id != HLIF_HEAL )
heal = ~heal + 1;
@@ -5888,6 +5972,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case PR_KYRIE:
case MER_KYRIE:
+ case SU_TUNAPARTY:
clif->skill_nodamage(bl, bl, skill_id, -1,
sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv)));
break;
@@ -6004,9 +6089,18 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case RK_ABUNDANCE:
case RK_CRUSHSTRIKE:
case ALL_ODINS_POWER:
+ case SU_FRESHSHRIMP:
+ case SU_ARCLOUSEDASH:
clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
break;
+ // Works just like the above list of skills, except animation caused by
+ // status must trigger AFTER the skill cast animation or it will cancel
+ // out the status's animation.
+ case SU_STOOP:
+ clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
+ sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv));
+ break;
case KN_AUTOCOUNTER:
sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv));
skill->addtimerskill(src, tick + 100, bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag);
@@ -6661,7 +6755,8 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
status_change_end(bl, SC_SILENCE, INVALID_TIMER);
status_change_end(bl, SC_BLIND, INVALID_TIMER);
status_change_end(bl, SC_CONFUSION, INVALID_TIMER);
- clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
+ status_change_end(bl, SC_BITESCAR, INVALID_TIMER);
+ clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
break;
case TF_DETOXIFY:
@@ -8923,6 +9018,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
case LG_TRAMPLE:
clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, BDT_SKILL);
map->foreachinrange(skill->destroy_trap,bl,skill->get_splash(skill_id,skill_lv),BL_SKILL,tick);
+ status_change_end(bl, SC_SV_ROOTTWIST, INVALID_TIMER);
break;
case LG_REFLECTDAMAGE:
@@ -9452,6 +9548,26 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, 0, 1, skill_id, -2, BDT_SKILL);
break;
+ case SU_HIDE:
+ if (tsce != NULL) {
+ clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
+ status_change_end(bl, type, INVALID_TIMER);
+ map->freeblock_unlock();
+ return 0;
+ }
+ clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
+ sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv));
+ break;
+ break;
+
+ case SU_BUNCHOFSHRIMP:
+ if (sd == NULL || sd->status.party_id == 0 || flag&1) {
+ clif->skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv)));
+ } else if (sd != NULL) {
+ party->foreachsamemap(skill->area_sub, sd, skill->get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill->castend_nodamage_id);
+ }
+ break;
+
case GM_SANDMAN:
if( tsc ) {
if( tsc->opt1 == OPT1_SLEEP )
@@ -10352,6 +10468,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case HW_GANBANTEIN:
case LG_EARTHDRIVE:
case SC_ESCAPE:
+ case SU_CN_METEOR:
break; //Effect is displayed on respective switch case.
default:
skill->castend_pos2_effect_unknown(src, &x, &y, &skill_id, &skill_lv, &tick, &flag);
@@ -10540,7 +10657,9 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case SO_ELEMENTAL_SHIELD:
case RL_B_TRAP:
case MH_XENO_SLASHER:
- flag|=1;//Set flag to 1 to prevent deleting ammo (it will be deleted on group-delete).
+ case SU_CN_POWDERING:
+ case SU_SV_ROOTTWIST:
+ flag |= 1; // Set flag to 1 to prevent deleting ammo (it will be deleted on group-delete).
FALLTHROUGH
case GS_GROUNDDRIFT: //Ammo should be deleted right away.
if ( skill_id == WM_SEVERE_RAINSTORM )
@@ -10593,11 +10712,24 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
break;
case WZ_METEOR:
+ case SU_CN_METEOR:
{
int area = skill->get_splash(skill_id, skill_lv);
short tmpx = 0, tmpy = 0, x1 = 0, y1 = 0;
int i;
+#if 0
+ // The Meteor should inflict curse if Catnip fruit is consumed.
+ // Currently Catnip fruit is added as requirement.
+ if (sd && skill_id == SU_CN_METEOR) {
+ short item_idx = pc->search_inventory(sd, ITEMID_CATNIP_FRUIT);
+ if (item_idx >= 0) {
+ pc->delitem(sd, item_idx, 1, 0, 1, LOG_TYPE_SKILL);
+ flag |= 1;
+ }
+ }
+#endif
+
for( i = 0; i < 2 + (skill_lv>>1); i++ ) {
// Creates a random Cell in the Splash Area
tmpx = x - area + rnd()%(area * 2 + 1);
@@ -10649,6 +10781,19 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
}
status_change_end(src, SC_HIDING, INVALID_TIMER);
break;
+ case SU_LOPE:
+ {
+ if (map->list[src->m].flag.noteleport && !(map->list[src->m].flag.battleground || map_flag_gvg2(src->m))) {
+ x = src->x;
+ y = src->y;
+ }
+ clif->skill_nodamage(src, src, SU_LOPE, skill_lv, 1);
+ if(!map->count_oncell(src->m, x, y, BL_PC | BL_NPC | BL_MOB, 0) && map->getcell(src->m, src, x, y, CELL_CHKREACH)) {
+ clif->slide(src, x, y);
+ unit->movepos(src, x, y, 1, 0);
+ }
+ }
+ break;
case AM_SPHEREMINE:
case AM_CANNIBALIZE:
{
@@ -11232,7 +11377,7 @@ struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_
nullpo_retr(NULL, st);
sc = status->get_sc(src); // for traps, firewall and fogwall - celest
- switch( skill_id ) {
+ switch (skill_id) {
case SO_ELEMENTAL_SHIELD:
val2 = 300 * skill_lv + 65 * (st->int_ + status->get_lv(src)) + st->max_sp;
break;
@@ -11969,6 +12114,13 @@ int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick
sc_start(ss, bl, SC_VOLCANIC_ASH, 100, sg->skill_lv, skill->get_time(MH_VOLCANIC_ASH, sg->skill_lv));
break;
+ case UNT_CATNIPPOWDER:
+ if (sg->src_id == bl->id || (status_get_mode(bl)&MD_BOSS))
+ break; // Does not affect the caster or Boss.
+ if (sce == NULL && battle->check_target(&src->bl, bl, BCT_ENEMY) > 0)
+ sc_start(ss, bl, type, 100, sg->skill_lv, skill->get_time(sg->skill_id, sg->skill_lv));
+ break;
+
case UNT_GD_LEADERSHIP:
case UNT_GD_GLORYWOUNDS:
case UNT_GD_SOULCOLD:
@@ -12169,6 +12321,9 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
map->freeblock_unlock();
}
break;
+ case WZ_HEAVENDRIVE:
+ status_change_end(bl, SC_SV_ROOTTWIST, INVALID_TIMER);
+ break;
/**
* The storm gust counter was dropped in renewal
**/
@@ -12178,12 +12333,12 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
tsc->sg_counter++; //SG hit counter.
if (skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0) <= 0 && tsc)
tsc->sg_counter=0; //Attack absorbed.
- break;
+ break;
#endif
case GS_DESPERADO:
if (rnd()%100 < src->val1)
skill->attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
- break;
+ break;
default:
skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
}
@@ -12753,6 +12908,30 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
status->change_start(ss, bl, SC_BLIND, rnd() % 100 > sg->skill_lv * 10, sg->skill_lv, sg->skill_id, 0, 0,
skill->get_time2(sg->skill_id, sg->skill_lv), SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE);
break;
+ case UNT_SV_ROOTTWIST:
+ if (status_get_mode(bl)&MD_BOSS) {
+ break;
+ }
+ if (tsc) {
+ if (!sg->val2) {
+ int sec = skill->get_time(sg->skill_id, sg->skill_lv);
+
+ if (sc_start2(ss, bl, type, 100, sg->skill_lv, sg->group_id, sec)) {
+ const struct TimerData* td = ((tsc->data[type])? timer->get(tsc->data[type]->timer) : NULL);
+
+ if (td != NULL)
+ sec = DIFF_TICK32(td->tick, tick);
+ clif->fixpos(bl);
+ sg->val2 = bl->id;
+ } else { // Couldn't trap it?
+ sec = 7000;
+ }
+ sg->limit = DIFF_TICK32(tick, sg->tick) + sec;
+ } else if (tsc->data[type] && bl->id == sg->val2) {
+ skill->attack(skill->get_type(SU_SV_ROOTTWIST_ATK), ss, &src->bl, bl, SU_SV_ROOTTWIST_ATK, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION);
+ }
+ }
+ break;
default:
skill->unit_onplace_timer_unknown(src, bl, &tick);
break;
@@ -13342,7 +13521,8 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
case SG_FUSION:
case RA_WUGDASH:
case KO_YAMIKUMO:
- if( sc && sc->data[status->skill2sc(skill_id)] )
+ case SU_HIDE:
+ if (sc && sc->data[status->skill2sc(skill_id)])
return 1;
FALLTHROUGH
default:
@@ -14554,7 +14734,8 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
case TK_READYTURN:
case SG_FUSION:
case KO_YAMIKUMO:
- if( sc && sc->data[status->skill2sc(skill_id)] )
+ case SU_HIDE:
+ if (sc && sc->data[status->skill2sc(skill_id)])
return req;
/* Fall through */
default:
diff --git a/src/map/skill.h b/src/map/skill.h
index c7761b082..b27d7ac3a 100644
--- a/src/map/skill.h
+++ b/src/map/skill.h
@@ -1365,6 +1365,10 @@ enum e_skill {
ITEM_OPTION_SPLASH_ATTACK,
GM_FORCE_TRANSFER,
GM_WIDE_RESURRECTION,
+ ALL_NIFLHEIM_RECALL,
+ ALL_PRONTERA_RECALL,
+ ALL_GLASTHEIM_RECALL,
+ ALL_THANATOS_RECALL,
GC_DARKCROW = 5001,
RA_UNLIMIT,
@@ -1382,6 +1386,47 @@ enum e_skill {
ALL_FULL_THROTTLE,
NC_MAGMA_ERUPTION_DOTDAMAGE,
+ /** Summoner */
+ SU_BASIC_SKILL = 5018,
+ SU_BITE,
+ SU_HIDE,
+ SU_SCRATCH,
+ SU_STOOP,
+ SU_LOPE,
+ SU_SPRITEMABLE,
+ SU_POWEROFLAND,
+ SU_SV_STEMSPEAR,
+ SU_CN_POWDERING,
+ SU_CN_METEOR,
+ SU_SV_ROOTTWIST,
+ SU_SV_ROOTTWIST_ATK,
+ SU_POWEROFLIFE,
+ SU_SCAROFTAROU,
+ SU_PICKYPECK,
+ SU_PICKYPECK_DOUBLE_ATK,
+ SU_ARCLOUSEDASH,
+ SU_LUNATICCARROTBEAT,
+ SU_POWEROFSEA,
+ SU_TUNABELLY,
+ SU_TUNAPARTY,
+ SU_BUNCHOFSHRIMP,
+ SU_FRESHSHRIMP,
+ SU_CN_METEOR2,
+ SU_LUNATICCARROTBEAT2,
+ SU_SOULATTACK,
+ SU_POWEROFFLOCK,
+ SU_SVG_SPIRIT,
+ SU_HISS,
+ SU_NYANGGRASS,
+ SU_GROOMING,
+ SU_PURRING,
+ SU_SHRIMPARTY,
+ SU_SPIRITOFLIFE,
+ SU_MEOWMEOW,
+ SU_SPIRITOFLAND,
+ SU_CHATTERING,
+ SU_SPIRITOFSEA,
+
HLIF_HEAL = 8001,
HLIF_AVOID,
HLIF_BRAIN,
@@ -1651,6 +1696,9 @@ enum {
UNT_B_TRAP,
UNT_FIRE_RAIN,
+ UNT_CATNIPPOWDER,
+ UNT_SV_ROOTTWIST,
+
/**
* Guild Auras
**/
diff --git a/src/map/status.c b/src/map/status.c
index 37efe1f93..46df84473 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -719,6 +719,24 @@ void initChangeTables(void)
status->set_sc( GN_FIRE_EXPANSION_TEAR_GAS , SC_FIRE_EXPANSION_TEAR_GAS , SI_FIRE_EXPANSION_TEAR_GAS , SCB_NONE );
status->set_sc( GN_MANDRAGORA , SC_MANDRAGORA , SI_MANDRAGORA , SCB_INT );
+ /**
+ * Summoner
+ */
+ status->set_sc(SU_HIDE, SC_SUHIDE, SI_SUHIDE, SCB_SPEED);
+ add_sc(SU_SCRATCH, SC_BLOODING);
+ status->set_sc(SU_STOOP, SC_SU_STOOP, SI_SU_STOOP, SCB_NONE);
+ status->set_sc(SU_FRESHSHRIMP, SC_FRESHSHRIMP, SI_FRESHSHRIMP, SCB_NONE);
+ add_sc(SU_SV_STEMSPEAR, SC_BLOODING);
+ status->set_sc(SU_CN_POWDERING, SC_CATNIPPOWDER, SI_CATNIPPOWDER, SCB_WATK | SCB_SPEED | SCB_REGEN);
+ add_sc(SU_CN_METEOR, SC_CURSE);
+ set_sc_with_vfx(SU_SV_ROOTTWIST, SC_SV_ROOTTWIST, SI_SV_ROOTTWIST, SCB_NONE);
+ add_sc(SU_SCAROFTAROU, SC_STUN );
+ status->set_sc(SU_SCAROFTAROU, SC_BITESCAR, SI_BITESCAR, SCB_NONE);
+ status->set_sc(SU_ARCLOUSEDASH, SC_ARCLOUSEDASH, SI_ARCLOUSEDASH, SCB_AGI | SCB_SPEED);
+ add_sc(SU_LUNATICCARROTBEAT, SC_STUN);
+ status->set_sc(SU_TUNAPARTY, SC_TUNAPARTY, SI_TUNAPARTY, SCB_NONE);
+ status->set_sc(SU_BUNCHOFSHRIMP, SC_SHRIMP, SI_SHRIMP, SCB_BATK | SCB_MATK);
+
// Elemental Spirit summoner's 'side' status changes.
status->set_sc( EL_CIRCLE_OF_FIRE , SC_CIRCLE_OF_FIRE_OPTION, SI_CIRCLE_OF_FIRE_OPTION, SCB_NONE );
status->set_sc( EL_FIRE_CLOAK , SC_FIRE_CLOAK_OPTION , SI_FIRE_CLOAK_OPTION , SCB_ALL );
@@ -997,6 +1015,9 @@ void initChangeTables(void)
status->dbs->IconChangeTable[SC_MAGICAL_FEATHER] = SI_MAGICAL_FEATHER;
status->dbs->IconChangeTable[SC_BLOSSOM_FLUTTERING] = SI_BLOSSOM_FLUTTERING;
+ // Summoner
+ status->dbs->IconChangeTable[SC_SPRITEMABLE] = SI_SPRITEMABLE;
+
// Other SC which are not necessarily associated to skills.
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION1] |= SCB_ASPD;
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION2] |= SCB_ASPD;
@@ -1347,6 +1368,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp,
status_change_end(target, SC_CLOAKING, INVALID_TIMER);
status_change_end(target, SC_CHASEWALK, INVALID_TIMER);
status_change_end(target, SC_CAMOUFLAGE, INVALID_TIMER);
+ status_change_end(target, SC_SUHIDE, INVALID_TIMER);
if ((sce=sc->data[SC_ENDURE]) && !sce->val4 && !sc->data[SC_LKCONCENTRATION]) {
//Endure count is only reduced by non-players on non-gvg maps.
//val4 signals infinite endure. [Skotlex]
@@ -1802,6 +1824,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin
(sc->data[SC_TRICKDEAD] && skill_id != NV_TRICKDEAD)
|| (sc->data[SC_AUTOCOUNTER] && !flag && skill_id)
|| (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF && skill_id != PA_GOSPEL)
+ || (sc->data[SC_SUHIDE] && skill_id != SU_HIDE)
)
return 0;
@@ -2381,7 +2404,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
//Give them all modes except these (useful for clones)
bstatus->mode = MD_MASK&~(MD_BOSS|MD_PLANT|MD_DETECTOR|MD_ANGRY|MD_TARGETWEAK);
- bstatus->size = (sd->class_&JOBL_BABY)?SZ_SMALL:SZ_MEDIUM;
+ bstatus->size = (sd->class_&JOBL_BABY || (sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER)?SZ_SMALL:SZ_MEDIUM;
if (battle_config.character_size && (pc_isridingpeco(sd) || pc_isridingdragon(sd))) { //[Lupus]
if (sd->class_&JOBL_BABY) {
if (battle_config.character_size&SZ_BIG)
@@ -2393,7 +2416,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
}
bstatus->aspd_rate = 1000;
bstatus->ele_lv = 1;
- bstatus->race = RC_PLAYER;
+ bstatus->race = ((sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER)?RC_BRUTE:RC_PLAYER;
// Autobonus
pc->delautobonus(sd,sd->autobonus,ARRAYLENGTH(sd->autobonus),true);
@@ -2696,6 +2719,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->dex += skill_lv;
if((skill_lv = pc->checkskill(sd,RA_RESEARCHTRAP))>0)
bstatus->int_ += skill_lv;
+ if ((pc->checkskill(sd,SU_POWEROFLAND)) > 0)
+ bstatus->int_ += 20;
// Bonuses from cards and equipment as well as base stat, remember to avoid overflows.
i = bstatus->str + sd->status.str + sd->param_bonus[0] + sd->param_equip[0];
@@ -2733,9 +2758,12 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->max_hp = (unsigned int)cap_value(i64, 0, INT_MAX);
// Absolute modifiers from passive skills
- if((skill_lv=pc->checkskill(sd,CR_TRUST))>0)
+ if ((skill_lv=pc->checkskill(sd,CR_TRUST)) > 0)
bstatus->max_hp += skill_lv*200;
+ if ((pc->checkskill(sd,SU_SPRITEMABLE)) > 0)
+ bstatus->max_hp += 1000;
+
// Apply relative modifiers from equipment
if(sd->hprate < 0)
sd->hprate = 0;
@@ -2768,6 +2796,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->max_sp += 200 + 20 * skill_lv;
if( (skill_lv = pc->checkskill(sd,WM_LESSON)) > 0 )
bstatus->max_sp += 30 * skill_lv;
+ if ((pc->checkskill(sd,SU_SPRITEMABLE)) > 0)
+ bstatus->max_sp += 100;
// Apply relative modifiers from equipment
if(sd->sprate < 0)
@@ -2840,6 +2870,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
sd->critical_rate = 0;
if(sd->critical_rate != 100)
bstatus->cri = bstatus->cri * sd->critical_rate/100;
+ if (pc->checkskill(sd, SU_POWEROFLIFE) > 0)
+ bstatus->cri += 20;
if(sd->flee2_rate < 0)
sd->flee2_rate = 0;
@@ -2872,6 +2904,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->hit += 3*skill_lv;
if((sd->status.weapon == W_MACE || sd->status.weapon == W_2HMACE) && (skill_lv = pc->checkskill(sd,NC_TRAININGAXE)) > 0)
bstatus->hit += 2*skill_lv;
+ if (pc->checkskill(sd, SU_POWEROFLIFE) > 0)
+ bstatus->hit += 20;
// ----- FLEE CALCULATION -----
@@ -2880,6 +2914,8 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
bstatus->flee += skill_lv*(sd->class_&JOBL_2 && (sd->class_&MAPID_BASEMASK) == MAPID_THIEF? 4 : 3);
if((skill_lv=pc->checkskill(sd,MO_DODGE))>0)
bstatus->flee += (skill_lv*3)>>1;
+ if (pc->checkskill(sd, SU_POWEROFLIFE) > 0)
+ bstatus->flee += 20;
// ----- EQUIPMENT-DEF CALCULATION -----
// Apply relative modifiers from equipment
@@ -3175,6 +3211,12 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
clif->updatestatus(sd,SP_CARTINFO);
}
+ // Spirit Marble status activates automatically for a infinite
+ // amount of time when the skill is learned. Felt this was the
+ // best place to put this. [Rytech]
+ if (pc->checkskill(sd, SU_SPRITEMABLE))
+ sc_start(&sd->bl, &sd->bl, SC_SPRITEMABLE, 100, 1, INFINITE_DURATION);
+
calculating = 0;
return 0;
@@ -3584,6 +3626,10 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str
regen->rate.hp += regen->rate.hp * sc->data[SC_BUCHEDENOEL]->val1 / 100;
regen->rate.sp += regen->rate.sp * sc->data[SC_BUCHEDENOEL]->val2 / 100;
}
+ if (sc->data[SC_CATNIPPOWDER]) {
+ regen->rate.hp *= 2;
+ regen->rate.sp *= 2;
+ }
}
#define status_get_homstr(st, hd) ((st)->str + (hd)->homunculus.str_value)
@@ -4581,9 +4627,12 @@ unsigned short status_calc_agi(struct block_list *bl, struct status_change *sc,
if (sc->data[SC_2011RWC])
agi += sc->data[SC_2011RWC]->val1;
- if(sc->data[SC_MARSHOFABYSS])
+ if (sc->data[SC_MARSHOFABYSS])
agi -= agi * sc->data[SC_MARSHOFABYSS]->val2 / 100;
+ if (sc->data[SC_ARCLOUSEDASH])
+ agi += sc->data[SC_ARCLOUSEDASH]->val2;
+
return (unsigned short)cap_value(agi,0,USHRT_MAX);
}
@@ -4916,6 +4965,9 @@ unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc,
if (sc->data[SC_STEAMPACK])
batk += sc->data[SC_STEAMPACK]->val1;
+ if (sc->data[SC_SHRIMP])
+ batk += batk * sc->data[SC_SHRIMP]->val2 / 100;
+
return (unsigned short)cap_value(batk,0,USHRT_MAX);
}
@@ -5008,6 +5060,8 @@ unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc,
watk += watk * sc->data[SC_ANGRIFFS_MODUS]->val2/100;
if( sc->data[SC_FLASHCOMBO] )
watk += sc->data[SC_FLASHCOMBO]->val2;
+ if (sc->data[SC_CATNIPPOWDER])
+ watk -= watk * sc->data[SC_CATNIPPOWDER]->val2 / 100;
return (unsigned short)cap_value(watk,0,USHRT_MAX);
}
@@ -5035,6 +5089,8 @@ unsigned short status_calc_ematk(struct block_list *bl, struct status_change *sc
matk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1; //70 lvl1, 100lvl2
if(sc->data[SC_IZAYOI])
matk += 25 * sc->data[SC_IZAYOI]->val1;
+ if (sc->data[SC_SHRIMP])
+ matk += matk * sc->data[SC_SHRIMP]->val2 / 100;
return (unsigned short)cap_value(matk,0,USHRT_MAX);
#else
return 0;
@@ -5721,6 +5777,8 @@ unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc
if (sc->data[SC_DEC_AGI] || sc->data[SC_QUAGMIRE] || sc->data[SC_DONTFORGETME])
return 0;
}
+ if (sc->data[SC_CATNIPPOWDER])
+ val = max(val, sc->data[SC_CATNIPPOWDER]->val3);
if( sd && sd->bonus.speed_rate + sd->bonus.speed_add_rate > 0 ) // permanent item-based speedup
val = max( val, sd->bonus.speed_rate + sd->bonus.speed_add_rate );
@@ -5771,6 +5829,8 @@ unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc
val = max(val, sc->data[SC_MOVHASTE_HORSE]->val1);
if( sd && sd->bonus.speed_rate + sd->bonus.speed_add_rate < 0 ) // permanent item-based speedup
val = max( val, -(sd->bonus.speed_rate + sd->bonus.speed_add_rate) );
+ if (sc->data[SC_ARCLOUSEDASH])
+ val = max(val, sc->data[SC_ARCLOUSEDASH]->val3);
speed_rate -= val;
}
@@ -7507,6 +7567,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
return 0;
break;
case SC_KYRIE:
+ case SC_TUNAPARTY:
if (bl->type == BL_MOB)
return 0;
break;
@@ -7770,12 +7831,12 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_OBLIVIONCURSE:
case SC_LEECHESEND:
- // Ranger Effects
+ // Ranger Effects
case SC_WUGBITE:
case SC_ELECTRICSHOCKER:
case SC_MAGNETICFIELD:
- // Masquerades
+ // Masquerades
case SC__ENERVATION:
case SC__GROOMY:
case SC__LAZINESS:
@@ -7786,7 +7847,9 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
// Other Effects
case SC_VACUUM_EXTREME:
case SC_NETHERWORLD:
-
+ case SC_FRESHSHRIMP:
+ case SC_SV_ROOTTWIST:
+ case SC_BITESCAR:
return 0;
}
}
@@ -9744,6 +9807,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
if (!mob->db_checkid(val1))
val1 = MOBID_PORING;
break;
+ case SC_SPRITEMABLE:
case SC_ALL_RIDING:
tick = INFINITE_DURATION;
break;
@@ -9754,6 +9818,36 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
**/
val2 = 20+(20*val1);
break;
+ /**
+ * Summoner
+ */
+ case SC_FRESHSHRIMP:
+ val4 = tick / (10000 - ((val1 - 1) * 1000));
+ tick_time = 10000 - ((val1 - 1) * 1000);
+ if (val4 <= 0) // Prevents a negeative value from happening
+ val4 = 0;
+ break;
+ case SC_ARCLOUSEDASH:
+ val2 = 15 + 5 * val1; // AGI
+ val3 = 25; // Move speed increase
+ if (sd && (sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER)
+ val4 = 10; // Ranged ATK increase
+ break;
+ case SC_TUNAPARTY:
+ val2 = (st->max_hp * (val1 * 10) / 100); // %Max HP to absorb
+ break;
+ case SC_BITESCAR:
+ val2 = 2 * val1; // MHP% damage
+ val4 = tick / 1000;
+ tick_time = 1000;
+ break;
+ case SC_SHRIMP:
+ val2 = 10; // BATK%, MATK%
+ break;
+ case SC_CATNIPPOWDER:
+ val2 = 50; // WATK%, MATK%
+ val3 = 25 * val1; // Move speed reduction
+ break;
default:
if (calc_flag == SCB_NONE && status->dbs->SkillChangeTable[type] == 0 && status->dbs->IconChangeTable[type] == 0) {
//Status change with no calc, no icon, and no skill associated...?
@@ -9966,6 +10060,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_NEEDLE_OF_PARALYZE:
case SC_DEATHBOUND:
case SC_NETHERWORLD:
+ case SC_SV_ROOTTWIST:
unit->stop_walking(bl, STOPWALKING_FLAG_FIXPOS);
break;
case SC_ANKLESNARE:
@@ -9980,6 +10075,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_CAMOUFLAGE:
case SC_SIREN:
case SC_ALL_RIDING:
+ case SC_SUHIDE:
unit->stop_attack(bl);
break;
case SC_SILENCE:
@@ -10823,10 +10919,11 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
break;
case SC_NEUTRALBARRIER_MASTER:
case SC_STEALTHFIELD_MASTER:
- if( sce->val2 ) {
+ case SC_SV_ROOTTWIST:
+ if (sce->val2) {
struct skill_unit_group* group = skill->id2group(sce->val2);
sce->val2 = 0;
- if( group ) /* might have been cleared before status ended, e.g. land protector */
+ if (group) /* might have been cleared before status ended, e.g. land protector */
skill->del_unitgroup(group,ALC_MARK);
}
break;
@@ -12018,6 +12115,19 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data)
return 0;
}
break;
+ case SC_FRESHSHRIMP:
+ if (--(sce->val4) >= 0) {
+ status_heal(bl, st->max_hp / 100, 0, 2);
+ sc_timer_next((10000 - ((sce->val1 - 1) * 1000)) + tick, status->change_timer, bl->id, data);
+ }
+ break;
+ case SC_BITESCAR:
+ if (--(sce->val4) >= 0) {
+ status_percent_damage(bl, bl, -(sce->val2), 0, 0);
+ sc_timer_next(1000 + tick, status->change_timer, bl->id, data);
+ return 0;
+ }
+ break;
}
// default for all non-handled control paths is to end the status
@@ -12204,6 +12314,10 @@ void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_m
// Any +MATK you get from skills and cards, including cards in weapon, is added here.
if ( sd && sd->bonus.ematk > 0 && flag != 3 )
*matk_min += sd->bonus.ematk;
+ if (sd && pc->checkskill(sd, SU_POWEROFLAND) > 0) {
+ if (pc->checkskill(sd, SU_SV_STEMSPEAR) == 5 && pc->checkskill(sd, SU_CN_POWDERING) == 5 && pc->checkskill(sd, SU_CN_METEOR) == 5 && pc->checkskill(sd, SU_SV_ROOTTWIST) == 5)
+ *matk_min += *matk_min * 20 / 100;
+ }
if ( flag != 3 )
*matk_min = status->calc_ematk(bl, sc, *matk_min);
@@ -12215,6 +12329,8 @@ void status_get_matk_sub(struct block_list *bl, int flag, unsigned short *matk_m
if ( (st->rhw.matk + st->lhw.matk) > 0 ) {
int wMatk = st->rhw.matk + st->lhw.matk; // Left and right matk stacks
int variance = wMatk * st->rhw.wlv / 10; // Only use right hand weapon level
+ if (sc != NULL && sc->data[SC_CATNIPPOWDER])
+ wMatk -= wMatk * sc->data[SC_CATNIPPOWDER]->val2 / 100;
*matk_min += wMatk - variance;
*matk_max += wMatk + variance;
}
diff --git a/src/map/status.h b/src/map/status.h
index e4a326e88..b16539015 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -828,6 +828,18 @@ typedef enum sc_type {
SC_M_LIFEPOTION,
SC_G_LIFEPOTION, // 640
SC_MYSTICPOWDER,
+
+ // Summoner
+ SC_SUHIDE,
+ SC_SU_STOOP,
+ SC_SPRITEMABLE,
+ SC_CATNIPPOWDER,
+ SC_SV_ROOTTWIST,
+ SC_BITESCAR,
+ SC_ARCLOUSEDASH,
+ SC_TUNAPARTY,
+ SC_SHRIMP, // 650
+ SC_FRESHSHRIMP,
#ifndef SC_MAX
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
#endif
@@ -1747,10 +1759,10 @@ enum si_type {
//SI_HEALTHSTATE_HEAVYPOISON = 890,
//SI_HEALTHSTATE_FEAR = 891,
//SI_CHERRY_BLOSSOM_CAKE = 892,
- //SI_SU_STOOP = 893,
- //SI_CATNIPPOWDER = 894,
+ SI_SU_STOOP = 893,
+ SI_CATNIPPOWDER = 894,
SI_BLOSSOM_FLUTTERING = 895,
- //SI_SV_ROOTTWIST = 896,
+ SI_SV_ROOTTWIST = 896,
//SI_ATTACK_PROPERTY_NOTHING = 897,
//SI_ATTACK_PROPERTY_WATER = 898,
//SI_ATTACK_PROPERTY_GROUND = 899,
@@ -1772,11 +1784,11 @@ enum si_type {
//SI_RESIST_PROPERTY_DARKNESS = 914,
//SI_RESIST_PROPERTY_TELEKINESIS = 915,
//SI_RESIST_PROPERTY_UNDEAD = 916,
- //SI_BITESCAR = 917,
- //SI_ARCLOUSEDASH = 918,
- //SI_TUNAPARTY = 919,
- //SI_SHRIMP = 920,
- //SI_FRESHSHRIMP = 921,
+ SI_BITESCAR = 917,
+ SI_ARCLOUSEDASH = 918,
+ SI_TUNAPARTY = 919,
+ SI_SHRIMP = 920,
+ SI_FRESHSHRIMP = 921,
//SI_PERIOD_RECEIVEITEM = 922,
//SI_PERIOD_PLUSEXP = 923,
//SI_PERIOD_PLUSJOBEXP = 924,
@@ -1788,11 +1800,11 @@ enum si_type {
//SI_HELM_ISIA = 930,
//SI_HELM_ASIR = 931,
//SI_HELM_URJ = 932,
- //SI_SUHIDE = 933,
+ SI_SUHIDE = 933,
//SI_ = 934,
//SI_DORAM_BUF_01 = 935,
//SI_DORAM_BUF_02 = 936,
- //SI_SPRITEMABLE = 937,
+ SI_SPRITEMABLE = 937,
//SI_EP16_2_BUFF_SS = 963,
//SI_EP16_2_BUFF_SC = 964,
//SI_EP16_2_BUFF_AC = 965,
diff --git a/src/map/unit.c b/src/map/unit.c
index 5364a9547..0f3631792 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -1127,6 +1127,7 @@ int unit_can_move(struct block_list *bl)
|| sc->data[SC_VACUUM_EXTREME]
|| (sc->data[SC_FEAR] && sc->data[SC_FEAR]->val2 > 0)
|| sc->data[SC_NETHERWORLD]
+ || sc->data[SC_SUHIDE]
|| (sc->data[SC_SPIDERWEB] && sc->data[SC_SPIDERWEB]->val1)
|| (sc->data[SC_CLOAKING] && sc->data[SC_CLOAKING]->val1 < 3 && !(sc->data[SC_CLOAKING]->val4&1)) //Need wall at level 1-2
|| (
@@ -1543,7 +1544,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
}
break;
case GD_EMERGENCYCALL: //Emergency Call double cast when the user has learned Leap [Daegaladh]
- if( sd && pc->checkskill(sd,TK_HIGHJUMP) )
+ if (sd && (pc->checkskill(sd,TK_HIGHJUMP) || pc->checkskill(sd,SU_LOPE) >= 3))
casttime *= 2;
break;
case RA_WUGDASH:
@@ -2464,6 +2465,8 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i
status_change_end(bl, SC_VACUUM_EXTREME, INVALID_TIMER);
status_change_end(bl, SC_CURSEDCIRCLE_ATKER, INVALID_TIMER); //callme before warp
status_change_end(bl, SC_NETHERWORLD, INVALID_TIMER);
+ status_change_end(bl, SC_SUHIDE, INVALID_TIMER);
+ status_change_end(bl, SC_SV_ROOTTWIST, INVALID_TIMER);
}
if (bl->type&(BL_CHAR|BL_PET)) {
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index 1e4ca6425..2ff104ed6 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -396,8 +396,8 @@ typedef int (*HPMHOOK_pre_chr_rename_char_sql) (struct char_session_data **sd, i
typedef int (*HPMHOOK_post_chr_rename_char_sql) (int retVal___, struct char_session_data *sd, int char_id);
typedef int (*HPMHOOK_pre_chr_check_char_name) (char **name, char **esc_name);
typedef int (*HPMHOOK_post_chr_check_char_name) (int retVal___, char *name, char *esc_name);
-typedef int (*HPMHOOK_pre_chr_make_new_char_sql) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style);
-typedef int (*HPMHOOK_post_chr_make_new_char_sql) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style);
+typedef int (*HPMHOOK_pre_chr_make_new_char_sql) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, short *starting_job);
+typedef int (*HPMHOOK_post_chr_make_new_char_sql) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job);
typedef int (*HPMHOOK_pre_chr_divorce_char_sql) (int *partner_id1, int *partner_id2);
typedef int (*HPMHOOK_post_chr_divorce_char_sql) (int retVal___, int partner_id1, int partner_id2);
typedef int (*HPMHOOK_pre_chr_count_users) (void);
diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
index 89ae03319..19e127a23 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
@@ -744,15 +744,15 @@ int HP_chr_check_char_name(char *name, char *esc_name) {
}
return retVal___;
}
-int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style) {
+int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job) {
int hIndex = 0;
int retVal___ = 0;
if( HPMHooks.count.HP_chr_make_new_char_sql_pre ) {
- int (*preHookFunc) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style);
+ int (*preHookFunc) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, short *starting_job);
*HPMforce_return = false;
for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_make_new_char_sql_pre; hIndex++ ) {
preHookFunc = HPMHooks.list.HP_chr_make_new_char_sql_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, &name_, &str, &agi, &vit, &int_, &dex, &luk, &slot, &hair_color, &hair_style);
+ retVal___ = preHookFunc(&sd, &name_, &str, &agi, &vit, &int_, &dex, &luk, &slot, &hair_color, &hair_style, &starting_job);
}
if( *HPMforce_return ) {
*HPMforce_return = false;
@@ -760,13 +760,13 @@ int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, in
}
}
{
- retVal___ = HPMHooks.source.chr.make_new_char_sql(sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style);
+ retVal___ = HPMHooks.source.chr.make_new_char_sql(sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, starting_job);
}
if( HPMHooks.count.HP_chr_make_new_char_sql_post ) {
- int (*postHookFunc) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style);
+ int (*postHookFunc) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job);
for(hIndex = 0; hIndex < HPMHooks.count.HP_chr_make_new_char_sql_post; hIndex++ ) {
postHookFunc = HPMHooks.list.HP_chr_make_new_char_sql_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style);
+ retVal___ = postHookFunc(retVal___, sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, starting_job);
}
}
return retVal___;