Просмотр исходного кода

> Follow up to r17140.
- Crush Strike now lasts for 30 seconds.
- Phantom Thrust is now targeted to allies.
- Updated SP requirement for Death Bound.
- Giant Growth now has a .1% chance to break caster's weapon.
- Stone Hard Skin now has a 30% chance to break caster's weapon.
- Stone Hard Skin now has a 30% chance to reduce 25% damage from monsters for 10 seconds.
- Corrected Stone Hard Skin's DEF/MDEF increase formula.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17145 54d463be-8e91-2dee-dedb-b68131a5f0ec

aleos 12 лет назад
Родитель
Сommit
97fb00ae53

+ 1 - 1
db/pre-re/skill_cast_db.txt

@@ -1093,7 +1093,7 @@
 //-- RK_MILLENNIUMSHIELD
 2011,0,1000,0,180000,0,60000
 //-- RK_CRUSHSTRIKE
-2012,0,0,0,180000,0,30000
+2012,0,0,0,30000,0,30000
 //-- RK_REFRESH
 2013,0,0,0,60000,0,120000
 //-- RK_GIANTGROWTH

+ 6 - 6
db/pre-re/skill_db.txt

@@ -678,17 +678,17 @@
 //****
 // RK Rune Knight
 //****
-2001,1,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,	RK_ENCHANTBLADE,Enchant Blade
+2001,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,	RK_ENCHANTBLADE,Enchant Blade
 2002,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,	RK_SONICWAVE,Sonic Wave
 2003,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,	RK_DEATHBOUND,Death Bound
-2004,1,8,1,-1,0,0,10,-5,no,0,0,0,weapon,0,	RK_HUNDREDSPEAR,Hundred Spear
+2004,5,8,1,-1,0,0,10,-5,no,0,0,0,weapon,0,	RK_HUNDREDSPEAR,Hundred Spear
 2005,1,6,2,4,0x2,2,5,1,no,0,0,0,weapon,3,	RK_WINDCUTTER,Wind Cutter
 2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0,	RK_IGNITIONBREAK,Ignition Break
 2007,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,		RK_DRAGONTRAINING,Dragon Training
-2008,9,6,2,3,0xC2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,	RK_DRAGONBREATH,Dragon Breath //CHECK May have to change this back to a weapon type attack.
-2009,0,6,4,0,0x3,3:4:5:6:7,5,1,yes,0,0,0,weapon,0,	RK_DRAGONHOWLING,Dragon Howling
+2008,9,6,2,3,0xC2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,	RK_DRAGONBREATH,Dragon Breath
+2009,0,6,4,0,0x3,3:4:5:6:7,5,1,no,0,0,0,none,0,	RK_DRAGONHOWLING,Dragon Howling
 2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0,		RK_RUNEMASTERY,Rune Mastery
-2011,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,	RK_MILLENNIUMSHIELD,Millenium Shield
+2011,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,	RK_MILLENNIUMSHIELD,Millenium Shield
 2012,1,6,4,-1,0,0x8,1,1,yes,0,0,0,weapon,0,	RK_CRUSHSTRIKE,Crush Strike
 2013,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,	RK_REFRESH,Refresh
 2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,	RK_GIANTGROWTH,Giant Growth
@@ -697,7 +697,7 @@
 2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7,	RK_STORMBLAST,Storm Blast
 2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,	RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
 2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,	RK_ABUNDANCE,Abundance
-2020,5:6:7:8:9,6,1,-1,0,0,5,1,yes,0,0,0,weapon,0,	RK_PHANTOMTHRUST,Phantom Thrust
+2020,5:6:7:8:9,6,16,-1,0,0,5,1,no,0,0,0,weapon,0,	RK_PHANTOMTHRUST,Phantom Thrust
 
 //****
 // WL Warlock

+ 1 - 1
db/pre-re/skill_require_db.txt

@@ -460,7 +460,7 @@
 // RK Rune Knight
 2001,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_ENCHANTBLADE#Enchant Blade#
 2002,0,0,30:35:40:45:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_SONICWAVE#Sonic Wave#
-2003,0,0,55:60:65:70:75:80:85:90:95:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_DEATHBOUND#Death Bound#
+2003,0,0,28:31:34:37:40:43:46:49:52:55,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_DEATHBOUND#Death Bound#
 2004,0,0,60,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_HUNDREDSPEAR#Hundred Spear#
 2005,0,0,20:24:28:32:36,0,0,0,1:2:3:4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_WINDCUTTER#Wind Cutter#
 2006,0,0,35:40:45:50:55,0,0,0,1:2:3:4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_IGNITIONBREAK#Ignition Break#

+ 1 - 1
db/re/skill_cast_db.txt

@@ -1092,7 +1092,7 @@
 //-- RK_MILLENNIUMSHIELD
 2011,0,1000,0,180000,0,60000,-1
 //-- RK_CRUSHSTRIKE
-2012,0,0,0,180000,0,30000,1000
+2012,0,0,0,30000,0,30000,1000
 //-- RK_REFRESH
 2013,0,0,0,60000,0,120000,1000
 //-- RK_GIANTGROWTH

+ 3 - 3
db/re/skill_db.txt

@@ -686,9 +686,9 @@
 2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0,	RK_IGNITIONBREAK,Ignition Break
 2007,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,		RK_DRAGONTRAINING,Dragon Training
 2008,9,6,2,3,0xC2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,	RK_DRAGONBREATH,Dragon Breath
-2009,0,6,4,0,0x3,3:4:5:6:7,5,1,yes,0,0,0,none,0,	RK_DRAGONHOWLING,Dragon Howling
+2009,0,6,4,0,0x3,3:4:5:6:7,5,1,no,0,0,0,none,0,	RK_DRAGONHOWLING,Dragon Howling
 2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0,		RK_RUNEMASTERY,Rune Mastery
-2011,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,	RK_MILLENNIUMSHIELD,Millenium Shield
+2011,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,	RK_MILLENNIUMSHIELD,Millenium Shield
 2012,1,6,4,-1,0,0x8,1,1,yes,0,0,0,weapon,0,	RK_CRUSHSTRIKE,Crush Strike
 2013,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,	RK_REFRESH,Refresh
 2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,	RK_GIANTGROWTH,Giant Growth
@@ -697,7 +697,7 @@
 2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7,	RK_STORMBLAST,Storm Blast
 2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,	RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
 2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,	RK_ABUNDANCE,Abundance
-2020,5:6:7:8:9,6,1,-1,0,0,5,1,yes,0,0,0,weapon,0,	RK_PHANTOMTHRUST,Phantom Thrust
+2020,5:6:7:8:9,6,16,-1,0,0,5,1,no,0,0,0,weapon,0,	RK_PHANTOMTHRUST,Phantom Thrust
 
 //****
 // WL Warlock

+ 1 - 1
db/re/skill_require_db.txt

@@ -468,7 +468,7 @@
 // RK Rune Knight
 2001,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_ENCHANTBLADE#Enchant Blade#
 2002,0,0,30:35:40:45:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_SONICWAVE#Sonic Wave#
-2003,0,0,55:60:65:70:75:80:85:90:95:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_DEATHBOUND#Death Bound#
+2003,0,0,28:31:34:37:40:43:46:49:52:55,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_DEATHBOUND#Death Bound#
 2004,0,0,60,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_HUNDREDSPEAR#Hundred Spear#
 2005,0,0,20:24:28:32:36,0,0,0,1:2:3:4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RK_WINDCUTTER#Wind Cutter#
 2006,0,0,35:40:45:50:55,0,0,0,1:2:3:4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_IGNITIONBREAK#Ignition Break#

+ 15 - 0
src/map/battle.c

@@ -1065,6 +1065,21 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
 			skill_castend_damage_id(bl,src,MH_MAGMA_FLOW,sce->val1,gettick(),0);
 		}
 
+		if( (sce = sc->data[SC_STONEHARDSKIN]) && flag&BF_WEAPON && damage > 0 ) {
+			sce->val2 -= damage;
+			if( src->type == BL_PC ) {
+				TBL_PC *ssd = BL_CAST(BL_PC, src);
+				if (ssd && ssd->status.weapon != W_BOW)
+					skill_break_equip(src, EQP_WEAPON, 3000, BCT_SELF);
+			} else
+				skill_break_equip(src, EQP_WEAPON, 3000, BCT_SELF);
+			// 30% chance to reduce monster's ATK by 25% for 10 seconds.
+			if( src->type == BL_MOB )
+				sc_start(src, SC_STRIPWEAPON, 30, 0, skill_get_time2(RK_STONEHARDSKIN, sce->val1));
+			if( sce->val2 <= 0 )
+				status_change_end(bl, SC_STONEHARDSKIN, INVALID_TIMER);
+		}
+
 /**
  * In renewal steel body reduces all incoming damage by 1/10
  **/

+ 2 - 0
src/map/skill.c

@@ -1428,6 +1428,8 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint
 			rate = battle_config.equip_natural_break_rate;
 			if( sc )
 			{
+				if(sc->data[SC_GIANTGROWTH])
+					rate += 10;
 				if(sc->data[SC_OVERTHRUST])
 					rate += 10;
 				if(sc->data[SC_MAXOVERTHRUST])

+ 7 - 3
src/map/status.c

@@ -555,7 +555,7 @@ void initChangeTables(void) {
 	set_sc( RK_MILLENNIUMSHIELD  , SC_MILLENNIUMSHIELD  , SI_REUSE_MILLENNIUMSHIELD  , SCB_NONE );
 	set_sc( RK_REFRESH           , SC_REFRESH           , SI_REFRESH           , SCB_NONE );
 	set_sc( RK_GIANTGROWTH       , SC_GIANTGROWTH       , SI_GIANTGROWTH       , SCB_STR );
-	set_sc( RK_STONEHARDSKIN     , SC_STONEHARDSKIN     , SI_STONEHARDSKIN     , SCB_NONE );
+	set_sc( RK_STONEHARDSKIN     , SC_STONEHARDSKIN     , SI_STONEHARDSKIN     , SCB_DEF|SCB_MDEF );
 	set_sc( RK_VITALITYACTIVATION, SC_VITALITYACTIVATION, SI_VITALITYACTIVATION, SCB_REGEN );
 	set_sc( RK_FIGHTINGSPIRIT    , SC_FIGHTINGSPIRIT    , SI_FIGHTINGSPIRIT    , SCB_WATK|SCB_ASPD );
 	set_sc( RK_ABUNDANCE         , SC_ABUNDANCE         , SI_ABUNDANCE         , SCB_NONE );
@@ -4906,7 +4906,7 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc,
 		def -= 20;
 	if( sc->data[SC_ANGRIFFS_MODUS] )
 		def -= 30 + 20 * sc->data[SC_ANGRIFFS_MODUS]->val1;
-	if(sc->data[SC_STONEHARDSKIN])// Final DEF increase divided by 10 since were using classic (pre-renewal) mechanics. [Rytech]
+	if(sc->data[SC_STONEHARDSKIN])
 		def += sc->data[SC_STONEHARDSKIN]->val1;
 	if(sc->data[SC_STONE] && sc->opt1 == OPT1_STONE)
 		def >>=1;
@@ -5035,7 +5035,7 @@ static defType status_calc_mdef(struct block_list *bl, struct status_change *sc,
 		mdef += (sc->data[SC_ENDURE]->val4 == 0) ? sc->data[SC_ENDURE]->val1 : 1;
 	if(sc->data[SC_CONCENTRATION])
 		mdef += 1; //Skill info says it adds a fixed 1 Mdef point.
-	if(sc->data[SC_STONEHARDSKIN])// Final MDEF increase divided by 10 since were using classic (pre-renewal) mechanics. [Rytech]
+	if(sc->data[SC_STONEHARDSKIN])
 		mdef += sc->data[SC_STONEHARDSKIN]->val1;
 	if(sc->data[SC_WATER_BARRIER])
 		mdef += sc->data[SC_WATER_BARRIER]->val2;
@@ -8050,6 +8050,10 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 		case SC_DEATHBOUND:
 			val2 = 500 + 100 * val1;
 			break;
+		case SC_STONEHARDSKIN:
+			if( sd )
+				val1 = sd->status.job_level * pc_checkskill(sd, RK_RUNEMASTERY) / 4; //DEF/MDEF Increase
+			break;
 		case SC_FIGHTINGSPIRIT:
 			val_flag |= 1|2;
 			break;