Bläddra i källkod

Fixed Verkana and Turisus RK Runes, bugreport:5388

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15717 54d463be-8e91-2dee-dedb-b68131a5f0ec
shennetsind 13 år sedan
förälder
incheckning
6eb4323eb5
1 ändrade filer med 25 tillägg och 5 borttagningar
  1. 25 5
      src/map/battle.c

+ 25 - 5
src/map/battle.c

@@ -436,6 +436,24 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
 			return 0;
 		}
 
+		if( (sce = sc->data[SC_MILLENNIUMSHIELD]) && sce->val2 > 0 && damage > 0 ) {
+			clif_skill_nodamage(bl, bl, RK_MILLENNIUMSHIELD, 1, 1);
+			sce->val3 -= damage; // absorb damage
+			d->dmg_lv = ATK_BLOCK;
+			sc_start(bl,SC_STUN,15,0,skill_get_time2(RK_MILLENNIUMSHIELD,sce->val1)); // There is a chance to be stuned when one shield is broken.
+			if( sce->val3 <= 0 ) { // Shield Down
+				sce->val2--;
+				if( sce->val2 > 0 ) {
+					if( sd )
+						clif_millenniumshield(sd,sce->val2);
+					sce->val3 = 1000; // Next Shield
+				} else
+					status_change_end(bl,SC_MILLENNIUMSHIELD,-1); // All shields down
+			}
+			return 0;
+		}
+
+
 		if( (sce=sc->data[SC_PARRYING]) && flag&BF_WEAPON && skill_num != WS_CARTTERMINATION && rnd()%100 < sce->val2 )
 		{ // attack blocked by Parrying
 			clif_skill_nodamage(bl, bl, LK_PARRYING, sce->val1,1);
@@ -4064,12 +4082,14 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 
 	wd = battle_calc_attack(BF_WEAPON, src, target, 0, 0, flag);
 	
-	if(sc && sc->data[SC_EXEEDBREAK])
-	{
-		wd.damage = wd.damage * sc->data[SC_EXEEDBREAK]->val1 / 100;
-		status_change_end(src, SC_EXEEDBREAK, INVALID_TIMER);
+	if(sc) {
+		if (sc->data[SC_EXEEDBREAK]) {
+			wd.damage = wd.damage * sc->data[SC_EXEEDBREAK]->val1 / 100;
+			status_change_end(src, SC_EXEEDBREAK, INVALID_TIMER);
+		}
+		if( sc->data[SC_GIANTGROWTH] && (wd.flag&BF_SHORT) && rand()%100 < sc->data[SC_GIANTGROWTH]->val2 )
+			wd.damage *= 3; // Triple Damage
 	}
-
 	if (sd && sd->state.arrow_atk) //Consume arrow.
 		battle_consume_ammo(sd, 0, 0);