Browse Source

-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

glighta 12 years ago
parent
commit
da56e53efd
4 changed files with 238 additions and 337 deletions
  1. 207 305
      db/abra_db.txt
  2. 1 0
      src/common/mapindex.h
  3. 28 30
      src/map/skill.c
  4. 2 2
      src/map/skill.h

+ 207 - 305
db/abra_db.txt

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

+ 1 - 0
src/common/mapindex.h

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

+ 28 - 30
src/map/skill.c

@@ -5116,11 +5116,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 			do {
 				i = rnd() % MAX_SKILL_ABRA_DB;
 				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 ||
-				skill_abra_db[i].req_lv > skill_lv || //Required lv for it to appear
-				rnd()%10000 >= skill_abra_db[i].per
+				rnd()%10000 >= skill_abra_db[i].per[abra_skill_lv]
 			);
-			abra_skill_lv = min(skill_lv, skill_get_max(abra_skill_id));
+
 			clif_skill_nodamage (src, bl, skill_id, skill_lv, 1);
 
 			if( sd )
@@ -8770,26 +8770,26 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case ECLAGE_RECALL:
 		if( sd )
 		{
-			short x, y; // Destiny position.
-			unsigned short mapindex;
+			short x=0, y=0; // Destiny position.
+			unsigned short mapindex=0;
 
-			if ( skill_id == RETURN_TO_ELDICASTES )
-			{
+			switch(skill_id){
+			default:
+			case RETURN_TO_ELDICASTES:
 				x = 198;
 				y = 187;
 				mapindex  = mapindex_name2id(MAP_DICASTES);
-			}
-			else if ( skill_id == ALL_GUARDIAN_RECALL )
-			{
+				break;
+			case ALL_GUARDIAN_RECALL:
 				x = 44;
 				y = 151;
 				mapindex  = mapindex_name2id(MAP_MORA);
-			}
-			else if ( skill_id == ECLAGE_RECALL )
-			{
+				break;
+			case ECLAGE_RECALL:
 				x = 47;
 				y = 31;
-				mapindex  = mapindex_name2id("ecl_in01");
+				mapindex  = mapindex_name2id(MAP_ECLAGE_IN);
+				break;
 			}
 
 			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_SADAGUI:
 	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_BLEEDING, INVALID_TIMER);
 			status_change_end(bl, SC_BURNING, INVALID_TIMER);
 			status_change_end(bl, SC_DEEPSLEEP, INVALID_TIMER);
-		}
-		else if ( skill_id == ECL_PEONYMAMY )
-		{
+			break;
+		case ECL_PEONYMAMY:
 			status_change_end(bl, SC_FREEZE, INVALID_TIMER);
 			status_change_end(bl, SC_FREEZING, INVALID_TIMER);
 			status_change_end(bl, SC_CRYSTALIZE, INVALID_TIMER);
-		}
-		else if ( skill_id == ECL_SADAGUI )
-		{
+			break;
+		case ECL_SADAGUI:
 			status_change_end(bl, SC_STUN, INVALID_TIMER);
 			status_change_end(bl, SC_CONFUSION, INVALID_TIMER);
 			status_change_end(bl, SC_HALLUCINATION, INVALID_TIMER);
 			status_change_end(bl, SC_FEAR, INVALID_TIMER);
-		}
-		else if ( skill_id == ECL_SEQUOIADUST )
-		{
+			break;
+		case ECL_SEQUOIADUST:
 			status_change_end(bl, SC_STONE, INVALID_TIMER);
 			status_change_end(bl, SC_POISON, INVALID_TIMER);
 			status_change_end(bl, SC_CURSE, INVALID_TIMER);
 			status_change_end(bl, SC_BLIND, INVALID_TIMER);
 			status_change_end(bl, SC_ORCISH, INVALID_TIMER);
+			break;
 		}
 		clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
 		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)) &&
 		skill != HT_PHANTASMIC &&
 		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.
 	);
 }
@@ -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)
-{// skill_id,DummyName,RequiredHocusPocusLevel,Rate
+{// skill_id,DummyName,RatePerLvl
 	uint16 skill_id = atoi(split[0]);
 	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].req_lv = atoi(split[2]);
-	skill_abra_db[current].per = atoi(split[3]);
+	safestrncpy(skill_abra_db[current].name, trim(split[1]), sizeof(skill_abra_db[current].name)); //store dummyname
+	skill_split_atoi(split[2],skill_abra_db[current].per);
 
 	return true;
 }
@@ -18321,7 +18319,7 @@ static void skill_readdb(void)
 	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, "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
 	sv_readdb(db_path, "spellbook_db.txt"      , ',',   3,  3, MAX_SKILL_SPELLBOOK_DB, skill_parse_row_spellbookdb);
 	//Guillotine Cross

+ 2 - 2
src/map/skill.h

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