summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorxantara <xantara@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-06-13 20:20:08 +0000
committerxantara <xantara@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-06-13 20:20:08 +0000
commit4b97da7724f5ff7ce298cfc3cf7abafd8b6f0df8 (patch)
tree96527e91c398ce753dfec7fe239f50991f5b30fd /src/map
parentb3774b92cfeb2cdc70b00b0e6311631eda373a0c (diff)
downloadhercules-4b97da7724f5ff7ce298cfc3cf7abafd8b6f0df8.tar.gz
hercules-4b97da7724f5ff7ce298cfc3cf7abafd8b6f0df8.tar.bz2
hercules-4b97da7724f5ff7ce298cfc3cf7abafd8b6f0df8.tar.xz
hercules-4b97da7724f5ff7ce298cfc3cf7abafd8b6f0df8.zip
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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16292 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r--src/map/battle.c25
-rw-r--r--src/map/skill.c15
-rw-r--r--src/map/status.c4
3 files changed, 36 insertions, 8 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index a19493025..ce0f1b9a6 100644
--- a/src/map/battle.c
+++ b/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;
diff --git a/src/map/skill.c b/src/map/skill.c
index 768a91a27..9be2d9266 100644
--- a/src/map/skill.c
+++ b/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
diff --git a/src/map/status.c b/src/map/status.c
index aa8825b58..fefa63508 100644
--- a/src/map/status.c
+++ b/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])