diff --git a/doc/item_bonus.txt b/doc/item_bonus.txt index dd7aa3f016..04e6c6ec57 100644 --- a/doc/item_bonus.txt +++ b/doc/item_bonus.txt @@ -439,10 +439,11 @@ bonus bSplashAddRange,n; Splash attack radius + n NOTE: n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc. bonus2 bAddSkillBlow,sk,n; Knock back the target by n cells when using skill sk bonus bNoKnockback,n; Character is no longer knocked back by enemy skills with such effect (n is meaningless) -bonus bNoGemStone,n; Skills requiring Gemstones do no require them (n is meaningless) +bonus bNoGemStone,n; Skills requiring Gemstones do not require them (n is meaningless) NOTE: Hocus Pocus still requires 1 Yellow Gemstone, Ganbantein requirements not reduced bonus bIntravision,n; Always see Hiding and Cloaking players/mobs (n is meaningless) bonus bPerfectHide,n; Hidden/cloaked character is no longer detected by monsters with 'detector' mode (n is meaningless) bonus bRestartFullRecover,n; When reviving, HP and SP are fully healed (n is meaningless) bonus bClassChange,n; Gives a n/100% chance to change the attacked monster's class with normal attack bonus bAddStealRate,n; Increases success rate of Steal skill by n/100% +bonus bNoMadoFuel,n; Nullify Magic Gear Fuel requirement for skills. (n is meaningless) diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 4c410e3117..13d4dd29fa 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -83,6 +83,7 @@ enum item_itemid ITEMID_EMVERETARCON = 1011, ITEMID_TRAP = 1065, ITEMID_PAINT_BRUSH = 6122, + ITEMID_MAGIC_GEAR_FUEL = 6146, ITEMID_STRANGE_EMBRYO = 6415, ITEMID_STONE = 7049, ITEMID_FIRE_BOTTLE = 7135, diff --git a/src/map/map.h b/src/map/map.h index fbf7bd22af..fd710cc6b0 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -468,7 +468,7 @@ enum _sp { SP_ADD_CLASS_DROP_ITEMGROUP, SP_ADDMAXWEIGHT, SP_ADD_ITEMGROUP_HEAL_RATE, // 2071-2073 SP_HP_VANISH_RACE_RATE, SP_SP_VANISH_RACE_RATE, SP_ABSORB_DMG_MAXHP, SP_SUB_SKILL, SP_SUBDEF_ELE, // 2074-2078 SP_STATE_NORECOVER_RACE, SP_CRITICAL_RANGEATK, SP_MAGIC_ADDRACE2, SP_IGNORE_MDEF_RACE2_RATE, // 2079-2082 - SP_WEAPON_ATK_RATE, SP_WEAPON_MATK_RATE, SP_DROP_ADDRACE, SP_DROP_ADDCLASS, // 2083-2086 + SP_WEAPON_ATK_RATE, SP_WEAPON_MATK_RATE, SP_DROP_ADDRACE, SP_DROP_ADDCLASS, SP_NO_MADO_FUEL, // 2083-2087 }; enum _look { diff --git a/src/map/pc.c b/src/map/pc.c index 1accd5950a..29e9d23a2d 100755 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3044,6 +3044,10 @@ void pc_bonus(struct map_session_data *sd,int type,int val) if (sd->state.lr_flag != 2) sd->bonus.weapon_matk_rate += val; break; + case SP_NO_MADO_FUEL: + if (sd->state.lr_flag != 2) + sd->special_state.no_mado_fuel = 1; + break; default: if (running_npc_stat_calc_event) { ShowWarning("pc_bonus: unknown bonus type %d %d in OnPCStatCalcEvent!\n", type, val); diff --git a/src/map/pc.h b/src/map/pc.h index 09600bed1a..38cfe64f1e 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -262,6 +262,7 @@ struct map_session_data { unsigned int perfect_hiding : 1; // [Valaris] unsigned int no_knockback : 1; unsigned int bonus_coma : 1; + unsigned int no_mado_fuel : 1; // Disable Magic_Gear_Fuel consumption [Secret] } special_state; uint32 login_id1, login_id2; unsigned short class_; //This is the internal job ID used by the map server to simplify comparisons/queries/etc. [Skotlex] diff --git a/src/map/script_constants.h b/src/map/script_constants.h index c1d79ea8a3..8ed65e7a66 100644 --- a/src/map/script_constants.h +++ b/src/map/script_constants.h @@ -662,6 +662,7 @@ script_set_constant("bIgnoreMdefRace2Rate", SP_IGNORE_MDEF_RACE2_RATE, false); script_set_constant("bDropAddRace", SP_DROP_ADDRACE, false); script_set_constant("bDropAddClass", SP_DROP_ADDCLASS, false); + script_set_constant("bNoMadoFuel", SP_NO_MADO_FUEL, false); /* equip positions */ export_constant(EQI_HEAD_TOP); diff --git a/src/map/skill.c b/src/map/skill.c index cd689836a7..728fecf273 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -16017,6 +16017,13 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 } } } + // Check requirement for Magic Gear Fuel + if (req.itemid[i] == ITEMID_MAGIC_GEAR_FUEL) { + if (sd->special_state.no_mado_fuel) + { + req.itemid[i] = req.amount[i] = 0; + } + } } break; }