Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions db/pre-re/skill_db.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5343,14 +5343,12 @@ Body:
MaxLevel: 5
Type: Weapon
TargetType: Attack
DamageFlags:
IgnoreFlee: true
Flags:
IsNpc: true
Range: -7
Hit: Single
HitCount: 1
Element: Weapon
Element: Ghost
- Id: 160
Name: NPC_RANGEATTACK
Description: Stand off attack
Expand Down
4 changes: 1 addition & 3 deletions db/re/skill_db.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5431,14 +5431,12 @@ Body:
MaxLevel: 5
Type: Weapon
TargetType: Attack
DamageFlags:
IgnoreFlee: true
Flags:
IsNpc: true
Range: -7
Hit: Single
HitCount: 1
Element: Weapon
Element: Ghost
- Id: 160
Name: NPC_RANGEATTACK
Description: Stand off attack
Expand Down
35 changes: 27 additions & 8 deletions src/map/skills/npc/spiritdestruction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,32 @@ SkillSpiritDestruction::SkillSpiritDestruction() : WeaponSkillImpl(NPC_MENTALBRE
}

void SkillSpiritDestruction::applyAdditionalEffects(block_list *src, block_list *target, uint16 skill_lv, t_tick tick, int32 attack_type, enum damage_lv dmg_lv) const {
status_data* sstatus = status_get_status_data(*src);
//SP Damage 12%/16%/25%/50%/100% of MaxSP
int32 rate;
switch (skill_lv) {
case 1:
rate = 12;
break;
case 2:
rate = 16;
break;
case 3:
rate = 25;
break;
case 4:
rate = 50;
break;
case 5:
rate = 100;
break;
default:
// For easy customization
rate = skill_lv;
break;
}
status_percent_damage(src, target, 0, -rate, false);
}

//Based on observations by Tharis, Mental Breaker should do SP damage
//equal to Matk*skLevel.
int32 rate = sstatus->matk_min;
if (rate < sstatus->matk_max)
rate += rnd()%(sstatus->matk_max - sstatus->matk_min);
rate*=skill_lv;
status_zap(target, 0, rate);
void SkillSpiritDestruction::modifyHitRate(int16& hit_rate, const block_list* src, const block_list* target, uint16 skill_lv) const {
hit_rate += hit_rate * 20 / 100;
}
1 change: 1 addition & 0 deletions src/map/skills/npc/spiritdestruction.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ class SkillSpiritDestruction : public WeaponSkillImpl {
SkillSpiritDestruction();

void applyAdditionalEffects(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32 attack_type, enum damage_lv dmg_lv) const override;
void modifyHitRate(int16& hit_rate, const block_list* src, const block_list* target, uint16 skill_lv) const override;
};
Loading