From 89f86b2533591487f8b10f22f50166d3e854d179 Mon Sep 17 00:00:00 2001 From: Playtester Date: Mon, 2 May 2016 23:26:28 +0200 Subject: [PATCH] Lunatic Carrot Beat, Catnip Meteor, Grand Cross (fixes #1219) - Lunatic Carrot Beat and Catnip Meteor now deal 300% to 700% damage which is calculated once and split between multiple hits rather than calculating damage per hit; despite this, they can still hit plants - Reduced cast time of Lunatic Carrot Beat from 3000ms to 1500ms and cooldown from 8000ms to 6000ms according to latest tests on kRO - Fixed Catnip Meteor still having a fixed cast time - Increased stun chance of Lunatic Carrot Beat from 10% to 20% - Increased curse chance of Catnip Meteor from 10% to 20% - Increased cast time of Grand Cross in pre-re to 3000ms (see #1140) - Fixed Grand Cross sometimes having 4 intervals instead of 3 (see #1140) --- db/pre-re/skill_cast_db.txt | 2 +- db/re/skill_cast_db.txt | 6 +++--- db/re/skill_db.txt | 4 ++-- src/map/battle.c | 15 ++++++++------- src/map/skill.c | 4 ++-- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/db/pre-re/skill_cast_db.txt b/db/pre-re/skill_cast_db.txt index 0a0b2c042c..d0e97c44fd 100644 --- a/db/pre-re/skill_cast_db.txt +++ b/db/pre-re/skill_cast_db.txt @@ -378,7 +378,7 @@ //-- CR_HOLYCROSS 253,0,0,0,0,30000,0 //-- CR_GRANDCROSS -254,2000,1500,900,900,30000,0 +254,3000,1500,800,800,30000,0 //-- CR_DEVOTION 255,3000,0,0,0,30000:45000:60000:75000:90000,0 //-- CR_PROVIDENCE diff --git a/db/re/skill_cast_db.txt b/db/re/skill_cast_db.txt index b839c62985..b17253adfc 100644 --- a/db/re/skill_cast_db.txt +++ b/db/re/skill_cast_db.txt @@ -376,7 +376,7 @@ //-- CR_HOLYCROSS 253,0,0,0,0,20000,0,0 //-- CR_GRANDCROSS -254,1500,1500,900,900,20000,0,1500 +254,1500,1500,800,800,20000,0,1500 //-- CR_DEVOTION 255,1500,0,0,0,30000:45000:60000:75000:90000,0,1500 //-- CR_PROVIDENCE @@ -1778,7 +1778,7 @@ //-- SU_CN_POWDERING 5027,1500,1000,0,3000:4000:5000:6000:7000,0,0,0 //-- SU_CN_METEOR -5028,7500,1000,0,1500:2000:2500:3000:3500,20000,5000,0 +5028,7500,1000,0,1500:2000:2500:3000:3500,20000,5000,-1 //-- SU_SV_ROOTTWIST 5029,0,1000,0,7000:9000:11000:13000:15000,0,3000,0 //-- SU_SV_ROOTTWIST_ATK @@ -1792,7 +1792,7 @@ //-- SU_ARCLOUSEDASH 5035,2500,1000,0,60000:70000:80000:90000:100000,0,10000,0 //-- SU_LUNATICCARROTBEAT -5036,3000,1000,0,0,5000,8000,0 +5036,1500,1000,0,0,5000,6000,0 //-- SU_TUNABELLY 5038,2000,1000,0,0,0,8000:10000:12000:14000:16000,0 //-- SU_TUNAPARTY diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 41457678f9..1eb677f724 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -1339,7 +1339,7 @@ 5025,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0, SU_POWEROFLAND,Power of Land 5026,9,6,1,2:3:1:4:8,0x0,0,5,1,yes,0,0,0,magic,0,0x0, SU_SV_STEMSPEAR,Silvervine Stem Spear 5027,9,6,1,0,0x3,0,5,1,yes,0,0,1,none,0,0x0, SU_CN_POWDERING,Catnip Powdering -5028,9,8,2,0,0,1:1:2:2:3,5,5,yes,0,0,0,magic,0,0x0, SU_CN_METEOR,Catnip Meteor +5028,9,8,2,0,0,1:1:2:2:3,5,-5,yes,0,0,0,magic,0,0x0, SU_CN_METEOR,Catnip Meteor 5029,9,6,1,0,0x1,0,5,1,yes,0,0,1,none,0,0x0, SU_SV_ROOTTWIST,Silvervine Root Twist 5030,0,6,1,5,0x30,0,5,1,no,0,0,1,magic,0,0x0, SU_SV_ROOTTWIST_ATK,Silver Vine Root Twist Attack 5031,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0, SU_POWEROFLIFE,Power of Life @@ -1347,7 +1347,7 @@ 5033,9,8,1,-1,0,0,5,-5,yes,0,0,0,weapon,0,0x0, SU_PICKYPECK,Picky Peck 5034,0,8,1,-1,0,0,5,-5,yes,0,0,0,weapon,0,0x0, SU_PICKYPECK_DOUBLE_ATK,Picky Peck Double Attack 5035,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, SU_ARCLOUSEDASH,Arclouse Dash -5036,9,8,1,-1,0x2,1:1:2:2:3,5,1:2:3:4:5,yes,0,0,0,weapon,0,0x0, SU_LUNATICCARROTBEAT,Lunatic Carrot Beat +5036,9,8,1,-1,0x2,1:1:2:2:3,5,-3,yes,0,0,0,weapon,0,0x0, SU_LUNATICCARROTBEAT,Lunatic Carrot Beat 5037,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0, SU_POWEROFSEA,Power of Sea 5038,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, SU_TUNABELLY,Tuna Belly 5039,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, SU_TUNAPARTY,Tuna Party diff --git a/src/map/battle.c b/src/map/battle.c index 655709733a..fdd114d7b4 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -3228,14 +3228,15 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list /*================================================= [Playtester] * Applies DAMAGE_DIV_FIX and checks for min damage * @param d: Damage struct to apply DAMAGE_DIV_FIX to + * @param skill_id: ID of the skill that deals damage * @return Modified damage struct *------------------------------------------------*/ -static struct Damage battle_apply_div_fix(struct Damage d) +static struct Damage battle_apply_div_fix(struct Damage d, uint16 skill_id) { if(d.damage) { DAMAGE_DIV_FIX(d.damage, d.div_); //Min damage - if((battle_config.skill_min_damage&d.flag) && d.damage < d.div_) + if(d.damage < d.div_ && (skill_id == SU_LUNATICCARROTBEAT || skill_id == SU_CN_METEOR || (battle_config.skill_min_damage&d.flag))) d.damage = d.div_; } else if (d.div_ < 0) { d.div_ *= -1; @@ -4799,7 +4800,7 @@ struct Damage battle_calc_attack_plant(struct Damage wd, struct block_list *src, } //For plants we don't continue with the weapon attack code, so we have to apply DAMAGE_DIV_FIX here - wd = battle_apply_div_fix(wd); + wd = battle_apply_div_fix(wd, skill_id); //If there is left hand damage, total damage can never exceed 2, even on multiple hits if(wd.damage > 1 && wd.damage2 > 0) { @@ -5490,7 +5491,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl return battle_calc_attack_plant(wd, src, target, skill_id, skill_lv); //Apply DAMAGE_DIV_FIX and check for min damage - wd = battle_apply_div_fix(wd); + wd = battle_apply_div_fix(wd, skill_id); wd = battle_calc_attack_left_right_hands(wd, src, target, skill_id, skill_lv); @@ -6082,7 +6083,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list skillratio += 600; break; case SU_CN_METEOR: - skillratio += -60 + 20 * skill_lv; + skillratio += 100 + 100 * skill_lv; break; } @@ -6224,7 +6225,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list } //Hint: Against plants damage will still be 1 at this point //Apply DAMAGE_DIV_FIX and check for min damage - ad = battle_apply_div_fix(ad); + ad = battle_apply_div_fix(ad, skill_id); switch(skill_id) { // These skills will do a GVG fix later #ifdef RENEWAL @@ -6614,7 +6615,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } //Apply DAMAGE_DIV_FIX and check for min damage - md = battle_apply_div_fix(md); + md = battle_apply_div_fix(md, skill_id); switch(skill_id) { case RA_FIRINGTRAP: diff --git a/src/map/skill.c b/src/map/skill.c index 470ef35b6b..ad79368c31 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1856,14 +1856,14 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 break; case SU_CN_METEOR: if (skill_area_temp[3] == 1) - sc_start(src, bl, SC_CURSE, 10, skill_lv, skill_get_time2(skill_id, skill_lv)); // TODO: What's the chance/time? + sc_start(src, bl, SC_CURSE, 20, skill_lv, skill_get_time2(skill_id, skill_lv)); break; //case SU_SCAROFTAROU: // sc_start(src, bl, SC_STUN, 10, skill_lv, skill_get_time2(skill_id, skill_lv)); // TODO: What's the chance/time? // break; case SU_LUNATICCARROTBEAT: if (skill_area_temp[3] == 1) - sc_start(src, bl, SC_STUN, 10, skill_lv, skill_get_time2(skill_id, skill_lv)); // TODO: What's the chance/time? + sc_start(src, bl, SC_STUN, 20, skill_lv, skill_get_time2(skill_id, skill_lv)); break; } //end switch skill_id