diff --git a/db/re/mob_db.yml b/db/re/mob_db.yml index 4ff6123d2d8..6c5944d7b36 100644 --- a/db/re/mob_db.yml +++ b/db/re/mob_db.yml @@ -109053,6 +109053,7 @@ Body: AttackMotion: 960 ClientAttackMotion: 480 DamageMotion: 576 + DamageTaken: 10 Ai: 24 - Id: 20849 AegisName: SUMMON_WOODEN_FAIRY @@ -109076,6 +109077,7 @@ Body: AttackMotion: 1152 ClientAttackMotion: 864 DamageMotion: 576 + DamageTaken: 10 Ai: 24 - Id: 20850 AegisName: SUMMON_CREEPER @@ -109099,6 +109101,7 @@ Body: AttackMotion: 840 ClientAttackMotion: 600 DamageMotion: 576 + DamageTaken: 10 Ai: 24 - Id: 20851 AegisName: SUMMON_HELLTREE @@ -109122,6 +109125,7 @@ Body: AttackMotion: 1080 ClientAttackMotion: 840 DamageMotion: 480 + DamageTaken: 10 Ai: 24 # - Id: 20856 # AegisName: MD_N_ARENA_1 diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index d37eaed14aa..b39c56b75df 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -36687,8 +36687,6 @@ Body: - Level: 5 Amount: 60 State: Shield - Status: - Attack_Stance: true Status: Shield_Power - Id: 5266 Name: IG_OVERSLASH @@ -37618,8 +37616,6 @@ Body: Amount: 55 - Level: 5 Amount: 60 - Weapon: - Dagger: true - Id: 5292 Name: SHC_IMPACT_CRATER Description: Impact Crater @@ -37630,7 +37626,7 @@ Body: Splash: true Critical: true Hit: Multi_Hit - HitCount: 1 + HitCount: 5 Element: Weapon SplashArea: - Level: 1 @@ -37668,10 +37664,6 @@ Body: Amount: 70 - Level: 5 Amount: 78 - Weapon: - Katar: true - Status: - Rollingcutter: true Status: WeaponBlock_On - Id: 5293 Name: SHC_ENCHANTING_SHADOW diff --git a/src/map/battle.cpp b/src/map/battle.cpp index bc9f8091ac6..171b0523a9c 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -3082,8 +3082,13 @@ static bool is_attack_critical(struct Damage* wd, block_list *src, const block_l case GC_CROSSIMPACT: case SHC_SAVAGE_IMPACT: case SHC_ETERNAL_SLASH: - case SHC_IMPACT_CRATER: case SHC_CROSS_SLASH: + cri /= 2; + break; + case SHC_IMPACT_CRATER: + if (sd == nullptr || sd->weapontype1 != W_KATAR) + return false; + cri /= 2; break; case WH_GALESTORM: diff --git a/src/map/skills/thief/impactcrater.cpp b/src/map/skills/thief/impactcrater.cpp index 0504cf75c5d..420bbf7109d 100644 --- a/src/map/skills/thief/impactcrater.cpp +++ b/src/map/skills/thief/impactcrater.cpp @@ -11,13 +11,6 @@ SkillImpactCrater::SkillImpactCrater() : SkillImplRecursiveDamageSplash(SHC_IMPACT_CRATER) { } -void SkillImpactCrater::modifyDamageData(Damage& dmg, const block_list& src, const block_list& target, uint16 skill_lv) const { - const status_change *sc = status_get_sc(&src); - - if (sc != nullptr && sc->hasSCE(SC_ROLLINGCUTTER)) - dmg.div_ = sc->getSCE(SC_ROLLINGCUTTER)->val1; -} - void SkillImpactCrater::calculateSkillRatio(const Damage *wd, const block_list *src, const block_list *target, uint16 skill_lv, int32 &skillratio, int32 mflag) const { const status_data* sstatus = status_get_status_data(*src); diff --git a/src/map/skills/thief/impactcrater.hpp b/src/map/skills/thief/impactcrater.hpp index 9cb8b18cf31..66e95006790 100644 --- a/src/map/skills/thief/impactcrater.hpp +++ b/src/map/skills/thief/impactcrater.hpp @@ -9,7 +9,6 @@ class SkillImpactCrater : public SkillImplRecursiveDamageSplash { public: SkillImpactCrater(); - void modifyDamageData(Damage& dmg, const block_list& src, const block_list& target, uint16 skill_lv) const override; void calculateSkillRatio(const Damage *wd, const block_list *src, const block_list *target, uint16 skill_lv, int32 &skillratio, int32 mflag) const override; void castendNoDamageId(block_list *src, block_list *target, uint16 skill_lv, t_tick tick, int32& flag) const override; }; diff --git a/src/map/skills/thief/shadowstab.cpp b/src/map/skills/thief/shadowstab.cpp index 4a233d4c7dd..3f5bf607572 100644 --- a/src/map/skills/thief/shadowstab.cpp +++ b/src/map/skills/thief/shadowstab.cpp @@ -14,22 +14,13 @@ SkillShadowStab::SkillShadowStab() : WeaponSkillImpl(SHC_SHADOW_STAB) { void SkillShadowStab::calculateSkillRatio(const Damage *wd, const block_list *src, const block_list *target, uint16 skill_lv, int32 &skillratio, int32 mflag) const { const status_data* sstatus = status_get_status_data(*src); - skillratio += -100 + 550 * skill_lv; - skillratio += 5 * sstatus->pow; - - if (wd->miscflag & SKILL_ALTDMG_FLAG) { - skillratio += 100 * skill_lv + 2 * sstatus->pow; - } + skillratio += -100 + 650 * skill_lv; + skillratio += 5 * sstatus->pow; // TODO : check pow ratio RE_LVL_DMOD(100); } void SkillShadowStab::castendDamageId(block_list *src, block_list *target, uint16 skill_lv, t_tick tick, int32& flag) const { - status_change *sc = status_get_sc(src); - - if (sc && sc->getSCE(SC_CLOAKINGEXCEED)) - flag |= SKILL_ALTDMG_FLAG; - status_change_end(src, SC_CLOAKING); status_change_end(src, SC_CLOAKINGEXCEED);