4th Improvement - Imperial Guard (#7713)
This commit is contained in:
parent
e40c3edc31
commit
382d6bf54a
@ -24412,13 +24412,13 @@ Body:
|
||||
- Level: 2
|
||||
Area: 1
|
||||
- Level: 3
|
||||
Area: 1
|
||||
Area: 2
|
||||
- Level: 4
|
||||
Area: 2
|
||||
- Level: 5
|
||||
Area: 2
|
||||
Area: 3
|
||||
ActiveInstance: 11
|
||||
Cooldown: 2000
|
||||
Cooldown: 1700
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@ -24449,23 +24449,23 @@ Body:
|
||||
- Level: 1
|
||||
Amount: 20
|
||||
- Level: 2
|
||||
Amount: 20
|
||||
Amount: 22
|
||||
- Level: 3
|
||||
Amount: 20
|
||||
Amount: 24
|
||||
- Level: 4
|
||||
Amount: 20
|
||||
Amount: 26
|
||||
- Level: 5
|
||||
Amount: 20
|
||||
Amount: 28
|
||||
- Level: 6
|
||||
Amount: 25
|
||||
Amount: 30
|
||||
- Level: 7
|
||||
Amount: 25
|
||||
Amount: 32
|
||||
- Level: 8
|
||||
Amount: 25
|
||||
Amount: 34
|
||||
- Level: 9
|
||||
Amount: 25
|
||||
Amount: 36
|
||||
- Level: 10
|
||||
Amount: 25
|
||||
Amount: 38
|
||||
Weapon:
|
||||
1hSpear: true
|
||||
2hSpear: true
|
||||
@ -24865,25 +24865,25 @@ Body:
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
Amount: 30
|
||||
Amount: 45
|
||||
- Level: 2
|
||||
Amount: 40
|
||||
- Level: 3
|
||||
Amount: 50
|
||||
- Level: 3
|
||||
Amount: 55
|
||||
- Level: 4
|
||||
Amount: 60
|
||||
- Level: 5
|
||||
Amount: 70
|
||||
Amount: 65
|
||||
- Level: 6
|
||||
Amount: 80
|
||||
Amount: 70
|
||||
- Level: 7
|
||||
Amount: 90
|
||||
Amount: 75
|
||||
- Level: 8
|
||||
Amount: 100
|
||||
Amount: 80
|
||||
- Level: 9
|
||||
Amount: 110
|
||||
Amount: 85
|
||||
- Level: 10
|
||||
Amount: 120
|
||||
Amount: 90
|
||||
- Id: 2322
|
||||
Name: LG_PIETY
|
||||
Description: Piety
|
||||
@ -24977,15 +24977,15 @@ Body:
|
||||
Time: 15000
|
||||
Cooldown:
|
||||
- Level: 1
|
||||
Time: 7000
|
||||
Time: 6500
|
||||
- Level: 2
|
||||
Time: 6000
|
||||
Time: 5500
|
||||
- Level: 3
|
||||
Time: 5000
|
||||
Time: 4500
|
||||
- Level: 4
|
||||
Time: 4000
|
||||
Time: 3500
|
||||
- Level: 5
|
||||
Time: 3000
|
||||
Time: 2500
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@ -25010,9 +25010,8 @@ Body:
|
||||
HitCount: 3
|
||||
Element: Weapon
|
||||
CastCancel: true
|
||||
CastTime: 1000
|
||||
AfterCastActDelay: 3000
|
||||
Cooldown: 20000
|
||||
AfterCastActDelay: 500
|
||||
Cooldown: 200
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@ -36761,6 +36760,7 @@ Body:
|
||||
Toggleable: true
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
GiveAp: 15
|
||||
SplashArea: 10
|
||||
CastCancel: true
|
||||
CastTime: 2000
|
||||
@ -36956,7 +36956,7 @@ Body:
|
||||
CastTime: 500
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 10000
|
||||
Cooldown: 2000
|
||||
Cooldown: 1000
|
||||
FixedCastTime: 500
|
||||
Requires:
|
||||
SpCost:
|
||||
@ -36982,17 +36982,17 @@ Body:
|
||||
TargetType: Attack
|
||||
DamageFlags:
|
||||
Splash: true
|
||||
Range: 1
|
||||
Range: 3
|
||||
Hit: Multi_Hit
|
||||
HitCount: 2
|
||||
HitCount: 3
|
||||
Element: Weapon
|
||||
SplashArea: 3
|
||||
GiveAp: 3
|
||||
GiveAp: 2
|
||||
CastCancel: true
|
||||
CastTime: 1000
|
||||
AfterCastActDelay: 500
|
||||
Cooldown: 3000
|
||||
FixedCastTime: 1000
|
||||
Cooldown: 1000
|
||||
FixedCastTime: 500
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
@ -37033,7 +37033,7 @@ Body:
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 4500
|
||||
Cooldown: 5000
|
||||
FixedCastTime: 1000
|
||||
FixedCastTime: 1500
|
||||
Requires:
|
||||
SpCost:
|
||||
- Level: 1
|
||||
|
@ -2938,7 +2938,6 @@ static bool is_attack_critical(struct Damage* wd, struct block_list *src, struct
|
||||
#ifdef RENEWAL
|
||||
case ASC_BREAKER:
|
||||
#endif
|
||||
case LG_CANNONSPEAR:
|
||||
case GC_CROSSIMPACT:
|
||||
case SHC_SAVAGE_IMPACT:
|
||||
case SHC_ETERNAL_SLASH:
|
||||
@ -3161,7 +3160,7 @@ static bool is_attack_hitting(struct Damage* wd, struct block_list *src, struct
|
||||
hitrate += pc_checkskill(sd, GN_REMODELING_CART) * 4;
|
||||
break;
|
||||
case LG_BANISHINGPOINT:
|
||||
hitrate += 3 * skill_lv;
|
||||
hitrate += 5 * skill_lv;
|
||||
break;
|
||||
case GC_VENOMPRESSURE:
|
||||
hitrate += 10 + 4 * skill_lv;
|
||||
@ -4523,7 +4522,22 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
||||
break;
|
||||
case PA_SHIELDCHAIN:
|
||||
#ifdef RENEWAL
|
||||
skillratio = 60 + 40 * skill_lv;
|
||||
skillratio = -100 + 300 + 200 * skill_lv;
|
||||
|
||||
if( sd != nullptr ){
|
||||
int16 index = sd->equip_index[EQI_HAND_L];
|
||||
|
||||
// Damage affected by the shield's weight and refine.
|
||||
if( index >= 0 && sd->inventory_data[index] != nullptr && sd->inventory_data[index]->type == IT_ARMOR ){
|
||||
skillratio += sd->inventory_data[index]->weight / 10 + 4 * sd->inventory.u.items_inventory[index].refine;
|
||||
}
|
||||
|
||||
// Damage affected by shield mastery
|
||||
if( sc != nullptr && sc->getSCE( SC_SHIELD_POWER ) ){
|
||||
skillratio += skill_lv * 14 * pc_checkskill( sd, IG_SHIELD_MASTERY );
|
||||
}
|
||||
}
|
||||
|
||||
RE_LVL_DMOD(100);
|
||||
#else
|
||||
skillratio += 30 * skill_lv;
|
||||
@ -4871,28 +4885,40 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
||||
RE_LVL_DMOD(120);
|
||||
break;
|
||||
case LG_CANNONSPEAR:
|
||||
skillratio += -100 + skill_lv * (50 + sstatus->str);
|
||||
skillratio += -100 + skill_lv * ( 120 + sstatus->str );
|
||||
|
||||
if( sc != nullptr && sc->getSCE( SC_SPEAR_SCAR ) ){
|
||||
skillratio += 400;
|
||||
}
|
||||
|
||||
RE_LVL_DMOD(100);
|
||||
if (sc && sc->getSCE(SC_SPEAR_SCAR))// Whats the official increase? [Rytech]
|
||||
skillratio += skillratio * 50 / 100;
|
||||
break;
|
||||
case LG_BANISHINGPOINT:
|
||||
skillratio += -100 + (80 * skill_lv) + ((sd) ? pc_checkskill(sd,SM_BASH) * 30 : 0);
|
||||
skillratio += -100 + ( 100 * skill_lv );
|
||||
|
||||
if( sd != nullptr ){
|
||||
skillratio += pc_checkskill( sd, SM_BASH ) * 70;
|
||||
}
|
||||
|
||||
if( sc != nullptr && sc->getSCE( SC_SPEAR_SCAR ) ){
|
||||
skillratio += 800;
|
||||
}
|
||||
|
||||
RE_LVL_DMOD(100);
|
||||
if (sc && sc->getSCE(SC_SPEAR_SCAR))// Whats the official increase? [Rytech]
|
||||
skillratio += skillratio * 50 / 100;
|
||||
break;
|
||||
case LG_SHIELDPRESS:
|
||||
skillratio += -100 + 200 * skill_lv + sstatus->str;
|
||||
if (sd) {
|
||||
if( sc != nullptr && sc->getSCE( SC_SHIELD_POWER ) ){
|
||||
skillratio += skill_lv * 15 * pc_checkskill( sd, IG_SHIELD_MASTERY );
|
||||
}
|
||||
|
||||
short index = sd->equip_index[EQI_HAND_L];
|
||||
|
||||
if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR)
|
||||
skillratio += sd->inventory_data[index]->weight / 10;
|
||||
}
|
||||
RE_LVL_DMOD(100);
|
||||
if (sc && sc->getSCE(SC_SHIELD_POWER))// Whats the official increase? [Rytech]
|
||||
skillratio += skillratio * 50 / 100;
|
||||
break;
|
||||
case LG_PINPOINTATTACK:
|
||||
skillratio += -100 + 100 * skill_lv + 5 * status_get_agi(src);
|
||||
@ -4911,17 +4937,20 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
||||
break;
|
||||
case LG_OVERBRAND:
|
||||
if(sc && sc->getSCE(SC_OVERBRANDREADY))
|
||||
skillratio += -100 + 450 * skill_lv;
|
||||
skillratio += -100 + 500 * skill_lv;
|
||||
else
|
||||
skillratio += -100 + 300 * skill_lv;
|
||||
skillratio += -100 + 350 * skill_lv;
|
||||
skillratio += ((sd) ? pc_checkskill(sd, CR_SPEARQUICKEN) * 50 : 0);
|
||||
RE_LVL_DMOD(100);
|
||||
break;
|
||||
case LG_EARTHDRIVE:
|
||||
skillratio += -100 + 380 * skill_lv + ((sstatus->str + sstatus->vit) / 6); // !TODO: What's the STR/VIT bonus?
|
||||
skillratio += -100 + 380 * skill_lv + sstatus->str + sstatus->vit; // !TODO: What's the STR/VIT bonus?
|
||||
|
||||
if( sc != nullptr && sc->getSCE( SC_SHIELD_POWER ) ){
|
||||
skillratio += skill_lv * 37 * pc_checkskill( sd, IG_SHIELD_MASTERY );
|
||||
}
|
||||
|
||||
RE_LVL_DMOD(100);
|
||||
if (sc && sc->getSCE(SC_SHIELD_POWER))// Whats the official increase? [Rytech]
|
||||
skillratio += skillratio * 50 / 100;
|
||||
break;
|
||||
case LG_HESPERUSLIT:
|
||||
if (sc && sc->getSCE(SC_INSPIRATION))
|
||||
@ -5415,6 +5444,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
||||
break;
|
||||
case IG_SHIELD_SHOOTING:
|
||||
skillratio += -100 + 600 * skill_lv + 5 * sstatus->pow;
|
||||
skillratio += skill_lv * 15 * pc_checkskill( sd, IG_SHIELD_MASTERY );
|
||||
if (sd) { // Damage affected by the shield's weight and refine. Need official formula. [Rytech]
|
||||
short index = sd->equip_index[EQI_HAND_L];
|
||||
|
||||
@ -5422,8 +5452,6 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
|
||||
skillratio += sd->inventory_data[index]->weight / 20 * sd->inventory.u.items_inventory[index].refine;
|
||||
}
|
||||
RE_LVL_DMOD(100);
|
||||
if ((i = pc_checkskill_imperial_guard(sd, 3)) > 0)
|
||||
skillratio += skillratio * i / 100;
|
||||
break;
|
||||
case IG_OVERSLASH:
|
||||
skillratio += -100 + 60 * skill_lv + 5 * sstatus->pow;
|
||||
@ -6525,7 +6553,11 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block
|
||||
wd.div_ = min(wd.div_ + wd.miscflag, 3); // Number of hits doesn't go above 3.
|
||||
break;
|
||||
case IG_OVERSLASH:
|
||||
wd.div_ = min(wd.div_ + wd.miscflag, 5); // Number of hits doesn't appear to go above 5.
|
||||
if( wd.miscflag >= 4 ){
|
||||
wd.div_ = 7;
|
||||
}else if( wd.miscflag >= 2 ){
|
||||
wd.div_ = 5;
|
||||
}
|
||||
break;
|
||||
case SHC_ETERNAL_SLASH:
|
||||
if (sc && sc->getSCE(SC_E_SLASH_COUNT))
|
||||
@ -7480,9 +7512,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
RE_LVL_DMOD(100); // ! TODO: Confirm new formula
|
||||
break;
|
||||
case LG_RAYOFGENESIS:
|
||||
skillratio += -100 + 230 * skill_lv + sstatus->int_ / 6; // !TODO: What's the INT bonus?
|
||||
if (sc && sc->getSCE(SC_INSPIRATION))
|
||||
skillratio += 70 * skill_lv;
|
||||
skillratio += -100 + 350 * skill_lv + sstatus->int_; // !TODO: What's the INT bonus?
|
||||
RE_LVL_DMOD(100);
|
||||
break;
|
||||
case NPC_RAYOFGENESIS:
|
||||
@ -7789,13 +7819,14 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
if ((i = pc_checkskill_imperial_guard(sd, 3)) > 0)
|
||||
skillratio += skillratio * i / 100;
|
||||
break;
|
||||
case IG_CROSS_RAIN:// Need official damage increase from Spear and Sword Mastery. [Rytech]
|
||||
skillratio += -100 + 30 * skill_lv + 5 * sstatus->spl + 5 * pc_checkskill(sd, IG_SPEAR_SWORD_M);
|
||||
case IG_CROSS_RAIN:
|
||||
if( sc && sc->getSCE( SC_HOLY_S ) ){
|
||||
skillratio += -100 + ( 250 + 10 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv;
|
||||
}else{
|
||||
skillratio += -100 + ( 150 + 5 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv;
|
||||
}
|
||||
skillratio += 5 * sstatus->spl;
|
||||
RE_LVL_DMOD(100);
|
||||
if ((i = pc_checkskill_imperial_guard(sd, 3)) > 0)
|
||||
skillratio += skillratio * i / 100;
|
||||
if (sc && sc->getSCE(SC_HOLY_S))
|
||||
skillratio += 20 * skill_lv;
|
||||
break;
|
||||
case CD_ARBITRIUM:
|
||||
case CD_ARBITRIUM_ATK:
|
||||
|
@ -7143,8 +7143,6 @@ static unsigned short status_calc_watk(struct block_list *bl, status_change *sc,
|
||||
watk += sc->getSCE(SC_POWERFUL_FAITH)->val2;
|
||||
if (sc->getSCE(SC_GUARD_STANCE))
|
||||
watk -= sc->getSCE(SC_GUARD_STANCE)->val3;
|
||||
if (sc->getSCE(SC_ATTACK_STANCE))
|
||||
watk += sc->getSCE(SC_ATTACK_STANCE)->val3;
|
||||
|
||||
return (unsigned short)cap_value(watk,0,USHRT_MAX);
|
||||
}
|
||||
@ -8474,6 +8472,9 @@ static signed short status_calc_patk(struct block_list *bl, status_change *sc, i
|
||||
patk += sc->getSCE(SC_PRON_MARCH)->val2;
|
||||
if (sc->getSCE(SC_TEMPERING))
|
||||
patk += sc->getSCE(SC_TEMPERING)->val2;
|
||||
if( sc->getSCE( SC_ATTACK_STANCE ) ){
|
||||
patk += sc->getSCE( SC_ATTACK_STANCE )->val3;
|
||||
}
|
||||
|
||||
return (short)cap_value(patk, 0, SHRT_MAX);
|
||||
}
|
||||
@ -8498,6 +8499,9 @@ static signed short status_calc_smatk(struct block_list *bl, status_change *sc,
|
||||
smatk += sc->getSCE(SC_JAWAII_SERENADE)->val2;
|
||||
if (sc->getSCE(SC_SPELL_ENCHANTING))
|
||||
smatk += sc->getSCE(SC_SPELL_ENCHANTING)->val2;
|
||||
if( sc->getSCE( SC_ATTACK_STANCE ) ){
|
||||
smatk += sc->getSCE( SC_ATTACK_STANCE )->val3;
|
||||
}
|
||||
|
||||
return (short)cap_value(smatk, 0, SHRT_MAX);
|
||||
}
|
||||
@ -12526,7 +12530,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
tick = INFINITE_TICK;
|
||||
break;
|
||||
case SC_GUARDIAN_S:
|
||||
val2 = status->max_hp * (50 * val1) / 100;// Barrier HP
|
||||
val2 = ( status->max_hp / 2 ) * ( 50 * val1 ) / 100 + 15 * status->sta; // Barrier HP
|
||||
break;
|
||||
case SC_REBOUND_S:
|
||||
val2 = 10 * val1;// Reduced Damage From Devotion
|
||||
@ -12535,7 +12539,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
break;
|
||||
case SC_ATTACK_STANCE:
|
||||
val2 = 40 * val1;// DEF Decrease
|
||||
val3 = 5 + 5 * val1;// ATK Increase
|
||||
val3 = 3 * val1; // P.ATK/S.MATK Increase
|
||||
tick = INFINITE_TICK;
|
||||
break;
|
||||
case SC_HOLY_S:
|
||||
|
Loading…
x
Reference in New Issue
Block a user