From e3cb3fa01f4637fe6acad34c166dad7c75e27079 Mon Sep 17 00:00:00 2001 From: Joam <35770095+attackjom@users.noreply.github.com> Date: Thu, 21 Jul 2022 16:29:42 +0700 Subject: [PATCH] Renewal Physical damage cleanup (#6997) Corrected bAtkRate item bonus behavior to be the same as official. Correction order of calculation of physical attack Enchant Deadly Poison now grants 25% poison pseudo elemental bonus. also Magnum break also grants 20% fire pseudo elemental damage. Advanced Katar Mastery bonus formula is corrected. Critical attacks now always use max attack value like Maximize Power-buffed attacks. Correction item-script of many items/combo from bAddClass,Class_All to bAtkRate according to official sources. Co-authored-by: Daegaladh <4557962+Daegaladh@users.noreply.github.com> Co-authored-by: Aleos Co-authored-by: Jittapan Pluemsumran --- db/re/item_combos.yml | 417 ++++++++-------- db/re/item_db_equip.yml | 932 +++++++++++++++++------------------ db/re/item_db_etc.yml | 202 ++++---- db/re/item_randomopt_db.yml | 2 +- db/re/skill_db.yml | 2 +- db/re/status.yml | 9 + doc/item_bonus.txt | 2 +- src/map/battle.cpp | 152 ++++-- src/map/battle.hpp | 2 +- src/map/script_constants.hpp | 1 + src/map/skill.cpp | 15 + src/map/status.cpp | 10 + src/map/status.hpp | 2 + 13 files changed, 933 insertions(+), 815 deletions(-) diff --git a/db/re/item_combos.yml b/db/re/item_combos.yml index a9d125eb94..aac4c318bc 100644 --- a/db/re/item_combos.yml +++ b/db/re/item_combos.yml @@ -156,7 +156,7 @@ Body: bonus2 bSkillAtk,"NC_AXEBOOMERANG",15; } if ((.@eq + .@weapon) >= 18) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if ((.@eq + .@weapon) >= 22) { bonus bLongAtkRate,10; } @@ -2069,7 +2069,7 @@ Body: - S_Shadowchaser_Shield Script: | bonus2 bSkillAtk,"SC_TRIANGLESHOT",20; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bMatkRate,2; bonus bLongAtkRate,2; - Combos: @@ -2490,7 +2490,7 @@ Body: bonus2 bIgnoreDefRaceRate,RC_Demon,15; bonus2 bIgnoreDefRaceRate,RC_Undead,15; bonus bMaxHPrate,10+.@r; - bonus2 bAddClass,Class_All,2+.@r; + bonus bAtkRate,2+.@r; - Combos: - Combo: - Valkyrie_Manteau @@ -2849,13 +2849,13 @@ Body: - Gh_md_dex - Hawkeye Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Combos: - Combo: - Contaminated_Raydric_Card - Daydric_Card Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus2 bSubEle,Ele_Neutral,10; - Combos: - Combo: @@ -4054,6 +4054,22 @@ Body: Script: | bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; + - Combos: + - Combo: + - Min_Toad_Card + - Min_Chimera_Card + - Combo: + - Min_Vagabond_Wolf_Card + - Min_Chimera_Card + - Combo: + - Min_Vocal_Card + - Min_Chimera_Card + - Combo: + - Min_Eclipse_Card + - Min_Chimera_Card + Script: | + bonus bAtkRate,10; + bonus bMatkRate,10; - Combos: - Combo: - Old_DetachmentsRing_J @@ -4230,7 +4246,7 @@ Body: - Mantis_Card - Chaotic_Mantis_Card Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bHit,12; - Combos: - Combo: @@ -5177,11 +5193,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; if (.@r >= 27) { bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; } - Combos: @@ -5193,11 +5209,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10; if (.@r >= 27) { bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10; } - Combos: @@ -5209,11 +5225,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"AB_DUPLELIGHT",10; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"AB_DUPLELIGHT",10; } - Combos: @@ -5257,11 +5273,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastRate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GN_CARTCANNON",10; if (.@r >= 27) { bonus bVariableCastRate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GN_CARTCANNON",10; } - Combos: @@ -5273,11 +5289,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GN_CART_TORNADO",10; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GN_CART_TORNADO",10; } - Combos: @@ -5289,11 +5305,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",10; if (.@r >= 27) { bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",10; } - Combos: @@ -5315,11 +5331,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bCritAtkRate,5; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bCritAtkRate,5; } - Combos: @@ -5331,11 +5347,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SC_FATALMENACE",10; if (.@r >= 27) { bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SC_FATALMENACE",10; } - Combos: @@ -5347,11 +5363,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SU_PICKYPECK",10; if (.@r >= 27) { bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SU_PICKYPECK",10; } - Combos: @@ -5363,11 +5379,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RL_R_TRIP",10; if (.@r >= 27) { bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RL_R_TRIP",10; } - Combos: @@ -5379,11 +5395,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RL_FIRE_RAIN",10; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RL_FIRE_RAIN",10; } - Combos: @@ -5395,11 +5411,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SJ_SOLARBURST",10; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SJ_SOLARBURST",10; } - Combos: @@ -5411,11 +5427,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus2 bAddSize,Size_All,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SJ_FULLMOONKICK",10; if (.@r >= 27) { bonus2 bAddSize,Size_All,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SJ_FULLMOONKICK",10; } - Combos: @@ -5427,11 +5443,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"KO_HAPPOKUNAI",10; if (.@r >= 27) { bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"KO_HAPPOKUNAI",10; } - Combos: @@ -5443,11 +5459,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SR_KNUCKLEARROW",10; if (.@r >= 27) { bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SR_KNUCKLEARROW",10; } - Combos: @@ -5459,11 +5475,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SR_TIGERCANNON",10; if (.@r >= 27) { bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SR_TIGERCANNON",10; } - Combos: @@ -5485,11 +5501,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bCritAtkRate,5; if (.@r >= 27) { bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bCritAtkRate,5; } - Combos: @@ -5779,11 +5795,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RA_AIMEDBOLT",15; } - Combos: @@ -5795,11 +5811,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10; if (.@r >= 27) { bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; } - Combos: @@ -5811,11 +5827,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"AB_DUPLELIGHT",10; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"AB_DUPLELIGHT",15; } - Combos: @@ -5827,11 +5843,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SR_KNUCKLEARROW",10; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SR_KNUCKLEARROW",15; } - Combos: @@ -5843,11 +5859,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SR_TIGERCANNON",10; if (.@r >= 27) { bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SR_TIGERCANNON",15; } - Combos: @@ -5891,11 +5907,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastRate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GN_CARTCANNON",10; if (.@r >= 27) { bonus bVariableCastRate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GN_CARTCANNON",15; } - Combos: @@ -5907,11 +5923,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GN_CART_TORNADO",10; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GN_CART_TORNADO",15; } - Combos: @@ -5923,11 +5939,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",10; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15; } - Combos: @@ -5939,11 +5955,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SC_FATALMENACE",10; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SC_FATALMENACE",15; } - Combos: @@ -5955,11 +5971,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SU_PICKYPECK",10; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SU_PICKYPECK",15; } - Combos: @@ -5971,11 +5987,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RL_R_TRIP",10; if (.@r >= 27) { bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RL_R_TRIP",15; } - Combos: @@ -5987,11 +6003,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RL_FIRE_RAIN",10; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RL_FIRE_RAIN",15; } - Combos: @@ -6003,11 +6019,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SJ_SOLARBURST",10; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SJ_SOLARBURST",15; } - Combos: @@ -6019,11 +6035,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus2 bAddSize,Size_All,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SJ_FULLMOONKICK",10; if (.@r >= 27) { bonus2 bAddSize,Size_All,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SJ_FULLMOONKICK",15; } - Combos: @@ -6035,11 +6051,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"KO_HAPPOKUNAI",10; if (.@r >= 27) { bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"KO_HAPPOKUNAI",15; } - Combos: @@ -6329,11 +6345,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RA_AIMEDBOLT",15; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RA_AIMEDBOLT",15; } - Combos: @@ -6345,11 +6361,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; if (.@r >= 27) { bonus bDelayrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; } - Combos: @@ -6361,11 +6377,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"AB_DUPLELIGHT",15; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"AB_DUPLELIGHT",15; } - Combos: @@ -6377,11 +6393,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SR_KNUCKLEARROW",15; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SR_KNUCKLEARROW",15; } - Combos: @@ -6393,11 +6409,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SR_TIGERCANNON",15; if (.@r >= 27) { bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SR_TIGERCANNON",15; } - Combos: @@ -6441,11 +6457,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastRate,-5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GN_CARTCANNON",15; if (.@r >= 27) { bonus bVariableCastRate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GN_CARTCANNON",15; } - Combos: @@ -6457,11 +6473,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GN_CART_TORNADO",15; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GN_CART_TORNADO",15; } - Combos: @@ -6473,11 +6489,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15; } - Combos: @@ -6489,11 +6505,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SC_FATALMENACE",10; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SC_FATALMENACE",15; } - Combos: @@ -6505,11 +6521,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SU_PICKYPECK",15; if (.@r >= 27) { bonus bDelayrate,-10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SU_PICKYPECK",15; } - Combos: @@ -6521,11 +6537,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RL_R_TRIP",15; if (.@r >= 27) { bonus bLongAtkRate,10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RL_R_TRIP",15; } - Combos: @@ -6537,11 +6553,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"RL_FIRE_RAIN",15; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"RL_FIRE_RAIN",15; } - Combos: @@ -6553,11 +6569,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SJ_SOLARBURST",15; if (.@r >= 27) { bonus bAspd,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SJ_SOLARBURST",15; } - Combos: @@ -6569,11 +6585,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus2 bAddSize,Size_All,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"SJ_FULLMOONKICK",15; if (.@r >= 27) { bonus2 bAddSize,Size_All,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SJ_FULLMOONKICK",15; } - Combos: @@ -6585,11 +6601,11 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"KO_HAPPOKUNAI",15; if (.@r >= 27) { bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"KO_HAPPOKUNAI",15; } - Combos: @@ -7981,7 +7997,7 @@ Body: - Overwhelm_Str_Armor - Modify_Str_Boots_ Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; .@r = getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_SHOES); if (.@r >= 21) { bonus2 bIgnoreDefRaceRate,RC_Brute,20; @@ -8099,7 +8115,7 @@ Body: - E_Illusion_Leg_A - E_Illusion_Armor_A Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Combos: - Combo: - Illusion_Armor_A @@ -8282,7 +8298,7 @@ Body: .@val = 20; } if ((.@weapon + .@eq) >= 18) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; } if ((.@weapon + .@eq) >= 22) { .@val += 30; @@ -8297,7 +8313,7 @@ Body: Script: | .@weapon = getequiprefinerycnt(EQI_HAND_R); .@eq = getequiprefinerycnt(EQI_SHOES); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@weapon >= 7 && .@eq >= 7) { bonus bAspd,2; } @@ -9258,7 +9274,7 @@ Body: Script: | .@weapon = getequiprefinerycnt(EQI_HAND_R); .@eq = getequiprefinerycnt(EQI_HEAD_TOP); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@weapon >= 7 && .@eq >= 7) { bonus bAspd,2; } @@ -9277,7 +9293,7 @@ Body: .@eq = getequiprefinerycnt(EQI_HEAD_TOP); .@weapon = getequiprefinerycnt(EQI_HAND_R); if (.@eq >= 7 && .@weapon >= 7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } if ((.@eq + .@weapon) >= 18) { bonus2 bSubSize,Size_Small,20; @@ -10054,12 +10070,12 @@ Body: - Lava_Leather_Boots - Lava_Leather_Armor Script: | - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; .@a = getequiprefinerycnt(EQI_GARMENT); .@b = getequiprefinerycnt(EQI_SHOES); .@c = getequiprefinerycnt(EQI_ARMOR); if (.@a >= 7 && .@b >= 7 && .@c >= 7) - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@a+.@b+.@c >= 27) bonus bDelayrate,-20; - Combos: @@ -10068,12 +10084,12 @@ Body: - Lava_Leather_Shoes - Lava_Leather_Suit Script: | - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; .@a = getequiprefinerycnt(EQI_GARMENT); .@b = getequiprefinerycnt(EQI_SHOES); .@c = getequiprefinerycnt(EQI_ARMOR); if (.@a >= 7 && .@b >= 7 && .@c >= 7) - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@a+.@b+.@c >= 27) bonus bCritAtkRate,20; - Combos: @@ -10231,10 +10247,10 @@ Body: bonus bMaxSPRate,5; .@r = getequiprefinerycnt(EQI_SHOES); if (.@r >= 7) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; } if (.@r >= 9) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; } if (.@r >= 12) { bonus bDelayrate,-5; @@ -10584,7 +10600,7 @@ Body: .@val = 20; } if ((.@eq + .@weapon) >= 18) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if ((.@eq + .@weapon) >= 22) { .@val += 20; } @@ -10694,7 +10710,7 @@ Body: - Ancient_Hero_Boots - Meteor_Striker Script: | - autobonus "{ bonus bStr,20; bonus2 bAddClass,Class_All,15; }",30,7000; + autobonus "{ bonus bStr,20; bonus bAtkRate,15; }",30,7000; - Combos: - Combo: - Ancient_Hero_Boots @@ -10730,7 +10746,7 @@ Body: - Ancient_Hero_Boots - MeawFoxtail Script: | - autobonus "{ bonus bLuk,20; bonus bMatkRate,15; bonus2 bAddClass,Class_All,15; }",20,7000,BF_MAGIC|BF_WEAPON; /* unknown rate */ + autobonus "{ bonus bLuk,20; bonus bMatkRate,15; bonus bAtkRate,15; }",20,7000,BF_MAGIC|BF_WEAPON; /* unknown rate */ - Combos: - Combo: - Ancient_Hero_Boots @@ -10764,7 +10780,7 @@ Body: - Sharp_Wind_Sword - Fog_Dew_Sword Script: | - autobonus "{ bonus bStr,20; bonus2 bAddClass,Class_All,10; }",20,7000,BF_WEAPON; /* unknown rate */ + autobonus "{ bonus bStr,20; bonus bAtkRate,10; }",20,7000,BF_WEAPON; /* unknown rate */ - Combos: - Combo: - Ancient_Hero_Boots @@ -10822,7 +10838,7 @@ Body: - Illusion_Boots - Illusion_Butcher Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; .@eq = getequiprefinerycnt(EQI_SHOES); .@weapon = getequiprefinerycnt(EQI_HAND_R); if (.@eq >= 7 && .@weapon >= 7) { @@ -10852,7 +10868,7 @@ Body: - S_Physical_Pendant Script: | if (getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; } - Combos: - Combo: @@ -11287,7 +11303,7 @@ Body: - S_Infinity_Earring - S_Infinity_Pendant Script: | - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 15) bonus bNoSizeFix; - Combos: @@ -11833,7 +11849,7 @@ Body: if ((getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R)) >= 10) { .@val += 2; } - bonus2 bAddClass,Class_All,.@val; + bonus bAtkRate,.@val; bonus bMaxHPrate,.@val; - Combos: - Combo: @@ -12158,10 +12174,10 @@ Body: .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bBaseAtk,.@r*2; if (.@r >= 25) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } else if (.@r >= 23) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; } - Combos: - Combo: @@ -12571,7 +12587,7 @@ Body: - LivingDead_Card - Vampire's_Servant Script: | - bonus2 bAddClass,Class_All,(getrefine()/3); + bonus bAtkRate,(getrefine()/3); - Combos: - Combo: - Ill_Dracula_Card @@ -12673,7 +12689,7 @@ Body: - Cowraiders2_Card Script: | bonus bStr,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Combos: - Combo: - Cowraiders1_Card @@ -13085,7 +13101,7 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_HAND_L); bonus bBaseAtk,10*(.@r/3); - bonus2 bAddClass,Class_All,2*(.@r/5); + bonus bAtkRate,2*(.@r/5); if (.@r >= 14) { .@val = 25; if (.@r >= 16) { @@ -13113,7 +13129,7 @@ Body: bonus2 bSkillAtk,"GC_COUNTERSLASH",20; } if (.@a+.@b >= 18) - bonus2 bAddClass,Class_All,12; + bonus bAtkRate,12; if (.@a+.@b >= 20) .@val = 20; bonus2 bSkillAtk,"ASC_BREAKER",40+.@val; bonus2 bSkillAtk,"ASC_METEORASSAULT",40+.@val; @@ -13520,7 +13536,7 @@ Body: - King_Schmidt_Manteau Script: | bonus bCritAtkRate,7; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Combos: - Combo: - Schmidt_Insignia_Rigid_Body @@ -13683,7 +13699,7 @@ Body: - Ancient_Hero_Boots - Ray_Knuckle Script: | - autobonus "{ bonus bStr,20; bonus2 bAddClass,Class_All,15; }",30,7000,BF_WEAPON; + autobonus "{ bonus bStr,20; bonus bAtkRate,15; }",30,7000,BF_WEAPON; - Combos: - Combo: - Great_Hero_Boots @@ -13708,7 +13724,7 @@ Body: - Up_Thousand_Sun Script: | bonus bStr,10; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Combos: - Combo: - Great_Hero_Boots @@ -13812,21 +13828,21 @@ Body: - Up_Crimson_Rose Script: | bonus bDex,10; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Combos: - Combo: - Great_Hero_Boots - Up_Ray_Knuckle Script: | bonus bVit,10; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Combos: - Combo: - Great_Hero_Boots - Up_MeawFoxtail Script: | bonus bLuk,10; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bMatkRate,7; - Combos: - Combo: @@ -13842,7 +13858,7 @@ Body: Script: | .@r = getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_HAND_L); bonus bBaseAtk,15*(.@r/3); - bonus2 bAddClass,Class_All,3*(.@r/5); + bonus bAtkRate,3*(.@r/5); if (.@r >= 14) { bonus2 bSkillAtk,"KO_JYUMONJIKIRI",30; bonus2 bSkillCooldown,"KO_JYUMONJIKIRI",-2000; @@ -13889,11 +13905,11 @@ Body: - Dragon_Boots Script: | .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMdef,8; bonus bDef,50; bonus bBaseAtk,15*(readparam(bStr)/15); - autobonus2 "{ bonus2 bAddClass,Class_All,10; if (readparam(bStr) >= 120) { bonus2 bAddClass,Class_All,15; } }",1+(readparam(bStr) >= 120),10000,BF_MAGIC|BF_WEAPON; + autobonus2 "{ bonus bAtkRate,10; if (readparam(bStr) >= 120) { bonus bAtkRate,15; } }",1+(readparam(bStr) >= 120),10000,BF_MAGIC|BF_WEAPON; if (.@sum >= 33) { bonus bAspdRate,20; bonus bDelayrate,-25; @@ -14075,7 +14091,7 @@ Body: - King_Schmidt_Manteau Script: | .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); - autobonus "{ bonus2 bAddClass,Class_All,10; }",1,10000,BF_WEAPON; + autobonus "{ bonus bAtkRate,10; }",1,10000,BF_WEAPON; bonus bBaseAtk,30; if (.@sum >= 40) { bonus2 bAddEle,Ele_Undead,20; @@ -14116,7 +14132,7 @@ Body: - King_Schmidt_Manteau Script: | .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); - autobonus "{ bonus bMatkRate,7; bonus2 bAddClass,Class_All,7; }",1,10000,BF_MAGIC; + autobonus "{ bonus bMatkRate,7; bonus bAtkRate,7; }",1,10000,BF_MAGIC; if (.@sum >= 30) { bonus2 bMagicAddEle,Ele_Undead,20; bonus2 bAddEle,Ele_Undead,20; @@ -14145,7 +14161,7 @@ Body: bonus2 bAddSize,Size_Medium,5; bonus2 bMagicAddSize,Size_Medium,5; bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Combos: - Combo: - ILL_Obeaune_Card @@ -14201,7 +14217,7 @@ Body: Script: | bonus2 bAddSize,Size_Small,20; bonus bCritical,5; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bStr,5; @@ -14250,7 +14266,7 @@ Body: .@weapon = getequiprefinerycnt(EQI_HAND_R); bonus bBaseAtk,30; if (.@eq >= 7 && .@weapon >= 7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } if ((.@eq + .@weapon) >= 18) { bonus2 bSkillAtk,"SR_SKYNETBLOW",20; @@ -14264,7 +14280,7 @@ Body: - KatarOfCold_Icicle_IL Script: | .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_ARMOR); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@sum >= 7) { bonus bCritical,5; } @@ -14281,7 +14297,7 @@ Body: - Morrigane's_Pendant_IL Script: | bonus bAspdRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Combos: - Combo: - Electronic_Guitar_IL @@ -14342,7 +14358,7 @@ Body: - KatarOfCold_Icicle_IL - Ring_IL Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (getequiprefinerycnt(EQI_HAND_R) >= 9) { bonus bCritAtkRate,20; } @@ -14355,7 +14371,7 @@ Body: - Water_Sprits_Armor_IL Script: | .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_ARMOR); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@sum >= 7) { bonus bDelayrate,-5; } @@ -14425,7 +14441,7 @@ Body: Script: | .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT); bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMdef,8; bonus bDef,50; bonus bAspdRate,3*(readparam(bDex)/15); @@ -14460,12 +14476,12 @@ Body: - Dragon_Boots Script: | .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMdef,8; bonus bDef,50; bonus bCritAtkRate,3*(readparam(bLuk)/15); bonus bCritical,2*(readparam(bLuk)/15); - autobonus2 "{ bonus bCritAtkRate,10; bonus2 bAddClass,Class_All,7; if (readparam(bLuk) >= 120) { bonus bCritAtkRate,10; bonus2 bAddClass,Class_All,7; } }",1+(readparam(bLuk) >= 120),10000,BF_MAGIC|BF_WEAPON; + autobonus2 "{ bonus bCritAtkRate,10; bonus bAtkRate,7; if (readparam(bLuk) >= 120) { bonus bCritAtkRate,10; bonus bAtkRate,7; } }",1+(readparam(bLuk) >= 120),10000,BF_MAGIC|BF_WEAPON; if (.@sum >= 33) { bonus bAspdRate,20; bonus bDelayrate,-25; @@ -14483,7 +14499,7 @@ Body: bonus2 bSubRace,RC_Angel,15; bonus2 bSubRace,RC_Demon,15; if (.@sum >= 27) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bDelayrate,-20; bonus bFixedCastrate,-20; } @@ -14518,7 +14534,7 @@ Body: bonus2 bSubRace,RC_Demon,20; if (.@sum >= 27) { bonus bMatkRate,4; - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; bonus bDelayrate,-20; bonus bFixedCastrate,-20; } @@ -14536,7 +14552,7 @@ Body: bonus2 bSubRace,RC_Demon,15; if (.@sum >= 27) { bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bDelayrate,-20; bonus bFixedCastrate,-20; } @@ -14568,7 +14584,7 @@ Body: bonus bDef,30; bonus bLuk,8; if (.@sum >= 27) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bDelayrate,-20; bonus bFixedCastrate,-20; } @@ -14644,14 +14660,14 @@ Body: - Reginleif_Card - Randgris_Card Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bMaxHPrate,5; - Combos: - Combo: - Ingrid_Card - Randgris_Card Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMaxHPrate,10; - Combos: - Combo: @@ -14692,7 +14708,7 @@ Body: - CassockA_STR Script: | bonus2 bAddRace,RC_All,12; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Combos: - Combo: - Cassock_Agi @@ -15047,7 +15063,7 @@ Body: - GuillotineCross_Robe2 - GuillotineCross_Bottom2 Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bCritAtkRate,15; - Combos: - Combo: @@ -15154,7 +15170,7 @@ Body: - Attacker_Booster_Manteau_ - Attacker_Booster_Ring Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bDelayrate,-15; bonus2 bSkillAtk,"SC_FATALMENACE",min(BaseLevel,180)/15; autobonus3 "{ bonus2 bSkillAtk,\"SC_FATALMENACE\",35; }",1000,60000,"ST_PRESERVE"; @@ -15468,7 +15484,7 @@ Body: - Ranger_Booster_Manteau_ - Range_Booster_Brooch Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bDelayrate,-15; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",min(BaseLevel,180)/15; autobonus3 "{ bonus2 bSkillAtk,\"GC_ROLLINGCUTTER\",20; }",1000,60000,"ASC_EDP"; @@ -15570,14 +15586,17 @@ Body: bonus2 bSkillCooldown,"SU_CN_METEOR",-1000; bonus2 bSkillAtk,"SU_CN_METEOR",4*(.@r/2); - Combos: - - Combo: - - Auto_Leg_A - - Auto_Armor_A - Combo: - Gray_W_Boots - Gray_W_Suits Script: | bonus2 bAddClass,Class_All,7; + - Combos: + - Combo: + - Auto_Leg_A + - Auto_Armor_A + Script: | + bonus bAtkRate,7; - Combos: - Combo: - Auto_Leg_A @@ -16632,7 +16651,7 @@ Body: - S_FullPene_Pendant Script: | .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@sum >= 18) { bonus bIgnoreDefRace,RC_All; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-100; @@ -16644,7 +16663,7 @@ Body: - S_FullPene_Shoes Script: | .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@sum >= 18) { bonus bIgnoreDefRace,RC_All; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-100; @@ -16735,7 +16754,7 @@ Body: - Blue_Rear_Ribbon - Bag_Of_Antonio_S Script: | - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; if (getequiprefinerycnt(EQI_GARMENT) >= 12) { bonus bAllStats,1; } @@ -17008,7 +17027,7 @@ Body: Script: | bonus bLongAtkRate,10; bonus bAspdRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (getequiprefinerycnt(EQI_GARMENT) >= 10) { bonus bCritAtkRate,15; bonus bHit,15; @@ -17181,7 +17200,7 @@ Body: - Time_Overload_Robe Script: | bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Combos: - Combo: - Regia_Hunting_Boots @@ -17708,7 +17727,7 @@ Body: - Temporal_M_Str Script: | .@sum = getequiprefinerycnt(EQI_HEAD_MID)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@sum >= 14) { bonus bBaseAtk,80; } @@ -17732,7 +17751,7 @@ Body: } if (.@sum >= 18) { bonus2 bAddSize,Size_All,7; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } if (.@sum >= 22) { bonus bLongAtkRate,10; @@ -17785,7 +17804,7 @@ Body: bonus bBaseAtk,80; } if (.@sum >= 18) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bMaxSPrate,7; } if (.@sum >= 22) { @@ -18112,7 +18131,7 @@ Body: } if (.@r >= 9) { bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } if (.@r >= 11) { bonus bFixedCast,-500; @@ -18130,7 +18149,7 @@ Body: } if (.@r >= 9) { bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r >= 11) { bonus bFixedCast,-500; } @@ -18148,7 +18167,7 @@ Body: } if (.@r >= 9) { bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r >= 11) { bonus bFixedCast,-500; } @@ -18307,7 +18326,7 @@ Body: - Beginner's_Ring Script: | bonus bBaseAtk,3*(min(BaseLevel,150)/10); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bAspd,1; - Combos: - Combo: @@ -18340,7 +18359,7 @@ Body: bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus bVariableCastrate,-10; bonus bMatkRate,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Combos: - Combo: - Rebeginer_N2_Mace @@ -18364,7 +18383,7 @@ Body: Script: | bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; - Combos: - Combo: - Rebeginer_WM_Bow @@ -18665,7 +18684,7 @@ Body: - S_Mammoth_Weapon - S_Mammoth_Shield Script: | - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; if (getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 45) { bonus bNoKnockback; } @@ -18703,7 +18722,7 @@ Body: - S_M_Mammoth_Shoes Script: | .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@sum >= 18) { bonus bNoKnockback; if (.@sum >= 20) { @@ -18716,7 +18735,7 @@ Body: - S_M_Mammoth_Pendant Script: | .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@sum >= 18) { bonus bNoKnockback; if (.@sum >= 20) { @@ -19354,7 +19373,7 @@ Body: bonus2 bAddRace,RC_All,20; if (.@sum >= 22) { bonus bVariableCastrate,-10; - bonus2 bAddClass,Class_All,15; + bonus bAtkRate,15; } } } @@ -19364,7 +19383,7 @@ Body: - Sprint_Shoes_IL Script: | .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_SHOES); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (getequiprefinerycnt(EQI_ARMOR) >= 7 && getequiprefinerycnt(EQI_SHOES) >= 7) { bonus bBaseAtk,70; if (.@sum >= 18) { @@ -19942,13 +19961,13 @@ Body: Script: | bonus bFixedCast,-200; if (BaseLevel >= 30) { - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; bonus bAspdRate,2; if (BaseLevel >= 45) { - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; bonus bAspdRate,3; if (BaseLevel >= 85) { - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; bonus bAspdRate,5; } } @@ -19979,7 +19998,7 @@ Body: bonus bFixedCast,-200; bonus bAspdRate,10; if (BaseLevel >= 105) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (BaseLevel >= 110) { bonus bShortAtkRate,5; bonus bLongAtkRate,5; @@ -20791,7 +20810,7 @@ Body: - HeroBoots_AGI Script: | bonus bCritical,15; - bonus2 bAddClass,Class_All,15; + bonus bAtkRate,15; - Combos: - Combo: - WanderMins_Top3 @@ -21116,7 +21135,7 @@ Body: - S_AutoSpell_Earring Script: | .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; if (.@sum >= 27) { bonus3 bAutoSpell,"AS_SONICBLOW",10,80; } @@ -21142,7 +21161,7 @@ Body: - S_M_AutoSpell_Pendant Script: | .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@sum >= 20) { bonus5 bAutoSpell,"NC_POWERSWING",max(getskilllv("NC_POWERSWING"),8),80,BF_SHORT|BF_NORMAL,1; } @@ -21345,7 +21364,7 @@ Body: - Thanos_Bow_AD # 700029 Script: | .@r_weapon = getequiprefinerycnt(EQI_HAND_R); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"SN_SHARPSHOOTING",10*(.@r_weapon/2); - Combos: - Combo: @@ -21877,7 +21896,7 @@ Body: bonus bBaseAtk,50; if (getequiprefinerycnt(EQI_ARMOR) >= 11) { bonus bAspdRate,10; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } - Combos: - Combo: @@ -21885,7 +21904,7 @@ Body: - Victory_Wing_Ear Script: | bonus bDelayrate,-15; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Combos: - Combo: - aegis_480124 @@ -21896,14 +21915,14 @@ Body: Script: | bonus bLongAtkRate,5; bonus bShortAtkRate,5; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Combos: - Combo: - aegis_480124 - aegis_410079 Script: | bonus bVariableCastrate,-15; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Combos: - Combo: - aegis_480125 @@ -21983,7 +22002,7 @@ Body: - Signet_Of_Pow_Star - Star_Armor_Of_Pow Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bPAtk,2; - Combos: - Combo: @@ -22501,7 +22520,7 @@ Body: - Hero_Boots_LT # 470094 Script: | bonus bPAtk,2; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Combos: - Combo: - Solid_Dagger @@ -23572,14 +23591,14 @@ Body: } } bonus bBaseAtk,15*(.@sum/3); - bonus2 bAddClass,Class_All,4*(.@sum/5); + bonus bAtkRate,4*(.@sum/5); - Combos: - Combo: - MeawFoxtail_LT # 550067 - Hero_Boots_LT # 470094 Script: | bonus bSmatk,2; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bMatkRate,10; - Combos: - Combo: @@ -24021,7 +24040,7 @@ Body: - aegis_300362 # 300362 Unfrost Flower Card - aegis_300360 # 300360 Shining Seaweed Card Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Combos: - Combo: - aegis_300367 # 300367 Lesser Rgan Card @@ -24055,7 +24074,7 @@ Body: - aegis_300381 # 300381 Hearthunter AT Card - aegis_300363 # 300363 Limacina Card Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Combos: - Combo: - Snowflower_Armor # 450206 @@ -24085,7 +24104,7 @@ Body: - Snowflower_Boots # 470115 - Snowflower_Armor # 450206 Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Combos: - Combo: - Snowflower_Boots # 470115 @@ -24733,7 +24752,7 @@ Body: - Royal_Guardian_Ring # 28483 - Lich_Lord_Card # 27025 Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMatkRate,5; - Combos: - Combo: diff --git a/db/re/item_db_equip.yml b/db/re/item_db_equip.yml index 50963853b7..c29ee9ae34 100644 --- a/db/re/item_db_equip.yml +++ b/db/re/item_db_equip.yml @@ -6096,7 +6096,7 @@ Body: Script: | .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_all,5; + bonus bAtkRate,5; bonus bBaseAtk,4*.@r; if (.@r>=11) .@val = 35; @@ -6162,7 +6162,7 @@ Body: Refineable: true Script: | bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; .@r = getrefine(); bonus bLongAtkRate,.@r; if (.@r >= 9) { @@ -17675,7 +17675,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r >= 7) { bonus bAspdRate,7; if (.@r >= 9) { @@ -17801,7 +17801,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"SR_KNUCKLEARROW",10; if (.@r>=7) { bonus bAspdRate,15; @@ -32280,7 +32280,7 @@ Body: NoAuction: true Script: | bonus2 bAddClass,Class_All,5; - bonus2 bMagicAddClass,Class_All,5; + bonus bMatkRate,5; - Id: 2645 AegisName: Moonlight_Ring Name: Moonlight Ring @@ -58976,8 +58976,8 @@ Body: } if (.@r>=6) { .@rate = 5*(.@i+1); - bonus2 bAddClass,Class_All,.@rate; - bonus2 bMagicAddClass,Class_All,.@rate; + bonus2 bAddRace,RC_All,.@rate; + bonus2 bMagicAddRace,RC_All,.@rate; } - Id: 13093 AegisName: Thanos_Dagger @@ -59061,7 +59061,7 @@ Body: if (.@r>=12) { .@dmg += 7; } - bonus2 bAddClass,Class_All,.@dmg; + bonus bAtkRate,.@dmg; } - Id: 13096 AegisName: Half_BF_Dagger2 @@ -62132,7 +62132,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,15; + bonus bAtkRate,15; bonus bUnbreakableWeapon; bonus2 bSkillAtk,"KO_HUUMARANKA",15; if (.@r>=7) { @@ -68155,7 +68155,7 @@ Body: .@val += .@r; } if (.@val) { - bonus2 bAddClass,Class_All,.@val; + bonus bAtkRate,.@val; } - Id: 15215 AegisName: Tatenasi_Armor_TW @@ -68265,7 +68265,7 @@ Body: bonus bAllStats,1; bonus bMaxHP,400; bonus bMaxSP,100; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bMagicAddClass,Class_All,2; - Id: 15278 AegisName: Overwhelm_Str_Armor @@ -68283,7 +68283,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,50; if (.@r > 2) - bonus2 bAddClass,Class_All,.@r/3*2; + bonus bAtkRate,.@r/3*2; if (.@r > 6) { bonus2 bIgnoreDefRaceRate,RC_Brute,30; bonus2 bIgnoreDefRaceRate,RC_Demon,30; @@ -69068,7 +69068,7 @@ Body: bonus bMaxHPrate,15; bonus bMaxSPrate,10; bonus bStr,12; - bonus2 bAddClass,Class_All,2*(.@r/2); + bonus bAtkRate,2*(.@r/2); bonus2 bAddRace,RC_Dragon,7*(.@r/3); if (.@r>=11) { bonus bFixedCast,-200; @@ -69222,7 +69222,7 @@ Body: bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspdRate,10; - bonus2 bAddClass,Class_All,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); bonus bStr,5*(.@r/3); bonus2 bAddRace,RC_Angel,8*(.@r/4); bonus2 bAddRace,RC_Demon,8*(.@r/4); @@ -69290,7 +69290,7 @@ Body: bonus bAspdRate,10; bonus bVariableCastrate,-10; bonus bMatkRate,(.@r/2); - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); bonus bDex,5*(.@r/3); bonus2 bAddRace,RC_Angel,6*(.@r/4); bonus2 bMagicAddRace,RC_Angel,6*(.@r/4); @@ -70468,11 +70468,11 @@ Body: .@r = getrefine(); bonus bBaseAtk,(.@r/3)*30; if (.@r>=9) { - bonus2 bAddClass,Class_All,5; + bonus2 bAddRace,RC_All,5; bonus3 bAutoSpell,"BS_WEAPONPERFECT",1,10; } if (.@r>=6) { - bonus2 bAddClass,Class_All,5; + bonus2 bAddRace,RC_All,5; } - Id: 16027 AegisName: Hammer_Of_Evil_Slayer @@ -70505,7 +70505,7 @@ Body: bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); - bonus2 bAddClass,Class_All,(.@r>=12?12:(.@r>=9?5:0)); + bonus bAtkRate,(.@r>=12?12:(.@r>=9?5:0)); - Id: 16028 AegisName: Thanos_Hammer Name: Thanos Hammer @@ -71442,7 +71442,7 @@ Body: Script: | .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r >= 7) { bonus bVariableCastrate,-7; if (.@r >= 9) { @@ -71539,7 +71539,7 @@ Body: .@r = getrefine(); bonus bUnbreakableWeapon; bonus bLongAtkRate,10; - bonus2 bAddClass,Class_All,.@r; + bonus bAtkRate,.@r; if (.@r>=9) bonus2 bSkillAtk,"GN_CARTCANNON",25; if (.@r>=11) @@ -71632,7 +71632,7 @@ Body: bonus2 bSkillAtk,"MO_INVESTIGATE",50; } if (.@r>=11) - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 16099 AegisName: Ein_1HHAMMER Name: Rubber Hammer @@ -72209,7 +72209,7 @@ Body: bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); - bonus2 bAddClass,Class_All,(.@r>=12?12:(.@r>=9?5:0)); + bonus bAtkRate,(.@r>=12?12:(.@r>=9?5:0)); - Id: 18121 AegisName: Sinister_Bow Name: Bow of Vicious Mind @@ -73054,7 +73054,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r >= 7) { bonus bLongAtkRate,7; if (.@r >= 9) { @@ -73087,7 +73087,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r >= 7) { bonus bLongAtkRate,7; if (.@r >= 9) { @@ -73370,7 +73370,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; if (.@r>=7) { bonus bVariableCastrate,-10; @@ -84360,7 +84360,7 @@ Body: Refineable: true View: 14 Script: | - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; bonus bBaseAtk,(2*getrefine()); - Id: 19238 AegisName: PoringTownOnion @@ -84577,7 +84577,7 @@ Body: } if (.@r>8) { bonus bAspd,1; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } if (.@r>10) { bonus bCritAtkRate,15; @@ -84958,7 +84958,7 @@ Body: bonus bLongAtkRate,7; } if (.@r>=9) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bAspd,1; } if (.@r>=11) { @@ -85019,7 +85019,7 @@ Body: bonus bBaseAtk,30; } if (.@r>=9) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bAspd,1; } if (.@r>=11) { @@ -85067,7 +85067,7 @@ Body: } if (.@r>=11) { bonus bMatkRate,3; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } if (.@r>=10) { bonus bFixedCast,-100*(min((.@r-10),15)/1); @@ -85425,7 +85425,7 @@ Body: } if (.@r>=11) { bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus2 bAddRace,RC_Formless,min(.@r-10,15); bonus2 bMagicAddRace,RC_Formless,min(.@r-10,15); } @@ -86256,7 +86256,7 @@ Body: bonus2 bSkillAtk,"LG_CANNONSPEAR",15*(.@r/3); bonus bLongAtkRate,5*(.@r/4); if (.@r>=11) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } - Id: 19476 AegisName: S_Circlet_Of_Time_NC @@ -86356,7 +86356,7 @@ Body: bonus bAspdRate,2*(.@r/3); bonus2 bSkillAtk,"GC_COUNTERSLASH",20*(.@r/3); bonus2 bSkillAtk,"GC_ROLLINGCUTTER",20*(.@r/3); - bonus2 bAddClass,Class_All,2*(.@r/4); + bonus bAtkRate,2*(.@r/4); if (.@r>=11) { bonus bDelayrate,-5; } @@ -86390,7 +86390,7 @@ Body: bonus bAspdRate,2*(.@r/3); bonus2 bSkillAtk,"SC_FATALMENACE",30*(.@r/3); bonus2 bSkillAtk,"SC_FEINTBOMB",30*(.@r/3); - bonus2 bAddClass,Class_All,2*(.@r/4); + bonus bAtkRate,2*(.@r/4); if (.@r>=11) { bonus bDelayrate,-5; } @@ -86459,7 +86459,7 @@ Body: bonus2 bSkillAtk,"SR_TIGERCANNON",10*(.@r/3); bonus bLongAtkRate,5*(.@r/4); if (.@r>=11) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } - Id: 19482 AegisName: S_Circlet_Of_Time_WL @@ -86629,7 +86629,7 @@ Body: bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",30*(.@r/3); bonus2 bAddSize,Size_All,2*(.@r/4); if (.@r>=11) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } - Id: 19487 AegisName: S_Circlet_Of_Time_SP @@ -86757,7 +86757,7 @@ Body: bonus2 bSkillAtk,"KO_JYUMONJIKIRI",20*(.@r/3); bonus2 bAddSize,Size_All,2*(.@r/4); if (.@r>=11) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } - Id: 19491 AegisName: S_Circlet_Of_Time_NV @@ -99356,7 +99356,7 @@ Body: Script: | .@r = getrefine(); if (.@r >= 2) - bonus2 bAddClass,Class_All,.@r/2; + bonus bAtkRate,.@r/2; if (.@r >= 9) bonus bAspdRate,10; if (.@r >= 12) @@ -100167,7 +100167,7 @@ Body: if (.@r>=9) bonus bCritAtkRate,5; if (.@r>=11) - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Id: 20937 AegisName: Lava_Leather_Hood Name: Lava Leather Hood @@ -100324,7 +100324,7 @@ Body: bonus bMaxHP,(300+(100*(.@r/2))); bonus bMaxHPRate,(2*(.@r/3)); if (.@r >= 7) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } if (.@r >= 9) { bonus bVariableCastrate,-10; @@ -100531,7 +100531,7 @@ Body: Script: | .@r = getrefine(); bonus bMatkRate,(.@r/2); - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); if (.@r>=9) { bonus bMatk,30; bonus bBaseAtk,30; @@ -100588,11 +100588,11 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); bonus bBaseAtk,10*(.@r/2); bonus2 bAddSize,Size_All,5*(.@r/4); if (.@r>=7) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } if (.@r>=9) { bonus2 bIgnoreDefRaceRate,RC_Demon,20; @@ -100624,7 +100624,7 @@ Body: bonus bBaseAtk,10*(.@r/2); bonus2 bAddSize,Size_All,5*(.@r/4); if (.@r>=7) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } if (.@r>=9) { bonus2 bIgnoreDefRaceRate,RC_Demon,20; @@ -100656,7 +100656,7 @@ Body: bonus bMaxHP,400*(.@r/2); bonus bMaxHPrate,3*(.@r/4); if (.@r>=7) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } if (.@r>=9) { bonus2 bIgnoreDefRaceRate,RC_Demon,20; @@ -100720,7 +100720,7 @@ Body: bonus bBaseAtk,10*(.@r/2); bonus bCritAtkRate,3*(.@r/4); if (.@r>=7) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } if (.@r>=9) { bonus2 bIgnoreDefRaceRate,RC_Demon,20; @@ -100752,7 +100752,7 @@ Body: bonus bCritical,3*(.@r/2); bonus bAspdRate,5*(.@r/4); if (.@r>=7) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } if (.@r>=9) { bonus2 bIgnoreDefRaceRate,RC_Demon,20; @@ -101888,7 +101888,7 @@ Body: Script: | .@r = getrefine(); bonus bLongAtkRate,.@r; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) { bonus2 bSkillAtk,"LK_SPIRALPIERCE",30; bonus2 bSkillAtk,"RK_SONICWAVE",30; @@ -101940,7 +101940,7 @@ Body: Script: | .@r = getrefine(); bonus bCritical,5; - bonus2 bAddClass,Class_All,15; + bonus bAtkRate,15; if (.@r>=7) { bonus bCritAtkRate,25; bonus bAspdRate,10; @@ -101973,7 +101973,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bBaseAtk,4*.@r; if (.@r>=9) { bonus bCritAtkRate,25; @@ -104354,7 +104354,7 @@ Body: bonus bMdef,10; skill "BS_MAXIMIZE",1; bonus2 bSkillUseSP,"ASC_METEORASSAULT",8; - bonus2 bAddClass,Class_All,4*.@a; + bonus bAtkRate,4*.@a; bonus2 bSkillCooldown,"GC_HALLUCINATIONWALK",-5000*.@b; bonus2 bIgnoreDefRaceRate,RC_All,20*.@c; bonus2 bVariableCastrate,"ASC_METEORASSAULT",-7*(.@a+.@b+.@c); @@ -104460,7 +104460,7 @@ Body: bonus2 bVariableCastrate,"MO_STEELBODY",-.@c*10; bonus2 bFixedCastrate,"CH_SOULCOLLECT",-.@c*10; bonus bAspdRate,2*getskilllv("SR_GENTLETOUCH_CHANGE"); - bonus2 bAddClass,Class_All,4*getskilllv("SR_GENTLETOUCH_QUIET"); + bonus bAtkRate,4*getskilllv("SR_GENTLETOUCH_QUIET"); - Id: 22167 AegisName: Astraea_Shoes Name: Asteria's Boots @@ -104949,7 +104949,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@r>=7) bonus bBaseAtk,25; if (.@r>=9) @@ -105283,7 +105283,7 @@ Body: bonus bMaxHPrate,.@r/3; bonus bMaxSPrate,.@r/3; if (.@r >= 7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMatkRate,5; } if (.@r >= 9) { @@ -109401,7 +109401,7 @@ Body: bonus bBaseAtk,.@r; bonus bMatk,.@r; bonus bAspd,1; - bonus2 bAddClass,Class_All,.@r; + bonus bAtkRate,.@r; bonus bMatkRate,.@r; if (.@r>=7) { bonus bMaxHP,1000; @@ -110026,7 +110026,7 @@ Body: } bonus2 bIgnoreDefClassRate,Class_Normal,(3*(getskilllv("TK_HPTIME")+.@r)); bonus2 bIgnoreMdefClassRate,Class_Normal,(3*(getskilllv("TK_SPTIME")+.@r)); - bonus2 bAddClass,Class_All,.@val; + bonus bAtkRate,.@val; bonus bMatkRate,.@val; - Id: 24316 AegisName: S_DoramPhysical_Shield @@ -110043,7 +110043,7 @@ Body: Script: | .@r = getrefine(); bonus bMaxHP,.@r*10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; autobonus3 "{ bonus bAspd,1; }",1000,50000,"SU_ARCLOUSEDASH"; bonus2 bSkillCooldown,"SU_LUNATICCARROTBEAT",-(.@r*200); if (.@r>=7) @@ -110092,11 +110092,11 @@ Body: bonus bAspdRate,(2*getskilllv("TF_DOUBLE")+.@r); bonus bVariableCastrate,-(2*getskilllv("AC_OWL")+.@r); if (.@r>=7) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bMatkRate,2; } if (.@r>=9) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bMatkRate,3; } - Id: 24319 @@ -110136,7 +110136,7 @@ Body: .@val += 1; } bonus bFlee,5; - bonus2 bAddClass,Class_All,.@val; + bonus bAtkRate,.@val; bonus bMatkRate,.@val; - Id: 24321 AegisName: S_Bearer's_Pendant_II @@ -110202,7 +110202,7 @@ Body: bonus bBaseAtk,.@r; bonus bMatk,.@r; bonus bSPrecovRate,5; - bonus2 bAddClass,Class_All,1 + (.@r >= 7); + bonus bAtkRate,1 + (.@r >= 7); - Id: 24325 AegisName: S_Malicious_Armor_II Name: Malicious Shadow Armor II @@ -110214,7 +110214,7 @@ Body: Script: | .@r = getrefine(); bonus bMaxHP,100+.@r*10; - bonus2 bAddClass,Class_All,1 + (.@r >= 7); + bonus bAtkRate,1 + (.@r >= 7); - Id: 24326 AegisName: S_Sigrun_Armor Name: Sigrun Shadow Armor @@ -111325,9 +111325,9 @@ Body: bonus bMaxHP,.@r*10; bonus bBaseAtk,20; if (.@r >= 9) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } else if (.@r >= 7) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; } - Id: 24396 AegisName: S_Magical_Shoes @@ -112012,7 +112012,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,.@r; bonus bMatk,.@r; - bonus2 bAddClass,Class_All,1+.@r/2; + bonus bAtkRate,1+.@r/2; bonus bMatkRate,1+.@r/2; if (.@r >= 7) { bonus bDef,15; @@ -112745,7 +112745,7 @@ Body: EquipLevelMin: 99 Refineable: true Script: | - bonus2 bAddClass,Class_All,2+(getrefine()/3); + bonus bAtkRate,2+(getrefine()/3); - Id: 24482 AegisName: S_Knucklearrow_Armor Name: Knuckle Shadow Armor @@ -116101,7 +116101,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,10+(.@r/2); if (.@r>=9) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; } - Id: 24672 AegisName: S_Mammoth_Earring @@ -116208,7 +116208,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bLongAtkRate,(.@r/2); bonus bShortAtkRate,(.@r/2); if (.@r>=10) { @@ -116223,7 +116223,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bLongAtkRate,(.@r/2); bonus bShortAtkRate,(.@r/2); if (.@r>=10) { @@ -116238,7 +116238,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bLongAtkRate,(.@r/2); bonus bShortAtkRate,(.@r/2); if (.@r>=10) { @@ -116253,7 +116253,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bLongAtkRate,(.@r/2); bonus bShortAtkRate,(.@r/2); if (.@r>=10) { @@ -116287,7 +116287,7 @@ Body: .@r = getrefine(); bonus bMaxHPrate,3; bonus bMaxSPrate,3; - bonus2 bAddClass,Class_All,(.@r/3); + bonus bAtkRate,(.@r/3); if (.@r>=7) { bonus bVariableCastrate,-3; if (.@r>=10) { @@ -116306,7 +116306,7 @@ Body: .@r = getrefine(); bonus bMaxHPrate,3; bonus bMaxSPrate,3; - bonus2 bAddClass,Class_All,(.@r/3); + bonus bAtkRate,(.@r/3); if (.@r>=7) { bonus bVariableCastrate,-3; if (.@r>=10) { @@ -117063,7 +117063,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bShortAtkRate,(.@r/2); if (.@r>=9) { bonus bAspd,1; @@ -117080,7 +117080,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bShortAtkRate,(.@r/2); if (.@r>=10) { bonus bAspdRate,3; @@ -117095,7 +117095,7 @@ Body: Script: | .@r = getrefine(); bonus bMatkRate,1+(.@r/2); - bonus2 bAddClass,Class_All,1+(.@r/2); + bonus bAtkRate,1+(.@r/2); if (.@r>=7) { bonus bDef,15; bonus bFlee,15; @@ -117130,7 +117130,7 @@ Body: .@r = getrefine(); bonus bLongAtkRate,2; bonus bShortAtkRate,2; - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); if (.@r>=9) { bonus bAspd,1; if (.@r>=10) { @@ -117150,7 +117150,7 @@ Body: .@r = getrefine(); bonus bLongAtkRate,2; bonus bShortAtkRate,2; - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); if (.@r>=9) { bonus bAspd,1; if (.@r>=10) { @@ -117317,7 +117317,7 @@ Body: bonus bAspdRate,3*(.@r/2); if (.@r>=9) { bonus bMatkRate,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; } - Id: 24747 AegisName: S_SpellCaster_Armor @@ -117330,7 +117330,7 @@ Body: .@r = getrefine(); bonus bVariableCastrate,-.@r; bonus bMatkRate,(.@r/3); - bonus2 bAddClass,Class_All,(.@r/3); + bonus bAtkRate,(.@r/3); - Id: 24748 AegisName: S_SpellCaster_Shoes Name: Spell Caster Shoes Shadow # !todo check english name @@ -117342,7 +117342,7 @@ Body: .@r = getrefine(); bonus bVariableCastrate,-.@r; bonus bMatkRate,(.@r/3); - bonus2 bAddClass,Class_All,(.@r/3); + bonus bAtkRate,(.@r/3); - Id: 24749 AegisName: S_SpellCaster_Earring Name: Spell Caster Earring Shadow # !todo check english name @@ -117354,7 +117354,7 @@ Body: .@r = getrefine(); bonus bVariableCastrate,-.@r; bonus bMatkRate,(.@r/3); - bonus2 bAddClass,Class_All,(.@r/3); + bonus bAtkRate,(.@r/3); - Id: 24750 AegisName: S_SpellCaster_Pendant Name: Spell Caster Pendant Shadow # !todo check english name @@ -117366,7 +117366,7 @@ Body: .@r = getrefine(); bonus bVariableCastrate,-.@r; bonus bMatkRate,(.@r/3); - bonus2 bAddClass,Class_All,(.@r/3); + bonus bAtkRate,(.@r/3); - Id: 24751 AegisName: S_P_Power_Weapon Name: Physical Power Weapon Shadow # !todo check english name @@ -117864,7 +117864,7 @@ Body: .@r = getrefine(); bonus bLongAtkRate,3*(.@r/2); if (.@r>=7) - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) bonus2 bAddRace,RC_All,15; - Id: 26021 @@ -118637,7 +118637,7 @@ Body: .@r = getrefine(); bonus bMatk,10*(.@r/2); bonus bBaseAtk,10*(.@r/2); - bonus2 bAddClass,Class_All,2*(.@r/3); + bonus bAtkRate,2*(.@r/3); bonus bMatkRate,2*(.@r/3); if (.@r >= 7) { bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",15; @@ -119702,7 +119702,7 @@ Body: if (getrefine() >= 9) { .@flee += 5; .@flee2 += 2; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } bonus bFlee,.@flee; bonus bFlee2,.@flee2; @@ -119843,7 +119843,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r >= 7) { bonus bAspdRate,7; if (.@r >= 9) { @@ -119952,7 +119952,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,.@r; if (.@r>=9) bonus2 bSkillAtk,"GC_ROLLINGCUTTER",30; @@ -119986,7 +119986,7 @@ Body: bonus2 bAddSize,Size_All,15; if (.@r>=11) { bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } - Id: 28045 AegisName: Ein_BHKATAR @@ -120009,7 +120009,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",10; if (.@r>=7) { bonus bAspdRate,10; @@ -120043,7 +120043,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bBaseAtk,5*.@r; if (.@r>=9) { bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",20; @@ -120766,7 +120766,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bUnbreakableWeapon; bonus2 bSkillAtk,"NC_ARMSCANNON",10; if (.@r>=7) { @@ -120805,7 +120805,7 @@ Body: bonus2 bMagicSubSize,Size_Medium,10; bonus2 bSubSize,Size_Large,10; bonus2 bMagicSubSize,Size_Large,10; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bUnbreakableWeapon; bonus bLongAtkRate,.@r; if (.@r>=9) { @@ -121466,7 +121466,7 @@ Body: Script: | .@r = getrefine(); bonus bDex,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bLongAtkRate,(.@r/2)*5 + (.@r > 11 ? 5 : 0); if (.@r > 6) { bonus2 bSkillAtk,"RL_R_TRIP",20; @@ -121522,7 +121522,7 @@ Body: Script: | .@r = getrefine(); bonus bDex,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bLongAtkRate,(.@r/2)*5; if (.@r > 6) { bonus bAspdRate,5; @@ -121709,7 +121709,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r >= 7) { bonus bLongAtkRate,7; if (.@r >= 9) { @@ -123171,7 +123171,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; - Id: 28444 AegisName: Para_Team_Str_Necklace100 Name: Awakened Eden Group Necklace of Strength I @@ -123205,7 +123205,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Id: 28446 AegisName: Para_Team_Str_Necklace115 Name: Awakened Eden Group Necklace of Strength II @@ -123239,7 +123239,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; - Id: 28448 AegisName: Para_Team_Str_Necklace130 Name: Awakened Eden Group Necklace of Strength III @@ -123273,7 +123273,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 28450 AegisName: Para_Team_Str_Necklace145 Name: Awakened Eden Group Necklace of Strength IV @@ -123307,7 +123307,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; skill "AL_HEAL",1; - Id: 28452 AegisName: Para_Team_Str_Necklace160 @@ -123874,7 +123874,7 @@ Body: .@S = getskilllv("RL_S_STORM"); .@D = getskilllv("RL_D_TAIL"); .@E = getskilllv("RL_E_CHAIN"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bAspdRate,2*.@M; bonus bVariableCastrate,-10; bonus bDelayrate,-(.@F); @@ -123982,7 +123982,7 @@ Body: NoAuction: true Script: | if (readparam(bStr) > 89) - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (readparam(bVit) > 89) bonus bMaxHP,1000; if (readparam(bDex) > 89) @@ -124126,7 +124126,7 @@ Body: Script: | bonus bMaxSPrate,5; bonus bAspdRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 28507 AegisName: Glove_Of_Wizard Name: Magician's Gloves @@ -124363,7 +124363,7 @@ Body: bonus bUseSPrate,-3; bonus bAspdRate,5; bonus bVariableCastrate,-5; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bMatkRate,3; bonus2 bHPDrainRate,10,3; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,5000,BF_MAGIC; @@ -125294,7 +125294,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r >= 7) { bonus bAspdRate,7; if (.@r >= 9) { @@ -125466,7 +125466,7 @@ Body: Script: | .@r = getrefine(); bonus bCritical,3; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@r>=7) { bonus bAspdRate,10; bonus bBaseAtk,40; @@ -126256,7 +126256,7 @@ Body: bonus bCritical,90; bonus bCritAtkRate,(3*(.@r/2)); if (.@r >= 7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r >= 9) { bonus2 bAddSize,Size_All,20; if (.@r >= 11) { @@ -126596,7 +126596,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"GC_CROSSIMPACT",10; if (.@r>=7) { bonus bAspdRate,10; @@ -126666,7 +126666,7 @@ Body: EquipLevelMin: 170 Refineable: true Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 28775 AegisName: R_Gladius_L Name: Royal Gladius (L) @@ -127337,7 +127337,7 @@ Body: View: 1 Script: | bonus bAspdRate,10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bMatkRate,3; bonus2 bSubEle,Ele_All,7; autobonus2 "{ bonus2 bSPRegenRate,25,1000; }",50,5000; @@ -127367,7 +127367,7 @@ Body: View: 1 Script: | bonus bAspdRate,10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bMatkRate,3; bonus2 bSubEle,Ele_All,7; autobonus2 "{ bonus2 bSPRegenRate,25,1000; }",50,5000; @@ -127397,7 +127397,7 @@ Body: View: 1 Script: | bonus bAspdRate,10; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMatkRate,5; bonus2 bSubEle,Ele_All,10; autobonus2 "{ bonus2 bSPRegenRate,50,1000; }",50,5000; @@ -136456,7 +136456,7 @@ Body: Script: | .@r = getrefine(); bonus bDelayrate,-.@r; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) bonus2 bSkillAtk,"LG_CANNONSPEAR",20; if (.@r>=11) @@ -136482,7 +136482,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"LG_BANISHINGPOINT",10; if (.@r>=7) { bonus bAspdRate,10; @@ -136915,7 +136915,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 130 Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 32208 AegisName: Illusion_B_L Name: Illusion Booster L @@ -136928,7 +136928,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 130 Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 32209 AegisName: Illusion_BC_R Name: Illusion Battle chip R @@ -137044,7 +137044,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 150 Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 32229 AegisName: Schmidt_Insignia_Divine_Power Name: King Schmidt's Divine Power Insignia @@ -137249,7 +137249,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 170 Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 32251 AegisName: Ein_SAFETY_EPAULL Name: Safety Epaulet B @@ -137514,7 +137514,7 @@ Body: bonus bAspdRate,3*(.@r/3); if (.@r >= 7) { bonus bAspd,1; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r >= 9) { bonus bCritAtkRate,20; if (.@r >= 11) { @@ -137664,7 +137664,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"GN_CARTCANNON",10; if (.@r>=7) { bonus bVariableCastrate,-10; @@ -137775,7 +137775,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bUnbreakableWeapon; bonus bLongAtkRate,.@r; if (.@r>=9) { @@ -137807,7 +137807,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bUnbreakableWeapon; bonus bLongAtkRate,.@r; if (.@r>=9) { @@ -137839,7 +137839,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bUnbreakableWeapon; bonus bBaseAtk,4*.@r; if (.@r>=9) { @@ -137975,7 +137975,7 @@ Body: EquipLevelMin: 120 Script: | bonus bMatkRate,1; - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; - Id: 400001 AegisName: Victory_Wing_Ear Name: Victory Wing Ears @@ -138051,7 +138051,7 @@ Body: bonus bBaseAtk,5*(.@r/2); if (.@r>=7) { bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } if (.@r>=9) { bonus2 bHPDrainRate,50,5; @@ -138150,7 +138150,7 @@ Body: bonus bMaxSPrate,5; if (.@r>=7) { bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } if (.@r>=9) { bonus bVariableCastrate,-10; @@ -138576,7 +138576,7 @@ Body: } if (.@r>=9) { bonus2 bMagicAtkEle,Ele_Holy,15; - bonus2 bAddClass,Class_All,15; + bonus bAtkRate,15; } if (.@r>=11) { bonus bFixedCast,-200; @@ -138669,7 +138669,7 @@ Body: Script: | bonus bUnbreakableHelm; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (getrefine()>=9) { bonus bMatk,40; bonus bBaseAtk,40; @@ -138900,7 +138900,7 @@ Body: } if (.@r>=9) { bonus bMatkRate,15; - bonus2 bAddClass,Class_All,15; + bonus bAtkRate,15; } if (.@r>=11) { bonus2 bMagicAtkEle,Ele_All,10; @@ -138967,7 +138967,7 @@ Body: } if (.@r>=9) { bonus bMatkRate,15; - bonus2 bAddClass,Class_All,15; + bonus bAtkRate,15; } if (.@r>=11) { bonus2 bAddSize,Size_All,10; @@ -139070,7 +139070,7 @@ Body: View: 511 Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,4*(.@r/3); + bonus bAtkRate,4*(.@r/3); if (.@r>=7) { bonus bAspdRate,10; if (.@r>=9) { @@ -139096,7 +139096,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5*(.@r/3); + bonus bAtkRate,5*(.@r/3); if (.@r>=7) { bonus bAspdRate,15; if (.@r>=9) { @@ -139222,7 +139222,7 @@ Body: View: 2089 Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,4*(.@r/3); + bonus bAtkRate,4*(.@r/3); if (.@r>=7) { bonus bAspdRate,10; if (.@r>=9) { @@ -139247,7 +139247,7 @@ Body: View: 2090 Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5*(.@r/3); + bonus bAtkRate,5*(.@r/3); if (.@r>=7) { bonus bAspdRate,15; if (.@r>=9) { @@ -139349,7 +139349,7 @@ Body: View: 2105 Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,4*(.@r/3); + bonus bAtkRate,4*(.@r/3); if (.@r>=7) { bonus bAspdRate,10; if (.@r>=9) { @@ -139374,7 +139374,7 @@ Body: View: 2104 Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5*(.@r/3); + bonus bAtkRate,5*(.@r/3); if (.@r>=7) { bonus bAspdRate,15; if (.@r>=9) { @@ -139820,7 +139820,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -139861,7 +139861,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -139952,7 +139952,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -139994,7 +139994,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140035,7 +140035,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140084,7 +140084,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140125,7 +140125,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140208,7 +140208,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140290,7 +140290,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140331,7 +140331,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140466,7 +140466,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140508,7 +140508,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140590,7 +140590,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140631,7 +140631,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140673,7 +140673,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140722,7 +140722,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140763,7 +140763,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140801,7 +140801,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140839,7 +140839,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140877,7 +140877,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -140917,7 +140917,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -141033,7 +141033,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -141072,7 +141072,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -141111,7 +141111,7 @@ Body: bonus bFixedCast,-200; if (.@r>=11) { bonus bFixedCast,-300; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } @@ -141185,14 +141185,14 @@ Body: if (.@r>=7) { bonus bShortAtkRate,15; if (.@r>=9) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@r>=11) { bonus bShortAtkRate,10; } } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bPow,3; if (.@g >= ENCHANTGRADE_C) { bonus bFixedCast,-500; @@ -142744,7 +142744,7 @@ Body: Script: | bonus2 bAddRace,RC_Player_Human,10; bonus2 bAddRace,RC_Player_Doram,10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Id: 436002 AegisName: aegis_436002 Name: Thanatos's Odium Mask @@ -142793,7 +142793,7 @@ Body: Script: | bonus2 bAddRace,RC_Player_Human,10; bonus2 bAddRace,RC_Player_Doram,10; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Id: 436005 AegisName: aegis_436005 Name: Thanatos's Maeror Mask @@ -143029,7 +143029,7 @@ Body: bonus bDelayrate,-5; .@r = getrefine(); if (.@r>=2) { - bonus2 bAddClass,Class_All,.@r/2; + bonus bAtkRate,.@r/2; } if (.@r>=3) { bonus bCritAtkRate,.@r/3; @@ -143786,7 +143786,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,50; if (.@r>=7) - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) bonus bLongAtkRate,5; - Id: 450039 @@ -143815,7 +143815,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,50; if (.@r>=7) - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) bonus bLongAtkRate,5; - Id: 450040 @@ -143977,7 +143977,7 @@ Body: if (.@r>=7) bonus bAspdRate,3; if (.@r>=9) - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 450045 AegisName: Noblesse_Moon_Suit Name: Noblesse Moon Suit @@ -144009,7 +144009,7 @@ Body: if (.@r>=7) bonus2 bAddSize,Size_All,5; if (.@r>=9) - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 450046 AegisName: Noblesse_Ninja_Suit Name: Noblesse Ninja Suit @@ -144065,7 +144065,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,50; if (.@r>=7) - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) bonus bLongAtkRate,5; - Id: 450048 @@ -144922,7 +144922,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,75; if (.@r>=7) - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@r>=9) bonus bLongAtkRate,7; - Id: 450075 @@ -144951,7 +144951,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,75; if (.@r>=7) - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@r>=9) bonus bLongAtkRate,7; - Id: 450076 @@ -145113,7 +145113,7 @@ Body: if (.@r>=7) bonus bAspdRate,5; if (.@r>=9) - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 450081 AegisName: Imperial_Moon_Suit Name: Imperial Moon Suit @@ -145145,7 +145145,7 @@ Body: if (.@r>=7) bonus2 bAddSize,Size_All,7; if (.@r>=9) - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 450082 AegisName: Imperial_Ninja_Suit Name: Imperial Ninja Suit @@ -145201,7 +145201,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,75; if (.@r>=7) - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@r>=9) bonus bLongAtkRate,7; - Id: 450084 @@ -145994,7 +145994,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,100; if (.@r>=7) - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@r>=9) bonus bLongAtkRate,10; - Id: 450109 @@ -146023,7 +146023,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,100; if (.@r>=7) - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@r>=9) bonus bLongAtkRate,10; - Id: 450110 @@ -146185,7 +146185,7 @@ Body: if (.@r>=7) bonus bAspdRate,7; if (.@r>=9) - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 450115 AegisName: Grace_Moon_Suit Name: Grace Moon Suit @@ -146217,7 +146217,7 @@ Body: if (.@r>=7) bonus2 bAddSize,Size_All,10; if (.@r>=9) - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 450116 AegisName: Grace_Ninja_Suit Name: Grace Ninja Suit @@ -146273,7 +146273,7 @@ Body: .@r = getrefine(); bonus bBaseAtk,100; if (.@r>=7) - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@r>=9) bonus bLongAtkRate,10; - Id: 450118 @@ -146679,7 +146679,7 @@ Body: bonus2 bAddEle,Ele_Fire,4*(.@r/3); bonus2 bAddEle,Ele_Water,4*(.@r/3); if (.@r>=9) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; } if (.@r>=11) { bonus bAspdRate,10; @@ -146976,25 +146976,25 @@ Body: bonus bPow,1; bonus bBaseAtk,125+15*(.@r/2); if (.@r>=9) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=11) { bonus bShortAtkRate,20; } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); bonus bBaseAtk,2*(.@r/2); bonus bShortAtkRate,(.@r/3); if (.@g >= ENCHANTGRADE_C) { - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); bonus bBaseAtk,3*(.@r/2); bonus bShortAtkRate,(.@r/3); if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,2*(.@r/2); + bonus bAtkRate,2*(.@r/2); bonus bShortAtkRate,(.@r/3); bonus bPAtk,(.@r/4); if (.@g >= ENCHANTGRADE_A) { - bonus2 bAddClass,Class_All,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); bonus bShortAtkRate,2*(.@r/3); bonus bPAtk,2*(.@r/4); } @@ -147082,11 +147082,11 @@ Body: } if (.@g >= ENCHANTGRADE_D) { bonus bAspdRate,(.@r/2); - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); bonus bBaseAtk,2*(.@r/2); if (.@g >= ENCHANTGRADE_C) { bonus bAspdRate,(.@r/2); - bonus2 bAddClass,Class_All,2*(.@r/2); + bonus bAtkRate,2*(.@r/2); bonus bBaseAtk,3*(.@r/2); if (.@g >= ENCHANTGRADE_B) { bonus bAspdRate,2*(.@r/2); @@ -147484,7 +147484,7 @@ Body: bonus bBaseAtk,5*(min(.@l,150)/10); .@l = BaseLevel; if (.@l>=105) - bonus2 bAddClass,Class_ALL,3; + bonus bAtkRate,3; if (.@l>=110) bonus bDelayrate,-5; if (.@l>=120) @@ -147651,7 +147651,7 @@ Body: .@r = getrefine(); bonus bPow,(readparam(bStr)/25); if (.@r>=7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) { bonus bCritAtkRate,10; if (.@r>=11) { @@ -147660,9 +147660,9 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bPow,3; if (.@g >= ENCHANTGRADE_B) { bonus bShortAtkRate,10; @@ -147786,7 +147786,7 @@ Body: .@r = getrefine(); bonus bCon,(readparam(bDex)/25); if (.@r>=7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) { bonus bCritAtkRate,10; if (.@r>=11) { @@ -147795,9 +147795,9 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bCon,3; if (.@g >= ENCHANTGRADE_B) { bonus bLongAtkRate,10; @@ -148036,7 +148036,7 @@ Body: View: 1 Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bMdef,10; if (.@r>=7) { bonus bCritical,3; @@ -148045,7 +148045,7 @@ Body: bonus bAspdRate,5; if (.@r>=12) { bonus bCritAtkRate,10; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } } } @@ -148142,7 +148142,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); bonus bMatkRate,5+2*(.@r/2); - bonus2 bAddClass,Class_All,5+2*(.@r/2); + bonus bAtkRate,5+2*(.@r/2); bonus bAspd,3; if (.@r>=7) { bonus bAspdRate,5; @@ -149368,7 +149368,7 @@ Body: if (.@l>=120) bonus bCritAtkRate,5; if (.@l>=130) - bonus2 bAddClass,Class_ALL,5; + bonus bAtkRate,5; - Id: 470070 AegisName: Egirnion_Shoes Name: Aegirnion Shoes @@ -149567,7 +149567,7 @@ Body: if (.@r>=13) { bonus bCritAtkRate,7; bonus bCritical,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; } } } @@ -149996,7 +149996,7 @@ Body: } if (.@r>=7) { bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) { bonus bVariableCastrate,-5; bonus bPerfectHitAddRate,10; @@ -150135,7 +150135,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); if (.@r>=7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) { bonus bFixedCast,-300; bonus bVariableCastrate,-5; @@ -150146,12 +150146,12 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@g >= ENCHANTGRADE_C) { bonus bFixedCast,-300; if (.@g >= ENCHANTGRADE_B) { bonus bPAtk,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@g >= ENCHANTGRADE_A) { bonus bFixedCast,-200; } @@ -150227,7 +150227,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); if (.@r>=7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) { bonus bFixedCast,-300; bonus bCritAtkRate,5; @@ -150238,12 +150238,12 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@g >= ENCHANTGRADE_C) { bonus bFixedCast,-300; if (.@g >= ENCHANTGRADE_B) { bonus bPAtk,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@g >= ENCHANTGRADE_A) { bonus bCrate,1; } @@ -151637,7 +151637,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,(.@r/2); + bonus bAtkRate,(.@r/2); bonus bBaseAtk,5*(.@r/2); bonus2 bAddSize,Size_All,3*(.@r/3); if (.@r>=7) { @@ -151901,15 +151901,15 @@ Body: if (.@r>=9) { bonus bCritAtkRate,10; if (.@r>=11) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,2; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus bShortAtkRate,5; if (.@g >= ENCHANTGRADE_A) { @@ -151985,7 +151985,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); if (.@r>=7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) { bonus bCritAtkRate,10; if (.@r>=11) { @@ -151994,10 +151994,10 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,2; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus bLongAtkRate,5; if (.@g >= ENCHANTGRADE_A) { @@ -152439,7 +152439,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 160 Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMaxHPrate,5; - Id: 490025 AegisName: Auto_B_L @@ -152452,7 +152452,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 160 Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMaxSPrate,5; - Id: 490026 AegisName: Auto_BC_R @@ -152520,7 +152520,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 30 Script: | - bonus2 bAddClass,Class_All,6; + bonus bAtkRate,6; bonus bMatkRate,6; bonus bHit,15; - Id: 490035 @@ -152623,7 +152623,7 @@ Body: EquipLevelMin: 170 Script: | bonus bAspdRate,7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490045 AegisName: Sin_Necklace_R Name: Sinful Ruby Necklace @@ -152636,7 +152636,7 @@ Body: EquipLevelMin: 170 Script: | bonus bVariableCastrate,-7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490046 AegisName: Sin_Ring_E Name: Sinful Emerald Ring @@ -152649,7 +152649,7 @@ Body: EquipLevelMin: 170 Script: | bonus bAspdRate,7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490047 AegisName: Sin_Necklace_E Name: Sinful Emerald Necklace @@ -152662,7 +152662,7 @@ Body: EquipLevelMin: 170 Script: | bonus bVariableCastrate,-7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490048 AegisName: Sin_Ring_T Name: Sinful Topaz Ring @@ -152676,7 +152676,7 @@ Body: Script: | bonus bAspdRate,7; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490049 AegisName: Sin_Necklace_T Name: Sinful Topaz Necklace @@ -152690,7 +152690,7 @@ Body: Script: | bonus bVariableCastrate,-7; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490050 AegisName: Sin_Ring_A Name: Sinful Amethyst Ring @@ -152704,7 +152704,7 @@ Body: Script: | bonus bAspdRate,7; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490051 AegisName: Sin_Necklace_A Name: Sinful Amethyst Necklace @@ -152718,7 +152718,7 @@ Body: Script: | bonus bVariableCastrate,-7; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490052 AegisName: Sin_Ring_S Name: Sinful Sapphire Ring @@ -152757,7 +152757,7 @@ Body: EquipLevelMin: 170 Script: | bonus bAspdRate,7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490055 AegisName: Sin_Necklace_O Name: Sinful Opal Necklace @@ -152770,7 +152770,7 @@ Body: EquipLevelMin: 170 Script: | bonus bVariableCastrate,-7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490056 AegisName: Shine_Ring_R Name: Brilliant Light Ruby Ring @@ -152783,7 +152783,7 @@ Body: EquipLevelMin: 170 Script: | bonus bAspdRate,7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490057 AegisName: Shine_Necklace_R Name: Brilliant Light Ruby Necklace @@ -152796,7 +152796,7 @@ Body: EquipLevelMin: 170 Script: | bonus bVariableCastrate,-7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490058 AegisName: Shine_Ring_A Name: Brilliant Light Amethyst Ring @@ -152810,7 +152810,7 @@ Body: Script: | bonus bAspdRate,7; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490059 AegisName: Shine_Necklace_A Name: Brilliant Light Amethyst Necklace @@ -152824,7 +152824,7 @@ Body: Script: | bonus bVariableCastrate,-7; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490060 AegisName: Shine_Ring_E Name: Brilliant Light Emerald Ring @@ -152838,7 +152838,7 @@ Body: Script: | bonus bAspdRate,7; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490061 AegisName: Shine_Necklace_E Name: Brilliant Light Emerald Necklace @@ -152852,7 +152852,7 @@ Body: Script: | bonus bVariableCastrate,-7; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490062 AegisName: Shine_Ring_Z Name: Brilliant Light Zircon Ring @@ -152865,7 +152865,7 @@ Body: EquipLevelMin: 170 Script: | bonus bAspdRate,7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490063 AegisName: Shine_Necklace_Z Name: Brilliant Light Zircon Necklace @@ -152878,7 +152878,7 @@ Body: EquipLevelMin: 170 Script: | bonus bVariableCastrate,-7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490064 AegisName: Shine_Ring_S Name: Brilliant Light Sapphire Ring @@ -152917,7 +152917,7 @@ Body: EquipLevelMin: 170 Script: | bonus bAspdRate,7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490067 AegisName: Shine_Necklace_AQ Name: Brilliant Light Aquamarine Necklace @@ -152930,7 +152930,7 @@ Body: EquipLevelMin: 170 Script: | bonus bVariableCastrate,-7; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 490068 AegisName: RingofVenus Name: Ring of Venus @@ -153015,7 +153015,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 490073 AegisName: E_Illusion_B_L Name: Illusion Booster L(Bound) @@ -153034,7 +153034,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 490074 AegisName: E_Illusion_BC_R Name: Illusion Battle Chip R(Bound) @@ -153101,7 +153101,7 @@ Body: EquipLevelMin: 230 Script: | bonus bMaxHPrate,5; - bonus2 bAddClass,Class_All,8; + bonus bAtkRate,8; - Id: 490078 AegisName: MD_Geffen_Ring2 Name: Mental Condenser @@ -153309,7 +153309,7 @@ Body: ArmorLevel: 1 Script: | bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 490100 AegisName: Blue_Mental_Pendant Name: Red Force Pendant @@ -153321,7 +153321,7 @@ Body: ArmorLevel: 1 Script: | bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 490101 AegisName: Red_Force_Pendant Name: Blue Mental Pendant @@ -153333,7 +153333,7 @@ Body: ArmorLevel: 1 Script: | bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 490102 AegisName: aegis_490102 Name: Skull Ring @@ -153408,7 +153408,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 190 Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bMaxHPrate,5; - Id: 490107 AegisName: Gray_W_Ring @@ -153421,7 +153421,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 190 Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bMaxSPrate,5; - Id: 490108 AegisName: Gray_W_Earing @@ -153591,7 +153591,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bNoCastCancel; - Id: 490123 AegisName: 1Para_Acc_R_A @@ -153667,7 +153667,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bNoCastCancel; - Id: 490127 AegisName: L_60Lv_Gloves @@ -153779,7 +153779,7 @@ Body: NoAuction: true Script: | bonus bPAtk,3; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 490133 AegisName: Signet_Of_Sta_Star Name: Stellar Stamina Seal @@ -154019,7 +154019,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490153 AegisName: aegis_490153 @@ -154038,7 +154038,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490155 AegisName: aegis_490155 @@ -154057,7 +154057,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490156 AegisName: aegis_490156 @@ -154076,7 +154076,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490159 AegisName: Omega_Core @@ -154165,7 +154165,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490165 AegisName: aegis_490165 @@ -154184,7 +154184,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490166 AegisName: aegis_490166 @@ -154203,7 +154203,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490167 AegisName: aegis_490167 @@ -154222,7 +154222,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490171 AegisName: aegis_490171 @@ -154241,7 +154241,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490172 AegisName: aegis_490172 @@ -154260,7 +154260,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490176 AegisName: Snowflower_Pendant @@ -154273,7 +154273,7 @@ Body: ArmorLevel: 2 EquipLevelMin: 210 Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bMaxHPrate,7; - Id: 490177 AegisName: Snowflower_Ring @@ -154286,7 +154286,7 @@ Body: ArmorLevel: 2 EquipLevelMin: 210 Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bMaxSPrate,7; - Id: 490178 AegisName: Snowflower_Necklace @@ -154331,7 +154331,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490181 AegisName: aegis_490181 @@ -154350,7 +154350,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490182 AegisName: aegis_490182 @@ -154383,7 +154383,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490185 AegisName: aegis_490185 @@ -154402,7 +154402,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490186 AegisName: aegis_490186 @@ -154421,7 +154421,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490187 AegisName: aegis_490187 @@ -154440,7 +154440,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490188 AegisName: aegis_490188 @@ -154460,7 +154460,7 @@ Body: EquipLevelMin: 205 Script: | bonus bMatkRate,10; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490193 AegisName: aegis_490193 @@ -154849,7 +154849,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -154926,7 +154926,7 @@ Body: .@r = getrefine(); bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WIND",5*(.@r/2); bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_FIRE",5*(.@r/2); - bonus2 bAddClass,Class_All,3*(.@r/4); + bonus bAtkRate,3*(.@r/4); - Id: 500019 AegisName: Poenitentia_Gladius Name: Poenitentia Gladius @@ -154993,7 +154993,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WIND",10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_FIRE",10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WATER",10; @@ -155051,7 +155051,7 @@ Body: bonus bLongAtkRate,4*(.@r/3); if (.@r>=7) { bonus bVariableCastrate,-15; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=9) { bonus bAspdRate,10; bonus2 bSkillAtk,"GN_CARTCANNON",15; @@ -155062,14 +155062,14 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WIND",10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_FIRE",10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WATER",10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_GROUND",10; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WIND",10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_FIRE",10; @@ -155245,7 +155245,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"GN_CARTCANNON",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -155374,7 +155374,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bShortAtkRate,10; if (BaseLevel>=75) @@ -155404,7 +155404,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bShortAtkRate,10; if (BaseLevel>=75) @@ -155484,7 +155484,7 @@ Body: .@l = BaseLevel; .@a = getskilllv("GN_TRAINING_SWORD"); bonus bShortAtkRate,2*.@a; - bonus2 bAddClass,Class_ALL,5*.@a; + bonus bAtkRate,5*.@a; if (.@l>=105) { bonus bDelayrate,-5; bonus2 bSkillAtk,"GN_HELLS_PLANT",25; @@ -155575,7 +155575,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -155594,7 +155594,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -155628,7 +155628,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -155647,7 +155647,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bShortAtkRate,15; bonus bPAtk,1; @@ -155801,7 +155801,7 @@ Body: bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WIND",6*(.@r/2); bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_FIRE",6*(.@r/2); bonus2 bSkillAtk,"GN_CART_TORNADO",7*(.@r/3); - bonus2 bAddClass,Class_All,5*(.@r/4); + bonus bAtkRate,5*(.@r/4); if (.@g >= ENCHANTGRADE_D) { bonus bPow,2; if (.@g >= ENCHANTGRADE_C) { @@ -155833,7 +155833,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",10+3*(.@r/2); bonus2 bSkillAtk,"HN_SHIELD_CHAIN_RUSH",10+3*(.@r/2); if (.@r>=7) { @@ -155918,7 +155918,7 @@ Body: Refineable: true Script: | bonus2 bMagicAtkEle,Ele_Fire,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; .@r = getrefine(); if (.@r) { bonus bBaseAtk,.@r*2; @@ -155954,7 +155954,7 @@ Body: bonus2 bMagicAtkEle,Ele_Fire,3; bonus2 bMagicAtkEle,Ele_Wind,3; bonus2 bMagicAtkEle,Ele_Water,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; .@r = getrefine(); if (.@r) { bonus bBaseAtk,.@r*2; @@ -156092,7 +156092,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -156140,7 +156140,7 @@ Body: Script: | .@r = getrefine(); bonus bMatkRate,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bMatk,3*(.@r+(min(BaseLevel,195)/15)); bonus bBaseAtk,3*(.@r+(min(BaseLevel,195)/15)); if (.@r>=7) { @@ -156322,7 +156322,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"SHC_SHADOW_STAB",10; bonus2 bSkillAtk,"GC_CROSSIMPACT",3*(.@r/2); if (.@r>=7) { @@ -156366,7 +156366,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"ABC_DEFT_STAB",10; bonus2 bSkillAtk,"SC_FATALMENACE",3*(.@r/2); if (.@r>=7) { @@ -156540,7 +156540,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"SC_FATALMENACE",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -156725,7 +156725,7 @@ Body: bonus bMatk,180; bonus bMatkRate,3; bonus bDelayrate,-1*.@a; - bonus2 bAddClass,Class_ALL,3; + bonus bAtkRate,3; if (.@l>=105) { bonus2 bSkillAtk,"SC_FATALMENACE",25; bonus bAspd,1; @@ -156765,7 +156765,7 @@ Body: .@l = BaseLevel; .@a = getskilllv("SM_SWORD"); bonus bShortAtkRate,1*.@a; - bonus2 bAddClass,Class_ALL,5; + bonus bAtkRate,5; if (.@l>=105) { bonus bAspdRate,10; bonus2 bSkillAtk,"RG_RAID",25; @@ -156852,7 +156852,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -156871,7 +156871,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bShortAtkRate,15; bonus bPAtk,1; @@ -157112,7 +157112,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus2 bSkillAtk,"SS_KUNAIKAITEN",7; bonus2 bSkillAtk,"SS_KUNAIKUSSETSU",7; bonus2 bSkillAtk,"KO_JYUMONJIKIRI",2*(.@r/2); @@ -157215,7 +157215,7 @@ Body: Script: | .@g = getenchantgrade(); if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -157401,7 +157401,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"NC_AXEBOOMERANG",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -157461,7 +157461,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bShortAtkRate,10; if (BaseLevel>=75) @@ -157497,7 +157497,7 @@ Body: .@a = getskilllv("NC_MADOLICENCE"); bonus bUnbreakableWeapon; bonus bLongAtkRate,2*.@a; - bonus2 bAddClass,Class_ALL,5; + bonus bAtkRate,5; if (.@l>=105) { bonus bVariableCastrate,-10; bonus2 bSkillAtk,"NC_VULCANARM",25; @@ -157558,7 +157558,7 @@ Body: Refineable: true Script: | bonus bMatkRate,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bMagicAtkEle,Ele_Holy,3; .@r = getrefine(); if (.@r) { @@ -157634,7 +157634,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -157733,7 +157733,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"IG_OVERSLASH",10; bonus2 bSkillAtk,"LG_OVERBRAND",3*(.@r/2); if (.@r>=7) { @@ -157794,11 +157794,11 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"IG_OVERSLASH",10; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus2 bSkillAtk,"IG_OVERSLASH",10; } @@ -157882,7 +157882,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"LG_OVERBRAND",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -157948,7 +157948,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bAspdRate,10; if (BaseLevel>=75) @@ -157983,7 +157983,7 @@ Body: .@l = BaseLevel; .@a = getskilllv("CR_SPEARQUICKEN"); bonus bAspdRate,1*.@a; - bonus2 bAddClass,Class_ALL,5; + bonus bAtkRate,5; if (.@l>=105) { bonus bAspd,1; bonus2 bSkillAtk,"LG_BANISHINGPOINT",25; @@ -158022,7 +158022,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -158041,7 +158041,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus2 bAddEle,Ele_All,15; bonus bPAtk,1; @@ -158162,7 +158162,7 @@ Body: bonus bAspdRate,getskilllv("TK_RUN"); } if (.@r>=9) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; } - Id: 540004 AegisName: Ep172_1h_Book @@ -158458,7 +158458,7 @@ Body: .@r = getrefine(); bonus bUnbreakableWeapon; bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMatk,215; bonus2 bSkillAtk,"CD_PETITIO",10; bonus2 bSkillAtk,"AB_DUPLELIGHT",3*(.@r/2); @@ -158804,7 +158804,7 @@ Body: bonus2 bSkillAtk,"AB_DUPLELIGHT",25; if (.@g >= ENCHANTGRADE_B) { bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -158897,7 +158897,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bShortAtkRate,10; if (BaseLevel>=75) { @@ -158930,7 +158930,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bShortAtkRate,10; if (BaseLevel>=75) { @@ -159077,9 +159077,9 @@ Body: .@l = BaseLevel; .@a = getskilllv("TK_HPTIME"); bonus bShortAtkRate,1*.@a; - bonus2 bAddClass,Class_ALL,5; + bonus bAtkRate,5; if (.@l>=105) { - bonus2 bAddClass,Class_ALL,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"SJ_PROMINENCEKICK",25; bonus2 bSkillAtk,"SJ_SOLARBURST",25; if (.@l>=110) { @@ -159119,9 +159119,9 @@ Body: .@l = BaseLevel; .@a = getskilllv("TK_HPTIME"); bonus bShortAtkRate,1*.@a; - bonus2 bAddClass,Class_ALL,5; + bonus bAtkRate,5; if (.@l>=105) { - bonus2 bAddClass,Class_ALL,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"SJ_PROMINENCEKICK",25; bonus2 bSkillAtk,"SJ_SOLARBURST",25; if (.@l>=110) { @@ -159214,7 +159214,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -159226,7 +159226,7 @@ Body: bonus2 bSkillAtk,"SJ_NEWMOONKICK",25; if (.@r>=11) { bonus2 bAddSize,Size_All,15; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@r>=13) { bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",15; bonus2 bSkillAtk,"SJ_FULLMOONKICK",15; @@ -159261,7 +159261,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -159272,7 +159272,7 @@ Body: bonus2 bSkillAtk,"SJ_PROMINENCEKICK",25; if (.@r>=11) { bonus2 bAddSize,Size_All,15; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@r>=13) { bonus2 bSkillAtk,"SJ_SOLARBURST",15; bonus2 bSkillAtk,"SJ_PROMINENCEKICK",15; @@ -159394,7 +159394,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"SKE_SUNSET_BLAST",10; bonus2 bSkillAtk,"SKE_DAWN_BREAK",10; bonus2 bSkillAtk,"SJ_SOLARBURST",3*(.@r/2); @@ -159466,7 +159466,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -159516,7 +159516,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"SJ_FULLMOONKICK",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -159561,7 +159561,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bShortAtkRate,15; bonus bPAtk,1; @@ -159682,7 +159682,7 @@ Body: bonus bMatk,350; bonus bUnbreakableWeapon; bonus bMatkRate,7; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus2 bSkillAtk,"SU_CN_METEOR",15; bonus2 bSkillAtk,"SU_PICKYPECK",15; if (.@r>=7) { @@ -159999,7 +159999,7 @@ Body: .@r = getrefine(); bonus bMatk,15*(.@r/2); bonus bBaseAtk,15*(.@r/2); - bonus2 bAddClass,Class_All,2*(.@r/3); + bonus bAtkRate,2*(.@r/3); bonus bMatkRate,2*(.@r/3); if (.@r>=7) { bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",25; @@ -160735,7 +160735,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -160876,7 +160876,7 @@ Body: Script: | .@l = BaseLevel; .@a = getskilllv("SU_PICKYPECK"); - bonus2 bAddClass,Class_ALL,5; + bonus bAtkRate,5; bonus bUnbreakableWeapon; bonus bLongAtkRate,2*.@a; if (.@l>=105) { @@ -161129,7 +161129,7 @@ Body: Script: | .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -161837,7 +161837,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"SU_PICKYPECK",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -161885,7 +161885,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bMatkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus2 bMagicAtkEle,Ele_All,15; @@ -161899,7 +161899,7 @@ Body: } bonus bMatk,15*(.@r/2); bonus bBaseAtk,15*(.@r/2); - bonus2 bAddClass,Class_All,2*(.@r/3); + bonus bAtkRate,2*(.@r/3); bonus bMatkRate,2*(.@r/3); - Id: 550068 AegisName: SoulWeight_LT @@ -162114,7 +162114,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,(3*.@r)+3*(min(BaseLevel,195)/15); if (.@r>=7) { bonus bLongAtkRate,2*getskilllv("MO_CALLSPIRITS"); @@ -162159,14 +162159,14 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2+(min(BaseLevel,195)/15); + bonus bAtkRate,2+(min(BaseLevel,195)/15); bonus bMaxHP,250*.@r; bonus bMaxSP,20*.@r; if (.@r>=7) { bonus bMaxHPrate,2*getskilllv("MO_CHAINCOMBO"); } if (.@r>=9) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus2 bSkillAtk,"SR_SKYNETBLOW",25; bonus2 bSkillAtk,"SR_TIGERCANNON",25; } @@ -162292,7 +162292,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"IQ_SECOND_FAITH",10; bonus2 bSkillAtk,"SR_TIGERCANNON",3*(.@r/2); if (.@r>=7) { @@ -162336,7 +162336,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",10; bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",3*(.@r/2); if (.@r>=7) { @@ -162397,11 +162397,11 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"IQ_THIRD_FLAME_BOMB",10; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus2 bSkillAtk,"IQ_THIRD_FLAME_BOMB",10; } @@ -162520,7 +162520,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"SR_TIGERCANNON",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -162570,7 +162570,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -162599,7 +162599,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bAspdRate,10; if (BaseLevel>=75) @@ -162628,7 +162628,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -162661,7 +162661,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("MO_CHAINCOMBO"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMaxHPrate,2*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"SR_TIGERCANNON",-1000; @@ -162702,7 +162702,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("MO_CALLSPIRITS"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,2*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"SR_RAMPAGEBLASTER",-1000; @@ -162739,7 +162739,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -162759,7 +162759,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -162793,7 +162793,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -162812,7 +162812,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bShortAtkRate,15; @@ -162900,7 +162900,7 @@ Body: Refineable: true Script: | bonus2 bMagicAtkEle,Ele_Neutral,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; .@r = getrefine(); bonus bBaseAtk,.@r*3; bonus bMatk,.@r*3; @@ -163215,11 +163215,11 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",10; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",10; } @@ -163342,7 +163342,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -163424,7 +163424,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -163458,7 +163458,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("BA_MUSICALLESSON"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,1*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000; @@ -163541,7 +163541,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -163692,7 +163692,7 @@ Body: Refineable: true Script: | bonus2 bMagicAtkEle,Ele_Neutral,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; .@r = getrefine(); bonus bBaseAtk,.@r*3; bonus bMatk,.@r*3; @@ -163703,7 +163703,7 @@ Body: bonus bVariableCastrate,getskilllv("DC_DANCINGLESSON")*-1; } if (.@r>=9) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bMagicAddClass,Class_All,10; } - Id: 580002 @@ -164007,11 +164007,11 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",10; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",10; } @@ -164134,7 +164134,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -164216,7 +164216,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -164250,7 +164250,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("DC_DANCINGLESSON"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,1*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000; @@ -164333,7 +164333,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -164486,7 +164486,7 @@ Body: bonus bMatk,160; bonus bUnbreakableWeapon; bonus2 bMagicAtkEle,Ele_Holy,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bMatk,2*.@r; bonus bBaseAtk,2*.@r; bonus bMatk,3*(min(BaseLevel,180)/15); @@ -164627,7 +164627,7 @@ Body: Script: | .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r+3*(min(BaseLevel,195)/15); if (.@r>=7) { bonus bLongAtkRate,2*getskilllv("NC_MADOLICENCE"); @@ -164673,7 +164673,7 @@ Body: Script: | .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r+3*(min(BaseLevel,195)/15); if (.@r>=7) { bonus bLongAtkRate,2*getskilllv("AM_LEARNINGPOTION"); @@ -164720,7 +164720,7 @@ Body: .@r = getrefine(); bonus bUnbreakableWeapon; bonus bMatkRate,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bMatk,160+(3*.@r)+3*(min(BaseLevel,195)/15); bonus bBaseAtk,3*.@r+3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -164856,7 +164856,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"MT_AXE_STOMP",10; if (.@r>=7) { bonus bVariableCastrate,-10; @@ -164898,7 +164898,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WIND",10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_FIRE",10; bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WATER",10; @@ -164962,7 +164962,7 @@ Body: bonus bAspdRate,10; if (.@r>=9) { bonus bMatkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus2 bSkillAtk,"AB_DUPLELIGHT",30; if (.@r>=11) { bonus2 bAddSize,Size_All,15; @@ -164972,7 +164972,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"CD_PETITIO",10; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; @@ -165098,7 +165098,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"NC_VULCANARM",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -165149,7 +165149,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"GN_CART_TORNADO",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -165214,7 +165214,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bVariableCastrate,-10; if (BaseLevel>=75) @@ -165277,7 +165277,7 @@ Body: Script: | .@a = getskilllv("AM_LEARNINGPOTION"); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,1*.@a; if (BaseLevel>=105) { bonus bVariableCastrate,-10; @@ -165414,7 +165414,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -165432,7 +165432,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -165807,7 +165807,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"DK_STORMSLASH",10; bonus2 bSkillAtk,"RK_IGNITIONBREAK",3*(.@r/2); if (.@r>=7) { @@ -165859,7 +165859,7 @@ Body: bonus bAspdRate,10; bonus2 bSkillAtk,"RK_WINDCUTTER",20; if (.@r>=9) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=11) { bonus2 bAddSize,Size_All,15; bonus bShortAtkRate,15; @@ -165867,11 +165867,11 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"DK_SERVANTWEAPON_ATK",10; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus2 bSkillAtk,"DK_SERVANTWEAPON_ATK",10; } @@ -165955,7 +165955,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RK_WINDCUTTER",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -166055,7 +166055,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -166075,7 +166075,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bShortAtkRate,15; @@ -166440,7 +166440,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"SHC_IMPACT_CRATER",10; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",3*(.@r/2); if (.@r>=7) { @@ -166492,7 +166492,7 @@ Body: bonus bDelayrate,-10; bonus2 bSkillAtk,"GC_COUNTERSLASH",15; if (.@r>=9) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",25; if (.@r>=11) { bonus2 bAddSize,Size_All,15; @@ -166501,7 +166501,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"SHC_IMPACT_CRATER",10; if (.@g >= ENCHANTGRADE_C) { bonus bDelayrate,-5; @@ -166624,7 +166624,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -166674,7 +166674,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"GC_COUNTERSLASH",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -166732,7 +166732,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bHit,15; if (BaseLevel>=75) @@ -166806,7 +166806,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("AS_KATAR"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bDelayrate,-1*.@a; if (BaseLevel>=105) { bonus bShortAtkRate,10; @@ -166845,7 +166845,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -166886,7 +166886,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -166906,7 +166906,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bShortAtkRate,15; bonus bPAtk,1; @@ -166940,7 +166940,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -166961,7 +166961,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bShortAtkRate,15; @@ -167055,7 +167055,7 @@ Body: Script: | .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r+3*(min(BaseLevel,195)/15); if (.@r>=7) { bonus bShortAtkRate,getskilllv("BS_WEAPONRESEARCH"); @@ -167152,7 +167152,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"MT_AXE_STOMP",10; bonus2 bSkillAtk,"NC_AXETORNADO",3*(.@r/2); if (.@r>=7) { @@ -167214,11 +167214,11 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus2 bSkillAtk,"MT_AXE_STOMP",10; if (.@g >= ENCHANTGRADE_C) { bonus bPAtk,1; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_B) { bonus2 bSkillAtk,"MT_AXE_STOMP",10; } @@ -167317,7 +167317,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("BS_WEAPONRESEARCH"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bShortAtkRate,1*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"NC_AXETORNADO",-1000; @@ -167355,7 +167355,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -167373,7 +167373,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bShortAtkRate,15; @@ -167496,7 +167496,7 @@ Body: Refineable: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"LG_OVERBRAND",5*(.@r/2); if (.@r>=7) { bonus2 bSkillAtk,"LG_OVERBRAND",20; @@ -167573,7 +167573,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2+(min(BaseLevel,195)/15); + bonus bAtkRate,2+(min(BaseLevel,195)/15); bonus bMaxHP,250*.@r; bonus bMaxSP,20*.@r; if (.@r>=7) { @@ -167615,7 +167615,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"DK_MADNESS_CRUSHER",10; bonus2 bSkillAtk,"RK_HUNDREDSPEAR",3*(.@r/2); if (.@r>=7) { @@ -167716,7 +167716,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RK_HUNDREDSPEAR",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -167745,7 +167745,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus2 bSkillAtk,"KN_PIERCE",20; if (BaseLevel>=75) @@ -167778,7 +167778,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("RK_DRAGONTRAINING"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bDelayrate,-3*.@a; if (BaseLevel>=105) { bonus bVariableCastrate,-10; @@ -169001,7 +169001,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -169075,7 +169075,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("NJ_TOBIDOUGU"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,1*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"KO_JYUMONJIKIRI",-2000; @@ -169161,7 +169161,7 @@ Body: Script: | .@r = getrefine(); bonus bUnbreakableWeapon; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -169279,7 +169279,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"KO_JYUMONJIKIRI",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -169330,7 +169330,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"KO_HUUMARANKA",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -169377,7 +169377,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -169650,7 +169650,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r+3*(min(BaseLevel,195)/15); if (.@r>=7) { bonus bDelayrate,-1*(getskilllv("AC_VULTURE")/2); @@ -169696,7 +169696,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r+3*(min(BaseLevel,195)/15); if (.@r>=7) { bonus bLongAtkRate,getskilllv("AC_OWL"); @@ -169740,7 +169740,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r+3*(min(BaseLevel,195)/15); if (.@r>=7) { bonus bLongAtkRate,getskilllv("AC_VULTURE"); @@ -169752,7 +169752,7 @@ Body: } if (.@r>=11) { bonus2 bAddSize,Size_All,15; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; } if (.@r>=13) { bonus2 bSkillAtk,"RA_AIMEDBOLT",15; @@ -169786,7 +169786,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r+3*(min(BaseLevel,195)/15); if (.@r>=7) { bonus bLongAtkRate,2*getskilllv("BA_MUSICALLESSON"); @@ -169915,7 +169915,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"ABC_FRENZY_SHOT",10; bonus2 bSkillAtk,"SC_TRIANGLESHOT",3*(.@r/2); if (.@r>=7) { @@ -169959,7 +169959,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"WH_CRESCIVE_BOLT",10; bonus2 bSkillAtk,"RA_AIMEDBOLT",3*(.@r/2); if (.@r>=7) { @@ -170003,7 +170003,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"WH_GALESTORM",10; bonus2 bSkillAtk,"RA_ARROWSTORM",3*(.@r/2); if (.@r>=7) { @@ -170047,7 +170047,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",10; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",3*(.@r/2); if (.@r>=7) { @@ -170108,7 +170108,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus2 bSkillAtk,"WH_CRESCIVE_BOLT",10; if (.@g >= ENCHANTGRADE_C) { bonus bDelayrate,-5; @@ -170267,7 +170267,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"SC_TRIANGLESHOT",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -170318,7 +170318,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RA_ARROWSTORM",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -170368,7 +170368,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RA_AIMEDBOLT",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bPow,(.@r/3); @@ -170425,7 +170425,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -170454,7 +170454,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -170483,7 +170483,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bAspdRate,10; if (BaseLevel>=75) @@ -170512,7 +170512,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -170545,7 +170545,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("AC_VULTURE"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,1*.@a; if (BaseLevel>=105) { bonus bVariableCastrate,-10; @@ -170586,7 +170586,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("AC_OWL"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,1*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"RA_ARROWSTORM",-700; @@ -170624,7 +170624,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("AC_VULTURE"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bAspdRate,1*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"RA_AIMEDBOLT",-1000; @@ -170662,7 +170662,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -170681,7 +170681,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -170715,7 +170715,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -170733,7 +170733,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -170769,7 +170769,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (BaseLevel>=210) { bonus bPAtk,1; bonus bPow,2; @@ -170788,7 +170788,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -170894,7 +170894,7 @@ Body: bonus bBaseAtk,.@r/2*10; bonus2 bSkillAtk,"RL_FIREDANCE",.@r/3*2; if (.@r>=7) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,10; } if (.@r>=9) { @@ -170989,7 +170989,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bAspdRate,10; if (BaseLevel>=75) @@ -171019,7 +171019,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("GS_CHAINACTION"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,1*.@a; if (BaseLevel>=105) { bonus bLongAtkRate,10; @@ -171058,7 +171058,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -171153,7 +171153,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"NW_ONLY_ONE_BULLET",10; bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",10; bonus2 bSkillAtk,"RL_FIREDANCE",3*(.@r/2); @@ -171224,7 +171224,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RL_FIREDANCE",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bCon,(.@r/3); @@ -171259,7 +171259,7 @@ Body: bonus2 bMagicSubSize,Size_All,20; bonus2 bSkillAtk,"RL_FIREDANCE",25; if (.@r>=9) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus2 bSkillAtk,"RL_FIREDANCE",35; if (.@r>=11) { bonus2 bAddSize,Size_All,15; @@ -171268,7 +171268,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -171417,7 +171417,7 @@ Body: NoMail: true NoAuction: true Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (BaseLevel>=60) bonus bLongAtkRate,10; if (BaseLevel>=75) @@ -171500,7 +171500,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",10; bonus2 bSkillAtk,"NW_ONLY_ONE_BULLET",10; bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",3*(.@r/2); @@ -171572,7 +171572,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bCon,(.@r/3); @@ -171844,7 +171844,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RL_S_STORM",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bCon,(.@r/3); @@ -171891,7 +171891,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -172066,7 +172066,7 @@ Body: NoAuction: true Script: | .@a = getskilllv("GS_SINGLEACTION"); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,1*.@a; if (BaseLevel>=105) { bonus2 bSkillCooldown,"RL_FIRE_RAIN",-1000; @@ -172105,7 +172105,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,3*.@r; bonus bBaseAtk,3*(min(BaseLevel,195)/15); if (.@r>=7) { @@ -172201,7 +172201,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT_GUN_GATLING",10; bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",10; bonus2 bSkillAtk,"RL_R_TRIP",3*(.@r/2); @@ -172271,7 +172271,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RL_R_TRIP",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bCon,(.@r/3); @@ -172315,7 +172315,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; @@ -172516,7 +172516,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",10; bonus2 bSkillAtk,"NW_WILD_FIRE",10; bonus2 bSkillAtk,"RL_D_TAIL",3*(.@r/2); @@ -172587,7 +172587,7 @@ Body: if (.@g >= ENCHANTGRADE_C) { bonus2 bSkillAtk,"RL_D_TAIL",15; if (.@g >= ENCHANTGRADE_B) { - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; if (.@g >= ENCHANTGRADE_A) { bonus bPAtk,(.@r/3); bonus bCon,(.@r/3); @@ -172631,7 +172631,7 @@ Body: } } if (.@g >= ENCHANTGRADE_D) { - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@g >= ENCHANTGRADE_C) { bonus bLongAtkRate,15; bonus bPAtk,1; diff --git a/db/re/item_db_etc.yml b/db/re/item_db_etc.yml index 7806764010..7097c050ca 100644 --- a/db/re/item_db_etc.yml +++ b/db/re/item_db_etc.yml @@ -9718,7 +9718,7 @@ Body: DropEffect: CLIENT Script: | .@rate = ((getrefine()>14)?15:10); - bonus2 bAddClass,Class_All,.@rate; + bonus bAtkRate,.@rate; bonus3 bAutoSpell,"SM_MAGNUM",10,15; - Id: 4495 AegisName: Sealed_Amon_Ra_Card @@ -37112,7 +37112,7 @@ Body: SubType: Enchant Weight: 10 Script: | - autobonus "{ bonus bInt,50; bonus bMatkRate,15; bonus2 bAddClass,Class_All,-15; }",20,10000,BF_MAGIC; + autobonus "{ bonus bInt,50; bonus bMatkRate,15; bonus bAtkRate,-15; }",20,10000,BF_MAGIC; /* unknown rate */ - Id: 25702 AegisName: EP17_1_EVT35 @@ -37130,7 +37130,7 @@ Body: SubType: Enchant Weight: 10 Script: | - autobonus "{ bonus bStr,50; bonus2 bAddClass,Class_All,15; bonus bMatkRate,-15; }",20,10000,BF_WEAPON; + autobonus "{ bonus bStr,50; bonus bAtkRate,15; bonus bMatkRate,-15; }",20,10000,BF_WEAPON; /* unknown rate */ - Id: 25704 AegisName: EP17_1_EVT37 @@ -38245,7 +38245,7 @@ Body: Flags: DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus5 bAutoSpell,"SM_ENDURE",1,5,BF_SHORT,0; - Id: 27101 AegisName: SweetNightM_Card @@ -38960,7 +38960,7 @@ Body: DropEffect: CLIENT Script: | bonus bStr,4; - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; - Id: 27172 AegisName: Cowraiders3_Card Name: Scimitar Buffalo Bandit Card @@ -39660,7 +39660,7 @@ Body: Flags: DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bLongAtkRate,5; - Id: 27257 AegisName: Kuro_Akuma_Card @@ -39689,7 +39689,7 @@ Body: Flags: DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bAspdRate,5; - Id: 27259 AegisName: Rechenier_Card @@ -39830,7 +39830,7 @@ Body: DropEffect: CLIENT Script: | .@val = 10; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (getrefine() >= 10) { .@val += 5; } @@ -40007,7 +40007,7 @@ Body: Flags: DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 27304 AegisName: E_EA2S_Card Name: E EA2S Card @@ -40287,7 +40287,7 @@ Body: Flags: DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bMaxHPRate,-50; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player_Human,30; @@ -40371,7 +40371,7 @@ Body: Script: | .@r = getrefine(); bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",3,(1+.@r); - autobonus2 "{ bonus2 bAddClass,Class_All,25; bonus bMatkRate,25; }",(1+.@r),10000,BF_WEAPON|BF_MAGIC; + autobonus2 "{ bonus bAtkRate,25; bonus bMatkRate,25; }",(1+.@r),10000,BF_WEAPON|BF_MAGIC; autobonus3 "{ }",1000,5000,"NV_FIRSTAID","{ active_transform 3029,5000; }"; /* unknown rates */ - Id: 27328 @@ -40452,7 +40452,7 @@ Body: Flags: DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,25; + bonus bAtkRate,25; bonus2 bSubRace,RC_Demon,-5; - Id: 27335 AegisName: Chaotic_Baphomet_Junior_Card @@ -40710,7 +40710,7 @@ Body: Flags: DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 27355 AegisName: Contaminated_Raydric_Archer_Card Name: Contaminated Raydric Archer Card @@ -41473,7 +41473,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; bonus bHit,10; - Id: 29062 AegisName: Mettle2 @@ -41482,7 +41482,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,8; + bonus bAtkRate,8; bonus bHit,20; - Id: 29063 AegisName: Mettle3 @@ -41491,7 +41491,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,12; + bonus bAtkRate,12; bonus bHit,30; - Id: 29064 AegisName: Mettle4 @@ -41500,7 +41500,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,16; + bonus bAtkRate,16; bonus bHit,40; - Id: 29065 AegisName: Mettle5 @@ -41509,7 +41509,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,20; + bonus bAtkRate,20; bonus bHit,50; - Id: 29066 AegisName: Mettle6 @@ -41518,7 +41518,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,24; + bonus bAtkRate,24; bonus bHit,60; - Id: 29067 AegisName: Mettle7 @@ -41527,7 +41527,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,28; + bonus bAtkRate,28; bonus bHit,70; - Id: 29068 AegisName: Mettle8 @@ -41536,7 +41536,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,32; + bonus bAtkRate,32; bonus bHit,80; - Id: 29069 AegisName: Mettle9 @@ -41545,7 +41545,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,36; + bonus bAtkRate,36; bonus bHit,90; - Id: 29070 AegisName: Mettle10 @@ -41554,7 +41554,7 @@ Body: SubType: Enchant Buy: 10 Script: | - bonus2 bAddClass,Class_All,44; + bonus bAtkRate,44; bonus bHit,100; - Id: 29071 AegisName: MagicEessence1 @@ -43530,7 +43530,7 @@ Body: SubType: Enchant Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (.@r>=7) { bonus bBaseAtk,25; if (.@r>=9) { @@ -43694,7 +43694,7 @@ Body: Type: Card SubType: Enchant Script: | - autobonus "{ bonus bInt,50; bonus bMatkRate,15; bonus2 bAddClass,Class_All,-15; }",30,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }"; + autobonus "{ bonus bInt,50; bonus bMatkRate,15; bonus bAtkRate,-15; }",30,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }"; - Id: 29549 AegisName: Improve_Orb_L_DEX Name: Modification Orb(Firing Shot) @@ -43708,7 +43708,7 @@ Body: Type: Card SubType: Enchant Script: | - autobonus "{ bonus bStr,50; bonus2 bAddClass,Class_All,15; bonus bMatkRate,-15; }",30,10000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; }"; + autobonus "{ bonus bStr,50; bonus bAtkRate,15; bonus bMatkRate,-15; }",30,10000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; }"; - Id: 29551 AegisName: Improve_Orb_L_AGI Name: Modification Orb(Fatal Flash) @@ -44124,7 +44124,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bBaseAtk,2*(.@r/2); bonus bHit,3*(.@r/2); - bonus2 bAddClass,Class_All,(.@r/5); + bonus bAtkRate,(.@r/5); - Id: 29673 AegisName: Time_Jewely_Str_2 Name: Temporal Jewel (STR) Lv 2 @@ -44134,7 +44134,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bBaseAtk,4*(.@r/2); bonus bHit,5*(.@r/2); - bonus2 bAddClass,Class_All,2*(.@r/5); + bonus bAtkRate,2*(.@r/5); - Id: 29674 AegisName: Time_Jewely_Str_3 Name: Temporal Jewel (STR) Lv 3 @@ -44144,7 +44144,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bBaseAtk,7*(.@r/2); bonus bHit,7*(.@r/2); - bonus2 bAddClass,Class_All,3*(.@r/5); + bonus bAtkRate,3*(.@r/5); - Id: 29675 AegisName: Time_Jewely_Agi_1 Name: Temporal Jewel (AGI) Lv 1 @@ -44244,7 +44244,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bWeaponDamageRate,W_BOW,(.@r/2); bonus bHit,2*(.@r/2); - bonus2 bAddClass,Class_All,(.@r/5); + bonus bAtkRate,(.@r/5); - Id: 29685 AegisName: Time_Jewely_Dex_2 Name: Temporal Jewel (DEX) Lv 2 @@ -44254,7 +44254,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bWeaponDamageRate,W_BOW,2*(.@r/2); bonus bHit,5*(.@r/2); - bonus2 bAddClass,Class_All,2*(.@r/5); + bonus bAtkRate,2*(.@r/5); - Id: 29686 AegisName: Time_Jewely_Dex_3 Name: Temporal Jewel (DEX) Lv 3 @@ -44264,7 +44264,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bWeaponDamageRate,W_BOW,3*(.@r/2); bonus bHit,7*(.@r/2); - bonus2 bAddClass,Class_All,3*(.@r/5); + bonus bAtkRate,3*(.@r/5); - Id: 29687 AegisName: Time_Jewely_Luk_1 Name: Temporal Jewel (LUK) Lv 1 @@ -44274,7 +44274,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bCritAtkRate,3*(.@r/2); bonus bCritical,(.@r/2); - bonus2 bAddClass,Class_All,(.@r/5); + bonus bAtkRate,(.@r/5); - Id: 29688 AegisName: Time_Jewely_Luk_2 Name: Temporal Jewel (LUK) Lv 2 @@ -44284,7 +44284,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bCritAtkRate,6*(.@r/2); bonus bCritical,2*(.@r/2); - bonus2 bAddClass,Class_All,2*(.@r/5); + bonus bAtkRate,2*(.@r/5); - Id: 29689 AegisName: Time_Jewely_Luk_3 Name: Temporal Jewel (LUK) Lv 3 @@ -44294,7 +44294,7 @@ Body: .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bCritAtkRate,9*(.@r/2); bonus bCritical,3*(.@r/2); - bonus2 bAddClass,Class_All,3*(.@r/5); + bonus bAtkRate,3*(.@r/5); - Id: 29706 AegisName: Tenacity1 Name: Tenacity Lv1 @@ -44636,7 +44636,7 @@ Body: DropEffect: CLIENT Script: | .@r = getrefine()/2; - bonus2 bAddClass,Class_All,1+.@r; + bonus bAtkRate,1+.@r; bonus bMatkRate,1+.@r; bonus bMaxHPrate,-2*(1+.@r); - Id: 31018 @@ -44690,7 +44690,7 @@ Body: DropEffect: CLIENT Script: | bonus bAspdRate,10; - bonus2 bAddClass,Class_All,-3; + bonus bAtkRate,-3; - Id: 31022 AegisName: XM_Teddy_Bear_Card Name: Abandoned Teddy Bear Card @@ -44729,7 +44729,7 @@ Body: BuyingStore: true DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus5 bAutoSpell,"RK_IGNITIONBREAK",5,20,BF_WEAPON,1; - Id: 31025 AegisName: As_Wind_Ghost_Card @@ -44966,7 +44966,7 @@ Body: DropEffect: CLIENT Script: | bonus bUnbreakableArmor; - bonus2 bAddClass,Class_All,30; + bonus bAtkRate,30; bonus bMaxHPrate,-15; - Id: 300014 AegisName: Ingrid_Card @@ -44980,7 +44980,7 @@ Body: DropEffect: CLIENT Script: | bonus bUnbreakableArmor; - bonus2 bAddClass,Class_All,-15; + bonus bAtkRate,-15; bonus bMaxHPrate,40; bonus2 bHPLossRate,1000,4000; UnEquipScript: | @@ -44998,10 +44998,10 @@ Body: BuyingStore: true DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bMaxHPrate,-5; bonus bMaxSPrate,-5; - bonus2 bAddClass,Class_All,(getrefine()/4); + bonus bAtkRate,(getrefine()/4); - Id: 300016 AegisName: Treasure_Mimic_Card Name: Treasure Mimic Card @@ -45274,7 +45274,7 @@ Body: Script: | .@r = getrefine(); if (getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW) == W_BOOK) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bHit,20; } bonus bShortAtkRate,.@r; @@ -46073,7 +46073,7 @@ Body: DropEffect: CLIENT Script: | bonus bMaxHPrate,-5; - bonus2 bAddClass,Class_All,(getrefine()/3); + bonus bAtkRate,(getrefine()/3); - Id: 300151 AegisName: ILL_Kraken_Card Name: Deep Sea Kraken Card @@ -46285,7 +46285,7 @@ Body: Flags: DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bLongAtkRate,7; - Id: 300185 AegisName: MD_Geffen_Akuma_Card @@ -46794,7 +46794,7 @@ Body: DropEffect: CLIENT Script: | if (BaseJob == JOB_NOVICE) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bMaxHP,1500; } - Id: 300243 @@ -47121,7 +47121,7 @@ Body: DropEffect: CLIENT Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (getiteminfo(getequipid(EQI_HAND_R),11) == W_1HSWORD || getiteminfo(getequipid(EQI_HAND_R),11) == W_2HSWORD || getiteminfo(getequipid(EQI_HAND_R),11) == W_DAGGER) { bonus bShortAtkRate,10+2*(.@r/3); if (BaseLevel>=200) { @@ -47139,7 +47139,7 @@ Body: DropEffect: CLIENT Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; if (getiteminfo(getequipid(EQI_HAND_R),11) == W_1HSPEAR || getiteminfo(getequipid(EQI_HAND_R),11) == W_2HSPEAR) { bonus bLongAtkRate,10+2*(.@r/3); if (BaseLevel>=200) { @@ -47276,9 +47276,9 @@ Body: DropEffect: CLIENT Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,-10+3*(.@r/3); + bonus bAtkRate,-10+3*(.@r/3); if (.@r>=11) { - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; } - Id: 300275 AegisName: aegis_300275 @@ -47883,12 +47883,12 @@ Body: .@r = getrefine(); if (getrefine() < 12) { bonus bMaxHPrate,-30; - bonus2 bAddClass,Class_All,-10; + bonus bAtkRate,-10; bonus bMatkRate,-10; } else { bonus bMaxHPrate,30; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bMatkRate,10; } if (getequiparmorlv() == 2) { @@ -47907,7 +47907,7 @@ Body: BuyingStore: true DropEffect: CLIENT Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bMatkRate,5; .@r = getrefine(); bonus bPAtk,2*(.@r/3); @@ -48102,7 +48102,7 @@ Body: bonus bStr,10; bonus bMdef,3; bonus bDef,25; - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 310077 AegisName: Cassock_Agi Name: AGI Blessing @@ -48205,7 +48205,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bStr,3; - Id: 310087 AegisName: Automatic_Orb6 @@ -48328,7 +48328,7 @@ Body: SubType: Enchant Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bBaseAtk,75; if (.@r>=9) { bonus bShortAtkRate,2; @@ -48569,13 +48569,13 @@ Body: Script: | .@r = getrefine(); bonus bMatkRate,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r>=9) { bonus bMatkRate,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; if (.@r>=11) { bonus bMatkRate,4; - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; } } - Id: 310118 @@ -48653,7 +48653,7 @@ Body: Type: Card SubType: Enchant Script: | - autobonus "{ bonus bShortAtkRate,10; bonus2 bAddClass,Class_All,15; bonus bStr,50; }",30,10000,BF_WEAPON; + autobonus "{ bonus bShortAtkRate,10; bonus bAtkRate,15; bonus bStr,50; }",30,10000,BF_WEAPON; - Id: 310125 AegisName: Automatic_Orb44 Name: Automatic Orb(Fatal Flash) @@ -49653,35 +49653,35 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; - Id: 310198 AegisName: aegis_310198 Name: Anger Lv2 Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Id: 310199 AegisName: aegis_310199 Name: Anger Lv3 Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 310200 AegisName: aegis_310200 Name: Anger Lv4 Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 310201 AegisName: aegis_310201 Name: Anger Lv5 Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 310202 AegisName: aegis_310202 Name: Horror Lv1 @@ -49798,35 +49798,35 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; - Id: 310218 AegisName: aegis_310218 Name: Empathy Lv2 Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Id: 310219 AegisName: aegis_310219 Name: Empathy Lv3 Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 310220 AegisName: aegis_310220 Name: Empathy Lv4 Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; - Id: 310221 AegisName: aegis_310221 Name: Empathy Lv5 Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 310222 AegisName: aegis_310222 Name: Happiness Lv1 @@ -50675,7 +50675,7 @@ Body: SubType: Enchant Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bBaseAtk,25; if (.@r>=7) { bonus bShortAtkRate,3; @@ -50728,7 +50728,7 @@ Body: SubType: Enchant Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; bonus bBaseAtk,50; if (.@r>=7) { bonus bShortAtkRate,3; @@ -50781,7 +50781,7 @@ Body: SubType: Enchant Script: | .@r = getrefine(); - bonus2 bAddClass,Class_All,6; + bonus bAtkRate,6; bonus bBaseAtk,100; if (.@r>=7) { bonus bShortAtkRate,5; @@ -50869,16 +50869,16 @@ Body: Script: | .@r = getrefine(); bonus bMatkRate,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@r>=7) { bonus bMatkRate,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@r>=9) { bonus bMatkRate,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; if (.@r>=11) { bonus bMatkRate,4; - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; } } } @@ -52729,7 +52729,7 @@ Body: Type: Card SubType: Enchant Script: | - autobonus "{ bonus2 bAddClass,Class_All,25; bonus bVit,50; }",30,10000,BF_WEAPON; + autobonus "{ bonus bAtkRate,25; bonus bVit,50; }",30,10000,BF_WEAPON; - Id: 310610 AegisName: Wolf_Orb_Sp_Int Name: Wolf Orb (Spell Buster) @@ -53613,7 +53613,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; bonus bHit,10; - Id: 310693 AegisName: Star_Of_Mettle2 @@ -53621,7 +53621,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bHit,15; - Id: 310694 AegisName: Star_Of_Mettle3 @@ -53629,7 +53629,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bHit,20; bonus bPAtk,1; - Id: 310695 @@ -53638,7 +53638,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; bonus bHit,25; bonus bPAtk,2; - Id: 310696 @@ -53647,7 +53647,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,15; + bonus bAtkRate,15; bonus bHit,30; bonus bPAtk,4; - Id: 310697 @@ -53657,7 +53657,7 @@ Body: SubType: Enchant Script: | bonus bLongAtkRate,2; - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; - Id: 310698 AegisName: Star_Of_MasterArcher2 Name: Star of Master Archer Lv2 @@ -53665,7 +53665,7 @@ Body: SubType: Enchant Script: | bonus bLongAtkRate,3; - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Id: 310699 AegisName: Star_Of_MasterArcher3 Name: Star of Master Archer Lv3 @@ -53673,7 +53673,7 @@ Body: SubType: Enchant Script: | bonus bLongAtkRate,5; - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; bonus bPAtk,1; - Id: 310700 AegisName: Star_Of_MasterArcher4 @@ -53682,7 +53682,7 @@ Body: SubType: Enchant Script: | bonus bLongAtkRate,7; - bonus2 bAddClass,Class_All,6; + bonus bAtkRate,6; bonus bPAtk,2; - Id: 310701 AegisName: Star_Of_MasterArcher5 @@ -53691,7 +53691,7 @@ Body: SubType: Enchant Script: | bonus bLongAtkRate,10; - bonus2 bAddClass,Class_All,7; + bonus bAtkRate,7; bonus bPAtk,4; - Id: 310702 AegisName: Star_Of_Sharp1 @@ -54539,14 +54539,14 @@ Body: Type: Card SubType: Enchant Script: | - autobonus "{ bonus bAgi,100; bonus2 bAddClass,Class_All,10; }",5,10000,BF_WEAPON; + autobonus "{ bonus bAgi,100; bonus bAtkRate,10; }",5,10000,BF_WEAPON; - Id: 310914 AegisName: HeroInsignia_STR Name: Strength Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; - Id: 310915 AegisName: HeroInsignia_LUK Name: Luck @@ -55057,14 +55057,14 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,3; + bonus bAtkRate,3; - Id: 310987 AegisName: ATK_2Lv Name: ATK 2Lv Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,5; + bonus bAtkRate,5; - Id: 310988 AegisName: MATK_1Lv Name: MATK 1Lv @@ -55268,7 +55268,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,15+5*getenchantgrade(); + bonus bAtkRate,15+5*getenchantgrade(); - Id: 311017 AegisName: Gear_MATK Name: Clockwork (Matk) @@ -56407,7 +56407,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,6; + bonus bAtkRate,6; bonus bBaseAtk,100; .@r = getrefine(); if (.@r >= 7) { @@ -56425,7 +56425,7 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,6; + bonus bAtkRate,6; bonus bBaseAtk,100; .@r = getrefine(); if (.@r >= 7) { @@ -56478,17 +56478,17 @@ Body: Type: Card SubType: Enchant Script: | - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bMatkRate,2; .@r = getrefine(); if (.@r >= 7) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bMatkRate,2; if (.@r >= 9) { - bonus2 bAddClass,Class_All,2; + bonus bAtkRate,2; bonus bMatkRate,2; if (.@r >= 11) { - bonus2 bAddClass,Class_All,4; + bonus bAtkRate,4; bonus bMatkRate,4; } } @@ -56765,7 +56765,7 @@ Body: Type: Card SubType: Enchant Script: | - autobonus "{ bonus2 bAddClass,Class_All,25; bonus bVit,50; }",30,10000,BF_WEAPON; + autobonus "{ bonus bAtkRate,25; bonus bVit,50; }",30,10000,BF_WEAPON; - Id: 311121 AegisName: Ice_F_Orb_Sp_Int Name: Ice Magic Orb (Spell Buster) @@ -60074,7 +60074,7 @@ Body: bonus bLongAtkRate,5*(.@r/3); bonus bShortAtkRate,5*(.@r/3); if (.@r>=9) { - bonus2 bAddClass,Class_All,10; + bonus bAtkRate,10; if (.@r>=11 ) { bonus bPAtk,5; .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW); diff --git a/db/re/item_randomopt_db.yml b/db/re/item_randomopt_db.yml index 5d7ebc4837..0d1f987cdc 100644 --- a/db/re/item_randomopt_db.yml +++ b/db/re/item_randomopt_db.yml @@ -83,7 +83,7 @@ Body: - Id: 13 Option: VAR_ATKPERCENT Script: | - bonus2 bAddClass,Class_All,getrandomoptinfo(ROA_VALUE); + bonus bAtkRate,getrandomoptinfo(ROA_VALUE); - Id: 14 Option: VAR_MAGICATKPERCENT Script: | diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index 41efd80848..1b93f1d88a 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -42468,7 +42468,7 @@ Body: - Level: 10 Amount: 16 SpCost: 30 - Status: Watk_Element + Status: Sub_Weaponproperty - Id: 8203 Name: MS_BOWLINGBASH Description: Bowling_Bash diff --git a/db/re/status.yml b/db/re/status.yml index 62482da18b..96693fdce3 100644 --- a/db/re/status.yml +++ b/db/re/status.yml @@ -8157,3 +8157,12 @@ Body: NoClearance: true Fail: S_Manapotion: true + - Status: Sub_Weaponproperty + Flags: + NoBanishingBuster: true + NoDispell: true + NoClearance: true + NoRemoveOnDead: true + NoClearbuff: true + End: + Sub_Weaponproperty: true diff --git a/doc/item_bonus.txt b/doc/item_bonus.txt index 9839bb4dbf..89bc60463d 100644 --- a/doc/item_bonus.txt +++ b/doc/item_bonus.txt @@ -125,7 +125,7 @@ Atk/Def bonus bBaseAtk,n; Basic attack power + n bonus bAtk,n; ATK + n (unofficial) bonus bAtk2,n; ATK2 + n -bonus bAtkRate,n; Attack power + n% (unofficial) +bonus bAtkRate,n; ATK + n% that won't interfere with Damage modifier and SC_EDP (renewal mode only) bonus bWeaponAtkRate,n; Weapon ATK + n% bonus bMatk,n; Magical attack power + n bonus bMatkRate,n; Magical attack power + n% diff --git a/src/map/battle.cpp b/src/map/battle.cpp index f2befb51e5..0a1ba7fe86 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -883,8 +883,10 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li cardfix = cardfix * (100 + sd->right_weapon.addclass[tstatus->class_] + sd->left_weapon.addclass[tstatus->class_] + sd->right_weapon.addclass[CLASS_ALL] + sd->left_weapon.addclass[CLASS_ALL]) / 100; } +#ifndef RENEWAL if( sd->status.weapon == W_KATAR && (skill = pc_checkskill(sd,ASC_KATAR)) > 0 ) // Adv. Katar Mastery functions similar to a +%ATK card on official [helvetica] cardfix = cardfix * (100 + (10 + 2 * skill)) / 100; +#endif } //! CHECKME: These right & left hand weapon ignores 'left_cardfix_to_right'? @@ -2232,7 +2234,7 @@ static int battle_calc_status_attack(struct status_data *status, short hand) * @param sd Player * @return Base weapon damage */ -static int battle_calc_base_weapon_attack(struct block_list *src, struct status_data *tstatus, struct weapon_atk *wa, struct map_session_data *sd) +static int battle_calc_base_weapon_attack(struct block_list *src, struct status_data *tstatus, struct weapon_atk *wa, struct map_session_data *sd, bool critical) { struct status_data *status = status_get_status_data(src); uint8 type = (wa == &status->lhw)?EQI_HAND_L:EQI_HAND_R; @@ -2270,7 +2272,7 @@ static int battle_calc_base_weapon_attack(struct block_list *src, struct status_ atkmin = max(0, (int)(atkmin - variance + base_stat_bonus)); atkmax = min(UINT16_MAX, (int)(atkmax + variance + base_stat_bonus)); - if (sc && sc->data[SC_MAXIMIZEPOWER]) + if ((sc && sc->data[SC_MAXIMIZEPOWER]) || critical == true) damage = atkmax; else damage = rnd_value(atkmin, atkmax); @@ -3486,6 +3488,7 @@ static void battle_calc_damage_parts(struct Damage* wd, struct block_list *src,s struct status_data *sstatus = status_get_status_data(src); struct status_data *tstatus = status_get_status_data(target); struct map_session_data *sd = BL_CAST(BL_PC, src); + bool critical = false; int right_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_R, false); int left_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_L, false); @@ -3501,10 +3504,25 @@ static void battle_calc_damage_parts(struct Damage* wd, struct block_list *src,s wd->statusAtk2 = battle_attr_fix(src, target, wd->statusAtk, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); } - wd->weaponAtk += battle_calc_base_weapon_attack(src, tstatus, &sstatus->rhw, sd); - wd->weaponAtk = battle_attr_fix(src, target, wd->weaponAtk, right_element, tstatus->def_ele, tstatus->ele_lv); + // Check critical + if (wd->type == DMG_MULTI_HIT_CRITICAL || wd->type == DMG_CRITICAL) + critical = true; - wd->weaponAtk2 += battle_calc_base_weapon_attack(src, tstatus, &sstatus->lhw, sd); + wd->weaponAtk += battle_calc_base_weapon_attack(src, tstatus, &sstatus->rhw, sd, critical); + wd->weaponAtk2 += battle_calc_base_weapon_attack(src, tstatus, &sstatus->lhw, sd, critical); + + // Weapon ATK gain bonus from SC_SUB_WEAPONPROPERTY here ( +x% pseudo element damage) + if (sd && sd->sc.data[SC_SUB_WEAPONPROPERTY]) { + int64 bonus_atk = (int64)floor((float)( wd->weaponAtk * sd->sc.data[SC_SUB_WEAPONPROPERTY]->val2 / 100)); + int64 bonus_atk2 = (int64)floor((float)( wd->weaponAtk2 * sd->sc.data[SC_SUB_WEAPONPROPERTY]->val2 / 100)); + bonus_atk = battle_attr_fix(src, target, bonus_atk, sd->sc.data[SC_SUB_WEAPONPROPERTY]->val1, tstatus->def_ele, tstatus->ele_lv); + bonus_atk2 = battle_attr_fix(src, target, bonus_atk2, sd->sc.data[SC_SUB_WEAPONPROPERTY]->val1, tstatus->def_ele, tstatus->ele_lv); + + wd->weaponAtk += bonus_atk; + wd->weaponAtk2 += bonus_atk2; + } + + wd->weaponAtk = battle_attr_fix(src, target, wd->weaponAtk, right_element, tstatus->def_ele, tstatus->ele_lv); wd->weaponAtk2 = battle_attr_fix(src, target, wd->weaponAtk2, left_element, tstatus->def_ele, tstatus->ele_lv); wd->equipAtk += battle_calc_equip_attack(src, skill_id); @@ -3513,6 +3531,12 @@ static void battle_calc_damage_parts(struct Damage* wd, struct block_list *src,s wd->equipAtk2 += battle_calc_equip_attack(src, skill_id); wd->equipAtk2 = battle_attr_fix(src, target, wd->equipAtk2, left_element, tstatus->def_ele, tstatus->ele_lv); + // AtkRate gives a static bonus from (W.ATK + E.ATK) + if (sd && sd->bonus.atk_rate) { + wd->percentAtk = (wd->weaponAtk + wd->equipAtk) * sd->bonus.atk_rate / 100; + wd->percentAtk2 = (wd->weaponAtk2 + wd->equipAtk2) * sd->bonus.atk_rate / 100; + } + //Mastery ATK is a special kind of ATK that has no elemental properties //Because masteries are not elemental, they are unaffected by Ghost armors or Raydric Card battle_calc_attack_masteries(wd, src, target, skill_id, skill_lv); @@ -3734,10 +3758,6 @@ static void battle_calc_skill_base_damage(struct Damage* wd, struct block_list * if(sd) { int skill; - if (sd->bonus.atk_rate) { - ATK_ADDRATE(wd->damage, wd->damage2, sd->bonus.atk_rate); - RE_ALLATK_ADDRATE(wd, sd->bonus.atk_rate); - } #ifndef RENEWAL if(sd->bonus.crit_atk_rate && is_attack_critical(wd, src, target, skill_id, skill_lv, false)) { // add +crit damage bonuses here in pre-renewal mode [helvetica] ATK_ADDRATE(wd->damage, wd->damage2, sd->bonus.crit_atk_rate); @@ -5487,10 +5507,10 @@ static void battle_attack_sc_bonus(struct Damage* wd, struct block_list *src, st #ifdef RENEWAL default: // fall through to apply EDP bonuses // Renewal EDP formula [helvetica] - // weapon atk * (1 + (edp level * .8)) - // equip atk * (1 + (edp level * .6)) - ATK_RATE(wd->weaponAtk, wd->weaponAtk2, 100 + (sc->data[SC_EDP]->val1 * 80)); - ATK_RATE(wd->equipAtk, wd->equipAtk2, 100 + (sc->data[SC_EDP]->val1 * 60)); + // weapon atk * (2.5 + (edp level * .3)) + // equip atk * (2.5 + (edp level * .3)) + ATK_RATE(wd->weaponAtk, wd->weaponAtk2, 250 + (sc->data[SC_EDP]->val1 * 30)); + ATK_RATE(wd->equipAtk, wd->equipAtk2, 250 + (sc->data[SC_EDP]->val1 * 30)); break; #else default: @@ -5910,7 +5930,11 @@ static void battle_calc_attack_left_right_hands(struct Damage* wd, struct block_ } else if(sd->status.weapon == W_KATAR && !skill_id) { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2) skill = pc_checkskill(sd,TF_DOUBLE); wd->damage2 = (int64)wd->damage * (1 + (skill * 2))/100; +#ifdef RENEWAL + } else if(is_attack_right_handed(src, skill_id) && is_attack_left_handed(src, skill_id) && sd->status.weapon != W_KATAR) { //Dual-wield +#else } else if(is_attack_right_handed(src, skill_id) && is_attack_left_handed(src, skill_id)) { //Dual-wield +#endif if (wd->damage) { if( (sd->class_&MAPID_BASEMASK) == MAPID_THIEF ) { skill = pc_checkskill(sd,AS_RIGHT); @@ -6010,15 +6034,17 @@ static void battle_calc_attack_gvg_bg(struct Damage* wd, struct block_list *src, wd->damage2 = battle_calc_bg_damage(src,target,wd->damage2,skill_id,wd->flag); } else { - int64 d1 = wd->damage + wd->damage2,d2 = wd->damage2; - wd->damage = battle_calc_damage(src,target,wd,d1,skill_id,skill_lv); - if( mapdata_flag_gvg2(mapdata) ) - wd->damage = battle_calc_gvg_damage(src,target,wd->damage,skill_id,wd->flag); - else if( mapdata->flag[MF_BATTLEGROUND] ) - wd->damage = battle_calc_bg_damage(src,target,wd->damage,skill_id,wd->flag); - wd->damage2 = (int64)d2*100/d1 * wd->damage/100; + wd->damage = battle_calc_damage(src, target, wd, wd->damage, skill_id, skill_lv); + wd->damage2 = battle_calc_damage(src, target, wd, wd->damage2, skill_id, skill_lv); + if (mapdata_flag_gvg2(mapdata)) { + wd->damage = battle_calc_gvg_damage(src, target, wd->damage, skill_id, wd->flag); + wd->damage2 = battle_calc_gvg_damage(src, target, wd->damage2, skill_id, wd->flag); + } + else if (mapdata->flag[MF_BATTLEGROUND]) { + wd->damage = battle_calc_bg_damage(src, target, wd->damage, skill_id, wd->flag); + wd->damage2 = battle_calc_bg_damage(src, target, wd->damage2, skill_id, wd->flag); + } if(wd->damage > 1 && wd->damage2 < 1) wd->damage2 = 1; - wd->damage-=wd->damage2; } } } @@ -6151,6 +6177,7 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block wd.damage = wd.damage2 = #ifdef RENEWAL wd.statusAtk = wd.statusAtk2 = wd.equipAtk = wd.equipAtk2 = wd.weaponAtk = wd.weaponAtk2 = wd.masteryAtk = wd.masteryAtk2 = + wd.percentAtk = wd.percentAtk2 = #endif 0; @@ -6406,14 +6433,16 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl if(!is_attack_hitting(&wd, src, target, skill_id, skill_lv, true)) wd.dmg_lv = ATK_FLEE; else if(!(infdef = is_infinite_defense(target, wd.flag))) { //no need for math against plants - int64 ratio = 0; - int i = 0; battle_calc_skill_base_damage(&wd, src, target, skill_id, skill_lv); // base skill damage + + int64 ratio = 0; + +#ifndef RENEWAL ratio = battle_calc_attack_skill_ratio(&wd, src, target, skill_id, skill_lv); // skill level ratios ATK_RATE(wd.damage, wd.damage2, ratio); - RE_ALLATK_RATE(&wd, ratio); +#endif int64 bonus_damage = battle_calc_skill_constant_addition(&wd, src, target, skill_id, skill_lv); // other skill bonuses @@ -6429,15 +6458,16 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl ATK_ADD(wd.weaponAtk, wd.weaponAtk2, sstatus->matk_min); } #endif + + int i = 0; + +#ifndef RENEWAL // add any miscellaneous player ATK bonuses - if( sd && skill_id && (i = pc_skillatk_bonus(sd, skill_id))) { + if( sd && skill_id && (i = pc_skillatk_bonus(sd, skill_id))) ATK_ADDRATE(wd.damage, wd.damage2, i); - RE_ALLATK_ADDRATE(&wd, i); - } - if (tsd && (i = pc_sub_skillatk_bonus(tsd, skill_id))) { + if (tsd && (i = pc_sub_skillatk_bonus(tsd, skill_id))) ATK_ADDRATE(wd.damage, wd.damage2, -i); - RE_ALLATK_ADDRATE(&wd, -i); - } +#endif #ifdef RENEWAL // In Renewal we only cardfix to the weapon and equip ATK @@ -6472,15 +6502,42 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl battle_attack_sc_bonus(&wd, src, target, skill_id, skill_lv); if (sd) { //monsters, homuns and pets have their damage computed directly - wd.damage = (wd.statusAtk + wd.weaponAtk + wd.equipAtk) * (100 + sstatus->patk) / 100 + wd.masteryAtk + bonus_damage; + wd.damage = (int64)floor((float)((wd.statusAtk + wd.weaponAtk + wd.equipAtk + wd.percentAtk) * (100 + sstatus->patk) / 100 + wd.masteryAtk + bonus_damage)); if (is_attack_left_handed(src, skill_id)) - wd.damage2 = (wd.statusAtk2 + wd.weaponAtk2 + wd.equipAtk2) * (100 + sstatus->patk) / 100 + wd.masteryAtk2 + bonus_damage; + wd.damage2 = (int64)floor((float)((wd.statusAtk2 + wd.weaponAtk2 + wd.equipAtk2 + wd.percentAtk2) * (100 + sstatus->patk) / 100 + wd.masteryAtk2 + bonus_damage)); + + // CritAtkRate modifier + if (wd.type == DMG_CRITICAL || wd.type == DMG_MULTI_HIT_CRITICAL) { + if (skill_id > 0) { + wd.damage += (int64)floor((float)(wd.damage * sd->bonus.crit_atk_rate / 200)); + if (is_attack_left_handed(src, skill_id)) + wd.damage2 += (int64)floor((float)(wd.damage2 * sd->bonus.crit_atk_rate / 200)); + } + else { + wd.damage += (int64)floor((float)(wd.damage * sd->bonus.crit_atk_rate / 100)); + if (is_attack_left_handed(src, skill_id)) + wd.damage2 += (int64)floor((float)(wd.damage2 * sd->bonus.crit_atk_rate / 100)); + } + } + if (wd.flag & BF_SHORT) ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.short_attack_atk_rate); if(wd.flag&BF_LONG && (skill_id != RA_WUGBITE && skill_id != RA_WUGSTRIKE)) //Long damage rate addition doesn't use weapon + equip attack ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.long_attack_atk_rate); } + ratio = battle_calc_attack_skill_ratio(&wd, src, target, skill_id, skill_lv); // skill level ratios + + ATK_RATE(wd.damage, wd.damage2, ratio); + + // Advance Katar Mastery + if (sd) { + uint16 katar_skill; + + if (sd->status.weapon == W_KATAR && (katar_skill = pc_checkskill(sd, ASC_KATAR)) > 0) // Adv. Katar Mastery applied after calculate with skillratio. + ATK_ADDRATE(wd.damage, wd.damage2, (10 + 2 * katar_skill)); + } + // Res reduces physical damage by a percentage and // is calculated before DEF and other reductions. // This should be the official formula. [Rytech] @@ -6510,6 +6567,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl wd.damage = wd.damage * (5000 + res) / (5000 + 10 * res); wd.damage2 = wd.damage2 * (5000 + res) / (5000 + 10 * res); } + #else // final attack bonuses that aren't affected by cards battle_attack_sc_bonus(&wd, src, target, skill_id, skill_lv); @@ -6521,6 +6579,18 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl battle_calc_attack_post_defense(&wd, src, target, skill_id, skill_lv); } + +#ifdef RENEWAL + // add any miscellaneous player ATK bonuses + if( sd && skill_id && (i = pc_skillatk_bonus(sd, skill_id))) { + ATK_ADDRATE(wd.damage, wd.damage2, i); + RE_ALLATK_ADDRATE(&wd, i); + } + if (tsd && (i = pc_sub_skillatk_bonus(tsd, skill_id))) { + ATK_ADDRATE(wd.damage, wd.damage2, -i); + RE_ALLATK_ADDRATE(&wd, -i); + } +#endif } battle_calc_element_damage(&wd, src, target, skill_id, skill_lv); @@ -6531,22 +6601,14 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl #ifdef RENEWAL if (is_attack_critical(&wd, src, target, skill_id, skill_lv, false)) { if (sd) { //Check for player so we don't crash out, monsters don't have bonus crit rates [helvetica] - if (skill_id > 0) - wd.damage = (int64)floor((float)((wd.damage * (140 + sstatus->crate)) / 100 * (100 + (sd->bonus.crit_atk_rate / 2))) / 100); - else - wd.damage = (int64)floor((float)((wd.damage * (140 + sstatus->crate)) / 100 * (100 + sd->bonus.crit_atk_rate)) / 100); - if (is_attack_left_handed(src, skill_id)) { - if (skill_id > 0) - wd.damage2 = (int64)floor((float)((wd.damage2 * (140 + sstatus->crate)) / 100 * (100 + (sd->bonus.crit_atk_rate / 2))) / 100); - else - wd.damage2 = (int64)floor((float)((wd.damage2 * (140 + sstatus->crate)) / 100 * (100 + sd->bonus.crit_atk_rate)) / 100); - } + wd.damage = (int64)floor((float)((wd.damage * (1.4f + (0.01f * sstatus->crate))))); + if (is_attack_left_handed(src, skill_id)) + wd.damage2 = (int64)floor((float)((wd.damage2 * (1.4f + (0.01f * sstatus->crate))))); } else - wd.damage = (int64)floor((float)(wd.damage * 140) / 100); + wd.damage = (int64)floor((float)(wd.damage * 1.4f)); - if (tsd && tsd->bonus.crit_def_rate != 0) { + if (tsd && tsd->bonus.crit_def_rate != 0) ATK_ADDRATE(wd.damage, wd.damage2, -tsd->bonus.crit_def_rate); - } } #endif diff --git a/src/map/battle.hpp b/src/map/battle.hpp index 296acddc64..52293f65c9 100644 --- a/src/map/battle.hpp +++ b/src/map/battle.hpp @@ -72,7 +72,7 @@ enum e_battle_check_target : uint32 { /// Damage structure struct Damage { #ifdef RENEWAL - int64 statusAtk, statusAtk2, weaponAtk, weaponAtk2, equipAtk, equipAtk2, masteryAtk, masteryAtk2; + int64 statusAtk, statusAtk2, weaponAtk, weaponAtk2, equipAtk, equipAtk2, masteryAtk, masteryAtk2, percentAtk, percentAtk2; #endif int64 damage, /// Right hand damage damage2; /// Left hand damage diff --git a/src/map/script_constants.hpp b/src/map/script_constants.hpp index 8945e0802e..c838131f03 100644 --- a/src/map/script_constants.hpp +++ b/src/map/script_constants.hpp @@ -1842,6 +1842,7 @@ export_constant(SC_POISON_SHIELD_OPTION); export_constant(SC_M_LIFEPOTION); export_constant(SC_S_MANAPOTION); + export_constant(SC_SUB_WEAPONPROPERTY); #ifdef RENEWAL export_constant(SC_EXTREMITYFIST2); diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 9a1f843ab3..59f8ad0711 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -7503,7 +7503,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill_castend_damage_id); clif_skill_nodamage (src,src,skill_id,skill_lv,1); // Initiate 20% of your damage becomes fire element. +#ifdef RENEWAL + sc_start4(src,src,SC_SUB_WEAPONPROPERTY,100,3,20,skill_id,0,skill_get_time2(skill_id, skill_lv)); +#else sc_start4(src,src,SC_WATK_ELEMENT,100,3,20,0,0,skill_get_time2(skill_id, skill_lv)); +#endif break; case TK_JUMPKICK: @@ -7570,7 +7574,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case HW_MAGICPOWER: case PF_MEMORIZE: case PA_SACRIFICE: +#ifndef RENEWAL case ASC_EDP: +#endif case PF_DOUBLECASTING: case SG_SUN_COMFORT: case SG_MOON_COMFORT: @@ -7661,6 +7667,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; +#ifdef RENEWAL + // EDP also give +25% WATK poison pseudo element to user. + case ASC_EDP: + clif_skill_nodamage(src,bl,skill_id,skill_lv, + sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + sc_start4(src,src,SC_SUB_WEAPONPROPERTY,100,5,25,skill_id,0,skill_get_time2(skill_id, skill_lv)); + break; +#endif + case LG_SHIELDSPELL: if (skill_lv == 1) type = SC_SHIELDSPELL_HP; diff --git a/src/map/status.cpp b/src/map/status.cpp index 8d991b02d6..f320d472a3 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -12319,6 +12319,16 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_DEEP_POISONING_OPTION: val3 = ELE_POISON; break; + case SC_SUB_WEAPONPROPERTY: + if (sd && val3 == ASC_EDP) { + uint16 poison_level = pc_checkskill(sd, GC_RESEARCHNEWPOISON); + + if (poison_level > 0) { + tick += 30000; // Base of 30 seconds + tick += poison_level * 15 * 1000; // Additional 15 seconds per level + } + } + break; default: if (calc_flag.none() && scdb->skill_id == 0 && scdb->icon == EFST_BLANK && scdb->opt1 == OPT1_NONE && scdb->opt2 == OPT2_NONE && scdb->state.none() && scdb->flag.none() && scdb->end.empty() && scdb->endreturn.empty() && scdb->fail.empty()) { diff --git a/src/map/status.hpp b/src/map/status.hpp index 2d48745402..06162ee1d6 100644 --- a/src/map/status.hpp +++ b/src/map/status.hpp @@ -1229,6 +1229,8 @@ enum sc_type : int16 { SC_M_LIFEPOTION, SC_S_MANAPOTION, + SC_SUB_WEAPONPROPERTY, + #ifdef RENEWAL SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled #endif