Applied renewal skill changes: (bugreport:5302)
- Arrow Shower's attack power (50+10*SkillLvl) - Wind Blade's MATK per hit (from 100% to 150%) - Storm Gust's chance of freezing (65-5*SkillLvl) - Land Mine, Blast Mine, Claymore Trap's damage formula - Spear Quicken's ASPD (fixed 7), CRIT (3*SkillLvl) and FLEE (2*SkillLvl) - Holy Cross's double damage with 2-handed spear - Axe Mastery's damage increase also applies to Sword class weapons - Spiral Pierce's weapon requirement (now allows swords) git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15626 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
7ed49a2dad
commit
ef2e407b17
@ -299,7 +299,7 @@
|
|||||||
394,0,0,12:14:16:18:20:22:24:26:28:30,0,0,0,13:14,1,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CG_ARROWVULCAN#アロ?バルカン#
|
394,0,0,12:14:16:18:20:22:24:26:28:30,0,0,0,13:14,1,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CG_ARROWVULCAN#アロ?バルカン#
|
||||||
395,0,0,30:40:50:60:70,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CG_MOONLIT#月明りの泉に落ちる花びら#
|
395,0,0,30:40:50:60:70,0,0,0,13:14,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CG_MOONLIT#月明りの泉に落ちる花びら#
|
||||||
396,0,0,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 //CG_MARIONETTE#マリオネットコントロ?ル#
|
396,0,0,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 //CG_MARIONETTE#マリオネットコントロ?ル#
|
||||||
397,0,0,18:21:24:27:30,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 //LK_SPIRALPIERCE#スパイラルピア?ス#
|
397,0,0,18:21:24:27:30,0,0,0,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 //LK_SPIRALPIERCE#スパイラルピア?ス#
|
||||||
398,0,0,23,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 //LK_HEADCRUSH#ヘッドクラッシュ#
|
398,0,0,23,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 //LK_HEADCRUSH#ヘッドクラッシュ#
|
||||||
399,0,0,12:12:14:14:16:16:18:18:20:20,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 //LK_JOINTBEAT#ジョイントビ?ト#
|
399,0,0,12:12:14:14:16:16:18:18:20:20,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 //LK_JOINTBEAT#ジョイントビ?ト#
|
||||||
400,0,0,10:25:40:55:70,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 //HW_NAPALMVULCAN#ナパ?ムバルカン#
|
400,0,0,10:25:40:55:70,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 //HW_NAPALMVULCAN#ナパ?ムバルカン#
|
||||||
|
@ -892,12 +892,20 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int
|
|||||||
weapon = sd->weapontype2;
|
weapon = sd->weapontype2;
|
||||||
switch(weapon)
|
switch(weapon)
|
||||||
{
|
{
|
||||||
case W_DAGGER:
|
|
||||||
case W_1HSWORD:
|
case W_1HSWORD:
|
||||||
|
#if REMODE
|
||||||
|
if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0)
|
||||||
|
damage += (skill * 3);
|
||||||
|
#endif
|
||||||
|
case W_DAGGER:
|
||||||
if((skill = pc_checkskill(sd,SM_SWORD)) > 0)
|
if((skill = pc_checkskill(sd,SM_SWORD)) > 0)
|
||||||
damage += (skill * 4);
|
damage += (skill * 4);
|
||||||
break;
|
break;
|
||||||
case W_2HSWORD:
|
case W_2HSWORD:
|
||||||
|
#if REMODE
|
||||||
|
if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0)
|
||||||
|
damage += (skill * 3);
|
||||||
|
#endif
|
||||||
if((skill = pc_checkskill(sd,SM_TWOHAND)) > 0)
|
if((skill = pc_checkskill(sd,SM_TWOHAND)) > 0)
|
||||||
damage += (skill * 4);
|
damage += (skill * 4);
|
||||||
break;
|
break;
|
||||||
@ -1617,7 +1625,11 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
|||||||
break;
|
break;
|
||||||
case AC_SHOWER:
|
case AC_SHOWER:
|
||||||
case MA_SHOWER:
|
case MA_SHOWER:
|
||||||
skillratio += 5*skill_lv-25;
|
#if REMODE
|
||||||
|
skillratio += 50+10*skill_lv;
|
||||||
|
#else
|
||||||
|
skillratio += -25+5*skill_lv;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case AC_CHARGEARROW:
|
case AC_CHARGEARROW:
|
||||||
case MA_CHARGEARROW:
|
case MA_CHARGEARROW:
|
||||||
@ -1718,8 +1730,15 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
|||||||
break;
|
break;
|
||||||
case NPC_DARKCROSS:
|
case NPC_DARKCROSS:
|
||||||
case CR_HOLYCROSS:
|
case CR_HOLYCROSS:
|
||||||
skillratio += 35*skill_lv;
|
{
|
||||||
|
int ratio = 35*skill_lv;
|
||||||
|
#if REMODE
|
||||||
|
if(sd && sd->status.weapon == W_2HSPEAR)
|
||||||
|
ratio *= 2;
|
||||||
|
#endif
|
||||||
|
skillratio += ratio;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case AM_DEMONSTRATION:
|
case AM_DEMONSTRATION:
|
||||||
skillratio += 20*skill_lv;
|
skillratio += 20*skill_lv;
|
||||||
break;
|
break;
|
||||||
@ -3063,6 +3082,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|||||||
case NJ_RAIGEKISAI:
|
case NJ_RAIGEKISAI:
|
||||||
skillratio += 60 + 40*skill_lv;
|
skillratio += 60 + 40*skill_lv;
|
||||||
break;
|
break;
|
||||||
|
#if REMODE
|
||||||
|
case NJ_HUUJIN:
|
||||||
|
skillratio += 50;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case NJ_KAMAITACHI:
|
case NJ_KAMAITACHI:
|
||||||
case NPC_ENERGYDRAIN:
|
case NPC_ENERGYDRAIN:
|
||||||
skillratio += 100*skill_lv;
|
skillratio += 100*skill_lv;
|
||||||
@ -3472,6 +3496,18 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
|
|||||||
|
|
||||||
switch( skill_num )
|
switch( skill_num )
|
||||||
{
|
{
|
||||||
|
#if REMODE
|
||||||
|
case HT_LANDMINE:
|
||||||
|
case MA_LANDMINE:
|
||||||
|
case HT_BLASTMINE:
|
||||||
|
case HT_CLAYMORETRAP:
|
||||||
|
{
|
||||||
|
int level = sd?sd->status.base_level:status_get_lv(src);
|
||||||
|
md.damage = skill_lv*sstatus->dex*(3+level/100)*(1+sstatus->int_/35);
|
||||||
|
md.damage+= md.damage*(rand()%20-10)/100;
|
||||||
|
md.damage+= 40*(sd?pc_checkskill(sd,RA_RESEARCHTRAP):0);
|
||||||
|
}
|
||||||
|
#else
|
||||||
case HT_LANDMINE:
|
case HT_LANDMINE:
|
||||||
case MA_LANDMINE:
|
case MA_LANDMINE:
|
||||||
md.damage=skill_lv*(sstatus->dex+75)*(100+sstatus->int_)/100;
|
md.damage=skill_lv*(sstatus->dex+75)*(100+sstatus->int_)/100;
|
||||||
@ -3482,6 +3518,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
|
|||||||
case HT_CLAYMORETRAP:
|
case HT_CLAYMORETRAP:
|
||||||
md.damage=skill_lv*(sstatus->dex/2+75)*(100+sstatus->int_)/100;
|
md.damage=skill_lv*(sstatus->dex/2+75)*(100+sstatus->int_)/100;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case HT_BLITZBEAT:
|
case HT_BLITZBEAT:
|
||||||
case SN_FALCONASSAULT:
|
case SN_FALCONASSAULT:
|
||||||
//Blitz-beat Damage.
|
//Blitz-beat Damage.
|
||||||
|
@ -829,7 +829,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
|
|||||||
* Storm Gust counter was dropped in renewal
|
* Storm Gust counter was dropped in renewal
|
||||||
**/
|
**/
|
||||||
#if REMODE
|
#if REMODE
|
||||||
sc_start(bl,SC_FREEZE,20+(5*skilllv),skilllv,skill_get_time2(skillid,skilllv));
|
sc_start(bl,SC_FREEZE,65-(5*skilllv),skilllv,skill_get_time2(skillid,skilllv));
|
||||||
#else
|
#else
|
||||||
//Tharis pointed out that this is normal freeze chance with a base of 300%
|
//Tharis pointed out that this is normal freeze chance with a base of 300%
|
||||||
if(tsc->sg_counter >= 3 &&
|
if(tsc->sg_counter >= 3 &&
|
||||||
|
@ -246,7 +246,7 @@ void initChangeTables(void)
|
|||||||
add_sc( CR_DEVOTION , SC_DEVOTION );
|
add_sc( CR_DEVOTION , SC_DEVOTION );
|
||||||
set_sc( CR_PROVIDENCE , SC_PROVIDENCE , SI_PROVIDENCE , SCB_ALL );
|
set_sc( CR_PROVIDENCE , SC_PROVIDENCE , SI_PROVIDENCE , SCB_ALL );
|
||||||
set_sc( CR_DEFENDER , SC_DEFENDER , SI_DEFENDER , SCB_SPEED|SCB_ASPD );
|
set_sc( CR_DEFENDER , SC_DEFENDER , SI_DEFENDER , SCB_SPEED|SCB_ASPD );
|
||||||
set_sc( CR_SPEARQUICKEN , SC_SPEARQUICKEN , SI_SPEARQUICKEN , SCB_ASPD );
|
set_sc( CR_SPEARQUICKEN , SC_SPEARQUICKEN , SI_SPEARQUICKEN , SCB_ASPD|SCB_CRI|SCB_FLEE );
|
||||||
set_sc( MO_STEELBODY , SC_STEELBODY , SI_STEELBODY , SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED );
|
set_sc( MO_STEELBODY , SC_STEELBODY , SI_STEELBODY , SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED );
|
||||||
add_sc( MO_BLADESTOP , SC_BLADESTOP_WAIT );
|
add_sc( MO_BLADESTOP , SC_BLADESTOP_WAIT );
|
||||||
add_sc( MO_BLADESTOP , SC_BLADESTOP );
|
add_sc( MO_BLADESTOP , SC_BLADESTOP );
|
||||||
@ -1604,6 +1604,8 @@ int status_base_amotion_pc(struct map_session_data* sd, struct status_data* stat
|
|||||||
sd->sc.data[i=SC_ASPDPOTION1] ||
|
sd->sc.data[i=SC_ASPDPOTION1] ||
|
||||||
sd->sc.data[i=SC_ASPDPOTION0] )
|
sd->sc.data[i=SC_ASPDPOTION0] )
|
||||||
amotion -= sd->sc.data[i]->val1*10;
|
amotion -= sd->sc.data[i]->val1*10;
|
||||||
|
if( sd->sc.data[SC_SPEARQUICKEN] )
|
||||||
|
amotion -= 70;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return amotion;
|
return amotion;
|
||||||
@ -4135,7 +4137,10 @@ static signed short status_calc_critical(struct block_list *bl, struct status_ch
|
|||||||
critical += 100;
|
critical += 100;
|
||||||
if(sc->data[SC__UNLUCKY])
|
if(sc->data[SC__UNLUCKY])
|
||||||
critical -= critical * sc->data[SC__UNLUCKY]->val2 / 100;
|
critical -= critical * sc->data[SC__UNLUCKY]->val2 / 100;
|
||||||
|
#if REMODE
|
||||||
|
if (sc->data[SC_SPEARQUICKEN])
|
||||||
|
critical += 3*sc->data[SC_SPEARQUICKEN]->val1*10;
|
||||||
|
#endif
|
||||||
|
|
||||||
return (short)cap_value(critical,10,SHRT_MAX);
|
return (short)cap_value(critical,10,SHRT_MAX);
|
||||||
}
|
}
|
||||||
@ -4241,7 +4246,10 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change
|
|||||||
flee += flee * sc->data[SC_ZEPHYR]->val2 / 100;
|
flee += flee * sc->data[SC_ZEPHYR]->val2 / 100;
|
||||||
if( sc->data[SC_MARSHOFABYSS] )
|
if( sc->data[SC_MARSHOFABYSS] )
|
||||||
flee -= (9 * sc->data[SC_MARSHOFABYSS]->val3 / 10 + sc->data[SC_MARSHOFABYSS]->val2 / 10) * (bl->type == BL_MOB ? 2 : 1);
|
flee -= (9 * sc->data[SC_MARSHOFABYSS]->val3 / 10 + sc->data[SC_MARSHOFABYSS]->val2 / 10) * (bl->type == BL_MOB ? 2 : 1);
|
||||||
|
#if REMODE
|
||||||
|
if( sc->data[SC_SPEARQUICKEN] )
|
||||||
|
flee += 2 * sc->data[SC_SPEARQUICKEN]->val1;
|
||||||
|
#endif
|
||||||
|
|
||||||
return (short)cap_value(flee,1,SHRT_MAX);
|
return (short)cap_value(flee,1,SHRT_MAX);
|
||||||
}
|
}
|
||||||
@ -4674,9 +4682,11 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change *
|
|||||||
max < sc->data[SC_ADRENALINE]->val3)
|
max < sc->data[SC_ADRENALINE]->val3)
|
||||||
max = sc->data[SC_ADRENALINE]->val3;
|
max = sc->data[SC_ADRENALINE]->val3;
|
||||||
|
|
||||||
|
#if isOFF(REMODE)
|
||||||
if(sc->data[SC_SPEARQUICKEN] &&
|
if(sc->data[SC_SPEARQUICKEN] &&
|
||||||
max < sc->data[SC_SPEARQUICKEN]->val2)
|
max < sc->data[SC_SPEARQUICKEN]->val2)
|
||||||
max = sc->data[SC_SPEARQUICKEN]->val2;
|
max = sc->data[SC_SPEARQUICKEN]->val2;
|
||||||
|
#endif
|
||||||
|
|
||||||
if(sc->data[SC_GATLINGFEVER] &&
|
if(sc->data[SC_GATLINGFEVER] &&
|
||||||
max < sc->data[SC_GATLINGFEVER]->val2)
|
max < sc->data[SC_GATLINGFEVER]->val2)
|
||||||
@ -6469,10 +6479,11 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
|
|||||||
case SC_MERC_QUICKEN:
|
case SC_MERC_QUICKEN:
|
||||||
val2 = 300;
|
val2 = 300;
|
||||||
break;
|
break;
|
||||||
|
#if isOFF(REMODE)
|
||||||
case SC_SPEARQUICKEN:
|
case SC_SPEARQUICKEN:
|
||||||
val2 = 200+10*val1;
|
val2 = 200+10*val1;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case SC_DANCING:
|
case SC_DANCING:
|
||||||
//val1 : Skill ID + LV
|
//val1 : Skill ID + LV
|
||||||
//val2 : Skill Group of the Dance.
|
//val2 : Skill Group of the Dance.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user