Index: skill.c
===================================================================
--- Base (BASE)
+++ Locally Modified (Based On LOCAL)
@@ -4073,6 +4073,7 @@
struct status_data *sstatus, *tstatus;
struct status_change *tsc;
struct status_change_entry *tsce;
+ struct skill_condition require;
int i;
enum sc_type type;
@@ -4104,6 +4105,8 @@
tstatus = status_get_status_data(bl);
sstatus = status_get_status_data(src);
+ require = skill_get_requirement(sd,skillid,skilllv);
+
//Check for undead skills that convert a no-damage skill into a damage one. [Skotlex]
switch (skillid) {
case HLIF_HEAL: //[orn]
@@ -5547,14 +5550,14 @@
if( sd )
{
x = skilllv%11 - 1;
- i = pc_search_inventory(sd,skill_db[skillid].itemid[x]);
- if(i < 0 || skill_db[skillid].itemid[x] <= 0)
+ i = pc_search_inventory(sd,require.itemid[x]);
+ if(i < 0 || require.itemid[x] <= 0)
{
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
map_freeblock_unlock();
return 1;
}
- if(sd->inventory_data[i] == NULL || sd->status.inventory[i].amount < skill_db[skillid].amount[x])
+ if(sd->inventory_data[i] == NULL || sd->status.inventory[i].amount < require.amount[x])
{
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
map_freeblock_unlock();
@@ -6346,7 +6349,7 @@
map_freeblock_unlock();
return 0;
}
- status_zap(src,0,skill_db[skill_get_index(skillid)].sp[skilllv]); // consume sp only if succeeded [Inkfish]
+ status_zap(src,0,require.sp); // consume sp only if succeeded [Inkfish]
do {
eff = rnd() % 14;
clif_specialeffect(bl, 523 + eff, AREA);
@@ -7989,6 +7992,7 @@
struct status_change_entry *sce;
struct skill_unit_group* sg;
enum sc_type type;
+ struct skill_condition require;
int i;
//if(skilllv <= 0) return 0;
@@ -8005,6 +8009,8 @@
type = status_skill2sc(skillid);
sce = (sc && type != -1)?sc->data[type]:NULL;
+ require = skill_get_requirement(sd,skillid,skilllv);
+
switch (skillid) { //Skill effect.
case WZ_METEOR:
case MO_BODYRELOCATION:
@@ -8258,8 +8264,8 @@
case CR_SLIMPITCHER:
if (sd) {
int i = skilllv%11 - 1;
- int j = pc_search_inventory(sd,skill_db[skillid].itemid[i]);
- if( j < 0 || skill_db[skillid].itemid[i] <= 0 || sd->inventory_data[j] == NULL || sd->status.inventory[j].amount < skill_db[skillid].amount[i] )
+ int j = pc_search_inventory(sd,require.itemid[i]);
+ if( j < 0 || require.itemid[i] <= 0 || sd->inventory_data[j] == NULL || sd->status.inventory[j].amount < require.amount[i] )
{
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
return 1;
@@ -8288,7 +8294,7 @@
} else {
int i = skilllv%11 - 1;
struct item_data *item;
- i = skill_db[skillid].itemid[i];
+ i = require.itemid[i];
item = itemdb_search(i);
potion_flag = 1;
potion_hp = 0;