Forráskód Böngészése

Applied renewal skill changes: (bugreport:5302)
- Energy Coat: Reduces both physical and magical attacks and now has fixed cast time of 5 seconds
- Throw Huuma Shuriken (33%): Cannot be interrupted
- Spread Attack: Can be used with a Grenade Launcher and attack power is increased; now 20*skill_lv
- Turn Undead: Success rate formula changed, Magic damage formula changed on failure
- Drums on the Battlefield: Increase ATK and DEF granted
- The Ring of Nibelungen: Removed level 4 weapon requirement
- Apple of Idun (100%): Increase amount of HP recovered; now (100 + 5*skill_lv + 5*VIT/10)

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

xantara 13 éve
szülő
commit
f1f2c7f0db
6 módosított fájl, 39 hozzáadás és 11 törlés
  1. 1 1
      db/re/skill_cast_db.txt
  2. 1 1
      db/re/skill_db.txt
  3. 1 1
      db/re/skill_require_db.txt
  4. 21 4
      src/map/battle.c
  5. 12 3
      src/map/skill.c
  6. 3 1
      src/map/status.c

+ 1 - 1
db/re/skill_cast_db.txt

@@ -266,7 +266,7 @@
 //-- AL_HOLYLIGHT
 156,2000,0,0,0,0,0,0
 //-- MG_ENERGYCOAT
-157,5000,0,0,300000,0,0,0
+157,5000,0,0,300000,0,0,5000
 //==========================================
 
 

+ 1 - 1
db/re/skill_db.txt

@@ -568,7 +568,7 @@
 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0,		NJ_TOBIDOUGU,Shuriken Training
 523,9,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,	NJ_SYURIKEN,Throw Shuriken
 524,9,8,1,-1,0x40,0,5,3,no,0,0,0,weapon,0,	NJ_KUNAI,Throw Kunai
-525,9,8,1,-1,0x6,1,5,-3:-3:-4:-4:-5,yes,0,0,0,weapon,0,	NJ_HUUMA,Throw Huuma Shuriken
+525,9,8,1,-1,0x6,1,5,-3:-3:-4:-4:-5,no,0,0,0,weapon,0,	NJ_HUUMA,Throw Huuma Shuriken
 526,9,6,1,0,0x50,0,10,1,no,0,0,0,misc,0,		NJ_ZENYNAGE,Throw Zeny
 527,0,6,4,-1,0,0,5,1,no,0,0,0,weapon,3,		NJ_TATAMIGAESHI,Improvised Defense
 528,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,	NJ_KASUMIKIRI,Vanishing Slash

+ 1 - 1
db/re/skill_require_db.txt

@@ -408,7 +408,7 @@
 517,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,19,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GATLINGFEVER
 518,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_DUST
 519,0,0,20:25:30:35:40:45:50:55:60:65,0,0,0,20,3,2:2:4:4:6:6:8:8:10:10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_FULLBUSTER
-520,0,0,15:20:25:30:35:40:45:50:55:60,0,0,0,20,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_SPREADATTACK
+520,0,0,15:20:25:30:35:40:45:50:55:60,0,0,0,20:21,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_SPREADATTACK
 521,0,0,4:8:12:16:20:24:28:32:36:40,0,0,0,21,5,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GROUNDDRIFT
 523,0,0,2,0,0,0,99,6,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NJ_SYURIKEN
 524,0,0,30:25:20:15:10,0,0,0,99,7,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//NJ_KUNAI

+ 21 - 4
src/map/battle.c

@@ -628,8 +628,11 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
 			sce->val3&flag && sce->val4&flag)
 			damage -= damage*sc->data[SC_ARMOR]->val2/100;
 
-		if(sc->data[SC_ENERGYCOAT] && flag&BF_WEAPON
-			&& skill_num != WS_CARTTERMINATION)
+#ifdef RENEWAL
+		if(sc->data[SC_ENERGYCOAT] && (flag&BF_WEAPON || flag&BF_MAGIC) && skill_num != WS_CARTTERMINATION)
+#else
+		if(sc->data[SC_ENERGYCOAT] && flag&BF_WEAPON && skill_num != WS_CARTTERMINATION)
+#endif
 		{
 			struct status_data *status = status_get_status_data(bl);
 			int per = 100*status->sp / status->max_sp -1; //100% should be counted as the 80~99% interval
@@ -1983,7 +1986,11 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
 					skillratio += 100*(skill_lv+2);
 					break;
 				case GS_SPREADATTACK:
+				#ifdef RENEWAL
+					skillratio += 20*(skill_lv);
+				#else
 					skillratio += 20*(skill_lv-1);
+				#endif
 					break;
 				case NJ_HUUMA:
 					skillratio += 50 + 150*skill_lv;
@@ -3211,13 +3218,23 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 			case ALL_RESURRECTION:
 			case PR_TURNUNDEAD:
 				//Undead check is on skill_castend_damageid code.
+			#ifdef RENEWAL
+				i = 10*skill_lv + sstatus->luk + sstatus->int_ + status_get_lv(src)
+				  	+ 300 - 300*tstatus->hp/tstatus->max_hp;
+			#else
 				i = 20*skill_lv + sstatus->luk + sstatus->int_ + status_get_lv(src)
 				  	+ 200 - 200*tstatus->hp/tstatus->max_hp;
+			#endif
 				if(i > 700) i = 700;
 				if(rnd()%1000 < i && !(tstatus->mode&MD_BOSS))
 					ad.damage = tstatus->hp;
-				else
-					ad.damage = status_get_lv(src) + sstatus->int_ + skill_lv * 10;
+				else {
+					#ifdef RENEWAL
+						ad.damage = status_get_lv(src) * (sstatus->matk_min + sstatus->matk_max);
+					#else
+						ad.damage = status_get_lv(src) + sstatus->int_ + skill_lv * 10;
+					#endif
+				}
 				break;
 			case PF_SOULBURN:
 				ad.damage = tstatus->sp * 2;

+ 12 - 3
src/map/skill.c

@@ -363,9 +363,13 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, int skill
 	struct status_change* sc;
 
 	switch( skill_id ) {
-		case BA_APPLEIDUN:
-			hp = 30+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery
-			if( sd )
+	case BA_APPLEIDUN:
+	#ifdef RENEWAL
+		hp = 100+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery
+	#else
+		hp = 30+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery
+	#endif
+		if( sd )
 				hp += 5*pc_checkskill(sd,BA_MUSICALLESSON);
 			break;
 		case PR_SANCTUARY:
@@ -10210,8 +10214,13 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli
 		val1*=10; //Because every 10 crit is an actual cri point.
 		break;
 	case BD_DRUMBATTLEFIELD:
+	#ifdef RENEWAL
+		val1 = (skilllv+5)*25;	//Watk increase
+		val2 = skilllv*10;		//Def increase
+	#else
 		val1 = (skilllv+1)*25;	//Watk increase
 		val2 = (skilllv+1)*2;	//Def increase
+	#endif
 		break;
 	case BD_RINGNIBELUNGEN:
 		val1 = (skilllv+2)*25;	//Watk increase

+ 3 - 1
src/map/status.c

@@ -4320,9 +4320,11 @@ static unsigned short status_calc_watk(struct block_list *bl, struct status_chan
 		if (bl->type != BL_PC)
 			watk += sc->data[SC_NIBELUNGEN]->val2;
 		else {
+		#ifndef RENEWAL
 			TBL_PC *sd = (TBL_PC*)bl;
 			int index = sd->equip_index[sd->state.lr_flag?EQI_HAND_L:EQI_HAND_R];
 			if(index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->wlv == 4)
+		#endif
 				watk += sc->data[SC_NIBELUNGEN]->val2;
 		}
 	}
@@ -4582,11 +4584,11 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc,
 		return 100;
 	if(sc->data[SC_KEEPING])
 		return 90;
-
 #ifndef RENEWAL // does not provide 90 DEF in renewal mode
 	if(sc->data[SC_STEELBODY])
 		return 90;
 #endif
+
 	if(sc->data[SC_ARMORCHANGE])
 		def += sc->data[SC_ARMORCHANGE]->val2;
 	if(sc->data[SC_DRUMBATTLE])