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)
This commit is contained in:
Playtester 2016-05-02 23:26:28 +02:00
parent c6187fa5c1
commit 89f86b2533
5 changed files with 16 additions and 15 deletions

View File

@ -378,7 +378,7 @@
//-- CR_HOLYCROSS //-- CR_HOLYCROSS
253,0,0,0,0,30000,0 253,0,0,0,0,30000,0
//-- CR_GRANDCROSS //-- CR_GRANDCROSS
254,2000,1500,900,900,30000,0 254,3000,1500,800,800,30000,0
//-- CR_DEVOTION //-- CR_DEVOTION
255,3000,0,0,0,30000:45000:60000:75000:90000,0 255,3000,0,0,0,30000:45000:60000:75000:90000,0
//-- CR_PROVIDENCE //-- CR_PROVIDENCE

View File

@ -376,7 +376,7 @@
//-- CR_HOLYCROSS //-- CR_HOLYCROSS
253,0,0,0,0,20000,0,0 253,0,0,0,0,20000,0,0
//-- CR_GRANDCROSS //-- CR_GRANDCROSS
254,1500,1500,900,900,20000,0,1500 254,1500,1500,800,800,20000,0,1500
//-- CR_DEVOTION //-- CR_DEVOTION
255,1500,0,0,0,30000:45000:60000:75000:90000,0,1500 255,1500,0,0,0,30000:45000:60000:75000:90000,0,1500
//-- CR_PROVIDENCE //-- CR_PROVIDENCE
@ -1778,7 +1778,7 @@
//-- SU_CN_POWDERING //-- SU_CN_POWDERING
5027,1500,1000,0,3000:4000:5000:6000:7000,0,0,0 5027,1500,1000,0,3000:4000:5000:6000:7000,0,0,0
//-- SU_CN_METEOR //-- 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 //-- SU_SV_ROOTTWIST
5029,0,1000,0,7000:9000:11000:13000:15000,0,3000,0 5029,0,1000,0,7000:9000:11000:13000:15000,0,3000,0
//-- SU_SV_ROOTTWIST_ATK //-- SU_SV_ROOTTWIST_ATK
@ -1792,7 +1792,7 @@
//-- SU_ARCLOUSEDASH //-- SU_ARCLOUSEDASH
5035,2500,1000,0,60000:70000:80000:90000:100000,0,10000,0 5035,2500,1000,0,60000:70000:80000:90000:100000,0,10000,0
//-- SU_LUNATICCARROTBEAT //-- SU_LUNATICCARROTBEAT
5036,3000,1000,0,0,5000,8000,0 5036,1500,1000,0,0,5000,6000,0
//-- SU_TUNABELLY //-- SU_TUNABELLY
5038,2000,1000,0,0,0,8000:10000:12000:14000:16000,0 5038,2000,1000,0,0,0,8000:10000:12000:14000:16000,0
//-- SU_TUNAPARTY //-- SU_TUNAPARTY

View File

@ -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 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 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 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 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 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 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 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 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 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 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 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 5039,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, SU_TUNAPARTY,Tuna Party

View File

@ -3228,14 +3228,15 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list
/*================================================= [Playtester] /*================================================= [Playtester]
* Applies DAMAGE_DIV_FIX and checks for min damage * Applies DAMAGE_DIV_FIX and checks for min damage
* @param d: Damage struct to apply DAMAGE_DIV_FIX to * @param d: Damage struct to apply DAMAGE_DIV_FIX to
* @param skill_id: ID of the skill that deals damage
* @return Modified damage struct * @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) { if(d.damage) {
DAMAGE_DIV_FIX(d.damage, d.div_); DAMAGE_DIV_FIX(d.damage, d.div_);
//Min damage //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_; d.damage = d.div_;
} else if (d.div_ < 0) { } else if (d.div_ < 0) {
d.div_ *= -1; 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 //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 there is left hand damage, total damage can never exceed 2, even on multiple hits
if(wd.damage > 1 && wd.damage2 > 0) { 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); return battle_calc_attack_plant(wd, src, target, skill_id, skill_lv);
//Apply DAMAGE_DIV_FIX and check for min damage //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); 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; skillratio += 600;
break; break;
case SU_CN_METEOR: case SU_CN_METEOR:
skillratio += -60 + 20 * skill_lv; skillratio += 100 + 100 * skill_lv;
break; 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 } //Hint: Against plants damage will still be 1 at this point
//Apply DAMAGE_DIV_FIX and check for min damage //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 switch(skill_id) { // These skills will do a GVG fix later
#ifdef RENEWAL #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 //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) { switch(skill_id) {
case RA_FIRINGTRAP: case RA_FIRINGTRAP:

View File

@ -1856,14 +1856,14 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
break; break;
case SU_CN_METEOR: case SU_CN_METEOR:
if (skill_area_temp[3] == 1) 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; break;
//case SU_SCAROFTAROU: //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? // sc_start(src, bl, SC_STUN, 10, skill_lv, skill_get_time2(skill_id, skill_lv)); // TODO: What's the chance/time?
// break; // break;
case SU_LUNATICCARROTBEAT: case SU_LUNATICCARROTBEAT:
if (skill_area_temp[3] == 1) 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; break;
} //end switch skill_id } //end switch skill_id