-Upd abracadabra_db thank to Playtester.

--Added new skills and change the rate behaviour.



git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17374 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
glighta 2013-06-19 05:16:24 +00:00
parent cc701c83bb
commit da56e53efd
4 changed files with 222 additions and 321 deletions

View File

@ -1,322 +1,224 @@
// Hocus-Pocus (Abrakadabra) Castable Skills Database // Hocus-Pocus (Abracadabra) Castable Skills Database
// //
// Structure of Database: // Structure of Database:
// SkillID,DummyName,RequiredHocusPocusLevel,Rate // SkillID,DummyName,RatePerLvl
// //
// 01. SkillID Skill ID to be casted by hocus pocus. // 01. SkillID Skill ID to be casted by hocus pocus.
// 02. DummyName Name of the skill (informative, not used by server). // 02. DummyName Name of the skill (informative, not used by server).
// 03. RequiredHocusPocusLevel Minimum skill level of hocus pocus for the current skill to be selected. // 03. RatePerLvl Chance at which the skill is selected (1 = 0.01%, 10000 = 100%).
// 04. Rate Chance at which the skill is selected (1 = 0.01%, 10000 = 100%).
// //
// NOTE: The skill is picked at random from the entire database and then tested for rate. If it // NOTE: The skill is picked at random from the entire database and then tested for rate. If it
// does not succeed at that rate, an another skill is picked and tested. This continues // does not succeed at that rate, another skill is picked and tested. This continues
// until a skill succeeds. // until a skill succeeds. Abracadabra-specific skills have a different chance to occur
// depending on skill level used. All other skills have an equal chance and appear from
// level 1 onward.
//1,Basic Skill,1,0 5,Bash,500
6,Provoke,500
7,Magnum Break,500
8,Endure,500
//2,Sword Mastery,1,0 10,Sight,500
//3,Two-Handed Sword Mastery,1,0 11,Napalm Beat,500
//4,Increase HP Recovery,1,0 12,Safety Wall,500
5,Bash,1,5000 13,Soul Strike,500
6,Provoke,1,5000 14,Cold Bolt,500
7,Magnum Break,1,5000 15,Frost Diver,500
8,Endure,1,5000 16,Stone Curse,500
17,Fire Ball,500
18,Fire Wall,500
19,Fire Bolt,500
20,Lightning Bolt,500
21,Thunder Storm,500
//9,Increase SP Recovery,1,0 24,Ruwach,500
10,Sight,1,5000 25,Pneuma,500
11,Napalm Beat,1,5000 26,Teleport,500
12,Safety Wall,4,5000 27,Warp Portal,500
13,Soul Strike,2,5000 28,Heal,500
14,Cold Bolt,1,5000 29,Increase AGI,500
15,Frost Diver,2,5000 30,Decrease AGI,500
16,Stone Curse,1,5000 31,Aqua Benedicta,500
17,Fire Ball,2,5000 32,Signum Crucis,500
18,Fire Wall,4,5000 33,Angelus,500
19,Fire Bolt,1,5000 34,Blessing,500
20,Lightning Bolt,1,5000 35,Cure,500
21,Thunder Storm,2,5000
//22,Divine Protection,1,0 40,Item Appraisal,500
//23,Demon Bane,1,0 41,Vending,500
24,Ruwach,1,5000 42,Mammonite,500
25,Pneuma,6,5000
26,Teleport,2,5000
27,Warp Portal,4,5000
28,Heal,1,5000
29,Increase AGI,2,5000
30,Decrease AGI,4,5000
31,Aqua Benedicta,1,5000
32,Signum Crucis,1,5000
33,Angelus,1,5000
34,Blessing,2,5000
35,Cure,1,5000
//36,Enlarge Weight Limit,1,0 45,Improve Concentration,500
//37,Discount,1,0 46,Double Strafe,500
//38,Overcharge,1,0 47,Arrow Shower,500
//39,Pushcart,1,0
40,Item Appraisal,1,5000
41,Vending,4,5000
42,Mammonite,1,5000
//43,Owl's Eye,1,0 50,Steal,500
//44,Vulture's Eye,1,0 51,Hiding,500
45,Improve Concentration,4,5000 52,Envenom,500
46,Double Strafe,1,5000 53,Detoxify,500
47,Arrow Shower,2,5000
//48,Double Attack,1,0 54,Resurrection,500
//49,Improve Dodge,1,0
50,Steal,2,5000
51,Hiding,2,5000
52,Envenom,1,5000
53,Detoxify,1,5000
54,Resurrection,1,5000 56,Pierce,500
57,Brandish Spear,500
58,Spear Stab,500
59,Spear Boomerang,500
60,TwoHand Quicken,500
61,Counter Attack,500
62,Bowling Bash,500
//55,Spear Mastery,1,0 66,Impositio Manus,500
56,Pierce,2,4000 67,Suffragium,500
57,Brandish Spear,6,4000 68,Aspersio,500
58,Spear Stab,1,4000 69,B.S Sacramenti,500
59,Spear Boomerang,4,4000 70,Sanctuary,500
60,TwoHand Quicken,1,4000 71,Slow poison,500
61,Counter Attack,2,4000 72,Status Recovery,500
62,Bowling Bash,6,4000 73,Kyrie Eleison,500
//63,Peco Peco Riding,1,0 74,Magnificat,500
//64,Cavalier Mastery,1,0 75,Gloria,500
76,Lex Divina,500
77,Turn Undead,500
78,Lex Aeterna,500
79,Magnus Exorcismus,500
//65,Mace Mastery,1,0 80,Fire Pillar,500
66,Impositio Manus,1,4000 81,Sightrasher,500
67,Suffragium,2,4000 //82,Fire Ivy,500
68,Aspersio,2,4000 83,Meteor Storm,500
69,B.S Sacramenti,4,4000 84,Jupitel Thunder,500
70,Sanctuary,2,4000 85,Lord of Vermilion,500
71,Slow poison,1,4000 86,Water Ball,500
72,Status Recovery,1,4000 87,Ice Wall,500
73,Kyrie Eleison,2,4000 88,Frost Nova,500
74,Magnificat,2,4000 89,Storm Gust,500
75,Gloria,4,4000 90,Earth spike,500
76,Lex Divina,2,4000 91,Heaven's Drive,500
77,Turn Undead,2,4000 92,Quagmire,500
78,Lex Aeterna,4,4000 93,Sense,500
79,Magnus Exorcismus,6,4000
80,Fire Pillar,2,4000 //108,Weapon Repair,500
81,Sightrasher,2,4000 110,Hammer Fall,500
//82,Fire Ivy,1,0 111,Adrenaline Rush,500
83,Meteor Storm,6,4000 112,Weapon Perfection,500
84,Jupitel Thunder,2,4000 113,Power-Thrust,500
85,Lord of Vermilion,6,4000 114,Maximize Power,500
86,Water Ball,4,4000
87,Ice Wall,2,4000
88,Frost Nova,1,4000
89,Storm Gust,6,4000
90,Earth spike,1,4000
91,Heaven's Drive,2,4000
92,Quagmire,4,4000
93,Sense,1,4000
//94,Iron Tempering,1,0 115,Skid Trap,500
//95,Steel Tempering,1,0 116,Land Mine,500
//96,Enchanted Stone Craft,1,0 117,Ankle Snare,500
//97,Oridecon Research,1,0 118,Shockwave Trap,500
//98,Smith Dagger,1,0 119,Sandman,500
//99,Smith Sword,1,0 120,Flasher,500
//100,Smith Two-handed Sword,1,0 121,Freezing Trap,500
//101,Smith Axe,1,0 122,Blast Mine,500
//102,Smith Mace,1,0 123,Claymore Trap,500
//103,Smith Knucklebrace,1,0 124,Remove Trap,500
//104,Smith Spear,1,0 125,Talkie box,500
//105,Hilt Binding,1,0 129,Blitz Beat,500
//106,Ore Discovery,1,0 130,Detect,500
//107,Weaponry Research,1,0 131,Spring Trap,500
108,Weapon Repair,1,0
//109,Skin Tempering,1,0
110,Hammer Fall,1,4000
111,Adrenaline Rush,2,4000
112,Weapon Perfection,4,4000
113,Power-Thrust,4,4000
114,Maximize Power,6,4000
115,Skid Trap,1,4000 135,Cloaking,500
116,Land Mine,2,4000 136,Sonic Blow,500
117,Ankle Snare,2,4000 137,Grimtooth,500
118,Shockwave Trap,4,4000 138,Enchant Poison,500
119,Sandman,4,4000 139,Poison React,500
120,Flasher,4,4000 140,Venom Dust,500
121,Freezing Trap,4,4000 141,Venom Splasher,500
122,Blast Mine,4,4000
123,Claymore Trap,6,4000
124,Remove Trap,1,4000
125,Talkie box,1,4000
//126,Beast Bane,1,0
//127,Falconry Mastery,1,0
//128,Steel Crow,1,0
129,Blitz Beat,4,4000
130,Detect,1,4000
131,Spring Trap,1,4000
//132,Righthand Mastery,1,0
//133,Lefthand Mastery,1,0
//134,Katar Mastery,1,0
135,Cloaking,2,4000
136,Sonic Blow,2,4000
137,Grimtooth,4,4000
138,Enchant Poison,2,4000
139,Poison React,2,4000
140,Venom Dust,4,4000
141,Venom Splasher,4,4000
//---JP2.0 Additional skill---
142,First Aid,1,5000
143,Act Dead,1,5000
//144,Moving HP-Recovery,1,0
//145,Fatal Blow,1,0
146,Auto Berserk,1,0
147,Arrow Crafting,1,5000
148,Arrow Repel,1,5000
149,Throw Sand,1,5000
150,Back sliding,1,5000
151,Find Stone,1,5000
152,Stone Fling,1,5000
153,Cart Revolution,1,5000
154,Change Cart,1,5000
155,Crazy Uproar,1,5000
156,Holy Light,1,5000
157,Energy Coat,1,5000
//---EP4.0 Skill--- //---EP4.0 Skill---
//210,Gank,1,0 211,Mug,500
211,Mug,1,4000 212,Back Stab,500
212,Back Stab,4,4000 214,Sightless Raid,500
//213,Stalk,1,0 215,Divest Weapon,500
214,Sightless Raid,2,4000 216,Divest Shield,500
215,Divest Weapon,4,4000 217,Divest Armor,500
216,Divest shield,4,4000 218,Divest Helm,500
217,Divest armor,4,4000 219,Snatch,500
218,Divest helm,4,4000 220,Scribble,500
219,Snatch,4,4000 //221,Piece,500
220,Scribble,1,4000 222,Remover,500
221,Piece,1,0
222,Remover,4,4000
//223,Slyness,1,0
//224,Haggle,1,0
//225,Intimidate,1,0
//226,Axe Mastery,1,0 249,Guard,500
//227,Potion Research,1,0 250,Smite,500
228,Prepare Potion,1,4000 251,Shield Boomerang,500
229,Bomb,2,4000 252,Shield Reflect,500
230,Acid terror,2,4000 253,Holy Cross,500
231,Aid Potion,2,4000 254,Grand Cross,500
232,Summon Flora,4,4000 255,Sacrifice,500
233,Summon Marine Sphere,4,4000 256,Resistant Souls,500
234,Alchemical Weapon,4,4000 257,Defending Aura,500
235,Synthesized Shield,4,4000 258,Spear Quicken,500
236,Synthetic Armor,4,4000
237,Biochemical Helm,4,4000
//238,Bioethics,1,0 261,Summon Spirit Sphere,500
//239,Biotechnology,1,0 262,Absorb Spirit Sphere,500
//240,Life Creation,1,0 264,Snap,500
//241,Cultivation,1,0 266,Occult Impact,500
//242,Flame control,1,0 267,Throw Spirit Sphere,500
//243,Call Homunculus,1,0 268,Mental Strength,500
//244,Vaporize,1,0 269,Root,500
//245,Drillmaster,1,0 270,Fury,500
//246,Heal Homunculus,1,0 271,Asura Strike,500
//247,Resurrect Homunculus,1,0 //272,Raging Quadruple Blow,500
//273,Raging Thrust,500
//248,Faith,1,0 275,Cast Cancel,500
249,Guard,1,4000 276,Magic Rod,500
250,Smite,2,4000 277,Spell Break,500
251,Shield boomerang,2,4000 279,Hindsight,500
252,Shield Reflect,4,4000 280,Endow Blaze,500
253,Holy cross,2,4000 281,Endow Tsunami,500
254,Grand cross,6,4000 282,Endow Tornado,500
255,Sacrifice,4,4000 283,Endow Quake,500
256,Resistant Souls,2,4000 285,Volcano,500
257,Defending Aura,4,4000 286,Deluge,500
258,Spear Quicken,1,4000 287,Whirlwind,500
288,Magnetic Earth,500
//259,Iron fists,1,0 289,Dispel,500
//260,Spiritual Cadence,1,0
261,Summon Spirit Sphere,1,4000
262,Absorb Spirit Sphere,1,4000
//263,Raging Trifecta Blow,1,0
264,Snap,4,4000
//265,Dodge,1,0
266,Occult Impact,2,4000
267,Throw Spirit Sphere,2,4000
268,Mental Strength,4,4000
269,Root,2,4000
270,Fury,2,4000
271,Asura Strike,6,4000
272,Raging Quadruple Blow,1,0
273,Raging Thrust,1,0
//274,Study,1,0
275,Cast Cancel,1,4000
276,Magic Rod,1,4000
277,Spell Break,2,4000
//278,Free Cast,1,0
279,Hindsight,2,4000
280,Endow Blaze,2,4000
281,Endow Tsunami,2,4000
282,Endow Tornado,2,4000
283,Endow Quake,2,4000
//284,Dragonology,1,0
285,Volcano,4,4000
286,Deluge,4,4000
287,Whirlwind,4,4000
288,Magnetic Earth,4,4000
289,Dispel,6,4000
290,Hocus-pocus,4,4000
// Abracadabra Derivation Skill // Abracadabra Derivation Skill
291,Monocell,4,2500 291,Monocell,250:500:750:1000:1250:1200:1750:2000:2250:2500
292,Class Change,8,2500 292,Class Change,0:0:0:0:10:10:20:20:30:30
293,Summon Monster,6,3500 293,Summon Monster,100:200:300:400:500:600:700:800:900:1000
294,Grampus Morph,4,5000 294,Grampus Morph,0:0:0:0:0:0:0:10:50:100
295,Grim Reaper,8,2000 295,Grim Reaper,50:100:150:200:250:300:350:400:450:500
//296,Gold Digger,6,4000 //296,Gold Digger,50:100:150:200:250:300:350:400:450:500
297,Beastly Hypnosis,6,4000 //297,Beastly Hypnosis,50:100:150:200:250:300:350:400:450:500
298,Questioning,4,5000 298,Questioning,1000:800:600:400:200:0:0:0:0:0
299,Gravity,4,5000 299,Gravity,0:0:0:0:0:0:0:20:50:100
//300,Leveling,10,500 //300,Leveling,0:0:0:0:0:0:0:0:10:50
301,Suicide,4,2000 301,Suicide,0:0:0:0:0:0:0:10:50:100
302,Rejuvination,8,3000 302,Rejuvination,0:0:0:0:0:0:20:50:100:200
303,Coma,4,4000 303,Coma,0:0:0:0:100:200:300:400:500:600
// Dancer / Bard commonness // Dancer / Bard commonness
304,Amp,1,0 //304,Amp,500
305,Encore,1,0 //305,Encore,500
306,Lullaby,1,0 //306,Lullaby,500
307,Mental Sensing,1,0 //307,Mental Sensing,500
308,Down Tempo,1,0 //308,Down Tempo,500
309,Battle Theme,1,0 //309,Battle Theme,500
310,Harmonic Lick,1,0 //310,Harmonic Lick,500
311,Classical Pluck,1,0 //311,Classical Pluck,500
312,Power Chord,1,0 //312,Power Chord,500
313,Acoustic Rhythm,1,0 //313,Acoustic Rhythm,500
//314,Ragnarok,1,0 //314,Ragnarok,500
// Bard skill // Bard skill
//315,Music Lessons,1,0 316,Melody Strike,500
316,Melody Strike,1,4000 //317,Unchained Serenade,500
317,Unchained Serenade,1,0 318,Unbarring Octave,500
318,Unbarring Octave,2,4000 //319,Perfect Tablature,500
319,Perfect Tablature,1,0 //320,Impressive Riff,500
320,Impressive Riff,1,0 //321,Magic Strings,500
321,Magic Strings,1,0 //322,Song of Lutie,500
322,Song of Lutie,1,0
// Dancer skill // Dancer skill
//323,Dance Lessons,1,0 324,Slinging Arrow,500
324,Slinging Arrow,1,4000 //325,Hip Shaker,500
325,Hip Shaker,1,0 326,Dazzler,500
326,Dazzler,2,4000 //327,Focus Ballet,500
327,Focus Ballet,1,0 //328,Slow Grace,500
328,Slow Grace,1,0 //329,Lady Luck,500
329,Lady Luck,1,0 //330,Gypsy's Kiss,500
330,Gypsy's Kiss,1,0

View File

@ -46,6 +46,7 @@ extern char mapindex_cfgfile[80];
#define MAP_MALANGDO "malangdo" #define MAP_MALANGDO "malangdo"
#define MAP_MALAYA "malaya" #define MAP_MALAYA "malaya"
#define MAP_ECLAGE "eclage" #define MAP_ECLAGE "eclage"
#define MAP_ECLAGE_IN "ecl_in01"
// When a map index search fails, return results from what map? // When a map index search fails, return results from what map?
#define MAP_DEFAULT MAP_PRONTERA #define MAP_DEFAULT MAP_PRONTERA

View File

@ -5116,11 +5116,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
do { do {
i = rnd() % MAX_SKILL_ABRA_DB; i = rnd() % MAX_SKILL_ABRA_DB;
abra_skill_id = skill_abra_db[i].skill_id; abra_skill_id = skill_abra_db[i].skill_id;
abra_skill_lv = min(skill_lv, skill_get_max(abra_skill_id));
} while (abra_skill_id == 0 || } while (abra_skill_id == 0 ||
skill_abra_db[i].req_lv > skill_lv || //Required lv for it to appear rnd()%10000 >= skill_abra_db[i].per[abra_skill_lv]
rnd()%10000 >= skill_abra_db[i].per
); );
abra_skill_lv = min(skill_lv, skill_get_max(abra_skill_id));
clif_skill_nodamage (src, bl, skill_id, skill_lv, 1); clif_skill_nodamage (src, bl, skill_id, skill_lv, 1);
if( sd ) if( sd )
@ -8770,26 +8770,26 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case ECLAGE_RECALL: case ECLAGE_RECALL:
if( sd ) if( sd )
{ {
short x, y; // Destiny position. short x=0, y=0; // Destiny position.
unsigned short mapindex; unsigned short mapindex=0;
if ( skill_id == RETURN_TO_ELDICASTES ) switch(skill_id){
{ default:
case RETURN_TO_ELDICASTES:
x = 198; x = 198;
y = 187; y = 187;
mapindex = mapindex_name2id(MAP_DICASTES); mapindex = mapindex_name2id(MAP_DICASTES);
} break;
else if ( skill_id == ALL_GUARDIAN_RECALL ) case ALL_GUARDIAN_RECALL:
{
x = 44; x = 44;
y = 151; y = 151;
mapindex = mapindex_name2id(MAP_MORA); mapindex = mapindex_name2id(MAP_MORA);
} break;
else if ( skill_id == ECLAGE_RECALL ) case ECLAGE_RECALL:
{
x = 47; x = 47;
y = 31; y = 31;
mapindex = mapindex_name2id("ecl_in01"); mapindex = mapindex_name2id(MAP_ECLAGE_IN);
break;
} }
if(!mapindex) if(!mapindex)
@ -8806,33 +8806,31 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case ECL_PEONYMAMY: case ECL_PEONYMAMY:
case ECL_SADAGUI: case ECL_SADAGUI:
case ECL_SEQUOIADUST: case ECL_SEQUOIADUST:
if ( skill_id == ECL_SNOWFLIP ) switch(skill_id){
{ case ECL_SNOWFLIP:
status_change_end(bl, SC_SLEEP, INVALID_TIMER); status_change_end(bl, SC_SLEEP, INVALID_TIMER);
status_change_end(bl, SC_BLEEDING, INVALID_TIMER); status_change_end(bl, SC_BLEEDING, INVALID_TIMER);
status_change_end(bl, SC_BURNING, INVALID_TIMER); status_change_end(bl, SC_BURNING, INVALID_TIMER);
status_change_end(bl, SC_DEEPSLEEP, INVALID_TIMER); status_change_end(bl, SC_DEEPSLEEP, INVALID_TIMER);
} break;
else if ( skill_id == ECL_PEONYMAMY ) case ECL_PEONYMAMY:
{
status_change_end(bl, SC_FREEZE, INVALID_TIMER); status_change_end(bl, SC_FREEZE, INVALID_TIMER);
status_change_end(bl, SC_FREEZING, INVALID_TIMER); status_change_end(bl, SC_FREEZING, INVALID_TIMER);
status_change_end(bl, SC_CRYSTALIZE, INVALID_TIMER); status_change_end(bl, SC_CRYSTALIZE, INVALID_TIMER);
} break;
else if ( skill_id == ECL_SADAGUI ) case ECL_SADAGUI:
{
status_change_end(bl, SC_STUN, INVALID_TIMER); status_change_end(bl, SC_STUN, INVALID_TIMER);
status_change_end(bl, SC_CONFUSION, INVALID_TIMER); status_change_end(bl, SC_CONFUSION, INVALID_TIMER);
status_change_end(bl, SC_HALLUCINATION, INVALID_TIMER); status_change_end(bl, SC_HALLUCINATION, INVALID_TIMER);
status_change_end(bl, SC_FEAR, INVALID_TIMER); status_change_end(bl, SC_FEAR, INVALID_TIMER);
} break;
else if ( skill_id == ECL_SEQUOIADUST ) case ECL_SEQUOIADUST:
{
status_change_end(bl, SC_STONE, INVALID_TIMER); status_change_end(bl, SC_STONE, INVALID_TIMER);
status_change_end(bl, SC_POISON, INVALID_TIMER); status_change_end(bl, SC_POISON, INVALID_TIMER);
status_change_end(bl, SC_CURSE, INVALID_TIMER); status_change_end(bl, SC_CURSE, INVALID_TIMER);
status_change_end(bl, SC_BLIND, INVALID_TIMER); status_change_end(bl, SC_BLIND, INVALID_TIMER);
status_change_end(bl, SC_ORCISH, INVALID_TIMER); status_change_end(bl, SC_ORCISH, INVALID_TIMER);
break;
} }
clif_skill_nodamage(src,bl,skill_id,skill_lv,1); clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
break; break;
@ -12720,7 +12718,7 @@ int skill_isammotype (struct map_session_data *sd, int skill)
(sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) && (sd->status.weapon == W_BOW || (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) &&
skill != HT_PHANTASMIC && skill != HT_PHANTASMIC &&
skill_get_type(skill) == BF_WEAPON && skill_get_type(skill) == BF_WEAPON &&
!(skill_get_nk(skill)&NK_NO_DAMAGE) && !(skill_get_nk(skill)&NK_NO_DAMAGE) &&
!skill_get_spiritball(skill,1) //Assume spirit spheres are used as ammo instead. !skill_get_spiritball(skill,1) //Assume spirit spheres are used as ammo instead.
); );
} }
@ -18225,7 +18223,7 @@ static bool skill_parse_row_reproducedb(char* split[], int column, int current)
static bool skill_parse_row_abradb(char* split[], int columns, int current) static bool skill_parse_row_abradb(char* split[], int columns, int current)
{// skill_id,DummyName,RequiredHocusPocusLevel,Rate {// skill_id,DummyName,RatePerLvl
uint16 skill_id = atoi(split[0]); uint16 skill_id = atoi(split[0]);
if( !skill_get_index(skill_id) || !skill_get_max(skill_id) ) if( !skill_get_index(skill_id) || !skill_get_max(skill_id) )
{ {
@ -18239,8 +18237,8 @@ static bool skill_parse_row_abradb(char* split[], int columns, int current)
} }
skill_abra_db[current].skill_id = skill_id; skill_abra_db[current].skill_id = skill_id;
skill_abra_db[current].req_lv = atoi(split[2]); safestrncpy(skill_abra_db[current].name, trim(split[1]), sizeof(skill_abra_db[current].name)); //store dummyname
skill_abra_db[current].per = atoi(split[3]); skill_split_atoi(split[2],skill_abra_db[current].per);
return true; return true;
} }
@ -18321,7 +18319,7 @@ static void skill_readdb(void)
skill_init_unit_layout(); skill_init_unit_layout();
sv_readdb(db_path, "produce_db.txt" , ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill_parse_row_producedb); sv_readdb(db_path, "produce_db.txt" , ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill_parse_row_producedb);
sv_readdb(db_path, "create_arrow_db.txt" , ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill_parse_row_createarrowdb); sv_readdb(db_path, "create_arrow_db.txt" , ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill_parse_row_createarrowdb);
sv_readdb(db_path, "abra_db.txt" , ',', 4, 4, MAX_SKILL_ABRA_DB, skill_parse_row_abradb); sv_readdb(db_path, "abra_db.txt" , ',', 3, 3, MAX_SKILL_ABRA_DB, skill_parse_row_abradb);
//Warlock //Warlock
sv_readdb(db_path, "spellbook_db.txt" , ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill_parse_row_spellbookdb); sv_readdb(db_path, "spellbook_db.txt" , ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill_parse_row_spellbookdb);
//Guillotine Cross //Guillotine Cross

View File

@ -217,8 +217,8 @@ extern struct s_skill_arrow_db skill_arrow_db[MAX_SKILL_ARROW_DB];
struct s_skill_abra_db { struct s_skill_abra_db {
uint16 skill_id; uint16 skill_id;
int req_lv; char name[NAME_LENGTH];
int per; int per[MAX_SKILL_LEVEL];
}; };
extern struct s_skill_abra_db skill_abra_db[MAX_SKILL_ABRA_DB]; extern struct s_skill_abra_db skill_abra_db[MAX_SKILL_ABRA_DB];