Преглед изворни кода

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)

Playtester пре 9 година
родитељ
комит
89f86b2533
5 измењених фајлова са 16 додато и 15 уклоњено
  1. 1 1
      db/pre-re/skill_cast_db.txt
  2. 3 3
      db/re/skill_cast_db.txt
  3. 2 2
      db/re/skill_db.txt
  4. 8 7
      src/map/battle.c
  5. 2 2
      src/map/skill.c

+ 1 - 1
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

+ 3 - 3
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

+ 2 - 2
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

+ 8 - 7
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:

+ 2 - 2
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