Added "bonus2 bMagicSubDefEle,e,x;" (#4375)

* "+x% magic damage reduction from enemy with defense element e"
* Corrected random option script: RDMOPT_MDAMAGE_PROPERTY_element_USER
* Fixes #1706: Fire Golem Card (27029)
* Corrected Books of Apocalypse (1557) script
* Applied bMagicSubDefEle bonus to some items
This commit is contained in:
Cydh Ramdh 2020-08-04 22:04:30 +07:00 committed by GitHub
parent e1055e5afc
commit b898c9bc29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 55 additions and 47 deletions

View File

@ -1118,16 +1118,16 @@
24168:24169:24345:24346:24423:24424,{ if ((getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)) >= 54) { bonus2 bIgnoreDefClassRate,Class_Normal,20; } }
24180:24181:24182:24183:24184:24185,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus bAllStats,1; if(.@r>=45) { bonus bMaxHPrate,(.@r-60); bonus bNoWalkDelay; } }
24180:24181:24182:24183:24184:24321,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus bAllStats,1; if (.@r >= 45) { bonus bMaxHPrate,(.@r-60); bonus bNoWalkDelay; } }
24186:24198,{ bonus2 bSubEle,Ele_Neutral,2; }
24187:24199,{ bonus2 bSubEle,Ele_Dark,2; }
24188:24200,{ bonus2 bSubEle,Ele_Water,2; }
24189:24201,{ bonus2 bSubEle,Ele_Earth,2; }
24190:24202,{ bonus2 bSubEle,Ele_Fire,2; }
24191:24203,{ bonus2 bSubEle,Ele_Wind,2; }
24192:24204,{ bonus2 bSubEle,Ele_Poison,2; }
24193:24205,{ bonus2 bSubEle,Ele_Holy,2; }
24194:24206,{ bonus2 bSubEle,Ele_Ghost,2; }
24195:24207,{ bonus2 bSubEle,Ele_Undead,2; }
24186:24198,{ bonus2 bSubDefEle,Ele_Neutral,2; bonus2 bMagicSubDefEle,Ele_Neutral,2; }
24187:24199,{ bonus2 bSubDefEle,Ele_Dark,2; bonus2 bMagicSubDefEle,Ele_Dark,2; }
24188:24200,{ bonus2 bSubDefEle,Ele_Water,2; bonus2 bMagicSubDefEle,Ele_Water,2; }
24189:24201,{ bonus2 bSubDefEle,Ele_Earth,2; bonus2 bMagicSubDefEle,Ele_Earth,2; }
24190:24202,{ bonus2 bSubDefEle,Ele_Fire,2; bonus2 bMagicSubDefEle,Ele_Fire,2; }
24191:24203,{ bonus2 bSubDefEle,Ele_Wind,2; bonus2 bMagicSubDefEle,Ele_Wind,2; }
24192:24204,{ bonus2 bSubDefEle,Ele_Poison,2; bonus2 bMagicSubDefEle,Ele_Poison,2; }
24193:24205,{ bonus2 bSubDefEle,Ele_Holy,2; bonus2 bMagicSubDefEle,Ele_Holy,2; }
24194:24206,{ bonus2 bSubDefEle,Ele_Ghost,2; bonus2 bMagicSubDefEle,Ele_Ghost,2; }
24195:24207,{ bonus2 bSubDefEle,Ele_Undead,2; bonus2 bMagicSubDefEle,Ele_Undead,2; }
24196:24197,{ bonus bFlee,5; if(getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ARMOR)>=15) bonus bSpeedAddRate,3; }
24197:24320,{ bonus bFlee,5; if ((getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHOES)) >= 15) { bonus bSpeedRate,25; /* unknown value */ } }
24208:24209,{ bonus2 bExpAddRace,RC_All,((getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_SHIELD))>=15?10:1); }

View File

@ -914,7 +914,7 @@
1554,Book_Of_Mother_Earth,Book of Mother Earth,5,35000,,750,90,,1,0,0x00410100,63,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Earth; },{},{}
1555,Book_Of_Blazing_Sun,Book of the Blazing Sun,5,35000,,750,90,,1,0,0x00410100,63,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Fire; },{},{}
1556,Book_Of_Gust_Of_Wind,Book of Gust of Wind,5,35000,,750,90,,1,0,0x00410100,63,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Wind; },{},{}
1557,Book_Of_The_Apocalypse,Book of the Apocalypse,5,60000,,800,120,,1,0,0x00410100,63,2,2,4,40,1,15,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEle,Ele_Holy,5; bonus2 bAddEle,Ele_Water,7; bonus2 bAddEle,Ele_Earth,7; bonus2 bAddEle,Ele_Fire,7; bonus2 bAddEle,Ele_Wind,7; },{},{}
1557,Book_Of_The_Apocalypse,Book of the Apocalypse,5,60000,,800,120,,1,0,0x00410100,63,2,2,4,40,1,15,{ bonus bAtkEle,Ele_Dark; bonus2 bSubDefEle,Ele_Holy,-5; bonus2 bAddEle,Ele_Water,7; bonus2 bAddEle,Ele_Earth,7; bonus2 bAddEle,Ele_Fire,7; bonus2 bAddEle,Ele_Wind,7; },{},{}
1558,Girl's_Diary,Girl's Diary,5,1500,,300,60,,1,1,0x00410100,63,2,2,4,40,1,15,{ bonus2 bAddDamageClass,1188,150; },{},{}
1559,Legacy_Of_Dragon,Legacy of Dragon,5,20,,700,130,,1,0,0x00410100,63,2,2,4,70,1,15,{ bonus bInt,3; bonus bIgnoreDefRace,RC_Dragon; bonus2 bSPGainRace,RC_Dragon,10; },{},{}
1560,Diary_Of_Great_Sage,Sage's Diary,5,20,,1100,100:120,,1,2,0x00410100,63,2,2,3,60,1,15,{ if(readparam(bStr)>=50) bonus bAspdRate,5; if(readparam(bInt)>=70) bonus bMatkRate,5; },{},{}
@ -1379,24 +1379,24 @@
2155,Academy_Shield,Academy Shield,4,0,,1500,,3,,1,0xFFFFFFFE,63,2,32,,0,1,4,{},{},{}
2156,Bible_Of_Promise1,Bible of Promise(1st Vol.),4,20,,500,,10,,1,0x00000100,63,2,32,,110,1,5,{ bonus bMdef,2; skill "ALL_ODINS_POWER",1; },{},{}
2157,Insecticide,Pesticide,4,20,,100,,0,,0,0xFFFFFFFF,63,2,32,,0,1,3,{},{},{}
2158,Ramor_Shield_Undead,Ramorushirudo,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubEle,Ele_Undead,5; bonus2 bSubRace,RC_DemiHuman,-5; },{},{}
2159,Sharel_Shield,Sharerushirudo,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{},{},{}
2158,Ramor_Shield_Undead,Ramor Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Undead,5; bonus2 bMagicSubDefEle,Ele_Undead,5; bonus2 bSubRace,RC_DemiHuman,5; },{},{}
2159,Sharel_Shield,Sharel Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Fire,5; bonus2 bMagicSubDefEle,Ele_Fire,5; bonus2 bSubRace,RC_Demon,5; },{},{}
2160,Giant_Shield,Giant Shield,4,56000,,2800,,130,,1,0x00004082,63,2,32,,100,1,3,{ bonus2 bSubSize,Size_Large,5; if(getrefine()>=9){ bonus2 bSubSize,Size_Large,5; } },{},{}
2161,Geffenia_Book_Water,Geffenia Tomb of Water,4,56000,,1000,,30,,1,0x00000200,63,2,32,,100,1,5,{ bonus bMdef,2; bonus bInt,1; if(readparam(bInt)>=120){ bonus bMatk,10; bonus bMaxHP,800; } },{},{}
2162,Bible_Of_Promise2,Bible of Promise(2nd Vol.),4,20,,500,,20,,1,0x00000100,63,2,32,,140,1,5,{ bonus bMdef,5; skill "ALL_ODINS_POWER",2; bonus bHealPower,5; },{},{}
2163,Flow_Shield,Floor Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{},{},{}
2164,Sombre_Shield,Bull Son Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Dark,5; bonus2 bSubDefEle,Ele_Fire,5; },{},{}
2165,Sol_Shield,Sol Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{},{},{}
2163,Flow_Shield,Flow Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Water,5; bonus2 bMagicSubDefEle,Ele_Water,5; bonus2 bSubRace,RC_Brute,-5; },{},{}
2164,Sombre_Shield,Sombre Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Dark,5; bonus2 bMagicSubDefEle,Ele_Dark,5; bonus2 bSubRace,RC_Undead,-5; },{},{}
2165,Sol_Shield,Sol Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Earth,5; bonus2 bMagicSubDefEle,Ele_Earth,5; bonus2 bSubRace,RC_Plant,-5; },{},{}
2166,Exorcism_Bible_,Devil's Bible Drive,4,20,,600,,80,,1,0x00008100,63,2,32,,50,1,5,{ bonus bInt,1; },{},{}
2167,Poison_Shield,Poison Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{},{},{}
2167,Poison_Shield,Poison Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Poison,5; bonus2 bMagicSubDefEle,Ele_Poison,5; bonus2 bSubRace,RC_Plant,-5; },{},{}
2168,Immuned_Shield,Immune Shield,4,20,,700,,55,,1,0xFFFFFFFF,63,2,32,,1,1,4,{ .@r = getrefine(); if (.@r>=5) bonus2 bSubEle,Ele_Neutral,min(.@r,12)-4; if(.@r>6) bonus2 bSubEle,Ele_Neutral,5; if(.@r>8) { bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Wind,5; bonus2 bSubEle,Ele_Earth,5; } },{},{}
2169,Kalasak,Kalasag,4,20,,400,,40,,0,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus2 bSubClass,Class_Boss,getrefine()/3; },{},{}
2170,Bayani_Kalasak,Bayani Kalasag,4,20,,400,,40,,1,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus2 bSubClass,Class_Boss,getrefine()/3; },{},{}
2171,Fox_Armguard,Fox Wrist Guard,4,40000,,200,,45,,1,0x02000000,63,2,32,,100,1,1,{ bonus bFlee,5; },{},{}
2172,Wolf_Armguard,Wolf Wrist Guard,4,45000,,250,,70,,1,0x02000000,63,2,32,,100,1,1,{ autobonus "{ bonus bBaseAtk,100; bonus bFlee,-50; }",20,5000,BF_WEAPON,"{ specialeffect2 EF_TEIHIT1; }"; },{},{}
2173,Crescent_Armguard,Crescent Wrist Guard,4,45000,,250,,45,,1,0x02000000,63,2,32,,100,1,1,{ bonus bDelayRate,-(getrefine()*2); },{},{}
2174,Lumiere_Shield,Lumiere Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{},{},{}
2175,Esprit_Shield,Spirit Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{},{},{}
2174,Lumiere_Shield,Lumiere Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Holy,5; bonus2 bMagicSubDefEle,Ele_Holy,5; bonus2 bSubRace,RC_Dragon,-5; },{},{}
2175,Esprit_Shield,Spirit Shield,4,20,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubDefEle,Ele_Ghost,5; bonus2 bMagicSubDefEle,Ele_Ghost,5; bonus2 bSubRace,RC_Angel,-5; },{},{}
2176,Dark_Book,Black Book,4,20,,500,,80,,1,0xFFFFFFFF,63,2,32,,65,1,5,{ bonus bMdef,5; .@r = getrefine(); bonus3 bAutoSpellWhenHit,"NPC_DRAGONFEAR",1,(.@r<=6)?(10):((.@r<=8)?(20):(30)); },{},{}
2177,Shield_Of_Death,Shield Of Death,4,20,,2000,,150,,1,0xFFFFFFFF,63,2,32,,90,1,3,{ bonus2 bAddClass,Class_Boss,2; bonus2 bMagicAddClass,Class_Boss,2; bonus2 bSubClass,Class_Normal,-10; },{},{}
2178,TE_Woe_Buckler,TE Woe Buckler,4,0,,0,,15,,0,0xFFFFFFFF,63,2,32,,40,1,2,{ bonus bMdef,15; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_Player_Human,15; },{},{}
@ -1816,7 +1816,7 @@
2590,Buwaya_Cloth,Buwaya Sack Cloth,4,20,,200,,8,,0,0xFFFFFFFF,63,2,4,,1,1,0,{ .@r = getrefine(); bonus bHealPower2,.@r/3; bonus bAddItemHealRate,.@r/3; bonus2 bSubEle,Ele_Water,10; bonus2 bSubEle,Ele_Wind,10; bonus2 bSubEle,Ele_Earth,10; bonus2 bSubEle,Ele_Fire,10; },{},{}
2591,Bayani_Buwaya_Cloth,Bayani Buwaya Sack Cloth,4,20,,200,,8,,1,0xFFFFFFFF,63,2,4,,1,1,0,{ .@r = getrefine(); bonus bHealPower2,.@r; bonus bAddItemHealRate,.@r; bonus2 bSubEle,Ele_Water,10; bonus2 bSubEle,Ele_Wind,10; bonus2 bSubEle,Ele_Earth,10; bonus2 bSubEle,Ele_Fire,10; },{},{}
2592,Boss_Brownie_Manteau,Boss Brownie Manteau,4,20,,100,,3,,1,0xFFFFFFFF,63,2,4,,50,1,0,{},{},{}
2593,Flow_Manteau,Flow Manteau,4,20,,700,,20,,1,0xFFFFFFFF,63,2,4,,65,1,0,{},{},{}
2593,Flow_Manteau,Flow Manteau,4,20,,700,,20,,1,0xFFFFFFFF,63,2,4,,65,1,0,{ bonus2 bSubDefEle,Ele_Water,5; bonus2 bMagicSubDefEle,Ele_Water,5; bonus2 bSubRace,RC_Brute,-5; },{},{}
2594,Wrapping_Manteau,Wrapping Manteau,4,20,,100,,0,,1,0xFFFFFFFF,63,2,4,,0,1,0,{},{},{}
2597,Scarlet_Poncho,Scarlet Poncho,4,0,,500,,10,,1,0xFFFFFFFF,63,2,4,,,1,0,{ bonus bCritAtkRate,3; /* Confirm: The location. If the location is changed, also change the combo script! */ },{},{}
2598,Ramor_Manteau,Ramor Manteau,4,20,,700,,20,,1,0xFFFFFFFF,63,2,4,,65,1,0,{ bonus2 bSubRace,RC_Undead,5; bonus2 bSubRace,RC_DemiHuman,-5; /*Gold PC Room: bonus bFlee,20;*/ },{},{}
@ -11160,7 +11160,7 @@
20592,C_Santa_Backpack,Costume Santa's Pocket,4,0,,0,,,,0,0xFFFFFFFF,63,2,8192,,1,0,70,{},{},{}
20600,Fantastic_Aura,Fantastic Aura,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,0,{ /*TODO: View ID*/ bonus bUnbreakableHelm; },{},{}
20700,Egir_Manteau,Egir Manteau,4,200000,,300,,10,,1,0xFFFFFFFF,63,2,4,,110,1,0,{ bonus bUnbreakableGarment; .@r = getrefine(); if (.@r > 10) .@r = 10; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) { bonus bFlee2,5+(.@r*2); } else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) { bonus bShortWeaponDamageReturn,5+(.@r*2); } },{},{}
20701,Sol_Manteau,Sol Manteau,4,0,,700,,20,,1,0xFFFFFFFF,63,2,4,,65,1,0,{ bonus2 bSubEle,Ele_Earth,5; bonus2 bSubRace,RC_Fish,-5; },{},{}
20701,Sol_Manteau,Sol Manteau,4,0,,700,,20,,1,0xFFFFFFFF,63,2,4,,65,1,0,{ bonus2 bSubDefEle,Ele_Earth,5; bonus2 bMagicSubDefEle,Ele_Earth,5; bonus2 bSubRace,RC_Fish,-5; },{},{}
20702,TE_Woe_Muffler,TE Woe Muffler,4,0,,0,,5,,0,0xFFFFFFFF,63,2,4,,40,1,,{ bonus bMdef,5; bonus2 bAddRace,RC_Player_Human,5; bonus2 bMagicAddRace,RC_Player_Human,5; bonus2 bResEff,Eff_Freeze,25; },{},{}
20703,TE_Woe_Manteau,TE Woe Manteau,4,0,,0,,10,,0,0x000444A2,63,2,4,,40,1,,{ bonus2 bAddRace,RC_Player_Human,10; bonus2 bResEff,Eff_Freeze,25; },{},{}
20704,TE_Woe_Magic_Manteau,TE Woe Magic Manteau,4,0,,0,,5,,0,0x00818315,63,2,4,,40,1,,{ bonus2 bMagicAddRace,RC_Player_Human,10; bonus2 bResEff,Eff_Freeze,25; },{},{}
@ -11853,16 +11853,16 @@
24195,S_Divine_Armor,Divine Shadow Armor,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,1,,{ .@r = getrefine(); bonus2 bAddEle,Ele_Undead,1+(.@r/2); bonus2 bMagicAddEle,Ele_Undead,1+(.@r/2); },{},{}
24196,S_Hasty_Shoes,Hasty Shadow Shoes,12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,1,,{ bonus bFlee,5+(getrefine()/2); },{},{}
24197,S_Hasty_Armor,Hasty Shadow Armor,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,1,,{ bonus bFlee,5+(getrefine()/2); },{},{}
24198,S_Basis_Shield,Basis Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Neutral,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24199,S_Hallowed_Shield,Hallowed Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Dark,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24200,S_Saharic_Shield,Saharic Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Water,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24201,S_Underneath_Shield,Underneath Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Earth,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24202,S_Flam_Shield,Flame Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Fire,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24203,S_Windy_Shield,Windy Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Wind,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24204,S_Envenom_Shield,Envenom Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Poison,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24205,S_Damned_Shield,Damned Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Holy,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24206,S_Geist_Shield,Exorcism Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Ghost,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24207,S_Divine_Shield,Divine Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus2 bSubEle,Ele_Undead,(.@r<7)?1:((.@r<9)?2:3); },{},{}
24198,S_Basis_Shield,Basis Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Neutral,.@i; bonus2 bMagicSubDefEle,Ele_Neutral,.@i; },{},{}
24199,S_Hallowed_Shield,Hallowed Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Dark,.@i; bonus2 bMagicSubDefEle,Ele_Dark,.@i; },{},{}
24200,S_Saharic_Shield,Saharic Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Water,.@i; bonus2 bMagicSubDefEle,Ele_Water,.@i; },{},{}
24201,S_Underneath_Shield,Underneath Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Earth,.@i; bonus2 bMagicSubDefEle,Ele_Earth,.@i; },{},{}
24202,S_Flam_Shield,Flame Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Fire,.@i; bonus2 bMagicSubDefEle,Ele_Fire,.@i; },{},{}
24203,S_Windy_Shield,Windy Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Wind,.@i; bonus2 bMagicSubDefEle,Ele_Wind,.@i; },{},{}
24204,S_Envenom_Shield,Envenom Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Poison,.@i; bonus2 bMagicSubDefEle,Ele_Poison,.@i; },{},{}
24205,S_Damned_Shield,Damned Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Holy,.@i; bonus2 bMagicSubDefEle,Ele_Holy,.@i; },{},{}
24206,S_Geist_Shield,Exorcism Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Ghost,.@i; bonus2 bMagicSubDefEle,Ele_Ghost,.@i; },{},{}
24207,S_Divine_Shield,Divine Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); .@i = (.@r<7)?1:((.@r<9)?2:3); bonus2 bSubDefEle,Ele_Undead,.@i; bonus2 bMagicSubDefEle,Ele_Undead,.@i; },{},{}
24208,S_Expert_Shoes,Expert Shadow Shoes,12,20,,100,,,,0,0xFFFFFFFF,63,2,524288,,150:175,1,,{ bonus2 bExpAddRace,RC_All,1; },{},{}
24209,S_Expert_Shield,Expert Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,150:175,1,,{ bonus2 bExpAddRace,RC_All,(getrefine()/4); },{},{}
24210,S_Beginner_Shoes,Beginner Shadow Shoes,12,20,,0,,,,0,0xFFFFFFFF,63,2,524288,,1:49,1,,{ bonus2 bExpAddRace,RC_All,getrefine(); },{},{}
@ -12342,7 +12342,7 @@
27026,Fire_Condor_Card,Fire Condor Card,6,20,,10,,,,,0xFFFFFFFF,63,2,136,,,,,{ bonus2 bVariableCastRate,"MG_FIREBALL",-50; bonus2 bSkillAtk,"MG_FIREBALL",100; },{},{}
27027,Fire_Sandman_Card,Fire Sandman Card,6,20,,10,,,,,0xFFFFFFFF,63,2,16,,,,,{ bonus bDef,50; bonus2 bSubDefEle,Ele_Fire,10; },{},{}
27028,Fire_Frilldora_Card,Fire Frilldora Card,6,20,,10,,,,,0xFFFFFFFF,63,2,2,,,,,{ .@r = getrefine(); bonus2 bMagicAddEle,Ele_Earth,3+((.@r>=7)*5)+((.@r>=9)*7); },{},{}
27029,Fire_Golem_Card,Fire Golem Card,6,20,,10,,,,,0xFFFFFFFF,63,2,32,,,,,{ bonus2 bSubEle,Ele_Fire,20; bonus2 bAddEle,Ele_Fire,5; },{},{}
27029,Fire_Golem_Card,Fire Golem Card,6,20,,10,,,,,0xFFFFFFFF,63,2,32,,,,,{ bonus2 bSubDefEle,Ele_Fire,20; bonus2 bAddEle,Ele_Fire,5; },{},{}
27030,Fulbuk_Card,Firebug Card,6,20,,10,,,,,0xFFFFFFFF,63,2,769,,,,,{ bonus3 bAddEff,Eff_Burning,700,ATF_WEAPON|ATF_MAGIC; },{},{}
27081,Angry_Moonlight_Flower_Card,Angry Moonlight Flower Card,6,20,,10,,,,,,,,16,,,,,{ skill "PA_PRESSURE",4; },{},{}
27082,Angry_Nine_Tail_Card,Angry Nine Tail Card,6,20,,10,,,,,,,,16,,,,,{ .@val = 5; bonus bCritAtkRate,10; if (getrefine() >= 10) { .@val += 10; } bonus bCritical,.@val; },{},{}

View File

@ -57,25 +57,25 @@ RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus2 bSubDefEle,Ele_Ghost,getrandomo
RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,{ bonus2 bAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
RDMOPT_DAMAGE_PROPERTY_UNDEAD_USER,{ bonus2 bSubDefEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET,{ bonus2 bAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER,{ bonus3 bSubEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER,{ bonus2 bMagicSubDefEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET,{ bonus2 bMagicAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_WATER_USER,{ bonus3 bSubEle,Ele_Water,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_WATER_USER,{ bonus2 bMagicSubDefEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET,{ bonus2 bMagicAddEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_GROUND_USER,{ bonus3 bSubEle,Ele_Earth,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_GROUND_USER,{ bonus2 bMagicSubDefEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET,{ bonus2 bMagicAddEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_FIRE_USER,{ bonus3 bSubEle,Ele_Fire,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_FIRE_USER,{ bonus2 bMagicSubDefEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET,{ bonus2 bMagicAddEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_WIND_USER,{ bonus3 bSubEle,Ele_Wind,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_WIND_USER,{ bonus2 bMagicSubDefEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET,{ bonus2 bMagicAddEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_POISON_USER,{ bonus3 bSubEle,Ele_Poison,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_POISON_USER,{ bonus2 bMagicSubDefEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET,{ bonus2 bMagicAddEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_SAINT_USER,{ bonus3 bSubEle,Ele_Holy,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_SAINT_USER,{ bonus2 bMagicSubDefEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET,{ bonus2 bMagicAddEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER,{ bonus3 bSubEle,Ele_Dark,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER,{ bonus2 bMagicSubDefEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET,{ bonus2 bMagicAddEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus3 bSubEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus2 bMagicSubDefEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET,{ bonus2 bMagicAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER,{ bonus3 bSubEle,Ele_Undead,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER,{ bonus2 bMagicSubDefEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET,{ bonus2 bMagicAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
RDMOPT_BODY_ATTR_NOTHING,{ bonus bDefEle,Ele_Neutral; }
RDMOPT_BODY_ATTR_WATER,{ bonus bDefEle,Ele_Water; }

View File

@ -228,7 +228,8 @@ bonus3 bAddEle,e,x,bf; +x% physical damage against element e with trigger c
bonus2 bMagicAddEle,e,x; +x% magical damage against element e
bonus2 bSubEle,e,x; +x% damage reduction against attack element e
bonus3 bSubEle,e,x,bf; +x% damage reduction against attack element e with trigger criteria bf
bonus2 bSubDefEle,e,x; +x% damage reduction from enemy with defense element e
bonus2 bSubDefEle,e,x; +x% physical damage reduction from enemy with defense element e
bonus2 bMagicSubDefEle,e,x; +x% magic damage reduction from enemy with defense element e
bonus2 bAddRace,r,x; +x% physical damage against race r
bonus2 bMagicAddRace,r,x; +x% magical damage against race r

View File

@ -694,7 +694,7 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
ele_fix += it.rate;
}
if (s_defele != ELE_NONE)
ele_fix += tsd->subdefele[s_defele] + tsd->subdefele[ELE_ALL];
ele_fix += tsd->magic_subdefele[s_defele] + tsd->magic_subdefele[ELE_ALL];
cardfix = cardfix * (100 - ele_fix) / 100;
}
cardfix = cardfix * (100 - tsd->subsize[sstatus->size] - tsd->subsize[SZ_ALL]) / 100;

View File

@ -504,8 +504,9 @@ enum _sp {
SP_HP_VANISH_RACE_RATE, SP_SP_VANISH_RACE_RATE, SP_ABSORB_DMG_MAXHP, SP_SUB_SKILL, SP_SUBDEF_ELE, // 2074-2078
SP_STATE_NORECOVER_RACE, SP_CRITICAL_RANGEATK, SP_MAGIC_ADDRACE2, SP_IGNORE_MDEF_RACE2_RATE, // 2079-2082
SP_WEAPON_ATK_RATE, SP_WEAPON_MATK_RATE, SP_DROP_ADDRACE, SP_DROP_ADDCLASS, SP_NO_MADO_FUEL, // 2083-2087
SP_IGNORE_DEF_CLASS_RATE, SP_REGEN_PERCENT_HP, SP_REGEN_PERCENT_SP, SP_SKILL_DELAY, SP_NO_WALK_DELAY, //2088-2093
SP_LONG_SP_GAIN_VALUE, SP_LONG_HP_GAIN_VALUE, SP_SHORT_ATK_RATE, SP_MAGIC_SUBSIZE, SP_CRIT_DEF_RATE // 2094-2098
SP_IGNORE_DEF_CLASS_RATE, SP_REGEN_PERCENT_HP, SP_REGEN_PERCENT_SP, SP_SKILL_DELAY, SP_NO_WALK_DELAY, //2088-2092
SP_LONG_SP_GAIN_VALUE, SP_LONG_HP_GAIN_VALUE, SP_SHORT_ATK_RATE, SP_MAGIC_SUBSIZE, SP_CRIT_DEF_RATE, // 2093-2097
SP_MAGIC_SUBDEF_ELE // 2098
};
enum _look {

View File

@ -4239,6 +4239,10 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
if (sd->state.lr_flag != 2)
sd->dropaddclass[type2] += val;
break;
case SP_MAGIC_SUBDEF_ELE: // bonus2 bMagicSubDefEle,e,x;
PC_BONUS_CHK_ELEMENT(type2, SP_MAGIC_SUBDEF_ELE);
sd->magic_subdefele[type2] += val;
break;
default:
if (current_equip_combo_pos > 0) {
ShowWarning("pc_bonus2: unknown bonus type %d %d %d in a combo with item #%d\n", type, type2, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid);

View File

@ -460,6 +460,7 @@ struct map_session_data {
int ignore_mdef_by_race2[RC2_MAX];
int dropaddrace[RC_MAX];
int dropaddclass[CLASS_MAX];
int magic_subdefele[ELE_MAX];
// zeroed arrays end here.
std::vector<s_autospell> autospell, autospell2, autospell3;

View File

@ -755,7 +755,7 @@
export_constant2("bLongHPGainValue",SP_LONG_HP_GAIN_VALUE);
export_constant2("bMagicSubSize",SP_MAGIC_SUBSIZE);
export_constant2("bCritDefRate",SP_CRIT_DEF_RATE);
export_constant2("bMagicSubDefEle", SP_MAGIC_SUBDEF_ELE);
/* equip indices */
export_constant(EQI_COMPOUND_ON);

View File

@ -3845,6 +3845,7 @@ int status_calc_pc_sub(struct map_session_data* sd, enum e_status_calc_opt opt)
+ sizeof(sd->ignore_mdef_by_race2)
+ sizeof(sd->dropaddrace)
+ sizeof(sd->dropaddclass)
+ sizeof(sd->magic_subdefele)
);
memset (&sd->right_weapon.overrefine, 0, sizeof(sd->right_weapon) - sizeof(sd->right_weapon.atkmods));