Merge branch 'master' into class/soul_ascetic

# Conflicts:
#	db/re/status.yml
This commit is contained in:
Lemongrass3110 2024-03-11 21:31:27 +01:00
commit 010e6fa2ea
5 changed files with 114 additions and 92 deletions

View File

@ -36847,16 +36847,16 @@ Body:
Toggleable: true Toggleable: true
Hit: Single Hit: Single
HitCount: 1 HitCount: 1
GiveAp: 15
SplashArea: 10 SplashArea: 10
CastCancel: true CastCancel: true
CastTime: 2000 CastTime: 2000
AfterCastActDelay: 500 AfterCastActDelay: 300
Duration1: 60000 Duration1: 40000
Cooldown: 15000 Cooldown: 25000
FixedCastTime: 1000 FixedCastTime: 1000
Requires: Requires:
SpCost: 60 SpCost: 60
ApCost: 35
Status: Status:
Guard_Stance: true Guard_Stance: true
Status: Guardian_S Status: Guardian_S
@ -37018,7 +37018,7 @@ Body:
Range: 9 Range: 9
Hit: Multi_Hit Hit: Multi_Hit
HitCount: -10 HitCount: -10
Element: Holy Element: Neutral
CastCancel: true CastCancel: true
CastTime: 2000 CastTime: 2000
Cooldown: 5000 Cooldown: 5000
@ -37058,7 +37058,7 @@ Body:
Hit: Multi_Hit Hit: Multi_Hit
HitCount: -7 HitCount: -7
Element: Weapon Element: Weapon
GiveAp: 3 GiveAp: 5
SplashArea: SplashArea:
- Level: 1 - Level: 1
Area: 2 Area: 2
@ -37105,7 +37105,7 @@ Body:
HitCount: 3 HitCount: 3
Element: Weapon Element: Weapon
SplashArea: 3 SplashArea: 3
GiveAp: 3 GiveAp: 5
CastCancel: true CastCancel: true
CastTime: 1000 CastTime: 1000
AfterCastActDelay: 500 AfterCastActDelay: 500
@ -37145,7 +37145,7 @@ Body:
Hit: Single Hit: Single
HitCount: 1 HitCount: 1
Element: Holy Element: Holy
GiveAp: 4 GiveAp: 6
CastCancel: true CastCancel: true
CastTime: 1000 CastTime: 1000
AfterCastActDelay: 150 AfterCastActDelay: 150
@ -38857,7 +38857,7 @@ Body:
Time: 1500 Time: 1500
- Level: 5 - Level: 5
Time: 1000 Time: 1000
Cooldown: 60000 Cooldown: 30000
Requires: Requires:
SpCost: SpCost:
- Level: 1 - Level: 1
@ -38888,26 +38888,27 @@ Body:
FixedCastTime: 1000 FixedCastTime: 1000
Requires: Requires:
SpCost: 100 SpCost: 100
ApCost: 150 ApCost: 120
Status: Abyss_Slayer Status: Abyss_Slayer
- Id: 5319 - Id: 5319
Name: ABC_ABYSS_STRIKE Name: ABC_ABYSS_STRIKE
Description: Abyss Strike Description: Omega Abyss Strike
MaxLevel: 10 MaxLevel: 10
Type: Magic Type: Magic
TargetType: Ground TargetType: Ground
Range: 9 Range: 9
Hit: Single Hit: Single
HitCount: 1 HitCount: 1
Element: Fire
CastCancel: true CastCancel: true
CastTime: 2000 CastTime: 2000
AfterCastActDelay: 500 AfterCastActDelay: 500
Duration1: 100 Duration1: 100
Cooldown: 3000 Cooldown: 700
FixedCastTime: 1000 FixedCastTime: 1000
Requires: Requires:
SpCost: 125 SpCost: 125
ApCost: 15 ApCost: 10
Unit: Unit:
Id: Dummyskill Id: Dummyskill
Range: 4 Range: 4
@ -39022,7 +39023,7 @@ Body:
Hit: Multi_Hit Hit: Multi_Hit
HitCount: 2 HitCount: 2
Element: Weapon Element: Weapon
GiveAp: 1 GiveAp: 3
CastCancel: true CastCancel: true
AfterCastActDelay: 500 AfterCastActDelay: 500
Cooldown: 350 Cooldown: 350
@ -40909,7 +40910,7 @@ Body:
GiveAp: 5 GiveAp: 5
CastCancel: true CastCancel: true
CastTime: 4000 CastTime: 4000
AfterCastActDelay: 500 AfterCastActDelay: 700
Duration1: 3000 Duration1: 3000
Duration2: 10000 Duration2: 10000
Cooldown: 2000 Cooldown: 2000
@ -40948,7 +40949,7 @@ Body:
GiveAp: 5 GiveAp: 5
CastCancel: true CastCancel: true
CastTime: 4000 CastTime: 4000
AfterCastActDelay: 500 AfterCastActDelay: 700
Duration1: 3000 Duration1: 3000
Duration2: 20000 Duration2: 20000
Cooldown: 2000 Cooldown: 2000
@ -40987,7 +40988,7 @@ Body:
GiveAp: 5 GiveAp: 5
CastCancel: true CastCancel: true
CastTime: 4000 CastTime: 4000
AfterCastActDelay: 500 AfterCastActDelay: 700
Duration1: 3000 Duration1: 3000
Duration2: 20000 Duration2: 20000
Cooldown: 2000 Cooldown: 2000
@ -41068,7 +41069,7 @@ Body:
CastTime: 3000 CastTime: 3000
AfterCastActDelay: 500 AfterCastActDelay: 500
Duration1: 1500000 Duration1: 1500000
Cooldown: 900000 Cooldown: 60000
FixedCastTime: 2000 FixedCastTime: 2000
Requires: Requires:
SpCost: 100 SpCost: 100
@ -41089,7 +41090,7 @@ Body:
CastTime: 3000 CastTime: 3000
AfterCastActDelay: 500 AfterCastActDelay: 500
Duration1: 1500000 Duration1: 1500000
Cooldown: 900000 Cooldown: 60000
FixedCastTime: 2000 FixedCastTime: 2000
Requires: Requires:
SpCost: 100 SpCost: 100
@ -41110,7 +41111,7 @@ Body:
CastTime: 3000 CastTime: 3000
AfterCastActDelay: 500 AfterCastActDelay: 500
Duration1: 1500000 Duration1: 1500000
Cooldown: 900000 Cooldown: 60000
FixedCastTime: 2000 FixedCastTime: 2000
Requires: Requires:
SpCost: 100 SpCost: 100
@ -41131,7 +41132,7 @@ Body:
CastTime: 3000 CastTime: 3000
AfterCastActDelay: 500 AfterCastActDelay: 500
Duration1: 1500000 Duration1: 1500000
Cooldown: 900000 Cooldown: 60000
FixedCastTime: 2000 FixedCastTime: 2000
Requires: Requires:
SpCost: 100 SpCost: 100
@ -41152,7 +41153,7 @@ Body:
CastTime: 3000 CastTime: 3000
AfterCastActDelay: 500 AfterCastActDelay: 500
Duration1: 1500000 Duration1: 1500000
Cooldown: 900000 Cooldown: 60000
FixedCastTime: 2000 FixedCastTime: 2000
Requires: Requires:
SpCost: 100 SpCost: 100
@ -41171,11 +41172,11 @@ Body:
CastCancel: true CastCancel: true
CastTime: 8000 CastTime: 8000
AfterCastActDelay: 500 AfterCastActDelay: 500
Cooldown: 5000 Cooldown: 2000
FixedCastTime: 1500 FixedCastTime: 1500
Requires: Requires:
SpCost: 140 SpCost: 140
ApCost: 30 ApCost: 15
- Id: 5381 - Id: 5381
Name: EM_ELEMENTAL_VEIL Name: EM_ELEMENTAL_VEIL
Description: Elemental Veil Description: Elemental Veil
@ -41240,7 +41241,7 @@ Body:
Splash: true Splash: true
Range: 1 Range: 1
Hit: Multi_Hit Hit: Multi_Hit
HitCount: 2 HitCount: 5
SplashArea: 4 SplashArea: 4
Requires: Requires:
SpCost: 1 SpCost: 1
@ -41439,7 +41440,7 @@ Body:
Area: 3 Area: 3
- Level: 5 - Level: 5
Area: 3 Area: 3
GiveAp: 1 GiveAp: 2
AfterCastActDelay: 1000 AfterCastActDelay: 1000
Cooldown: 500 Cooldown: 500
CastCancel: true CastCancel: true
@ -41447,15 +41448,15 @@ Body:
Requires: Requires:
SpCost: SpCost:
- Level: 1 - Level: 1
Amount: 49 Amount: 72
- Level: 2 - Level: 2
Amount: 53 Amount: 76
- Level: 3 - Level: 3
Amount: 57 Amount: 80
- Level: 4 - Level: 4
Amount: 61 Amount: 84
- Level: 5 - Level: 5
Amount: 65 Amount: 88
Weapon: Weapon:
Gatling: true Gatling: true
Shotgun: true Shotgun: true
@ -41474,9 +41475,9 @@ Body:
Hit: Single Hit: Single
HitCount: 1 HitCount: 1
Element: Weapon Element: Weapon
GiveAp: 1 GiveAp: 2
AfterCastActDelay: 500 AfterCastActDelay: 500
Cooldown: 300 Cooldown: 350
CastCancel: true CastCancel: true
FixedCastTime: 1000 FixedCastTime: 1000
Requires: Requires:
@ -41521,7 +41522,7 @@ Body:
Area: 3 Area: 3
- Level: 5 - Level: 5
Area: 3 Area: 3
GiveAp: 1 GiveAp: 2
AfterCastActDelay: 1000 AfterCastActDelay: 1000
Cooldown: 500 Cooldown: 500
CastCancel: true CastCancel: true
@ -41556,7 +41557,7 @@ Body:
Hit: Multi_Hit Hit: Multi_Hit
HitCount: 6 HitCount: 6
Element: Weapon Element: Weapon
GiveAp: 1 GiveAp: 2
AfterCastActDelay: 1000 AfterCastActDelay: 1000
Cooldown: 500 Cooldown: 500
CastCancel: true CastCancel: true
@ -41602,7 +41603,7 @@ Body:
Area: 3 Area: 3
- Level: 5 - Level: 5
Area: 3 Area: 3
GiveAp: 1 GiveAp: 2
AfterCastActDelay: 1000 AfterCastActDelay: 1000
Cooldown: 500 Cooldown: 500
CastCancel: true CastCancel: true

View File

@ -7937,6 +7937,9 @@ Body:
Flags: Flags:
BlEffect: true BlEffect: true
DisplayPc: true DisplayPc: true
NoBanishingBuster: true
NoDispell: true
NoClearance: true
- Status: Ultimate_S - Status: Ultimate_S
Icon: EFST_ULTIMATE_S Icon: EFST_ULTIMATE_S
DurationLookup: IG_ULTIMATE_SACRIFICE DurationLookup: IG_ULTIMATE_SACRIFICE
@ -8876,6 +8879,10 @@ Body:
DurationLookup: NW_HIDDEN_CARD DurationLookup: NW_HIDDEN_CARD
CalcFlags: CalcFlags:
All: true All: true
Flags:
NoBanishingBuster: true
NoDispell: true
NoClearance: true
- Status: Talisman_of_Protection - Status: Talisman_of_Protection
Icon: EFST_TALISMAN_OF_PROTECTION Icon: EFST_TALISMAN_OF_PROTECTION
DurationLookup: SOA_TALISMAN_OF_PROTECTION DurationLookup: SOA_TALISMAN_OF_PROTECTION

View File

@ -1846,7 +1846,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
switch (skill_id) { switch (skill_id) {
case HN_SHIELD_CHAIN_RUSH: case HN_SHIELD_CHAIN_RUSH:
case HN_DOUBLEBOWLINGBASH: case HN_DOUBLEBOWLINGBASH:
damage += damage * 70 / 100; damage += damage * 120 / 100;
break; break;
case HN_MEGA_SONIC_BLOW: case HN_MEGA_SONIC_BLOW:
case HN_SPIRAL_PIERCE_MAX: case HN_SPIRAL_PIERCE_MAX:
@ -4231,7 +4231,7 @@ static void battle_calc_multi_attack(struct Damage* wd, struct block_list *src,s
break; break;
} }
case ABC_FRENZY_SHOT: case ABC_FRENZY_SHOT:
if( rnd()%100 < 5 * skill_lv ){ if( rnd_chance( 5 * skill_lv, 100 ) ){
wd->div_ = 3; wd->div_ = 3;
} }
break; break;
@ -5624,22 +5624,22 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
skillratio += skillratio * i / 100; skillratio += skillratio * i / 100;
break; break;
case IG_SHIELD_SHOOTING: case IG_SHIELD_SHOOTING:
skillratio += -100 + 650 + 2850 * skill_lv; skillratio += -100 + 1000 + 3500 * skill_lv;
skillratio += 7 * sstatus->pow; skillratio += 10 * sstatus->pow;
skillratio += skill_lv * 50 * pc_checkskill( sd, IG_SHIELD_MASTERY ); skillratio += skill_lv * 150 * pc_checkskill( sd, IG_SHIELD_MASTERY );
if (sd) { // Damage affected by the shield's weight and refine. Need official formula. [Rytech] if (sd) { // Damage affected by the shield's weight and refine. Need official formula. [Rytech]
short index = sd->equip_index[EQI_HAND_L]; short index = sd->equip_index[EQI_HAND_L];
if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR) { if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR) {
skillratio += (sd->inventory_data[index]->weight * 7 / 6) / 10; skillratio += (sd->inventory_data[index]->weight * 7 / 6) / 10;
skillratio += sd->inventory.u.items_inventory[index].refine * 25; skillratio += sd->inventory.u.items_inventory[index].refine * 100;
} }
} }
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case IG_OVERSLASH: case IG_OVERSLASH:
skillratio += -100 + 160 * skill_lv; skillratio += -100 + 220 * skill_lv;
skillratio += pc_checkskill(sd, IG_SPEAR_SWORD_M) * 25 * skill_lv; skillratio += pc_checkskill(sd, IG_SPEAR_SWORD_M) * 50 * skill_lv;
skillratio += 7 * sstatus->pow; skillratio += 7 * sstatus->pow;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
if ((i = pc_checkskill_imperial_guard(sd, 3)) > 0) if ((i = pc_checkskill_imperial_guard(sd, 3)) > 0)
@ -5734,7 +5734,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case ABC_ABYSS_DAGGER: case ABC_ABYSS_DAGGER:
skillratio += -100 + 100 + 900 * skill_lv; skillratio += -100 + 350 + 1400 * skill_lv;
skillratio += 5 * sstatus->pow; skillratio += 5 * sstatus->pow;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
@ -5743,20 +5743,22 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case ABC_CHAIN_REACTION_SHOT: case ABC_CHAIN_REACTION_SHOT:
skillratio += -100 + 850 * skill_lv + 15 * sstatus->con; skillratio += -100 + 850 * skill_lv;
skillratio += 15 * sstatus->con;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case ABC_CHAIN_REACTION_SHOT_ATK: case ABC_CHAIN_REACTION_SHOT_ATK:
skillratio += -100 + 600 + 2350 * skill_lv + 15 * sstatus->con; skillratio += -100 + 800 + 2550 * skill_lv;
skillratio += 15 * sstatus->con;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case ABC_DEFT_STAB: case ABC_DEFT_STAB:
skillratio += -100 + 250 + 350 * skill_lv; skillratio += -100 + 700 + 550 * skill_lv;
skillratio += 5 * sstatus->pow; skillratio += 7 * sstatus->pow;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case ABC_FRENZY_SHOT: case ABC_FRENZY_SHOT:
skillratio += -100 + 150 + 600 * skill_lv; skillratio += -100 + 250 + 800 * skill_lv;
skillratio += 15 * sstatus->con; skillratio += 15 * sstatus->con;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
@ -5901,7 +5903,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
skillratio += -100 + 50000; skillratio += -100 + 50000;
break; break;
case HN_SPIRAL_PIERCE_MAX: case HN_SPIRAL_PIERCE_MAX:
skillratio += -100 + 700 + 800 * skill_lv; skillratio += -100 + 1000 + 1500 * skill_lv;
skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv;
skillratio += 5 * sstatus->pow; skillratio += 5 * sstatus->pow;
switch (status_get_size(target)){ switch (status_get_size(target)){
@ -5918,7 +5920,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case HN_SHIELD_CHAIN_RUSH: case HN_SHIELD_CHAIN_RUSH:
skillratio += -100 + 700 + 500 * skill_lv; skillratio += -100 + 850 + 1050 * skill_lv;
skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv;
skillratio += 5 * sstatus->pow; skillratio += 5 * sstatus->pow;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
@ -5932,19 +5934,19 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case HN_DOUBLEBOWLINGBASH: case HN_DOUBLEBOWLINGBASH:
skillratio += -100 + 200 + 300 * skill_lv; skillratio += -100 + 250 + 400 * skill_lv;
skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv;
skillratio += 5 * sstatus->pow; skillratio += 5 * sstatus->pow;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case NW_HASTY_FIRE_IN_THE_HOLE: case NW_HASTY_FIRE_IN_THE_HOLE:
skillratio += -100 + 1500 + 1050 * skill_lv; skillratio += -100 + 1500 + 1500 * skill_lv;
skillratio += pc_checkskill( sd, NW_GRENADE_MASTERY ) * 20; skillratio += pc_checkskill( sd, NW_GRENADE_MASTERY ) * 20;
skillratio += 5 * sstatus->con; skillratio += 5 * sstatus->con;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case NW_BASIC_GRENADE: case NW_BASIC_GRENADE:
skillratio += -100 + 1000 + 950 * skill_lv; skillratio += -100 + 1500 + 2100 * skill_lv;
skillratio += pc_checkskill( sd, NW_GRENADE_MASTERY ) * 50; skillratio += pc_checkskill( sd, NW_GRENADE_MASTERY ) * 50;
skillratio += 5 * sstatus->con; skillratio += 5 * sstatus->con;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
@ -5956,39 +5958,39 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case NW_WILD_FIRE: case NW_WILD_FIRE:
skillratio += -100 + 1000 + 2300 * skill_lv; skillratio += -100 + 1500 + 3000 * skill_lv;
skillratio += 5 * sstatus->con; skillratio += 5 * sstatus->con;
if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT))
skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 500 * skill_lv; skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 500 * skill_lv;
if (sd && sd->weapontype1 == W_SHOTGUN) if (sd && sd->weapontype1 == W_SHOTGUN)
skillratio += 150 * skill_lv; skillratio += 200 * skill_lv;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case NW_MAGAZINE_FOR_ONE: case NW_MAGAZINE_FOR_ONE:
skillratio += -100 + 100 + 450 * ( skill_lv - 1 ); skillratio += -100 + 250 + 500 * skill_lv;
skillratio += 5 * sstatus->con; skillratio += 5 * sstatus->con;
if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT))
skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 100 * skill_lv; skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 100 * skill_lv;
if (sd && sd->weapontype1 == W_REVOLVER) if (sd && sd->weapontype1 == W_REVOLVER)
skillratio += 50 + 100 * (skill_lv-1); skillratio += 50 + 300 * skill_lv;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case NW_SPIRAL_SHOOTING: case NW_SPIRAL_SHOOTING:
skillratio += -100 + 1000 + 1500 * skill_lv; skillratio += -100 + 1200 + 1700 * skill_lv;
skillratio += 5 * sstatus->con; skillratio += 5 * sstatus->con;
if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT))
skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 150 * skill_lv; skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 150 * skill_lv;
if (sd && sd->weapontype1 == W_RIFLE) if (sd && sd->weapontype1 == W_RIFLE)
skillratio += 200 + 200 * skill_lv; skillratio += 200 + 1100 * skill_lv;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case NW_ONLY_ONE_BULLET: case NW_ONLY_ONE_BULLET:
skillratio += -100 + 800 + 1350 * skill_lv; skillratio += -100 + 1200 + 3000 * skill_lv;
skillratio += 5 * sstatus->con; skillratio += 5 * sstatus->con;
if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT))
skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 350 * skill_lv; skillratio += sc->getSCE(SC_INTENSIVE_AIM_COUNT)->val1 * 350 * skill_lv;
if (sd && sd->weapontype1 == W_REVOLVER) { if (sd && sd->weapontype1 == W_REVOLVER) {
skillratio += 150 * skill_lv; skillratio += 400 * skill_lv;
} }
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
@ -7715,7 +7717,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
if ((skill_id == MG_FIREBOLT && sc->getSCE(SC_FLAMETECHNIC_OPTION)) || if ((skill_id == MG_FIREBOLT && sc->getSCE(SC_FLAMETECHNIC_OPTION)) ||
(skill_id == MG_COLDBOLT && sc->getSCE(SC_COLD_FORCE_OPTION)) || (skill_id == MG_COLDBOLT && sc->getSCE(SC_COLD_FORCE_OPTION)) ||
(skill_id == MG_LIGHTNINGBOLT && sc->getSCE(SC_GRACE_BREEZE_OPTION))) (skill_id == MG_LIGHTNINGBOLT && sc->getSCE(SC_GRACE_BREEZE_OPTION)))
skillratio *= 2; skillratio *= 5;
if (sc->getSCE(SC_SPELLFIST) && mflag & BF_SHORT) { if (sc->getSCE(SC_SPELLFIST) && mflag & BF_SHORT) {
skillratio += (sc->getSCE(SC_SPELLFIST)->val3 * 100) + (sc->getSCE(SC_SPELLFIST)->val1 * 50 - 50) - 100; // val3 = used bolt level, val1 = used spellfist level. [Rytech] skillratio += (sc->getSCE(SC_SPELLFIST)->val3 * 100) + (sc->getSCE(SC_SPELLFIST)->val1 * 50 - 50) - 100; // val3 = used bolt level, val1 = used spellfist level. [Rytech]
@ -7768,7 +7770,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
case WZ_EARTHSPIKE: case WZ_EARTHSPIKE:
skillratio += 100; skillratio += 100;
if (sc && sc->getSCE(SC_EARTH_CARE_OPTION)) if (sc && sc->getSCE(SC_EARTH_CARE_OPTION))
skillratio += skillratio * 80 / 100; skillratio += skillratio * 800 / 100;
break; break;
#endif #endif
case HW_NAPALMVULCAN: case HW_NAPALMVULCAN:
@ -8035,7 +8037,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
skillratio += (sd ? sd->status.job_level : 0); skillratio += (sd ? sd->status.job_level : 0);
if (sc->getSCE(SC_DEEP_POISONING_OPTION)) if (sc->getSCE(SC_DEEP_POISONING_OPTION))
skillratio += skillratio * 50 / 100; skillratio += skillratio * 1500 / 100;
} }
break; break;
case NPC_CLOUD_KILL: case NPC_CLOUD_KILL:
@ -8282,9 +8284,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
break; break;
case IG_CROSS_RAIN: case IG_CROSS_RAIN:
if( sc && sc->getSCE( SC_HOLY_S ) ){ if( sc && sc->getSCE( SC_HOLY_S ) ){
skillratio += -100 + ( 450 + 15 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv; skillratio += -100 + ( 650 + 15 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv;
}else{ }else{
skillratio += -100 + ( 320 + 10 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv; skillratio += -100 + ( 450 + 10 * pc_checkskill( sd, IG_SPEAR_SWORD_M ) ) * skill_lv;
} }
skillratio += 7 * sstatus->spl; skillratio += 7 * sstatus->spl;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
@ -8321,13 +8323,16 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case ABC_ABYSS_STRIKE: case ABC_ABYSS_STRIKE:
skillratio += -100 + 2200 * skill_lv + 10 * sstatus->spl; skillratio += -100 + 2650 * skill_lv;
skillratio += 10 * sstatus->spl;
if (tstatus->race == RC_DEMON || tstatus->race == RC_ANGEL) if (tstatus->race == RC_DEMON || tstatus->race == RC_ANGEL)
skillratio += 150 * skill_lv; skillratio += 200 * skill_lv;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case ABC_ABYSS_SQUARE: case ABC_ABYSS_SQUARE:
skillratio += -100 + ( 570 + 20 * pc_checkskill( sd, ABC_MAGIC_SWORD_M ) ) * skill_lv + 5 * sstatus->spl; skillratio += -100 + 750 * skill_lv;
skillratio += 40 * pc_checkskill( sd, ABC_MAGIC_SWORD_M ) * skill_lv;
skillratio += 5 * sstatus->spl;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case TR_METALIC_FURY: case TR_METALIC_FURY:
@ -8350,52 +8355,60 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
} }
break; break;
case EM_DIAMOND_STORM: case EM_DIAMOND_STORM:
skillratio += -100 + 400 + 1550 * skill_lv + 5 * sstatus->spl; skillratio += -100 + 500 + 2400 * skill_lv;
skillratio += 5 * sstatus->spl;
if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_DILUVIO ) ){ if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_DILUVIO ) ){
skillratio += 5000 + 250 * skill_lv + 5 * sstatus->spl; skillratio += 7300 + 200 * skill_lv;
skillratio += 5 * sstatus->spl;
} }
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case EM_LIGHTNING_LAND: case EM_LIGHTNING_LAND:
skillratio += -100 + 500 + 650 * skill_lv + 5 * sstatus->spl; skillratio += -100 + 700 + 1100 * skill_lv;
skillratio += 5 * sstatus->spl;
if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_PROCELLA ) ){ if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_PROCELLA ) ){
skillratio += 400 * skill_lv; skillratio += 200 * skill_lv;
} }
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case EM_VENOM_SWAMP: case EM_VENOM_SWAMP:
skillratio += -100 + 500 + 650 * skill_lv + 5 * sstatus->spl; skillratio += -100 + 700 + 1100 * skill_lv;
skillratio += 5 * sstatus->spl;
if( sc && sc->getSCE( SC_SUMMON_ELEMENTAL_SERPENS ) ){ if( sc && sc->getSCE( SC_SUMMON_ELEMENTAL_SERPENS ) ){
skillratio += 400 * skill_lv; skillratio += 200 * skill_lv;
} }
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case EM_CONFLAGRATION: case EM_CONFLAGRATION:
skillratio += -100 + 500 + 650 * skill_lv + 5 * sstatus->spl; skillratio += -100 + 700 + 1100 * skill_lv;
skillratio += 5 * sstatus->spl;
if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_ARDOR ) ){ if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_ARDOR ) ){
skillratio += 400 * skill_lv; skillratio += 200 * skill_lv;
} }
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case EM_TERRA_DRIVE: case EM_TERRA_DRIVE:
skillratio += -100 + 400 + 1550 * skill_lv + 5 * sstatus->spl; skillratio += -100 + 500 + 2400 * skill_lv;
skillratio += 5 * sstatus->spl;
if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_TERREMOTUS ) ){ if( sc != nullptr && sc->getSCE( SC_SUMMON_ELEMENTAL_TERREMOTUS ) ){
skillratio += 5000 + 250 * skill_lv + 5 * sstatus->spl; skillratio += 7300 + 200 * skill_lv;
skillratio += 5 * sstatus->spl;
} }
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case ABC_FROM_THE_ABYSS_ATK: case ABC_FROM_THE_ABYSS_ATK:
skillratio += -100 + 100 + 500 * skill_lv + 5 * sstatus->spl; skillratio += -100 + 150 + 650 * skill_lv;
skillratio += 5 * sstatus->spl;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case EM_ELEMENTAL_BUSTER_FIRE: case EM_ELEMENTAL_BUSTER_FIRE:
@ -8403,7 +8416,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
case EM_ELEMENTAL_BUSTER_WIND: case EM_ELEMENTAL_BUSTER_WIND:
case EM_ELEMENTAL_BUSTER_GROUND: case EM_ELEMENTAL_BUSTER_GROUND:
case EM_ELEMENTAL_BUSTER_POISON: case EM_ELEMENTAL_BUSTER_POISON:
skillratio += -100 + 500 + 2200 * skill_lv + 10 * sstatus->spl; skillratio += -100 + 550 + 2650 * skill_lv;
skillratio += 10 * sstatus->spl;
if (tstatus->race == RC_FORMLESS || tstatus->race == RC_DRAGON) if (tstatus->race == RC_FORMLESS || tstatus->race == RC_DRAGON)
skillratio += 150 * skill_lv; skillratio += 150 * skill_lv;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
@ -8449,7 +8463,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
break; break;
case HN_HELLS_DRIVE: case HN_HELLS_DRIVE:
skillratio += -100 + 1500 + 700 * skill_lv; skillratio += -100 + 1700 + 900 * skill_lv;
skillratio += pc_checkskill(sd, HN_SELFSTUDY_SOCERY) * 4 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_SOCERY) * 4 * skill_lv;
skillratio += 5 * sstatus->spl; skillratio += 5 * sstatus->spl;
RE_LVL_DMOD(100); RE_LVL_DMOD(100);
@ -9984,7 +9998,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
sd->state.autocast = 0; sd->state.autocast = 0;
} }
if( sc->getSCE(SC_ABYSSFORCEWEAPON) && sd->abyssball > 0 && rnd() % 100 < 15 ){ if( sc->getSCE(SC_ABYSSFORCEWEAPON) && sd->abyssball > 0 && rnd_chance( 25, 100 ) ){
uint16 skill_id = ABC_FROM_THE_ABYSS_ATK; uint16 skill_id = ABC_FROM_THE_ABYSS_ATK;
uint16 skill_lv = sc->getSCE(SC_ABYSSFORCEWEAPON)->val1; uint16 skill_lv = sc->getSCE(SC_ABYSSFORCEWEAPON)->val1;

View File

@ -2190,19 +2190,19 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl, uint
status_change_end(bl, SC_SOUNDBLEND); status_change_end(bl, SC_SOUNDBLEND);
break; break;
case EM_DIAMOND_STORM: case EM_DIAMOND_STORM:
sc_start(src, bl, SC_HANDICAPSTATE_FROSTBITE, 40 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); sc_start(src, bl, SC_HANDICAPSTATE_FROSTBITE, 5, skill_lv, skill_get_time2(skill_id, skill_lv));
break; break;
case EM_LIGHTNING_LAND: case EM_LIGHTNING_LAND:
sc_start(src, bl, SC_HANDICAPSTATE_LIGHTNINGSTRIKE, 10 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); sc_start(src, bl, SC_HANDICAPSTATE_LIGHTNINGSTRIKE, 3, skill_lv, skill_get_time2(skill_id, skill_lv));
break; break;
case EM_VENOM_SWAMP: case EM_VENOM_SWAMP:
sc_start(src, bl, SC_HANDICAPSTATE_DEADLYPOISON, 10 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); sc_start(src, bl, SC_HANDICAPSTATE_DEADLYPOISON, 3, skill_lv, skill_get_time2(skill_id, skill_lv));
break; break;
case EM_CONFLAGRATION: case EM_CONFLAGRATION:
sc_start(src, bl, SC_HANDICAPSTATE_CONFLAGRATION, 10 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); sc_start(src, bl, SC_HANDICAPSTATE_CONFLAGRATION, 3, skill_lv, skill_get_time2(skill_id, skill_lv));
break; break;
case EM_TERRA_DRIVE: case EM_TERRA_DRIVE:
sc_start(src, bl, SC_HANDICAPSTATE_CRYSTALLIZATION, 40 + 10 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); sc_start(src, bl, SC_HANDICAPSTATE_CRYSTALLIZATION, 5, skill_lv, skill_get_time2(skill_id, skill_lv));
break; break;
case MT_RUSH_QUAKE: case MT_RUSH_QUAKE:
sc_start( src, bl, SC_RUSH_QUAKE1, 100, skill_lv, skill_get_time( skill_id, skill_lv ) ); sc_start( src, bl, SC_RUSH_QUAKE1, 100, skill_lv, skill_get_time( skill_id, skill_lv ) );
@ -12979,7 +12979,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
skill_area_temp[2] = 0; skill_area_temp[2] = 0;
if (sd && sd->weapontype1 == W_GATLING) { if (sd && sd->weapontype1 == W_GATLING) {
i += 3; i = 5; // 11x11
clif_skill_nodamage(src, bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_GATLING, skill_lv, 1); clif_skill_nodamage(src, bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_GATLING, skill_lv, 1);
} else } else
clif_skill_nodamage(src, bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_SHOTGUN, skill_lv, 1); clif_skill_nodamage(src, bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_SHOTGUN, skill_lv, 1);

View File

@ -12651,7 +12651,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
tick = INFINITE_TICK; tick = INFINITE_TICK;
break; break;
case SC_GUARDIAN_S: case SC_GUARDIAN_S:
val2 = ( status->max_hp / 2 ) * ( 50 * val1 ) / 100 + 15 * status->sta; // Barrier HP val2 = ( status->max_hp * 30 / 100 ) * ( 25 * val1 ) / 100 + 15 * status->sta; // Barrier HP
break; break;
case SC_REBOUND_S: case SC_REBOUND_S:
val2 = 10 * val1;// Reduced Damage From Devotion val2 = 10 * val1;// Reduced Damage From Devotion