From 0865e160cb5b3668a8579dd082d546473e173cbb Mon Sep 17 00:00:00 2001 From: Atemo Date: Mon, 11 Mar 2024 17:25:05 +0100 Subject: [PATCH 1/6] Rebalance Night Watch 2022-12-21 (#8161) * The Vigilante at Night - Increases SP consumption from 65 to 88 based on level 5. - Reduces area of effect of gatling gun from 13 x 13 cells to 11 x 11 cells based on level 5. * Only One Bullet - Increases cooldown from 0.3 seconds to 0.35 seconds. - Increases base damage from 7550%/8300%Atk to 16200%/18200%Atk based on level 5. * Spiral Shooting - Increases base damage from 8500%/9700%Atk to 9700%/15400%Atk per hit based on level 5. * Magazine for One - Increases base damage from 1950%/2400%Atk to 2750%/4300%Atk per hit based on level 5. * Wild Fire - Increases base damage from 13250%/12500%Atk to 17500%/16500%Atk based on level 5. * Basic Grenade - Increases base damage from 5750%Atk to 12000%Atk based on level 5. * Hasty Fire in the Hole - Increases base damage from 6750%Atk to 9000%Atk per hit based on level 5. Co-authored-by: Lemongrass3110 --- db/re/skill_db.yml | 12 ++++++------ src/map/battle.cpp | 20 ++++++++++---------- src/map/skill.cpp | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index e3bf3005b5..3f3c2a454e 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -41447,15 +41447,15 @@ Body: Requires: SpCost: - Level: 1 - Amount: 49 + Amount: 72 - Level: 2 - Amount: 53 + Amount: 76 - Level: 3 - Amount: 57 + Amount: 80 - Level: 4 - Amount: 61 + Amount: 84 - Level: 5 - Amount: 65 + Amount: 88 Weapon: Gatling: true Shotgun: true @@ -41476,7 +41476,7 @@ Body: Element: Weapon GiveAp: 1 AfterCastActDelay: 500 - Cooldown: 300 + Cooldown: 350 CastCancel: true FixedCastTime: 1000 Requires: diff --git a/src/map/battle.cpp b/src/map/battle.cpp index e723511f5d..069bfa3cc3 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -5938,13 +5938,13 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case NW_HASTY_FIRE_IN_THE_HOLE: - skillratio += -100 + 1500 + 1050 * skill_lv; + skillratio += -100 + 1500 + 1500 * skill_lv; skillratio += pc_checkskill( sd, NW_GRENADE_MASTERY ) * 20; skillratio += 5 * sstatus->con; RE_LVL_DMOD(100); break; case NW_BASIC_GRENADE: - skillratio += -100 + 1000 + 950 * skill_lv; + skillratio += -100 + 1500 + 2100 * skill_lv; skillratio += pc_checkskill( sd, NW_GRENADE_MASTERY ) * 50; skillratio += 5 * sstatus->con; RE_LVL_DMOD(100); @@ -5956,39 +5956,39 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case NW_WILD_FIRE: - skillratio += -100 + 1000 + 2300 * skill_lv; + skillratio += -100 + 1500 + 3000 * skill_lv; skillratio += 5 * sstatus->con; if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 500 * skill_lv; if (sd && sd->weapontype1 == W_SHOTGUN) - skillratio += 150 * skill_lv; + skillratio += 200 * skill_lv; RE_LVL_DMOD(100); break; case NW_MAGAZINE_FOR_ONE: - skillratio += -100 + 100 + 450 * ( skill_lv - 1 ); + skillratio += -100 + 250 + 500 * skill_lv; skillratio += 5 * sstatus->con; if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 100 * skill_lv; if (sd && sd->weapontype1 == W_REVOLVER) - skillratio += 50 + 100 * (skill_lv-1); + skillratio += 50 + 300 * skill_lv; RE_LVL_DMOD(100); break; case NW_SPIRAL_SHOOTING: - skillratio += -100 + 1000 + 1500 * skill_lv; + skillratio += -100 + 1200 + 1700 * skill_lv; skillratio += 5 * sstatus->con; if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 150 * skill_lv; if (sd && sd->weapontype1 == W_RIFLE) - skillratio += 200 + 200 * skill_lv; + skillratio += 200 + 1100 * skill_lv; RE_LVL_DMOD(100); break; case NW_ONLY_ONE_BULLET: - skillratio += -100 + 800 + 1350 * skill_lv; + skillratio += -100 + 1200 + 3000 * skill_lv; skillratio += 5 * sstatus->con; if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 350 * skill_lv; if (sd && sd->weapontype1 == W_REVOLVER) { - skillratio += 150 * skill_lv; + skillratio += 400 * skill_lv; } RE_LVL_DMOD(100); break; diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 293616f267..34c8eb5220 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -12919,7 +12919,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui skill_area_temp[2] = 0; if (sd && sd->weapontype1 == W_GATLING) { - i += 3; + i = 5; // 11x11 clif_skill_nodamage(src, bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_GATLING, skill_lv, 1); } else clif_skill_nodamage(src, bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_SHOTGUN, skill_lv, 1); From 5efd5b8c95a43cab207f7fa13e17ba58f84e8e8a Mon Sep 17 00:00:00 2001 From: Atemo Date: Mon, 11 Mar 2024 18:58:17 +0100 Subject: [PATCH 2/6] Rebalance Hyper Novice 2024-02-05 (#8156) * Double Bowling Bash - Increases base damage from 3200+(Self Study Tactics skill level x 30)%Atk to 4250+(Self Study Tactics skill level x 30)%Atk per hit based on level 10. * Shield Chain Rush - Increases base damage from 5700+(Self Study Tactics skill level x 30)%Atk to 11350+(Self Study Tactics skill level x 30)%Atk based on level 10. * Spiral Pierce Max - Increases base damage from 8700+(Self Study Tactics skill level x 30)%Atk x size correction to 16000+(Self Study Tactics skill level x 30)%Atk x size correction based on level 10. * Breaking Limit - Increases damage bonus of Double Bowling Bash and Shield Chain Rush from 70% to 120%. * Hell's Drive - Increases base damage from 8500+(Self Study Sorcery skill level x 30)%Atk to 10700+(Self Study Sorcery skill level x 30)%Matk based on level 10. --- src/map/battle.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 069bfa3cc3..d6ef5079a9 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -1846,7 +1846,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam switch (skill_id) { case HN_SHIELD_CHAIN_RUSH: case HN_DOUBLEBOWLINGBASH: - damage += damage * 70 / 100; + damage += damage * 120 / 100; break; case HN_MEGA_SONIC_BLOW: case HN_SPIRAL_PIERCE_MAX: @@ -5901,7 +5901,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * skillratio += -100 + 50000; break; case HN_SPIRAL_PIERCE_MAX: - skillratio += -100 + 700 + 800 * skill_lv; + skillratio += -100 + 1000 + 1500 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv; skillratio += 5 * sstatus->pow; switch (status_get_size(target)){ @@ -5918,7 +5918,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case HN_SHIELD_CHAIN_RUSH: - skillratio += -100 + 700 + 500 * skill_lv; + skillratio += -100 + 850 + 1050 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv; skillratio += 5 * sstatus->pow; RE_LVL_DMOD(100); @@ -5932,7 +5932,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case HN_DOUBLEBOWLINGBASH: - skillratio += -100 + 200 + 300 * skill_lv; + skillratio += -100 + 250 + 400 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv; skillratio += 5 * sstatus->pow; RE_LVL_DMOD(100); @@ -8435,7 +8435,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list RE_LVL_DMOD(100); break; case HN_HELLS_DRIVE: - skillratio += -100 + 1500 + 700 * skill_lv; + skillratio += -100 + 1700 + 900 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_SOCERY) * 4 * skill_lv; skillratio += 5 * sstatus->spl; RE_LVL_DMOD(100); From c9582cc4fd7e72de5bb8bbb388cdb4ee0cc1d08b Mon Sep 17 00:00:00 2001 From: Atemo Date: Mon, 11 Mar 2024 18:58:31 +0100 Subject: [PATCH 3/6] Rebalance Imperial Guard 2024-02-05 (#8155) * Guardian Shield - Reworks AP condition from recovering AP to consuming 35 AP upon using instead. - Reduces skill duration from 60 seconds to 40 seconds. - Increases skill cooldown from 15 seconds to 25 seconds. - Reduces global cooldown from 1 second to 0.3 seconds. - Reduces factor weight of MaxHP in skill formula from 50% to 30%. - Reduces final durability factor of skill level from 250% to 125% based on level 5. * Cross Rain - Increases AP recovery rate from 4 to 6. - Increases base damage from 3200+(Spear & Sword Mastery skill level x 100)%/4500+(Spear & Sword Mastery skill level x 150)%(Holy Shield)Matk to 4500+(Spear & Sword Mastery skill level x 100)%/6500+(Spear & Sword Mastery skill level x 150)%(Holy Shield)Matk per hit based on level 10. * Holy Shield - No longer be removed by Dispell or Clearance. * Shield Shooting - Increases AP recovery rate from 3 to 5. - Increases base damage from 14900+(Shield Mastery skill level x 250)%Atk to 18500+(Shield Mastery skill level x 750)%Atk based on level 5. - Increases factor weight of shield refine rate in skill formula from 25 to 100. - Increases factor weight of POW in skill formula from 7 to 10. * Overslash - Increases AP recovery rate from 3 to 5. - Increases base damage from 1600+(Spear & Sword Mastery skill level x 250)%Atk to 2200+(Spear & Sword Mastery skill level x 500)%Atk per hit based on level 10. * Judgement Cross - Changes damage property from holy to neutral. --- db/re/skill_db.yml | 16 ++++++++-------- db/re/status.yml | 3 +++ src/map/battle.cpp | 16 ++++++++-------- src/map/status.cpp | 2 +- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index 3f3c2a454e..43e4c25d10 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -36847,16 +36847,16 @@ Body: Toggleable: true Hit: Single HitCount: 1 - GiveAp: 15 SplashArea: 10 CastCancel: true CastTime: 2000 - AfterCastActDelay: 500 - Duration1: 60000 - Cooldown: 15000 + AfterCastActDelay: 300 + Duration1: 40000 + Cooldown: 25000 FixedCastTime: 1000 Requires: SpCost: 60 + ApCost: 35 Status: Guard_Stance: true Status: Guardian_S @@ -37018,7 +37018,7 @@ Body: Range: 9 Hit: Multi_Hit HitCount: -10 - Element: Holy + Element: Neutral CastCancel: true CastTime: 2000 Cooldown: 5000 @@ -37058,7 +37058,7 @@ Body: Hit: Multi_Hit HitCount: -7 Element: Weapon - GiveAp: 3 + GiveAp: 5 SplashArea: - Level: 1 Area: 2 @@ -37105,7 +37105,7 @@ Body: HitCount: 3 Element: Weapon SplashArea: 3 - GiveAp: 3 + GiveAp: 5 CastCancel: true CastTime: 1000 AfterCastActDelay: 500 @@ -37145,7 +37145,7 @@ Body: Hit: Single HitCount: 1 Element: Holy - GiveAp: 4 + GiveAp: 6 CastCancel: true CastTime: 1000 AfterCastActDelay: 150 diff --git a/db/re/status.yml b/db/re/status.yml index e3eab6f6cf..8c215b79a6 100644 --- a/db/re/status.yml +++ b/db/re/status.yml @@ -7937,6 +7937,9 @@ Body: Flags: BlEffect: true DisplayPc: true + NoBanishingBuster: true + NoDispell: true + NoClearance: true - Status: Ultimate_S Icon: EFST_ULTIMATE_S DurationLookup: IG_ULTIMATE_SACRIFICE diff --git a/src/map/battle.cpp b/src/map/battle.cpp index d6ef5079a9..85bf1521f5 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -5624,22 +5624,22 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * skillratio += skillratio * i / 100; break; case IG_SHIELD_SHOOTING: - skillratio += -100 + 650 + 2850 * skill_lv; - skillratio += 7 * sstatus->pow; - skillratio += skill_lv * 50 * pc_checkskill( sd, IG_SHIELD_MASTERY ); + skillratio += -100 + 1000 + 3500 * skill_lv; + skillratio += 10 * sstatus->pow; + skillratio += skill_lv * 150 * pc_checkskill( sd, IG_SHIELD_MASTERY ); if (sd) { // Damage affected by the shield's weight and refine. Need official formula. [Rytech] short index = sd->equip_index[EQI_HAND_L]; if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR) { skillratio += (sd->inventory_data[index]->weight * 7 / 6) / 10; - skillratio += sd->inventory.u.items_inventory[index].refine * 25; + skillratio += sd->inventory.u.items_inventory[index].refine * 100; } } RE_LVL_DMOD(100); break; case IG_OVERSLASH: - skillratio += -100 + 160 * skill_lv; - skillratio += pc_checkskill(sd, IG_SPEAR_SWORD_M) * 25 * skill_lv; + skillratio += -100 + 220 * skill_lv; + skillratio += pc_checkskill(sd, IG_SPEAR_SWORD_M) * 50 * skill_lv; skillratio += 7 * sstatus->pow; RE_LVL_DMOD(100); if ((i = pc_checkskill_imperial_guard(sd, 3)) > 0) @@ -8268,9 +8268,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list break; case IG_CROSS_RAIN: if( sc && sc->getSCE( SC_HOLY_S ) ){ - skillratio += -100 + ( 450 + 15 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv; + skillratio += -100 + ( 650 + 15 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv; }else{ - skillratio += -100 + ( 320 + 10 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv; + skillratio += -100 + ( 450 + 10 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv; } skillratio += 7 * sstatus->spl; RE_LVL_DMOD(100); diff --git a/src/map/status.cpp b/src/map/status.cpp index 06621064ee..632c5b272b 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -12616,7 +12616,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty tick = INFINITE_TICK; break; case SC_GUARDIAN_S: - val2 = ( status->max_hp / 2 ) * ( 50 * val1 ) / 100 + 15 * status->sta; // Barrier HP + val2 = ( status->max_hp * 30 / 100 ) * ( 25 * val1 ) / 100 + 15 * status->sta; // Barrier HP break; case SC_REBOUND_S: val2 = 10 * val1;// Reduced Damage From Devotion From 34e90e9aa9387b2ab25098a7589c71799fc55d59 Mon Sep 17 00:00:00 2001 From: Atemo Date: Mon, 11 Mar 2024 18:58:45 +0100 Subject: [PATCH 4/6] Rebalance Elemental Master 2024-02-05 (#8154) * Summon Elemental Ardor - Reduces skill cooldown from 900 seconds to 60 seconds. - Passive mode : Flame Technique, increases damage bonus of Fire Bolt from 100% to 400%. * Summon Elemental Diluvio - Reduces skill cooldown from 900 seconds to 60 seconds. - Passive mode : Cold Force, increases damage bonus of Cold Bolt from 100% to 400%. * Summon Elemental Procella - Reduces skill cooldown from 900 seconds to 60 seconds. - Passive mode : Grace Breeze, increases damage bonus of Lightning Bolt from 100% to 400%. * Summon Elemental Terremotus - Reduces skill cooldown from 900 seconds to 60 seconds. - Passive mode : Earth Care, increases damage bonus of Earth Spike from 80% to 800%. * Summon Elemental Serpens - Reduces skill cooldown from 900 seconds to 60 seconds. - Passive mode : Deep Poisoning, increases damage bonus of Killing Cloud from 50% to 1500%. * Conflagration - Increases global cooldown from 0.5 seconds to 0.7 seconds. - Increases base damage from 3750%/5750%(spirit)Matk to 6200%/7200%(spirit)Matk based on level 5. - Reduces the chance of inflicting [blaze] on each hit from 60% to 3%. * Diamond Storm - Increases base damage from 8150%/14400%(spirit)Matk to 12500%/20800%(spirit)Matk based on level 5. - Reduces the chance of inflicting [quench] on each hit from 90% to 5%. * Lightning Land - Increases global cooldown from 0.5 seconds to 0.7 seconds. - Increases base damage from 3750%/5750%(spirit)Matk to 6200%/7200%(spirit)Matk based on level 5. - Reduces the chance of inflicting [torrent] on each hit from 60% to 3%. * Terra Drive - Increases base damage from 8150%/14400%(spirit)Matk to 12500%/20800%(spirit)Matk based on level 5. - Reduces the chance of inflicting [concretion] on each hit from 90% to 5%. * Venom Swamp - Increases global cooldown from 0.5 seconds to 0.7 seconds. - Increases base damage from 3750%/5750%(spirit)Matk to 6200%/7200%(spirit)Matk based on level 5. - Reduces the chance of inflicting [severe poison] on each hit from 60% to 3%. * Elemental Buster - Reduces AP consumption from 30 to 15. - Reduces skill cooldown from 5 seconds to 2 seconds. - Increases base damage from 22500%/24000%(dragon and formless)Matk to 27050%/28550%(dragon and formless)Matk based on level 10. --- db/re/skill_db.yml | 20 ++++++++++---------- src/map/battle.cpp | 36 ++++++++++++++++++++++-------------- src/map/skill.cpp | 10 +++++----- 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index 43e4c25d10..c02dc3f05a 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -40909,7 +40909,7 @@ Body: GiveAp: 5 CastCancel: true CastTime: 4000 - AfterCastActDelay: 500 + AfterCastActDelay: 700 Duration1: 3000 Duration2: 10000 Cooldown: 2000 @@ -40948,7 +40948,7 @@ Body: GiveAp: 5 CastCancel: true CastTime: 4000 - AfterCastActDelay: 500 + AfterCastActDelay: 700 Duration1: 3000 Duration2: 20000 Cooldown: 2000 @@ -40987,7 +40987,7 @@ Body: GiveAp: 5 CastCancel: true CastTime: 4000 - AfterCastActDelay: 500 + AfterCastActDelay: 700 Duration1: 3000 Duration2: 20000 Cooldown: 2000 @@ -41068,7 +41068,7 @@ Body: CastTime: 3000 AfterCastActDelay: 500 Duration1: 1500000 - Cooldown: 900000 + Cooldown: 60000 FixedCastTime: 2000 Requires: SpCost: 100 @@ -41089,7 +41089,7 @@ Body: CastTime: 3000 AfterCastActDelay: 500 Duration1: 1500000 - Cooldown: 900000 + Cooldown: 60000 FixedCastTime: 2000 Requires: SpCost: 100 @@ -41110,7 +41110,7 @@ Body: CastTime: 3000 AfterCastActDelay: 500 Duration1: 1500000 - Cooldown: 900000 + Cooldown: 60000 FixedCastTime: 2000 Requires: SpCost: 100 @@ -41131,7 +41131,7 @@ Body: CastTime: 3000 AfterCastActDelay: 500 Duration1: 1500000 - Cooldown: 900000 + Cooldown: 60000 FixedCastTime: 2000 Requires: SpCost: 100 @@ -41152,7 +41152,7 @@ Body: CastTime: 3000 AfterCastActDelay: 500 Duration1: 1500000 - Cooldown: 900000 + Cooldown: 60000 FixedCastTime: 2000 Requires: SpCost: 100 @@ -41171,11 +41171,11 @@ Body: CastCancel: true CastTime: 8000 AfterCastActDelay: 500 - Cooldown: 5000 + Cooldown: 2000 FixedCastTime: 1500 Requires: SpCost: 140 - ApCost: 30 + ApCost: 15 - Id: 5381 Name: EM_ELEMENTAL_VEIL Description: Elemental Veil diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 85bf1521f5..e348392c83 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -7701,7 +7701,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list if ((skill_id == MG_FIREBOLT && sc->getSCE(SC_FLAMETECHNIC_OPTION)) || (skill_id == MG_COLDBOLT && sc->getSCE(SC_COLD_FORCE_OPTION)) || (skill_id == MG_LIGHTNINGBOLT && sc->getSCE(SC_GRACE_BREEZE_OPTION))) - skillratio *= 2; + skillratio *= 5; if (sc->getSCE(SC_SPELLFIST) && mflag & BF_SHORT) { skillratio += (sc->getSCE(SC_SPELLFIST)->val3 * 100) + (sc->getSCE(SC_SPELLFIST)->val1 * 50 - 50) - 100; // val3 = used bolt level, val1 = used spellfist level. [Rytech] @@ -7754,7 +7754,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case WZ_EARTHSPIKE: skillratio += 100; if (sc && sc->getSCE(SC_EARTH_CARE_OPTION)) - skillratio += skillratio * 80 / 100; + skillratio += skillratio * 800 / 100; break; #endif case HW_NAPALMVULCAN: @@ -8021,7 +8021,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list skillratio += (sd ? sd->status.job_level : 0); if (sc->getSCE(SC_DEEP_POISONING_OPTION)) - skillratio += skillratio * 50 / 100; + skillratio += skillratio * 1500 / 100; } break; case NPC_CLOUD_KILL: @@ -8336,46 +8336,53 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list } break; case EM_DIAMOND_STORM: - skillratio += -100 + 400 + 1550 * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 500 + 2400 * skill_lv; + skillratio += 5 * sstatus->spl; if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_DILUVIO ) ){ - skillratio += 5000 + 250 * skill_lv + 5 * sstatus->spl; + skillratio += 7300 + 200 * skill_lv; + skillratio += 5 * sstatus->spl; } RE_LVL_DMOD(100); break; case EM_LIGHTNING_LAND: - skillratio += -100 + 500 + 650 * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 700 + 1100 * skill_lv; + skillratio += 5 * sstatus->spl; if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_PROCELLA ) ){ - skillratio += 400 * skill_lv; + skillratio += 200 * skill_lv; } RE_LVL_DMOD(100); break; case EM_VENOM_SWAMP: - skillratio += -100 + 500 + 650 * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 700 + 1100 * skill_lv; + skillratio += 5 * sstatus->spl; if( sc && sc->getSCE( SC_SUMMON_ELEMENTAL_SERPENS ) ){ - skillratio += 400 * skill_lv; + skillratio += 200 * skill_lv; } RE_LVL_DMOD(100); break; case EM_CONFLAGRATION: - skillratio += -100 + 500 + 650 * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 700 + 1100 * skill_lv; + skillratio += 5 * sstatus->spl; if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_ARDOR ) ){ - skillratio += 400 * skill_lv; + skillratio += 200 * skill_lv; } RE_LVL_DMOD(100); break; case EM_TERRA_DRIVE: - skillratio += -100 + 400 + 1550 * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 500 + 2400 * skill_lv; + skillratio += 5 * sstatus->spl; if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_TERREMOTUS ) ){ - skillratio += 5000 + 250 * skill_lv + 5 * sstatus->spl; + skillratio += 7300 + 200 * skill_lv; + skillratio += 5 * sstatus->spl; } RE_LVL_DMOD(100); @@ -8389,7 +8396,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case EM_ELEMENTAL_BUSTER_WIND: case EM_ELEMENTAL_BUSTER_GROUND: case EM_ELEMENTAL_BUSTER_POISON: - skillratio += -100 + 500 + 2200 * skill_lv + 10 * sstatus->spl; + skillratio += -100 + 550 + 2650 * skill_lv; + skillratio += 10 * sstatus->spl; if (tstatus->race == RC_FORMLESS || tstatus->race == RC_DRAGON) skillratio += 150 * skill_lv; RE_LVL_DMOD(100); diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 34c8eb5220..88108a56a9 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -2190,19 +2190,19 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl, uint status_change_end(bl, SC_SOUNDBLEND); break; case EM_DIAMOND_STORM: - sc_start(src, bl, SC_HANDICAPSTATE_FROSTBITE, 40 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); + sc_start(src, bl, SC_HANDICAPSTATE_FROSTBITE, 5, skill_lv, skill_get_time2(skill_id, skill_lv)); break; case EM_LIGHTNING_LAND: - sc_start(src, bl, SC_HANDICAPSTATE_LIGHTNINGSTRIKE, 10 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); + sc_start(src, bl, SC_HANDICAPSTATE_LIGHTNINGSTRIKE, 3, skill_lv, skill_get_time2(skill_id, skill_lv)); break; case EM_VENOM_SWAMP: - sc_start(src, bl, SC_HANDICAPSTATE_DEADLYPOISON, 10 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); + sc_start(src, bl, SC_HANDICAPSTATE_DEADLYPOISON, 3, skill_lv, skill_get_time2(skill_id, skill_lv)); break; case EM_CONFLAGRATION: - sc_start(src, bl, SC_HANDICAPSTATE_CONFLAGRATION, 10 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); + sc_start(src, bl, SC_HANDICAPSTATE_CONFLAGRATION, 3, skill_lv, skill_get_time2(skill_id, skill_lv)); break; case EM_TERRA_DRIVE: - sc_start(src, bl, SC_HANDICAPSTATE_CRYSTALLIZATION, 40 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); + sc_start(src, bl, SC_HANDICAPSTATE_CRYSTALLIZATION, 5, skill_lv, skill_get_time2(skill_id, skill_lv)); break; case MT_RUSH_QUAKE: sc_start( src, bl, SC_RUSH_QUAKE1, 100, skill_lv, skill_get_time( skill_id, skill_lv ) ); From 4a3149649efa8968936148a1f957d5645063bf48 Mon Sep 17 00:00:00 2001 From: Atemo Date: Mon, 11 Mar 2024 18:58:59 +0100 Subject: [PATCH 5/6] Rebalance Abyss Chaser 2024-02-05 (#8153) * Abyss Slayer - Reduces AP consumption from 150 to 120. * Omega Abyss Strike - Reduces fixed casting time from 1.5 seconds to 1 second. - Reduces skill cooldown from 3 seconds to 0.7 seconds. - Reduces AP consumption from 15 to 10. - Changes damage property from neutral to fire. - Increases base damage from 22000%/23500%(angel and demon)Matk to 26500%/28500%(angel and demon)Matk based on level 10. * Abyss Dagger - Increases base damage from 4600%Atk to 7350%Atk based on level 5. * Deft Stab - Increases base damage from 3750%Atk to 6200%Atk based on level 10. - Increases factor weight of POW in skill formula from 5 to 7. * From the Abyss - Reduces skill cooldown from 60 seconds to 30 seconds. - Increases number of hit from 2 hits to 5 hits. - Increases base damage from 2600%Matk to 3400%Matk based on level 5. - No longer be removed by Dispell or Clearance. - Increases the trigger chance of abyss sphere from 15% to 25% based on level 5. * Abyss Square - Increases base damage from 2850+(Magic Sword Mastery skill level x 100)%Matk to 3750+(Magic Sword Mastery skill level x 200)Matk based on level 5. * Chain Reaction Shot - Increases base damage of secondary attack from 12350%Atk to 13550%Atk based on level 5. * Frenzy Shot - Increases AP recovery rate from 1 to 3. - Increases base damage from 6150%Atk to 8250%Atk per hit based on level 10. --- db/re/skill_db.yml | 15 ++++++++------- src/map/battle.cpp | 30 ++++++++++++++++++------------ 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index c02dc3f05a..2be54927c1 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -38857,7 +38857,7 @@ Body: Time: 1500 - Level: 5 Time: 1000 - Cooldown: 60000 + Cooldown: 30000 Requires: SpCost: - Level: 1 @@ -38888,26 +38888,27 @@ Body: FixedCastTime: 1000 Requires: SpCost: 100 - ApCost: 150 + ApCost: 120 Status: Abyss_Slayer - Id: 5319 Name: ABC_ABYSS_STRIKE - Description: Abyss Strike + Description: Omega Abyss Strike MaxLevel: 10 Type: Magic TargetType: Ground Range: 9 Hit: Single HitCount: 1 + Element: Fire CastCancel: true CastTime: 2000 AfterCastActDelay: 500 Duration1: 100 - Cooldown: 3000 + Cooldown: 700 FixedCastTime: 1000 Requires: SpCost: 125 - ApCost: 15 + ApCost: 10 Unit: Id: Dummyskill Range: 4 @@ -39022,7 +39023,7 @@ Body: Hit: Multi_Hit HitCount: 2 Element: Weapon - GiveAp: 1 + GiveAp: 3 CastCancel: true AfterCastActDelay: 500 Cooldown: 350 @@ -41240,7 +41241,7 @@ Body: Splash: true Range: 1 Hit: Multi_Hit - HitCount: 2 + HitCount: 5 SplashArea: 4 Requires: SpCost: 1 diff --git a/src/map/battle.cpp b/src/map/battle.cpp index e348392c83..d49827c622 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -4231,7 +4231,7 @@ static void battle_calc_multi_attack(struct Damage* wd, struct block_list *src,s break; } case ABC_FRENZY_SHOT: - if( rnd()%100 < 5 * skill_lv ){ + if( rnd_chance( 5 * skill_lv, 100 ) ){ wd->div_ = 3; } break; @@ -5734,7 +5734,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case ABC_ABYSS_DAGGER: - skillratio += -100 + 100 + 900 * skill_lv; + skillratio += -100 + 350 + 1400 * skill_lv; skillratio += 5 * sstatus->pow; RE_LVL_DMOD(100); break; @@ -5743,20 +5743,22 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case ABC_CHAIN_REACTION_SHOT: - skillratio += -100 + 850 * skill_lv + 15 * sstatus->con; + skillratio += -100 + 850 * skill_lv; + skillratio += 15 * sstatus->con; RE_LVL_DMOD(100); break; case ABC_CHAIN_REACTION_SHOT_ATK: - skillratio += -100 + 600 + 2350 * skill_lv + 15 * sstatus->con; + skillratio += -100 + 800 + 2550 * skill_lv; + skillratio += 15 * sstatus->con; RE_LVL_DMOD(100); break; case ABC_DEFT_STAB: - skillratio += -100 + 250 + 350 * skill_lv; - skillratio += 5 * sstatus->pow; + skillratio += -100 + 700 + 550 * skill_lv; + skillratio += 7 * sstatus->pow; RE_LVL_DMOD(100); break; case ABC_FRENZY_SHOT: - skillratio += -100 + 150 + 600 * skill_lv; + skillratio += -100 + 250 + 800 * skill_lv; skillratio += 15 * sstatus->con; RE_LVL_DMOD(100); break; @@ -8307,13 +8309,16 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list RE_LVL_DMOD(100); break; case ABC_ABYSS_STRIKE: - skillratio += -100 + 2200 * skill_lv + 10 * sstatus->spl; + skillratio += -100 + 2650 * skill_lv; + skillratio += 10 * sstatus->spl; if (tstatus->race == RC_DEMON || tstatus->race == RC_ANGEL) - skillratio += 150 * skill_lv; + skillratio += 200 * skill_lv; RE_LVL_DMOD(100); break; case ABC_ABYSS_SQUARE: - skillratio += -100 + ( 570 + 20 * pc_checkskill( sd, ABC_MAGIC_SWORD_M ) ) * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 750 * skill_lv; + skillratio += 40 * pc_checkskill( sd, ABC_MAGIC_SWORD_M ) * skill_lv; + skillratio += 5 * sstatus->spl; RE_LVL_DMOD(100); break; case TR_METALIC_FURY: @@ -8388,7 +8393,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list RE_LVL_DMOD(100); break; case ABC_FROM_THE_ABYSS_ATK: - skillratio += -100 + 100 + 500 * skill_lv + 5 * sstatus->spl; + skillratio += -100 + 150 + 650 * skill_lv; + skillratio += 5 * sstatus->spl; RE_LVL_DMOD(100); break; case EM_ELEMENTAL_BUSTER_FIRE: @@ -9912,7 +9918,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t sd->state.autocast = 0; } - if( sc->getSCE(SC_ABYSSFORCEWEAPON) && sd->abyssball > 0 && rnd() % 100 < 15 ){ + if( sc->getSCE(SC_ABYSSFORCEWEAPON) && sd->abyssball > 0 && rnd_chance( 25, 100 ) ){ uint16 skill_id = ABC_FROM_THE_ABYSS_ATK; uint16 skill_lv = sc->getSCE(SC_ABYSSFORCEWEAPON)->val1; From 3e82cf45a6e69fd712faacafd36f6bea7fcce659 Mon Sep 17 00:00:00 2001 From: Atemo Date: Mon, 11 Mar 2024 19:55:23 +0100 Subject: [PATCH 6/6] Rebalance Night Watch 2024-02-05 (#8164) * Hidden Card - No longer be removed by Dispell or Clearance. * The Vigilante at Night - Increases AP recovery rate from 1 to 2. * Only One Bullet - Increases AP recovery rate from 1 to 2. * Spiral Shooting - Increases AP recovery rate from 1 to 2. * Magazine for One - Increases AP recovery rate from 1 to 2. * Wild Fire - Increases AP recovery rate from 1 to 2. --- db/re/skill_db.yml | 10 +++++----- db/re/status.yml | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index 2be54927c1..869e0e56ef 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -41440,7 +41440,7 @@ Body: Area: 3 - Level: 5 Area: 3 - GiveAp: 1 + GiveAp: 2 AfterCastActDelay: 1000 Cooldown: 500 CastCancel: true @@ -41475,7 +41475,7 @@ Body: Hit: Single HitCount: 1 Element: Weapon - GiveAp: 1 + GiveAp: 2 AfterCastActDelay: 500 Cooldown: 350 CastCancel: true @@ -41522,7 +41522,7 @@ Body: Area: 3 - Level: 5 Area: 3 - GiveAp: 1 + GiveAp: 2 AfterCastActDelay: 1000 Cooldown: 500 CastCancel: true @@ -41557,7 +41557,7 @@ Body: Hit: Multi_Hit HitCount: 6 Element: Weapon - GiveAp: 1 + GiveAp: 2 AfterCastActDelay: 1000 Cooldown: 500 CastCancel: true @@ -41603,7 +41603,7 @@ Body: Area: 3 - Level: 5 Area: 3 - GiveAp: 1 + GiveAp: 2 AfterCastActDelay: 1000 Cooldown: 500 CastCancel: true diff --git a/db/re/status.yml b/db/re/status.yml index 8c215b79a6..af2f37ccee 100644 --- a/db/re/status.yml +++ b/db/re/status.yml @@ -8879,3 +8879,7 @@ Body: DurationLookup: NW_HIDDEN_CARD CalcFlags: All: true + Flags: + NoBanishingBuster: true + NoDispell: true + NoClearance: true