Index: src/map/skill.c
===================================================================
--- src/map/skill.c (revision 17326)
+++ src/map/skill.c (working copy)
@@ -5119,11 +5119,11 @@
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 )
@@ -17582,7 +17582,7 @@
static const int dx[] = {-1,-1,-1,-1, 0, 0, 0, 0, 1, 1, 1, 1,
-5,-5,-5,-5,-4,-4,-4,-4,-3,-3,-3,-3,-2,-2,-2,-2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5,
-1,-1,-1, 0, 0, 0, 1, 1, 1};
- static const int dy[] = { 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3,
+ static const int dy[] = { 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3,
0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3, 0,-1,-2,-3,
-4,-5,-6,-4,-5,-6,-4,-5,-6};
skill_unit_layout[pos].count = 53;
@@ -18166,7 +18166,7 @@
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) )
{
@@ -18180,8 +18180,8 @@
}
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;
}
Index: src/map/skill.h
===================================================================
--- src/map/skill.h (revision 17326)
+++ src/map/skill.h (working copy)
@@ -217,8 +217,8 @@
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];