|
@@ -707,7 +707,7 @@ void initChangeTables(void)
|
|
|
set_sc( SR_LIGHTNINGWALK , SC_LIGHTNINGWALK , SI_LIGHTNINGWALK , SCB_NONE );
|
|
|
set_sc( SR_RAISINGDRAGON , SC_RAISINGDRAGON , SI_RAISINGDRAGON , SCB_REGEN|SCB_MAXHP|SCB_MAXSP );
|
|
|
set_sc( SR_GENTLETOUCH_ENERGYGAIN , SC_GT_ENERGYGAIN , SI_GENTLETOUCH_ENERGYGAIN , SCB_NONE );
|
|
|
- set_sc( SR_GENTLETOUCH_CHANGE , SC_GT_CHANGE , SI_GENTLETOUCH_CHANGE , SCB_WATK|SCB_MDEF|SCB_ASPD|SCB_MAXHP );
|
|
|
+ set_sc( SR_GENTLETOUCH_CHANGE , SC_GT_CHANGE , SI_GENTLETOUCH_CHANGE , SCB_WATK|SCB_MDEF|SCB_ASPD );
|
|
|
set_sc( SR_GENTLETOUCH_REVITALIZE , SC_GT_REVITALIZE , SI_GENTLETOUCH_REVITALIZE , SCB_MAXHP|SCB_REGEN );
|
|
|
set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , SI_FLASHCOMBO , SCB_WATK );
|
|
|
|
|
@@ -2757,7 +2757,7 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
|
|
|
if(sc->data[SC_RAISINGDRAGON])
|
|
|
bonus += (2 + sc->data[SC_RAISINGDRAGON]->val1);
|
|
|
if(sc->data[SC_GT_REVITALIZE])
|
|
|
- bonus += (2 * sc->data[SC_GT_REVITALIZE]->val1);
|
|
|
+ bonus += sc->data[SC_GT_REVITALIZE]->val2;
|
|
|
if(sc->data[SC_MUSTLE_M])
|
|
|
bonus += sc->data[SC_MUSTLE_M]->val1;
|
|
|
if(sc->data[SC_ANGRIFFS_MODUS])
|
|
@@ -5414,7 +5414,7 @@ static unsigned short status_calc_watk(struct block_list *bl, struct status_chan
|
|
|
watk += (10 + 10 * sc->data[SC_BANDING]->val1) * sc->data[SC_BANDING]->val2;
|
|
|
if(sc->data[SC_INSPIRATION])
|
|
|
watk += 40 * sc->data[SC_INSPIRATION]->val1 + 3 * sc->data[SC_INSPIRATION]->val2;
|
|
|
- if(sc->data[SC_GT_CHANGE] && sc->data[SC_GT_CHANGE]->val2)
|
|
|
+ if(sc->data[SC_GT_CHANGE])
|
|
|
watk += sc->data[SC_GT_CHANGE]->val2;
|
|
|
if(sc->data[SC__ENERVATION])
|
|
|
watk -= watk * sc->data[SC__ENERVATION]->val2 / 100;
|
|
@@ -5987,7 +5987,7 @@ static defType status_calc_mdef(struct block_list *bl, struct status_change *sc,
|
|
|
mdef -= mdef * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100;
|
|
|
if(sc->data[SC_SYMPHONYOFLOVER])
|
|
|
mdef += mdef * sc->data[SC_SYMPHONYOFLOVER]->val3 / 100;
|
|
|
- if(sc->data[SC_GT_CHANGE] && sc->data[SC_GT_CHANGE]->val4) {
|
|
|
+ if(sc->data[SC_GT_CHANGE]) {
|
|
|
mdef -= sc->data[SC_GT_CHANGE]->val4;
|
|
|
if (mdef < 0)
|
|
|
return 0;
|
|
@@ -9785,26 +9785,26 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|
|
tick_time = 5000; // [GodLesZ] tick time
|
|
|
break;
|
|
|
case SC_GT_ENERGYGAIN:
|
|
|
- val3 = 10 + 5 * val1; // Sphere gain chance.
|
|
|
+ val2 = 10 + 5 * val1; // Sphere gain chance.
|
|
|
break;
|
|
|
case SC_GT_CHANGE:
|
|
|
{ // Take note there is no def increase as skill desc says. [malufett]
|
|
|
- struct block_list * src2;
|
|
|
+ struct status_data *sstatus = src ? status_get_status_data(src) : NULL;
|
|
|
+ val2 = ((sstatus?sstatus->dex:4) / 4 + (sstatus?sstatus->str:2) / 2) * val1 / 5; // ATK increase: ATK [{(Caster DEX / 4) + (Caster STR / 2)} x Skill Level / 5]
|
|
|
val3 = status->agi * val1 / 60; // ASPD increase: [(Target AGI x Skill Level) / 60] %
|
|
|
- if( (src2 = map_id2bl(val2)) ) {
|
|
|
- val2 = (status_get_dex(src2) / 4 + status_get_str(src2) / 2) * val1 / 5; // ATK increase: ATK [{(Caster DEX / 4) + (Caster STR / 2)} x Skill Level / 5]
|
|
|
- val4 = ( 200/status_get_int(src2) ) * val1; // MDEF decrease: MDEF [(200 / Caster INT) x Skill Level]
|
|
|
- }
|
|
|
- if( val4 < 0 )
|
|
|
+ val4 = (200/(sstatus?sstatus->int_:1)) * val1; // MDEF decrease: MDEF [(200 / Caster INT) x Skill Level]
|
|
|
+
|
|
|
+ if (val4 < 0)
|
|
|
val4 = 0;
|
|
|
}
|
|
|
break;
|
|
|
case SC_GT_REVITALIZE:
|
|
|
{ // Take note there is no vit,aspd,speed increase as skill desc says. [malufett]
|
|
|
- struct block_list * src2;
|
|
|
+ struct status_data *sstatus = src ? status_get_status_data(src) : NULL;
|
|
|
+ val2 = 2 * val1; // MaxHP: [(Skill Level * 2)]%
|
|
|
val3 = val1 * 30 + 50; // Natural HP recovery increase: [(Skill Level x 30) + 50] %
|
|
|
- if( (src2 = map_id2bl(val2)) ) // The stat def is not shown in the status window and it is process differently
|
|
|
- val4 = ( status_get_vit(src2)/4 ) * val1; // STAT DEF increase: [(Caster VIT / 4) x Skill Level]
|
|
|
+ // The stat def is not shown in the status window and it is process differently
|
|
|
+ val4 = ((sstatus?sstatus->vit:4)/4 ) * val1; // STAT DEF increase: [(Caster VIT / 4) x Skill Level]
|
|
|
}
|
|
|
break;
|
|
|
case SC_PYROTECHNIC_OPTION:
|