diff --git a/db/re/sc_config.conf b/db/re/sc_config.conf index 442c7a85c69..5482736ee73 100644 --- a/db/re/sc_config.conf +++ b/db/re/sc_config.conf @@ -268,6 +268,10 @@ SC_IMPOSITIO: { Buff: true NoMagicBlocked: true } + CalcFlags: { + Batk: true + Matk: true + } Icon: "SI_IMPOSITIO" Skill: "PR_IMPOSITIO" } diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf index 76b1ba942b3..8f990b667c2 100644 --- a/db/re/skill_db.conf +++ b/db/re/skill_db.conf @@ -2383,10 +2383,9 @@ skill_db: ( StatusChange: "SC_IMPOSITIO" Description: "Impositio Manus" MaxLevel: 5 - Range: 9 Hit: "BDT_SKILL" SkillType: { - Friend: true + Self: true } SkillInfo: { BlockedByStasis: true @@ -2394,23 +2393,27 @@ skill_db: ( AttackType: "Magic" DamageType: { NoDamage: true + SplashArea: true } + SplashRange: 18 InterruptCast: true - AfterCastActDelay: 3000 - SkillData1: 60000 - FixedCastTime: 0 + AfterCastActDelay: 1_000 + SkillData1: 120_000 // Buff duration (in miliseconds) + FixedCastTime: 500 + CastTime: 1_000 + CoolDown: 30_000 Requirements: { SPCost: { - Lv1: 13 - Lv2: 16 - Lv3: 19 - Lv4: 22 - Lv5: 25 - Lv6: 28 - Lv7: 31 - Lv8: 34 - Lv9: 37 - Lv10: 40 + Lv1: 59 + Lv2: 62 + Lv3: 65 + Lv4: 68 + Lv5: 71 + Lv6: 74 + Lv7: 77 + Lv8: 80 + Lv9: 83 + Lv10: 86 } } }, diff --git a/src/map/battle.c b/src/map/battle.c index 08e7f7631a9..4a43ed40c95 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -881,8 +881,6 @@ static int64 battle_calc_masteryfix(struct block_list *src, struct block_list *t #ifdef RENEWAL if(sc->data[SC_NIBELUNGEN] && weapon) damage += sc->data[SC_NIBELUNGEN]->val2; - if(sc->data[SC_IMPOSITIO]) - damage += sc->data[SC_IMPOSITIO]->val2; if(sc->data[SC_DRUMBATTLE]){ if(tstatus->size == SZ_SMALL) damage += sc->data[SC_DRUMBATTLE]->val2; diff --git a/src/map/skill.c b/src/map/skill.c index b4547ceaaf6..6ff0e82fed1 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7332,7 +7332,9 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * break; } case PR_SLOWPOISON: +#ifndef RENEWAL case PR_IMPOSITIO: +#endif case PR_LEXAETERNA: case PR_BENEDICTIO: case LK_BERSERK: @@ -7904,6 +7906,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * #ifdef RENEWAL case MC_LOUD: + case PR_IMPOSITIO: case PR_SUFFRAGIUM: #endif case AL_ANGELUS: diff --git a/src/map/status.c b/src/map/status.c index 64153e02a68..e4b42fae12a 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -4431,6 +4431,8 @@ static int status_calc_buff_extra_batk(struct block_list *bl, struct status_chan // In-game Tests (and iRO wiki) suggests SC_SHOUT ATK bonus is counted as Extra ATK if (sc->data[SC_SHOUT] != NULL) batk += sc->data[SC_SHOUT]->val2; + if (sc->data[SC_IMPOSITIO] != NULL) + batk += sc->data[SC_IMPOSITIO]->val2; #endif return cap_value(batk, 0, battle_config.batk_max); @@ -4602,6 +4604,9 @@ static int status_calc_matk(struct block_list *bl, struct status_change *sc, int matk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1; //70 lvl1, 100lvl2 if (sc->data[SC_IZAYOI]) matk += 25 * sc->data[SC_IZAYOI]->val1; +#else // RENEWAL + if (sc->data[SC_IMPOSITIO]) + matk += sc->data[SC_IMPOSITIO]->val2; #endif if (sc->data[SC_ZANGETSU]) matk += sc->data[SC_ZANGETSU]->val3; @@ -8240,7 +8245,7 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl #endif break; case SC_IMPOSITIO: - val2 = 5*val1; //watk increase + val2 = 5 * val1; // (Pre-RE) watk increase / (RE) Extra ATK / MATK increase break; case SC_MELTDOWN: val2 = 100*val1; //Chance to break weapon @@ -10570,8 +10575,15 @@ static bool status_end_sc_before_start(struct block_list *bl, struct status_data status_change_end(bl, SC_INVINCIBLE, INVALID_TIMER); break; case SC_MAGICPOWER: + status_change_end(bl, type, INVALID_TIMER); + break; case SC_IMPOSITIO: +#ifndef RENEWAL status_change_end(bl, type, INVALID_TIMER); +#else + if (sc->data[type] == NULL || val1 >= sc->data[type]->val1) + status_change_end(bl, type, INVALID_TIMER); +#endif break; case SC_SUNSTANCE: case SC_LUNARSTANCE: