Fixed bugreport:5689 recoded/reimplement RE Matk formula(including RE Heal)
Fixed bugreport:5745 WL_RECOGNIZED us now functional. Fixed bugreport:5663 where HW_MAGICPOWER shows glitch in status window. Fixed bugreport:6759 where items granting matk bonus didn't work. Follow up r16980 small performance enhancement...:) Done some TODO in skill_cast_db.txt git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16981 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
02613ae097
commit
4129e5eb1c
22
db/const.txt
22
db/const.txt
@ -576,17 +576,17 @@ bSPVanishRate 2042
|
||||
bMagicSPGainValue 2043
|
||||
bMagicHPGainValue 2044
|
||||
bAddClassDropItem 2045
|
||||
bEquipmentMatk 2046
|
||||
bIntMatk 2047
|
||||
bSPGainRaceAttack 2048
|
||||
bHPGainRaceAttack 2049
|
||||
bSkillUseSPrate 2050
|
||||
bSkillCooldown 2051
|
||||
bSkillFixedCast 2052
|
||||
bSkillVariableCast 2053
|
||||
bFixedCastrate 2054
|
||||
bVariableCastrate 2055
|
||||
bSkillUseSP 2056
|
||||
bMatk 2046
|
||||
bSPGainRaceAttack 2047
|
||||
bHPGainRaceAttack 2048
|
||||
bSkillUseSPrate 2049
|
||||
bSkillCooldown 2050
|
||||
|
||||
bSkillFixedCast 2051
|
||||
bSkillVariableCast 2052
|
||||
bFixedCastrate 2053
|
||||
bVariableCastrate 2054
|
||||
bSkillUseSP 2055
|
||||
|
||||
EQI_HEAD_TOP 1
|
||||
EQI_ARMOR 2
|
||||
|
@ -180,7 +180,7 @@
|
||||
// Rune Knight (Regular)
|
||||
4054,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4
|
||||
// Warlock (Regular)
|
||||
4055,4,4,5,0,0,5,4,2,0,0,0,0,5,0,3,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,1,4,4,0,0,5,2,4,0,0,4,4,0,2,0,0,4
|
||||
4055,4,4,5,0,0,5,4,2,0,0,0,4,5,0,3,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,1,4,4,0,0,5,2,4,0,0,4,4,0,2,0,0,4
|
||||
// Ranger (Regular)
|
||||
4056,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2
|
||||
// Arch Bishop (Regular)
|
||||
@ -192,7 +192,7 @@
|
||||
// Rune Knight (Trans)
|
||||
4060,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4
|
||||
// Warlock (Trans)
|
||||
4061,4,4,5,0,0,5,4,2,0,0,0,0,5,0,3,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,1,4,4,0,0,5,2,4,0,0,4,4,0,2,0,0,4
|
||||
4061,4,4,5,0,0,5,4,2,0,0,0,4,5,0,3,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,1,4,4,0,0,5,2,4,0,0,4,4,0,2,0,0,4
|
||||
// Ranger (Trans)
|
||||
4062,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2
|
||||
// Arch Bishop (Trans)
|
||||
@ -248,7 +248,7 @@
|
||||
// Baby Rune Knight
|
||||
4096,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4
|
||||
// Baby Warlock
|
||||
4097,4,4,5,0,0,5,4,2,0,0,0,0,5,0,3,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,1,4,4,0,0,5,2,4,0,0,4,4,0,2,0,0,4
|
||||
4097,4,4,5,0,0,5,4,2,0,0,0,4,5,0,3,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,1,4,4,0,0,5,2,4,0,0,4,4,0,2,0,0,4
|
||||
// Baby Ranger
|
||||
4098,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2
|
||||
// Baby Arch Bishop
|
||||
|
@ -888,7 +888,7 @@
|
||||
1640,Krieger_Onehand_Staff1,Glorious Arc Wand,4,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon,0; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; } },{},{}
|
||||
1641,Krieger_Onehand_Staff2,Glorious Cure Wand,4,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bIgnoreMdefRate,RC_DemiHuman,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; } },{},{}
|
||||
1642,Staff_Of_Darkness,Staff Of Darkness,4,20,,0,100,,1,0,0x00818314,7,2,2,2,0,0,10,{ bonus bCastrate,-5; bonus bMatkRate,15; bonus bInt,2; },{},{}
|
||||
1643,Dead_Tree_Cane,Dead Tree Cane,4,20,,100,100,,1,0,0x00818314,7,2,2,4,70,1,10,{ bonus bIntMatk,15; bonus bInt,4; if(getrefine()>5) { bonus bInt,getrefine()-5; bonus bMaxHP,-200; bonus bMaxSP,-100; } },{},{}
|
||||
1643,Dead_Tree_Cane,Dead Tree Cane,4,20,,100,100,,1,0,0x00818314,7,2,2,4,70,1,10,{ bonus bMatk,15; bonus bInt,4; if(getrefine()>5) { bonus bInt,getrefine()-5; bonus bMaxHP,-200; bonus bMaxSP,-100; } },{},{}
|
||||
1644,Piercing_Staff_M,Staff of Piercing,4,20,,500,80,,1,0,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus bIgnoreMdefRate,10+getrefine(); },{},{}
|
||||
1645,Lich_Bone_Wand_M,Lich's Bone Wand,4,20,,800,60,,1,2,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,1; bonus bDex,1; bonus bAtkEle,Ele_Undead; bonus bMatkRate,20; bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",5,10+getrefine(); if(getrefine()>=9){ bonus bMatkRate,3; bonus bMaxSP,300; } },{},{}
|
||||
1646,La'cryma_Stick,La'cryma Stick,4,20,,500,30,,1,2,0x00010204,2,2,2,3,50,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus bMdef,1; bonus2 bSkillAtk,"WZ_STORMGUST",getrefine(); if(getrefine()>9) bonus2 bCastrate,"WZ_STORMGUST",-8; },{},{}
|
||||
@ -1065,7 +1065,7 @@
|
||||
2003,Destruction_Rod_M,Staff of Destruction,4,20,,2500,130,,1,1,0x00000200,2,2,34,4,80,1,23,{ bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50; },{},{}
|
||||
2004,Kronos,Kronos,4,20,,1000,30,,1,0,0x00010204,2,2,34,4,50,1,23,{ bonus bMatkRate,20; bonus bInt,3+(getrefine()/2); bonus bMaxHP,300+(50*getrefine()/2); autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
|
||||
2005,Dea_Staff,Dea Staff,4,20,,1000,30,,1,1,0x00008110,2,2,34,3,50,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15+getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }"; },{},{}
|
||||
2006,G_Staff_Of_Light,Staff Of Light,4,20,,1900,80,,1,0,0x00810204,7,2,34,4,60,1,23,{ /* bonus bIntMatk,150; */ bonus bAtkEle,Ele_Holy; bonus bInt,6; },{},{}
|
||||
2006,G_Staff_Of_Light,Staff Of Light,4,20,,1900,80,,1,0,0x00810204,7,2,34,4,60,1,23,{ /* bonus bMatk,150; */ bonus bAtkEle,Ele_Holy; bonus bInt,6; },{},{}
|
||||
// Shields
|
||||
//===================================================================
|
||||
2101,Guard,Guard,5,500,,300,,3,,0,0xFFFFFFFF,7,2,32,,0,1,1,{},{},{}
|
||||
@ -2074,9 +2074,9 @@
|
||||
4447,Centipede_Card,Centipede Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Poison,20; bonus2 bAddEle,Ele_Poison,5; },{},{}
|
||||
4448,Cornus_Card,Cornus Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Holy,20; bonus2 bAddEle,Ele_Holy,5; },{},{}
|
||||
4449,Dark_Shadow_Card,Dark Shadow Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Dark,20; bonus2 bAddEle,Ele_Dark,5; },{},{}
|
||||
4450,Banshee_Master_Card,Banshee Master Card,6,20,,10,,,,,,,,16,,,,,{ bonus bInt,1; /* bonus bIntMatk,10; */ },{},{}
|
||||
4451,Entweihen_Card,Entweihen Crothen Card,6,20,,10,,,,,,,,16,,,,,{ /* bonus bIntMatk,100; */ },{},{}
|
||||
4452,Centipede_Larva_Card,Centipede Larva Card,6,20,,10,,,,,,,,2,,,,,{ bonus bInt,1; /* bonus bIntMatk,3; */ },{},{}
|
||||
4450,Banshee_Master_Card,Banshee Master Card,6,20,,10,,,,,,,,16,,,,,{ bonus bInt,1; bonus bMatk,10; },{},{}
|
||||
4451,Entweihen_Card,Entweihen Crothen Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,100; },{},{}
|
||||
4452,Centipede_Larva_Card,Centipede Larva Card,6,20,,10,,,,,,,,2,,,,,{ bonus bInt,1; bonus bMatk,3; },{},{}
|
||||
4453,Hilsrion_Card,Hillsrion Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,25; },{},{}
|
||||
// Armor Enchant System
|
||||
//===================================================================
|
||||
@ -2737,7 +2737,7 @@
|
||||
5567,Bright_Fury,Bright Fury,5,20,,300,,1,,1,0xFFFFFFFF,7,2,256,,1,1,548,{ bonus bStr,1; bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bAspdRate,2; },{},{}
|
||||
5568,Rabbit_Bonnet,Rabbit Bonnet,5,20,,1000,,1,,1,0xFFFFFFFF,7,2,768,,0,1,549,{ bonus bInt,2; },{},{}
|
||||
5569,Gemini_Diadem,Gemini Diadem,5,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,550,{ bonus bAgi,2; bonus bMatkRate,2; if(getrefine()>6) { bonus bMdef,7; bonus bMAtkRate,8; bonus2 bSubEle,Ele_Wind,5; } },{},{}
|
||||
5570,Gemini_Crown,Gemini Crown,5,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,551,{ bonus bAgi,2; bonus bAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bIntMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; } },{},{}
|
||||
5570,Gemini_Crown,Gemini Crown,5,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,551,{ bonus bAgi,2; bonus bAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; } },{},{}
|
||||
//5571,Rasta_Wig,Rasta_Wig,5,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,552,{ bonus bStr,1; },{},{}
|
||||
5572,Savage_Baby_Hat,Savage Babe Hat,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,1,1,553,{ bonus bVit,2; },{},{}
|
||||
5573,Bogy_Horn,Dokebi Horn,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,554,{},{},{}
|
||||
@ -2913,8 +2913,8 @@
|
||||
//5743,Orange_Stem_Hat,Orange Stem Hat,5,20,,100,,0,,0,0x00000000,7,2,256,,1,0,620,{ bonus bLuk,3; },{},{}
|
||||
//5744,Capricon_Crown,Capricon Crown,5,20,,300,,3,,1,0xFFFFFFFF,7,2,256,,1,1,621,{ bonus bVit,2; bonus bDex,2; },{},{}
|
||||
//5745,Capricon_Diadem,Capricon Diadem,5,20,,300,,3,,0,0xFFFFFFFF,7,2,256,,1,1,622,{ bonus bDex,2; bonus bMdef,5; },{},{}
|
||||
//5746,Rune_Circlet,Rune Circlet,5,20,,100,,12,,1,0x00000080,8,2,256,,100,1,623,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bIntMatk,5; } },{},{}
|
||||
//5747,Mitra,Mitra,5,20,,100,,12,,1,0x00000100,8,2,256,,100,1,624,{ bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bIntMatk,10; } },{},{}
|
||||
//5746,Rune_Circlet,Rune Circlet,5,20,,100,,12,,1,0x00000080,8,2,256,,100,1,623,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bMatk,5; } },{},{}
|
||||
//5747,Mitra,Mitra,5,20,,100,,12,,1,0x00000100,8,2,256,,100,1,624,{ bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bMatk,10; } },{},{}
|
||||
//5748,Sniper_Goggles,Sniper Goggles,5,20,,100,,12,,1,0x00000800,8,2,768,,100,1,625,{ bonus bAgi,1; bonus bDex,1; bonus bMdef,5; if(readparam(bAgi)>=120){ bonus bLongAtkRate,4; bonus bAspd,1; } },{},{}
|
||||
//5749,Driver_Band_M,Driver Band,5,20,,100,,12,,1,0x00000400,8,1,256,,100,1,626,{ bonus bStr,1; bonus bDex,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bCritical,3; } },{},{}
|
||||
//5750,Shadow_Crown,Shadow Crown,5,20,,100,,12,,1,0x00020000,8,2,256,,100,1,627,{ bonus bAgi,1; bonus bInt,1; bonus bMdef,1; if(readparam(bAgi)>=120){ bonus bAtk,10; bonus bFlee,3; } },{},{}
|
||||
|
@ -1209,7 +1209,7 @@
|
||||
//2158,
|
||||
//2159,
|
||||
2160,Giant_Shield,Giant Shield,5,56000,,2800,,130,,1,0x00004082,7,2,32,,100,1,4,{ bonus2 bSubSize,Size_Large,5; if(getrefine()>=9){ bonus2 bSubSize,Size_Large,5; } },{},{}
|
||||
2161,Geffenia_Tomb_of_Water,Geffenia Tomb of Water,5,56000,,1000,,30,,0,0x00000200,7,2,32,,100,1,5,{ bonus bMdef,2; bonus bInt,1; if(readparam(bInt)>=120){ bonus bEquipmentMatk,10; bonus bMaxHP,800; } },{},{}
|
||||
2161,Geffenia_Tomb_of_Water,Geffenia Tomb of Water,5,56000,,1000,,30,,0,0x00000200,7,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 Vol2,5,20,,500,,20,,1,0x00000100,7,2,32,,140,1,5,{ bonus bMdef,5; bonus bHealPower,5; skill "ALL_ODINS_POWER",2; },{},{}
|
||||
//2163,
|
||||
//2164,
|
||||
@ -1597,7 +1597,7 @@
|
||||
2573,Archangel_Wings,Archangel Wings,5,0,,200,,18,,1,0xFFFFFFFF,7,2,4,,0,1,1,{},{},{}
|
||||
2574,Urj_Manteau,Urj Manteau,5,20,,600,,20,,0,0x00000080,8,2,4,,100,1,0,{ bonus bMaxHPRate,2; bonus2 bSubEle,Ele_Neutral,10; },{},{}
|
||||
2575,Pertz_Manteau,Pertz Manteau,5,20,,600,,16,,0,0x00000080,8,2,4,,100,1,0,{ bonus bFlee,10; bonus bCritical,10; },{},{}
|
||||
2576,Adventurer's_Backpack,Adventurer's Backpack,5,0,,200,,20,,1,0xFFFFFFFF,7,2,4,,0,1,2,{ skill "BS_GREED",1; if(getrefine()>6) { if(readparam(bStr)>=90){ bonus bBaseAtk,20; } if(readparam(bInt)>=90){ bonus bEquipmentMatk,30; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,10; } if(readparam(bAgi)>=90){ bonus bAspdRate,8; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,10; } } if(getrefine()>8) { if(readparam(bStr)>=90){ bonus bBaseAtk,10; } if(readparam(bInt)>=90){ bonus bEquipmentMatk,20; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,5; } if(readparam(bAgi)>=90){ bonus bAspd,1; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,5; } } },{},{}
|
||||
2576,Adventurer's_Backpack,Adventurer's Backpack,5,0,,200,,20,,1,0xFFFFFFFF,7,2,4,,0,1,2,{ skill "BS_GREED",1; if(getrefine()>6) { if(readparam(bStr)>=90){ bonus bBaseAtk,20; } if(readparam(bInt)>=90){ bonus bMatk,30; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,10; } if(readparam(bAgi)>=90){ bonus bAspdRate,8; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,10; } } if(getrefine()>8) { if(readparam(bStr)>=90){ bonus bBaseAtk,10; } if(readparam(bInt)>=90){ bonus bMatk,20; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,5; } if(readparam(bAgi)>=90){ bonus bAspd,1; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,5; } } },{},{}
|
||||
2577,Sabath_Hood,Sabath Hood,5,20,,100,,13,,0,0x00001000,7,2,4,,100,1,0,{ bonus bFlee,12; bonus bCritical,getrefine(); },{},{}
|
||||
2578,Nabeu's_Hood,Nabeu's Hood,5,20,,100,,13,,0,0x00001000,7,2,4,,100,1,0,{ bonus bFlee,getrefine()*2; bonus bBaseAtk,getrefine()*2; },{},{}
|
||||
//2579,
|
||||
@ -1801,7 +1801,7 @@
|
||||
2785,Orleans_Glove_M,Orlean's Gloves,5,20,,100,,0,,1,0xFFFFFFFE,2,2,136,,90,0,0,{ bonus bDex,2; bonus bMatkRate,3; },{},{}
|
||||
2786,Spiritual_Ring_M,Spiritual Ring,5,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bInt,2; bonus bDex,1; },{},{}
|
||||
2787,Waterdrop_Brooch,Waterdrop Brooch,5,20,,200,,0,,1,0xFFFFFFFF,2,2,136,,0,0,0,{ bonus bMdef,2; bonus bMaxHPrate,1; bonus2 bSubEle,Ele_Water,5; },{},{}
|
||||
2788,Bradium_Earing,Bradium Earring,5,20,,200,,0,,1,0xFFFFFFFF,2,2,136,,0,0,0,{ bonus bInt,1; bonus bDex,1; bonus bEquipmentMatk,5; },{},{}
|
||||
2788,Bradium_Earing,Bradium Earring,5,20,,200,,0,,1,0xFFFFFFFF,2,2,136,,0,0,0,{ bonus bInt,1; bonus bDex,1; bonus bMatk,5; },{},{}
|
||||
2789,Bradium_Ring,Bradium Ring,5,20,,200,,0,,1,0xFFFFFFFF,2,2,136,,0,0,0,{ bonus bStr,1; bonus bVit,1; bonus bAtk,5; },{},{}
|
||||
2790,Bradium_Brooch,Bradium Brooch,5,20,,200,,0,,1,0xFFFFFFFF,2,2,136,,0,0,0,{ bonus bAgi,1; bonus bFlee,4; if(readparam(bAgi)==120) bonus bCritical,4; },{},{}
|
||||
2791,Just_Got_Fish,Fresh Fish,5,20,,500,,0,,1,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus bHit,3; },{},{}
|
||||
@ -1885,7 +1885,7 @@
|
||||
2884,Pertz_Seal,Pertz Seal,5,20,,200,,3,,1,0x00000080,8,2,136,,100,0,0,{ bonus bBaseAtk,20; bonus bMaxSP,20; },{},{}
|
||||
//2885,
|
||||
2886,Sabath_Seal,Sabath Seal,5,20,,100,,0,,0,0x00001000,7,2,136,,100,0,0,{ bonus bCritical,3; },{},{}
|
||||
2887,Nabeu's_Seal,Nabeu's Seal,5,20,,100,,0,,0,0x00001000,7,2,136,,100,0,0,{ bonus bBaseAtk,10; bonus bEquipmentMatk,20; },{},{}
|
||||
2887,Nabeu's_Seal,Nabeu's Seal,5,20,,100,,0,,0,0x00001000,7,2,136,,100,0,0,{ bonus bBaseAtk,10; bonus bMatk,20; },{},{}
|
||||
//2888,
|
||||
//2889,
|
||||
2890,White_Wing_Brooch,White Wing Brooch,5,20,,100,,0,,0,0x00000800,7,2,136,,100,0,0,{ bonus bDex,2; bonus bLongAtkRate,3; },{},{}
|
||||
@ -2354,16 +2354,16 @@
|
||||
4447,Centipede_Card,Centipede Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Poison,20; bonus2 bAddEle,Ele_Poison,5; },{},{}
|
||||
4448,Cornus_Card,Cornus Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Holy,20; bonus2 bAddEle,Ele_Holy,5; },{},{}
|
||||
4449,Dark_Shadow_Card,Dark Shadow Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Dark,20; bonus2 bAddEle,Ele_Dark,5; },{},{}
|
||||
4450,Banshee_Master_Card,Banshee Master Card,6,20,,10,,,,,,,,16,,,,,{ bonus bInt,1; bonus bIntMatk,10; },{},{}
|
||||
4451,Entweihen_Card,Entweihen Crothen Card,6,20,,10,,,,,,,,16,,,,,{ bonus bIntMatk,100; },{},{}
|
||||
4452,Centipede_Larva_Card,Centipede Larva Card,6,20,,10,,,,,,,,2,,,,,{ bonus bInt,1; bonus bEquipmentMatk,3; },{},{}
|
||||
4450,Banshee_Master_Card,Banshee Master Card,6,20,,10,,,,,,,,16,,,,,{ bonus bInt,1; bonus bMatk,10; },{},{}
|
||||
4451,Entweihen_Card,Entweihen Crothen Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,100; },{},{}
|
||||
4452,Centipede_Larva_Card,Centipede Larva Card,6,20,,10,,,,,,,,2,,,,,{ bonus bInt,1; bonus bMatk,3; },{},{}
|
||||
4453,Hilsrion_Card,Hillsrion Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAtk,25; },{},{}
|
||||
4454,Light_Up_Card1,Light Up Card,6,20,,10,,,,,,,,2,,,,,{},{},{}
|
||||
4455,Light_Up_Card2,Light Up Card,6,20,,10,,,,,,,,2,,,,,{},{},{}
|
||||
4456,Nidhoggur_Shadow_Card,Nidhoggur Shadow Card,6,20,,10,,,,,,,,16,,,,,{ bonus bInt,5; if(BaseClass==Job_High_Wizard) bonus bFixedCastrate,-50; },{},{}
|
||||
4457,Naght_Sieger_Card,Naght Sieger Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bSkillAtk,"MG_NAPALMBEAT",30; bonus2 bSkillAtk,"MG_SOULSTRIKE",30; bonus2 bSkillAtk,"HW_NAPALMVULCAN",30; bonus2 bSkillAtk,"GS_MAGICALBULLET",30; bonus2 bSkillAtk,"WL_SOULEXPANSION",30; },{},{}
|
||||
4458,Duneyrr_Card,Duneyrr Card,6,20,,10,,,,,,,,769,,,,,{ bonus bBaseAtk,10; autobonus "{ bonus bFlee2,10; }",10,4000,0,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
|
||||
4459,Rata_Card,Rata Card,6,20,,10,,,,,,,,769,,,,,{ bonus bEquipmentMatk,10; autobonus "{ bonus bFixedCastrate,-50; }",10,4000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; },{},{}
|
||||
4459,Rata_Card,Rata Card,6,20,,10,,,,,,,,769,,,,,{ bonus bMatk,10; autobonus "{ bonus bFixedCastrate,-50; }",10,4000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; },{},{}
|
||||
4460,Rhyncho_Card,Rhyncho Card,6,20,,10,,,,,,,,769,,,,,{ bonus bHealPower,4; bonus bUseSPrate,5; },{},{}
|
||||
4461,Phylla_Card,Phylla Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDex,1; bonus bAgi,1; autobonus "{ bonus bCritical,20; }",4,4000,0,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
|
||||
4462,Hardrock_Mammoth_Card,Hardrock Mammoth Card,6,20,,10,,,,,,,,16,,,,,{ bonus bDef,5; if(getrefine()>=12) { bonus bDef,20; bonus bMaxHPrate,10; } if(getrefine()>=14) { bonus bMaxHPrate,3; } },{},{}
|
||||
@ -2383,7 +2383,7 @@
|
||||
4476,Pinguicula_Card,Pinguicula Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Insect,10; },{},{}
|
||||
4477,Hell_Apocalypse_Card,Hell_Apocalypse Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Demon,10; },{},{}
|
||||
//
|
||||
4505,Scaraba_Card,Scaraba Card,6,20,,10,,,,,,,,136,,,,,{ bonus bIntMatk,20; bonus bMaxSPrate,-1; },{},{}
|
||||
4505,Scaraba_Card,Scaraba Card,6,20,,10,,,,,,,,136,,,,,{ bonus bMatk,20; bonus bMaxSPrate,-1; },{},{}
|
||||
4506,Dolomedes_Card,Dolomedes Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDex,2; if(BaseClass==Job_Archer){ bonus bDex,getrefine()/3; } },{},{}
|
||||
4507,Queen_Scaraba_Card,Queen Scaraba Card,6,20,,10,,,,,,,,2,,,,,{},{},{}
|
||||
4508,Gold_Scaraba_Card,Gold Scaraba Card,6,20,,10,,,,,,,,136,,,,,{ bonus bBaseAtk,20; bonus bMaxHPrate,-1; },{},{}
|
||||
@ -2527,10 +2527,10 @@
|
||||
4809,Fighting_Lv3,Fighting Lv3,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,12; bonus bHit,4; },{},{}
|
||||
4810,Fighting_Lv2,Fighting Lv2,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,9; bonus bHit,3; },{},{}
|
||||
4811,Fighting_Lv1,Fighting Lv1,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,6; bonus bHit,2; },{},{}
|
||||
4812,Force_Lv4,Force Lv4,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,15; bonus bVariableCastrate,-10; },{},{}
|
||||
4813,Force_Lv3,Force Lv3,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,12; bonus bVariableCastrate,-8; },{},{}
|
||||
4814,Force_Lv2,Force Lv2,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,9; bonus bVariableCastrate,-6; },{},{}
|
||||
4815,Force_Lv1,Force Lv1,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,6; bonus bVariableCastrate,-4; },{},{}
|
||||
4812,Force_Lv4,Force Lv4,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,15; bonus bVariableCastrate,-10; },{},{}
|
||||
4813,Force_Lv3,Force Lv3,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,12; bonus bVariableCastrate,-8; },{},{}
|
||||
4814,Force_Lv2,Force Lv2,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,9; bonus bVariableCastrate,-6; },{},{}
|
||||
4815,Force_Lv1,Force Lv1,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,6; bonus bVariableCastrate,-4; },{},{}
|
||||
4816,Sharp_Lv3,Sharp Lv3,6,20,,10,,,,,,,,16,,,,,{ bonus bCritical,12; bonus bHit,4; },{},{}
|
||||
4817,Sharp_Lv2,Sharp Lv2,6,20,,10,,,,,,,,16,,,,,{ bonus bCritical,9; bonus bHit,3; },{},{}
|
||||
4818,Sharp_Lv1,Sharp Lv1,6,20,,10,,,,,,,,16,,,,,{ bonus bCritical,6; bonus bHit,2; },{},{}
|
||||
@ -2541,12 +2541,12 @@
|
||||
4823,Fighting_Lv8,Fighting Lv8,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,27; bonus bHit,5; },{},{}
|
||||
4824,Fighting_Lv9,Fighting Lv9,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,30; bonus bHit,5; },{},{}
|
||||
4825,Fighting_Lv10,Fighting Lv10,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,50; bonus bHit,15; },{},{}
|
||||
4826,Force_Lv5,Force Lv5,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,18; bonus bVariableCastrate,-10; },{},{}
|
||||
4827,Force_Lv6,Force Lv6,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,21; bonus bVariableCastrate,-10; },{},{}
|
||||
4828,Force_Lv7,Force Lv7,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,24; bonus bVariableCastrate,-10; },{},{}
|
||||
4829,Force_Lv8,Force Lv8,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,27; bonus bVariableCastrate,-10; },{},{}
|
||||
4830,Force_Lv9,Force Lv9,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,30; bonus bVariableCastrate,-10; },{},{}
|
||||
4831,Force_Lv10,Force Lv10,6,20,,10,,,,,,,,16,,,,,{ bonus bEquipmentMatk,50; bonus bVariableCastrate,-20; },{},{}
|
||||
4826,Force_Lv5,Force Lv5,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,18; bonus bVariableCastrate,-10; },{},{}
|
||||
4827,Force_Lv6,Force Lv6,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,21; bonus bVariableCastrate,-10; },{},{}
|
||||
4828,Force_Lv7,Force Lv7,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,24; bonus bVariableCastrate,-10; },{},{}
|
||||
4829,Force_Lv8,Force Lv8,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,27; bonus bVariableCastrate,-10; },{},{}
|
||||
4830,Force_Lv9,Force Lv9,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,30; bonus bVariableCastrate,-10; },{},{}
|
||||
4831,Force_Lv10,Force Lv10,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,50; bonus bVariableCastrate,-20; },{},{}
|
||||
4832,Archer_Lv1,Archer Lv1,6,20,,10,,,,,,,,16,,,,,{ bonus bLongAtkRate,2; },{},{}
|
||||
4833,Archer_Lv2,Archer Lv2,6,20,,10,,,,,,,,16,,,,,{ bonus bLongAtkRate,4; },{},{}
|
||||
4834,Archer_Lv3,Archer Lv3,6,20,,10,,,,,,,,16,,,,,{ bonus bLongAtkRate,6; },{},{}
|
||||
@ -3147,7 +3147,7 @@
|
||||
5567,Bright_Fury,Bright Fury,5,20,,300,,1,,1,0xFFFFFFFF,7,2,256,,1,1,548,{ bonus bStr,1; bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bAspdRate,2; },{},{}
|
||||
5568,Rabbit_Bonnet,Rabbit Bonnet,5,20,,1000,,1,,1,0xFFFFFFFF,7,2,768,,0,1,549,{ bonus bInt,2; },{},{}
|
||||
5569,Gemini_Diadem,Gemini Diadem,5,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,550,{ bonus bAgi,2; bonus bMatkRate,2; if(getrefine()>6) { bonus bMdef,7; bonus bMAtkRate,8; bonus2 bSubEle,Ele_Wind,5; } },{},{}
|
||||
5570,Gemini_Crown,Gemini Crown,5,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,551,{ bonus bAgi,2; bonus bAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bIntMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; } },{},{}
|
||||
5570,Gemini_Crown,Gemini Crown,5,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,551,{ bonus bAgi,2; bonus bAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; } },{},{}
|
||||
//5571,Rasta_Wig,Rasta_Wig,5,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,552,{ bonus bStr,1; },{},{}
|
||||
5572,Savage_Baby_Hat,Savage Babe Hat,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,1,1,553,{ bonus bVit,2; },{},{}
|
||||
5573,Bogy_Horn,Dokebi Horn,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,554,{},{},{}
|
||||
@ -3323,8 +3323,8 @@
|
||||
5743,Orange_Stem_Hat,Orange Stem Hat,5,20,,100,,0,,0,0x00000000,7,2,256,,1,0,620,{ bonus bLuk,3; },{},{}
|
||||
//5744,Capricon_Crown,Capricon Crown,5,20,,300,,3,,1,0xFFFFFFFF,7,2,256,,1,1,621,{ bonus bVit,2; bonus bDex,2; },{},{}
|
||||
//5745,Capricon_Diadem,Capricon Diadem,5,20,,300,,3,,0,0xFFFFFFFF,7,2,256,,1,1,622,{ bonus bDex,2; bonus bMdef,5; },{},{}
|
||||
5746,Rune_Circlet,Rune Circlet,5,20,,100,,12,,1,0x00000080,8,2,256,,100,1,623,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bIntMatk,5; } },{},{}
|
||||
5747,Mitra,Mitra,5,20,,100,,12,,1,0x00000100,8,2,256,,100,1,624,{ bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bIntMatk,10; } },{},{}
|
||||
5746,Rune_Circlet,Rune Circlet,5,20,,100,,12,,1,0x00000080,8,2,256,,100,1,623,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bMatk,5; } },{},{}
|
||||
5747,Mitra,Mitra,5,20,,100,,12,,1,0x00000100,8,2,256,,100,1,624,{ bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bMatk,10; } },{},{}
|
||||
5748,Sniper_Goggle,Sniper Goggles,5,20,,100,,12,,1,0x00000800,8,2,768,,100,1,625,{ bonus bAgi,1; bonus bDex,1; bonus bMdef,5; if(readparam(bAgi)>=120){ bonus bLongAtkRate,4; bonus bAspd,1; } },{},{}
|
||||
5749,Driver_Band,Driver Band,5,20,,100,,12,,1,0x00000400,8,1,256,,100,1,626,{ bonus bStr,1; bonus bDex,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bCritical,3; } },{},{}
|
||||
5750,Shadow_Handicraft,Shadow Crown,5,20,,100,,12,,1,0x00020000,8,2,256,,100,1,627,{ bonus bAgi,1; bonus bInt,1; bonus bMdef,1; if(readparam(bAgi)>=120){ bonus bAtk,10; bonus bFlee,3; } },{},{}
|
||||
@ -5898,13 +5898,13 @@
|
||||
13059,E_Asura_C,Asura,4,1,,0,120,,1,0,0x02000000,7,2,2,1,1,0,1,{},{},{}
|
||||
13060,E_Counter_Dagger_C,Counter Dagger,4,1,,0,209,,1,0,0x00810204,7,2,2,4,1,0,1,{},{},{}
|
||||
13061,Black_Wing,Black Wing,4,20,,600,142,,1,1,0x00020000,7,2,2,3,102,1,1,{ bonus2 bSkillAtk,"SC_FATALMENACE",30+(getrefine()*2); bonus bMatkRate,(getrefine()*3); },{},{}
|
||||
13062,Ancient_Dagger,Ancient Dagger,4,20,,600,107,,0,0,0x028F5EEE,2,2,2,4,120,1,1,{ bonus bEquipmentMatk,120; bonus bMaxSP,100; bonus bSPrecovRate,5; bonus2 bAddEff2,Eff_Curse,50; },{},{}
|
||||
13062,Ancient_Dagger,Ancient Dagger,4,20,,600,107,,0,0,0x028F5EEE,2,2,2,4,120,1,1,{ bonus bMatk,120; bonus bMaxSP,100; bonus bSPrecovRate,5; bonus2 bAddEff2,Eff_Curse,50; },{},{}
|
||||
//13063,
|
||||
//13064,
|
||||
//13065,
|
||||
13066,P_Dagger3,Eden Dagger III,4,0,,0,165:80,,1,0,0xFE9F7EEF,7,2,2,3,60,0,1,{},{},{}
|
||||
13067,Kris,Kris,4,20,,700,107:70,,1,1,0xFE9F7EEF,2,2,2,3,30,1,1,{ bonus2 bHpDrainRate,50,10; },{},{}
|
||||
13068,Pompano,Pompano,4,0,,0,160:100,,3,0,0xFE9F7EEF,7,2,2,1,50,0,1,{ bonus bUnbreakableWeapon,0; autobonus "{ bonus bBaseAtk,30; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bEquipmentMatk,20; }",10,7000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bEquipmentMatk,10; } },{},{}
|
||||
13068,Pompano,Pompano,4,0,,0,160:100,,3,0,0xFE9F7EEF,7,2,2,1,50,0,1,{ bonus bUnbreakableWeapon,0; autobonus "{ bonus bBaseAtk,30; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,20; }",10,7000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bMatk,10; } },{},{}
|
||||
13069,As-nail,As-nail,4,56000,,500,160:80,,1,0,0x000654E2,7,2,2,4,110,1,1,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Freeze,100+(getrefine()*50); },{},{}
|
||||
13070,Scarlet-nail,Scarlet-nail,4,56000,,500,160:80,,1,0,0x000654E2,7,2,2,4,110,1,1,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Stone,100+(getrefine()*50); },{},{}
|
||||
//13071,
|
||||
@ -6027,13 +6027,13 @@
|
||||
13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,4,20,,0,55:90,,1,0,0x02000000,7,2,34,4,80,1,22,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-3,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; } },{},{}
|
||||
13308,Huuma_Blaze_I,Huuma Blaze Shuriken,4,0,,0,230,,1,0,0x02000000,7,2,34,4,0,0,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,2; },{},{}
|
||||
13309,Huuma_Giant_Wheel_C,Huuma Giant Wheel Shuriken,4,0,,0,99,,1,0,0x02000000,7,2,34,4,1,0,22,{},{},{}
|
||||
13310,P_Huuma_Suriken1,P.Huuma Suriken I,4,0,,0,170,,1,0,0x02000000,7,2,34,3,60,0,22,{ bonus bEquipmentMatk,50; },{},{}
|
||||
13310,P_Huuma_Suriken1,P.Huuma Suriken I,4,0,,0,170,,1,0,0x02000000,7,2,34,3,60,0,22,{ bonus bMatk,50; },{},{}
|
||||
13311,Sword_Huuma_Shuriken,Sword Huuma Shuriken,4,5000,,1500,170,,1,0,0x02000000,8,2,34,3,99,1,22,{ bonus bStr,3; },{},{}
|
||||
13312,Prototype_Huuma_Shuriken,Prototype Huuma Shuriken,4,0,,3000,0,,1,0,0x02000000,8,2,34,4,99,1,22,{},{},{}
|
||||
13313,Flower_Huuma_Shuriken,Flower Huuma Shuriken,4,100000,,1500,150,,1,2,0x02000000,8,2,34,3,110,1,22,{ bonus bEquipmentMatk,50; bonus bAtkEle,Ele_Fire; },{},{}
|
||||
13314,Wave_Huuma_Shuriken,Wave Huuma Shuriken,4,100000,,1500,200,,1,0,0x02000000,8,2,34,4,110,1,22,{ bonus bEquipmentMatk,50; bonus bAtkEle,Ele_Water; },{},{}
|
||||
13315,Thunderstorm_Huuma_Shuriken,Thunderstorm Huuma Shuriken,4,100000,,1500,200,,1,0,0x02000000,8,2,34,4,110,1,22,{ bonus bEquipmentMatk,50; bonus bAtkEle,Ele_Wind; },{},{}
|
||||
13316,Enhance_Huuma_Shuriken,Enhance Huuma Shuriken,4,20,,1500,55,,1,1,0x02000000,7,2,34,3,1,1,22,{ bonus bUnbreakableWeapon,0; bonus bBaseAtk,10*getrefine(); bonus bEquipmentMatk,5*getrefine(); bonus bLongAtkRate,getrefine(); if(BaseLevel>=70) { bonus bBaseAtk,5*((BaseLevel-60)/10); } },{},{}
|
||||
13313,Flower_Huuma_Shuriken,Flower Huuma Shuriken,4,100000,,1500,150,,1,2,0x02000000,8,2,34,3,110,1,22,{ bonus bMatk,50; bonus bAtkEle,Ele_Fire; },{},{}
|
||||
13314,Wave_Huuma_Shuriken,Wave Huuma Shuriken,4,100000,,1500,200,,1,0,0x02000000,8,2,34,4,110,1,22,{ bonus bMatk,50; bonus bAtkEle,Ele_Water; },{},{}
|
||||
13315,Thunderstorm_Huuma_Shuriken,Thunderstorm Huuma Shuriken,4,100000,,1500,200,,1,0,0x02000000,8,2,34,4,110,1,22,{ bonus bMatk,50; bonus bAtkEle,Ele_Wind; },{},{}
|
||||
13316,Enhance_Huuma_Shuriken,Enhance Huuma Shuriken,4,20,,1500,55,,1,1,0x02000000,7,2,34,3,1,1,22,{ bonus bUnbreakableWeapon,0; bonus bBaseAtk,10*getrefine(); bonus bMatk,5*getrefine(); bonus bLongAtkRate,getrefine(); if(BaseLevel>=70) { bonus bBaseAtk,5*((BaseLevel-60)/10); } },{},{}
|
||||
// More 1-Handed Swords
|
||||
13400,Cutlas_,Cutlus,4,20,,900,150,,1,1,0x000654E2,7,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
||||
13401,Excalibur_C,Excalibur,4,1,,0,199,,1,0,0x000654E2,7,2,2,4,1,0,2,{ bonus bInt,10; bonus bLuk,10; bonus bAtkEle,Ele_Holy; },{},{}
|
||||
@ -7202,7 +7202,7 @@
|
||||
18100,Shooting_Star,Shooting Star,4,20,,0,190,,5,0,0x00080800,7,2,34,4,1,1,11,{ bonus bLongAtkRate,20; },{},{}
|
||||
18101,F_Bow_Of_Rudra_C,Rudra Bow,4,2,,0,185,,5,0,0x000A0848,7,2,34,4,0,0,11,{ bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; },{},{}
|
||||
18102,E_Bow_Of_Rudra_C,Rudra Bow,4,2,,0,185,,5,0,0x000A0848,7,2,34,4,0,0,11,{ bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; },{},{}
|
||||
18103,Mystic_Bow,Mystic Bow,4,0,,1700,75,,5,0,0x00000400,8,2,34,3,105,1,11,{ bonus bEquipmentMatk,100; bonus bInt,4; },{},{}
|
||||
18103,Mystic_Bow,Mystic Bow,4,0,,1700,75,,5,0,0x00000400,8,2,34,3,105,1,11,{ bonus bMatk,100; bonus bInt,4; },{},{}
|
||||
//18104,
|
||||
//18105,
|
||||
18106,P_Bow3,Eden Bow III,4,0,,0,140,,5,0,0x000A0848,7,2,34,3,60,0,11,{},{},{}
|
||||
@ -7223,7 +7223,7 @@
|
||||
18506,Hattah_Black,Hattah Black,5,12000,,4000,,2,,1,0xFFFFFFFF,7,2,769,,1,1,676,{},{},{}
|
||||
18507,Elven_Ears_,Elven Ears,5,20,,100,,0,,1,0xFFFFFFFE,7,2,512,,70,0,73,{},{},{}
|
||||
//
|
||||
18514,Para_Team_Hat2,Eden Team Hat II,5,0,,0,,5,,1,0xFFFFFFFF,7,2,256,,60,1,682,{ autobonus "{ bonus bBaseAtk,10; }",50,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bEquipmentMatk,10; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_MAGICALATTHIT; }"; },{},{}
|
||||
18514,Para_Team_Hat2,Eden Team Hat II,5,0,,0,,5,,1,0xFFFFFFFF,7,2,256,,60,1,682,{ autobonus "{ bonus bBaseAtk,10; }",50,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,10; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_MAGICALATTHIT; }"; },{},{}
|
||||
18515,RTC_Winner_Hat,RTC Winner Hat,5,20,,100,,2,,0,0xFFFFFFFF,7,2,512,,1,0,683,{},{},{}
|
||||
18516,RTC_2nd_Winner_Hat,RTC 2nd Winner Hat,5,20,,100,,2,,0,0xFFFFFFFF,7,2,512,,1,0,684,{},{},{}
|
||||
18517,RTC_3rd_Winner_Hat,RTC 3rd Winner Hat,5,20,,100,,2,,0,0xFFFFFFFF,7,2,512,,1,0,685,{},{},{}
|
||||
@ -7238,7 +7238,7 @@
|
||||
18527,Dark_Pumpkin_Hat,Dark Pumpkin-head,5,20,,500,,5,,0,0xFFFFFFFF,7,2,256,,45,1,691,{ bonus2 bAddMonsterDropItem,12192,20; bonus bMdef,5; bonus bAllStats,2; },{},{}
|
||||
18539,Skull_Cap,Skull Cap,5,40,,200,,5,,1,0xFFFFFFFF,7,2,256,,10,1,713,{ bonus bMatkRate,2; if(getrefine() >= 5) { bonus bMatkRate,3; } if(getrefine() >= 7) { bonus bMatkRate,3; } },{},{}
|
||||
//
|
||||
18570,Ancient_Gold_Ornament,Ancient Gold Ornament,5,20,,400,,7,,1,0xFFFFFFFE,7,2,256,,100,1,739,{ if(BaseLevel >= 150) { bonus bAllStats,2; } if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){ bonus2 bAddRace,RC_Boss,8; bonus2 bAddRace,RC_NonBoss,8; } if(BaseClass==Job_Mage||BaseClass==Job_Acolyte){ bonus bEquipmentMatk,8; } if(BaseClass==Job_Archer){ bonus bDex,3; bonus bLongAtkRate,10; } },{},{}
|
||||
18570,Ancient_Gold_Ornament,Ancient Gold Ornament,5,20,,400,,7,,1,0xFFFFFFFE,7,2,256,,100,1,739,{ if(BaseLevel >= 150) { bonus bAllStats,2; } if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){ bonus2 bAddRace,RC_Boss,8; bonus2 bAddRace,RC_NonBoss,8; } if(BaseClass==Job_Mage||BaseClass==Job_Acolyte){ bonus bMatk,8; } if(BaseClass==Job_Archer){ bonus bDex,3; bonus bLongAtkRate,10; } },{},{}
|
||||
//
|
||||
18580,Yggdrasil_Crown,Yggdrasil Crown,5,20,,200,,3,,0,0xFFFFFFFF,7,2,256,,1,1,724,{ bonus bMdef,3; bonus bHealPower,2; bonus bHealpower2,10; if(getrefine() >= 7){ bonus bHealPower,5; } if(getrefine() >= 9){ bonus bHealPower,3; } },{},{}
|
||||
//
|
||||
|
@ -1195,14 +1195,14 @@
|
||||
2203,2000:2500:3000:3500:4000,1000,0,40000,0,4000,500
|
||||
//-- WL_JACKFROST
|
||||
2204,2000:2500:3000:3500:4000,1000,0,10000:15000:20000:25000:30000,0,0,1000
|
||||
//-- WL_MARSHOFABYSS //TODO: apply proper duration [malufett]
|
||||
2205,2500,1000,0,30000,0,0,500
|
||||
//-- WL_MARSHOFABYSS
|
||||
2205,2500,1000,0,25000,0,0,500
|
||||
//-- WL_RECOGNIZEDSPELL
|
||||
2206,1000,1000,0,60000:90000:120000:150000:180000,0,50000:80000:110000:140000:170000,1000
|
||||
//-- WL_SIENNAEXECRATE
|
||||
2207,2000,2000,0,10000:12000:14000:16000:18000,0,0,-1
|
||||
|
||||
//-- WL_STASIS //TODO: apply proper duration [malufett]
|
||||
//-- WL_STASIS
|
||||
2209,3000,1000,0,10000:15000:20000:25000:30000,0,300000,1000
|
||||
//-- WL_DRAINLIFE
|
||||
2210,4000,0,0,0,0,2000,1000
|
||||
@ -1216,7 +1216,7 @@
|
||||
2214,3500:4000:4500:5000:5500,0,0,100,0,3000,1000
|
||||
|
||||
//-- WL_EARTHSTRAIN
|
||||
2216,2000:3000:4000:5000:6000,1000,0,150,0,10000,2000
|
||||
2216,2000:3000:4000:5000:6000,1000,0,150,0,75000:90000:105000:120000:135000,2000
|
||||
//-- WL_TETRAVORTEX
|
||||
2217,5000:6000:7000:8000:9000,2000,0,20000,0,15000,2000
|
||||
|
||||
@ -1559,7 +1559,7 @@
|
||||
2459,1000:2000:3000,0,0,600000:900000:1200000,0,60000,2000
|
||||
//-- SO_SUMMON_TERA
|
||||
2460,1000:2000:3000,0,0,600000:900000:1200000,0,60000,2000
|
||||
//-- SO_EL_ACTION //TODO apply proper cooldown [malufett]
|
||||
//-- SO_EL_ACTION
|
||||
2461,0,0,0,0,0,5000,0
|
||||
//-- SO_EL_ANALYSIS
|
||||
2462,0,0,0,0,0,0,2000
|
||||
|
@ -28,9 +28,8 @@ bonus bAtk,n; ATK + n
|
||||
bonus bAtk2,n; ATK2 + n
|
||||
bonus bAtkRate,n; Attack power + n%
|
||||
bonus bBaseAtk,n; Basic attack power + n
|
||||
bonus bIntMatk,n; Magical attack power + n
|
||||
bonus bMatk,n; Magical attack power + n
|
||||
bonus bMatkRate,n; Magical attack power + n%
|
||||
bonus bEquipmentMatk,n; Weapon magical attack power + n
|
||||
bonus bDef,n; Equipment DEF + n
|
||||
bonus bDef2,n; VIT based DEF + n
|
||||
bonus bDefRate,n; Equipment DEF + n%
|
||||
|
@ -919,7 +919,7 @@ REPLACE INTO `item_db` VALUES (1639,'N_Rod','Novice Rod',4,NULL,NULL,0,15,NULL,1
|
||||
REPLACE INTO `item_db` VALUES (1640,'Krieger_Onehand_Staff1','Glorious Arc Wand',4,20,NULL,0,70,NULL,1,NULL,0x00818314,7,2,2,4,80,1,10,'bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon,0; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1641,'Krieger_Onehand_Staff2','Glorious Cure Wand',4,20,NULL,0,70,NULL,1,NULL,0x00818314,7,2,2,4,80,1,10,'bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bIgnoreMdefRate,RC_DemiHuman,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1642,'Staff_Of_Darkness','Staff Of Darkness',4,20,NULL,0,100,NULL,1,NULL,0x00818314,7,2,2,2,NULL,NULL,10,'bonus bCastrate,-5; bonus bMatkRate,15; bonus bInt,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1643,'Dead_Tree_Cane','Dead Tree Cane',4,20,NULL,100,100,NULL,1,NULL,0x00818314,7,2,2,4,70,1,10,'bonus bIntMatk,15; bonus bInt,4; if(getrefine()>5) { bonus bInt,getrefine()-5; bonus bMaxHP,-200; bonus bMaxSP,-100; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1643,'Dead_Tree_Cane','Dead Tree Cane',4,20,NULL,100,100,NULL,1,NULL,0x00818314,7,2,2,4,70,1,10,'bonus bMatk,15; bonus bInt,4; if(getrefine()>5) { bonus bInt,getrefine()-5; bonus bMaxHP,-200; bonus bMaxSP,-100; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1644,'Piercing_Staff_M','Staff of Piercing',4,20,NULL,500,80,NULL,1,NULL,0x00018314,2,2,2,3,70,1,10,'bonus bInt,4; bonus bMatkRate,15; bonus bIgnoreMdefRate,10+getrefine();',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1645,'Lich_Bone_Wand_M','Lich\'s Bone Wand',4,20,NULL,800,60,NULL,1,2,0x00018314,2,2,2,3,70,1,10,'bonus bInt,1; bonus bDex,1; bonus bAtkEle,Ele_Undead; bonus bMatkRate,20; bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",5,10+getrefine(); if(getrefine()>=9){ bonus bMatkRate,3; bonus bMaxSP,300; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (1646,'La\'cryma_Stick','La\'cryma Stick',4,20,NULL,500,30,NULL,1,2,0x00010204,2,2,2,3,50,1,10,'bonus bInt,4; bonus bMatkRate,15; bonus bMdef,1; bonus2 bSkillAtk,"WZ_STORMGUST",getrefine(); if(getrefine()>9) bonus2 bCastrate,"WZ_STORMGUST",-8;',NULL,NULL);
|
||||
@ -1096,7 +1096,7 @@ REPLACE INTO `item_db` VALUES (2002,'Krieger_Twohand_Staff1','Glorious Destructi
|
||||
REPLACE INTO `item_db` VALUES (2003,'Destruction_Rod_M','Staff of Destruction',4,20,NULL,2500,130,NULL,1,1,0x00000200,2,2,34,4,80,1,23,'bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,366,-50;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (2004,'Kronos','Kronos',4,20,NULL,1000,30,NULL,1,NULL,0x00010204,2,2,34,4,50,1,23,'bonus bMatkRate,20; bonus bInt,3+(getrefine()/2); bonus bMaxHP,300+(50*getrefine()/2); autobonus "{bonus bMatkRate,12; bonus buseSPRate,20;}",1,5000,BF_MAGIC,"{specialeffect2 EF_ENHANCE;}";',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (2005,'Dea_Staff','Dea Staff',4,20,NULL,1000,30,NULL,1,1,0x00008110,2,2,34,3,50,1,23,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15+getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{}",20,1000,"AL_HEAL","{specialeffect2 EF_MAGICALATTHIT; heal 0,200;}";',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (2006,'G_Staff_Of_Light','Staff Of Light',4,20,NULL,1900,80,NULL,1,NULL,0x00810204,7,2,34,4,60,1,23,'bonus bIntMatk,150; bonus bAtkEle,Ele_Holy; bonus bInt,6;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (2006,'G_Staff_Of_Light','Staff Of Light',4,20,NULL,1900,80,NULL,1,NULL,0x00810204,7,2,34,4,60,1,23,'bonus bMatk,150; bonus bAtkEle,Ele_Holy; bonus bInt,6;',NULL,NULL);
|
||||
# Shields
|
||||
# ===================================================================
|
||||
REPLACE INTO `item_db` VALUES (2101,'Guard','Guard',5,500,NULL,300,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,32,NULL,NULL,1,1,NULL,NULL,NULL);
|
||||
@ -2105,9 +2105,9 @@ REPLACE INTO `item_db` VALUES (4445,'Luciola_Vespa_Card','Luciola Vespa Card',6,
|
||||
REPLACE INTO `item_db` VALUES (4447,'Centipede_Card','Centipede Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Poison,20; bonus2 bAddEle,Ele_Poison,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4448,'Cornus_Card','Cornus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Holy,20; bonus2 bAddEle,Ele_Holy,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4449,'Dark_Shadow_Card','Dark Shadow Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Dark,20; bonus2 bAddEle,Ele_Dark,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4450,'Banshee_Master_Card','Banshee Master Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bIntMatk,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4451,'Entweihen_Card','Entweihen Crothen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bIntMatk,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4452,'Centipede_Larva_Card','Centipede Larva Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bIntMatk,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4450,'Banshee_Master_Card','Banshee Master Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMatk,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4451,'Entweihen_Card','Entweihen Crothen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMatk,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4452,'Centipede_Larva_Card','Centipede Larva Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMatk,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4453,'Hilsrion_Card','Hillsrion Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,25;',NULL,NULL);
|
||||
# Armor Enchant System
|
||||
# ===================================================================
|
||||
@ -2768,7 +2768,7 @@ REPLACE INTO `item_db` VALUES (5566,'Tiger_Arhat_Mask','Tiger Arhat Mask',5,NULL
|
||||
REPLACE INTO `item_db` VALUES (5567,'Bright_Fury','Bright Fury',5,20,NULL,300,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,1,548,'bonus bStr,1; bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bAspdRate,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (5568,'Rabbit_Bonnet','Rabbit Bonnet',5,20,NULL,1000,NULL,1,NULL,1,0xFFFFFFFF,7,2,768,NULL,NULL,1,549,'bonus bInt,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (5569,'Gemini_Diadem','Gemini Diadem',5,20,NULL,300,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,70,1,550,'bonus bAgi,2; bonus bMatkRate,2; if(getrefine()>6) { bonus bMdef,7; bonus bMAtkRate,8; bonus2 bSubEle,Ele_Wind,5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (5570,'Gemini_Crown','Gemini Crown',5,20,NULL,300,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,70,1,551,'bonus bAgi,2; bonus bAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bIntMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (5570,'Gemini_Crown','Gemini Crown',5,20,NULL,300,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,70,1,551,'bonus bAgi,2; bonus bAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; }',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5571,'Rasta_Wig','Rasta_Wig',5,20,NULL,100,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,NULL,1,552,'bonus bStr,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (5572,'Savage_Baby_Hat','Savage Babe Hat',5,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,1,553,'bonus bVit,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (5573,'Bogy_Horn','Dokebi Horn',5,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,NULL,1,554,NULL,NULL,NULL);
|
||||
@ -2944,8 +2944,8 @@ REPLACE INTO `item_db` VALUES (5742,'Rudolf_Santa_Hat','Rudolph Santa Hat',5,20,
|
||||
REPLACE INTO `item_db` VALUES (5743,'Orange_Stem_Hat','Orange Stem Hat',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00000000,7,2,256,NULL,1,NULL,620,'bonus bLuk,3;',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5744,'Capricon_Crown','Capricon Crown',5,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,1,621,'bonus bVit,2; bonus bDex,2;',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5745,'Capricon_Diadem','Capricon Diadem',5,20,NULL,300,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,1,1,622,'bonus bDex,2; bonus bMdef,5;',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5746,'Rune_Circlet','Rune Circlet',5,20,NULL,100,NULL,12,NULL,1,0x00000080,8,2,256,NULL,100,1,623,'bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bIntMatk,5; }',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5747,'Mitra','Mitra',5,20,NULL,100,NULL,12,NULL,1,0x00000100,8,2,256,NULL,100,1,624,'bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bIntMatk,10; }',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5746,'Rune_Circlet','Rune Circlet',5,20,NULL,100,NULL,12,NULL,1,0x00000080,8,2,256,NULL,100,1,623,'bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bMatk,5; }',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5747,'Mitra','Mitra',5,20,NULL,100,NULL,12,NULL,1,0x00000100,8,2,256,NULL,100,1,624,'bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bMatk,10; }',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5748,'Sniper_Goggles','Sniper Goggles',5,20,NULL,100,NULL,12,NULL,1,0x00000800,8,2,768,NULL,100,1,625,'bonus bAgi,1; bonus bDex,1; bonus bMdef,5; if(readparam(bAgi)>=120){ bonus bLongAtkRate,4; bonus bAspd,1; }',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5749,'Driver_Band_M','Driver Band',5,20,NULL,100,NULL,12,NULL,1,0x00000400,8,1,256,NULL,100,1,626,'bonus bStr,1; bonus bDex,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bCritical,3; }',NULL,NULL);
|
||||
# REPLACE INTO `item_db` VALUES (5750,'Shadow_Crown','Shadow Crown',5,20,NULL,100,NULL,12,NULL,1,0x00020000,8,2,256,NULL,100,1,627,'bonus bAgi,1; bonus bInt,1; bonus bMdef,1; if(readparam(bAgi)>=120){ bonus bAtk,10; bonus bFlee,3; }',NULL,NULL);
|
||||
|
@ -1240,7 +1240,7 @@ REPLACE INTO `item_db_re` VALUES (2156,'Bible_Of_Promise1','Bible Of Promise Vol
|
||||
#2158,
|
||||
#2159,
|
||||
REPLACE INTO `item_db_re` VALUES (2160,'Giant_Shield','Giant Shield',5,56000,NULL,2800,NULL,130,NULL,1,0x00004082,7,2,32,NULL,'100',1,4,'bonus2 bSubSize,Size_Large,5; if(getrefine()>=9){ bonus2 bSubSize,Size_Large,5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2161,'Geffenia_Tomb_of_Water','Geffenia Tomb of Water',5,56000,NULL,1000,NULL,30,NULL,NULL,0x00000200,7,2,32,NULL,'100',1,5,'bonus bMdef,2; bonus bInt,1; if(readparam(bInt)>=120){ bonus bEquipmentMatk,10; bonus bMaxHP,800; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2161,'Geffenia_Tomb_of_Water','Geffenia Tomb of Water',5,56000,NULL,1000,NULL,30,NULL,NULL,0x00000200,7,2,32,NULL,'100',1,5,'bonus bMdef,2; bonus bInt,1; if(readparam(bInt)>=120){ bonus bMatk,10; bonus bMaxHP,800; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2162,'Bible_Of_Promise2','Bible Of Promise Vol2',5,20,NULL,500,NULL,20,NULL,1,0x00000100,7,2,32,NULL,'140',1,5,'bonus bMdef,5; bonus bHealPower,5; skill "ALL_ODINS_POWER",2;',NULL,NULL);
|
||||
#2163,
|
||||
#2164,
|
||||
@ -1628,7 +1628,7 @@ REPLACE INTO `item_db_re` VALUES (2571,'Para_Team_Manteau2','Eden Team Manteau I
|
||||
REPLACE INTO `item_db_re` VALUES (2573,'Archangel_Wings','Archangel Wings',5,NULL,NULL,200,NULL,18,NULL,1,0xFFFFFFFF,7,2,4,NULL,NULL,1,1,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2574,'Urj_Manteau','Urj Manteau',5,20,NULL,600,NULL,20,NULL,NULL,0x00000080,8,2,4,NULL,'100',1,0,'bonus bMaxHPRate,2; bonus2 bSubEle,Ele_Neutral,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2575,'Pertz_Manteau','Pertz Manteau',5,20,NULL,600,NULL,16,NULL,NULL,0x00000080,8,2,4,NULL,'100',1,0,'bonus bFlee,10; bonus bCritical,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2576,'Adventurer\'s_Backpack','Adventurer\'s Backpack',5,NULL,NULL,200,NULL,20,NULL,1,0xFFFFFFFF,7,2,4,NULL,NULL,1,2,'skill "BS_GREED",1; if(getrefine()>6) { if(readparam(bStr)>=90){ bonus bBaseAtk,20; } if(readparam(bInt)>=90){ bonus bEquipmentMatk,30; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,10; } if(readparam(bAgi)>=90){ bonus bAspdRate,8; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,10; } } if(getrefine()>8) { if(readparam(bStr)>=90){ bonus bBaseAtk,10; } if(readparam(bInt)>=90){ bonus bEquipmentMatk,20; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,5; } if(readparam(bAgi)>=90){ bonus bAspd,1; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,5; } }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2576,'Adventurer\'s_Backpack','Adventurer\'s Backpack',5,NULL,NULL,200,NULL,20,NULL,1,0xFFFFFFFF,7,2,4,NULL,NULL,1,2,'skill "BS_GREED",1; if(getrefine()>6) { if(readparam(bStr)>=90){ bonus bBaseAtk,20; } if(readparam(bInt)>=90){ bonus bMatk,30; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,10; } if(readparam(bAgi)>=90){ bonus bAspdRate,8; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,10; } } if(getrefine()>8) { if(readparam(bStr)>=90){ bonus bBaseAtk,10; } if(readparam(bInt)>=90){ bonus bMatk,20; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,5; } if(readparam(bAgi)>=90){ bonus bAspd,1; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,5; } }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2577,'Sabath_Hood','Sabath Hood',5,20,NULL,100,NULL,13,NULL,NULL,0x00001000,7,2,4,NULL,'100',1,0,'bonus bFlee,12; bonus bCritical,getrefine();',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2578,'Nabeu\'s_Hood','Nabeu\'s Hood',5,20,NULL,100,NULL,13,NULL,NULL,0x00001000,7,2,4,NULL,'100',1,0,'bonus bFlee,getrefine()*2; bonus bBaseAtk,getrefine()*2;',NULL,NULL);
|
||||
#2579,
|
||||
@ -1832,7 +1832,7 @@ REPLACE INTO `item_db_re` VALUES (2784,'Oh_Holy_Night','Christmas Musicbox',5,20
|
||||
REPLACE INTO `item_db_re` VALUES (2785,'Orleans_Glove_M','Orlean\'s Gloves',5,20,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFE,2,2,136,NULL,'90',NULL,0,'bonus bDex,2; bonus bMatkRate,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2786,'Spiritual_Ring_M','Spiritual Ring',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,0,'bonus bInt,2; bonus bDex,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2787,'Waterdrop_Brooch','Waterdrop Brooch',5,20,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,2,2,136,NULL,NULL,NULL,0,'bonus bMdef,2; bonus bMaxHPrate,1; bonus2 bSubEle,Ele_Water,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2788,'Bradium_Earing','Bradium Earring',5,20,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,2,2,136,NULL,NULL,NULL,0,'bonus bInt,1; bonus bDex,1; bonus bEquipmentMatk,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2788,'Bradium_Earing','Bradium Earring',5,20,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,2,2,136,NULL,NULL,NULL,0,'bonus bInt,1; bonus bDex,1; bonus bMatk,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2789,'Bradium_Ring','Bradium Ring',5,20,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,2,2,136,NULL,NULL,NULL,0,'bonus bStr,1; bonus bVit,1; bonus bAtk,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2790,'Bradium_Brooch','Bradium Brooch',5,20,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,2,2,136,NULL,NULL,NULL,0,'bonus bAgi,1; bonus bFlee,4; if(readparam(bAgi)==120) bonus bCritical,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2791,'Just_Got_Fish','Fresh Fish',5,20,NULL,500,NULL,NULL,NULL,1,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus bHit,3;',NULL,NULL);
|
||||
@ -1916,7 +1916,7 @@ REPLACE INTO `item_db_re` VALUES (2883,'Urj_Seal','Urj Seal',5,20,NULL,200,NULL,
|
||||
REPLACE INTO `item_db_re` VALUES (2884,'Pertz_Seal','Pertz Seal',5,20,NULL,200,NULL,3,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,20; bonus bMaxSP,20;',NULL,NULL);
|
||||
#2885,
|
||||
REPLACE INTO `item_db_re` VALUES (2886,'Sabath_Seal','Sabath Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bCritical,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2887,'Nabeu\'s_Seal','Nabeu\'s Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,10; bonus bEquipmentMatk,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (2887,'Nabeu\'s_Seal','Nabeu\'s Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,10; bonus bMatk,20;',NULL,NULL);
|
||||
#2888,
|
||||
#2889,
|
||||
REPLACE INTO `item_db_re` VALUES (2890,'White_Wing_Brooch','White Wing Brooch',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00000800,7,2,136,NULL,'100',NULL,0,'bonus bDex,2; bonus bLongAtkRate,3;',NULL,NULL);
|
||||
@ -2385,16 +2385,16 @@ REPLACE INTO `item_db_re` VALUES (4445,'Luciola_Vespa_Card','Luciola Vespa Card'
|
||||
REPLACE INTO `item_db_re` VALUES (4447,'Centipede_Card','Centipede Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Poison,20; bonus2 bAddEle,Ele_Poison,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4448,'Cornus_Card','Cornus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Holy,20; bonus2 bAddEle,Ele_Holy,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4449,'Dark_Shadow_Card','Dark Shadow Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Dark,20; bonus2 bAddEle,Ele_Dark,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4450,'Banshee_Master_Card','Banshee Master Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bIntMatk,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4451,'Entweihen_Card','Entweihen Crothen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bIntMatk,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4452,'Centipede_Larva_Card','Centipede Larva Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bEquipmentMatk,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4450,'Banshee_Master_Card','Banshee Master Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMatk,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4451,'Entweihen_Card','Entweihen Crothen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMatk,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4452,'Centipede_Larva_Card','Centipede Larva Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMatk,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4453,'Hilsrion_Card','Hillsrion Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bAtk,25;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4454,'Light_Up_Card1','Light Up Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4455,'Light_Up_Card2','Light Up Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4456,'Nidhoggur_Shadow_Card','Nidhoggur Shadow Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bInt,5; if(BaseClass==Job_High_Wizard) bonus bFixedCastrate,-50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4457,'Naght_Sieger_Card','Naght Sieger Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bSkillAtk,"MG_NAPALMBEAT",30; bonus2 bSkillAtk,"MG_SOULSTRIKE",30; bonus2 bSkillAtk,"HW_NAPALMVULCAN",30; bonus2 bSkillAtk,"GS_MAGICALBULLET",30; bonus2 bSkillAtk,"WL_SOULEXPANSION",30;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4458,'Duneyrr_Card','Duneyrr Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bBaseAtk,10; autobonus "{bonus bFlee2,10;}",10,4000,0,"{specialeffect2 EF_ENHANCE;}";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4459,'Rata_Card','Rata Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,10; autobonus "{bonus bFixedCastrate,-50;}",10,4000,BF_MAGIC,"{specialeffect2 EF_SUFFRAGIUM;}";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4459,'Rata_Card','Rata Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,' bonus bMatk,10; autobonus "{bonus bFixedCastrate,-50;}",10,4000,BF_MAGIC,"{specialeffect2 EF_SUFFRAGIUM;}";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4460,'Rhyncho_Card','Rhyncho Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bHealPower,4; bonus bUseSPrate,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4461,'Phylla_Card','Phylla Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDex,1; bonus bAgi,1; autobonus "{bonus bCritical,20;}",4,4000,0,"{specialeffect2 EF_ENHANCE;}";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4462,'Hardrock_Mammoth_Card','Hardrock Mammoth Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bDef,5; if(getrefine()>=12) { bonus bDef,20; bonus bMaxHPrate,10; } if(getrefine()>=14) { bonus bMaxHPrate,3; }',NULL,NULL);
|
||||
@ -2414,7 +2414,7 @@ REPLACE INTO `item_db_re` VALUES (4475,'Cobalt_Mineral_Card','Cobalt Mineral Car
|
||||
REPLACE INTO `item_db_re` VALUES (4476,'Pinguicula_Card','Pinguicula Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bMagicAddRace,RC_Insect,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4477,'Hell_Apocalypse_Card','Hell_Apocalypse Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bMagicAddRace,RC_Demon,10;',NULL,NULL);
|
||||
#
|
||||
REPLACE INTO `item_db_re` VALUES (4505,'Scaraba_Card','Scaraba Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bIntMatk,20; bonus bMaxSPrate,-1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4505,'Scaraba_Card','Scaraba Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bMatk,20; bonus bMaxSPrate,-1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4506,'Dolomedes_Card','Dolomedes Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDex,2; if(BaseClass==Job_Archer){ bonus bDex,getrefine()/3; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4507,'Queen_Scaraba_Card','Queen Scaraba Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4508,'Gold_Scaraba_Card','Gold Scaraba Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bBaseAtk,20; bonus bMaxHPrate,-1;',NULL,NULL);
|
||||
@ -2558,10 +2558,10 @@ REPLACE INTO `item_db_re` VALUES (4808,'Fighting_Lv4','Fighting Lv4',6,20,NULL,1
|
||||
REPLACE INTO `item_db_re` VALUES (4809,'Fighting_Lv3','Fighting Lv3',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,12; bonus bHit,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4810,'Fighting_Lv2','Fighting Lv2',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,9; bonus bHit,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4811,'Fighting_Lv1','Fighting Lv1',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,6; bonus bHit,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4812,'Force_Lv4','Force Lv4',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,15; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4813,'Force_Lv3','Force Lv3',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,12; bonus bVariableCastrate,-8;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4814,'Force_Lv2','Force Lv2',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,9; bonus bVariableCastrate,-6;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4815,'Force_Lv1','Force Lv1',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,6; bonus bVariableCastrate,-4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4812,'Force_Lv4','Force Lv4',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,15; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4813,'Force_Lv3','Force Lv3',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,12; bonus bVariableCastrate,-8;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4814,'Force_Lv2','Force Lv2',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,9; bonus bVariableCastrate,-6;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4815,'Force_Lv1','Force Lv1',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,6; bonus bVariableCastrate,-4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4816,'Sharp_Lv3','Sharp Lv3',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bCritical,12; bonus bHit,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4817,'Sharp_Lv2','Sharp Lv2',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bCritical,9; bonus bHit,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4818,'Sharp_Lv1','Sharp Lv1',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bCritical,6; bonus bHit,2;',NULL,NULL);
|
||||
@ -2572,12 +2572,12 @@ REPLACE INTO `item_db_re` VALUES (4822,'Fighting_Lv7','Fighting Lv7',6,20,NULL,1
|
||||
REPLACE INTO `item_db_re` VALUES (4823,'Fighting_Lv8','Fighting Lv8',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,27; bonus bHit,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4824,'Fighting_Lv9','Fighting Lv9',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bHit,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4825,'Fighting_Lv10','Fighting Lv10',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,50; bonus bHit,15;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4826,'Force_Lv5','Force Lv5',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,18; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4827,'Force_Lv6','Force Lv6',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,21; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4828,'Force_Lv7','Force Lv7',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,24; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4829,'Force_Lv8','Force Lv8',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,27; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4830,'Force_Lv9','Force Lv9',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,30; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4831,'Force_Lv10','Force Lv10',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bEquipmentMatk,50; bonus bVariableCastrate,-20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4826,'Force_Lv5','Force Lv5',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,18; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4827,'Force_Lv6','Force Lv6',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,21; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4828,'Force_Lv7','Force Lv7',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,24; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4829,'Force_Lv8','Force Lv8',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,27; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4830,'Force_Lv9','Force Lv9',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,30; bonus bVariableCastrate,-10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4831,'Force_Lv10','Force Lv10',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,' bonus bMatk,50; bonus bVariableCastrate,-20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4832,'Archer_Lv1','Archer Lv1',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bLongAtkRate,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4833,'Archer_Lv2','Archer Lv2',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bLongAtkRate,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4834,'Archer_Lv3','Archer Lv3',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bLongAtkRate,6;',NULL,NULL);
|
||||
@ -3178,7 +3178,7 @@ REPLACE INTO `item_db_re` VALUES (5566,'Tiger_Arhat_Mask','Tiger Arhat Mask',5,N
|
||||
REPLACE INTO `item_db_re` VALUES (5567,'Bright_Fury','Bright Fury',5,20,NULL,300,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,'1',1,548,'bonus bStr,1; bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bAspdRate,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5568,'Rabbit_Bonnet','Rabbit Bonnet',5,20,NULL,1000,NULL,1,NULL,1,0xFFFFFFFF,7,2,768,NULL,NULL,1,549,'bonus bInt,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5569,'Gemini_Diadem','Gemini Diadem',5,20,NULL,300,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'70',1,550,'bonus bAgi,2; bonus bMatkRate,2; if(getrefine()>6) { bonus bMdef,7; bonus bMAtkRate,8; bonus2 bSubEle,Ele_Wind,5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5570,'Gemini_Crown','Gemini Crown',5,20,NULL,300,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'70',1,551,'bonus bAgi,2; bonus bAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bIntMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5570,'Gemini_Crown','Gemini Crown',5,20,NULL,300,NULL,4,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'70',1,551,'bonus bAgi,2; bonus bAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; }',NULL,NULL);
|
||||
# REPLACE INTO `item_db_re` VALUES (5571,'Rasta_Wig','Rasta_Wig',5,20,NULL,100,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,NULL,1,552,'bonus bStr,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5572,'Savage_Baby_Hat','Savage Babe Hat',5,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,'1',1,553,'bonus bVit,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5573,'Bogy_Horn','Dokebi Horn',5,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,NULL,1,554,NULL,NULL,NULL);
|
||||
@ -3354,8 +3354,8 @@ REPLACE INTO `item_db_re` VALUES (5742,'Rudolf_Santa_Hat','Rudolph Santa Hat',5,
|
||||
REPLACE INTO `item_db_re` VALUES (5743,'Orange_Stem_Hat','Orange Stem Hat',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00000000,7,2,256,NULL,'1',NULL,620,'bonus bLuk,3;',NULL,NULL);
|
||||
# REPLACE INTO `item_db_re` VALUES (5744,'Capricon_Crown','Capricon Crown',5,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,'1',1,621,'bonus bVit,2; bonus bDex,2;',NULL,NULL);
|
||||
# REPLACE INTO `item_db_re` VALUES (5745,'Capricon_Diadem','Capricon Diadem',5,20,NULL,300,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,622,'bonus bDex,2; bonus bMdef,5;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5746,'Rune_Circlet','Rune Circlet',5,20,NULL,100,NULL,12,NULL,1,0x00000080,8,2,256,NULL,'100',1,623,'bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bIntMatk,5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5747,'Mitra','Mitra',5,20,NULL,100,NULL,12,NULL,1,0x00000100,8,2,256,NULL,'100',1,624,'bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bIntMatk,10; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5746,'Rune_Circlet','Rune Circlet',5,20,NULL,100,NULL,12,NULL,1,0x00000080,8,2,256,NULL,'100',1,623,'bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bMatk,5; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5747,'Mitra','Mitra',5,20,NULL,100,NULL,12,NULL,1,0x00000100,8,2,256,NULL,'100',1,624,'bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bMatk,10; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5748,'Sniper_Goggle','Sniper Goggles',5,20,NULL,100,NULL,12,NULL,1,0x00000800,8,2,768,NULL,'100',1,625,'bonus bAgi,1; bonus bDex,1; bonus bMdef,5; if(readparam(bAgi)>=120){ bonus bLongAtkRate,4; bonus bAspd,1; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5749,'Driver_Band','Driver Band',5,20,NULL,100,NULL,12,NULL,1,0x00000400,8,1,256,NULL,'100',1,626,'bonus bStr,1; bonus bDex,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bCritical,3; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (5750,'Shadow_Handicraft','Shadow Crown',5,20,NULL,100,NULL,12,NULL,1,0x00020000,8,2,256,NULL,'100',1,627,'bonus bAgi,1; bonus bInt,1; bonus bMdef,1; if(readparam(bAgi)>=120){ bonus bAtk,10; bonus bFlee,3; }',NULL,NULL);
|
||||
@ -5929,13 +5929,13 @@ REPLACE INTO `item_db_re` VALUES (13058,'E_Combat_Knife_C','Combad Knife',4,1,NU
|
||||
REPLACE INTO `item_db_re` VALUES (13059,'E_Asura_C','Asura',4,1,NULL,0,'120',NULL,1,NULL,0x02000000,7,2,2,1,'1',NULL,1,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13060,'E_Counter_Dagger_C','Counter Dagger',4,1,NULL,0,'209',NULL,1,NULL,0x00810204,7,2,2,4,'1',NULL,1,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13061,'Black_Wing','Black Wing',4,20,NULL,600,'142',NULL,1,1,0x00020000,7,2,2,3,'102',1,1,' bonus2 bSkillAtk,"SC_FATALMENACE",30+(getrefine()*2); bonus bMatkRate,(getrefine()*3);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13062,'Ancient_Dagger','Ancient Dagger',4,20,NULL,600,'107',NULL,NULL,NULL,0x028F5EEE,2,2,2,4,'120',1,1,' bonus bEquipmentMatk,120; bonus bMaxSP,100; bonus bSPrecovRate,5; bonus2 bAddEff2,Eff_Curse,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13062,'Ancient_Dagger','Ancient Dagger',4,20,NULL,600,'107',NULL,NULL,NULL,0x028F5EEE,2,2,2,4,'120',1,1,' bonus bMatk,120; bonus bMaxSP,100; bonus bSPrecovRate,5; bonus2 bAddEff2,Eff_Curse,50;',NULL,NULL);
|
||||
#13063,
|
||||
#13064,
|
||||
#13065,
|
||||
REPLACE INTO `item_db_re` VALUES (13066,'P_Dagger3','Eden Dagger III',4,NULL,NULL,0,'165:80',NULL,1,NULL,0xFE9F7EEF,7,2,2,3,'60',NULL,1,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13067,'Kris','Kris',4,20,NULL,700,'107:70',NULL,1,1,0xFE9F7EEF,2,2,2,3,'30',1,1,'bonus2 bHpDrainRate,50,10;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13068,'Pompano','Pompano',4,NULL,NULL,0,'160:100',NULL,3,NULL,0xFE9F7EEF,7,2,2,1,'50',NULL,1,'bonus bUnbreakableWeapon,0; autobonus "{bonus bBaseAtk,30;}",10,7000,BF_WEAPON,"{specialeffect2 EF_ENHANCE;}"; autobonus "{bonus bEquipmentMatk,20;}",10,7000,BF_MAGIC,"{specialeffect2 EF_SUFFRAGIUM;}"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bEquipmentMatk,10; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13068,'Pompano','Pompano',4,NULL,NULL,0,'160:100',NULL,3,NULL,0xFE9F7EEF,7,2,2,1,'50',NULL,1,'bonus bUnbreakableWeapon,0; autobonus "{bonus bBaseAtk,30;}",10,7000,BF_WEAPON,"{specialeffect2 EF_ENHANCE;}"; autobonus "{bonus bMatk,20;}",10,7000,BF_MAGIC,"{specialeffect2 EF_SUFFRAGIUM;}"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bMatk,10; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13069,'As-nail','As-nail',4,56000,NULL,500,'160:80',NULL,1,NULL,0x000654E2,7,2,2,4,'110',1,1,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Freeze,100+(getrefine()*50);',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13070,'Scarlet-nail','Scarlet-nail',4,56000,NULL,500,'160:80',NULL,1,NULL,0x000654E2,7,2,2,4,'110',1,1,'bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Stone,100+(getrefine()*50);',NULL,NULL);
|
||||
#13071,
|
||||
@ -6058,13 +6058,13 @@ REPLACE INTO `item_db_re` VALUES (13306,'BF_Huuma_Shuriken2','Valorous Huuma Fro
|
||||
REPLACE INTO `item_db_re` VALUES (13307,'Krieger_Huuma_Shuriken1','Glorious Shuriken',4,20,NULL,0,'55:90',NULL,1,NULL,0x02000000,7,2,34,4,'80',1,22,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bMatkRate,15; autobonus "{bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100;}",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-3,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13308,'Huuma_Blaze_I','Huuma Blaze Shuriken',4,NULL,NULL,0,'230',NULL,1,NULL,0x02000000,7,2,34,4,NULL,NULL,22,'bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13309,'Huuma_Giant_Wheel_C','Huuma Giant Wheel Shuriken',4,NULL,NULL,0,'99',NULL,1,NULL,0x02000000,7,2,34,4,'1',NULL,22,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13310,'P_Huuma_Suriken1','P.Huuma Suriken I',4,NULL,NULL,0,'170',NULL,1,NULL,0x02000000,7,2,34,3,'60',NULL,22,' bonus bEquipmentMatk,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13310,'P_Huuma_Suriken1','P.Huuma Suriken I',4,NULL,NULL,0,'170',NULL,1,NULL,0x02000000,7,2,34,3,'60',NULL,22,' bonus bMatk,50;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13311,'Sword_Huuma_Shuriken','Sword Huuma Shuriken',4,5000,NULL,1500,'170',NULL,1,NULL,0x02000000,8,2,34,3,'99',1,22,'bonus bStr,3;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13312,'Prototype_Huuma_Shuriken','Prototype Huuma Shuriken',4,NULL,NULL,3000,NULL,NULL,1,NULL,0x02000000,8,2,34,4,'99',1,22,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13313,'Flower_Huuma_Shuriken','Flower Huuma Shuriken',4,100000,NULL,1500,'150',NULL,1,2,0x02000000,8,2,34,3,'110',1,22,' bonus bEquipmentMatk,50; bonus bAtkEle,Ele_Fire;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13314,'Wave_Huuma_Shuriken','Wave Huuma Shuriken',4,100000,NULL,1500,'200',NULL,1,NULL,0x02000000,8,2,34,4,'110',1,22,' bonus bEquipmentMatk,50; bonus bAtkEle,Ele_Water;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13315,'Thunderstorm_Huuma_Shuriken','Thunderstorm Huuma Shuriken',4,100000,NULL,1500,'200',NULL,1,NULL,0x02000000,8,2,34,4,'110',1,22,' bonus bEquipmentMatk,50; bonus bAtkEle,Ele_Wind;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13316,'Enhance_Huuma_Shuriken','Enhance Huuma Shuriken',4,20,NULL,1500,'55',NULL,1,1,0x02000000,7,2,34,3,'1',1,22,'bonus bUnbreakableWeapon,0; bonus bBaseAtk,10*getrefine(); bonus bEquipmentMatk,5*getrefine(); bonus bLongAtkRate,getrefine(); if(BaseLevel>=70) { bonus bBaseAtk,5*((BaseLevel-60)/10); }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13313,'Flower_Huuma_Shuriken','Flower Huuma Shuriken',4,100000,NULL,1500,'150',NULL,1,2,0x02000000,8,2,34,3,'110',1,22,' bonus bMatk,50; bonus bAtkEle,Ele_Fire;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13314,'Wave_Huuma_Shuriken','Wave Huuma Shuriken',4,100000,NULL,1500,'200',NULL,1,NULL,0x02000000,8,2,34,4,'110',1,22,' bonus bMatk,50; bonus bAtkEle,Ele_Water;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13315,'Thunderstorm_Huuma_Shuriken','Thunderstorm Huuma Shuriken',4,100000,NULL,1500,'200',NULL,1,NULL,0x02000000,8,2,34,4,'110',1,22,' bonus bMatk,50; bonus bAtkEle,Ele_Wind;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13316,'Enhance_Huuma_Shuriken','Enhance Huuma Shuriken',4,20,NULL,1500,'55',NULL,1,1,0x02000000,7,2,34,3,'1',1,22,'bonus bUnbreakableWeapon,0; bonus bBaseAtk,10*getrefine(); bonus bMatk,5*getrefine(); bonus bLongAtkRate,getrefine(); if(BaseLevel>=70) { bonus bBaseAtk,5*((BaseLevel-60)/10); }',NULL,NULL);
|
||||
# More 1-Handed Swords
|
||||
REPLACE INTO `item_db_re` VALUES (13400,'Cutlas_','Cutlus',4,20,NULL,900,'150',NULL,1,1,0x000654E2,7,2,2,4,'40',1,2,'skill "SM_BASH",5; bonus bStr,2; bonus bDef,1;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (13401,'Excalibur_C','Excalibur',4,1,NULL,0,'199',NULL,1,NULL,0x000654E2,7,2,2,4,'1',NULL,2,'bonus bInt,10; bonus bLuk,10; bonus bAtkEle,Ele_Holy;',NULL,NULL);
|
||||
@ -7233,7 +7233,7 @@ REPLACE INTO `item_db_re` VALUES (18004,'Iron_Cannon_Ball','Iron Cannon Ball',10
|
||||
REPLACE INTO `item_db_re` VALUES (18100,'Shooting_Star','Shooting Star',4,20,NULL,0,'190',NULL,5,NULL,0x00080800,7,2,34,4,'1',1,11,'bonus bLongAtkRate,20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18101,'F_Bow_Of_Rudra_C','Rudra Bow',4,2,NULL,0,'185',NULL,5,NULL,0x000A0848,7,2,34,4,NULL,NULL,11,'bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18102,'E_Bow_Of_Rudra_C','Rudra Bow',4,2,NULL,0,'185',NULL,5,NULL,0x000A0848,7,2,34,4,NULL,NULL,11,'bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18103,'Mystic_Bow','Mystic Bow',4,NULL,NULL,1700,'75',NULL,5,NULL,0x00000400,8,2,34,3,'105',1,11,' bonus bEquipmentMatk,100; bonus bInt,4;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18103,'Mystic_Bow','Mystic Bow',4,NULL,NULL,1700,'75',NULL,5,NULL,0x00000400,8,2,34,3,'105',1,11,' bonus bMatk,100; bonus bInt,4;',NULL,NULL);
|
||||
#18104,
|
||||
#18105,
|
||||
REPLACE INTO `item_db_re` VALUES (18106,'P_Bow3','Eden Bow III',4,NULL,NULL,0,'140',NULL,5,NULL,0x000A0848,7,2,34,3,'60',NULL,11,NULL,NULL,NULL);
|
||||
@ -7254,7 +7254,7 @@ REPLACE INTO `item_db_re` VALUES (18505,'Umbala_Spirit','Umbala Spirit',5,NULL,N
|
||||
REPLACE INTO `item_db_re` VALUES (18506,'Hattah_Black','Hattah Black',5,12000,NULL,4000,NULL,2,NULL,1,0xFFFFFFFF,7,2,769,NULL,'1',1,676,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18507,'Elven_Ears_','Elven Ears',5,20,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFE,7,2,512,NULL,'70',NULL,73,NULL,NULL,NULL);
|
||||
#
|
||||
REPLACE INTO `item_db_re` VALUES (18514,'Para_Team_Hat2','Eden Team Hat II',5,NULL,NULL,0,NULL,5,NULL,1,0xFFFFFFFF,7,2,256,NULL,'60',1,682,'autobonus "{bonus bBaseAtk,10;}",50,5000,BF_WEAPON,"{specialeffect2 EF_ENHANCE;}"; autobonus "{bonus bEquipmentMatk,10;}",50,5000,BF_MAGIC,"{specialeffect2 EF_MAGICALATTHIT;}";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18514,'Para_Team_Hat2','Eden Team Hat II',5,NULL,NULL,0,NULL,5,NULL,1,0xFFFFFFFF,7,2,256,NULL,'60',1,682,'autobonus "{bonus bBaseAtk,10;}",50,5000,BF_WEAPON,"{specialeffect2 EF_ENHANCE;}"; autobonus "{bonus bMatk,10;}",50,5000,BF_MAGIC,"{specialeffect2 EF_MAGICALATTHIT;}";',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18515,'RTC_Winner_Hat','RTC Winner Hat',5,20,NULL,100,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,512,NULL,'1',NULL,683,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18516,'RTC_2nd_Winner_Hat','RTC 2nd Winner Hat',5,20,NULL,100,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,512,NULL,'1',NULL,684,NULL,NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18517,'RTC_3rd_Winner_Hat','RTC 3rd Winner Hat',5,20,NULL,100,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,512,NULL,'1',NULL,685,NULL,NULL,NULL);
|
||||
@ -7269,7 +7269,7 @@ REPLACE INTO `item_db_re` VALUES (18526,'Candy_Cane_In_Mouth','Candy Cane In Mou
|
||||
REPLACE INTO `item_db_re` VALUES (18527,'Dark_Pumpkin_Hat','Dark Pumpkin-head',5,20,NULL,500,NULL,5,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'45',1,691,'bonus2 bAddMonsterDropItem,12192,20; bonus bMdef,5; bonus bAllStats,2;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18539,'Skull_Cap','Skull Cap',5,40,NULL,200,NULL,5,NULL,1,0xFFFFFFFF,7,2,256,NULL,'10',1,713,'bonus bMatkRate,2; if(getrefine() >= 5) { bonus bMatkRate,3; } if(getrefine() >= 7) { bonus bMatkRate,3; }',NULL,NULL);
|
||||
#
|
||||
REPLACE INTO `item_db_re` VALUES (18570,'Ancient_Gold_Ornament','Ancient Gold Ornament',5,20,NULL,400,NULL,7,NULL,1,0xFFFFFFFE,7,2,256,NULL,'100',1,739,'if(BaseLevel >= 150) { bonus bAllStats,2; } if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){ bonus2 bAddRace,RC_Boss,8; bonus2 bAddRace,RC_NonBoss,8; } if(BaseClass==Job_Mage||BaseClass==Job_Acolyte){ bonus bEquipmentMatk,8; } if(BaseClass==Job_Archer){ bonus bDex,3; bonus bLongAtkRate,10; }',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (18570,'Ancient_Gold_Ornament','Ancient Gold Ornament',5,20,NULL,400,NULL,7,NULL,1,0xFFFFFFFE,7,2,256,NULL,'100',1,739,'if(BaseLevel >= 150) { bonus bAllStats,2; } if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){ bonus2 bAddRace,RC_Boss,8; bonus2 bAddRace,RC_NonBoss,8; } if(BaseClass==Job_Mage||BaseClass==Job_Acolyte){ bonus bMatk,8; } if(BaseClass==Job_Archer){ bonus bDex,3; bonus bLongAtkRate,10; }',NULL,NULL);
|
||||
#
|
||||
REPLACE INTO `item_db_re` VALUES (18580,'Yggdrasil_Crown','Yggdrasil Crown',5,20,NULL,200,NULL,3,NULL,NULL,0xFFFFFFFF,7,2,256,NULL,'1',1,724,'bonus bMdef,3; bonus bHealPower,2; bonus bHealpower2,10; if(getrefine() >= 7){ bonus bHealPower,5; } if(getrefine() >= 9){ bonus bHealPower,3; }',NULL,NULL);
|
||||
#
|
||||
|
617
src/map/battle.c
617
src/map/battle.c
@ -418,6 +418,316 @@ int battle_attr_fix(struct block_list *src, struct block_list *target, int damag
|
||||
}
|
||||
return damage*ratio/100;
|
||||
}
|
||||
/*==========================================
|
||||
* Calculates card bonuses damage adjustments.
|
||||
*------------------------------------------*/
|
||||
int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int damage, int left, int flag){
|
||||
struct map_session_data *sd, *tsd;
|
||||
short cardfix = 1000, t_class, s_class, s_race2, t_race2;
|
||||
struct status_data *sstatus, *tstatus;
|
||||
int i;
|
||||
|
||||
sd = BL_CAST(BL_PC, src);
|
||||
tsd = BL_CAST(BL_PC, target);
|
||||
t_class = status_get_class(target);
|
||||
s_class = status_get_class(src);
|
||||
sstatus = status_get_status_data(src);
|
||||
tstatus = status_get_status_data(target);
|
||||
s_race2 = status_get_race2(src);
|
||||
t_race2 = status_get_race2(target);
|
||||
|
||||
if( !damage )
|
||||
return 0;
|
||||
|
||||
switch(attack_type){
|
||||
case BF_MAGIC:
|
||||
if ( sd && !(nk&NK_NO_CARDFIX_ATK) ) {
|
||||
cardfix=cardfix*(100+sd->magic_addrace[tstatus->race])/100;
|
||||
if (!(nk&NK_NO_ELEFIX))
|
||||
cardfix=cardfix*(100+sd->magic_addele[tstatus->def_ele])/100;
|
||||
cardfix=cardfix*(100+sd->magic_addsize[tstatus->size])/100;
|
||||
cardfix=cardfix*(100+sd->magic_addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
for(i=0; i< ARRAYLENGTH(sd->add_mdmg) && sd->add_mdmg[i].rate;i++) {
|
||||
if(sd->add_mdmg[i].class_ == t_class) {
|
||||
cardfix=cardfix*(100+sd->add_mdmg[i].rate)/100;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (cardfix != 1000)
|
||||
damage = damage * cardfix / 1000;
|
||||
}
|
||||
|
||||
if( tsd && !(nk&NK_NO_CARDFIX_DEF) )
|
||||
{ // Target cards.
|
||||
if (!(nk&NK_NO_ELEFIX))
|
||||
{
|
||||
int ele_fix = tsd->subele[s_ele];
|
||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++)
|
||||
{
|
||||
if(tsd->subele2[i].ele != s_ele) continue;
|
||||
if(!(tsd->subele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
tsd->subele2[i].flag&flag&BF_RANGEMASK &&
|
||||
tsd->subele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += tsd->subele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100-ele_fix)/100;
|
||||
}
|
||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace2[s_race2])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if( sstatus->race != RC_DEMIHUMAN )
|
||||
cardfix=cardfix*(100-tsd->subrace[RC_NONDEMIHUMAN])/100;
|
||||
|
||||
for(i=0; i < ARRAYLENGTH(tsd->add_mdef) && tsd->add_mdef[i].rate;i++) {
|
||||
if(tsd->add_mdef[i].class_ == s_class) {
|
||||
cardfix=cardfix*(100-tsd->add_mdef[i].rate)/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//It was discovered that ranged defense also counts vs magic! [Skotlex]
|
||||
if ( flag&BF_SHORT )
|
||||
cardfix = cardfix * ( 100 - tsd->bonus.near_attack_def_rate ) / 100;
|
||||
else
|
||||
cardfix = cardfix * ( 100 - tsd->bonus.long_attack_def_rate ) / 100;
|
||||
|
||||
cardfix = cardfix * ( 100 - tsd->bonus.magic_def_rate ) / 100;
|
||||
|
||||
if( tsd->sc.data[SC_MDEF_RATE] )
|
||||
cardfix = cardfix * ( 100 - tsd->sc.data[SC_MDEF_RATE]->val1 ) / 100;
|
||||
|
||||
if (cardfix != 1000)
|
||||
damage = damage * cardfix / 1000;
|
||||
}
|
||||
break;
|
||||
case BF_WEAPON:
|
||||
if( sd && !(nk&NK_NO_CARDFIX_ATK) )
|
||||
{
|
||||
short cardfix_ = 1000;
|
||||
if(sd->state.arrow_atk)
|
||||
{
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race]+sd->arrow_addrace[tstatus->race])/100;
|
||||
if (!(nk&NK_NO_ELEFIX))
|
||||
{
|
||||
int ele_fix = sd->right_weapon.addele[tstatus->def_ele] + sd->arrow_addele[tstatus->def_ele];
|
||||
for (i = 0; ARRAYLENGTH(sd->right_weapon.addele2) > i && sd->right_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->right_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if(!(sd->right_weapon.addele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
sd->right_weapon.addele2[i].flag&flag&BF_RANGEMASK &&
|
||||
sd->right_weapon.addele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += sd->right_weapon.addele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100+ele_fix)/100;
|
||||
}
|
||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size]+sd->arrow_addsize[tstatus->size])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS]+sd->arrow_addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if( tstatus->race != RC_DEMIHUMAN )
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN]+sd->arrow_addrace[RC_NONDEMIHUMAN])/100;
|
||||
}
|
||||
else
|
||||
{ // Melee attack
|
||||
if( !battle_config.left_cardfix_to_right )
|
||||
{
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race])/100;
|
||||
if (!(nk&NK_NO_ELEFIX)) {
|
||||
int ele_fix = sd->right_weapon.addele[tstatus->def_ele];
|
||||
for (i = 0; ARRAYLENGTH(sd->right_weapon.addele2) > i && sd->right_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->right_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if(!(sd->right_weapon.addele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
sd->right_weapon.addele2[i].flag&flag&BF_RANGEMASK &&
|
||||
sd->right_weapon.addele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += sd->right_weapon.addele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100+ele_fix)/100;
|
||||
}
|
||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if( tstatus->race != RC_DEMIHUMAN )
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
||||
|
||||
if( left )
|
||||
{
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[tstatus->race])/100;
|
||||
if (!(nk&NK_NO_ELEFIX)) {
|
||||
int ele_fix_lh = sd->left_weapon.addele[tstatus->def_ele];
|
||||
for (i = 0; ARRAYLENGTH(sd->left_weapon.addele2) > i && sd->left_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->left_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if(!(sd->left_weapon.addele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
sd->left_weapon.addele2[i].flag&flag&BF_RANGEMASK &&
|
||||
sd->left_weapon.addele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix_lh += sd->left_weapon.addele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100+ele_fix_lh)/100;
|
||||
}
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addsize[tstatus->size])/100;
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace2[t_race2])/100;
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if( tstatus->race != RC_DEMIHUMAN )
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int ele_fix = sd->right_weapon.addele[tstatus->def_ele] + sd->left_weapon.addele[tstatus->def_ele];
|
||||
for (i = 0; ARRAYLENGTH(sd->right_weapon.addele2) > i && sd->right_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->right_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if(!(sd->right_weapon.addele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
sd->right_weapon.addele2[i].flag&flag&BF_RANGEMASK &&
|
||||
sd->right_weapon.addele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += sd->right_weapon.addele2[i].rate;
|
||||
}
|
||||
for (i = 0; ARRAYLENGTH(sd->left_weapon.addele2) > i && sd->left_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->left_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if(!(sd->left_weapon.addele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
sd->left_weapon.addele2[i].flag&flag&BF_RANGEMASK &&
|
||||
sd->left_weapon.addele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += sd->left_weapon.addele2[i].rate;
|
||||
}
|
||||
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race]+sd->left_weapon.addrace[tstatus->race])/100;
|
||||
cardfix=cardfix*(100+ele_fix)/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size]+sd->left_weapon.addsize[tstatus->size])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2]+sd->left_weapon.addrace2[t_race2])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS]+sd->left_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if( tstatus->race != RC_DEMIHUMAN )
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN]+sd->left_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
||||
}
|
||||
}
|
||||
for( i = 0; i < ARRAYLENGTH(sd->right_weapon.add_dmg) && sd->right_weapon.add_dmg[i].rate; i++ )
|
||||
{
|
||||
if( sd->right_weapon.add_dmg[i].class_ == t_class )
|
||||
{
|
||||
cardfix=cardfix*(100+sd->right_weapon.add_dmg[i].rate)/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( left )
|
||||
{
|
||||
for( i = 0; i < ARRAYLENGTH(sd->left_weapon.add_dmg) && sd->left_weapon.add_dmg[i].rate; i++ )
|
||||
{
|
||||
if( sd->left_weapon.add_dmg[i].class_ == t_class )
|
||||
{
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.add_dmg[i].rate)/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( flag&BF_LONG )
|
||||
cardfix = cardfix * ( 100 + sd->bonus.long_attack_atk_rate ) / 100;
|
||||
#ifdef RENEWAL_EDP
|
||||
if( sd->sc.data[SC_EDP] ){
|
||||
cardfix = cardfix * (100 + sd->sc.data[SC_EDP]->val1 * 60 ) / 100;
|
||||
cardfix_ = cardfix_ * (100 + sd->sc.data[SC_EDP]->val1 * 60 ) / 100;
|
||||
}
|
||||
#endif
|
||||
if( left && cardfix_ != 1000 )
|
||||
damage = damage * cardfix_ / 1000;
|
||||
else if( cardfix != 1000 )
|
||||
damage = damage * cardfix / 1000;
|
||||
|
||||
}else if( tsd && !(nk&NK_NO_CARDFIX_DEF) ){
|
||||
if( !(nk&NK_NO_ELEFIX) )
|
||||
{
|
||||
int ele_fix = tsd->subele[s_ele];
|
||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++)
|
||||
{
|
||||
if(tsd->subele2[i].ele != s_ele) continue;
|
||||
if(!(tsd->subele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
tsd->subele2[i].flag&flag&BF_RANGEMASK &&
|
||||
tsd->subele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += tsd->subele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100-ele_fix)/100;
|
||||
if( left && s_ele_ != s_ele )
|
||||
{
|
||||
int ele_fix_lh = tsd->subele[s_ele_];
|
||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++)
|
||||
{
|
||||
if(tsd->subele2[i].ele != s_ele_) continue;
|
||||
if(!(tsd->subele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
tsd->subele2[i].flag&flag&BF_RANGEMASK &&
|
||||
tsd->subele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix_lh += tsd->subele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100-ele_fix_lh)/100;
|
||||
}
|
||||
}
|
||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace2[s_race2])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if( sstatus->race != RC_DEMIHUMAN )
|
||||
cardfix=cardfix*(100-tsd->subrace[RC_NONDEMIHUMAN])/100;
|
||||
|
||||
for( i = 0; i < ARRAYLENGTH(tsd->add_def) && tsd->add_def[i].rate;i++ ) {
|
||||
if( tsd->add_def[i].class_ == s_class ) {
|
||||
cardfix=cardfix*(100-tsd->add_def[i].rate)/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( flag&BF_SHORT )
|
||||
cardfix = cardfix * ( 100 - tsd->bonus.near_attack_def_rate ) / 100;
|
||||
else // BF_LONG (there's no other choice)
|
||||
cardfix = cardfix * ( 100 - tsd->bonus.long_attack_def_rate ) / 100;
|
||||
|
||||
if( tsd->sc.data[SC_DEF_RATE] )
|
||||
cardfix = cardfix * ( 100 - tsd->sc.data[SC_DEF_RATE]->val1 ) / 100;
|
||||
|
||||
if( cardfix != 1000 )
|
||||
damage = damage * cardfix / 1000;
|
||||
}
|
||||
break;
|
||||
case BF_MISC:
|
||||
if( tsd && !(nk&NK_NO_CARDFIX_DEF) ){
|
||||
// misc damage reduction from equipment
|
||||
if (!(nk&NK_NO_ELEFIX))
|
||||
{
|
||||
int ele_fix = tsd->subele[s_ele];
|
||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++)
|
||||
{
|
||||
if(tsd->subele2[i].ele != s_ele) continue;
|
||||
if(!(tsd->subele2[i].flag&flag&BF_WEAPONMASK &&
|
||||
tsd->subele2[i].flag&flag&BF_RANGEMASK &&
|
||||
tsd->subele2[i].flag&flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += tsd->subele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100-ele_fix)/100;
|
||||
}
|
||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace2[s_race2])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if( sstatus->race != RC_DEMIHUMAN )
|
||||
cardfix=cardfix*(100-tsd->subrace[RC_NONDEMIHUMAN])/100;
|
||||
|
||||
cardfix = cardfix * ( 100 - tsd->bonus.misc_def_rate ) / 100;
|
||||
if( flag&BF_SHORT )
|
||||
cardfix = cardfix * ( 100 - tsd->bonus.near_attack_def_rate ) / 100;
|
||||
else // BF_LONG (there's no other choice)
|
||||
cardfix = cardfix * ( 100 - tsd->bonus.long_attack_def_rate ) / 100;
|
||||
|
||||
if (cardfix != 10000)
|
||||
damage = (int)( (int64)damage * cardfix / 1000);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return damage;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* Check dammage trough status.
|
||||
@ -3001,126 +3311,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
}
|
||||
|
||||
//Card Fix, sd side
|
||||
if ((wd.damage || wd.damage2) && !(nk&NK_NO_CARDFIX_ATK)) {
|
||||
int cardfix = 1000, cardfix_ = 1000;
|
||||
int t_race2 = status_get_race2(target);
|
||||
if (sd->state.arrow_atk) {
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race]+sd->arrow_addrace[tstatus->race])/100;
|
||||
if (!(nk&NK_NO_ELEFIX)) {
|
||||
int ele_fix = sd->right_weapon.addele[tstatus->def_ele] + sd->arrow_addele[tstatus->def_ele];
|
||||
for (i = 0; ARRAYLENGTH(sd->right_weapon.addele2) > i && sd->right_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->right_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if (!(sd->right_weapon.addele2[i].flag&wd.flag&BF_WEAPONMASK &&
|
||||
sd->right_weapon.addele2[i].flag&wd.flag&BF_RANGEMASK &&
|
||||
sd->right_weapon.addele2[i].flag&wd.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += sd->right_weapon.addele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100+ele_fix)/100;
|
||||
}
|
||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size]+sd->arrow_addsize[tstatus->size])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS]+sd->arrow_addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if (tstatus->race != RC_DEMIHUMAN)
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN]+sd->arrow_addrace[RC_NONDEMIHUMAN])/100;
|
||||
} else {
|
||||
// Melee attack
|
||||
if (!battle_config.left_cardfix_to_right) {
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race])/100;
|
||||
if (!(nk&NK_NO_ELEFIX)) {
|
||||
int ele_fix = sd->right_weapon.addele[tstatus->def_ele];
|
||||
for (i = 0; ARRAYLENGTH(sd->right_weapon.addele2) > i && sd->right_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->right_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if (!(sd->right_weapon.addele2[i].flag&wd.flag&BF_WEAPONMASK &&
|
||||
sd->right_weapon.addele2[i].flag&wd.flag&BF_RANGEMASK &&
|
||||
sd->right_weapon.addele2[i].flag&wd.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += sd->right_weapon.addele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100+ele_fix)/100;
|
||||
}
|
||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if (tstatus->race != RC_DEMIHUMAN)
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
||||
|
||||
if (flag.lh) {
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[tstatus->race])/100;
|
||||
if (!(nk&NK_NO_ELEFIX)) {
|
||||
int ele_fix_lh = sd->left_weapon.addele[tstatus->def_ele];
|
||||
for (i = 0; ARRAYLENGTH(sd->left_weapon.addele2) > i && sd->left_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->left_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if (!(sd->left_weapon.addele2[i].flag&wd.flag&BF_WEAPONMASK &&
|
||||
sd->left_weapon.addele2[i].flag&wd.flag&BF_RANGEMASK &&
|
||||
sd->left_weapon.addele2[i].flag&wd.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix_lh += sd->left_weapon.addele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100+ele_fix_lh)/100;
|
||||
}
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addsize[tstatus->size])/100;
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace2[t_race2])/100;
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if (tstatus->race != RC_DEMIHUMAN)
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
||||
}
|
||||
} else {
|
||||
int ele_fix = sd->right_weapon.addele[tstatus->def_ele] + sd->left_weapon.addele[tstatus->def_ele];
|
||||
for (i = 0; ARRAYLENGTH(sd->right_weapon.addele2) > i && sd->right_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->right_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if (!(sd->right_weapon.addele2[i].flag&wd.flag&BF_WEAPONMASK &&
|
||||
sd->right_weapon.addele2[i].flag&wd.flag&BF_RANGEMASK &&
|
||||
sd->right_weapon.addele2[i].flag&wd.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += sd->right_weapon.addele2[i].rate;
|
||||
}
|
||||
for (i = 0; ARRAYLENGTH(sd->left_weapon.addele2) > i && sd->left_weapon.addele2[i].rate != 0; i++) {
|
||||
if (sd->left_weapon.addele2[i].ele != tstatus->def_ele) continue;
|
||||
if (!(sd->left_weapon.addele2[i].flag&wd.flag&BF_WEAPONMASK &&
|
||||
sd->left_weapon.addele2[i].flag&wd.flag&BF_RANGEMASK &&
|
||||
sd->left_weapon.addele2[i].flag&wd.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += sd->left_weapon.addele2[i].rate;
|
||||
}
|
||||
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race]+sd->left_weapon.addrace[tstatus->race])/100;
|
||||
cardfix=cardfix*(100+ele_fix)/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size]+sd->left_weapon.addsize[tstatus->size])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2]+sd->left_weapon.addrace2[t_race2])/100;
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS]+sd->left_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if (tstatus->race != RC_DEMIHUMAN)
|
||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN]+sd->left_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAYLENGTH(sd->right_weapon.add_dmg) && sd->right_weapon.add_dmg[i].rate; i++) {
|
||||
if (sd->right_weapon.add_dmg[i].class_ == t_class) {
|
||||
cardfix=cardfix*(100+sd->right_weapon.add_dmg[i].rate)/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (flag.lh) {
|
||||
for (i = 0; i < ARRAYLENGTH(sd->left_weapon.add_dmg) && sd->left_weapon.add_dmg[i].rate; i++) {
|
||||
if (sd->left_weapon.add_dmg[i].class_ == t_class) {
|
||||
cardfix_=cardfix_*(100+sd->left_weapon.add_dmg[i].rate)/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (wd.flag&BF_LONG)
|
||||
cardfix = cardfix * (100 + sd->bonus.long_attack_atk_rate) / 100;
|
||||
#ifdef RENEWAL_EDP
|
||||
if (sc && sc->data[SC_EDP]) {
|
||||
cardfix = cardfix * (100 + sc->data[SC_EDP]->val1 * 60) / 100;
|
||||
cardfix_ = cardfix_ * (100 + sc->data[SC_EDP]->val1 * 60) / 100;
|
||||
}
|
||||
#endif
|
||||
if (cardfix != 1000 || cardfix_ != 1000)
|
||||
ATK_RATE2(cardfix/10, cardfix_/10); //What happens if you use right-to-left and there's no right weapon, only left?
|
||||
}
|
||||
wd.damage = battle_calc_cardfix(BF_WEAPON, src, (tsd?NULL:target), nk, s_ele, s_ele_, wd.damage, 0, wd.flag);
|
||||
if( flag.lh )
|
||||
wd.damage2 = battle_calc_cardfix(BF_WEAPON, src, (tsd?NULL:target), nk, s_ele, s_ele_, wd.damage2, 1, wd.flag);
|
||||
|
||||
if (skill_num == CR_SHIELDBOOMERANG || skill_num == PA_SHIELDCHAIN) {
|
||||
//Refine bonus applies after cards and elements.
|
||||
@ -3131,62 +3324,8 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
} //if (sd)
|
||||
|
||||
//Card Fix, tsd sid
|
||||
if (tsd && !(nk &NK_NO_CARDFIX_DEF)) {
|
||||
short s_race2,s_class;
|
||||
short cardfix=1000;
|
||||
|
||||
s_race2 = status_get_race2(src);
|
||||
s_class = status_get_class(src);
|
||||
|
||||
if (!(nk&NK_NO_ELEFIX)) {
|
||||
int ele_fix = tsd->subele[s_ele];
|
||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++) {
|
||||
if (tsd->subele2[i].ele != s_ele) continue;
|
||||
if (!(tsd->subele2[i].flag&wd.flag&BF_WEAPONMASK &&
|
||||
tsd->subele2[i].flag&wd.flag&BF_RANGEMASK &&
|
||||
tsd->subele2[i].flag&wd.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += tsd->subele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100-ele_fix)/100;
|
||||
if (flag.lh && s_ele_ != s_ele) {
|
||||
int ele_fix_lh = tsd->subele[s_ele_];
|
||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++) {
|
||||
if (tsd->subele2[i].ele != s_ele_) continue;
|
||||
if (!(tsd->subele2[i].flag&wd.flag&BF_WEAPONMASK &&
|
||||
tsd->subele2[i].flag&wd.flag&BF_RANGEMASK &&
|
||||
tsd->subele2[i].flag&wd.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix_lh += tsd->subele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100-ele_fix_lh)/100;
|
||||
}
|
||||
}
|
||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace2[s_race2])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if (sstatus->race != RC_DEMIHUMAN)
|
||||
cardfix=cardfix*(100-tsd->subrace[RC_NONDEMIHUMAN])/100;
|
||||
|
||||
for (i = 0; i < ARRAYLENGTH(tsd->add_def) && tsd->add_def[i].rate; i++) {
|
||||
if (tsd->add_def[i].class_ == s_class) {
|
||||
cardfix=cardfix*(100-tsd->add_def[i].rate)/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (wd.flag&BF_SHORT)
|
||||
cardfix = cardfix * (100 - tsd->bonus.near_attack_def_rate) / 100;
|
||||
else // BF_LONG (there's no other choice)
|
||||
cardfix = cardfix * (100 - tsd->bonus.long_attack_def_rate) / 100;
|
||||
|
||||
if (tsd->sc.data[SC_DEF_RATE])
|
||||
cardfix = cardfix * (100 - tsd->sc.data[SC_DEF_RATE]->val1) / 100;
|
||||
|
||||
if (cardfix != 1000)
|
||||
ATK_RATE(cardfix / 10);
|
||||
}
|
||||
if(tsd)
|
||||
wd.damage = battle_calc_cardfix(BF_WEAPON, (sd?NULL:src), target, nk, s_ele, s_ele_, wd.damage, flag.lh, wd.flag);
|
||||
|
||||
if (flag.infdef) {
|
||||
//Plants receive 1 damage when hit
|
||||
@ -3350,7 +3489,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
return ad;
|
||||
}
|
||||
//Initial Values
|
||||
ad.damage = 1;
|
||||
ad.div_=skill_get_num(skill_num,skill_lv);
|
||||
ad.amotion=skill_get_inf(skill_num) &INF_GROUND_SKILL?0:sstatus->amotion; //Amotion should be 0 for ground skills.
|
||||
ad.dmotion=tstatus->dmotion;
|
||||
@ -3464,7 +3602,12 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
ad.damage = tstatus->hp;
|
||||
else {
|
||||
#ifdef RENEWAL
|
||||
ad.damage = skill_lv * (sstatus->matk_min + sstatus->matk_max);
|
||||
if (sstatus->matk_max > sstatus->matk_min) {
|
||||
MATK_ADD(sstatus->matk_min+rnd()%(sstatus->matk_max-sstatus->matk_min));
|
||||
} else {
|
||||
MATK_ADD(sstatus->matk_min);
|
||||
}
|
||||
MATK_RATE(skill_lv);
|
||||
#else
|
||||
ad.damage = status_get_lv(src) + sstatus->int_ + skill_lv * 10;
|
||||
#endif
|
||||
@ -3481,22 +3624,12 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
ad.damage = (int)((15 * status_get_lv(src)) + (1.5 * sstatus->int_));
|
||||
break;
|
||||
default: {
|
||||
#ifdef RENEWAL //Renewal MATK Appliance according to doddler (?title=Renewal_Changes#Upgrade_MATK)
|
||||
/**
|
||||
* min: (weaponMATK+upgradeMATK) * 2 + 1.5 * statusMATK
|
||||
* max: [weaponMATK+upgradeMATK+(wMatk*wLvl)/10] * 2 + 1.5 * statusMATK
|
||||
* yes this formula MATCHES their site: matk_max already holds weaponmatk+upgradematk, and
|
||||
* -> statusMATK holds the %Matk modifier stuff from earlier and lastly:
|
||||
* -> the mdef part is not applied at this point, but later.
|
||||
**/ //1:bugreport:5101 //1:bugreport:5101
|
||||
MATK_ADD((1+sstatus->matk_max) * 2 + 15/10 * sstatus->matk_min + rnd()% (sstatus->matk_max + (1 + (sstatus->matk_max*sstatus->wlv) / 10 * 2 + 10/15 * sstatus->matk_min)));
|
||||
#else //Ancient MATK Appliance
|
||||
if (sstatus->matk_max > sstatus->matk_min) {
|
||||
MATK_ADD(sstatus->matk_min+rnd()%(1+sstatus->matk_max-sstatus->matk_min));
|
||||
MATK_ADD(sstatus->matk_min+rnd()%(sstatus->matk_max-sstatus->matk_min));
|
||||
} else {
|
||||
MATK_ADD(sstatus->matk_min);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (nk&NK_SPLASHSPLIT) { // Divide MATK in case of multiple targets skill
|
||||
if (mflag>0)
|
||||
ad.damage/= mflag;
|
||||
@ -3901,7 +4034,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
MATK_ADD(50);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RENEWAL
|
||||
ad.damage = battle_calc_cardfix(BF_MAGIC, src, target, nk, s_ele, 0, ad.damage, 0, ad.flag);
|
||||
#endif
|
||||
if (sd) {
|
||||
//Damage bonuses
|
||||
if ((i = pc_skillatk_bonus(sd, skill_num)))
|
||||
@ -3971,70 +4106,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
}
|
||||
}
|
||||
|
||||
if (sd && !(nk&NK_NO_CARDFIX_ATK)) {
|
||||
short t_class = status_get_class(target);
|
||||
short cardfix=1000;
|
||||
|
||||
cardfix=cardfix*(100+sd->magic_addrace[tstatus->race])/100;
|
||||
if (!(nk&NK_NO_ELEFIX))
|
||||
cardfix=cardfix*(100+sd->magic_addele[tstatus->def_ele])/100;
|
||||
cardfix=cardfix*(100+sd->magic_addsize[tstatus->size])/100;
|
||||
cardfix=cardfix*(100+sd->magic_addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
||||
for (i=0; i< ARRAYLENGTH(sd->add_mdmg) && sd->add_mdmg[i].rate; i++) {
|
||||
if (sd->add_mdmg[i].class_ == t_class) {
|
||||
cardfix=cardfix*(100+sd->add_mdmg[i].rate)/100;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (cardfix != 1000)
|
||||
MATK_RATE(cardfix/10);
|
||||
}
|
||||
|
||||
if (tsd && !(nk&NK_NO_CARDFIX_DEF)) {
|
||||
// Target cards.
|
||||
short s_race2 = status_get_race2(src);
|
||||
short s_class= status_get_class(src);
|
||||
int cardfix=1000;
|
||||
|
||||
if (!(nk&NK_NO_ELEFIX)) {
|
||||
int ele_fix = tsd->subele[s_ele];
|
||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++) {
|
||||
if (tsd->subele2[i].ele != s_ele) continue;
|
||||
if (!(tsd->subele2[i].flag&ad.flag&BF_WEAPONMASK &&
|
||||
tsd->subele2[i].flag&ad.flag&BF_RANGEMASK &&
|
||||
tsd->subele2[i].flag&ad.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += tsd->subele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100-ele_fix)/100;
|
||||
}
|
||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace2[s_race2])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if (sstatus->race != RC_DEMIHUMAN)
|
||||
cardfix=cardfix*(100-tsd->subrace[RC_NONDEMIHUMAN])/100;
|
||||
|
||||
for (i=0; i < ARRAYLENGTH(tsd->add_mdef) && tsd->add_mdef[i].rate; i++) {
|
||||
if (tsd->add_mdef[i].class_ == s_class) {
|
||||
cardfix=cardfix*(100-tsd->add_mdef[i].rate)/100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//It was discovered that ranged defense also counts vs magic! [Skotlex]
|
||||
if (ad.flag&BF_SHORT)
|
||||
cardfix = cardfix * (100 - tsd->bonus.near_attack_def_rate) / 100;
|
||||
else
|
||||
cardfix = cardfix * (100 - tsd->bonus.long_attack_def_rate) / 100;
|
||||
|
||||
cardfix = cardfix * (100 - tsd->bonus.magic_def_rate) / 100;
|
||||
|
||||
if (tsd->sc.data[SC_MDEF_RATE])
|
||||
cardfix = cardfix * (100 - tsd->sc.data[SC_MDEF_RATE]->val1) / 100;
|
||||
|
||||
if (cardfix != 1000)
|
||||
MATK_RATE(cardfix / 10);
|
||||
}
|
||||
#ifndef RENEWAL
|
||||
ad.damage = battle_calc_cardfix(BF_MAGIC, src, target, nk, s_ele, 0, ad.damage, 0, ad.flag);
|
||||
#endif
|
||||
}
|
||||
|
||||
damage_div_fix(ad.damage, ad.div_);
|
||||
@ -4306,38 +4380,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
|
||||
}
|
||||
}
|
||||
|
||||
if (md.damage && tsd && !(nk &NK_NO_CARDFIX_DEF)) {
|
||||
// misc damage reduction from equipment
|
||||
int cardfix = 10000;
|
||||
int race2 = status_get_race2(src);
|
||||
if (!(nk&NK_NO_ELEFIX)) {
|
||||
int ele_fix = tsd->subele[s_ele];
|
||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++) {
|
||||
if (tsd->subele2[i].ele != s_ele) continue;
|
||||
if (!(tsd->subele2[i].flag&md.flag&BF_WEAPONMASK &&
|
||||
tsd->subele2[i].flag&md.flag&BF_RANGEMASK &&
|
||||
tsd->subele2[i].flag&md.flag&BF_SKILLMASK))
|
||||
continue;
|
||||
ele_fix += tsd->subele2[i].rate;
|
||||
}
|
||||
cardfix=cardfix*(100-ele_fix)/100;
|
||||
}
|
||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace2[race2])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
||||
if (sstatus->race != RC_DEMIHUMAN)
|
||||
cardfix=cardfix*(100-tsd->subrace[RC_NONDEMIHUMAN])/100;
|
||||
|
||||
cardfix = cardfix * (100 - tsd->bonus.misc_def_rate) / 100;
|
||||
if (md.flag&BF_SHORT)
|
||||
cardfix = cardfix * (100 - tsd->bonus.near_attack_def_rate) / 100;
|
||||
else // BF_LONG (there's no other choice)
|
||||
cardfix = cardfix * (100 - tsd->bonus.long_attack_def_rate) / 100;
|
||||
|
||||
if (cardfix != 10000)
|
||||
md.damage= (int)((int64)md.damage * cardfix / 10000);
|
||||
}
|
||||
md.damage = battle_calc_cardfix(BF_MISC, src, target, nk, s_ele, 0, md.damage, 0, md.flag);
|
||||
|
||||
if (sd && (i = pc_skillatk_bonus(sd, skill_num)))
|
||||
md.damage += md.damage *i/100;
|
||||
|
@ -41,6 +41,7 @@ void battle_drain(struct map_session_data *sd, struct block_list *tbl, int rdama
|
||||
|
||||
int battle_attr_ratio(int atk_elem,int def_type, int def_lv);
|
||||
int battle_attr_fix(struct block_list *src, struct block_list *target, int damage,int atk_elem,int def_type, int def_lv);
|
||||
int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int damage, int left, int flag);
|
||||
|
||||
// Final calculation Damage
|
||||
int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int damage,int skill_num,int skill_lv);
|
||||
|
@ -2798,10 +2798,10 @@ void clif_updatestatus(struct map_session_data *sd,int type)
|
||||
WFIFOL(fd,4)=sd->battle_status.cri/10;
|
||||
break;
|
||||
case SP_MATK1:
|
||||
WFIFOL(fd,4)=sd->battle_status.matk_max;
|
||||
WFIFOL(fd,4)=pc_rightside_matk(sd);
|
||||
break;
|
||||
case SP_MATK2:
|
||||
WFIFOL(fd,4)=sd->battle_status.matk_min;
|
||||
WFIFOL(fd,4)=pc_leftside_matk(sd);
|
||||
break;
|
||||
|
||||
|
||||
@ -3126,8 +3126,8 @@ void clif_initialstatus(struct map_session_data *sd)
|
||||
|
||||
WBUFW(buf,16) = pc_leftside_atk(sd);
|
||||
WBUFW(buf,18) = pc_rightside_atk(sd);
|
||||
WBUFW(buf,20) = sd->battle_status.matk_max;
|
||||
WBUFW(buf,22) = sd->battle_status.matk_min;
|
||||
WBUFW(buf,20) = pc_rightside_matk(sd);
|
||||
WBUFW(buf,22) = pc_leftside_matk(sd);
|
||||
WBUFW(buf,24) = pc_leftside_def(sd);
|
||||
WBUFW(buf,26) = pc_rightside_def(sd);
|
||||
WBUFW(buf,28) = pc_leftside_mdef(sd);
|
||||
|
@ -403,9 +403,9 @@ enum _sp {
|
||||
SP_UNSTRIPABLE_WEAPON,SP_UNSTRIPABLE_ARMOR,SP_UNSTRIPABLE_HELM,SP_UNSTRIPABLE_SHIELD, // 2034-2037
|
||||
SP_INTRAVISION, SP_ADD_MONSTER_DROP_ITEMGROUP, SP_SP_LOSS_RATE, // 2038-2040
|
||||
SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE, SP_MAGIC_SP_GAIN_VALUE, SP_MAGIC_HP_GAIN_VALUE, SP_ADD_CLASS_DROP_ITEM, //2041-2045
|
||||
SP_WEAPON_MATK, SP_BASE_MATK, SP_SP_GAIN_RACE_ATTACK, SP_HP_GAIN_RACE_ATTACK, SP_SKILL_USE_SP_RATE, //2046-2050
|
||||
SP_SKILL_COOLDOWN,SP_SKILL_FIXEDCAST, SP_SKILL_VARIABLECAST, SP_FIXCASTRATE, SP_VARCASTRATE, //2051-2055
|
||||
SP_SKILL_USE_SP //2056
|
||||
SP_EMATK, SP_SP_GAIN_RACE_ATTACK, SP_HP_GAIN_RACE_ATTACK, SP_SKILL_USE_SP_RATE, //2046-2049
|
||||
SP_SKILL_COOLDOWN,SP_SKILL_FIXEDCAST, SP_SKILL_VARIABLECAST, SP_FIXCASTRATE, SP_VARCASTRATE, //2050-2054
|
||||
SP_SKILL_USE_SP //2055
|
||||
};
|
||||
|
||||
enum _look {
|
||||
|
12
src/map/pc.c
12
src/map/pc.c
@ -2533,14 +2533,10 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
||||
if (sd->state.lr_flag != 2)
|
||||
sd->bonus.itemhealrate2 += val;
|
||||
break;
|
||||
case SP_WEAPON_MATK:
|
||||
if (sd->state.lr_flag != 2)
|
||||
sd->bonus.sp_weapon_matk += val;
|
||||
break;
|
||||
case SP_BASE_MATK:
|
||||
if (sd->state.lr_flag != 2)
|
||||
sd->bonus.sp_base_matk += val;
|
||||
break;
|
||||
case SP_EMATK:
|
||||
if(sd->state.lr_flag != 2)
|
||||
sd->bonus.ematk += val;
|
||||
break;
|
||||
case SP_FIXCASTRATE:
|
||||
if (sd->state.lr_flag != 2)
|
||||
sd->bonus.fixcastrate -= val;
|
||||
|
@ -314,11 +314,11 @@ struct map_session_data {
|
||||
short sp_gain_value, hp_gain_value, magic_sp_gain_value, magic_hp_gain_value;
|
||||
short sp_vanish_rate;
|
||||
short sp_vanish_per;
|
||||
short sp_weapon_matk,sp_base_matk;
|
||||
unsigned short unbreakable; // chance to prevent ANY equipment breaking [celest]
|
||||
unsigned short unbreakable_equip; //100% break resistance on certain equipment
|
||||
unsigned short unstripable_equip;
|
||||
int fixcastrate,varcastrate;
|
||||
int ematk; // matk bonus from equipment
|
||||
} bonus;
|
||||
|
||||
// zeroed vars end here.
|
||||
@ -645,6 +645,8 @@ enum equip_index {
|
||||
#define pc_rightside_def(sd) ((sd)->battle_status.def)
|
||||
#define pc_leftside_mdef(sd) ((sd)->battle_status.mdef2)
|
||||
#define pc_rightside_mdef(sd) ((sd)->battle_status.mdef)
|
||||
#define pc_leftside_matk(sd) (status_base_matk(status_get_status_data(&(sd)->bl), (sd)->status.base_level))
|
||||
#define pc_rightside_matk(sd) ((sd)->battle_status.rhw.matk+(sd)->bonus.ematk)
|
||||
#else
|
||||
#define pc_leftside_atk(sd) ((sd)->battle_status.batk + (sd)->battle_status.rhw.atk + (sd)->battle_status.lhw.atk)
|
||||
#define pc_rightside_atk(sd) ((sd)->battle_status.rhw.atk2 + (sd)->battle_status.lhw.atk2)
|
||||
@ -652,6 +654,8 @@ enum equip_index {
|
||||
#define pc_rightside_def(sd) ((sd)->battle_status.def2)
|
||||
#define pc_leftside_mdef(sd) ((sd)->battle_status.mdef)
|
||||
#define pc_rightside_mdef(sd) ( (sd)->battle_status.mdef2 - ((sd)->battle_status.vit>>1) )
|
||||
#define pc_leftside_matk(sd) ((sd)->battle_status.matk_min)
|
||||
#define pc_rightside_matk(sd) ((sd)->battle_status.matk_max)
|
||||
#endif
|
||||
|
||||
int pc_class2idx(int class_);
|
||||
|
@ -532,12 +532,10 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, int skill
|
||||
return battle_config.max_heal;
|
||||
#ifdef RENEWAL
|
||||
/**
|
||||
* Renewal Heal Formula (from Doddler)
|
||||
* TODO: whats that( 1+ %Modifier / 100 ) ? currently using 'x1' (100/100) until found out
|
||||
* - Min = ( [ ( BaseLvl + INT ) / 5 ] * 30 ) * (1+( %Modifier / 100)) * (HealLvl * 0.1) + StatusMATK + EquipMATK - [(WeaponMATK * WeaponLvl) / 10]
|
||||
* - Max = ( [ ( BaseLvl + INT ) / 5 ] * 30 ) * (1+( %Modifier / 100)) * (HealLvl * 0.1) + StatusMATK + EquipMATK + [(WeaponMATK * WeaponLvl) / 10]
|
||||
* Renewal Heal Formula
|
||||
* Formula: ( [(Base Level + INT) / 5] × 30 ) × (Heal Level / 10) × (Modifiers) + MATK
|
||||
**/
|
||||
hp = ((((status_get_lv(src) + status_get_int(src)) / 5) * 3) * skill_lv + status_get_matk_min(src) + status_get_matk_max(src) - ((status_get_matk_max(src) * status_get_wlv(src)) / 10)) + rnd()%((((status_get_lv(src) + status_get_int(src)) / 5) * 3) * skill_lv + status_get_matk_min(src) + status_get_matk_max(src) + ((status_get_matk_max(src) * status_get_wlv(src)) / 10));
|
||||
hp = (status_get_lv(src) + status_get_int(src)) / 5 * 30 * skill_lv / 10;
|
||||
#else
|
||||
hp = (status_get_lv(src) + status_get_int(src)) / 8 * (4 + (skill_id == AB_HIGHNESSHEAL ? (sd ? pc_checkskill(sd,AL_HEAL) : 10) : skill_lv) * 8);
|
||||
#endif
|
||||
@ -568,7 +566,41 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, int skill
|
||||
if (sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 2)
|
||||
hp += hp / 10;
|
||||
}
|
||||
|
||||
#ifdef RENEWAL
|
||||
// MATK part of the RE heal formula [malufett]
|
||||
// Note: in this part matk bonuses from items or skills are not applied
|
||||
switch( skill_id ) {
|
||||
case BA_APPLEIDUN: case PR_SANCTUARY:
|
||||
case NPC_EVILLAND: break;
|
||||
default:
|
||||
{
|
||||
struct status_data *status = status_get_status_data(src);
|
||||
int min, max, wMatk, variance;
|
||||
|
||||
min = max = status_base_matk(status, status_get_lv(src));
|
||||
if( status->rhw.matk > 0 ){
|
||||
wMatk = status->rhw.matk;
|
||||
variance = wMatk * status->rhw.wlv / 10;
|
||||
min += wMatk - variance;
|
||||
max += wMatk + variance;
|
||||
}
|
||||
|
||||
if( sc && sc->data[SC_RECOGNIZEDSPELL] )
|
||||
min = max;
|
||||
|
||||
if( sd && sd->right_weapon.overrefine > 0 ){
|
||||
min++;
|
||||
max += sd->right_weapon.overrefine - 1;
|
||||
}
|
||||
|
||||
if(max > min)
|
||||
hp += min+rnd()%(max-min);
|
||||
else
|
||||
hp += min;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return hp;
|
||||
}
|
||||
|
||||
@ -7523,7 +7555,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, int
|
||||
clif_skill_nodamage(src,bl,skillid,skilllv,
|
||||
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
|
||||
status_heal(bl,heal,0,1);
|
||||
status_change_clear_buffs(bl,6);
|
||||
status_change_clear_buffs(bl,4);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -8714,10 +8746,22 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, int
|
||||
|
||||
case SO_EL_ACTION:
|
||||
if (sd) {
|
||||
int duration = 3000;
|
||||
if (!sd->ed)
|
||||
break;
|
||||
elemental_action(sd->ed, bl, tick);
|
||||
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||
switch(sd->ed->db->class_){
|
||||
case 2115:case 2124:
|
||||
case 2118:case 2121:
|
||||
duration = 6000;
|
||||
break;
|
||||
case 2116:case 2119:
|
||||
case 2122:case 2125:
|
||||
duration = 9000;
|
||||
break;
|
||||
}
|
||||
skill_blockpc_start(sd, skillid, duration);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -11564,7 +11608,7 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, unsi
|
||||
status_heal(bl,heal,0,0);
|
||||
break;
|
||||
case 1: // End all negative status
|
||||
status_change_clear_buffs(bl,2);
|
||||
status_change_clear_buffs(bl,6);
|
||||
if (tsd) clif_gospel_info(tsd, 0x15);
|
||||
break;
|
||||
case 2: // Immunity to all status
|
||||
|
154
src/map/status.c
154
src/map/status.c
@ -587,7 +587,7 @@ void initChangeTables(void)
|
||||
add_sc(WL_WHITEIMPRISON , SC_WHITEIMPRISON);
|
||||
set_sc_with_vfx(WL_FROSTMISTY , SC_FREEZING , SI_FROSTMISTY , SCB_ASPD|SCB_SPEED|SCB_DEF|SCB_DEF2);
|
||||
set_sc(WL_MARSHOFABYSS , SC_MARSHOFABYSS , SI_MARSHOFABYSS , SCB_SPEED|SCB_FLEE|SCB_DEF|SCB_MDEF);
|
||||
set_sc(WL_RECOGNIZEDSPELL , SC_RECOGNIZEDSPELL , SI_RECOGNIZEDSPELL , SCB_NONE);
|
||||
set_sc(WL_RECOGNIZEDSPELL , SC_RECOGNIZEDSPELL , SI_RECOGNIZEDSPELL , SCB_MATK);
|
||||
set_sc(WL_STASIS , SC_STASIS , SI_STASIS , SCB_NONE);
|
||||
/**
|
||||
* Ranger
|
||||
@ -1942,29 +1942,12 @@ static unsigned short status_base_atk(const struct block_list *bl, const struct
|
||||
return cap_value(str, 0, USHRT_MAX);
|
||||
}
|
||||
|
||||
|
||||
static inline unsigned short status_base_matk_max(const struct status_data *status)
|
||||
{
|
||||
#ifdef RENEWAL
|
||||
return status->matk_max; // in RE maximum MATK signs weapon matk, which we store in this var
|
||||
#ifndef RENEWAL
|
||||
static inline unsigned short status_base_matk_min(const struct status_data* status){ return status->int_+(status->int_/7)*(status->int_/7); }
|
||||
static inline unsigned short status_base_matk_max(const struct status_data* status){ return status->int_+(status->int_/5)*(status->int_/5); }
|
||||
#else
|
||||
return status->int_+(status->int_/5)*(status->int_/5);
|
||||
unsigned short status_base_matk(const struct status_data* status, int level){ return status->int_+(status->int_/2)+(status->dex/5)+(status->luk/3)+(level/4); }
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef RENEWAL
|
||||
static inline unsigned short status_base_matk_min(const struct status_data *status, int lvl)
|
||||
#else
|
||||
static inline unsigned short status_base_matk_min(const struct status_data *status)
|
||||
#endif
|
||||
{
|
||||
#ifdef RENEWAL
|
||||
return status->int_+(status->int_/2)+(status->dex/5)+(status->luk/3)+(lvl/4);
|
||||
#else
|
||||
return status->int_+(status->int_/7)*(status->int_/7);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//Fills in the misc data that can be calculated from the other status info (except for level)
|
||||
void status_calc_misc(struct block_list *bl, struct status_data *status, int level)
|
||||
@ -1975,19 +1958,16 @@ void status_calc_misc(struct block_list *bl, struct status_data *status, int lev
|
||||
status->hit = status->flee =
|
||||
status->def2 = status->mdef2 =
|
||||
status->cri = status->flee2 = 0;
|
||||
#ifdef RENEWAL
|
||||
status->matk_min = status_base_matk_min(status, level);
|
||||
#else
|
||||
status->matk_min = status_base_matk_min(status);
|
||||
#endif
|
||||
status->matk_max = status_base_matk_max(status);
|
||||
|
||||
#ifdef RENEWAL // renewal formulas
|
||||
status->matk_min = status->matk_max = status_base_matk(status, level);
|
||||
status->hit += level + status->dex + status->luk/3 + 175; //base level + ( every 1 dex = +1 hit ) + (every 3 luk = +1 hit) + 175
|
||||
status->flee += level + status->agi + status->luk/5 + 100; //base level + ( every 1 agi = +1 flee ) + (every 5 luk = +1 flee) + 100
|
||||
status->def2 += (int)(((float)level + status->vit)/2 + ((float)status->agi/5)); //base level + (every 2 vit = +1 def) + (every 5 agi = +1 def)
|
||||
status->mdef2 += (int)(status->int_ + ((float)level/4) + ((float)status->dex/5) + ((float)status->vit/5)); //(every 4 base level = +1 mdef) + (every 1 int = +1 mdef) + (every 5 dex = +1 mdef) + (every 5 vit = +1 mdef)
|
||||
#else
|
||||
status->matk_min = status_base_matk_min(status);
|
||||
status->matk_max = status_base_matk_max(status);
|
||||
status->hit += level + status->dex;
|
||||
status->flee += level + status->agi;
|
||||
status->def2 += status->vit;
|
||||
@ -2527,16 +2507,10 @@ int status_calc_pc_(struct map_session_data *sd, bool first)
|
||||
wa->atk2 = refine_info[wlv].bonus[r-1] / 100;
|
||||
|
||||
#ifdef RENEWAL
|
||||
// in renewal max MATK is the weapon MATK
|
||||
status->matk_max += sd->inventory_data[index]->matk;
|
||||
|
||||
if (r) {
|
||||
// renewal magic attack refine bonus
|
||||
status->matk_max += refine_info[wlv].bonus[r-1] / 100;
|
||||
}
|
||||
|
||||
// record the weapon level for future usage
|
||||
status->wlv = wlv;
|
||||
wa->matk += sd->inventory_data[index]->matk;
|
||||
wa->wlv = wlv;
|
||||
if( r ) // renewal magic attack refine bonus
|
||||
wa->matk += refine_info[wlv].bonus[r-1] / 100;
|
||||
#endif
|
||||
|
||||
//Overrefine bonus.
|
||||
@ -2609,11 +2583,6 @@ int status_calc_pc_(struct map_session_data *sd, bool first)
|
||||
|
||||
status->def += (refinedef+50)/100;
|
||||
|
||||
#ifdef RENEWAL
|
||||
// increment the weapon ATK using the MATK max value
|
||||
status->matk_max += sd->bonus.sp_weapon_matk;
|
||||
#endif
|
||||
|
||||
//Parse Cards
|
||||
for (i=0; i<EQI_MAX-1; i++) {
|
||||
current_equip_item_index = index = sd->equip_index[i]; //We pass INDEX to current_equip_item_index - for EQUIP_SCRIPT (new cards solution) [Lupus]
|
||||
@ -3807,32 +3776,47 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
|
||||
}
|
||||
|
||||
if (flag&SCB_MATK) {
|
||||
#ifdef RENEWAL
|
||||
status->matk_min = status_base_matk_min(status,status_get_lv(bl));
|
||||
if (sd)
|
||||
status->matk_min += sd->bonus.sp_base_matk;
|
||||
#ifndef RENEWAL
|
||||
status->matk_min = status_base_matk_min(status) + (sd?sd->bonus.ematk:0);
|
||||
status->matk_max = status_base_matk_max(status) + (sd?sd->bonus.ematk:0);
|
||||
#else
|
||||
status->matk_min = status_base_matk_min(status);
|
||||
/**
|
||||
* RE MATK Formula (from irowiki:http://irowiki.org/wiki/MATK)
|
||||
* MATK = (sMATK + wMATK + eMATK) * Multiplicative Modifiers
|
||||
**/
|
||||
status->matk_min = status->matk_max = status_base_matk(status, status_get_lv(bl));
|
||||
if( bl->type&BL_PC ){
|
||||
if( sd->bonus.ematk > 0 ){
|
||||
status->matk_max += sd->bonus.ematk;
|
||||
status->matk_min += sd->bonus.ematk;
|
||||
}
|
||||
if( status->rhw.matk > 0 ){
|
||||
int wMatk = status->rhw.matk;
|
||||
int variance = wMatk * status->rhw.wlv / 10;
|
||||
status->matk_min += wMatk - variance;
|
||||
status->matk_max += wMatk + variance;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
status->matk_max = status_base_matk_max(status);
|
||||
|
||||
if (bl->type&BL_PC && sd->matk_rate != 100) {
|
||||
//Bonuses from previous matk
|
||||
#ifndef RENEWAL // only changed in non-renewal [Ind]
|
||||
status->matk_max = status->matk_max * sd->matk_rate/100;
|
||||
#endif
|
||||
status->matk_min = status->matk_min * sd->matk_rate/100;
|
||||
}
|
||||
|
||||
status->matk_min = status_calc_matk(bl, sc, status->matk_min);
|
||||
|
||||
#ifndef RENEWAL // only changed in non-renewal [Ind]
|
||||
status->matk_max = status_calc_matk(bl, sc, status->matk_max);
|
||||
#endif
|
||||
|
||||
if (bl->type&BL_HOM && battle_config.hom_setting&0x20) //Hom Min Matk is always the same as Max Matk
|
||||
if (bl->type&BL_HOM && battle_config.hom_setting&0x20 //Hom Min Matk is always the same as Max Matk
|
||||
|| ( sc && sc->data[SC_RECOGNIZEDSPELL] ))
|
||||
status->matk_min = status->matk_max;
|
||||
|
||||
#ifdef RENEWAL
|
||||
if( sd && sd->right_weapon.overrefine > 0){
|
||||
status->matk_min++;
|
||||
status->matk_max += sd->right_weapon.overrefine - 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
if (flag&SCB_ASPD) {
|
||||
@ -4018,10 +4002,17 @@ void status_calc_bl_(struct block_list *bl, enum scb_flag flag, bool first)
|
||||
clif_updatestatus(sd,SP_FLEE2);
|
||||
if (b_status.cri != status->cri)
|
||||
clif_updatestatus(sd,SP_CRITICAL);
|
||||
#ifndef RENEWAL
|
||||
if (b_status.matk_max != status->matk_max)
|
||||
clif_updatestatus(sd,SP_MATK1);
|
||||
if (b_status.matk_min != status->matk_min)
|
||||
clif_updatestatus(sd,SP_MATK2);
|
||||
#else
|
||||
if(b_status.matk_max != status->matk_max || b_status.matk_min != status->matk_min){
|
||||
clif_updatestatus(sd,SP_MATK2);
|
||||
clif_updatestatus(sd,SP_MATK1);
|
||||
}
|
||||
#endif
|
||||
if (b_status.mdef != status->mdef) {
|
||||
clif_updatestatus(sd,SP_MDEF1);
|
||||
#ifdef RENEWAL
|
||||
@ -6214,6 +6205,14 @@ int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int ti
|
||||
//No defense against it (buff).
|
||||
rate -= (status_get_lv(bl) / 5 + status->vit / 4 + status->agi / 10)*100; // Lineal Reduction of Rate
|
||||
break;
|
||||
case SC_MARSHOFABYSS:
|
||||
//5 second (Fixed) + 25 second - {( INT + LUK ) / 20 second }
|
||||
tick -= (status->int_ + status->luk) / 20 * 1000;
|
||||
break;
|
||||
case SC_STASIS:
|
||||
//5 second (fixed) + { Stasis Skill level * 5 - (Target’s VIT + DEX) / 20 }
|
||||
tick -= (status->vit + status->dex) / 20 * 1000;
|
||||
break;
|
||||
case SC_WHITEIMPRISON:
|
||||
if (tick == 5000) // 100% on caster
|
||||
break;
|
||||
@ -10556,7 +10555,7 @@ int status_change_timer_sub(struct block_list *bl, va_list ap)
|
||||
|
||||
/*==========================================
|
||||
* Clears buffs/debuffs of a character.
|
||||
* type&1 -> buffs, type&2 -> debuffs
|
||||
* type&1 -> buffs, type&2 -> debuffs
|
||||
* type&4 -> especific debuffs(implemented with refresh)
|
||||
*------------------------------------------*/
|
||||
int status_change_clear_buffs(struct block_list *bl, int type)
|
||||
@ -10567,16 +10566,9 @@ int status_change_clear_buffs(struct block_list *bl, int type)
|
||||
if (!sc || !sc->count)
|
||||
return 0;
|
||||
|
||||
if (type&2) //Debuffs
|
||||
for (i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++) {
|
||||
if(sc->data[i])
|
||||
status_change_end(bl, (sc_type)i, INVALID_TIMER);
|
||||
}
|
||||
if(type&4) //Toxins
|
||||
for (i = SC_TOXIN; i <= SC_LEECHESEND; ++i) {
|
||||
if (sc->data[i])
|
||||
status_change_end(bl, (sc_type)i, INVALID_TIMER);
|
||||
}
|
||||
if (type&6) //Debuffs
|
||||
for (i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++)
|
||||
status_change_end(bl, (sc_type)i, INVALID_TIMER);
|
||||
|
||||
for (i = SC_COMMON_MAX+1; i < SC_MAX; i++) {
|
||||
if (!sc->data[i])
|
||||
@ -10637,22 +10629,28 @@ int status_change_clear_buffs(struct block_list *bl, int type)
|
||||
case SC_CURSEDCIRCLE_TARGET:
|
||||
continue;
|
||||
|
||||
//Debuffs that can be removed.
|
||||
case SC_CRYSTALIZE:
|
||||
//Debuffs that can be removed.
|
||||
case SC_DEEPSLEEP:
|
||||
case SC_MANDRAGORA:
|
||||
case SC_BURNING:
|
||||
case SC_FREEZING:
|
||||
case SC_CRYSTALIZE:
|
||||
case SC_TOXIN:
|
||||
case SC_PARALYSE:
|
||||
case SC_VENOMBLEED:
|
||||
case SC_MAGICMUSHROOM:
|
||||
case SC_DEATHHURT:
|
||||
case SC_PYREXIA:
|
||||
case SC_OBLIVIONCURSE:
|
||||
case SC_LEECHESEND:
|
||||
case SC_MARSHOFABYSS:
|
||||
case SC_MANDRAGORA:
|
||||
if(!(type&4))
|
||||
continue;
|
||||
break;
|
||||
case SC_QUAGMIRE:
|
||||
case SC_DECREASEAGI:
|
||||
case SC_BURNING:
|
||||
if(!(type&2))
|
||||
continue;
|
||||
break;
|
||||
case SC_HALLUCINATION:
|
||||
case SC_QUAGMIRE:
|
||||
case SC_SIGNUMCRUCIS:
|
||||
case SC_DECREASEAGI:
|
||||
case SC_SLOWDOWN:
|
||||
case SC_MINDBREAKER:
|
||||
case SC_WINKCHARM:
|
||||
@ -10668,7 +10666,7 @@ int status_change_clear_buffs(struct block_list *bl, int type)
|
||||
case SC_FEAR:
|
||||
case SC_MAGNETICFIELD:
|
||||
case SC_NETHERWORLD:
|
||||
if (!(type&2) || type == 6) //RK_Refresh is not supposed to remove these
|
||||
if (!(type&2))
|
||||
continue;
|
||||
break;
|
||||
//The rest are buffs that can be removed.
|
||||
|
@ -1563,6 +1563,9 @@ struct weapon_atk {
|
||||
unsigned short atk, atk2;
|
||||
unsigned short range;
|
||||
unsigned char ele;
|
||||
#ifdef RENEWAL
|
||||
unsigned short matk, wlv;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@ -1592,13 +1595,7 @@ struct status_data {
|
||||
|
||||
unsigned char
|
||||
def_ele, ele_lv,
|
||||
#ifdef RENEWAL
|
||||
/**
|
||||
* in RE weapon level is used in several areas, keeping it here saves performance
|
||||
**/
|
||||
wlv,
|
||||
#endif
|
||||
size, race;
|
||||
size, race;
|
||||
|
||||
struct weapon_atk rhw, lhw; //Right Hand/Left Hand Weapon.
|
||||
};
|
||||
@ -1748,12 +1745,6 @@ unsigned char status_calc_attack_element(struct block_list *bl, struct status_ch
|
||||
#define status_get_race(bl) status_get_status_data(bl)->race
|
||||
#define status_get_size(bl) status_get_status_data(bl)->size
|
||||
#define status_get_mode(bl) status_get_status_data(bl)->mode
|
||||
#ifdef RENEWAL
|
||||
/**
|
||||
* in RE weapon level is used in several areas, keeping it here saves performance
|
||||
**/
|
||||
#define status_get_wlv(bl) status_get_status_data(bl)->wlv
|
||||
#endif
|
||||
int status_get_party_id(struct block_list *bl);
|
||||
int status_get_guild_id(struct block_list *bl);
|
||||
int status_get_emblem_id(struct block_list *bl);
|
||||
@ -1808,6 +1799,10 @@ int status_check_visibility(struct block_list *src, struct block_list *target);
|
||||
|
||||
int status_change_spread(struct block_list *src, struct block_list *bl);
|
||||
|
||||
#ifdef RENEWAL
|
||||
unsigned short status_base_matk(const struct status_data* status, int level);
|
||||
#endif
|
||||
|
||||
int status_readdb(void);
|
||||
int do_init_status(void);
|
||||
void do_final_status(void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user