* Added AEGIS 'CLASS_' enum
- Removed RC_BOSS, RC_NONBOSS, RC_NONDEMIHUMAN. - Added CLASS_NORMAL, CLASS_BOSS, CLASS_GUARDIAN enum. - Added CLASS_ALL, RC_ALL, ELE_ALL, SZ_ALL. - Item bonuses 'bAddDefClass' and 'bAddMdefClass' replaced by 'bAddDefMonster' and 'bAddMdefMonster'. - Item bonuses 'bIgnoreMdefRate' and 'bIgnoreDefRate' replaced by 'bIgnoreMdefRaceRate' and 'bIgnoreDefRaceRate'. - Added new item bonuses: bIgnoreDefClass, bIgnoreMdefRaceRate, bDefRatioAtkClass, bAddClass, bSubClass, bMagicAddClass, bWeaponComaClass, bHpDrainValueClass, bSpDrainValueClass, bIgnoreMdefClassRate. - Updated doc/item_bonus.txt - Updated db/re/level_penalty.txt & 'pc_level_penalty_mod' function. - Updated 'battle_calc_cardfix' function. - 'md->class_' replaced by 'md->mob_id'
This commit is contained in:
parent
12007fef7e
commit
dae81222a8
30
db/const.txt
30
db/const.txt
@ -521,8 +521,8 @@ bGetZenyNum 1041
|
|||||||
bAddGetZenyNum 1042
|
bAddGetZenyNum 1042
|
||||||
bAddDamageClass 1043
|
bAddDamageClass 1043
|
||||||
bAddMagicDamageClass 1044
|
bAddMagicDamageClass 1044
|
||||||
bAddDefClass 1045
|
bAddDefMonster 1045
|
||||||
bAddMdefClass 1046
|
bAddMdefMonster 1046
|
||||||
bAddMonsterDropItem 1047
|
bAddMonsterDropItem 1047
|
||||||
bDefRatioAtkEle 1048
|
bDefRatioAtkEle 1048
|
||||||
bDefRatioAtkRace 1049
|
bDefRatioAtkRace 1049
|
||||||
@ -561,8 +561,8 @@ bWeaponAtkRate 1082
|
|||||||
bDelayrate 1083
|
bDelayrate 1083
|
||||||
bHPDrainRateRace 1084
|
bHPDrainRateRace 1084
|
||||||
bSPDrainRateRace 1085
|
bSPDrainRateRace 1085
|
||||||
bIgnoreMdefRate 1086
|
bIgnoreMdefRaceRate 1086
|
||||||
bIgnoreDefRate 1087
|
bIgnoreDefRaceRate 1087
|
||||||
bSkillHeal2 1088
|
bSkillHeal2 1088
|
||||||
bAddEffOnSkill 1089
|
bAddEffOnSkill 1089
|
||||||
bHealPower 1090
|
bHealPower 1090
|
||||||
@ -634,6 +634,17 @@ bSetDefRace 2059
|
|||||||
bSetMDefRace 2060
|
bSetMDefRace 2060
|
||||||
bHPVanishRate 2061
|
bHPVanishRate 2061
|
||||||
|
|
||||||
|
bIgnoreDefClass 2062
|
||||||
|
bIgnoreMdefRaceRate 2063
|
||||||
|
bDefRatioAtkClass 2064
|
||||||
|
bAddClass 2065
|
||||||
|
bSubClass 2066
|
||||||
|
bMagicAddClass 2067
|
||||||
|
bWeaponComaClass 2068
|
||||||
|
bHpDrainValueClass 2069
|
||||||
|
bSpDrainValueClass 2070
|
||||||
|
bIgnoreMdefClassRate 2071
|
||||||
|
|
||||||
EQI_HEAD_TOP 1
|
EQI_HEAD_TOP 1
|
||||||
EQI_ARMOR 2
|
EQI_ARMOR 2
|
||||||
EQI_HAND_L 3
|
EQI_HAND_L 3
|
||||||
@ -694,6 +705,7 @@ Ele_Holy 6
|
|||||||
Ele_Dark 7
|
Ele_Dark 7
|
||||||
Ele_Ghost 8
|
Ele_Ghost 8
|
||||||
Ele_Undead 9
|
Ele_Undead 9
|
||||||
|
Ele_All 10
|
||||||
|
|
||||||
RC_Formless 0
|
RC_Formless 0
|
||||||
RC_Undead 1
|
RC_Undead 1
|
||||||
@ -705,9 +717,12 @@ RC_Demon 6
|
|||||||
RC_DemiHuman 7
|
RC_DemiHuman 7
|
||||||
RC_Angel 8
|
RC_Angel 8
|
||||||
RC_Dragon 9
|
RC_Dragon 9
|
||||||
RC_Boss 10
|
RC_All 10
|
||||||
RC_NonBoss 11
|
|
||||||
RC_NonDemiHuman 12
|
Class_Normal 0
|
||||||
|
Class_Boss 1
|
||||||
|
Class_Guardian 2
|
||||||
|
Class_All 3
|
||||||
|
|
||||||
RC2_None 0
|
RC2_None 0
|
||||||
RC2_Goblin 1
|
RC2_Goblin 1
|
||||||
@ -720,6 +735,7 @@ RC2_Ninja 6
|
|||||||
Size_Small 0
|
Size_Small 0
|
||||||
Size_Medium 1
|
Size_Medium 1
|
||||||
Size_Large 2
|
Size_Large 2
|
||||||
|
Size_All 3
|
||||||
|
|
||||||
BF_WEAPON 0x0001
|
BF_WEAPON 0x0001
|
||||||
BF_MAGIC 0x0002
|
BF_MAGIC 0x0002
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
|
|
||||||
1166:2527,{ bonus2 bAddRace,RC_Dragon,5; }
|
1166:2527,{ bonus2 bAddRace,RC_Dragon,5; }
|
||||||
1420:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
|
1420:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
|
||||||
1420:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; }
|
1420:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; }
|
||||||
1421:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; }
|
1421:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; }
|
||||||
1422:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; }
|
1422:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; }
|
||||||
1428:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
|
1428:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
|
||||||
1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HEAD_TOP); }
|
1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HEAD_TOP); }
|
||||||
1472:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HAND_R); }
|
1472:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HAND_R); }
|
||||||
@ -69,20 +69,20 @@
|
|||||||
//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
|
//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
|
||||||
2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
|
2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
|
||||||
2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
|
2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
|
||||||
2374:2729,{ bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; }
|
2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
|
||||||
2375:2729,{ bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; }
|
2375:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
|
||||||
2376:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
|
2376:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
|
||||||
2377:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
|
2377:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
|
||||||
2378:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
|
2378:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
|
||||||
2379:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
|
2379:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
|
||||||
2380:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
|
2380:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
|
||||||
2381:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
|
2381:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
|
||||||
2382:2437:2540,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
|
2382:2437:2540,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
|
||||||
2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bCastrate,-3; bonus bDelayrate,-15; }
|
2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bCastrate,-3; bonus bDelayrate,-15; }
|
||||||
2390:2749,{ bonus bFlee2,5; }
|
2390:2749,{ bonus bFlee2,5; }
|
||||||
2394:2444:2549,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
|
2394:2444:2549,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
|
||||||
2399:2553,{ bonus bAgi,5; bonus bFlee,15; }
|
2399:2553,{ bonus bAgi,5; bonus bFlee,15; }
|
||||||
2408:2655,{ bonus bBaseAtk,50; bonus2 bAddDefClass,1196,20; bonus2 bAddDefClass,1197,20; }
|
2408:2655,{ bonus bBaseAtk,50; bonus2 bAddDefMonster,1196,20; bonus2 bAddDefMonster,1197,20; }
|
||||||
2424:2528,{ bonus bHPrecovRate,5; bonus bMaxHPrate,10; }
|
2424:2528,{ bonus bHPrecovRate,5; bonus bMaxHPrate,10; }
|
||||||
2425:2529,{ bonus bFlee,10; }
|
2425:2529,{ bonus bFlee,10; }
|
||||||
2425:2530,{ bonus bFlee,10; }
|
2425:2530,{ bonus bFlee,10; }
|
||||||
@ -108,14 +108,14 @@
|
|||||||
2626:2786,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
|
2626:2786,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
|
||||||
2678:2679,{ bonus4 bAutoSpell,"MO_EXTREMITYFIST",1,3,1; bonus3 bAutoSpell,"PR_LEXAETERNA",1,20; bonus3 bAutoSpell,"AS_SONICBLOW",5,50; bonus3 bAutoSpell,"MO_INVESTIGATE",5,20; bonus3 bAutoSpell,"ASC_METEORASSAULT",2,50; }
|
2678:2679,{ bonus4 bAutoSpell,"MO_EXTREMITYFIST",1,3,1; bonus3 bAutoSpell,"PR_LEXAETERNA",1,20; bonus3 bAutoSpell,"AS_SONICBLOW",5,50; bonus3 bAutoSpell,"MO_INVESTIGATE",5,20; bonus3 bAutoSpell,"ASC_METEORASSAULT",2,50; }
|
||||||
//2679:2792,{ bonus4 bAutoSpell,"MO_EXTREMITYFIST",1,3,1; bonus3 bAutoSpell,"PR_LEXAETERNA",1,20; bonus3 bAutoSpell,"AS_SONICBLOW",5,50; bonus3 bAutoSpell,"MO_INVESTIGATE",5,20; bonus3 bAutoSpell,"ASC_METEORASSAULT",2,50; }
|
//2679:2792,{ bonus4 bAutoSpell,"MO_EXTREMITYFIST",1,3,1; bonus3 bAutoSpell,"PR_LEXAETERNA",1,20; bonus3 bAutoSpell,"AS_SONICBLOW",5,50; bonus3 bAutoSpell,"MO_INVESTIGATE",5,20; bonus3 bAutoSpell,"ASC_METEORASSAULT",2,50; }
|
||||||
2720:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2720:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
||||||
2721:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2721:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
||||||
2722:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2722:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
||||||
2723:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2723:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
||||||
2724:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2724:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
||||||
2725:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2725:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
||||||
2726:2727,{ bonus bUseSPrate,-25; }
|
2726:2727,{ bonus bUseSPrate,-25; }
|
||||||
2733:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2733:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
||||||
2777:2778:5479,{ bonus bMaxHP,300; bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,5; }
|
2777:2778:5479,{ bonus bMaxHP,300; bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,5; }
|
||||||
2779:2780:5482,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; }
|
2779:2780:5482,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; }
|
||||||
2779:2780:5577,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; }
|
2779:2780:5577,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; }
|
||||||
|
@ -482,7 +482,7 @@
|
|||||||
1129,Flamberge,Flamberge,5,60000,,1500,150,,1,0,0x00004080,7,2,2,3,27,1,2,{},{},{}
|
1129,Flamberge,Flamberge,5,60000,,1500,150,,1,0,0x00004080,7,2,2,3,27,1,2,{},{},{}
|
||||||
1130,Nagan,Nagan,5,20,,500,120,,1,0,0x000654E2,7,2,2,4,40,1,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
|
1130,Nagan,Nagan,5,20,,500,120,,1,0,0x000654E2,7,2,2,4,40,1,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
|
||||||
1131,Ice_Falchon,Ice Falchion,5,20,,600,100,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; bonus2 bAddEff2,Eff_Freeze,10; skill "MG_COLDBOLT",3; bonus3 bAutoSpell,"MG_COLDBOLT",3,100; },{},{}
|
1131,Ice_Falchon,Ice Falchion,5,20,,600,100,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; bonus2 bAddEff2,Eff_Freeze,10; skill "MG_COLDBOLT",3; bonus3 bAutoSpell,"MG_COLDBOLT",3,100; },{},{}
|
||||||
1132,Edge,Edge,5,20,,700,115,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bAddEff,Eff_Curse,30; bonus2 bWeaponComaRace,RC_NonBoss,10; },{},{}
|
1132,Edge,Edge,5,20,,700,115,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bAddEff,Eff_Curse,30; bonus2 bWeaponComaClass,Class_Normal,10; },{},{}
|
||||||
1133,Fire_Brand,Fireblend,5,20,,500,100,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Fire; skill "MG_FIREBOLT",3; bonus3 bAutoSpell,"MG_FIREBOLT",3,100; },{},{}
|
1133,Fire_Brand,Fireblend,5,20,,500,100,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Fire; skill "MG_FIREBOLT",3; bonus3 bAutoSpell,"MG_FIREBOLT",3,100; },{},{}
|
||||||
1134,Scissores_Sword,Caesar's Sword,5,20,,700,140,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bAddRace,RC_Plant,25; bonus bIgnoreDefRace,RC_Plant; },{},{}
|
1134,Scissores_Sword,Caesar's Sword,5,20,,700,140,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bAddRace,RC_Plant,25; bonus bIgnoreDefRace,RC_Plant; },{},{}
|
||||||
1135,Cutlas,Cutlus,5,20,,900,150,,1,0,0x000654E2,7,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
1135,Cutlas,Cutlus,5,20,,900,150,,1,0,0x000654E2,7,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
||||||
@ -490,7 +490,7 @@
|
|||||||
1137,Excalibur,Excalibur,5,20,,1200,150,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bInt,5; bonus bLuk,10; bonus bDex,-1; bonus bAtkEle,Ele_Holy; },{},{}
|
1137,Excalibur,Excalibur,5,20,,1200,150,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bInt,5; bonus bLuk,10; bonus bDex,-1; bonus bAtkEle,Ele_Holy; },{},{}
|
||||||
1138,Mysteltainn_,Mysteltainn,5,20,,1000,170,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEle,Ele_Ghost,15; bonus3 bAutoSpell,"MG_STONECURSE",3,100; bonus2 bAddEff,Eff_Stone,10; bonus bDex,3; },{},{}
|
1138,Mysteltainn_,Mysteltainn,5,20,,1000,170,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEle,Ele_Ghost,15; bonus3 bAutoSpell,"MG_STONECURSE",3,100; bonus2 bAddEff,Eff_Stone,10; bonus bDex,3; },{},{}
|
||||||
1139,Tale_Fing_,Tirfing,5,20,,1000,200,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Dark; bonus2 bHPLossRate,35,10000; },{},{}
|
1139,Tale_Fing_,Tirfing,5,20,,1000,200,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Dark; bonus2 bHPLossRate,35,10000; },{},{}
|
||||||
1140,Byeorrun_Gum,Byeollungum,5,20,,900,150,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bSubRace,RC_NonBoss,-10; bonus2 bAddRace,RC_Boss,50; bonus bAllStats,2; },{},{}
|
1140,Byeorrun_Gum,Byeollungum,5,20,,900,150,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bSubClass,Class_Normal,-10; bonus2 bAddClass,Class_Boss,50; bonus bAllStats,2; },{},{}
|
||||||
1141,Immaterial_Sword,Immaterial Sword,5,20,,900,140,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0; },{},{}
|
1141,Immaterial_Sword,Immaterial Sword,5,20,,900,140,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1142,Jewel_Sword,Jeweled Sword,5,20,,2200,104,,1,0,0x000654E2,7,2,2,3,68,1,2,{ bonus2 bAddMonsterDropItemGroup,IG_Jewel,100; },{},{}
|
1142,Jewel_Sword,Jeweled Sword,5,20,,2200,104,,1,0,0x000654E2,7,2,2,3,68,1,2,{ bonus2 bAddMonsterDropItemGroup,IG_Jewel,100; },{},{}
|
||||||
1143,Gaia_Sword,Gaia Sword,5,20,,2500,140,,1,0,0x000654E2,7,2,2,3,74,1,2,{ bonus2 bAddMonsterDropItemGroup,IG_Ore,30; },{},{}
|
1143,Gaia_Sword,Gaia Sword,5,20,,2500,140,,1,0,0x000654E2,7,2,2,3,74,1,2,{ bonus2 bAddMonsterDropItemGroup,IG_Ore,30; },{},{}
|
||||||
@ -527,7 +527,7 @@
|
|||||||
1174,Executioner_C,Executioner,5,2,,0,190,,1,0,0x00004082,7,2,34,4,0,0,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark; },{},{}
|
1174,Executioner_C,Executioner,5,2,,0,190,,1,0,0x00004082,7,2,34,4,0,0,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark; },{},{}
|
||||||
1175,Altas_Weapon,Atlas Weapon,5,20,,3500,200,,1,1,0x00004082,2,2,34,4,55,1,3,{ bonus bCritical,10; if(readparam(bStr)>=80) bonus bBreakArmorRate,500; },{},{}
|
1175,Altas_Weapon,Atlas Weapon,5,20,,3500,200,,1,1,0x00004082,2,2,34,4,55,1,3,{ bonus bCritical,10; if(readparam(bStr)>=80) bonus bBreakArmorRate,500; },{},{}
|
||||||
1176,Muscle_Cutter,Muscle Cutter,5,20,,2200,160,,1,2,0x00004082,2,2,34,4,55,1,3,{ bonus2 bAddEff,Eff_Bleeding,800; bonus3 bAutoSpell,"AL_DECAGI",1,30; },{},{}
|
1176,Muscle_Cutter,Muscle Cutter,5,20,,2200,160,,1,2,0x00004082,2,2,34,4,55,1,3,{ bonus2 bAddEff,Eff_Bleeding,800; bonus3 bAutoSpell,"AL_DECAGI",1,30; },{},{}
|
||||||
1177,Muramash,Muramash,5,20,,0,120,,1,0,0x00004082,7,2,34,1,0,0,3,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1177,Muramash,Muramash,5,20,,0,120,,1,0,0x00004082,7,2,34,1,0,0,3,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1178,Schweizersabel_,Schweizersabel,5,20,,1600,160,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100; },{},{}
|
1178,Schweizersabel_,Schweizersabel,5,20,,1600,160,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100; },{},{}
|
||||||
1179,Executioner__,Executioner,5,20,,2200,155,,1,1,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark; },{},{}
|
1179,Executioner__,Executioner,5,20,,2200,155,,1,1,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus bAtkEle,Ele_Dark; },{},{}
|
||||||
1180,Dragon_Slayer_,Dragon Slayer,5,20,,1300,150,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15; },{},{}
|
1180,Dragon_Slayer_,Dragon Slayer,5,20,,1300,150,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15; },{},{}
|
||||||
@ -535,12 +535,12 @@
|
|||||||
1182,Bloody_Eater,Bloody Eater,5,20,,1200,200,,1,2,0x00004082,2,2,34,4,50,1,3,{ bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100; },{},{}
|
1182,Bloody_Eater,Bloody Eater,5,20,,1200,200,,1,2,0x00004082,2,2,34,4,50,1,3,{ bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100; },{},{}
|
||||||
1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{}
|
1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1185,Violet_Fear,Violet Fear,5,20,,2200,275,,1,2,0x00004082,2,2,34,4,80,1,3,{ bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefRace,RC_NonBoss; }",50,5000; },{},{}
|
1185,Violet_Fear,Violet Fear,5,20,,2200,275,,1,2,0x00004082,2,2,34,4,80,1,3,{ bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{}
|
||||||
1186,Death_Guidance,Death Guidance,5,20,,2000,200,,1,2,0x00004082,2,2,34,4,70,1,3,{ bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; if( getrefine()>8 ) bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",2,20; else bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",1,20; },{},{}
|
1186,Death_Guidance,Death Guidance,5,20,,2000,200,,1,2,0x00004082,2,2,34,4,70,1,3,{ bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; if( getrefine()>8 ) bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",2,20; else bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",1,20; },{},{}
|
||||||
1187,Krieger_Twohand_Sword1,Glorious Claymore,5,20,,0,220,,1,0,0x00004082,7,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",getskilllv("LK_CONCENTRATION")>1?getskilllv("LK_CONCENTRATION"):1,30; bonus3 bAutoSpell,"LK_AURABLADE",getskilllv("LK_AURABLADE")>1?getskilllv("LK_AURABLADE"):1,30; } },{},{}
|
1187,Krieger_Twohand_Sword1,Glorious Claymore,5,20,,0,220,,1,0,0x00004082,7,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",getskilllv("LK_CONCENTRATION")>1?getskilllv("LK_CONCENTRATION"):1,30; bonus3 bAutoSpell,"LK_AURABLADE",getskilllv("LK_AURABLADE")>1?getskilllv("LK_AURABLADE"):1,30; } },{},{}
|
||||||
1188,Veteran_Sword,Veteran Sword,5,10000,,2000,180,,1,1,0x00004082,7,2,34,4,80,1,3,{ if(getskilllv("SM_BASH")==10) { bonus2 bSkillAtk,"SM_BASH",50; } if(getskilllv("KN_BOWLINGBASH")==10) { bonus2 bSkillAtk,"KN_BOWLINGBASH",50; } bonus bStr,1; bonus bDex,1; },{},{}
|
1188,Veteran_Sword,Veteran Sword,5,10000,,2000,180,,1,1,0x00004082,7,2,34,4,80,1,3,{ if(getskilllv("SM_BASH")==10) { bonus2 bSkillAtk,"SM_BASH",50; } if(getskilllv("KN_BOWLINGBASH")==10) { bonus2 bSkillAtk,"KN_BOWLINGBASH",50; } bonus bStr,1; bonus bDex,1; },{},{}
|
||||||
1189,Krasnaya,Krasnaya,5,20,,3800,200,,2,3,0x00004082,2,2,34,2,50,1,3,{ if(readparam(bStr)>=95) { bonus bBaseAtk,20; } },{},{}
|
1189,Krasnaya,Krasnaya,5,20,,3800,200,,2,3,0x00004082,2,2,34,2,50,1,3,{ if(readparam(bStr)>=95) { bonus bBaseAtk,20; } },{},{}
|
||||||
1190,Claymore_C,Claymore,5,0,,0,220,,1,0,0x00004080,7,2,34,3,1,0,3,{ bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
1190,Claymore_C,Claymore,5,0,,0,220,,1,0,0x00004080,7,2,34,3,1,0,3,{ bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
// Daggers
|
// Daggers
|
||||||
1201,Knife,Knife,5,50,,400,17,,1,3,0xFE9F7EEF,7,2,2,1,1,1,1,{},{},{}
|
1201,Knife,Knife,5,50,,400,17,,1,3,0xFE9F7EEF,7,2,2,1,1,1,1,{},{},{}
|
||||||
1202,Knife_,Knife,5,50,,400,17,,1,4,0xFE9F7EEF,7,2,2,1,1,1,1,{},{},{}
|
1202,Knife_,Knife,5,50,,400,17,,1,4,0xFE9F7EEF,7,2,2,1,1,1,1,{},{},{}
|
||||||
@ -571,7 +571,7 @@
|
|||||||
1227,Weeder_Knife,Weeder Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; bonus2 bSubRace,RC_Plant,15; },{},{}
|
1227,Weeder_Knife,Weeder Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; bonus2 bSubRace,RC_Plant,15; },{},{}
|
||||||
1228,Combat_Knife,Combat Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Demon,-10; },{},{}
|
1228,Combat_Knife,Combat Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Demon,-10; },{},{}
|
||||||
1229,Mama's_Knife,Kitchen Knife,5,20,,500,75,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bCritical,30; bonus3 bAddMonsterDropItem,517,RC_Brute,5000; },{},{}
|
1229,Mama's_Knife,Kitchen Knife,5,20,,500,75,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bCritical,30; bonus3 bAddMonsterDropItem,517,RC_Brute,5000; },{},{}
|
||||||
1230,House_Auger,Ice Pick,5,20,,600,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bDefRatioAtkRace,RC_Boss; bonus bDefRatioAtkRace,RC_NonBoss; },{},{}
|
1230,House_Auger,Ice Pick,5,20,,600,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bDefRatioAtkClass,Class_All; },{},{}
|
||||||
1231,Bazerald,Bazerald,5,20,,500,70,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus bMatkRate,10; },{},{}
|
1231,Bazerald,Bazerald,5,20,,500,70,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus bMatkRate,10; },{},{}
|
||||||
1232,Assasin_Dagger,Assassin Dagger,5,20,,600,140,,1,0,0x00001000,7,2,2,4,36,1,1,{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark; },{},{}
|
1232,Assasin_Dagger,Assassin Dagger,5,20,,600,140,,1,0,0x00001000,7,2,2,4,36,1,1,{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark; },{},{}
|
||||||
1233,Exercise,Exorciser,5,20,,700,90,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; },{},{}
|
1233,Exercise,Exorciser,5,20,,700,90,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; },{},{}
|
||||||
@ -614,7 +614,7 @@
|
|||||||
1269,Inverse_Scale,Inverse Scale,5,20,,1500,140,,1,0,0x00001000,2,2,34,4,55,1,16,{ bonus bAtkEle,Ele_Holy; bonus3 bAutoSpell,"NPC_DRAGONFEAR",1,30; },{},{}
|
1269,Inverse_Scale,Inverse Scale,5,20,,1500,140,,1,0,0x00001000,2,2,34,4,55,1,16,{ bonus bAtkEle,Ele_Holy; bonus3 bAutoSpell,"NPC_DRAGONFEAR",1,30; },{},{}
|
||||||
1270,Drill_Katar,Drill Katar,5,20,,1400,110,,1,1,0x00001000,2,2,34,4,55,1,16,{ bonus bHit,30; bonus3 bAutoSpell,"ST_FULLSTRIP",1,150; },{},{}
|
1270,Drill_Katar,Drill Katar,5,20,,1400,110,,1,1,0x00001000,2,2,34,4,55,1,16,{ bonus bHit,30; bonus3 bAutoSpell,"ST_FULLSTRIP",1,150; },{},{}
|
||||||
1271,Blood_Tears,Blood Tears,5,20,,1700,120,,1,2,0x00001000,2,2,34,4,55,1,16,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",2,30; } else bonus3 bAutoSpell,"NPC_WIDEBLEEDING",1,30; },{},{}
|
1271,Blood_Tears,Blood Tears,5,20,,1700,120,,1,2,0x00001000,2,2,34,4,55,1,16,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",2,30; } else bonus3 bAutoSpell,"NPC_WIDEBLEEDING",1,30; },{},{}
|
||||||
1272,Scratcher,Scratcher,5,20,,0,120,,1,0,0x00001000,7,2,34,1,0,0,16,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1272,Scratcher,Scratcher,5,20,,0,120,,1,0,0x00001000,7,2,34,1,0,0,16,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1273,Bloody_Roar_C,Refined Bloody Roar,5,1,,0,148,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160; },{},{}
|
1273,Bloody_Roar_C,Refined Bloody Roar,5,1,,0,148,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bFlee,-160; bonus bFlee2,-160; },{},{}
|
||||||
1274,Unholy_Touch_C,Refined Unholy Touch,5,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{}
|
1274,Unholy_Touch_C,Refined Unholy Touch,5,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1275,Katar_Of_Cold_Icicle_,Katar of Frozen Icicle,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; },{},{}
|
1275,Katar_Of_Cold_Icicle_,Katar of Frozen Icicle,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; },{},{}
|
||||||
@ -628,7 +628,7 @@
|
|||||||
1283,Katar_Of_Speed,Katar Of Speed,5,20,,0,175,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus2 bSkillAtk,"AS_SONICBLOW",25; bonus bAspdRate,3; },{},{}
|
1283,Katar_Of_Speed,Katar Of Speed,5,20,,0,175,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus2 bSkillAtk,"AS_SONICBLOW",25; bonus bAspdRate,3; },{},{}
|
||||||
1284,Krishna,Krishna,5,20,,1200,120,,1,2,0x00001000,2,2,34,3,50,1,16,{ bonus2 bSkillAtk,"AS_GRIMTOOTH",10; if(getskilllv("AS_SONICBLOW")) { bonus3 bAutoSpell,"AS_SONICBLOW",getskilllv("AS_SONICBLOW"),5; }else{ bonus3 bAutoSpell,"AS_SONICBLOW",1,5; } },{},{}
|
1284,Krishna,Krishna,5,20,,1200,120,,1,2,0x00001000,2,2,34,3,50,1,16,{ bonus2 bSkillAtk,"AS_GRIMTOOTH",10; if(getskilllv("AS_SONICBLOW")) { bonus3 bAutoSpell,"AS_SONICBLOW",getskilllv("AS_SONICBLOW"),5; }else{ bonus3 bAutoSpell,"AS_SONICBLOW",1,5; } },{},{}
|
||||||
1285,Cakram,Chakram,5,20,,1000,130,,1,2,0x00001000,2,2,34,3,50,1,16,{ if(getskilllv("AS_KATAR")==10) { bonus bHit,10; } bonus2 bSkillAtk,"ASC_METEORASSAULT",20; },{},{}
|
1285,Cakram,Chakram,5,20,,1000,130,,1,2,0x00001000,2,2,34,3,50,1,16,{ if(getskilllv("AS_KATAR")==10) { bonus bHit,10; } bonus2 bSkillAtk,"ASC_METEORASSAULT",20; },{},{}
|
||||||
1286,Jamadhar_C,Jamadhar,5,0,,0,200,,1,0,0x00001000,7,2,34,3,1,0,16,{ bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
1286,Jamadhar_C,Jamadhar,5,0,,0,200,,1,0,0x00001000,7,2,34,3,1,0,16,{ bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
// 1-Handed Axes
|
// 1-Handed Axes
|
||||||
1301,Axe,Axe,5,500,,800,38,,1,3,0x000654E3,7,2,2,1,3,1,6,{},{},{}
|
1301,Axe,Axe,5,500,,800,38,,1,3,0x000654E3,7,2,2,1,3,1,6,{},{},{}
|
||||||
1302,Axe_,Axe,5,500,,800,38,,1,4,0x000654E3,7,2,2,1,3,1,6,{},{},{}
|
1302,Axe_,Axe,5,500,,800,38,,1,4,0x000654E3,7,2,2,1,3,1,6,{},{},{}
|
||||||
@ -641,7 +641,7 @@
|
|||||||
1309,Orcish_Axe_,Orcish Axe,5,20,,1500,75,,1,4,0x000654E3,7,2,2,3,3,1,6,{},{},{}
|
1309,Orcish_Axe_,Orcish Axe,5,20,,1500,75,,1,4,0x000654E3,7,2,2,3,3,1,6,{},{},{}
|
||||||
1310,Krieger_Onehand_Axe1,Glorious Cleaver,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,6,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } },{},{}
|
1310,Krieger_Onehand_Axe1,Glorious Cleaver,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,6,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } },{},{}
|
||||||
1311,Vecer_Axe,Vecer Axe,5,20,,1500,140,,1,2,0x000444A2,2,2,2,3,50,1,6,{ if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90||readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; } },{},{}
|
1311,Vecer_Axe,Vecer Axe,5,20,,1500,140,,1,2,0x000444A2,2,2,2,3,50,1,6,{ if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90||readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; } },{},{}
|
||||||
1312,Orcish_Axe_C,Orcish Axe,5,0,,0,110,,1,0,0x000654E3,7,2,2,3,1,0,6,{ bonus2 bAddSize,Size_Small,70; bonus2 bAddSize,Size_Medium,70; bonus2 bAddSize,Size_Large,70; },{},{}
|
1312,Orcish_Axe_C,Orcish Axe,5,0,,0,110,,1,0,0x000654E3,7,2,2,3,1,0,6,{ bonus2 bAddSize,Size_All,70; },{},{}
|
||||||
1313,Tourist_Axe,Tourist Axe,5,0,,500,77,,1,0,0x000654E3,7,2,2,1,1,0,6,{ bonus bStr,2; },{},{}
|
1313,Tourist_Axe,Tourist Axe,5,0,,500,77,,1,0,0x000654E3,7,2,2,1,1,0,6,{ bonus bStr,2; },{},{}
|
||||||
1314,F_Tomahawk_C,Tomahawk,5,2,,0,200,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bAtkEle,Ele_Wind; },{},{}
|
1314,F_Tomahawk_C,Tomahawk,5,2,,0,200,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bAtkEle,Ele_Wind; },{},{}
|
||||||
1315,F_Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,7,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; bonus bStr,10; },{},{}
|
1315,F_Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,7,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; bonus bStr,10; },{},{}
|
||||||
@ -683,7 +683,7 @@
|
|||||||
1385,Bradium_Stonehammer,Bradium Stone Hammer,5,20,,2700,210,,1,0,0x000444A2,2,2,34,4,75,1,7,{ bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine()); },{},{}
|
1385,Bradium_Stonehammer,Bradium Stone Hammer,5,20,,2700,210,,1,0,0x000444A2,2,2,34,4,75,1,7,{ bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine()); },{},{}
|
||||||
1386,Doom_Slayer_I,Doom Slayer,5,0,,0,20,,1,0,0x000444A2,7,2,34,4,0,0,7,{ if(readparam(bStr)>=95){ bonus bBaseAtk,400; bonus2 bAddEff,Eff_Stun,3000; bonus bAspdRate,-25; bonus bUseSPrate,100; bonus bBreakArmorRate,500; } },{},{}
|
1386,Doom_Slayer_I,Doom Slayer,5,0,,0,20,,1,0,0x000444A2,7,2,34,4,0,0,7,{ if(readparam(bStr)>=95){ bonus bBaseAtk,400; bonus2 bAddEff,Eff_Stun,3000; bonus bAspdRate,-25; bonus bUseSPrate,100; bonus bBreakArmorRate,500; } },{},{}
|
||||||
1387,Giant_Axe,Giant Axe,5,20,,4000,330,,1,1,0x000444A2,2,2,34,3,50,1,7,{ bonus2 bSkillAtk,"WS_CARTTERMINATION",15; if(readparam(bStr)>=95) { bonus bHit,10; bonus bAspdRate,3; } },{},{}
|
1387,Giant_Axe,Giant Axe,5,20,,4000,330,,1,1,0x000444A2,2,2,34,3,50,1,7,{ bonus2 bSkillAtk,"WS_CARTTERMINATION",15; if(readparam(bStr)>=95) { bonus bHit,10; bonus bAspdRate,3; } },{},{}
|
||||||
1388,Two_Handed_Axe_C,Two-Handed Axe,5,0,,0,220,,1,0,0x000444A2,7,2,34,3,1,0,7,{ bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
1388,Two_Handed_Axe_C,Two-Handed Axe,5,0,,0,220,,1,0,0x000444A2,7,2,34,3,1,0,7,{ bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
1389,E_Tomahawk_C,Tomahawk,5,2,,0,200,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bAtkEle,Ele_Wind; },{},{}
|
1389,E_Tomahawk_C,Tomahawk,5,2,,0,200,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bAtkEle,Ele_Wind; },{},{}
|
||||||
1390,E_Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,7,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; bonus bStr,10; },{},{}
|
1390,E_Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,7,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; bonus bStr,10; },{},{}
|
||||||
// 1-Handed Spears
|
// 1-Handed Spears
|
||||||
@ -701,7 +701,7 @@
|
|||||||
1412,Lance__,Lance,5,60000,,2500,185,,3,0,0x00004082,7,2,34,3,33,1,5,{},{},{}
|
1412,Lance__,Lance,5,60000,,2500,185,,3,0,0x00004082,7,2,34,3,33,1,5,{},{},{}
|
||||||
1413,Gungnir,Gungnir,5,20,,500,120,,3,0,0x00004082,7,2,2,4,4,1,4,{ bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30; },{},{}
|
1413,Gungnir,Gungnir,5,20,,500,120,,3,0,0x00004082,7,2,2,4,4,1,4,{ bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30; },{},{}
|
||||||
1414,Gelerdria,Gelerdria,5,20,,700,145,,3,0,0x00004082,7,2,2,4,48,1,4,{ bonus bAtkEle,Ele_Earth; bonus bMaxHP,800; bonus bMaxSP,-50; },{},{}
|
1414,Gelerdria,Gelerdria,5,20,,700,145,,3,0,0x00004082,7,2,2,4,48,1,4,{ bonus bAtkEle,Ele_Earth; bonus bMaxHP,800; bonus bMaxSP,-50; },{},{}
|
||||||
1415,Skewer,Brocca,5,20,,850,100,,3,0,0x00004082,7,2,2,4,48,1,4,{ bonus bIgnoreDefRace,RC_NonBoss; bonus2 bAddEle,Ele_Neutral,25; },{},{}
|
1415,Skewer,Brocca,5,20,,850,100,,3,0,0x00004082,7,2,2,4,48,1,4,{ bonus bIgnoreDefClass,Class_Normal; bonus2 bAddEle,Ele_Neutral,25; },{},{}
|
||||||
1416,Tjungkuletti,Tjungkuletti,5,20,,1000,95,,3,0,0x00004082,7,2,2,4,48,1,4,{ bonus bSPDrainValue,1; bonus bSPGainValue,5; },{},{}
|
1416,Tjungkuletti,Tjungkuletti,5,20,,1000,95,,3,0,0x00004082,7,2,2,4,48,1,4,{ bonus bSPDrainValue,1; bonus bSPGainValue,5; },{},{}
|
||||||
1417,Pole_Axe,Pole Axe,5,20,,3800,160,,3,1,0x00004082,7,2,2,3,71,1,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
|
1417,Pole_Axe,Pole Axe,5,20,,3800,160,,3,1,0x00004082,7,2,2,3,71,1,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
|
||||||
1418,Gungnir_,Gungnir,5,20,,500,120,,3,2,0x00004082,7,2,2,4,4,1,4,{ bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30; },{},{}
|
1418,Gungnir_,Gungnir,5,20,,500,120,,3,2,0x00004082,7,2,2,4,4,1,4,{ bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30; },{},{}
|
||||||
@ -709,14 +709,14 @@
|
|||||||
1420,Long_Horn,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{}
|
1420,Long_Horn,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1421,Battle_Hook,Battle Hook,5,20,,900,140,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; skill "KN_PIERCE",3; },{},{}
|
1421,Battle_Hook,Battle Hook,5,20,,900,140,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; skill "KN_PIERCE",3; },{},{}
|
||||||
1422,Hunting_Spear,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100; },{},{}
|
1422,Hunting_Spear,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100; },{},{}
|
||||||
1423,Pole_XO,Pole XO,5,20,,0,120,,3,0,0x00004082,7,2,2,1,0,0,4,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1423,Pole_XO,Pole XO,5,20,,0,120,,3,0,0x00004082,7,2,2,1,0,0,4,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1424,Skewer_C,Refined Brocca,5,1,,0,149,,3,0,0x00004082,7,2,2,4,0,0,4,{ bonus bIgnoreDefRace,RC_NonBoss; bonus2 bAddSize,Size_Medium,20; },{},{}
|
1424,Skewer_C,Refined Brocca,5,1,,0,149,,3,0,0x00004082,7,2,2,4,0,0,4,{ bonus bIgnoreDefClass,Class_Normal; bonus2 bAddSize,Size_Medium,20; },{},{}
|
||||||
1425,BF_Spear1,Assaulter Spear,5,20,,0,60,,3,0,0x00004082,7,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{}
|
1425,BF_Spear1,Assaulter Spear,5,20,,0,60,,3,0,0x00004082,7,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{}
|
||||||
1426,Krieger_Onehand_Spear1,Glorious Spear,5,20,,0,130,,3,0,0x00004082,7,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{}
|
1426,Krieger_Onehand_Spear1,Glorious Spear,5,20,,0,130,,3,0,0x00004082,7,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{}
|
||||||
1427,Spear_Of_Excellent,Spear Of Excellent,5,20,,0,160,,3,0,0x00004082,7,2,2,3,0,0,4,{ bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2; },{},{}
|
1427,Spear_Of_Excellent,Spear Of Excellent,5,20,,0,160,,3,0,0x00004082,7,2,2,3,0,0,4,{ bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2; },{},{}
|
||||||
1428,Long_Horn_M,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{}
|
1428,Long_Horn_M,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1429,Hunting_Spear_M,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,500; },{},{}
|
1429,Hunting_Spear_M,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,500; },{},{}
|
||||||
1430,Pike_C,Pike,5,0,,0,74,,3,0,0x00004082,7,2,2,1,1,0,4,{ bonus2 bAddSize,Size_Small,70; bonus2 bAddSize,Size_Medium,70; bonus2 bAddSize,Size_Large,70; },{},{}
|
1430,Pike_C,Pike,5,0,,0,74,,3,0,0x00004082,7,2,2,1,1,0,4,{ bonus2 bAddSize,Size_All,70; },{},{}
|
||||||
1431,F_Pole_Axe_C,Pole Axe,5,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
|
1431,F_Pole_Axe_C,Pole Axe,5,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
|
||||||
1432,E_Pole_Axe_C,Pole Axe,5,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
|
1432,E_Pole_Axe_C,Pole Axe,5,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{}
|
||||||
// 2-Handed Spears
|
// 2-Handed Spears
|
||||||
@ -739,27 +739,27 @@
|
|||||||
1467,Bill_Guisarme,Bill Guisarme,5,20,,1000,183,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
|
1467,Bill_Guisarme,Bill Guisarme,5,20,,1000,183,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus2 bAddRace,RC_Brute,10; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
|
||||||
1468,Zephyrus,Zephyrus,5,20,,2000,170,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100; },{},{}
|
1468,Zephyrus,Zephyrus,5,20,,2000,170,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100; },{},{}
|
||||||
1469,Longinus's_Spear,Longinus's Spear,5,20,,2500,180,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Dark; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Angel,10; },{},{}
|
1469,Longinus's_Spear,Longinus's Spear,5,20,,2500,180,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Dark; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Angel,10; },{},{}
|
||||||
1470,Brionac,Brionac,5,20,,3000,190,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",5; bonus3 bAutoSpell,"MG_SOULSTRIKE",3,100; bonus2 bAddRace,RC_Boss,5; },{},{}
|
1470,Brionac,Brionac,5,20,,3000,190,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Holy; skill "AL_HEAL",5; bonus3 bAutoSpell,"MG_SOULSTRIKE",3,100; bonus2 bAddClass,Class_Boss,5; },{},{}
|
||||||
1471,Hell_Fire,Hellfire,5,20,,3500,200,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Fire; bonus3 bAutoSpell,"MG_FIREBALL",3,100; bonus bStr,3; },{},{}
|
1471,Hell_Fire,Hellfire,5,20,,3500,200,,3,0,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Fire; bonus3 bAutoSpell,"MG_FIREBALL",3,100; bonus bStr,3; },{},{}
|
||||||
// 2-Handed Staffs
|
// 2-Handed Staffs
|
||||||
1472,Staff_Of_Soul,Soul Staff,5,20,,1400,25,,1,0,0x00810204,7,2,34,3,73,1,10,{ bonus bInt,5; bonus bAgi,2; bonus bMatkRate,15; },{},{}
|
1472,Staff_Of_Soul,Soul Staff,5,20,,1400,25,,1,0,0x00810204,7,2,34,3,73,1,10,{ bonus bInt,5; bonus bAgi,2; bonus bMatkRate,15; },{},{}
|
||||||
1473,Wizardy_Staff,Wizardry Staff,5,20,,2400,120,,1,0,0x00810204,7,2,34,4,90,1,10,{ bonus bInt,6; bonus bDex,2; bonus bMatkRate,15; },{},{}
|
1473,Wizardy_Staff,Wizardry Staff,5,20,,2400,120,,1,0,0x00810204,7,2,34,4,90,1,10,{ bonus bInt,6; bonus bDex,2; bonus bMatkRate,15; },{},{}
|
||||||
// 2-Handed Spears
|
// 2-Handed Spears
|
||||||
1474,Gae_Bolg,Gae Bolg,5,20,,2000,160,,3,0,0x00004082,7,2,34,4,60,1,5,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Boss,10; },{},{}
|
1474,Gae_Bolg,Gae Bolg,5,20,,2000,160,,3,0,0x00004082,7,2,34,4,60,1,5,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddClass,Class_Boss,10; },{},{}
|
||||||
1475,Horseback_Lance,Equestrian's Spear,5,20,,3700,200,,4,0,0x00004082,7,2,34,4,75,1,5,{},{},{}
|
1475,Horseback_Lance,Equestrian's Spear,5,20,,3700,200,,4,0,0x00004082,7,2,34,4,75,1,5,{},{},{}
|
||||||
1476,Crescent_Scythe_,Crescent Scythe,5,20,,2500,180,,3,1,0x00004082,7,2,34,4,48,1,5,{ bonus bCritical,30; bonus bHit,10; },{},{}
|
1476,Crescent_Scythe_,Crescent Scythe,5,20,,2500,180,,3,1,0x00004082,7,2,34,4,48,1,5,{ bonus bCritical,30; bonus bHit,10; },{},{}
|
||||||
1477,Spectral_Spear,Spectral Spear,5,20,,2000,170,,3,0,0x00004082,7,2,34,4,75,1,5,{ bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50; },{},{}
|
1477,Spectral_Spear,Spectral Spear,5,20,,2000,170,,3,0,0x00004082,7,2,34,4,75,1,5,{ bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50; },{},{}
|
||||||
1478,Ahlspiess,Ahlspiess,5,20,,1000,120,,3,0,0x00004080,7,2,34,4,65,1,5,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bIgnoreDefRace,RC_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{}
|
1478,Ahlspiess,Ahlspiess,5,20,,1000,120,,3,0,0x00004080,7,2,34,4,65,1,5,{ bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{}
|
||||||
1479,Spectral_Spear_,Spectral Spear,5,20,,2000,170,,3,1,0x00004082,7,2,34,4,75,1,5,{ bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50; },{},{}
|
1479,Spectral_Spear_,Spectral Spear,5,20,,2000,170,,3,1,0x00004082,7,2,34,4,75,1,5,{ bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50; },{},{}
|
||||||
1480,Gae_Bolg_,Gae Bolg,5,20,,2000,160,,3,2,0x00004082,7,2,34,4,60,1,5,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Boss,10; },{},{}
|
1480,Gae_Bolg_,Gae Bolg,5,20,,2000,160,,3,2,0x00004082,7,2,34,4,60,1,5,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddClass,Class_Boss,10; },{},{}
|
||||||
1481,Zephyrus_,Zephyrus,5,20,,2000,170,,3,3,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100; },{},{}
|
1481,Zephyrus_,Zephyrus,5,20,,2000,170,,3,3,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100; },{},{}
|
||||||
1482,BF_Lance1,Assaulter Lance,5,,,0,160,,3,0,0x00004082,7,2,34,3,80,1,5,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bUnbreakableWeapon,0; },{},{}
|
1482,BF_Lance1,Assaulter Lance,5,,,0,160,,3,0,0x00004082,7,2,34,3,80,1,5,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1483,Ivory_Lance,Ivory Lance,5,20,,1000,160,,3,1,0x00004082,2,2,34,3,50,1,5,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"LK_JOINTBEAT",1,100; skill "KN_SPEARSTAB",5; },{},{}
|
1483,Ivory_Lance,Ivory Lance,5,20,,1000,160,,3,1,0x00004082,2,2,34,3,50,1,5,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"LK_JOINTBEAT",1,100; skill "KN_SPEARSTAB",5; },{},{}
|
||||||
1484,Cardo,Cardo,5,20,,5600,150,,3,1,0x00000080,2,2,34,4,70,1,5,{ bonus bAspdRate,-10; bonus bDef,getrefine()/2; },{},{}
|
1484,Cardo,Cardo,5,20,,5600,150,,3,1,0x00000080,2,2,34,4,70,1,5,{ bonus bAspdRate,-10; bonus bDef,getrefine()/2; },{},{}
|
||||||
1485,Battle_Fork,Battle Fork,5,20,,700,112,,3,4,0x00004082,2,2,34,2,50,1,5,{},{},{}
|
1485,Battle_Fork,Battle Fork,5,20,,700,112,,3,4,0x00004082,2,2,34,2,50,1,5,{},{},{}
|
||||||
1486,Krieger_Twohand_Spear1,Glorious Lance,5,20,,0,220,,3,0,0x00004082,7,2,34,4,80,1,5,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; } },{},{}
|
1486,Krieger_Twohand_Spear1,Glorious Lance,5,20,,0,220,,3,0,0x00004082,7,2,34,4,80,1,5,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; } },{},{}
|
||||||
1487,Lance_C,Lance,5,0,,0,220,,3,0,0x00004082,7,2,34,3,1,0,5,{ bonus2 bAddSize,Size_Small,50; bonus2 bAddSize,Size_Medium,50; bonus2 bAddSize,Size_Large,50; },{},{}
|
1487,Lance_C,Lance,5,0,,0,220,,3,0,0x00004082,7,2,34,3,1,0,5,{ bonus2 bAddSize,Size_All,50; },{},{}
|
||||||
1488,Ahlspiess_C,Ahlspiess,5,20,,0,135,,3,0,0x00004080,7,2,34,4,1,1,5,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bIgnoreDefRace,RC_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{}
|
1488,Ahlspiess_C,Ahlspiess,5,20,,0,135,,3,0,0x00004080,7,2,34,4,1,1,5,{ bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{}
|
||||||
// Maces
|
// Maces
|
||||||
1501,Club,Club,5,120,,700,23,,1,3,0x0004C5B3,7,2,2,1,2,1,8,{},{},{}
|
1501,Club,Club,5,120,,700,23,,1,3,0x0004C5B3,7,2,2,1,2,1,8,{},{},{}
|
||||||
1502,Club_,Club,5,120,,700,23,,1,4,0x0004C5B3,7,2,2,1,2,1,8,{},{},{}
|
1502,Club_,Club,5,120,,700,23,,1,4,0x0004C5B3,7,2,2,1,2,1,8,{},{},{}
|
||||||
@ -796,7 +796,7 @@
|
|||||||
1533,Warrior_Balmung,Warrior's Balmung,5,20,,1000,170,,1,0,0xFFFFFFFF,7,2,2,4,48,1,8,{ bonus bAllStats,5; },{},{}
|
1533,Warrior_Balmung,Warrior's Balmung,5,20,,1000,170,,1,0,0xFFFFFFFF,7,2,2,4,48,1,8,{ bonus bAllStats,5; },{},{}
|
||||||
1534,Spanner_C,Wrench,5,2,,0,150,,1,0,0x00008110,7,2,2,3,0,0,8,{ bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stun,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100; },{},{}
|
1534,Spanner_C,Wrench,5,2,,0,150,,1,0,0x00008110,7,2,2,3,0,0,8,{ bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stun,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100; },{},{}
|
||||||
1535,Hollgrehenn_Hammer,Hollgrehenn's Hammer,5,4444,,44,4,,1,1,0x0004C5B2,7,2,2,4,44,1,8,{ bonus bBreakArmorRate,100; bonus bBreakWeaponRate,100; if(readparam(bStr)>=44) { bonus bBaseAtk,44; } },{},{}
|
1535,Hollgrehenn_Hammer,Hollgrehenn's Hammer,5,4444,,44,4,,1,1,0x0004C5B2,7,2,2,4,44,1,8,{ bonus bBreakArmorRate,100; bonus bBreakWeaponRate,100; if(readparam(bStr)>=44) { bonus bBaseAtk,44; } },{},{}
|
||||||
1536,Good_Morning_Star,Good Morning Star,5,20,,0,120,,1,0,0x0004C5B2,7,2,2,1,0,0,8,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1536,Good_Morning_Star,Good Morning Star,5,20,,0,120,,1,0,0x0004C5B2,7,2,2,1,0,0,8,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1537,Quadrille_C,Refined Quadrille,5,1,,0,193,,1,0,0x00008110,7,2,2,4,0,0,8,{ bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40; },{},{}
|
1537,Quadrille_C,Refined Quadrille,5,1,,0,193,,1,0,0x00008110,7,2,2,4,0,0,8,{ bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40; },{},{}
|
||||||
1538,Spike_,Spike,5,20,,700,85,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{}
|
1538,Spike_,Spike,5,20,,700,85,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{}
|
||||||
1539,Golden_Mace_,Golden Mace,5,20,,800,110,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0; },{},{}
|
1539,Golden_Mace_,Golden Mace,5,20,,800,110,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
@ -826,7 +826,7 @@
|
|||||||
1563,Diary_Of_Great_Sage_C,Sage's Diary,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{ bonus bMatkRate,20; bonus bAspdRate,5; },{},{}
|
1563,Diary_Of_Great_Sage_C,Sage's Diary,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{ bonus bMatkRate,20; bonus bAspdRate,5; },{},{}
|
||||||
1564,Encyclopedia,Encyclopedia,5,20,,2000,110,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); },{},{}
|
1564,Encyclopedia,Encyclopedia,5,20,,2000,110,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); },{},{}
|
||||||
1565,Death_Note,Ledger of Death,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
1565,Death_Note,Ledger of Death,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||||
1566,Diary_Of_Great_Basil,Diary Of Great Basil,5,20,,0,120,,1,0,0x00410100,7,2,2,1,0,0,15,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1566,Diary_Of_Great_Basil,Diary Of Great Basil,5,20,,0,120,,1,0,0x00410100,7,2,2,1,0,0,15,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1567,Hardback_C,Refined Hardcover Book,5,1,,0,168,,1,0,0x00410100,7,2,2,4,0,0,15,{ bonus bStr,5; bonus bDex,2; bonus bMatkRate,20; },{},{}
|
1567,Hardback_C,Refined Hardcover Book,5,1,,0,168,,1,0,0x00410100,7,2,2,4,0,0,15,{ bonus bStr,5; bonus bDex,2; bonus bMatkRate,20; },{},{}
|
||||||
1568,Book_Of_Billows_,Book of Billows,5,35000,,750,90,,1,3,0x00410100,7,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Water; },{},{}
|
1568,Book_Of_Billows_,Book of Billows,5,35000,,750,90,,1,3,0x00410100,7,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Water; },{},{}
|
||||||
1569,Book_Of_Mother_Earth_,Book of Mother Earth,5,35000,,750,90,,1,3,0x00410100,7,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Earth; },{},{}
|
1569,Book_Of_Mother_Earth_,Book of Mother Earth,5,35000,,750,90,,1,3,0x00410100,7,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Earth; },{},{}
|
||||||
@ -835,16 +835,16 @@
|
|||||||
1572,Principles_Of_Magic,Principles of Magic,5,20,,300,60,,1,2,0x00410100,7,2,2,3,60,1,15,{ bonus bMatkRate,20; bonus bInt,3; bonus bSPrecovRate,5; },{},{}
|
1572,Principles_Of_Magic,Principles of Magic,5,20,,300,60,,1,2,0x00410100,7,2,2,3,60,1,15,{ bonus bMatkRate,20; bonus bInt,3; bonus bSPrecovRate,5; },{},{}
|
||||||
1573,Ancient_Magic,Ancient Magic,5,20,,700,30,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bMatkRate,15; },{},{}
|
1573,Ancient_Magic,Ancient Magic,5,20,,700,30,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bMatkRate,15; },{},{}
|
||||||
1574,BF_Book1,Brave Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
1574,BF_Book1,Brave Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1575,BF_Book2,Valorous Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; },{},{}
|
1575,BF_Book2,Valorous Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1576,Krieger_Book1,Glorious Tablet,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{}
|
1576,Krieger_Book1,Glorious Tablet,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{}
|
||||||
1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRate,RC_DemiHuman,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; } },{},{}
|
1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRate,RC_DemiHuman,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; } },{},{}
|
||||||
1578,Book_Of_Prayer,Book Of Prayer,5,20,,0,140,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10; },{},{}
|
1578,Book_Of_Prayer,Book Of Prayer,5,20,,0,140,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10; },{},{}
|
||||||
1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bWeaponComaRace,RC_DemiHuman,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{}
|
||||||
1580,Encyclopedia_C,Giant Encyclopedia,5,0,,0,145,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
1580,Encyclopedia_C,Giant Encyclopedia,5,0,,0,145,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
1581,F_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{},{},{}
|
1581,F_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{},{},{}
|
||||||
1582,E_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{},{},{}
|
1582,E_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,7,2,2,3,1,0,15,{},{},{}
|
||||||
// GM Weapon
|
// GM Weapon
|
||||||
1599,Angra_Manyu,Angra Manyu,5,1,,10,200,,2,0,0xFFFFFFFF,7,2,2,1,1,1,8,{ bonus bAllStats,50; bonus bBaseAtk,3800; bonus bMatkRate,200; bonus2 bHPDrainRate,1000,100; bonus2 bSPDrainRate,1000,20; bonus bHealPower,200; bonus2 bAddRace,RC_NonBoss,100; bonus2 bAddRace,RC_Boss,100; skill "WZ_STORMGUST",10; Skill "WZ_METEOR",10; Skill "WZ_VERMILION",10; skill "GM_SANDMAN",1; },{},{}
|
1599,Angra_Manyu,Angra Manyu,5,1,,10,200,,2,0,0xFFFFFFFF,7,2,2,1,1,1,8,{ bonus bAllStats,50; bonus bBaseAtk,3800; bonus bMatkRate,200; bonus2 bHPDrainRate,1000,100; bonus2 bSPDrainRate,1000,20; bonus bHealPower,200; bonus2 bAddClass,Class_All,100; skill "WZ_STORMGUST",10; Skill "WZ_METEOR",10; Skill "WZ_VERMILION",10; skill "GM_SANDMAN",1; },{},{}
|
||||||
// Staffs
|
// Staffs
|
||||||
1601,Rod,Rod,5,50,,400,15,,1,3,0x00818315,7,2,2,1,1,1,10,{ bonus bMatkRate,15; },{},{}
|
1601,Rod,Rod,5,50,,400,15,,1,3,0x00818315,7,2,2,1,1,1,10,{ bonus bMatkRate,15; },{},{}
|
||||||
1602,Rod_,Rod,5,50,,400,15,,1,4,0x00818315,7,2,2,1,1,1,10,{ bonus bMatkRate,15; },{},{}
|
1602,Rod_,Rod,5,50,,400,15,,1,4,0x00818315,7,2,2,1,1,1,10,{ bonus bMatkRate,15; },{},{}
|
||||||
@ -871,25 +871,25 @@
|
|||||||
1623,Mighty_Staff_C,Mighty Staff,5,1,,0,165,,1,0,0x00818314,7,2,2,3,1,0,10,{ bonus bStr,10; bonus bInt,4; bonus bMatkRate,20; bonus bSPDrainValue,-1; },{},{}
|
1623,Mighty_Staff_C,Mighty Staff,5,1,,0,165,,1,0,0x00818314,7,2,2,3,1,0,10,{ bonus bStr,10; bonus bInt,4; bonus bMatkRate,20; bonus bSPDrainValue,-1; },{},{}
|
||||||
1624,Lich_Bone_Wand,Lich's Bone Wand,5,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; } },{},{}
|
1624,Lich_Bone_Wand,Lich's Bone Wand,5,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; } },{},{}
|
||||||
1625,Healing_Staff,Healing Staff,5,20,,400,10,,1,0,0x00008110,7,2,2,3,55,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{}
|
1625,Healing_Staff,Healing Staff,5,20,,400,10,,1,0,0x00008110,7,2,2,3,55,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{}
|
||||||
1626,Piercing_Staff,Piercing Staff,5,20,,500,80,,1,0,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus bIgnoreMdefRate,10+getrefine(); },{},{}
|
1626,Piercing_Staff,Piercing Staff,5,20,,500,80,,1,0,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus2 bIgnoreMdefClassRate,Class_Normal,10+getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,10+getrefine(); },{},{}
|
||||||
1627,Staffy,Staffy,5,20,,0,40,,1,0,0x00818314,7,2,2,1,0,0,10,{ bonus bMatkRate,15; bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1627,Staffy,Staffy,5,20,,0,40,,1,0,0x00818314,7,2,2,1,0,0,10,{ bonus bMatkRate,15; bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1628,Survival_Rod_C,Refined Survivor's Rod,5,1,,0,71,,1,0,0x00818314,7,2,2,3,0,0,10,{ bonus bDex,4; bonus bMatkRate,20; bonus bMaxHP,500; },{},{}
|
1628,Survival_Rod_C,Refined Survivor's Rod,5,1,,0,71,,1,0,0x00818314,7,2,2,3,0,0,10,{ bonus bDex,4; bonus bMatkRate,20; bonus bMaxHP,500; },{},{}
|
||||||
1629,Walking_Stick,Gentleman's Staff,5,20,,500,40,,1,1,0x00818314,7,2,2,4,50,1,10,{ bonus bMatkRate,15; bonus bDex,1; },{},{}
|
1629,Walking_Stick,Gentleman's Staff,5,20,,500,40,,1,1,0x00818314,7,2,2,4,50,1,10,{ bonus bMatkRate,15; bonus bDex,1; },{},{}
|
||||||
1630,Release_Of_Wish,Release of Wish,5,20,,500,30,,1,0,0x00810204,7,2,2,3,50,1,10,{ bonus bMatkRate,15; bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }"; },{},{}
|
1630,Release_Of_Wish,Release of Wish,5,20,,500,30,,1,0,0x00810204,7,2,2,3,50,1,10,{ bonus bMatkRate,15; bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }"; },{},{}
|
||||||
1631,Holy_Stick,Holy Stick,5,20,,500,50,,1,1,0x00008100,7,2,2,4,70,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus2 bCastrate,"AL_HOLYLIGHT",-25; bonus2 bCastrate,"PR_TURNUNDEAD",-25; bonus2 bCastrate,"PR_MAGNUS",-25; },{},{}
|
1631,Holy_Stick,Holy Stick,5,20,,500,50,,1,1,0x00008100,7,2,2,4,70,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus2 bCastrate,"AL_HOLYLIGHT",-25; bonus2 bCastrate,"PR_TURNUNDEAD",-25; bonus2 bCastrate,"PR_MAGNUS",-25; },{},{}
|
||||||
1632,BF_Staff1,Warlock's Magic Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRate,RC_DemiHuman,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
|
1632,BF_Staff1,Warlock's Magic Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1633,BF_Staff2,Warlock's Battle Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
|
1633,BF_Staff2,Warlock's Battle Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1634,BF_Staff3,Strong Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0; },{},{}
|
1634,BF_Staff3,Strong Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1635,BF_Staff4,Speedy Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0; },{},{}
|
1635,BF_Staff4,Speedy Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1636,Thorn_Staff,Thorn Staff of Darkness,5,20,,700,60,,1,0,0x00018314,2,2,2,4,75,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,20; bonus bIgnoreMdefRate,getrefine(); bonus bDelayRate,-(getrefine()*3/2); },{},{}
|
1636,Thorn_Staff,Thorn Staff of Darkness,5,20,,700,60,,1,0,0x00018314,2,2,2,4,75,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,20; bonus2 bIgnoreMdefClassRate,Class_Normal,getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,getrefine(); bonus bDelayRate,-(getrefine()*3/2); },{},{}
|
||||||
1637,Eraser,Eraser,5,20,,500,80,,1,0,0x00018314,2,2,2,4,70,1,10,{ bonus bMatkRate,20; bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; if( getrefine()>9 ) bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",3,5,BF_MAGIC,0; else bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",1,5,BF_MAGIC,0; },{},{}
|
1637,Eraser,Eraser,5,20,,500,80,,1,0,0x00018314,2,2,2,4,70,1,10,{ bonus bMatkRate,20; bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; if( getrefine()>9 ) bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",3,5,BF_MAGIC,0; else bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",1,5,BF_MAGIC,0; },{},{}
|
||||||
1638,Healing_Staff_C,Staff Of Healing,5,20,,0,10,,1,0,0x00008110,7,2,2,3,1,0,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{}
|
1638,Healing_Staff_C,Staff Of Healing,5,20,,0,10,,1,0,0x00008110,7,2,2,3,1,0,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{}
|
||||||
1639,N_Rod,Novice Rod,5,0,,0,15,,1,3,0x00818315,7,2,2,1,1,0,10,{ bonus bMatkRate,16; },{},{}
|
1639,N_Rod,Novice Rod,5,0,,0,15,,1,3,0x00818315,7,2,2,1,1,0,10,{ bonus bMatkRate,16; },{},{}
|
||||||
1640,Krieger_Onehand_Staff1,Glorious Arc Wand,5,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; } },{},{}
|
1640,Krieger_Onehand_Staff1,Glorious Arc Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRaceRate,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,5,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; } },{},{}
|
1641,Krieger_Onehand_Staff2,Glorious Cure Wand,5,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 bIgnoreMdefRaceRate,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,5,20,,0,100,,1,0,0x00818314,7,2,2,2,0,0,10,{ bonus bCastrate,-5; bonus bMatkRate,15; bonus bInt,2; },{},{}
|
1642,Staff_Of_Darkness,Staff Of Darkness,5,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,5,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; } },{},{}
|
1643,Dead_Tree_Cane,Dead Tree Cane,5,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,5,20,,500,80,,1,0,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus bIgnoreMdefRate,10+getrefine(); },{},{}
|
1644,Piercing_Staff_M,Staff of Piercing,5,20,,500,80,,1,0,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus2 bIgnoreMdefClassRate,Class_Normal,10+getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,10+getrefine(); },{},{}
|
||||||
1645,Lich_Bone_Wand_M,Lich's Bone Wand,5,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; } },{},{}
|
1645,Lich_Bone_Wand_M,Lich's Bone Wand,5,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,5,20,,500,30,,1,2,0x00010204,2,2,2,3,50,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus bMdef,getrefine(); bonus2 bSkillAtk,"WZ_STORMGUST",getrefine(); if(getrefine()>9) bonus2 bCastrate,"WZ_STORMGUST",-8; },{},{}
|
1646,La'cryma_Stick,La'cryma Stick,5,20,,500,30,,1,2,0x00010204,2,2,2,3,50,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus bMdef,getrefine(); bonus2 bSkillAtk,"WZ_STORMGUST",getrefine(); if(getrefine()>9) bonus2 bCastrate,"WZ_STORMGUST",-8; },{},{}
|
||||||
1647,Croce_Staff,Croce Staff,5,20,,500,30,,1,1,0x00008110,2,2,2,3,50,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bInt,4; bonus4 bAutoSpellOnSkill,"AL_HEAL","AL_BLESSING",getskilllv("AL_BLESSING")>1?getskilllv("AL_BLESSING"):1,20; },{},{}
|
1647,Croce_Staff,Croce Staff,5,20,,500,30,,1,1,0x00008110,2,2,2,3,50,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bInt,4; bonus4 bAutoSpellOnSkill,"AL_HEAL","AL_BLESSING",getskilllv("AL_BLESSING")>1?getskilllv("AL_BLESSING"):1,20; },{},{}
|
||||||
@ -928,7 +928,7 @@
|
|||||||
1732,Earth_Bow,Earth Bow,5,20,,1400,105,,5,1,0x000A0808,7,2,34,3,55,1,11,{},{},{}
|
1732,Earth_Bow,Earth Bow,5,20,,1400,105,,5,1,0x000A0808,7,2,34,3,55,1,11,{},{},{}
|
||||||
1733,Gust_Bow,Gust Bow,5,20,,1400,95,,5,1,0x000A0808,7,2,34,3,55,1,11,{},{},{}
|
1733,Gust_Bow,Gust Bow,5,20,,1400,95,,5,1,0x000A0808,7,2,34,3,55,1,11,{},{},{}
|
||||||
1734,Orc_Archer_Bow,Orc Archer Bow,5,20,,1600,120,,5,0,0x000A0808,7,2,34,4,65,1,11,{ bonus2 bAddMonsterDropItem,1753,200; },{},{}
|
1734,Orc_Archer_Bow,Orc Archer Bow,5,20,,1600,120,,5,0,0x000A0808,7,2,34,4,65,1,11,{ bonus2 bAddMonsterDropItem,1753,200; },{},{}
|
||||||
1735,Kkakkung,Kkakkung,5,20,,0,120,,5,0,0x000A0848,7,2,34,1,1,0,11,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1735,Kkakkung,Kkakkung,5,20,,0,120,,5,0,0x000A0848,7,2,34,1,1,0,11,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1736,Double_Bound,Double Bound,5,20,,900,70,,5,3,0x00000800,2,2,34,3,70,1,11,{ bonus3 bAutoSpell,"AC_DOUBLE",GetSkillLv("AC_DOUBLE"),10; },{},{}
|
1736,Double_Bound,Double Bound,5,20,,900,70,,5,3,0x00000800,2,2,34,3,70,1,11,{ bonus3 bAutoSpell,"AC_DOUBLE",GetSkillLv("AC_DOUBLE"),10; },{},{}
|
||||||
1737,Ixion_Wing,Ixion Wings,5,20,,300,135,,5,1,0x00000800,2,2,34,4,70,1,11,{ autobonus "{ bonus bAspdRate,7; }",10+(getrefine()*2),7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; bonus2 bAddSkillBlow,"AC_CHARGEARROW",3; },{},{}
|
1737,Ixion_Wing,Ixion Wings,5,20,,300,135,,5,1,0x00000800,2,2,34,4,70,1,11,{ autobonus "{ bonus bAspdRate,7; }",10+(getrefine()*2),7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; bonus2 bAddSkillBlow,"AC_CHARGEARROW",3; },{},{}
|
||||||
1738,BF_Bow1,Valorous Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
1738,BF_Bow1,Valorous Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
@ -992,7 +992,7 @@
|
|||||||
1826,Krieger_Knuckle1,Glorious Claw,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); } },{},{}
|
1826,Krieger_Knuckle1,Glorious Claw,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); } },{},{}
|
||||||
1827,Krieger_Knuckle2,Glorious Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; } },{},{}
|
1827,Krieger_Knuckle2,Glorious Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; } },{},{}
|
||||||
1828,Monk_Knuckle,Monk Knuckle,5,20,,0,150,,1,0,0x00008100,7,2,2,4,0,0,12,{ bonus bInt,2; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",25; },{},{}
|
1828,Monk_Knuckle,Monk Knuckle,5,20,,0,150,,1,0,0x00008100,7,2,2,4,0,0,12,{ bonus bInt,2; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",25; },{},{}
|
||||||
1829,Fist_C,Fist,5,0,,0,150,,1,0,0x00008100,7,2,2,3,1,0,12,{ bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
1829,Fist_C,Fist,5,0,,0,150,,1,0,0x00008100,7,2,2,3,1,0,12,{ bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
// Instruments
|
// Instruments
|
||||||
1901,Violin,Violin,5,4000,,700,50,,1,3,0x00080000,7,1,2,1,2,1,13,{},{},{}
|
1901,Violin,Violin,5,4000,,700,50,,1,3,0x00080000,7,1,2,1,2,1,13,{},{},{}
|
||||||
1902,Violin_,Violin,5,4000,,700,50,,1,4,0x00080000,7,1,2,1,2,1,13,{},{},{}
|
1902,Violin_,Violin,5,4000,,700,50,,1,4,0x00080000,7,1,2,1,2,1,13,{},{},{}
|
||||||
@ -1014,7 +1014,7 @@
|
|||||||
1918,Oriental_Lute,Oriental Lute,5,20,,1200,150,,1,0,0x00080000,7,1,2,4,65,1,13,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; },{},{}
|
1918,Oriental_Lute,Oriental Lute,5,20,,1200,150,,1,0,0x00080000,7,1,2,4,65,1,13,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; },{},{}
|
||||||
1919,Base_Guitar,Bass Guitar,5,20,,1500,130,,1,1,0x00080000,2,1,2,3,70,1,13,{ bonus bSPGainValue,3; bonus4 bAutoSpellWhenHit,"WZ_HEAVENDRIVE",3,30,1; bonus3 bAutoSpell,"NPC_WIDECONFUSE",2,100; },{},{}
|
1919,Base_Guitar,Bass Guitar,5,20,,1500,130,,1,1,0x00080000,2,1,2,3,70,1,13,{ bonus bSPGainValue,3; bonus4 bAutoSpellWhenHit,"WZ_HEAVENDRIVE",3,30,1; bonus3 bAutoSpell,"NPC_WIDECONFUSE",2,100; },{},{}
|
||||||
1920,Berserk_Guitar,Berserk Guitar,5,20,,1800,10,,1,0,0x00080000,2,1,2,4,70,1,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{}
|
1920,Berserk_Guitar,Berserk Guitar,5,20,,1800,10,,1,0,0x00080000,2,1,2,4,70,1,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{}
|
||||||
1921,Guh_Moon_Gom,Gun Moon Gom,5,20,,0,120,,1,0,0x00080000,7,1,2,1,0,0,13,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1921,Guh_Moon_Gom,Gun Moon Gom,5,20,,0,120,,1,0,0x00080000,7,1,2,1,0,0,13,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1922,Oriental_Lute_,Oriental Lute,5,20,,1200,150,,1,2,0x00080000,7,1,2,4,65,1,13,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; },{},{}
|
1922,Oriental_Lute_,Oriental Lute,5,20,,1200,150,,1,2,0x00080000,7,1,2,4,65,1,13,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; },{},{}
|
||||||
1923,BF_Instrument1,Valorous Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
1923,BF_Instrument1,Valorous Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1924,BF_Instrument2,Brave Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{}
|
1924,BF_Instrument2,Brave Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
@ -1022,7 +1022,7 @@
|
|||||||
1926,Harp_Of_Nepenthes,Harp of Nepenthes,5,20,,1000,120,,1,2,0x00080000,2,1,2,4,60,1,13,{ bonus bInt,2; if( getrefine()>9 ) { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,2000; } else { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,1000; } },{},{}
|
1926,Harp_Of_Nepenthes,Harp of Nepenthes,5,20,,1000,120,,1,2,0x00080000,2,1,2,4,60,1,13,{ bonus bInt,2; if( getrefine()>9 ) { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,2000; } else { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,1000; } },{},{}
|
||||||
1927,Krieger_Instrument1,Glorious Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,4,80,1,13,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{}
|
1927,Krieger_Instrument1,Glorious Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,4,80,1,13,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{}
|
||||||
1928,Berserk_Guitar_I,Spirited Guitar,5,0,,0,40,,1,0,0x00080000,2,1,2,4,0,0,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{}
|
1928,Berserk_Guitar_I,Spirited Guitar,5,0,,0,40,,1,0,0x00080000,2,1,2,4,0,0,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{}
|
||||||
1929,Guitar_C,Guitar,5,0,,0,177,,1,0,0x00080000,7,1,2,3,1,0,13,{ bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
1929,Guitar_C,Guitar,5,0,,0,177,,1,0,0x00080000,7,1,2,3,1,0,13,{ bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
// Whips
|
// Whips
|
||||||
1950,Rope,Rope,5,2500,,400,45,,2,3,0x00080000,7,0,2,1,3,1,14,{},{},{}
|
1950,Rope,Rope,5,2500,,400,45,,2,3,0x00080000,7,0,2,1,3,1,14,{},{},{}
|
||||||
1951,Rope_,Rope,5,2500,,400,45,,2,4,0x00080000,7,0,2,1,3,1,14,{},{},{}
|
1951,Rope_,Rope,5,2500,,400,45,,2,4,0x00080000,7,0,2,1,3,1,14,{},{},{}
|
||||||
@ -1049,7 +1049,7 @@
|
|||||||
1972,Electric_Eel,Electric Eel,5,20,,2000,100,,2,2,0x00080000,2,0,2,4,70,1,14,{ bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,2; bonus3 bAutoSpell,"WZ_JUPITEL",3,20; if(getrefine()>0) bonus3 bAutoSpell,"CG_ARROWVULCAN",getrefine(),50; },{},{}
|
1972,Electric_Eel,Electric Eel,5,20,,2000,100,,2,2,0x00080000,2,0,2,4,70,1,14,{ bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,2; bonus3 bAutoSpell,"WZ_JUPITEL",3,20; if(getrefine()>0) bonus3 bAutoSpell,"CG_ARROWVULCAN",getrefine(),50; },{},{}
|
||||||
1973,Sea_Witch_Foot,Sea Witch's Foot,5,20,,1500,110,,2,1,0x00080000,2,0,2,4,70,1,14,{ bonus bSPGainValue,5; bonus4 bAutoSpellWhenHit,"WZ_FROSTNOVA",3,50,1; bonus3 bAutoSpell,"NPC_WIDESILENCE",2,100; },{},{}
|
1973,Sea_Witch_Foot,Sea Witch's Foot,5,20,,1500,110,,2,1,0x00080000,2,0,2,4,70,1,14,{ bonus bSPGainValue,5; bonus4 bAutoSpellWhenHit,"WZ_FROSTNOVA",3,50,1; bonus3 bAutoSpell,"NPC_WIDESILENCE",2,100; },{},{}
|
||||||
1974,Carrot_Whip,Carrot Whip,5,20,,1300,185,,2,0,0x00080000,2,0,2,4,70,1,14,{ if(getrefine()>0) bonus3 bAutoSpell,"AL_INCAGI",getrefine(),10; },{},{}
|
1974,Carrot_Whip,Carrot Whip,5,20,,1300,185,,2,0,0x00080000,2,0,2,4,70,1,14,{ if(getrefine()>0) bonus3 bAutoSpell,"AL_INCAGI",getrefine(),10; },{},{}
|
||||||
1975,Queen_Is_Whip,Queen Is Whip,5,20,,0,120,,2,0,0x00080000,7,0,2,1,0,0,14,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
1975,Queen_Is_Whip,Queen Is Whip,5,20,,0,120,,2,0,0x00080000,7,0,2,1,0,0,14,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
1976,Queen's_Whip_,Queen's Whip,5,20,,1100,150,,2,2,0x00080000,7,0,2,4,65,1,14,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{}
|
1976,Queen's_Whip_,Queen's Whip,5,20,,1100,150,,2,2,0x00080000,7,0,2,4,65,1,14,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{}
|
||||||
1977,BF_Whip1,Valorous Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
1977,BF_Whip1,Valorous Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
1978,BF_Whip2,Brave Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{}
|
1978,BF_Whip2,Brave Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
@ -1057,11 +1057,11 @@
|
|||||||
1980,Whip_Of_Balance,Whip of Balance,5,20,,700,110,,2,3,0x00080000,2,0,2,3,70,1,14,{ bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"DC_THROWARROW",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3; },{},{}
|
1980,Whip_Of_Balance,Whip of Balance,5,20,,700,110,,2,3,0x00080000,2,0,2,3,70,1,14,{ bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"DC_THROWARROW",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3; },{},{}
|
||||||
1981,Krieger_Whip1,Glorious Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,4,80,1,14,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{}
|
1981,Krieger_Whip1,Glorious Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,4,80,1,14,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{}
|
||||||
1982,Phenomena_Whip,Phenomena Whip,5,20,,0,160,,2,0,0x00080000,7,0,2,4,0,0,14,{ bonus bDex,2; bonus2 bSkillAtk,"DC_THROWARROW",25; },{},{}
|
1982,Phenomena_Whip,Phenomena Whip,5,20,,0,160,,2,0,0x00080000,7,0,2,4,0,0,14,{ bonus bDex,2; bonus2 bSkillAtk,"DC_THROWARROW",25; },{},{}
|
||||||
1983,Rante_C,Rante Whip,5,0,,0,170,,2,0,0x00080000,7,0,2,3,1,0,14,{ bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
1983,Rante_C,Rante Whip,5,0,,0,170,,2,0,0x00080000,7,0,2,3,1,0,14,{ bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
// Additional 2-Handed Staffs
|
// Additional 2-Handed Staffs
|
||||||
2000,Destruction_Rod,Staff of Destruction,5,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; },{},{}
|
2000,Destruction_Rod,Staff of Destruction,5,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; },{},{}
|
||||||
2001,Divine_Cross,Divine Cross,5,20,,1500,120,,1,0,0x00008100,7,2,34,4,70,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15; },{},{}
|
2001,Divine_Cross,Divine Cross,5,20,,1500,120,,1,0,0x00008100,7,2,34,4,70,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15; },{},{}
|
||||||
2002,Krieger_Twohand_Staff1,Glorious Destruction Staff,5,20,,0,70,,1,0,0x00018314,7,2,34,4,80,1,23,{ bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bIgnoreMdefRate,RC_DemiHuman,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; } },{},{}
|
2002,Krieger_Twohand_Staff1,Glorious Destruction Staff,5,20,,0,70,,1,0,0x00018314,7,2,34,4,80,1,23,{ bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; } },{},{}
|
||||||
2003,Destruction_Rod_M,Staff of Destruction,5,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; },{},{}
|
2003,Destruction_Rod_M,Staff of Destruction,5,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,5,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; }"; },{},{}
|
2004,Kronos,Kronos,5,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,5,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; }"; },{},{}
|
2005,Dea_Staff,Dea Staff,5,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; }"; },{},{}
|
||||||
@ -1094,13 +1094,13 @@
|
|||||||
2124,Thorny_Buckler,Thorny Buckler,4,20,,1000,,5,,1,0xFFFFFFFE,2,2,32,,55,1,2,{ bonus bMdef,2; },{},{}
|
2124,Thorny_Buckler,Thorny Buckler,4,20,,1000,,5,,1,0xFFFFFFFE,2,2,32,,55,1,2,{ bonus bMdef,2; },{},{}
|
||||||
2125,Strong_Shield,Strong Shield,4,20,,2500,,4,,1,0xFFFFFFFE,2,2,32,,75,1,4,{ bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{}
|
2125,Strong_Shield,Strong Shield,4,20,,2500,,4,,1,0xFFFFFFFE,2,2,32,,75,1,4,{ bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{}
|
||||||
2126,Guyak_Shield,Guyak Shield,4,20,,700,,3,,0,0xFFFFFFFE,7,2,32,,75,1,2,{ bonus bMdef,3; },{},{}
|
2126,Guyak_Shield,Guyak Shield,4,20,,700,,3,,0,0xFFFFFFFE,7,2,32,,75,1,2,{ bonus bMdef,3; },{},{}
|
||||||
2127,Secular_Mission,Secular Mission,4,20,,0,,10,,0,0xFFFFFFFF,7,2,32,,0,0,4,{ bonus2 bSubRace,RC_NonBoss,25; bonus2 bSubRace,RC_Boss,25; },{},{}
|
2127,Secular_Mission,Secular Mission,4,20,,0,,10,,0,0xFFFFFFFF,7,2,32,,0,0,4,{ bonus2 bSubClass,Class_All,25; },{},{}
|
||||||
2128,Herald_Of_GOD_,Sacred Mission,4,128000,,1600,,5,,1,0x00004000,7,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,0; },{},{}
|
2128,Herald_Of_GOD_,Sacred Mission,4,128000,,1600,,5,,1,0x00004000,7,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,0; },{},{}
|
||||||
2129,Exorcism_Bible,Exorcism Bible,4,20,,600,,5,,0,0x00008100,7,2,32,,50,1,5,{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bInt,1; },{},{}
|
2129,Exorcism_Bible,Exorcism Bible,4,20,,600,,5,,0,0x00008100,7,2,32,,50,1,5,{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bInt,1; },{},{}
|
||||||
2130,Cross_Shield,Cross Shield,4,20,,2000,,6,,1,0x00004000,7,2,32,,80,1,4,{ bonus bStr,1; bonus2 bSkillAtk,"PA_SHIELDCHAIN",30; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",30; bonus bUseSPrate,10; },{},{}
|
2130,Cross_Shield,Cross Shield,4,20,,2000,,6,,1,0x00004000,7,2,32,,80,1,4,{ bonus bStr,1; bonus2 bSkillAtk,"PA_SHIELDCHAIN",30; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",30; bonus bUseSPrate,10; },{},{}
|
||||||
2131,Magic_Study_Vol1,Magic Bible Vol1,4,20,,1000,,2,,1,0x00810204,2,2,32,,70,1,5,{ bonus bMdef,3; bonus bInt,2; bonus2 bAddEffWhenHit,Eff_Stun,1000; },{},{}
|
2131,Magic_Study_Vol1,Magic Bible Vol1,4,20,,1000,,2,,1,0x00810204,2,2,32,,70,1,5,{ bonus bMdef,3; bonus bInt,2; bonus2 bAddEffWhenHit,Eff_Stun,1000; },{},{}
|
||||||
2132,Shelter_Resistance,Shell Of Resistance,4,20,,0,,9,,0,0xFFFFFFFF,2,2,32,,0,0,2,{ bonus2 bSubEle,Ele_Neutral,20; bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; bonus bShortWeaponDamageReturn,1; },{},{}
|
2132,Shelter_Resistance,Shell Of Resistance,4,20,,0,,9,,0,0xFFFFFFFF,2,2,32,,0,0,2,{ bonus2 bSubEle,Ele_Neutral,20; bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; bonus bShortWeaponDamageReturn,1; },{},{}
|
||||||
2133,Tournament_Shield,Tournament Shield,4,20,,1000,,5,,1,0x00004082,2,2,32,,50,1,4,{ bonus2 bAddRace,RC_NonBoss,1; bonus2 bAddRace,RC_Boss,1; if( Class==Job_Lord_Knight ) bonus bAspdRate,-5; },{},{}
|
2133,Tournament_Shield,Tournament Shield,4,20,,1000,,5,,1,0x00004082,2,2,32,,50,1,4,{ bonus2 bAddClass,Class_All,1; if( Class==Job_Lord_Knight ) bonus bAspdRate,-5; },{},{}
|
||||||
2134,Shield_Of_Naga,Shield of Naga,4,20,,500,,3,,1,0x00CFFF80,2,2,32,,70,1,2,{ bonus bMdef,3; autobonus2 "{ bonus bShortWeaponDamageReturn,(getrefine()*3); }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD; }"; },{},{}
|
2134,Shield_Of_Naga,Shield of Naga,4,20,,500,,3,,1,0x00CFFF80,2,2,32,,70,1,2,{ bonus bMdef,3; autobonus2 "{ bonus bShortWeaponDamageReturn,(getrefine()*3); }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD; }"; },{},{}
|
||||||
2135,Shadow_Guard,Shadow Guard,4,20,,800,,4,,1,0x00020000,2,2,32,,70,1,2,{},{},{}
|
2135,Shadow_Guard,Shadow Guard,4,20,,800,,4,,1,0x00020000,2,2,32,,70,1,2,{},{},{}
|
||||||
2136,Cracked_Buckler,Cracked Buckler,4,0,,0,,5,,0,0xFFFFFFFF,7,2,32,,0,0,2,{ bonus bAgi,2; bonus2 bAddEle,Ele_Neutral,-10; bonus3 bAutoSpellWhenHit,"PR_KYRIE",1,50; bonus bMdef,1; },{},{}
|
2136,Cracked_Buckler,Cracked Buckler,4,0,,0,,5,,0,0xFFFFFFFF,7,2,32,,0,0,2,{ bonus bAgi,2; bonus2 bAddEle,Ele_Neutral,-10; bonus3 bAutoSpellWhenHit,"PR_KYRIE",1,50; bonus bMdef,1; },{},{}
|
||||||
@ -1293,7 +1293,7 @@
|
|||||||
2380,Medic_Robe,Medic's Robe,4,10,,0,,3,,1,0x00008110,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
|
2380,Medic_Robe,Medic's Robe,4,10,,0,,3,,1,0x00008110,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
|
||||||
2381,Elite_Archer_Suit,Elite Archer Suit,4,10,,0,,3,,1,0x00080808,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
|
2381,Elite_Archer_Suit,Elite Archer Suit,4,10,,0,,3,,1,0x00080808,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
|
||||||
2382,Elite_Shooter_Suit,Elite Shooter Suit,4,10,,0,,3,,1,0x41000000,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
|
2382,Elite_Shooter_Suit,Elite Shooter Suit,4,10,,0,,3,,1,0x41000000,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; },{},{}
|
||||||
2383,Brynhild,Brynhild,4,20,,400,,10,,0,0xFFFFFFFF,7,2,16,,94,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; bonus bMatkRate,10; bonus bUnbreakableArmor,0; bonus bNoKnockback,0; },{},{}
|
2383,Brynhild,Brynhild,4,20,,400,,10,,0,0xFFFFFFFF,7,2,16,,94,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor,0; bonus bNoKnockback,0; },{},{}
|
||||||
2384,Spritual_Tunic,Spiritual Tunic,4,20,,0,,10,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bMaxHP,800; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; },{},{}
|
2384,Spritual_Tunic,Spiritual Tunic,4,20,,0,,10,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bMaxHP,800; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; },{},{}
|
||||||
2385,Recuperative_Armor,Recuperative Armor,4,20,,0,,12,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bNoRegen,1; bonus bNoRegen,2; bonus bHPGainValue,60; bonus bSPGainValue,6; bonus bMagicHPGainValue,60; bonus bMagicSPGainValue,6; },{},{ heal 0,-100; }
|
2385,Recuperative_Armor,Recuperative Armor,4,20,,0,,12,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bNoRegen,1; bonus bNoRegen,2; bonus bHPGainValue,60; bonus bSPGainValue,6; bonus bMagicHPGainValue,60; bonus bMagicSPGainValue,6; },{},{ heal 0,-100; }
|
||||||
2386,Chameleon_Armor,Chameleon Armor,4,20,,1700,,5,,0,0x00CFFF80,2,2,16,,70,1,0,{ bonus bMaxHP,(BaseLevel*7); bonus bMaxSP,(BaseLevel/2); autobonus2 "{ bonus bNoMagicDamage,100; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; }"; if( BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte ) bonus bMdef,5; else if( BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief ) bonus bDef,3; },{},{}
|
2386,Chameleon_Armor,Chameleon Armor,4,20,,1700,,5,,0,0x00CFFF80,2,2,16,,70,1,0,{ bonus bMaxHP,(BaseLevel*7); bonus bMaxSP,(BaseLevel/2); autobonus2 "{ bonus bNoMagicDamage,100; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; }"; if( BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte ) bonus bMdef,5; else if( BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief ) bonus bDef,3; },{},{}
|
||||||
@ -1462,7 +1462,7 @@
|
|||||||
2641,Fashionable_Sack,Fashion Hip Sack,4,20,,700,,0,,0,0x00040420,7,2,136,,50,0,0,{ bonus bStr,2; },{},{}
|
2641,Fashionable_Sack,Fashion Hip Sack,4,20,,700,,0,,0,0x00040420,7,2,136,,50,0,0,{ bonus bStr,2; },{},{}
|
||||||
2642,Serin's_Gold_Ring,Serin's Gold Ring,4,20,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
|
2642,Serin's_Gold_Ring,Serin's Gold Ring,4,20,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
|
||||||
2643,Serin's_Gold_Ring_,Serin's Gold Ring,4,45000,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
|
2643,Serin's_Gold_Ring_,Serin's Gold Ring,4,45000,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
|
||||||
2644,The_Sign_,The Sign,4,2,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; },{},{}
|
2644,The_Sign_,The Sign,4,2,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; },{},{}
|
||||||
2645,Moonlight_Ring,Moonlight Ring,4,40000,,200,,0,,0,0x02021040,7,2,136,,60,0,0,{ bonus bMdef,2; },{},{}
|
2645,Moonlight_Ring,Moonlight Ring,4,40000,,200,,0,,0,0x02021040,7,2,136,,60,0,0,{ bonus bMdef,2; },{},{}
|
||||||
2646,Bunch_Of_Carnation,Bunch of Carnations,4,2,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAllStats,3; },{},{}
|
2646,Bunch_Of_Carnation,Bunch of Carnations,4,2,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAllStats,3; },{},{}
|
||||||
2647,Nile_Rose,Nile Rose,4,2,,100,,0,,1,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bMaxHP,10; },{},{}
|
2647,Nile_Rose,Nile Rose,4,2,,100,,0,,1,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bMaxHP,10; },{},{}
|
||||||
@ -1538,12 +1538,12 @@
|
|||||||
2717,Pocket_Watch_,Pocket Watch,4,20,,200,,0,,0,0x00810204,7,2,136,,80,0,0,{},{},{}
|
2717,Pocket_Watch_,Pocket Watch,4,20,,200,,0,,0,0x00810204,7,2,136,,80,0,0,{},{},{}
|
||||||
2718,Lunatic_Brooch,Lunatic Brooch,4,20,,200,,0,,1,0x00080808,7,2,136,,65,0,0,{},{},{}
|
2718,Lunatic_Brooch,Lunatic Brooch,4,20,,200,,0,,1,0x00080808,7,2,136,,65,0,0,{},{},{}
|
||||||
2719,Iron_Wrist,Iron Wrist,4,20,,700,,1,,0,0x000444A2,7,2,136,,50,0,0,{ bonus2 bSkillAtk,"SM_BASH",6; bonus2 bSkillAtk,"MC_MAMMONITE",6; },{},{}
|
2719,Iron_Wrist,Iron Wrist,4,20,,700,,1,,0,0x000444A2,7,2,136,,50,0,0,{ bonus2 bSkillAtk,"SM_BASH",6; bonus2 bSkillAtk,"MC_MAMMONITE",6; },{},{}
|
||||||
2720,Medal_Swordman,Medal of Honor,4,20,,0,,1,,0,0x00404082,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bHit,10; bonus bMaxHP,500; bonus bMaxSP,50; bonus3 bAddEff,Eff_Stun,100,ATF_SHORT; },{},{}
|
2720,Medal_Swordman,Medal of Honor,4,20,,0,,1,,0,0x00404082,7,2,136,,70,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bHit,10; bonus bMaxHP,500; bonus bMaxSP,50; bonus3 bAddEff,Eff_Stun,100,ATF_SHORT; },{},{}
|
||||||
2721,Medal_Thief,Medal of Honor,4,20,,0,,1,,0,0x02021040,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bFlee,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Poison,100,ATF_SHORT; },{},{}
|
2721,Medal_Thief,Medal of Honor,4,20,,0,,1,,0,0x02021040,7,2,136,,70,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bFlee,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Poison,100,ATF_SHORT; },{},{}
|
||||||
2722,Medal_Acolyte,Medal of Honor,4,20,,0,,1,,0,0x00008110,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bMdef,6; bonus bMaxHP,600; bonus3 bAddEff,Eff_Silence,100,ATF_SHORT; },{},{}
|
2722,Medal_Acolyte,Medal of Honor,4,20,,0,,1,,0,0x00008110,7,2,136,,70,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bMdef,6; bonus bMaxHP,600; bonus3 bAddEff,Eff_Silence,100,ATF_SHORT; },{},{}
|
||||||
2723,Medal_Mage,Medal of Honor,4,20,,0,,1,,0,0x00810204,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bMdef,6; bonus bMaxHP,600; bonus2 bAddEffWhenHit,Eff_Stone,100; },{},{}
|
2723,Medal_Mage,Medal of Honor,4,20,,0,,1,,0,0x00810204,7,2,136,,70,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bMdef,6; bonus bMaxHP,600; bonus2 bAddEffWhenHit,Eff_Stone,100; },{},{}
|
||||||
2724,Medal_Archer,Medal of Honor,4,20,,0,,1,,0,0x00080808,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Blind,100,ATF_LONG; },{},{}
|
2724,Medal_Archer,Medal of Honor,4,20,,0,,1,,0,0x00080808,7,2,136,,70,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Blind,100,ATF_LONG; },{},{}
|
||||||
2725,Medal_Merchant,Medal of Honor,4,20,,0,,1,,0,0x00040420,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bAspdRate,10; bonus bMaxHP,500; bonus bMaxSP,50; bonus3 bAddEff,Eff_Curse,100,ATF_SHORT; },{},{}
|
2725,Medal_Merchant,Medal of Honor,4,20,,0,,1,,0,0x00040420,7,2,136,,70,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bAspdRate,10; bonus bMaxHP,500; bonus bMaxSP,50; bonus3 bAddEff,Eff_Curse,100,ATF_SHORT; },{},{}
|
||||||
2726,Icarus_Wing,Icarus Wings,4,20,,100,,0,,0,0x00000800,2,2,136,,70,0,0,{ bonus bMaxSP,50; bonus bDex,3; },{},{}
|
2726,Icarus_Wing,Icarus Wings,4,20,,100,,0,,0,0x00000800,2,2,136,,70,0,0,{ bonus bMaxSP,50; bonus bDex,3; },{},{}
|
||||||
2727,Bowman_Scarf,Bowman Scarf,4,20,,200,,0,,0,0x00000800,2,2,136,,70,0,0,{ bonus bMaxSP,50; bonus bDex,3; },{},{}
|
2727,Bowman_Scarf,Bowman Scarf,4,20,,200,,0,,0,0x00000800,2,2,136,,70,0,0,{ bonus bMaxSP,50; bonus bDex,3; },{},{}
|
||||||
2728,Cursed_Hand,Cursed Hand,4,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; bonus bHit,10; bonus bHPrecovRate,20; },{},{}
|
2728,Cursed_Hand,Cursed Hand,4,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; bonus bHit,10; bonus bHPrecovRate,20; },{},{}
|
||||||
@ -1551,14 +1551,14 @@
|
|||||||
2730,Morroc_Seal,Seal of Continental Guard,4,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bMaxHP,50; bonus bAspdRate,3; },{},{}
|
2730,Morroc_Seal,Seal of Continental Guard,4,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bMaxHP,50; bonus bAspdRate,3; },{},{}
|
||||||
2731,Morroc_Charm_Stone,Rune Spellstone,4,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bMaxSP,50; bonus bCastRate,-1; },{},{}
|
2731,Morroc_Charm_Stone,Rune Spellstone,4,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bMaxSP,50; bonus bCastRate,-1; },{},{}
|
||||||
2732,Morroc_Ring,Death Loop,4,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bCritical,5; },{},{}
|
2732,Morroc_Ring,Death Loop,4,20,,50,,0,,1,0xFFFFFFFE,7,2,136,,80,0,0,{ bonus bCritical,5; },{},{}
|
||||||
2733,Medal_Gunner,Sheriff Badge,4,20,,0,,1,,0,0x41000000,7,2,136,,70,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Blind,100,ATF_LONG; },{},{}
|
2733,Medal_Gunner,Sheriff Badge,4,20,,0,,1,,0,0x41000000,7,2,136,,70,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bCritical,10; bonus bMaxHP,300; bonus bMaxSP,80; bonus3 bAddEff,Eff_Blind,100,ATF_LONG; },{},{}
|
||||||
2734,Directive_A,Directive,4,0,,0,,1,,0,0x00000001,7,2,136,,0,0,0,{},{},{}
|
2734,Directive_A,Directive,4,0,,0,,1,,0,0x00000001,7,2,136,,0,0,0,{},{},{}
|
||||||
2735,Directive_B,Directive,4,0,,0,,1,,0,0x00000001,7,2,136,,0,0,0,{},{},{}
|
2735,Directive_B,Directive,4,0,,0,,1,,0,0x00000001,7,2,136,,0,0,0,{},{},{}
|
||||||
2736,Navel_Ring,Navel Ring,4,20,,100,,0,,0,0xFFFFFFFE,7,2,136,,75,0,0,{ bonus bDex,3; bonus bLuk,3; bonus bMdef,2; },{},{}
|
2736,Navel_Ring,Navel Ring,4,20,,100,,0,,0,0xFFFFFFFE,7,2,136,,75,0,0,{ bonus bDex,3; bonus bLuk,3; bonus bMdef,2; },{},{}
|
||||||
2737,Foot_Ring,Foot Ring,4,20,,150,,0,,0,0xFFFFFFFE,7,2,136,,75,0,0,{ bonus bVit,3; bonus bMaxHPRate,10; },{},{}
|
2737,Foot_Ring,Foot Ring,4,20,,150,,0,,0,0xFFFFFFFE,7,2,136,,75,0,0,{ bonus bVit,3; bonus bMaxHPRate,10; },{},{}
|
||||||
2738,Shiny_Coin,Shiny Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddRace,RC_NonBoss,6; bonus2 bAddRace,RC_Boss,6; bonus bMatkRate,6; },{},{}
|
2738,Shiny_Coin,Shiny Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,6; bonus bMatkRate,6; },{},{}
|
||||||
2739,Ordinary_Coin,Ordinary Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; },{},{}
|
2739,Ordinary_Coin,Ordinary Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; },{},{}
|
||||||
2740,Rusty_Coin,Rusty Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; },{},{}
|
2740,Rusty_Coin,Rusty Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; },{},{}
|
||||||
2741,All_In_One_Ring,All In One Ring,4,20,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAllStats,1; bonus bNoCastCancel,0; bonus bCastRate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1; },{},{}
|
2741,All_In_One_Ring,All In One Ring,4,20,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAllStats,1; bonus bNoCastCancel,0; bonus bCastRate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1; },{},{}
|
||||||
//2742,Lucky_Clip,Lucky Clip,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
|
//2742,Lucky_Clip,Lucky Clip,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
|
||||||
2743,Angelic_Ring,Angelic Ring,4,20,,100,,0,,0,0x00CFFF80,2,2,136,,70,0,0,{ bonus bInt,2; bonus bDex,1; bonus bMdef,2; autobonus3 "{ bonus bHealPower,20; }",50,3000,"AL_HEAL"; autobonus3 "{ bonus bHealPower,20; }",50,3000,"AM_POTIONPITCHER"; autobonus3 "{ bonus bHealPower,20; }",50,3000,"PR_SANCTUARY"; },{},{}
|
2743,Angelic_Ring,Angelic Ring,4,20,,100,,0,,0,0x00CFFF80,2,2,136,,70,0,0,{ bonus bInt,2; bonus bDex,1; bonus bMdef,2; autobonus3 "{ bonus bHealPower,20; }",50,3000,"AL_HEAL"; autobonus3 "{ bonus bHealPower,20; }",50,3000,"AM_POTIONPITCHER"; autobonus3 "{ bonus bHealPower,20; }",50,3000,"PR_SANCTUARY"; },{},{}
|
||||||
@ -1570,7 +1570,7 @@
|
|||||||
2749,Linen_Glove,Linen Glove,4,20,,120,,1,,1,0x00CFFF80,2,2,136,,90,0,0,{ bonus bMdef,2; bonus bAgi,2; bonus bDex,1; },{},{}
|
2749,Linen_Glove,Linen Glove,4,20,,120,,1,,1,0x00CFFF80,2,2,136,,90,0,0,{ bonus bMdef,2; bonus bAgi,2; bonus bDex,1; },{},{}
|
||||||
//2750,Summer_Night_Dream,Summer Night Dream,4,20,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
|
//2750,Summer_Night_Dream,Summer Night Dream,4,20,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
|
||||||
2751,Academy_Badge,Academy Of Badge,4,0,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ if(BaseLevel<80) { bonus bMaxHP,400; bonus bMaxSP,200; } },{},{}
|
2751,Academy_Badge,Academy Of Badge,4,0,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ if(BaseLevel<80) { bonus bMaxHP,400; bonus bMaxSP,200; } },{},{}
|
||||||
2752,Praxinus_C,Praccsinos,4,2,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkrate,5; },{},{}
|
2752,Praxinus_C,Praccsinos,4,2,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkrate,5; },{},{}
|
||||||
2753,Beholder_Ring,Beholder Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Formless,15; },{},{}
|
2753,Beholder_Ring,Beholder Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Formless,15; },{},{}
|
||||||
2754,Hallow_Ring,Hallow Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_undead,15; },{},{}
|
2754,Hallow_Ring,Hallow Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_undead,15; },{},{}
|
||||||
2755,Clamorous_Ring,Clamorous Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Brute,15; },{},{}
|
2755,Clamorous_Ring,Clamorous Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Brute,15; },{},{}
|
||||||
@ -1607,16 +1607,16 @@
|
|||||||
2786,Spiritual_Ring_M,Spiritual Ring,4,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bInt,2; bonus bDex,1; },{},{}
|
2786,Spiritual_Ring_M,Spiritual Ring,4,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bInt,2; bonus bDex,1; },{},{}
|
||||||
2787,Waterdrop_Brooch,Waterdrop Brooch,4,20,,200,,0,,1,0xFFFFFFFE,2,2,136,,75,0,0,{ bonus2 bSubEle,Ele_Water,5; bonus bMaxHP,80; bonus bMdef,2; },{},{}
|
2787,Waterdrop_Brooch,Waterdrop Brooch,4,20,,200,,0,,1,0xFFFFFFFE,2,2,136,,75,0,0,{ bonus2 bSubEle,Ele_Water,5; bonus bMaxHP,80; bonus bMdef,2; },{},{}
|
||||||
2788,Bradium_Earing,Bradium Earring,4,20,,200,,0,,1,0xFFFFFFFE,2,2,136,,60,0,0,{ bonus bMatkRate,2; bonus bInt,1; bonus bDex,1; },{},{}
|
2788,Bradium_Earing,Bradium Earring,4,20,,200,,0,,1,0xFFFFFFFE,2,2,136,,60,0,0,{ bonus bMatkRate,2; bonus bInt,1; bonus bDex,1; },{},{}
|
||||||
2789,Bradium_Ring,Bradium Ring,4,20,,200,,0,,1,0xFFFFFFFE,2,2,136,,60,0,0,{ bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bStr,1; bonus bVit,1; },{},{}
|
2789,Bradium_Ring,Bradium Ring,4,20,,200,,0,,1,0xFFFFFFFE,2,2,136,,60,0,0,{ bonus2 bAddClass,Class_All,2; bonus bStr,1; bonus bVit,1; },{},{}
|
||||||
2790,Bradium_Brooch,Bradium Brooch,4,20,,200,,0,,1,0xFFFFFFFE,2,2,136,,60,0,0,{ bonus bFlee,4; bonus bAspdRate,2; bonus bAgi,1; },{},{}
|
2790,Bradium_Brooch,Bradium Brooch,4,20,,200,,0,,1,0xFFFFFFFE,2,2,136,,60,0,0,{ bonus bFlee,4; bonus bAspdRate,2; bonus bAgi,1; },{},{}
|
||||||
2791,Just_Got_Fish,Fresh Fish,4,20,,500,,0,,1,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus bHit,3; },{},{}
|
2791,Just_Got_Fish,Fresh Fish,4,20,,500,,0,,1,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus bHit,3; },{},{}
|
||||||
//2792,Ring_Of_Flame_Lord_I,Ring of Flame Lord,4,0,,0,,0,,0,0x00CFFF80,2,2,136,,0,0,0,{ bonus bStr,2; bonus bVit,1; bonus bBaseAtk,15; bonus2 bSubEle,Ele_Fire,10; bonus3 bAutoSpell,"CH_SOULCOLLECT",1,30; bonus3 bAutoSpell,"MO_EXPLOSIONSPIRITS",1,10; bonus3 bAutoSpell,"PA_PRESSURE",2,30; bonus3 bAutoSpell,"MG_FIREBALL",1,150; bonus3 bAutoSpell,"KN_BOWLINGBASH",5,20; },{},{}
|
//2792,Ring_Of_Flame_Lord_I,Ring of Flame Lord,4,0,,0,,0,,0,0x00CFFF80,2,2,136,,0,0,0,{ bonus bStr,2; bonus bVit,1; bonus bBaseAtk,15; bonus2 bSubEle,Ele_Fire,10; bonus3 bAutoSpell,"CH_SOULCOLLECT",1,30; bonus3 bAutoSpell,"MO_EXPLOSIONSPIRITS",1,10; bonus3 bAutoSpell,"PA_PRESSURE",2,30; bonus3 bAutoSpell,"MG_FIREBALL",1,150; bonus3 bAutoSpell,"KN_BOWLINGBASH",5,20; },{},{}
|
||||||
//2793,Ring_Of_Resonance_I,Ring of Resonance,4,0,,0,,2,,0,0x00CFFF80,2,2,136,,0,0,0,{ bonus bAgi,2; bonus bVit,1; bonus bMdef,2; bonus4 bAutoSpellWhenHit,"WZ_QUAGMIRE",1,50,0; bonus3 bAutoSpellWhenHit,"AS_SPLASHER",10,20; bonus3 bAutoSpellWhenHit,"AL_HEAL",10,30; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",3,20; bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",5,20; },{},{}
|
//2793,Ring_Of_Resonance_I,Ring of Resonance,4,0,,0,,2,,0,0x00CFFF80,2,2,136,,0,0,0,{ bonus bAgi,2; bonus bVit,1; bonus bMdef,2; bonus4 bAutoSpellWhenHit,"WZ_QUAGMIRE",1,50,0; bonus3 bAutoSpellWhenHit,"AS_SPLASHER",10,20; bonus3 bAutoSpellWhenHit,"AL_HEAL",10,30; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",3,20; bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",5,20; },{},{}
|
||||||
2794,Magic_Stone_Ring,Magic Stone Ring,4,0,,0,,0,,1,0x00004082,7,2,136,,99,0,0,{ bonus bStr,2; },{},{}
|
2794,Magic_Stone_Ring,Magic Stone Ring,4,0,,0,,0,,1,0x00004082,7,2,136,,99,0,0,{ bonus bStr,2; },{},{}
|
||||||
2795,Green_Apple_Ring,Green Apple Ring,4,0,,0,,0,,0,0xFFFFFFFE,7,2,136,,99,0,0,{ bonus bAllStats,6; if(JobLevel <30) { bonus bAllStats,(JobLevel/5); } },{},{}
|
2795,Green_Apple_Ring,Green Apple Ring,4,0,,0,,0,,0,0xFFFFFFFE,7,2,136,,99,0,0,{ bonus bAllStats,6; if(JobLevel <30) { bonus bAllStats,(JobLevel/5); } },{},{}
|
||||||
2796,Magical_Stone,Rocks,4,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2047,10; bonus2 bAddDefClass,2048,-10; bonus3 bAddClassDropItem,6152,2047,70; },{},{}
|
2796,Magical_Stone,Rocks,4,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2047,10; bonus2 bAddDefMonster,2048,-10; bonus3 bAddClassDropItem,6152,2047,70; },{},{}
|
||||||
2797,Magical_Stone_,Rocks,4,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2049,10; bonus2 bAddDefClass,2050,-10; bonus3 bAddClassDropItem,6151,2049,70; },{},{}
|
2797,Magical_Stone_,Rocks,4,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2049,10; bonus2 bAddDefMonster,2050,-10; bonus3 bAddClassDropItem,6151,2049,70; },{},{}
|
||||||
2798,Will_Of_Exhausted_Angel,Will Of Exhausted Angel,4,0,,200,,0,,0,0x00008100,7,2,136,,99,0,0,{ if(strcharinfo(3)=="job3_arch02") { bonus2 bAddDefClass,1761,50; bonus2 bAddDefClass,1762,50; } },{},{}
|
2798,Will_Of_Exhausted_Angel,Will Of Exhausted Angel,4,0,,200,,0,,0,0x00008100,7,2,136,,99,0,0,{ if(strcharinfo(3)=="job3_arch02") { bonus2 bAddDefMonster,1761,50; bonus2 bAddDefMonster,1762,50; } },{},{}
|
||||||
2799,Kuirpenring,Kuirpenring,4,0,,100,,0,,1,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bMdef,1; },{},{}
|
2799,Kuirpenring,Kuirpenring,4,0,,100,,0,,1,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bMdef,1; },{},{}
|
||||||
2819,Swordman_Manual,Swordsman Manual,4,0,,100,,0,,0,0x00000001,7,2,136,,1,0,0,{ bonus bMaxSP,100; skill "SM_BASH",1; skill "SM_PROVOKE",1; skill "SM_MAGNUM",1; },{},{}
|
2819,Swordman_Manual,Swordsman Manual,4,0,,100,,0,,0,0x00000001,7,2,136,,1,0,0,{ bonus bMaxSP,100; skill "SM_BASH",1; skill "SM_PROVOKE",1; skill "SM_MAGNUM",1; },{},{}
|
||||||
2820,Thief_Manual,Thief Manual,4,0,,100,,0,,0,0x00000001,7,2,136,,1,0,0,{ bonus bMaxSP,100; skill "TF_DOUBLE",3; bonus bDoubleRate,15; skill "TF_STEAL",1; skill "TF_HIDING",1; skill "TF_POISON",1; },{},{}
|
2820,Thief_Manual,Thief Manual,4,0,,100,,0,,0,0x00000001,7,2,136,,1,0,0,{ bonus bMaxSP,100; skill "TF_DOUBLE",3; bonus bDoubleRate,15; skill "TF_STEAL",1; skill "TF_HIDING",1; skill "TF_POISON",1; },{},{}
|
||||||
@ -1765,7 +1765,7 @@
|
|||||||
4137,Drake_Card,Drake Card,6,20,,10,,,,,,,,2,,,,,{ bonus bNoSizeFix,0; },{},{}
|
4137,Drake_Card,Drake Card,6,20,,10,,,,,,,,2,,,,,{ bonus bNoSizeFix,0; },{},{}
|
||||||
4138,Anubis_Card,Anubis Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Angel,30; },{},{}
|
4138,Anubis_Card,Anubis Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Angel,30; },{},{}
|
||||||
4139,Joker_Card,Joker Card,6,20,,10,,,,,,,,136,,,,,{ skill "TF_STEAL",1; },{},{}
|
4139,Joker_Card,Joker Card,6,20,,10,,,,,,,,136,,,,,{ skill "TF_STEAL",1; },{},{}
|
||||||
4140,Knight_Of_Abyss_Card,Abysmal Knight Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Boss,25; },{},{}
|
4140,Knight_Of_Abyss_Card,Abysmal Knight Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddClass,Class_Boss,25; },{},{}
|
||||||
4141,Evil_Druid_Card,Evil Druid Card,6,20,,10,,,,,,,,16,,,,,{ bonus bDefEle,Ele_Undead; bonus bInt,1; bonus bDef,1; },{},{}
|
4141,Evil_Druid_Card,Evil Druid Card,6,20,,10,,,,,,,,16,,,,,{ bonus bDefEle,Ele_Undead; bonus bInt,1; bonus bDef,1; },{},{}
|
||||||
4142,Doppelganger_Card,Doppelganger Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,10; },{},{}
|
4142,Doppelganger_Card,Doppelganger Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,10; },{},{}
|
||||||
4143,Orc_Hero_Card,Orc Hero Card,6,20,,10,,,,,,,,769,,,,,{ bonus bVit,3; bonus2 bResEff,Eff_Stun,10000; },{},{}
|
4143,Orc_Hero_Card,Orc Hero Card,6,20,,10,,,,,,,,769,,,,,{ bonus bVit,3; bonus2 bResEff,Eff_Stun,10000; },{},{}
|
||||||
@ -1837,7 +1837,7 @@
|
|||||||
4209,Violy_Card,Violy Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"BA_FROSTJOKER",1+4*(getskilllv("BA_FROSTJOKER")==5),20; },{},{}
|
4209,Violy_Card,Violy Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"BA_FROSTJOKER",1+4*(getskilllv("BA_FROSTJOKER")==5),20; },{},{}
|
||||||
4210,Wander_Man_Card,Wanderer Card,6,20,,10,,,,,,,,4,,,,,{ if(!isequipped(4172,4257,4230,4272)) bonus3 bAutoSpell,"RG_INTIMIDATE",1,20; if(BaseClass==Job_Thief) bonus bFlee,20; },{},{}
|
4210,Wander_Man_Card,Wanderer Card,6,20,,10,,,,,,,,4,,,,,{ if(!isequipped(4172,4257,4230,4272)) bonus3 bAutoSpell,"RG_INTIMIDATE",1,20; if(BaseClass==Job_Thief) bonus bFlee,20; },{},{}
|
||||||
4211,Vocal_Card,Vocal Card,6,20,,10,,,,,,,,4,,,,,{ bonus bMdef,3; },{},{}
|
4211,Vocal_Card,Vocal Card,6,20,,10,,,,,,,,4,,,,,{ bonus bMdef,3; },{},{}
|
||||||
4212,Bon_Gun_Card,Bongun Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"SM_BASH",1,20; bonus2 bAddSkillBlow,"SM_BASH",5; bonus2 bAddDefClass,1026,-100; },{},{}
|
4212,Bon_Gun_Card,Bongun Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"SM_BASH",1,20; bonus2 bAddSkillBlow,"SM_BASH",5; bonus2 bAddDefMonster,1026,-100; },{},{}
|
||||||
4213,Brilight_Card,Brilight Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Silence,600; },{},{}
|
4213,Brilight_Card,Brilight Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Silence,600; },{},{}
|
||||||
4214,Bloody_Murderer_Card,Bloody Murderer Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Insect,7; },{},{}
|
4214,Bloody_Murderer_Card,Bloody Murderer Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Insect,7; },{},{}
|
||||||
4215,Blazzer_Card,Blazer Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItemGroup,IG_Food,600; },{},{}
|
4215,Blazzer_Card,Blazer Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItemGroup,IG_Food,600; },{},{}
|
||||||
@ -1878,7 +1878,7 @@
|
|||||||
4250,Executioner_Card,Executioner Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_Large,25; bonus bDef,1; },{},{}
|
4250,Executioner_Card,Executioner Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_Large,25; bonus bDef,1; },{},{}
|
||||||
4251,Elder_Card,Elder Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,5,40; },{},{}
|
4251,Elder_Card,Elder Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,5,40; },{},{}
|
||||||
4252,Alligator_Card,Alligator Card,6,20,,10,,,,,,,,136,,,,,{ bonus bLongAtkDef,5; },{},{}
|
4252,Alligator_Card,Alligator Card,6,20,,10,,,,,,,,136,,,,,{ bonus bLongAtkDef,5; },{},{}
|
||||||
4253,Alice_Card,Alice Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Boss,40; bonus2 bSubRace,RC_NonBoss,-40; },{},{}
|
4253,Alice_Card,Alice Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubClass,Class_Boss,40; bonus2 bSubClass,Class_Normal,-40; },{},{}
|
||||||
4254,Tirfing_Card,Ogretooth Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_Medium,25; bonus bDef,1; },{},{}
|
4254,Tirfing_Card,Ogretooth Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_Medium,25; bonus bDef,1; },{},{}
|
||||||
4255,Orc_Lady_Card,Orc Lady Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,3,30; },{},{}
|
4255,Orc_Lady_Card,Orc Lady Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,3,30; },{},{}
|
||||||
4256,Orc_Archer_Card,Orc Archer Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; },{},{}
|
4256,Orc_Archer_Card,Orc Archer Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; },{},{}
|
||||||
@ -1888,7 +1888,7 @@
|
|||||||
4260,Wootan_Shooter_Card,Wootan Shooter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000; },{},{}
|
4260,Wootan_Shooter_Card,Wootan Shooter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000; },{},{}
|
||||||
4261,Wootan_Fighter_Card,Wootan Fighter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000; },{},{}
|
4261,Wootan_Fighter_Card,Wootan Fighter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000; },{},{}
|
||||||
4262,Evil_Cloud_Hermit_Card,Cloud Hermit Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12029,RC_Plant,100; },{},{}
|
4262,Evil_Cloud_Hermit_Card,Cloud Hermit Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12029,RC_Plant,100; },{},{}
|
||||||
4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ if((Hp <= 999) && !getmapflag(strcharinfo(3),mf_pvp) && !getmapflag(strcharinfo(3),mf_pvp_noparty) && !getmapflag(strcharinfo(3),mf_pvp_noguild)) { heal (1-Hp),0; } else { heal -999,0; } }
|
4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefClass,Class_Normal; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ if((Hp <= 999) && !getmapflag(strcharinfo(3),mf_pvp) && !getmapflag(strcharinfo(3),mf_pvp_noparty) && !getmapflag(strcharinfo(3),mf_pvp_noguild)) { heal (1-Hp),0; } else { heal -999,0; } }
|
||||||
4264,Wind_Ghost_Card,Wind Ghost Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20; },{},{}
|
4264,Wind_Ghost_Card,Wind Ghost Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20; },{},{}
|
||||||
4265,Li_Me_Mang_Ryang_Card,Jing Guai Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12033,RC_Angel,100; },{},{}
|
4265,Li_Me_Mang_Ryang_Card,Jing Guai Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12033,RC_Angel,100; },{},{}
|
||||||
4266,Eclipse_Card,Eclipse Card,6,20,,10,,,,,,,,4,,,,,{ bonus bVit,1; },{},{}
|
4266,Eclipse_Card,Eclipse Card,6,20,,10,,,,,,,,4,,,,,{ bonus bVit,1; },{},{}
|
||||||
@ -1901,7 +1901,7 @@
|
|||||||
4273,Shellfish_Card,Shell Fish Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1073,30; },{},{}
|
4273,Shellfish_Card,Shell Fish Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1073,30; },{},{}
|
||||||
4274,Zombie_Master_Card,Zombie Master Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Undead,5; },{},{ heal 0,-5; }
|
4274,Zombie_Master_Card,Zombie Master Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Undead,5; },{},{ heal 0,-5; }
|
||||||
4275,Zombie_Prisoner_Card,Zombie Prisoner Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Undead,-20; bonus2 bExpAddRace,RC_Undead,10; },{},{}
|
4275,Zombie_Prisoner_Card,Zombie Prisoner Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Undead,-20; bonus2 bExpAddRace,RC_Undead,10; },{},{}
|
||||||
4276,Lord_Of_Death_Card,Lord of The Dead Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bWeaponComaRace,RC_NonBoss,1; },{},{}
|
4276,Lord_Of_Death_Card,Lord of The Dead Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAddEff,Eff_Stun,500,ATF_SHORT; bonus3 bAddEff,Eff_Curse,500,ATF_SHORT; bonus3 bAddEff,Eff_Silence,500,ATF_SHORT; bonus3 bAddEff,Eff_Poison,500,ATF_SHORT; bonus3 bAddEff,Eff_Bleeding,500,ATF_SHORT; bonus2 bWeaponComaClass,Class_Normal,1; },{},{}
|
||||||
4277,Zherlthsh_Card,Zealotus Card,6,20,,10,,,,,,,,32,,,,,{ bonus bLuk,2; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{}
|
4277,Zherlthsh_Card,Zealotus Card,6,20,,10,,,,,,,,32,,,,,{ bonus bLuk,2; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{}
|
||||||
4278,Gibbet_Card,Gibbet Card,6,20,,10,,,,,,,,769,,,,,{ if(getrefine()<6) bonus bMdef,5; },{},{}
|
4278,Gibbet_Card,Gibbet Card,6,20,,10,,,,,,,,769,,,,,{ if(getrefine()<6) bonus bMdef,5; },{},{}
|
||||||
4279,Deleter_Card,Earth Deleter Card,6,20,,10,,,,,,,,16,,,,,{ bonus bSPrecovRate,-100; bonus bSPGainValue,10; },{},{ heal 0,-100; }
|
4279,Deleter_Card,Earth Deleter Card,6,20,,10,,,,,,,,16,,,,,{ bonus bSPrecovRate,-100; bonus bSPGainValue,10; },{},{ heal 0,-100; }
|
||||||
@ -1930,7 +1930,7 @@
|
|||||||
4302,Tao_Gunka_Card,Tao Gunka Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMaxHPrate,100; bonus bDef,-50; bonus bMdef,-50; },{},{}
|
4302,Tao_Gunka_Card,Tao Gunka Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMaxHPrate,100; bonus bDef,-50; bonus bMdef,-50; },{},{}
|
||||||
4303,Whisper_Boss_Card,Giant Whisper Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee,10; if(readparam(bStr)>=80) bonus bBaseAtk,20; if(readparam(bVit)>=80) bonus bMaxHPrate,3; if(readparam(bLuk)>=80) bonus bCritical,3; },{},{}
|
4303,Whisper_Boss_Card,Giant Whisper Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee,10; if(readparam(bStr)>=80) bonus bBaseAtk,20; if(readparam(bVit)>=80) bonus bMaxHPrate,3; if(readparam(bLuk)>=80) bonus bCritical,3; },{},{}
|
||||||
4304,Tamruan_Card,Tamruan Card,6,20,,10,,,,,,,,32,,,,,{ bonus bDef,2; bonus2 bSkillAtk,"CR_SHIELDCHARGE",10; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",10; },{},{}
|
4304,Tamruan_Card,Tamruan Card,6,20,,10,,,,,,,,32,,,,,{ bonus bDef,2; bonus2 bSkillAtk,"CR_SHIELDCHARGE",10; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",10; },{},{}
|
||||||
4305,Turtle_General_Card,Turtle General Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_NonBoss,20; bonus2 bAddRace,RC_Boss,20; bonus3 bAutoSpell,"SM_MAGNUM",10,30; },{},{}
|
4305,Turtle_General_Card,Turtle General Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddClass,Class_All,20; bonus3 bAutoSpell,"SM_MAGNUM",10,30; },{},{}
|
||||||
4306,Toad_Card,Toad Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee2,1; },{},{}
|
4306,Toad_Card,Toad Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee2,1; },{},{}
|
||||||
4307,Kind_Of_Beetle_Card,Beetle King Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Fish,5; },{},{ heal 0,-5; }
|
4307,Kind_Of_Beetle_Card,Beetle King Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Fish,5; },{},{ heal 0,-5; }
|
||||||
4308,Tri_Joint_Card,Tri Joint Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Formless,5; },{},{ heal 0,-5; }
|
4308,Tri_Joint_Card,Tri Joint Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Formless,5; },{},{ heal 0,-5; }
|
||||||
@ -1990,7 +1990,7 @@
|
|||||||
4362,Harword_Card,Howard Alt-Eisen Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,-5; bonus bHit,30; },{},{}
|
4362,Harword_Card,Howard Alt-Eisen Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,-5; bonus bHit,30; },{},{}
|
||||||
4363,B_Magaleta_Card,High Priest Card,6,20,,10,,,,,,,,16,,,,,{ bonus5 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,50,BF_WEAPON|BF_MAGIC,0; },{},{}
|
4363,B_Magaleta_Card,High Priest Card,6,20,,10,,,,,,,,16,,,,,{ bonus5 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,50,BF_WEAPON|BF_MAGIC,0; },{},{}
|
||||||
4364,Magaleta_Card,Margaretha Sorin Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,1; bonus5 bAutoSpellWhenHit,"PR_LEXDIVINA",5,150,BF_MAGIC,1; },{},{}
|
4364,Magaleta_Card,Margaretha Sorin Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,1; bonus5 bAutoSpellWhenHit,"PR_LEXDIVINA",5,150,BF_MAGIC,1; },{},{}
|
||||||
4365,B_Katrinn_Card,High Wizard Card,6,20,,10,,,,,,,,769,,,,,{ bonus bIgnoreMDefRace,RC_NonBoss; bonus bCastrate,100; bonus bSPrecovRate,-100; },{},{ heal 0,-2000; }
|
4365,B_Katrinn_Card,High Wizard Card,6,20,,10,,,,,,,,769,,,,,{ bonus bIgnoreMDefClass,Class_Normal; bonus bCastrate,100; bonus bSPrecovRate,-100; },{},{ heal 0,-2000; }
|
||||||
4366,Katrinn_Card,Kathryne Keyron Card,6,20,,10,,,,,,,,769,,,,,{ bonus bCastrate,getrefine()*-1; if(getrefine()>=9) { bonus bMatkRate,2; } },{},{}
|
4366,Katrinn_Card,Kathryne Keyron Card,6,20,,10,,,,,,,,769,,,,,{ bonus bCastrate,getrefine()*-1; if(getrefine()>=9) { bonus bMatkRate,2; } },{},{}
|
||||||
4367,B_Shecil_Card,Sniper Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bHpDrainRate,50,20; bonus bHPrecovRate,-10; },{},{}
|
4367,B_Shecil_Card,Sniper Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bHpDrainRate,50,20; bonus bHPrecovRate,-10; },{},{}
|
||||||
4368,Shecil_Card,Cecil Damon Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,5; bonus bHit,-30; },{},{}
|
4368,Shecil_Card,Cecil Damon Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,5; bonus bHit,-30; },{},{}
|
||||||
@ -1999,7 +1999,7 @@
|
|||||||
4371,Archdam_Card,Archdam Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,10; bonus bCastrate,20; },{},{}
|
4371,Archdam_Card,Archdam Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,10; bonus bCastrate,20; },{},{}
|
||||||
4372,Bacsojin_Card,White Lady Card,6,20,,10,,,,,,,,769,,,,,{ bonus bHealPower,30; bonus bUseSPrate,15; },{},{}
|
4372,Bacsojin_Card,White Lady Card,6,20,,10,,,,,,,,769,,,,,{ bonus bHealPower,30; bonus bUseSPrate,15; },{},{}
|
||||||
4373,Chung_E_Card,Green Maiden Card,6,20,,10,,,,,,,,4,,,,,{ bonus bLuk,getrefine()-5; bonus bCritical,getrefine(); },{},{}
|
4373,Chung_E_Card,Green Maiden Card,6,20,,10,,,,,,,,4,,,,,{ bonus bLuk,getrefine()-5; bonus bCritical,getrefine(); },{},{}
|
||||||
4374,Apocalips_H_Card,Vesper Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDex,2; bonus2 bIgnoreMdefRate,RC_Boss,30; },{},{}
|
4374,Apocalips_H_Card,Vesper Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDex,2; bonus2 bIgnoreMdefClass,Class_Boss,30; },{},{}
|
||||||
4375,Orc_Baby_Card,Orc Baby Card,6,20,,10,,,,,,,,4,,,,,{ if(getrefine()>=9) { bonus2 bSubEle,Ele_Neutral,15; bonus bFlee,15; } else { bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,10; } },{},{}
|
4375,Orc_Baby_Card,Orc Baby Card,6,20,,10,,,,,,,,4,,,,,{ if(getrefine()>=9) { bonus2 bSubEle,Ele_Neutral,15; bonus bFlee,15; } else { bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,10; } },{},{}
|
||||||
4376,Lady_Tanee_Card,Lady Tanee Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMaxHPrate,-40; bonus bMaxSPrate,50; bonus2 bAddMonsterDropItem,513,200; bonus2 bAddItemHealRate,513,100; },{},{}
|
4376,Lady_Tanee_Card,Lady Tanee Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMaxHPrate,-40; bonus bMaxSPrate,50; bonus2 bAddMonsterDropItem,513,200; bonus2 bAddItemHealRate,513,100; },{},{}
|
||||||
4377,Green_Iguana_Card,Grove Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12063,RC_Formless,50; },{},{}
|
4377,Green_Iguana_Card,Grove Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12063,RC_Formless,50; },{},{}
|
||||||
@ -2024,7 +2024,7 @@
|
|||||||
4396,Tha_Odium_Card,Odium of Thanatos Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAgi,getrefine()-5; },{},{}
|
4396,Tha_Odium_Card,Odium of Thanatos Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAgi,getrefine()-5; },{},{}
|
||||||
4397,Tha_Despero_Card,Despero of Thanatos Card,6,20,,10,,,,,,,,32,,,,,{ bonus bInt,getrefine()-6; },{},{}
|
4397,Tha_Despero_Card,Despero of Thanatos Card,6,20,,10,,,,,,,,32,,,,,{ bonus bInt,getrefine()-6; },{},{}
|
||||||
4398,Tha_Dolor_Card,Dolor of Thanatos Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Angel,10; },{},{}
|
4398,Tha_Dolor_Card,Dolor of Thanatos Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Angel,10; },{},{}
|
||||||
4399,Thanatos_Card,Memory of Thanatos Card,6,20,,10,,,,,,,,2,,,,,{ bonus bDefRatioAtkRace,RC_Boss; bonus bDefRatioAtkRace,RC_NonBoss; bonus bSPDrainValue,-1; bonus bDef,-30; bonus bFlee,-30; },{},{}
|
4399,Thanatos_Card,Memory of Thanatos Card,6,20,,10,,,,,,,,2,,,,,{ bonus bDefRatioAtkClass,Class_All; bonus bSPDrainValue,-1; bonus bDef,-30; bonus bFlee,-30; },{},{}
|
||||||
4400,Aliza_Card,Aliza Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"DC_WINKCHARM",1,50+50*(BaseJob==Job_Dancer); },{},{}
|
4400,Aliza_Card,Aliza Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"DC_WINKCHARM",1,50+50*(BaseJob==Job_Dancer); },{},{}
|
||||||
4401,Alicel_Card,Alicel Card,6,20,,10,,,,,,,,16,,,,,{ bonus bFlee,10; bonus bDef,-5; },{},{}
|
4401,Alicel_Card,Alicel Card,6,20,,10,,,,,,,,16,,,,,{ bonus bFlee,10; bonus bDef,-5; },{},{}
|
||||||
4402,Aliot_Card,Aliot Card,6,20,,10,,,,,,,,4,,,,,{ if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) { bonus bStr,2; bonus bMaxHPrate,5; } if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) { bonus bInt,2; bonus bMaxSPrate,5; } },{},{}
|
4402,Aliot_Card,Aliot Card,6,20,,10,,,,,,,,4,,,,,{ if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) { bonus bStr,2; bonus bMaxHPrate,5; } if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) { bonus bInt,2; bonus bMaxSPrate,5; } },{},{}
|
||||||
@ -2032,13 +2032,13 @@
|
|||||||
4404,Skogul_Card,Skogul Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAddEffWhenHit,Eff_Bleeding,3000,ATF_TARGET|ATF_SELF; },{},{}
|
4404,Skogul_Card,Skogul Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAddEffWhenHit,Eff_Bleeding,3000,ATF_TARGET|ATF_SELF; },{},{}
|
||||||
4405,Frus_Card,Frus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMagicDamageReturn,getrefine()*2; if(BaseClass==Job_Mage) bonus bMdef,3; },{},{}
|
4405,Frus_Card,Frus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMagicDamageReturn,getrefine()*2; if(BaseClass==Job_Mage) bonus bMdef,3; },{},{}
|
||||||
4406,Skeggiold_Card,Skeggiold Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Demon,2; },{},{}
|
4406,Skeggiold_Card,Skeggiold Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Demon,2; },{},{}
|
||||||
4407,Randgris_Card,Randgris Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon,0; bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; bonus3 bAutoSpell,"SA_DISPELL",1,50; },{},{}
|
4407,Randgris_Card,Randgris Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon,0; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50; },{},{}
|
||||||
4408,Gloom_Under_Night_Card,Gloom Under Night Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEle,Ele_Holy,40; bonus2 bAddEle,Ele_Dark,40; bonus2 bAddRace,RC_Angel,40; bonus2 bAddRace,RC_Demon,40; },{},{}
|
4408,Gloom_Under_Night_Card,Gloom Under Night Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEle,Ele_Holy,40; bonus2 bAddEle,Ele_Dark,40; bonus2 bAddRace,RC_Angel,40; bonus2 bAddRace,RC_Demon,40; },{},{}
|
||||||
4409,Agav_Card,Agav Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMatkRate,5; bonus bDef,-10; if(BaseClass==Job_Mage) bonus bMaxSP,100; },{},{}
|
4409,Agav_Card,Agav Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMatkRate,5; bonus bDef,-10; if(BaseClass==Job_Mage) bonus bMaxSP,100; },{},{}
|
||||||
4410,Echio_Card,Echio Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,15; if(BaseClass==Job_Swordman) bonus bMaxHP,500; },{},{}
|
4410,Echio_Card,Echio Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,15; if(BaseClass==Job_Swordman) bonus bMaxHP,500; },{},{}
|
||||||
4411,Vanberk_Card,Vanberk Card,6,20,,10,,,,,,,,769,,,,,{ bonus bStr,2; autobonus "{ bonus bCritical,100; }",5,5000,0,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
|
4411,Vanberk_Card,Vanberk Card,6,20,,10,,,,,,,,769,,,,,{ bonus bStr,2; autobonus "{ bonus bCritical,100; }",5,5000,0,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
|
||||||
4412,Isilla_Card,Isilla Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,2; autobonus "{ bonus bCastrate,-50; bonus bFlee,30; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; },{},{}
|
4412,Isilla_Card,Isilla Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,2; autobonus "{ bonus bCastrate,-50; bonus bFlee,30; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; },{},{}
|
||||||
4413,Hodremlin_Card,Hodremlin Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_Small,15; bonus2 bSubSize,Size_Medium,15; bonus2 bSubSize,Size_Large,15; autobonus2 "{ bonus bFlee2,30; }",3,10000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_WIND; }"; },{},{}
|
4413,Hodremlin_Card,Hodremlin Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_All,15; autobonus2 "{ bonus bFlee2,30; }",3,10000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_WIND; }"; },{},{}
|
||||||
4414,Seeker_Card,Seeker Card,6,20,,10,,,,,,,,32,,,,,{ skill "MG_STONECURSE",1; bonus2 bResEff,Eff_Stone,3000; bonus bMdef,10; },{},{}
|
4414,Seeker_Card,Seeker Card,6,20,,10,,,,,,,,32,,,,,{ skill "MG_STONECURSE",1; bonus2 bResEff,Eff_Stone,3000; bonus bMdef,10; },{},{}
|
||||||
4415,Snowier_Card,Snowier Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItem,536,2000; bonus2 bAddItemHealRate,536,100; },{},{}
|
4415,Snowier_Card,Snowier Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItem,536,2000; bonus2 bAddItemHealRate,536,100; },{},{}
|
||||||
4416,Siroma_Card,Siroma Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bSkillAtk,"MG_COLDBOLT",25; bonus2 bCastrate,"MG_COLDBOLT",-25; },{},{}
|
4416,Siroma_Card,Siroma Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bSkillAtk,"MG_COLDBOLT",25; bonus2 bCastrate,"MG_COLDBOLT",-25; },{},{}
|
||||||
@ -2051,7 +2051,7 @@
|
|||||||
4423,Galion_Card,Galion Card,6,20,,10,,,,,,,,136,,,,,{ bonus bHit,5; bonus2 bAddEle,Ele_Water,5; },{},{}
|
4423,Galion_Card,Galion Card,6,20,,10,,,,,,,,136,,,,,{ bonus bHit,5; bonus2 bAddEle,Ele_Water,5; },{},{}
|
||||||
4424,Stapo_Card,Stapo Card,6,20,,10,,,,,,,,136,,,,,{ skill "TF_PICKSTONE",1; skill "TF_THROWSTONE",1; },{},{}
|
4424,Stapo_Card,Stapo Card,6,20,,10,,,,,,,,136,,,,,{ skill "TF_PICKSTONE",1; skill "TF_THROWSTONE",1; },{},{}
|
||||||
4425,Atroce_Card,Atroce Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,25; autobonus "{ bonus bAspdRate,100; }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
|
4425,Atroce_Card,Atroce Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,25; autobonus "{ bonus bAspdRate,100; }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
|
||||||
4426,Byorgue_Card,Byorgue Card,6,20,,10,,,,,,,,16,,,,,{ if(BaseJob==Job_Rogue) { bonus bMatkRate,10; bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; } },{},{}
|
4426,Byorgue_Card,Byorgue Card,6,20,,10,,,,,,,,16,,,,,{ if(BaseJob==Job_Rogue) { bonus bMatkRate,10; bonus2 bAddClass,Class_All,10; } },{},{}
|
||||||
4427,Sword_Guardian_Card,Sword Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==2||getiteminfo(getequipid(EQI_HAND_R),11)==3) { bonus bHit,5; bonus bCritical,5; bonus2 bSkillAtk,62,25; } },{},{}
|
4427,Sword_Guardian_Card,Sword Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==2||getiteminfo(getequipid(EQI_HAND_R),11)==3) { bonus bHit,5; bonus bCritical,5; bonus2 bSkillAtk,62,25; } },{},{}
|
||||||
4428,Bow_Guardian_Card,Bow Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==11) { bonus bHit,5; bonus bCritical,5; bonus2 bSkillAtk,47,50; } },{},{}
|
4428,Bow_Guardian_Card,Bow Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==11) { bonus bHit,5; bonus bCritical,5; bonus2 bSkillAtk,47,50; } },{},{}
|
||||||
4429,Salamander_Card,Salamander Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSkillAtk,"WZ_FIREPILLAR",40; bonus2 bSkillAtk,"WZ_METEOR",40; },{},{}
|
4429,Salamander_Card,Salamander Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSkillAtk,"WZ_FIREPILLAR",40; bonus2 bSkillAtk,"WZ_METEOR",40; },{},{}
|
||||||
@ -2065,7 +2065,7 @@
|
|||||||
4437,Hell_Poodle_Card,Hell Poodle Card,6,20,,10,,,,,,,,136,,,,,{ bonus bHit,1; bonus2 bAddItemHealRate,517,100; bonus3 bAddEff,Eff_Bleeding,50,ATF_SHORT; },{},{}
|
4437,Hell_Poodle_Card,Hell Poodle Card,6,20,,10,,,,,,,,136,,,,,{ bonus bHit,1; bonus2 bAddItemHealRate,517,100; bonus3 bAddEff,Eff_Bleeding,50,ATF_SHORT; },{},{}
|
||||||
4438,Banshee_Card,Banshee Card,6,20,,10,,,,,,,,769,,,,,{ if(BaseClass==Job_Mage){ bonus bMaxSP,100; bonus bMaxHP,-100; bonus2 bSkillAtk,"MG_NAPALMBEAT",20; bonus2 bSkillAtk,"MG_SOULSTRIKE",20; bonus2 bSkillAtk,"HW_NAPALMVULCAN",20; } },{},{}
|
4438,Banshee_Card,Banshee Card,6,20,,10,,,,,,,,769,,,,,{ if(BaseClass==Job_Mage){ bonus bMaxSP,100; bonus bMaxHP,-100; bonus2 bSkillAtk,"MG_NAPALMBEAT",20; bonus2 bSkillAtk,"MG_SOULSTRIKE",20; bonus2 bSkillAtk,"HW_NAPALMVULCAN",20; } },{},{}
|
||||||
4439,Flame_Skull_Card,Flame Skull Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bResEff,Eff_Blind,3000; bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Curse,3000; bonus2 bResEff,Eff_Stone,3000; bonus2 bAddEffWhenHit,Eff_Blind,500; bonus2 bAddEffWhenHit,Eff_Stun,500; bonus2 bAddEffWhenHit,Eff_Curse,500; bonus2 bAddEffWhenHit,Eff_Stone,500; },{},{}
|
4439,Flame_Skull_Card,Flame Skull Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bResEff,Eff_Blind,3000; bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Curse,3000; bonus2 bResEff,Eff_Stone,3000; bonus2 bAddEffWhenHit,Eff_Blind,500; bonus2 bAddEffWhenHit,Eff_Stun,500; bonus2 bAddEffWhenHit,Eff_Curse,500; bonus2 bAddEffWhenHit,Eff_Stone,500; },{},{}
|
||||||
4440,Necromancer_Card,Necromancer Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { bonus bInt,1; bonus bIgnoreMdefRate,2; } },{},{}
|
4440,Necromancer_Card,Necromancer Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { bonus bInt,1; bonus2 bIgnoreMdefClassRate,Class_Normal,2; bonus2 bIgnoreMdefClassRate,Class_Boss,2; } },{},{}
|
||||||
4441,Fallen_Bishop_Card,Fallen Bishop Hibram Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiHuman,50; },{},{}
|
4441,Fallen_Bishop_Card,Fallen Bishop Hibram Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiHuman,50; },{},{}
|
||||||
4442,Tatacho_Card,Tatacho Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Neutral,20; bonus2 bAddEle,Ele_Neutral,5; },{},{}
|
4442,Tatacho_Card,Tatacho Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Neutral,20; bonus2 bAddEle,Ele_Neutral,5; },{},{}
|
||||||
4443,Aqua_Elemental_Card,Aqua Elemental Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Water,20; bonus2 bAddEle,Ele_Water,5; },{},{}
|
4443,Aqua_Elemental_Card,Aqua Elemental Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Water,20; bonus2 bAddEle,Ele_Water,5; },{},{}
|
||||||
@ -2146,8 +2146,8 @@
|
|||||||
4763,Evasion12,FLEE+12,6,20,,10,,,,,,,,16,,,,,{ bonus bFlee,12; },{},{}
|
4763,Evasion12,FLEE+12,6,20,,10,,,,,,,,16,,,,,{ bonus bFlee,12; },{},{}
|
||||||
4764,Critical5,CRI+5,6,20,,10,,,,,,,,16,,,,,{ bonus bCritical,5; },{},{}
|
4764,Critical5,CRI+5,6,20,,10,,,,,,,,16,,,,,{ bonus bCritical,5; },{},{}
|
||||||
4765,Critical7,CRI+7,6,20,,10,,,,,,,,16,,,,,{ bonus bCritical,7; },{},{}
|
4765,Critical7,CRI+7,6,20,,10,,,,,,,,16,,,,,{ bonus bCritical,7; },{},{}
|
||||||
4766,Atk2,ATK+2%,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; },{},{}
|
4766,Atk2,ATK+2%,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddClass,Class_All,2; },{},{}
|
||||||
4767,Atk3,ATK+3%,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; },{},{}
|
4767,Atk3,ATK+3%,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddClass,Class_All,3; },{},{}
|
||||||
4768,Str1_J,STR+1,6,20,,10,,,,,,,,16,,,,,{},{},{}
|
4768,Str1_J,STR+1,6,20,,10,,,,,,,,16,,,,,{},{},{}
|
||||||
4769,Str2_J,STR+2,6,20,,10,,,,,,,,16,,,,,{},{},{}
|
4769,Str2_J,STR+2,6,20,,10,,,,,,,,16,,,,,{},{},{}
|
||||||
4770,Str3_J,STR+3,6,20,,10,,,,,,,,16,,,,,{},{},{}
|
4770,Str3_J,STR+3,6,20,,10,,,,,,,,16,,,,,{},{},{}
|
||||||
@ -2378,7 +2378,7 @@
|
|||||||
5208,Rideword_Hat,Rideword Hat,4,20,,300,,2,,1,0xFFFFFFFE,7,2,256,,40,1,262,{ bonus2 bHPDrainRate,50,8; bonus2 bSPDrainRate,10,4; bonus2 bHPLossRate,10,5000; },{},{}
|
5208,Rideword_Hat,Rideword Hat,4,20,,300,,2,,1,0xFFFFFFFE,7,2,256,,40,1,262,{ bonus2 bHPDrainRate,50,8; bonus2 bSPDrainRate,10,4; bonus2 bHPLossRate,10,5000; },{},{}
|
||||||
5209,Yellow_Baseball_Cap,Love Dad Cap,4,20,,300,,2,,0,0xFFFFFFFF,7,2,256,,0,1,263,{},{},{}
|
5209,Yellow_Baseball_Cap,Love Dad Cap,4,20,,300,,2,,0,0xFFFFFFFF,7,2,256,,0,1,263,{},{},{}
|
||||||
5210,Flying_Angel,Flapping Angel Wing,4,20,,300,,1,,0,0xFFFFFFFF,7,2,256,,10,1,264,{ bonus bCastrate,-3; bonus bAspdRate,3; bonus bInt,1; bonus bAgi,1; },{},{}
|
5210,Flying_Angel,Flapping Angel Wing,4,20,,300,,1,,0,0xFFFFFFFF,7,2,256,,10,1,264,{ bonus bCastrate,-3; bonus bAspdRate,3; bonus bInt,1; bonus bAgi,1; },{},{}
|
||||||
5211,Dress_Hat,Dress Hat,4,0,,200,,2,,1,0xFFFFFFFF,7,2,256,,20,1,265,{ bonus bMdef,7; bonus bStr,1; bonus bInt,1; bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bMAtkRate,2; bonus bHealPower,5; if(getrefine()>=7) { bonus2 bAddRace,RC_NonBoss,1; bonus2 bAddRace,RC_Boss,1; bonus bMAtkRate,1; bonus bHealPower,1; } },{},{}
|
5211,Dress_Hat,Dress Hat,4,0,,200,,2,,1,0xFFFFFFFF,7,2,256,,20,1,265,{ bonus bMdef,7; bonus bStr,1; bonus bInt,1; bonus2 bAddClass,Class_All,2; bonus bMAtkRate,2; bonus bHealPower,5; if(getrefine()>=7) { bonus2 bAddClass,Class_All,1; bonus bMAtkRate,1; bonus bHealPower,1; } },{},{}
|
||||||
5212,Satellite_Hairband,Satellite Hairband,4,0,,1000,,3,,1,0xFFFFFFFF,7,2,256,,30,1,266,{ bonus bMaxHP,50; bonus bMaxSP,10; skill "AL_RUWACH",1; },{},{ sc_end SC_RUWACH; }
|
5212,Satellite_Hairband,Satellite Hairband,4,0,,1000,,3,,1,0xFFFFFFFF,7,2,256,,30,1,266,{ bonus bMaxHP,50; bonus bMaxSP,10; skill "AL_RUWACH",1; },{},{ sc_end SC_RUWACH; }
|
||||||
5213,Black_Bunny_Band,Sheila Hairnet,4,0,,200,,2,,0,0xFFFFFFFF,7,2,256,,1,1,267,{ bonus bAgi,2; bonus bMdef,3; },{},{}
|
5213,Black_Bunny_Band,Sheila Hairnet,4,0,,200,,2,,0,0xFFFFFFFF,7,2,256,,1,1,267,{ bonus bAgi,2; bonus bMdef,3; },{},{}
|
||||||
5214,Moonlight_Flower_Hat,Moonlight Flower Hat,4,0,,200,,3,,0,0xFFFFFFFF,7,2,768,,1,1,268,{ bonus bDex,2; bonus3 bAutoSpell,"AL_INCAGI",1,50; },{},{}
|
5214,Moonlight_Flower_Hat,Moonlight Flower Hat,4,0,,200,,3,,0,0xFFFFFFFF,7,2,768,,1,1,268,{ bonus bDex,2; bonus3 bAutoSpell,"AL_INCAGI",1,50; },{},{}
|
||||||
@ -2438,7 +2438,7 @@
|
|||||||
5268,Lord_Circlet_C,Grand Circlet,4,1,,0,,10,,0,0xFFFFFFFE,7,2,256,,1,0,93,{ bonus bStr,3; bonus bInt,3; bonus bLuk,3; bonus bMdef,4; },{},{}
|
5268,Lord_Circlet_C,Grand Circlet,4,1,,0,,10,,0,0xFFFFFFFE,7,2,256,,1,0,93,{ bonus bStr,3; bonus bInt,3; bonus bLuk,3; bonus bMdef,4; },{},{}
|
||||||
5269,Flying_Angel_,Flapping Angel Wing,4,20,,300,,1,,0,0xFFFFFFFF,7,2,256,,10,1,264,{ bonus bInt,1; bonus bAgi,1; bonus bAspdRate,3; bonus bSpeedRate,25; },{},{}
|
5269,Flying_Angel_,Flapping Angel Wing,4,20,,300,,1,,0,0xFFFFFFFF,7,2,256,,10,1,264,{ bonus bInt,1; bonus bAgi,1; bonus bAspdRate,3; bonus bSpeedRate,25; },{},{}
|
||||||
5270,Fallen_Leaves_,Autumn Leaves,4,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,241,{ bonus bFlee2,5; },{},{}
|
5270,Fallen_Leaves_,Autumn Leaves,4,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,241,{ bonus bFlee2,5; },{},{}
|
||||||
5271,Chinese_Crown_,Phoenix Crown,4,20,,500,,4,,1,0xFFFFFFFF,7,2,768,,0,1,221,{ bonus bMdef,3; bonus2 bSubRace,RC_Boss,getrefine(); },{},{}
|
5271,Chinese_Crown_,Phoenix Crown,4,20,,500,,4,,1,0xFFFFFFFF,7,2,768,,0,1,221,{ bonus bMdef,3; bonus2 bSubClass,Class_Boss,getrefine(); },{},{}
|
||||||
5272,Tongue_Mask_,Tongue Mask,4,20,,100,,2,,0,0xFFFFFFFF,7,2,513,,0,0,253,{ bonus3 bAutoSpell,"SM_PROVOKE",5,50; },{},{}
|
5272,Tongue_Mask_,Tongue Mask,4,20,,100,,2,,0,0xFFFFFFFF,7,2,513,,0,0,253,{ bonus3 bAutoSpell,"SM_PROVOKE",5,50; },{},{}
|
||||||
5273,Happy_Wig,Happy Wig,4,20,,100,,1,,0,0xFFFFFFFF,7,2,768,,0,1,305,{ bonus bSpeedRate,25; bonus bDef,4; skill "TF_HIDING",1; },{},{ sc_end SC_HIDING; }
|
5273,Happy_Wig,Happy Wig,4,20,,100,,1,,0,0xFFFFFFFF,7,2,768,,0,1,305,{ bonus bSpeedRate,25; bonus bDef,4; skill "TF_HIDING",1; },{},{ sc_end SC_HIDING; }
|
||||||
5274,Shiny_Wig,Shiny Wig,4,20,,100,,1,,0,0xFFFFFFFF,7,2,768,,0,1,306,{ bonus bSpeedRate,25; bonus bDef,4; skill "TF_HIDING",1; },{},{ sc_end SC_HIDING; }
|
5274,Shiny_Wig,Shiny Wig,4,20,,100,,1,,0,0xFFFFFFFF,7,2,768,,0,1,306,{ bonus bSpeedRate,25; bonus bDef,4; skill "TF_HIDING",1; },{},{ sc_end SC_HIDING; }
|
||||||
@ -2492,7 +2492,7 @@
|
|||||||
5322,Scarf,Kerchief,4,20,,100,,2,,0,0xFFFFFFFF,7,2,256,,24,1,343,{ bonus bMdef,2; bonus bFlee,5; },{},{}
|
5322,Scarf,Kerchief,4,20,,100,,2,,0,0xFFFFFFFF,7,2,256,,24,1,343,{ bonus bMdef,2; bonus bFlee,5; },{},{}
|
||||||
5323,Misstrance_Crown,Misstrance Crown,4,20,,0,,10,,0,0xFFFFFFFF,7,2,256,,0,0,165,{ bonus bAllStats,2; },{},{}
|
5323,Misstrance_Crown,Misstrance Crown,4,20,,0,,10,,0,0xFFFFFFFF,7,2,256,,0,0,165,{ bonus bAllStats,2; },{},{}
|
||||||
5324,Little_Angel_Doll,Little Angel Doll,4,20,,300,,2,,0,0xFFFFFFFF,7,2,256,,10,1,344,{ bonus bDex,3; bonus4 bAutoSpellWhenHit,"CR_GRANDCROSS",3,30,0; },{},{}
|
5324,Little_Angel_Doll,Little Angel Doll,4,20,,300,,2,,0,0xFFFFFFFF,7,2,256,,10,1,344,{ bonus bDex,3; bonus4 bAutoSpellWhenHit,"CR_GRANDCROSS",3,30,0; },{},{}
|
||||||
5325,Robo_Eye,Robo Eye,4,20,,200,,2,,0,0xFFFFFFFF,7,2,512,,10,0,345,{ bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bMatkRate,2; bonus bDex,1; },{},{}
|
5325,Robo_Eye,Robo Eye,4,20,,200,,2,,0,0xFFFFFFFF,7,2,512,,10,0,345,{ bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; bonus bDex,1; },{},{}
|
||||||
5326,Masquerade_C,Masquerade C,4,1,,0,,1,,0,0xFFFFFFFF,7,2,512,,0,0,78,{ bonus2 bAddRace,RC_DemiHuman,7; },{},{}
|
5326,Masquerade_C,Masquerade C,4,1,,0,,1,,0,0xFFFFFFFF,7,2,512,,0,0,78,{ bonus2 bAddRace,RC_DemiHuman,7; },{},{}
|
||||||
5327,Orc_Hero_Helm_C,Refined Helmet of Orc Hero,4,1,,0,,10,,0,0xFFFFFFFE,7,2,768,,0,0,178,{ bonus bStr,5; bonus bVit,3; },{},{}
|
5327,Orc_Hero_Helm_C,Refined Helmet of Orc Hero,4,1,,0,,10,,0,0xFFFFFFFE,7,2,768,,0,0,178,{ bonus bStr,5; bonus bVit,3; },{},{}
|
||||||
5328,Evil_Wing_Ears_C,Evil Wing Ears C,4,1,,0,,2,,0,0xFFFFFFFF,7,2,512,,0,0,152,{ bonus bStr,1; },{},{}
|
5328,Evil_Wing_Ears_C,Evil Wing Ears C,4,1,,0,,2,,0,0xFFFFFFFF,7,2,512,,0,0,152,{ bonus bStr,1; },{},{}
|
||||||
@ -2530,7 +2530,7 @@
|
|||||||
5360,Whikebain_Ears,Hyuke's Black Cat Ears,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,45,1,368,{ bonus bFlee,10; bonus bCritical,3; bonus bCritAtkRate,10; bonus bDefRate,-50; bonus bDef2Rate,-50; },{},{}
|
5360,Whikebain_Ears,Hyuke's Black Cat Ears,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,45,1,368,{ bonus bFlee,10; bonus bCritical,3; bonus bCritAtkRate,10; bonus bDefRate,-50; bonus bDef2Rate,-50; },{},{}
|
||||||
5361,Gang_Scarf,Gangster Scarf,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,60,0,369,{ bonus bBaseAtk,5; if(BaseJob==Job_Rogue) skill "RG_GANGSTER",1; },{},{}
|
5361,Gang_Scarf,Gangster Scarf,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,60,0,369,{ bonus bBaseAtk,5; if(BaseJob==Job_Rogue) skill "RG_GANGSTER",1; },{},{}
|
||||||
5362,Ninja_Scroll,Ninja Scroll,4,20,,200,,0,,0,0xFFFFFFFF,7,2,1,,60,0,370,{ bonus bMatkRate,1; },{},{}
|
5362,Ninja_Scroll,Ninja Scroll,4,20,,200,,0,,0,0xFFFFFFFF,7,2,1,,60,0,370,{ bonus bMatkRate,1; },{},{}
|
||||||
5363,Helm_Of_Abyss,Helm Of Abyss,4,20,,1000,,2,,1,0x000654E2,7,2,256,,70,1,371,{ bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Boss,10; },{},{}
|
5363,Helm_Of_Abyss,Helm Of Abyss,4,20,,1000,,2,,1,0x000654E2,7,2,256,,70,1,371,{ bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubClass,Class_Boss,10; },{},{}
|
||||||
5364,Dark_Snake_Lord_Hat,Evil Snake Lord Hat,4,20,,500,,2,,1,0xFFFFFFFF,7,2,256,,60,1,372,{ bonus bStr,1; bonus bInt,1; bonus bAgi,2; },{},{}
|
5364,Dark_Snake_Lord_Hat,Evil Snake Lord Hat,4,20,,500,,2,,1,0xFFFFFFFF,7,2,256,,60,1,372,{ bonus bStr,1; bonus bInt,1; bonus bAgi,2; },{},{}
|
||||||
5365,Fried_Egg,Magnolia Hat,4,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,1,0,373,{ bonus2 bResEff,Eff_Stun,500; skill "HT_FLASHER",1; },{},{}
|
5365,Fried_Egg,Magnolia Hat,4,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,1,0,373,{ bonus2 bResEff,Eff_Stun,500; skill "HT_FLASHER",1; },{},{}
|
||||||
5366,Hat_0f_King,Love Dad Bandana,4,20,,200,,3,,0,0xFFFFFFFF,7,2,256,,0,1,374,{ bonus bAllStats,5; },{},{}
|
5366,Hat_0f_King,Love Dad Bandana,4,20,,200,,3,,0,0xFFFFFFFF,7,2,256,,0,1,374,{ bonus bAllStats,5; },{},{}
|
||||||
@ -2585,7 +2585,7 @@
|
|||||||
5415,Poring_Cake_Cap,Poring Cake Hat,4,20,,1000,,5,,0,0xFFFFFFFF,7,2,256,,40,1,417,{ bonus bMdef,5; bonus bCritical,5; bonus bFlee,5; bonus bFlee2,5; bonus bAspdRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; },{},{}
|
5415,Poring_Cake_Cap,Poring Cake Hat,4,20,,1000,,5,,0,0xFFFFFFFF,7,2,256,,40,1,417,{ bonus bMdef,5; bonus bCritical,5; bonus bFlee,5; bonus bFlee2,5; bonus bAspdRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; },{},{}
|
||||||
5416,Beer_Cap,Beer Hat,4,20,,600,,2,,0,0xFFFFFFFE,7,2,256,,18,1,418,{ bonus bFlee2,5; skill "SM_RECOVERY",3; skill "MG_SRECOVERY",3; },{},{}
|
5416,Beer_Cap,Beer Hat,4,20,,600,,2,,0,0xFFFFFFFE,7,2,256,,18,1,418,{ bonus bFlee2,5; skill "SM_RECOVERY",3; skill "MG_SRECOVERY",3; },{},{}
|
||||||
5417,Crown_Parrot,Crown Parrots,4,20,,200,,1,,1,0xFFFFFFFF,7,2,256,,0,0,419,{ bonus bInt,1; bonus2 bResEff,Eff_Silence,10000; bonus3 bAutoSpell,"DC_SCREAM",1,50; },{},{}
|
5417,Crown_Parrot,Crown Parrots,4,20,,200,,1,,1,0xFFFFFFFF,7,2,256,,0,0,419,{ bonus bInt,1; bonus2 bResEff,Eff_Silence,10000; bonus3 bAutoSpell,"DC_SCREAM",1,50; },{},{}
|
||||||
5418,Soldier_Hat,Legionnaire Hat,4,20,,400,,4,,1,0xFFFFFFFF,7,2,256,,0,1,420,{ bonus bStr,1; bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bUseSPrate,10; },{},{}
|
5418,Soldier_Hat,Legionnaire Hat,4,20,,400,,4,,1,0xFFFFFFFF,7,2,256,,0,1,420,{ bonus bStr,1; bonus2 bAddClass,Class_All,3; bonus bUseSPrate,10; },{},{}
|
||||||
5419,Evolved_Leaf,Leaves Of Grass,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,57,{ bonus bVit,1; bonus2 bSubRace,RC_Plant,5; },{},{}
|
5419,Evolved_Leaf,Leaves Of Grass,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,57,{ bonus bVit,1; bonus2 bSubRace,RC_Plant,5; },{},{}
|
||||||
5420,Mask_Of_Ifrit,Mask Of Ifrit,4,,,0,,8,,0,0xFFFFFFFE,7,2,769,,70,0,421,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; bonus2 bSubEle,Ele_Fire,10; bonus2 bSubEle,Ele_Water,-10; skill "MG_SIGHT",1; bonus3 bAutoSpellWhenHit,"WZ_METEOR",3,50; bonus3 bAutoSpell,"MG_FIREBOLT",3,50; },{},{ sc_end SC_SIGHT; }
|
5420,Mask_Of_Ifrit,Mask Of Ifrit,4,,,0,,8,,0,0xFFFFFFFE,7,2,769,,70,0,421,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; bonus2 bSubEle,Ele_Fire,10; bonus2 bSubEle,Ele_Water,-10; skill "MG_SIGHT",1; bonus3 bAutoSpellWhenHit,"WZ_METEOR",3,50; bonus3 bAutoSpell,"MG_FIREBOLT",3,50; },{},{ sc_end SC_SIGHT; }
|
||||||
5421,Ifrit's_Ear,Ears Of Ifrit,4,20,,0,,0,,0,0xFFFFFFFE,7,2,512,,70,0,422,{ bonus bStr,1; bonus bMdef,3; bonus2 bSkillAtk,"MG_FIREBOLT",2; bonus2 bSkillAtk,"WZ_FIREPILLAR",2; bonus2 bSkillAtk,"WZ_METEOR",2; bonus2 bSkillAtk,"SM_BASH",2; bonus2 bSkillAtk,"SM_MAGNUM",2; bonus2 bSkillAtk,"KN_PIERCE",2; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,-5; },{},{}
|
5421,Ifrit's_Ear,Ears Of Ifrit,4,20,,0,,0,,0,0xFFFFFFFE,7,2,512,,70,0,422,{ bonus bStr,1; bonus bMdef,3; bonus2 bSkillAtk,"MG_FIREBOLT",2; bonus2 bSkillAtk,"WZ_FIREPILLAR",2; bonus2 bSkillAtk,"WZ_METEOR",2; bonus2 bSkillAtk,"SM_BASH",2; bonus2 bSkillAtk,"SM_MAGNUM",2; bonus2 bSkillAtk,"KN_PIERCE",2; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,-5; },{},{}
|
||||||
@ -2621,7 +2621,7 @@
|
|||||||
5451,Dragonhelm_Gold,RWC 2008 Dragon Helm Gold,4,20,,2500,,7,,1,0xFFFFFFFF,7,2,256,,1,0,452,{ bonus bAspdRate,10; bonus bAllStats,3; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
|
5451,Dragonhelm_Gold,RWC 2008 Dragon Helm Gold,4,20,,2500,,7,,1,0xFFFFFFFF,7,2,256,,1,0,452,{ bonus bAspdRate,10; bonus bAllStats,3; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
|
||||||
5452,Dragonhelm_Silver,RWC 2008 Dragon Helm Silver,4,20,,2500,,5,,1,0xFFFFFFFF,7,2,256,,1,0,453,{ bonus bAspdRate,7; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,3; },{},{}
|
5452,Dragonhelm_Silver,RWC 2008 Dragon Helm Silver,4,20,,2500,,5,,1,0xFFFFFFFF,7,2,256,,1,0,453,{ bonus bAspdRate,7; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,3; },{},{}
|
||||||
5453,Dragonhelm_Copper,RWC 2008 Dragon Helm Copper,4,20,,2500,,0,,1,0xFFFFFFFF,7,2,256,,1,0,454,{ bonus bAspdRate,5; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,1; },{},{}
|
5453,Dragonhelm_Copper,RWC 2008 Dragon Helm Copper,4,20,,2500,,0,,1,0xFFFFFFFF,7,2,256,,1,0,454,{ bonus bAspdRate,5; bonus bAllStats,2; bonus2 bAddRace,RC_DemiHuman,1; },{},{}
|
||||||
5454,Dog_Cap_,Puppy Hat,4,20,,500,,3,,1,0xFFFFFFFF,7,2,256,,0,1,234,{ bonus bStr,1; bonus bInt,1; autobonus "{ bonus bCritical,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bIgnoreMdefRate,100; }",10,3000,BF_MAGIC,"{ specialeffect2 EF_MAGICALATTHIT; }"; },{},{}
|
5454,Dog_Cap_,Puppy Hat,4,20,,500,,3,,1,0xFFFFFFFF,7,2,256,,0,1,234,{ bonus bStr,1; bonus bInt,1; autobonus "{ bonus bCritical,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus2 bIgnoreMdefClassRate,Class_Normal,100; bonus2 bIgnoreMdefClassRate,Class_Boss,100; }",10,3000,BF_MAGIC,"{ specialeffect2 EF_MAGICALATTHIT; }"; },{},{}
|
||||||
5455,Geographer_Band_,Decorative Geographer,4,20,,500,,1,,1,0xFFFFFFFF,7,2,256,,0,1,238,{ bonus bInt,1; bonus3 bAutoSpell,"AL_HEAL",5,50; bonus3 bAutoSpellWhenHit,"AL_HEAL",5,30; },{},{}
|
5455,Geographer_Band_,Decorative Geographer,4,20,,500,,1,,1,0xFFFFFFFF,7,2,256,,0,1,238,{ bonus bInt,1; bonus3 bAutoSpell,"AL_HEAL",5,50; bonus3 bAutoSpellWhenHit,"AL_HEAL",5,30; },{},{}
|
||||||
5456,Vacation_Hat_,Summer Hat,4,20,,200,,0,,1,0xFFFFFFFF,7,2,256,,0,1,315,{ bonus bVit,5; bonus bHPrecovRate,20; bonus bSPrecovRate,15; },{},{}
|
5456,Vacation_Hat_,Summer Hat,4,20,,200,,0,,1,0xFFFFFFFF,7,2,256,,0,1,315,{ bonus bVit,5; bonus bHPrecovRate,20; bonus bSPrecovRate,15; },{},{}
|
||||||
5457,Spring_Rabbit_Hat,Moon Rabbit Hat,4,20,,300,,2,,1,0xFFFFFFFF,7,2,256,,1,1,455,{ bonus bAgi,3; bonus bBaseAtk,5; bonus bMatkRate,5; if(getrefine()>4) { bonus bBaseAtk,getrefine()-4; bonus bMatkRate,getrefine()-4; } },{},{}
|
5457,Spring_Rabbit_Hat,Moon Rabbit Hat,4,20,,300,,2,,1,0xFFFFFFFF,7,2,256,,1,1,455,{ bonus bAgi,3; bonus bBaseAtk,5; bonus bMatkRate,5; if(getrefine()>4) { bonus bBaseAtk,getrefine()-4; bonus bMatkRate,getrefine()-4; } },{},{}
|
||||||
@ -2657,7 +2657,7 @@
|
|||||||
5487,J_Poringcake_Hat,Poring Cake Hat,4,20,,500,,1,,0,0xFFFFFFFF,7,2,256,,0,1,417,{ bonus bLuk,2; },{},{}
|
5487,J_Poringcake_Hat,Poring Cake Hat,4,20,,500,,1,,0,0xFFFFFFFF,7,2,256,,0,1,417,{ bonus bLuk,2; },{},{}
|
||||||
5488,J_Twin_Santahat,Twin Santa Hat,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,390,{ bonus bLuk,1; bonus bMdef,1; },{},{}
|
5488,J_Twin_Santahat,Twin Santa Hat,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,390,{ bonus bLuk,1; bonus bMdef,1; },{},{}
|
||||||
5489,Love_Daddy,Love Daddy Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,484,{ bonus bDex,2; },{},{}
|
5489,Love_Daddy,Love Daddy Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,484,{ bonus bDex,2; },{},{}
|
||||||
5490,Anubis_Helm,Anubis Helm,4,20,,0,,3,,0,0xFFFFFFFF,7,2,256,,70,0,485,{ bonus bMdef,5; bonus2 bSubRace,RC_Boss,10; bonus bHealpower2,10; bonus bAddItemHealRate,10; },{},{}
|
5490,Anubis_Helm,Anubis Helm,4,20,,0,,3,,0,0xFFFFFFFF,7,2,256,,70,0,485,{ bonus bMdef,5; bonus2 bSubClass,Class_Boss,10; bonus bHealpower2,10; bonus bAddItemHealRate,10; },{},{}
|
||||||
5491,Hat_Of_Outlaw,Bandit Hat,4,20,,800,,3,,1,0xFFFFFFFF,7,2,256,,0,1,486,{ bonus bStr,2; bonus2 bSubEle,Ele_Fire, 10; },{},{}
|
5491,Hat_Of_Outlaw,Bandit Hat,4,20,,800,,3,,1,0xFFFFFFFF,7,2,256,,0,1,486,{ bonus bStr,2; bonus2 bSubEle,Ele_Fire, 10; },{},{}
|
||||||
5492,Boy's_Cap_I,Student Cap,4,0,,0,,5,,0,0xFFFFFFFE,7,2,256,,0,0,102,{ bonus bMdef,3; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
|
5492,Boy's_Cap_I,Student Cap,4,0,,0,,5,,0,0xFFFFFFFE,7,2,256,,0,0,102,{ bonus bMdef,3; bonus2 bAddRace,RC_DemiHuman,5; },{},{}
|
||||||
5493,Ulle_Cap_I,Ulle's Cap,4,0,,0,,3,,0,0xFFFFFFFE,7,2,256,,0,0,254,{ bonus bDex,2; bonus bAgi,1; },{},{}
|
5493,Ulle_Cap_I,Ulle's Cap,4,0,,0,,3,,0,0xFFFFFFFE,7,2,256,,0,0,254,{ bonus bDex,2; bonus bAgi,1; },{},{}
|
||||||
@ -2687,7 +2687,7 @@
|
|||||||
5517,Hawk_Eyes02,Hawk Eyes,4,10,,100,,0,,0,0x00080808,7,2,512,,60,0,23,{ bonus bDex,1; },{},{}
|
5517,Hawk_Eyes02,Hawk Eyes,4,10,,100,,0,,0,0x00080808,7,2,512,,60,0,23,{ bonus bDex,1; },{},{}
|
||||||
5518,L_Magestic_Goat2,Gigantic Majestic Goat,4,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,50,1,513,{ bonus2 bSubRace,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{}
|
5518,L_Magestic_Goat2,Gigantic Majestic Goat,4,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,50,1,513,{ bonus2 bSubRace,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{}
|
||||||
5519,Peacock_Feather,Peacock Feather,4,20,,800,,4,,1,0xFFFFFFFF,7,2,256,,1,1,514,{ bonus bInt,2; },{},{}
|
5519,Peacock_Feather,Peacock Feather,4,20,,800,,4,,1,0xFFFFFFFF,7,2,256,,1,1,514,{ bonus bInt,2; },{},{}
|
||||||
5520,Rabbit_Earplug,Rabbit Earplugs,4,,,400,,0,,1,0xFFFFFFFF,7,2,768,,1,1,515,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bMatkRate,4; },{},{}
|
5520,Rabbit_Earplug,Rabbit Earplugs,4,,,400,,0,,1,0xFFFFFFFF,7,2,768,,1,1,515,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; },{},{}
|
||||||
5521,Angry_Mouth_C,Angry Mouth,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,0,0,194,{ bonus bDelayRate,-3; },{},{}
|
5521,Angry_Mouth_C,Angry Mouth,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,0,0,194,{ bonus bDelayRate,-3; },{},{}
|
||||||
5522,Fanta_Zero_Lemon_Hat,Fanta Zero Lemon Hat,4,20,,100,,4,,1,0xFFFFFFFF,7,2,256,,0,1,516,{},{},{}
|
5522,Fanta_Zero_Lemon_Hat,Fanta Zero Lemon Hat,4,20,,100,,4,,1,0xFFFFFFFF,7,2,256,,0,1,516,{},{},{}
|
||||||
5523,Sakura_Mist_Hat,Sakura Mist Hat,4,20,,100,,4,,1,0xFFFFFFFF,7,2,256,,0,1,517,{ bonus bDex,1; },{},{}
|
5523,Sakura_Mist_Hat,Sakura Mist Hat,4,20,,100,,4,,1,0xFFFFFFFF,7,2,256,,0,1,517,{ bonus bDex,1; },{},{}
|
||||||
@ -2734,7 +2734,7 @@
|
|||||||
5564,Crown_Of_Deceit,Crown of Deceit,4,20,,300,,3,,1,0xFFFFFFFF,7,2,768,,85,1,544,{ bonus bInt,4; bonus bCastRate,-10; },{},{}
|
5564,Crown_Of_Deceit,Crown of Deceit,4,20,,300,,3,,1,0xFFFFFFFF,7,2,768,,85,1,544,{ bonus bInt,4; bonus bCastRate,-10; },{},{}
|
||||||
5565,Dragon_Arhat_Mask,Dragon Arhat Mask,4,0,,0,,5,,0,0xFFFFFFFF,7,2,513,,1,0,545,{ bonus2 bAddRace,RC_DemiHuman,10; },{},{}
|
5565,Dragon_Arhat_Mask,Dragon Arhat Mask,4,0,,0,,5,,0,0xFFFFFFFF,7,2,513,,1,0,545,{ bonus2 bAddRace,RC_DemiHuman,10; },{},{}
|
||||||
5566,Tiger_Arhat_Mask,Tiger Arhat Mask,4,0,,0,,1,,0,0xFFFFFFFF,7,2,513,,1,0,546,{ bonus2 bAddRace,RC_DemiHuman,2; },{},{}
|
5566,Tiger_Arhat_Mask,Tiger Arhat Mask,4,0,,0,,1,,0,0xFFFFFFFF,7,2,513,,1,0,546,{ bonus2 bAddRace,RC_DemiHuman,2; },{},{}
|
||||||
5567,Bright_Fury,Bright Fury,4,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; },{},{}
|
5567,Bright_Fury,Bright Fury,4,20,,300,,1,,1,0xFFFFFFFF,7,2,256,,1,1,548,{ bonus bStr,1; bonus2 bAddClass,Class_All,2; bonus bAspdRate,2; },{},{}
|
||||||
5568,Rabbit_Bonnet,Rabbit Bonnet,4,20,,1000,,1,,1,0xFFFFFFFF,7,2,768,,0,1,549,{ bonus bInt,2; },{},{}
|
5568,Rabbit_Bonnet,Rabbit Bonnet,4,20,,1000,,1,,1,0xFFFFFFFF,7,2,768,,0,1,549,{ bonus bInt,2; },{},{}
|
||||||
5569,Gemini_Diadem,Gemini Diadem,4,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; } },{},{}
|
5569,Gemini_Diadem,Gemini Diadem,4,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,4,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,551,{ bonus bAgi,2; bonus bBaseAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; } },{},{}
|
5570,Gemini_Crown,Gemini Crown,4,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,70,1,551,{ bonus bAgi,2; bonus bBaseAtk,2; bonus bMdef,5; if(getrefine()>6) { bonus bDef,1; bonus bMatk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; } },{},{}
|
||||||
@ -2857,7 +2857,7 @@
|
|||||||
5687,Viking_Helm_Repl,Orc Helm,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,1,1,86,{},{},{}
|
5687,Viking_Helm_Repl,Orc Helm,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,1,1,86,{},{},{}
|
||||||
//5688,2009_Love_Dad,2009 Love Dad,4,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,1,1,611,{ bonus bVit,2; },{},{}
|
//5688,2009_Love_Dad,2009 Love Dad,4,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,1,1,611,{ bonus bVit,2; },{},{}
|
||||||
//5689,Queen_Ant_Diadem,Queen Ant Diadem,4,20,,300,,1,,1,0xFFFFFFFF,7,2,256,,75,1,612,{},{},{}
|
//5689,Queen_Ant_Diadem,Queen Ant Diadem,4,20,,300,,1,,1,0xFFFFFFFF,7,2,256,,75,1,612,{},{},{}
|
||||||
5690,Red_Wing_Hat,Red Wing Hat,4,20,,600,,2,,1,0xFFFFFFFF,7,2,256,,50,1,613,{ if(getrefine()>6) { bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bMatkRate,2; } if(getrefine()>8) { bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bMatkRate,2; } },{},{}
|
5690,Red_Wing_Hat,Red Wing Hat,4,20,,600,,2,,1,0xFFFFFFFF,7,2,256,,50,1,613,{ if(getrefine()>6) { bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; } if(getrefine()>8) { bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; } },{},{}
|
||||||
5691,Catain_Bandanna,Sailor's Bandana,4,20,,10,,1,,0,0xFFFFFFFF,7,2,256,,1,1,542,{ bonus bDex,1; bonus2 bSubEle,Ele_Poison,20; },{},{}
|
5691,Catain_Bandanna,Sailor's Bandana,4,20,,10,,1,,0,0xFFFFFFFF,7,2,256,,1,1,542,{ bonus bDex,1; bonus2 bSubEle,Ele_Poison,20; },{},{}
|
||||||
5692,Sea_Cat_Hat,Sea Cat Hat,4,20,,10,,1,,0,0xFFFFFFFF,7,2,256,,1,1,539,{ bonus bDex,1; },{},{}
|
5692,Sea_Cat_Hat,Sea Cat Hat,4,20,,10,,1,,0,0xFFFFFFFF,7,2,256,,1,1,539,{ bonus bDex,1; },{},{}
|
||||||
//5693,No_Fear_Underware,No Fear Underwear,4,0,,0,,10,,0,0xFFFFFFFF,7,2,256,,20,0,30,{ bonus bStr,1; bonus bInt,1; bonus bDex,1; },{},{}
|
//5693,No_Fear_Underware,No Fear Underwear,4,0,,0,,10,,0,0xFFFFFFFF,7,2,256,,20,0,30,{ bonus bStr,1; bonus bInt,1; bonus bDex,1; },{},{}
|
||||||
@ -2987,7 +2987,7 @@
|
|||||||
5818,Carnival_Hat,Carnival Hat,4,0,,0,,6,,0,0xFFFFFFFF,7,2,256,,0,1,505,{ bonus bAllStats, 3; },{},{}
|
5818,Carnival_Hat,Carnival Hat,4,0,,0,,6,,0,0xFFFFFFFF,7,2,256,,0,1,505,{ bonus bAllStats, 3; },{},{}
|
||||||
5819,Carnival_Circlet,Carnival Circlet,4,0,,0,,6,,0,0xFFFFFFFF,7,2,256,,0,1,506,{ bonus bAllStats, 3; },{},{}
|
5819,Carnival_Circlet,Carnival Circlet,4,0,,0,,6,,0,0xFFFFFFFF,7,2,256,,0,1,506,{ bonus bAllStats, 3; },{},{}
|
||||||
//5820,Black_Elven_Ears,Black Elven Ears,4,10,,100,,2,,0,0xFFFFFFFF,7,2,512,,0,0,498,{},{},{}
|
//5820,Black_Elven_Ears,Black Elven Ears,4,10,,100,,2,,0,0xFFFFFFFF,7,2,512,,0,0,498,{},{},{}
|
||||||
5821,Gold_Tulip_Hairpin,Gold Tulip Hairpin,4,10,,100,,2,,0,0xFFFFFFFF,7,2,256,,0,1,499,{ bonus2 bExpAddRace,RC_Boss,5; bonus2 bExpAddRace,RC_NonBoss,5; },{},{}
|
5821,Gold_Tulip_Hairpin,Gold Tulip Hairpin,4,10,,100,,2,,0,0xFFFFFFFF,7,2,256,,0,1,499,{ bonus2 bExpAddClass,Class_All,5; },{},{}
|
||||||
5822,Love_Chick_Hat,Love Chick Hat,4,10000,,100,,4,,0,0xFFFFFFFF,7,2,256,,0,1,500,{ bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Undead,7; },{},{}
|
5822,Love_Chick_Hat,Love Chick Hat,4,10000,,100,,4,,0,0xFFFFFFFF,7,2,256,,0,1,500,{ bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Undead,7; },{},{}
|
||||||
//5823,Love_Arrow,Love Arrow,4,5000,,100,,1,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bDex,5; bonus bAgi,5; },{},{}
|
//5823,Love_Arrow,Love Arrow,4,5000,,100,,1,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bDex,5; bonus bAgi,5; },{},{}
|
||||||
5824,Fools_Day_Hat,Fools Day Hat,4,20,,300,,6,,1,0xFFFFFFFF,7,2,256,,30,1,265,{},{},{}
|
5824,Fools_Day_Hat,Fools Day Hat,4,20,,300,,6,,1,0xFFFFFFFF,7,2,256,,30,1,265,{},{},{}
|
||||||
@ -4951,7 +4951,7 @@
|
|||||||
12402,29Fruit,29Fruit,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 5,5; },{},{}
|
12402,29Fruit,29Fruit,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 5,5; },{},{}
|
||||||
12403,Lucky_Egg2,Lucky Egg2,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
12403,Lucky_Egg2,Lucky Egg2,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||||
12404,Acti_Potion,Acti Potion,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
12404,Acti_Potion,Acti Potion,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||||
12405,Underripe_Yggseed,Underripe Yggseed,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 30,30; skilleffect "AL_BLESSING",0; sc_start SC_BLESSING,140000,5; },{},{}
|
12405,Underripe_Yggseed,Underripe Yggseed,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||||
12406,Psychic_ArmorS,Psychic ArmorS,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
12406,Psychic_ArmorS,Psychic ArmorS,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||||
12407,PCBang_Coupon_Box,PCBang Coupon Box,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
12407,PCBang_Coupon_Box,PCBang Coupon Box,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||||
12408,Leaf_Cat_Ball,Leaf Cat Ball,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 2081; },{},{}
|
12408,Leaf_Cat_Ball,Leaf Cat Ball,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 2081; },{},{}
|
||||||
@ -5327,7 +5327,7 @@
|
|||||||
13014,Hakujin,Hakujin,5,20,,800,120,,1,0,0x02000000,7,2,2,3,42,1,1,{ bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10; },{},{}
|
13014,Hakujin,Hakujin,5,20,,800,120,,1,0,0x02000000,7,2,2,3,42,1,1,{ bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10; },{},{}
|
||||||
13015,Hakujin_,Hakujin,5,20,,800,120,,1,1,0x02000000,7,2,2,3,42,1,1,{ bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10; },{},{}
|
13015,Hakujin_,Hakujin,5,20,,800,120,,1,1,0x02000000,7,2,2,3,42,1,1,{ bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10; },{},{}
|
||||||
13016,Poison_Knife_,Poison Knife,5,20,,800,64,,1,2,0x028F5EEE,7,2,2,3,65,1,1,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000; },{},{}
|
13016,Poison_Knife_,Poison Knife,5,20,,800,64,,1,2,0x028F5EEE,7,2,2,3,65,1,1,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000; },{},{}
|
||||||
13017,House_Auger_,Ice Pick,5,20,,600,70,,1,1,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bDefRatioAtkRace,RC_Boss; bonus bDefRatioAtkRace,RC_NonBoss; },{},{}
|
13017,House_Auger_,Ice Pick,5,20,,600,70,,1,1,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bDefRatioAtkClass,Class_All; },{},{}
|
||||||
13018,Sucsamad_,Sucsamad,5,20,,800,140,,1,1,0x028F5EEE,7,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0; },{},{}
|
13018,Sucsamad_,Sucsamad,5,20,,800,140,,1,1,0x028F5EEE,7,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
13019,Ginnungagap_,Ginnungagap,5,20,,700,148,,1,1,0xFE9F7EEF,7,2,2,4,70,1,1,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; bonus2 bAddEff2,Eff_Blind,50; },{},{}
|
13019,Ginnungagap_,Ginnungagap,5,20,,700,148,,1,1,0xFE9F7EEF,7,2,2,4,70,1,1,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; bonus2 bAddEff2,Eff_Blind,50; },{},{}
|
||||||
13020,Warrior_Balmung_,Warrior's Balmung,5,20,,1000,170,,1,0,0xFFFFFFFF,7,2,2,4,48,1,1,{ bonus bAllStats,5; },{},{}
|
13020,Warrior_Balmung_,Warrior's Balmung,5,20,,1000,170,,1,0,0xFFFFFFFF,7,2,2,4,48,1,1,{ bonus bAllStats,5; },{},{}
|
||||||
@ -5339,7 +5339,7 @@
|
|||||||
13026,Moonlight_Sword_C,Moonlight Dagger,5,2,,0,85,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{ bonus bMaxSPrate,10; bonus bSPDrainValue,3; },{},{}
|
13026,Moonlight_Sword_C,Moonlight Dagger,5,2,,0,85,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{ bonus bMaxSPrate,10; bonus bSPDrainValue,3; },{},{}
|
||||||
13027,Scalpel,Scalpel,5,20,,500,120,,1,3,0x028F5EEE,2,2,2,4,55,1,1,{ bonus2 bAddEff,Eff_Bleeding,500; },{},{}
|
13027,Scalpel,Scalpel,5,20,,500,120,,1,3,0x028F5EEE,2,2,2,4,55,1,1,{ bonus2 bAddEff,Eff_Bleeding,500; },{},{}
|
||||||
13028,Tooth_Blade,Tooth Blade,5,20,,700,130,,1,1,0x028F5EEE,2,2,2,4,55,1,1,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_SLOWCAST",2,70; } else bonus3 bAutoSpell,"NPC_SLOWCAST",1,50; },{},{}
|
13028,Tooth_Blade,Tooth Blade,5,20,,700,130,,1,1,0x028F5EEE,2,2,2,4,55,1,1,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_SLOWCAST",2,70; } else bonus3 bAutoSpell,"NPC_SLOWCAST",1,50; },{},{}
|
||||||
13029,Prinsence_Knife,Prinsense Knife,5,20,,0,120,,1,0,0x028F5EEE,7,2,2,1,0,0,1,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
13029,Prinsence_Knife,Prinsense Knife,5,20,,0,120,,1,0,0x028F5EEE,7,2,2,1,0,0,1,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
13030,Dragon_Killer_,Dragon Killer,5,20,,900,110,,1,2,0xFE9F7EEF,7,2,2,4,60,1,1,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bExpAddRace,RC_Dragon,10; },{},{}
|
13030,Dragon_Killer_,Dragon Killer,5,20,,900,110,,1,2,0xFE9F7EEF,7,2,2,4,60,1,1,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bExpAddRace,RC_Dragon,10; },{},{}
|
||||||
13031,Sword_Breaker_,Swordbreaker,5,20,,1000,70,,1,3,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bBreakWeaponRate,500; },{},{}
|
13031,Sword_Breaker_,Swordbreaker,5,20,,1000,70,,1,3,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bBreakWeaponRate,500; },{},{}
|
||||||
13032,Mail_Breaker_,Mailbreaker,5,20,,1000,70,,1,3,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bBreakArmorRate,500; },{},{}
|
13032,Mail_Breaker_,Mailbreaker,5,20,,1000,70,,1,3,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bBreakArmorRate,500; },{},{}
|
||||||
@ -5347,7 +5347,7 @@
|
|||||||
13034,Twilight_Desert,Desert Twilight,5,20,,600,130,,1,2,0x00001000,2,2,2,2,70,1,1,{},{},{}
|
13034,Twilight_Desert,Desert Twilight,5,20,,600,130,,1,2,0x00001000,2,2,2,2,70,1,1,{},{},{}
|
||||||
13035,Sandstorm,Sandstorm,5,20,,600,50,,1,4,0x00001000,2,2,2,2,70,1,1,{},{},{}
|
13035,Sandstorm,Sandstorm,5,20,,600,50,,1,4,0x00001000,2,2,2,2,70,1,1,{},{},{}
|
||||||
13036,BF_Dagger1,Brave Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{}
|
13036,BF_Dagger1,Brave Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{}
|
||||||
13037,BF_Dagger2,Valorous Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus bDefRatioAtkRace,RC_Boss; bonus bDefRatioAtkRace,RC_NonBoss; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{}
|
13037,BF_Dagger2,Valorous Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{}
|
||||||
13038,Dagger_Of_Hunter,Dagger of Hunter,5,20,,700,120,,1,3,0x00020000,2,2,2,3,70,1,1,{ bonus bStr,1; bonus bAgi,2; bonus bDex,1; bonus4 bAutoSpellOnSkill,"RG_BACKSTAP","SM_BASH",10,100; bonus2 bSkillAtk,"RG_BACKSTAP",20; },{},{}
|
13038,Dagger_Of_Hunter,Dagger of Hunter,5,20,,700,120,,1,3,0x00020000,2,2,2,3,70,1,1,{ bonus bStr,1; bonus bAgi,2; bonus bDex,1; bonus4 bAutoSpellOnSkill,"RG_BACKSTAP","SM_BASH",10,100; bonus2 bSkillAtk,"RG_BACKSTAP",20; },{},{}
|
||||||
13039,Ivory_Knife,Ivory Knife,5,20,,700,130,,1,2,0x028F5EEE,2,2,2,3,50,1,1,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; },{},{}
|
13039,Ivory_Knife,Ivory Knife,5,20,,700,130,,1,2,0x028F5EEE,2,2,2,3,50,1,1,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; },{},{}
|
||||||
13040,N_Cutter,Novice Cutter,5,0,,0,50,,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,{},{},{}
|
13040,N_Cutter,Novice Cutter,5,0,,0,50,,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,{},{},{}
|
||||||
@ -5357,8 +5357,8 @@
|
|||||||
13044,House_Auger_I,Ice Pick,5,0,,0,105,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{},{},{}
|
13044,House_Auger_I,Ice Pick,5,0,,0,105,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{},{},{}
|
||||||
13045,Kamaitachi_I,Kamaitachi,5,0,,0,155,,2,0,0x02000000,7,2,2,4,0,0,1,{},{},{}
|
13045,Kamaitachi_I,Kamaitachi,5,0,,0,155,,2,0,0x02000000,7,2,2,4,0,0,1,{},{},{}
|
||||||
13046,Krieg,Krierg,5,20,,500,110,,1,3,0x00021040,2,2,2,2,50,1,1,{ bonus3 bAddEffOnSkill,"RG_BACKSTAP",Eff_Bleeding,1000; bonus2 bSkillAtk,"RG_BACKSTAP",15; },{},{}
|
13046,Krieg,Krierg,5,20,,500,110,,1,3,0x00021040,2,2,2,2,50,1,1,{ bonus3 bAddEffOnSkill,"RG_BACKSTAP",Eff_Bleeding,1000; bonus2 bSkillAtk,"RG_BACKSTAP",15; },{},{}
|
||||||
13047,Weihna,Weihna,5,20,,500,135,,1,2,0x00021040,2,2,2,3,50,1,1,{ bonus3 bAddEffOnSkill,"RG_RAID",Eff_Poison,1000; autobonus "{ bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; }",5,5000,BF_WEAPON|BF_SHORT,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
|
13047,Weihna,Weihna,5,20,,500,135,,1,2,0x00021040,2,2,2,3,50,1,1,{ bonus3 bAddEffOnSkill,"RG_RAID",Eff_Poison,1000; autobonus "{ bonus2 bAddClass,Class_All,10; }",5,5000,BF_WEAPON|BF_SHORT,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
|
||||||
13048,Damascus_C,Damascus,5,0,,0,153,,1,0,0x028F5EEE,7,2,2,3,1,0,1,{ bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
13048,Damascus_C,Damascus,5,0,,0,153,,1,0,0x028F5EEE,7,2,2,3,1,0,1,{ bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
// Revolvers
|
// Revolvers
|
||||||
13100,Six_Shooter,Six Shooter,5,4500,,400,30,,7,1,0x41000000,7,2,34,1,10,1,17,{ bonus bHit,-10; },{},{}
|
13100,Six_Shooter,Six Shooter,5,4500,,400,30,,7,1,0x41000000,7,2,34,1,10,1,17,{ bonus bHit,-10; },{},{}
|
||||||
13101,Six_Shooter_,Six Shooter,5,4500,,400,30,,7,2,0x41000000,7,2,34,1,10,1,17,{ bonus bHit,-10; },{},{}
|
13101,Six_Shooter_,Six Shooter,5,4500,,400,30,,7,2,0x41000000,7,2,34,1,10,1,17,{ bonus bHit,-10; },{},{}
|
||||||
@ -5369,7 +5369,7 @@
|
|||||||
13106,Gold_Lux,Gold Lux,5,100000,,500,20,,7,0,0x41000000,7,2,34,3,12,1,17,{ bonus bHit,-10; if(getskilllv("GS_GLITTERING")>0) bonus3 bAutoSpell,"GS_GLITTERING",getskilllv("GS_GLITTERING"),100; },{},{}
|
13106,Gold_Lux,Gold Lux,5,100000,,500,20,,7,0,0x41000000,7,2,34,3,12,1,17,{ bonus bHit,-10; if(getskilllv("GS_GLITTERING")>0) bonus3 bAutoSpell,"GS_GLITTERING",getskilllv("GS_GLITTERING"),100; },{},{}
|
||||||
13107,Wasteland_Outlaw,Wasteland's Outlaw,5,20,,580,68,,7,2,0x41000000,7,2,34,3,70,1,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; },{},{}
|
13107,Wasteland_Outlaw,Wasteland's Outlaw,5,20,,580,68,,7,2,0x41000000,7,2,34,3,70,1,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; },{},{}
|
||||||
13108,BF_Pistol1,Soldier Revolver,5,0,,0,70,,7,0,0x41000000,7,2,34,3,80,1,17,{ bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
|
13108,BF_Pistol1,Soldier Revolver,5,0,,0,70,,7,0,0x41000000,7,2,34,3,80,1,17,{ bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
13109,Wasteland_Outlaw_C,Wasteland Outlaw,5,20,,0,100,,7,0,0x41000000,7,2,34,3,0,0,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; bonus bMatkRate,10; },{},{}
|
13109,Wasteland_Outlaw_C,Wasteland Outlaw,5,20,,0,100,,7,0,0x41000000,7,2,34,3,0,0,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; },{},{}
|
||||||
13110,Krieger_Pistol1,Glorious Pistol,5,0,,0,80,,7,0,0x41000000,7,2,34,4,80,1,17,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; } },{},{}
|
13110,Krieger_Pistol1,Glorious Pistol,5,0,,0,80,,7,0,0x41000000,7,2,34,4,80,1,17,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; } },{},{}
|
||||||
//13111,Sharpshooter_Revolver
|
//13111,Sharpshooter_Revolver
|
||||||
13112,P_Revolver1,Eden Revlover I,5,0,,0,4,,7,0,0x41000000,7,2,34,1,26,0,17,{ bonus bHit,-5; },{},{}
|
13112,P_Revolver1,Eden Revlover I,5,0,,0,4,,7,0,0x41000000,7,2,34,1,26,0,17,{ bonus bHit,-5; },{},{}
|
||||||
@ -5402,7 +5402,7 @@
|
|||||||
13174,BF_Launcher1,Soldier Grenade Launcher,5,0,,0,300,,9,0,0x41000000,7,2,34,3,80,1,21,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
|
13174,BF_Launcher1,Soldier Grenade Launcher,5,0,,0,300,,9,0,0x41000000,7,2,34,3,80,1,21,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
13175,Lever_Action_Rifle_C,Lever Action Rifle,5,20,,0,170,,9,0,0x41000000,7,2,34,3,0,0,18,{ bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; },{},{}
|
13175,Lever_Action_Rifle_C,Lever Action Rifle,5,20,,0,170,,9,0,0x41000000,7,2,34,3,0,0,18,{ bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; },{},{}
|
||||||
13176,Krieger_Rifle1,Glorious Rifle,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,18,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; } },{},{}
|
13176,Krieger_Rifle1,Glorious Rifle,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,18,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; } },{},{}
|
||||||
13177,Krieger_Gatling1,Glorious Gatling Gun,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,19,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) {bonus2 bAddRace,RC_Boss,getrefine(); bonus2 bAddRace,RC_NonBoss,getrefine(); } },{},{}
|
13177,Krieger_Gatling1,Glorious Gatling Gun,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,19,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); } },{},{}
|
||||||
13178,Krieger_Shotgun1,Glorious Shotgun,5,0,,0,110,,9,0,0x41000000,7,2,34,4,80,1,20,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; } },{},{}
|
13178,Krieger_Shotgun1,Glorious Shotgun,5,0,,0,110,,9,0,0x41000000,7,2,34,4,80,1,20,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; } },{},{}
|
||||||
13179,Krieger_Launcher1,Glorious Grenade Launcher,5,0,,0,330,,9,0,0x41000000,7,2,34,4,80,1,21,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{}
|
13179,Krieger_Launcher1,Glorious Grenade Launcher,5,0,,0,330,,9,0,0x41000000,7,2,34,4,80,1,21,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{}
|
||||||
// Bullets
|
// Bullets
|
||||||
@ -5467,7 +5467,7 @@
|
|||||||
13306,BF_Huuma_Shuriken2,Valorous Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
|
13306,BF_Huuma_Shuriken2,Valorous Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,5,20,,0,55,,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,(getrefine()-3)*(getrefine()-3); 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; } },{},{}
|
13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,5,20,,0,55,,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,(getrefine()-3)*(getrefine()-3); 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,5,0,,0,230,,1,0,0x02000000,7,2,34,4,0,0,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,2; },{},{}
|
13308,Huuma_Blaze_I,Huuma Blaze Shuriken,5,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,5,0,,0,99,,1,0,0x02000000,7,2,34,4,1,0,22,{ bonus2 bAddSize,Size_Small,80; bonus2 bAddSize,Size_Medium,80; bonus2 bAddSize,Size_Large,80; },{},{}
|
13309,Huuma_Giant_Wheel_C,Huuma Giant Wheel Shuriken,5,0,,0,99,,1,0,0x02000000,7,2,34,4,1,0,22,{ bonus2 bAddSize,Size_All,80; },{},{}
|
||||||
// More 1-Handed Swords
|
// More 1-Handed Swords
|
||||||
13400,Cutlas_,Cutlus,5,20,,900,150,,1,1,0x000654E2,7,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{}
|
13400,Cutlas_,Cutlus,5,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,5,1,,0,199,,1,0,0x000654E2,7,2,2,4,1,0,2,{ bonus bInt,10; bonus bLuk,10; bonus bAtkEle,Ele_Holy; },{},{}
|
13401,Excalibur_C,Excalibur,5,1,,0,199,,1,0,0x000654E2,7,2,2,4,1,0,2,{ bonus bInt,10; bonus bLuk,10; bonus bAtkEle,Ele_Holy; },{},{}
|
||||||
@ -5475,14 +5475,14 @@
|
|||||||
13403,Solar_Sword_C,Solar Sword,5,2,,0,120,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus2 bHPDrainRate,1000,1; bonus2 bSPLossRate,15,10000; },{},{}
|
13403,Solar_Sword_C,Solar Sword,5,2,,0,120,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus2 bHPDrainRate,1000,1; bonus2 bSPLossRate,15,10000; },{},{}
|
||||||
13404,Platinum_Shotel,Platinum Shotel,5,20,,1500,130,,1,1,0x000654E2,7,2,2,4,55,1,2,{ bonus bCritical,50; },{},{}
|
13404,Platinum_Shotel,Platinum Shotel,5,20,,1500,130,,1,1,0x000654E2,7,2,2,4,55,1,2,{ bonus bCritical,50; },{},{}
|
||||||
13405,Curved_Sword,Curved Sword,5,20,,800,125,,1,2,0x000654E2,7,2,2,4,55,1,2,{ bonus bAspdRate,10; bonus2 bAddEff,Eff_Curse,300; },{},{}
|
13405,Curved_Sword,Curved Sword,5,20,,800,125,,1,2,0x000654E2,7,2,2,4,55,1,2,{ bonus bAspdRate,10; bonus2 bAddEff,Eff_Curse,300; },{},{}
|
||||||
13406,Edger,Edger,5,20,,0,120,,1,0,0x000654E2,7,2,2,1,0,0,2,{ bonus2 bAddRace,RC_Boss,50; bonus2 bAddRace,RC_NonBoss,50; },{},{}
|
13406,Edger,Edger,5,20,,0,120,,1,0,0x000654E2,7,2,2,1,0,0,2,{ bonus2 bAddClass,Class_All,50; },{},{}
|
||||||
13407,Nagan_C,Refined Nagan,5,1,,0,148,,1,0,0x000654E2,7,2,2,4,0,0,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; },{},{}
|
13407,Nagan_C,Refined Nagan,5,1,,0,148,,1,0,0x000654E2,7,2,2,4,0,0,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; },{},{}
|
||||||
13408,Fire_Brand_C,Refined Fireblend,5,1,,0,120,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus bInt,2; skill "MG_FIREBOLT",5; bonus3 bAutoSpell,"MG_FIREBOLT",5,100; },{},{}
|
13408,Fire_Brand_C,Refined Fireblend,5,1,,0,120,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus bInt,2; skill "MG_FIREBOLT",5; bonus3 bAutoSpell,"MG_FIREBOLT",5,100; },{},{}
|
||||||
13409,Immaterial_Sword_C,Refined Immaterial Sword,5,1,,0,160,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,45,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0; },{},{}
|
13409,Immaterial_Sword_C,Refined Immaterial Sword,5,1,,0,160,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,45,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
13410,BF_Sword1,Valorous Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
13410,BF_Sword1,Valorous Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
13411,BF_Sword2,Brave Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; },{},{}
|
13411,BF_Sword2,Brave Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; },{},{}
|
||||||
13412,Twin_Edge_B,Twin Edge of Naght Sieger,5,20,,1500,150,,1,3,0x000654E2,2,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Water; skill "MG_FROSTDIVER",5; autobonus "{ bonus bIgnoreDefRace,RC_NonBoss; }",50,5000; },{},{}
|
13412,Twin_Edge_B,Twin Edge of Naght Sieger,5,20,,1500,150,,1,3,0x000654E2,2,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Water; skill "MG_FROSTDIVER",5; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{}
|
||||||
13413,Twin_Edge_R,Twin Edge of Naght Sieger,5,20,,1500,160,,1,3,0x000654E2,2,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Fire; skill "WZ_METEOR",3; autobonus "{ bonus bIgnoreDefRace,RC_NonBoss; }",50,5000; },{},{}
|
13413,Twin_Edge_R,Twin Edge of Naght Sieger,5,20,,1500,160,,1,3,0x000654E2,2,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Fire; skill "WZ_METEOR",3; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{}
|
||||||
13414,Elemental_Sword,Elemental Sword,5,20,,1200,105,,1,3,0x000654E2,2,2,2,3,70,1,2,{ bonus bStr,2; bonus bInt,4; bonus bDex,1; bonus bMatkRate,5; bonus2 bAddEle,Ele_Neutral,10; bonus3 bAutoSpell,"MG_COLDBOLT",3,50; bonus4 bAutoSpellOnSkill,"MG_COLDBOLT","MG_FIREBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_FIREBOLT","MG_LIGHTNINGBOLT",3,10000; bonus4 bAutoSpellOnSkill,"MG_LIGHTNINGBOLT","WZ_EARTHSPIKE",3,10000; },{},{}
|
13414,Elemental_Sword,Elemental Sword,5,20,,1200,105,,1,3,0x000654E2,2,2,2,3,70,1,2,{ bonus bStr,2; bonus bInt,4; bonus bDex,1; bonus bMatkRate,5; bonus2 bAddEle,Ele_Neutral,10; bonus3 bAutoSpell,"MG_COLDBOLT",3,50; bonus4 bAutoSpellOnSkill,"MG_COLDBOLT","MG_FIREBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_FIREBOLT","MG_LIGHTNINGBOLT",3,10000; bonus4 bAutoSpellOnSkill,"MG_LIGHTNINGBOLT","WZ_EARTHSPIKE",3,10000; },{},{}
|
||||||
13415,N_Falchion,Novice Falchion,5,0,,0,59,,1,3,0x000654E3,7,2,2,1,2,0,2,{},{},{}
|
13415,N_Falchion,Novice Falchion,5,0,,0,59,,1,3,0x000654E3,7,2,2,1,2,0,2,{},{},{}
|
||||||
13416,Krieger_Onehand_Sword1,Glorious Flamberge,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; } },{},{}
|
13416,Krieger_Onehand_Sword1,Glorious Flamberge,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; } },{},{}
|
||||||
@ -5491,7 +5491,7 @@
|
|||||||
13419,Holy_Saber,Holy saber,5,20,,0,160,,1,0,0x000654E2,7,2,2,3,0,0,2,{},{},{}
|
13419,Holy_Saber,Holy saber,5,20,,0,160,,1,0,0x000654E2,7,2,2,3,0,0,2,{},{},{}
|
||||||
13420,Honglyun's_Sword,Honglyun's Sword,5,20,,1200,160,,1,1,0x000654E2,7,2,2,4,70,1,2,{ bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2; },{},{}
|
13420,Honglyun's_Sword,Honglyun's Sword,5,20,,1200,160,,1,1,0x000654E2,7,2,2,4,70,1,2,{ bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2; },{},{}
|
||||||
13421,Ruber,Ruber,5,20,,1500,170,,1,1,0x000444A2,2,2,2,3,50,1,2,{ autobonus "{ bonus2 bSkillAtk,\"KN_BOWLINGBASH\",20; bonus2 bSkillAtk,\"SM_BASH\",20; }",5,15000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
|
13421,Ruber,Ruber,5,20,,1500,170,,1,1,0x000444A2,2,2,2,3,50,1,2,{ autobonus "{ bonus2 bSkillAtk,\"KN_BOWLINGBASH\",20; bonus2 bSkillAtk,\"SM_BASH\",20; }",5,15000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
|
||||||
13422,Flamberge_C,Flamberge,5,0,,0,185,,1,0,0x00004080,7,2,2,3,1,0,2,{ bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
13422,Flamberge_C,Flamberge,5,0,,0,185,,1,0,0x00004080,7,2,2,3,1,0,2,{ bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
// More Cash Shop Items
|
// More Cash Shop Items
|
||||||
13500,Insurance60_Package,Life Insurrance Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14500,10; },{},{}
|
13500,Insurance60_Package,Life Insurrance Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14500,10; },{},{}
|
||||||
13501,Assorted_Scroll_Box,Experience Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
13501,Assorted_Scroll_Box,Experience Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
|
||||||
@ -6430,7 +6430,7 @@
|
|||||||
// More Maces
|
// More Maces
|
||||||
16000,Erde,Erde,5,20,,500,130,,1,2,0x0004C5B2,2,2,2,4,50,1,8,{ bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus bMaxSP,50; bonus bHealPower,10; },{},{}
|
16000,Erde,Erde,5,20,,500,130,,1,2,0x0004C5B2,2,2,2,4,50,1,8,{ bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus bMaxSP,50; bonus bHealPower,10; },{},{}
|
||||||
16001,Red_Square_Bag,Red Square Bag,5,20,,500,130,,1,2,0x0004C5B2,2,2,2,3,50,1,8,{ bonus bMaxHP,200; bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus2 bAddMonsterDropItem,501,50; bonus2 bAddMonsterDropItem,502,20; bonus2 bAddMonsterDropItem,503,20; bonus2 bAddMonsterDropItem,504,20; bonus2 bAddMonsterDropItem,505,10; if(readparam(bStr)>=95) bonus2 bAddEff,Eff_Stun,500; },{},{}
|
16001,Red_Square_Bag,Red Square Bag,5,20,,500,130,,1,2,0x0004C5B2,2,2,2,3,50,1,8,{ bonus bMaxHP,200; bonus2 bSkillAtk,"AM_ACIDTERROR",20; bonus2 bSkillAtk,"AM_DEMONSTRATION",20; bonus2 bAddMonsterDropItem,501,50; bonus2 bAddMonsterDropItem,502,20; bonus2 bAddMonsterDropItem,503,20; bonus2 bAddMonsterDropItem,504,20; bonus2 bAddMonsterDropItem,505,10; if(readparam(bStr)>=95) bonus2 bAddEff,Eff_Stun,500; },{},{}
|
||||||
16002,Stunner_C,Stunner,5,0,,0,175,,1,0,0x00008110,7,2,2,3,1,0,8,{ bonus2 bAddEff,Eff_Stun,1000; bonus2 bAddSize,Size_Small,40; bonus2 bAddSize,Size_Medium,40; bonus2 bAddSize,Size_Large,40; },{},{}
|
16002,Stunner_C,Stunner,5,0,,0,175,,1,0,0x00008110,7,2,2,3,1,0,8,{ bonus2 bAddEff,Eff_Stun,1000; bonus2 bAddSize,Size_All,40; },{},{}
|
||||||
// More Rental Boxes
|
// More Rental Boxes
|
||||||
16134,King_Frog_Hat_Box,Frog King Hat Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5528,1; },{},{}
|
16134,King_Frog_Hat_Box,Frog King Hat Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5528,1; },{},{}
|
||||||
16135,Evil's_Bone_Hat_Box,Satanic Bone Helm Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5529,1; },{},{}
|
16135,Evil's_Bone_Hat_Box,Satanic Bone Helm Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5529,1; },{},{}
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
1284:2892,{ bonus2 bSkillAtk,"AS_SONICBLOW",50; bonus bBaseAtk,50; bonus bFlee,-30; }
|
1284:2892,{ bonus2 bSkillAtk,"AS_SONICBLOW",50; bonus bBaseAtk,50; bonus bFlee,-30; }
|
||||||
1285:2892,{ bonus bCritical,4; bonus bCritAtkRate,40; bonus bMaxHPRate,-10; }
|
1285:2892,{ bonus bCritical,4; bonus bCritAtkRate,40; bonus bMaxHPRate,-10; }
|
||||||
1420:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
|
1420:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
|
||||||
1420:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; }
|
1420:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; }
|
||||||
1421:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; }
|
1421:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; }
|
||||||
1422:2133,{ bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; }
|
1422:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; }
|
||||||
1428:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
|
1428:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
|
||||||
1433:2153,{ bonus2 bSkillAtk,"CR_GRANDCROSS",10; bonus2 bSkillAtk,"LG_RAYOFGENESIS",10; }
|
1433:2153,{ bonus2 bSkillAtk,"CR_GRANDCROSS",10; bonus2 bSkillAtk,"LG_RAYOFGENESIS",10; }
|
||||||
1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HEAD_TOP); }
|
1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getequiprefinerycnt(EQI_HEAD_TOP); }
|
||||||
@ -74,10 +74,10 @@
|
|||||||
2124:2702,{ bonus bAspdRate,10; bonus bShortWeaponDamageReturn,5; }
|
2124:2702,{ bonus bAspdRate,10; bonus bShortWeaponDamageReturn,5; }
|
||||||
2135:2426,{ bonus2 bAddEff,Eff_Blind,500; autobonus "{ bonus bFlee,20; }",200,10000,BF_WEAPON,"{ specialeffect2 EF_INCAGILITY; }"; }
|
2135:2426,{ bonus2 bAddEff,Eff_Blind,500; autobonus "{ bonus bFlee,20; }",200,10000,BF_WEAPON,"{ specialeffect2 EF_INCAGILITY; }"; }
|
||||||
2137:2353:5124,{ bonus bDef,2-getequiprefinerycnt(EQI_HAND_L)-getequiprefinerycnt(EQI_HEAD_TOP); bonus bMdef,5+getequiprefinerycnt(EQI_HAND_L)+getequiprefinerycnt(EQI_HEAD_TOP); }
|
2137:2353:5124,{ bonus bDef,2-getequiprefinerycnt(EQI_HAND_L)-getequiprefinerycnt(EQI_HEAD_TOP); bonus bMdef,5+getequiprefinerycnt(EQI_HAND_L)+getequiprefinerycnt(EQI_HEAD_TOP); }
|
||||||
2169:2491:2590:15051,{ bonus2 bAddDefClass,2311,30; bonus2 bAddDefClass,2312,30; bonus2 bAddDefClass,2320,30; bonus2 bAddDefClass,2321,30; bonus2 bAddDefClass,2322,30; bonus2 bAddDefClass,2317,30; bonus2 bAddDefClass,2318,30; bonus2 bAddDefClass,2327,30; bonus2 bAddDefClass,2319,30; bonus2 bAddDefClass,2330,30; bonus2 bAddDefClass,2329,30; bonus2 bAddDefClass,2333,30; bonus2 bAddDefClass,2332,30; bonus2 bAddDefClass,2309,30; bonus2 bAddDefClass,2310,30; bonus2 bAddDefClass,2315,30; bonus2 bAddDefClass,2316,30; bonus2 bAddDefClass,2314,30; bonus2 bAddDefClass,2313,30; bonus bMaxHPrate,20; bonus bMaxSPrate,10; }
|
2169:2491:2590:15051,{ bonus2 bAddDefMonster,2311,30; bonus2 bAddDefMonster,2312,30; bonus2 bAddDefMonster,2320,30; bonus2 bAddDefMonster,2321,30; bonus2 bAddDefMonster,2322,30; bonus2 bAddDefMonster,2317,30; bonus2 bAddDefMonster,2318,30; bonus2 bAddDefMonster,2327,30; bonus2 bAddDefMonster,2319,30; bonus2 bAddDefMonster,2330,30; bonus2 bAddDefMonster,2329,30; bonus2 bAddDefMonster,2333,30; bonus2 bAddDefMonster,2332,30; bonus2 bAddDefMonster,2309,30; bonus2 bAddDefMonster,2310,30; bonus2 bAddDefMonster,2315,30; bonus2 bAddDefMonster,2316,30; bonus2 bAddDefMonster,2314,30; bonus2 bAddDefMonster,2313,30; bonus bMaxHPrate,20; bonus bMaxSPrate,10; }
|
||||||
2171:15053,{ bonus bAgi,2; }
|
2171:15053,{ bonus bAgi,2; }
|
||||||
2171:15056,{ bonus bAgi,2; }
|
2171:15056,{ bonus bAgi,2; }
|
||||||
2172:15054,{ bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; bonus bStr,2; }
|
2172:15054,{ bonus2 bAddClass,Class_All,10; bonus bStr,2; }
|
||||||
2173:15055,{ bonus bFlee,10; bonus bFlee2,10; }
|
2173:15055,{ bonus bFlee,10; bonus bFlee2,10; }
|
||||||
2241:5136,{ bonus bMaxHP,700; bonus bMaxSP,50; bonus4 bAutoSpellWhenHit,"AL_INCAGI",10,30,1; }
|
2241:5136,{ bonus bMaxHP,700; bonus bMaxSP,50; bonus4 bAutoSpellWhenHit,"AL_INCAGI",10,30,1; }
|
||||||
//2269:5768,{ bonus bInt,1; if(getequiprefinerycnt(EQI_HEAD_TOP) > 6) bonus bMaxSPrate,getequiprefinerycnt(EQI_HEAD_TOP)-6; }
|
//2269:5768,{ bonus bInt,1; if(getequiprefinerycnt(EQI_HEAD_TOP) > 6) bonus bMaxSPrate,getequiprefinerycnt(EQI_HEAD_TOP)-6; }
|
||||||
@ -101,21 +101,20 @@
|
|||||||
//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
|
//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
|
||||||
2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
|
2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
|
||||||
2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
|
2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
|
||||||
2374:2729,{ bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; }
|
2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
|
||||||
2375:2729,{ bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; }
|
2376:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
|
||||||
2376:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
|
2377:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
|
||||||
2377:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
|
2378:2435:2538,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
|
||||||
2378:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
|
2379:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
|
||||||
2379:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
|
2380:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
|
||||||
2380:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
|
2381:2436:2539,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
|
||||||
2381:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
|
2382:2437:2540,{ for (set .@i,0; .@i < RC_DemiHuman; set .@i,.@i+1) { bonus2 bSubRace,.@i,-300; } bonus2 bSubRace,RC_Angel,-300; bonus2 bSubRace,RC_Dragon,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
|
||||||
2382:2437:2540,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
|
|
||||||
2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bVariableCastrate,-3; bonus bDelayrate,-15; }
|
2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bVariableCastrate,-3; bonus bDelayrate,-15; }
|
||||||
2390:2749,{ bonus bFlee2,5; }
|
2390:2749,{ bonus bFlee2,5; }
|
||||||
2394:2444:2549,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
|
2394:2444:2549,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
|
||||||
2399:2553,{ bonus bAgi,5; bonus bFlee,15; }
|
2399:2553,{ bonus bAgi,5; bonus bFlee,15; }
|
||||||
2399:2553:5467,{ bonus2 bSubRace,RC_Dragon,20; }
|
2399:2553:5467,{ bonus2 bSubRace,RC_Dragon,20; }
|
||||||
2408:2655,{ bonus bBaseAtk,50; bonus2 bAddDefClass,1196,20; bonus2 bAddDefClass,1197,20; }
|
2408:2655,{ bonus bBaseAtk,50; bonus2 bAddDefMonster,1196,20; bonus2 bAddDefMonster,1197,20; }
|
||||||
2424:2528,{ bonus bHPrecovRate,5; bonus bMaxHPrate,10; }
|
2424:2528,{ bonus bHPrecovRate,5; bonus bMaxHPrate,10; }
|
||||||
2425:2529,{ bonus bFlee,10; }
|
2425:2529,{ bonus bFlee,10; }
|
||||||
2425:2530,{ bonus bFlee,10; }
|
2425:2530,{ bonus bFlee,10; }
|
||||||
@ -128,9 +127,9 @@
|
|||||||
2472:2570:15030:16013,{ bonus2 bAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bSkillAtk,"AB_ADORAMUS",200; bonus2 bSkillUseSP,"AB_ADORAMUS",-30; }
|
2472:2570:15030:16013,{ bonus2 bAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bSkillAtk,"AB_ADORAMUS",200; bonus2 bSkillUseSP,"AB_ADORAMUS",-30; }
|
||||||
2472:2570:15030:16018,{ bonus2 bAddRace,RC_Undead,30; bonus2 bMagicAddRace,RC_Undead,30; bonus2 bSkillAtk,"AB_ADORAMUS",200; bonus2 bSkillUseSP,"AB_ADORAMUS",-30; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus2 bVariableCastrate,"PR_TURNUNDEAD",-50; bonus2 bVariableCastrate,"PR_MAGNUS",-50; bonus2 bVariableCastrate,"AB_JUDEX",-50; bonus2 bVariableCastrate,"AB_ADORAMUS",-50; }
|
2472:2570:15030:16018,{ bonus2 bAddRace,RC_Undead,30; bonus2 bMagicAddRace,RC_Undead,30; bonus2 bSkillAtk,"AB_ADORAMUS",200; bonus2 bSkillUseSP,"AB_ADORAMUS",-30; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus2 bVariableCastrate,"PR_TURNUNDEAD",-50; bonus2 bVariableCastrate,"PR_MAGNUS",-50; bonus2 bVariableCastrate,"AB_JUDEX",-50; bonus2 bVariableCastrate,"AB_ADORAMUS",-50; }
|
||||||
2475:2574:2883:15036,{ bonus bMaxHPRate,14; bonus2 bSubEle,Ele_Neutral,10; bonus2 bSkillAtk,"RK_HUNDREDSPEAR",50; skill "CR_AUTOGUARD",1; bonus bUseSPrate,10; }
|
2475:2574:2883:15036,{ bonus bMaxHPRate,14; bonus2 bSubEle,Ele_Neutral,10; bonus2 bSkillAtk,"RK_HUNDREDSPEAR",50; skill "CR_AUTOGUARD",1; bonus bUseSPrate,10; }
|
||||||
2476:2575:2884:15037,{ bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; bonus3 bAutoSpell,"RK_STORMBLAST",1,20; bonus2 bSkillAtk,"RK_WINDCUTTER",100; bonus2 bSkillAtk,"RK_SONICWAVE",100; autobonus3 "{ bonus bAspd,2; }",1000,10000,"LK_CONCENTRATION","{ specialeffect2 EF_ENHANCE; }"; }
|
2476:2575:2884:15037,{ bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"RK_STORMBLAST",1,20; bonus2 bSkillAtk,"RK_WINDCUTTER",100; bonus2 bSkillAtk,"RK_SONICWAVE",100; autobonus3 "{ bonus bAspd,2; }",1000,10000,"LK_CONCENTRATION","{ specialeffect2 EF_ENHANCE; }"; }
|
||||||
2477:2577:2886:15038,{ bonus bFlee,10; bonus bCritical,15; bonus bCritAtkRate,40; bonus2 bSkillAtk,"GC_CROSSIMPACT",20; bonus bUseSPrate,10; }
|
2477:2577:2886:15038,{ bonus bFlee,10; bonus bCritical,15; bonus bCritAtkRate,40; bonus2 bSkillAtk,"GC_CROSSIMPACT",20; bonus bUseSPrate,10; }
|
||||||
2478:2578:2887:15039,{ bonus3 bAutoSpell,"ASC_BREAKER",(getskilllv("ASC_BREAKER"))?getskilllv("ASC_BREAKER"):1,20; if(readparam(bStr)>119) { bonus bBaseAtk,30; } bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; bonus bMatkRate,10; bonus bCritical,-20; }
|
2478:2578:2887:15039,{ bonus3 bAutoSpell,"ASC_BREAKER",(getskilllv("ASC_BREAKER"))?getskilllv("ASC_BREAKER"):1,20; if(readparam(bStr)>119) { bonus bBaseAtk,30; } bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bCritical,-20; }
|
||||||
2479:2580:2890:15042,{ bonus bAspd,2; bonus2 bSkillAtk,"RA_ARROWSTORM",50; bonus bLongAtkRate,30; bonus3 bAutoSpell,"AC_DOUBLE",(getskilllv("AC_DOUBLE") < 3)?3:getskilllv("AC_DOUBLE"),20; }
|
2479:2580:2890:15042,{ bonus bAspd,2; bonus2 bSkillAtk,"RA_ARROWSTORM",50; bonus bLongAtkRate,30; bonus3 bAutoSpell,"AC_DOUBLE",(getskilllv("AC_DOUBLE") < 3)?3:getskilllv("AC_DOUBLE"),20; }
|
||||||
2480:2581:2891:15043,{ bonus bMaxHPRate,15; bonus bFlee2,20; bonus2 bSkillAtk,"RA_CLUSTERBOMB",20; bonus bLongAtkRate,-30; bonus bAspd,-7; }
|
2480:2581:2891:15043,{ bonus bMaxHPRate,15; bonus bFlee2,20; bonus2 bSkillAtk,"RA_CLUSTERBOMB",20; bonus bLongAtkRate,-30; bonus bAspd,-7; }
|
||||||
2483:2586:15046,{ bonus2 bSubRace,RC_DemiHuman,15; }
|
2483:2586:15046,{ bonus2 bSubRace,RC_DemiHuman,15; }
|
||||||
@ -154,14 +153,14 @@
|
|||||||
2626:2786,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
|
2626:2786,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
|
||||||
2678:2679,{ bonus4 bAutoSpell,"MO_EXTREMITYFIST",1,3,1; bonus3 bAutoSpell,"PR_LEXAETERNA",1,20; bonus3 bAutoSpell,"AS_SONICBLOW",5,50; bonus3 bAutoSpell,"MO_INVESTIGATE",5,20; bonus3 bAutoSpell,"ASC_METEORASSAULT",2,50; }
|
2678:2679,{ bonus4 bAutoSpell,"MO_EXTREMITYFIST",1,3,1; bonus3 bAutoSpell,"PR_LEXAETERNA",1,20; bonus3 bAutoSpell,"AS_SONICBLOW",5,50; bonus3 bAutoSpell,"MO_INVESTIGATE",5,20; bonus3 bAutoSpell,"ASC_METEORASSAULT",2,50; }
|
||||||
//2679:2792,{ bonus4 bAutoSpell,"MO_EXTREMITYFIST",1,3,1; bonus3 bAutoSpell,"PR_LEXAETERNA",1,20; bonus3 bAutoSpell,"AS_SONICBLOW",5,50; bonus3 bAutoSpell,"MO_INVESTIGATE",5,20; bonus3 bAutoSpell,"ASC_METEORASSAULT",2,50; }
|
//2679:2792,{ bonus4 bAutoSpell,"MO_EXTREMITYFIST",1,3,1; bonus3 bAutoSpell,"PR_LEXAETERNA",1,20; bonus3 bAutoSpell,"AS_SONICBLOW",5,50; bonus3 bAutoSpell,"MO_INVESTIGATE",5,20; bonus3 bAutoSpell,"ASC_METEORASSAULT",2,50; }
|
||||||
2720:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2720:2772,{ bonus2 bAddClass,Class_All,3; bonus bHealPower,5; }
|
||||||
2721:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2721:2772,{ bonus2 bAddClass,Class_All,3; bonus bHealPower,5; }
|
||||||
2722:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2722:2772,{ bonus2 bAddClass,Class_All,3; bonus bHealPower,5; }
|
||||||
2723:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2723:2772,{ bonus2 bAddClass,Class_All,3; bonus bHealPower,5; }
|
||||||
2724:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2724:2772,{ bonus2 bAddClass,Class_All,3; bonus bHealPower,5; }
|
||||||
2725:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2725:2772,{ bonus2 bAddClass,Class_All,3; bonus bHealPower,5; }
|
||||||
2726:2727,{ bonus bUseSPrate,-25; }
|
2726:2727,{ bonus bUseSPrate,-25; }
|
||||||
2733:2772,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
2733:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
|
||||||
2747:13061,{ bonus bHit,5; bonus bMatk,5; bonus2 bSkillUseSP,"SC_ENERVATION",20; bonus2 bSkillUseSP,"SC_GROOMY",20; }
|
2747:13061,{ bonus bHit,5; bonus bMatk,5; bonus2 bSkillUseSP,"SC_ENERVATION",20; bonus2 bSkillUseSP,"SC_GROOMY",20; }
|
||||||
2751:2888,{ bonus bAspdRate,3; bonus bVariableCastrate,-3; }
|
2751:2888,{ bonus bAspdRate,3; bonus bVariableCastrate,-3; }
|
||||||
2777:2778:5479,{ bonus bMaxHP,300; bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,5; }
|
2777:2778:5479,{ bonus bMaxHP,300; bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,5; }
|
||||||
@ -226,12 +225,12 @@
|
|||||||
//9024:18832,{ bonus3 bAutoSpell,"BS_ADRENALINE",2,(GetPetRelationship >= 3)?15:10; }
|
//9024:18832,{ bonus3 bAutoSpell,"BS_ADRENALINE",2,(GetPetRelationship >= 3)?15:10; }
|
||||||
13027:15044,{ set .@i,getequiprefinerycnt(EQI_ARMOR)?getequiprefinerycnt(EQI_ARMOR):1; bonus3 bAddMonsterDropItem,929,RC_DemiHuman,70*.@i; bonus3 bAddMonsterDropItem,970,RC_DemiHuman,50*.@i; bonus3 bAddMonsterDropItem,929,RC_Brute,70*.@i; bonus3 bAddMonsterDropItem,970,RC_Brute,50*.@i; }
|
13027:15044,{ set .@i,getequiprefinerycnt(EQI_ARMOR)?getequiprefinerycnt(EQI_ARMOR):1; bonus3 bAddMonsterDropItem,929,RC_DemiHuman,70*.@i; bonus3 bAddMonsterDropItem,970,RC_DemiHuman,50*.@i; bonus3 bAddMonsterDropItem,929,RC_Brute,70*.@i; bonus3 bAddMonsterDropItem,970,RC_Brute,50*.@i; }
|
||||||
13034:13035,{ bonus bMaxSP,20; bonus bMaxHPRate,5; bonus bHit,10; bonus2 bAddSize,Size_Large,30; autobonus "{ bonus bAspdRate,100; }",1,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }
|
13034:13035,{ bonus bMaxSP,20; bonus bMaxHPRate,5; bonus bHit,10; bonus2 bAddSize,Size_Large,30; autobonus "{ bonus bAspdRate,100; }",1,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }
|
||||||
15088:18816:18818,{ bonus bMatk,BaseLevel/3; bonus2 bExpAddRace,RC_NonBoss,5; bonus2 bExpAddRace,RC_Boss,5; }
|
15088:18816:18818,{ bonus bMatk,BaseLevel/3; bonus2 bExpAddClass,Class_All,5; }
|
||||||
15088:18817:18819,{ bonus bBaseAtk,BaseLevel/3; bonus2 bExpAddRace,RC_NonBoss,5; bonus2 bExpAddRace,RC_Boss,5; }
|
15088:18817:18819,{ bonus bBaseAtk,BaseLevel/3; bonus2 bExpAddClass,Class_All,5; }
|
||||||
18507:18539,{ bonus bUseSPrate,-3; }
|
18507:18539,{ bonus bUseSPrate,-3; }
|
||||||
18559:18560,{ bonus bCritAtkRate,5; }
|
18559:18560,{ bonus bCritAtkRate,5; }
|
||||||
|
|
||||||
4606:4605,{ bonus2 bSubEle,0,20; bonus bFlee,20; bonus2 bHPLossRate,100,6000; bonus2 bSPLossRate,6,6000; }
|
4606:4605,{ bonus2 bSubEle,Ele_Neutral,20; bonus bFlee,20; bonus2 bHPLossRate,100,6000; bonus2 bSPLossRate,6,6000; }
|
||||||
24072:24075,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
24072:24075,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
||||||
24073:24076,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
24073:24076,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
||||||
24074:24077,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
24074:24077,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; }
|
||||||
@ -247,17 +246,17 @@
|
|||||||
24037:24043,{ bonus bDex,1; }
|
24037:24043,{ bonus bDex,1; }
|
||||||
24038:24044,{ bonus bVit,1; }
|
24038:24044,{ bonus bVit,1; }
|
||||||
24039:24045,{ bonus bAgi,1; }
|
24039:24045,{ bonus bAgi,1; }
|
||||||
24046:24051,{ bonus2 bSubEle,0,1; if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L)) { bonus2 bSubEle,0,1; } }
|
24046:24051,{ bonus2 bSubEle,Ele_Neutral,1; if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L)) { bonus2 bSubEle,Ele_Neutral,1; } }
|
||||||
24052:24062,{ bonus2 bExpAddRace,7,3; }
|
24052:24062,{ bonus2 bExpAddRace,RC_DemiHuman,3; }
|
||||||
24053:24063,{ bonus2 bAddRace,10,5; bonus2 bMagicAddRace,10,5; }
|
24053:24063,{ bonus2 bAddRace,10,5; bonus2 bMagicAddRace,10,5; }
|
||||||
24054:24065,{ bonus2 bExpAddRace,2,3; }
|
24054:24065,{ bonus2 bExpAddRace,RC_Brute,3; }
|
||||||
24055:24066,{ bonus2 bExpAddRace,4,3; }
|
24055:24066,{ bonus2 bExpAddRace,RC_Insect,3; }
|
||||||
24056:24067,{ bonus2 bExpAddRace,5,3; }
|
24056:24067,{ bonus2 bExpAddRace,RC_Fish,3; }
|
||||||
24057:24071,{ bonus2 bExpAddRace,9,3; }
|
24057:24071,{ bonus2 bExpAddRace,RC_Dragon,3; }
|
||||||
24058:24068,{ bonus2 bExpAddRace,8,3; }
|
24058:24068,{ bonus2 bExpAddRace,RC_Angel,3; }
|
||||||
24059:24069,{ bonus2 bExpAddRace,0,3; }
|
24059:24069,{ bonus2 bExpAddRace,RC_Formless,3; }
|
||||||
24060:24070,{ bonus2 bExpAddRace,1,3; }
|
24060:24070,{ bonus2 bExpAddRace,RC_Undead,3; }
|
||||||
24061:24064,{ bonus2 bExpAddRace,3,3; }
|
24061:24064,{ bonus2 bExpAddRace,RC_Plant,3; }
|
||||||
24078:24079:24080,{ bonus3 bSPDrainRate,10,1+(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)/10),0; }
|
24078:24079:24080,{ bonus3 bSPDrainRate,10,1+(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)/10),0; }
|
||||||
24081:24082:24083,{ bonus3 bHPDrainRateRace,11,40,2+(getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)/5); }
|
24081:24082:24083,{ bonus3 bHPDrainRateRace,11,40,2+(getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)/5); }
|
||||||
1990:2989,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",200; }
|
1990:2989,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",200; }
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,56 +1,60 @@
|
|||||||
// Experience & Drop Rate Modifier Database
|
// Experience & Drop Rate Modifier Database
|
||||||
//
|
//
|
||||||
// Structure of Database:
|
// Structure of Database:
|
||||||
// Type,Race,Level difference,Rate
|
// Type,Class,Level difference,Rate
|
||||||
//
|
//
|
||||||
// TYPE:
|
// TYPE:
|
||||||
// 1=experience, 2=item drop
|
// 1=experience, 2=item drop
|
||||||
// RACE:
|
// CLASS:
|
||||||
// 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
// 0=Normal monsters, 1=Boss monsters, 2=Guardians
|
||||||
// 5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
// 10=Boss monsters, 11=Normal monsters
|
|
||||||
//
|
//
|
||||||
// Note: RENEWAL_DROP and/or RENEWAL_EXP must be enabled.
|
// Note: RENEWAL_DROP and/or RENEWAL_EXP must be enabled.
|
||||||
|
|
||||||
// EXP modifiers due to level difference
|
// EXP modifiers due to level difference
|
||||||
1,11,16,40
|
1,0,16,40
|
||||||
1,11,15,115
|
1,0,15,115
|
||||||
1,11,14,120
|
1,0,14,120
|
||||||
1,11,13,125
|
1,0,13,125
|
||||||
1,11,12,130
|
1,0,12,130
|
||||||
1,11,11,135
|
1,0,11,135
|
||||||
1,11,10,140
|
1,0,10,140
|
||||||
1,11,9,135
|
1,0,9,135
|
||||||
1,11,8,130
|
1,0,8,130
|
||||||
1,11,7,125
|
1,0,7,125
|
||||||
1,11,6,120
|
1,0,6,120
|
||||||
1,11,5,115
|
1,0,5,115
|
||||||
1,11,4,110
|
1,0,4,110
|
||||||
1,11,3,105
|
1,0,3,105
|
||||||
1,11,0,100
|
1,0,0,100
|
||||||
1,11,-1,100
|
1,0,-1,100
|
||||||
1,11,-6,95
|
1,0,-6,95
|
||||||
1,11,-11,90
|
1,0,-11,90
|
||||||
1,11,-16,85
|
1,0,-16,85
|
||||||
1,11,-21,60
|
1,0,-21,60
|
||||||
1,11,-26,35
|
1,0,-26,35
|
||||||
1,11,-31,10
|
1,0,-31,10
|
||||||
|
|
||||||
// Boss Type
|
// Boss Type
|
||||||
1,10,0,100
|
1,1,0,100
|
||||||
|
|
||||||
|
// Guardian Type
|
||||||
|
1,2,0,100
|
||||||
|
|
||||||
// Drop rate modifiers due to level difference
|
// Drop rate modifiers due to level difference
|
||||||
2,11,16,50
|
2,0,16,50
|
||||||
2,11,13,60
|
2,0,13,60
|
||||||
2,11,10,70
|
2,0,10,70
|
||||||
2,11,7,80
|
2,0,7,80
|
||||||
2,11,4,90
|
2,0,4,90
|
||||||
2,11,0,100
|
2,0,0,100
|
||||||
2,11,-4,90
|
2,0,-4,90
|
||||||
2,11,-7,80
|
2,0,-7,80
|
||||||
2,11,-10,70
|
2,0,-10,70
|
||||||
2,11,-13,60
|
2,0,-13,60
|
||||||
2,11,-16,50
|
2,0,-16,50
|
||||||
|
|
||||||
// Boss Type
|
// Boss Type
|
||||||
2,10,0,100
|
2,1,0,100
|
||||||
|
|
||||||
|
// Guardian Type
|
||||||
|
2,2,0,100
|
||||||
|
@ -65,28 +65,22 @@ bonus bLongAtkDef,n; Adds n% damage reduction against ranged physical attacks
|
|||||||
bonus bMagicAtkDef,n; Adds n% damage reduction against magical attacks
|
bonus bMagicAtkDef,n; Adds n% damage reduction against magical attacks
|
||||||
bonus bMiscAtkDef,n; Adds n% damage reduction against MISC attacks (traps, falcon, ...)
|
bonus bMiscAtkDef,n; Adds n% damage reduction against MISC attacks (traps, falcon, ...)
|
||||||
bonus bIgnoreDefRace,n; Disregard DEF against enemies of race n
|
bonus bIgnoreDefRace,n; Disregard DEF against enemies of race n
|
||||||
n: 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
n: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
bonus bIgnoreDefEle,n; Disregard DEF against enemies of element n
|
bonus bIgnoreDefEle,n; Disregard DEF against enemies of element n
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison, 6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
bonus bIgnoreMDefRace,n; Disregard MDEF against enemies of race n
|
bonus bIgnoreMDefRace,n; Disregard MDEF against enemies of race n
|
||||||
n: 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
n: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
bonus bIgnoreMDefEle,n; Disregard MDEF against enemies of element n
|
bonus bIgnoreMDefEle,n; Disregard MDEF against enemies of element n
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison, 6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
bonus bIgnoreMdefRate,n; Disregard n% of the target's MDEF
|
bonus bIgnoreMdefRate,n; Disregard n% of the target's MDEF
|
||||||
bonus bDefRatioAtkRace,n; Does more damage depending on monster Defense against race n (defense disregard)
|
bonus bDefRatioAtkRace,n; Does more damage depending on monster Defense against race n (defense disregard)
|
||||||
n: 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
n: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
bonus bDefRatioAtkEle,n; n attribute if defensive power is high the high extent big damage is given, (defense disregard)
|
bonus bDefRatioAtkEle,n; n attribute if defensive power is high the high extent big damage is given, (defense disregard)
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison, 6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
bonus bAtkEle,n; Gives the player's attacks element n
|
bonus bAtkEle,n; Gives the player's attacks element n
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison, 6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
bonus bDefEle,n; Gives the player's defense element n
|
bonus bDefEle,n; Gives the player's defense element n
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison, 6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
bonus bSplashRange,n; Splash attack radius + n (e.g. n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc)
|
bonus bSplashRange,n; Splash attack radius + n (e.g. n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc)
|
||||||
Only the highest among all is applied
|
Only the highest among all is applied
|
||||||
bonus bSplashAddRange,n; Splash attack radius + n (e.g. n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc)
|
bonus bSplashAddRange,n; Splash attack radius + n (e.g. n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc)
|
||||||
@ -110,35 +104,25 @@ bonus2 bResEff,e,x; Adds a x/100 tolerance to effect e (e.g. x=100 makes 1% to
|
|||||||
Eff_DPoison, Eff_Fear, Eff_Burning
|
Eff_DPoison, Eff_Fear, Eff_Burning
|
||||||
bonus2 bCastrate,n,x; Adjust casting time of skill n by x% (supports skill names)
|
bonus2 bCastrate,n,x; Adjust casting time of skill n by x% (supports skill names)
|
||||||
bonus2 bAddSize,n,x; +x% physical damage against size n.
|
bonus2 bAddSize,n,x; +x% physical damage against size n.
|
||||||
n: 0=Small 1=Medium 2=Large
|
n: Size_Small, Size_Medium, Size_Large, Size_All
|
||||||
bonus2 bMagicAddSize,n,x; +x% magical damage against size n.
|
bonus2 bMagicAddSize,n,x; +x% magical damage against size n.
|
||||||
n: 0=Small 1=Medium 2=Large
|
n: Size_Small, Size_Medium, Size_Large, Size_All
|
||||||
bonus2 bSubSize,n,x; x% Damage reduction against size n.
|
bonus2 bSubSize,n,x; x% Damage reduction against size n.
|
||||||
n: 0=Small 1=Medium 2=Large
|
n: Size_Small, Size_Medium, Size_Large, Size_All
|
||||||
bonus2 bAddRace,n,x; +x% physical damage against race n
|
bonus2 bAddRace,n,x; +x% physical damage against race n
|
||||||
n: 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
n: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
bonus2 bMagicAddRace,n,x; +x% magical damage against race n
|
bonus2 bMagicAddRace,n,x; +x% magical damage against race n
|
||||||
n: 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
n: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
bonus2 bSubRace,n,x; +x% damage reduction against race n
|
bonus2 bSubRace,n,x; +x% damage reduction against race n
|
||||||
n: 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
n: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
bonus2 bAddEle,n,x; +x% physical damage against element n
|
bonus2 bAddEle,n,x; +x% physical damage against element n
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
|
||||||
bonus2 bMagicAddEle,n,x; +x% magical damage against element n
|
bonus2 bMagicAddEle,n,x; +x% magical damage against element n
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
|
||||||
bonus2 bSubEle,n,x; x% Damage reduction against element n.
|
bonus2 bSubEle,n,x; x% Damage reduction against element n.
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
|
||||||
bonus2 bMagicAtkEle,n,x; Increases damage of n element magic by x%.
|
bonus2 bMagicAtkEle,n,x; Increases damage of n element magic by x%.
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
|
||||||
bonus2 bAddDamageClass,n,x; +x% extra physical damage against monsters of class n
|
bonus2 bAddDamageClass,n,x; +x% extra physical damage against monsters of class n
|
||||||
Against players, n is their job id
|
Against players, n is their job id
|
||||||
bonus2 bAddMagicDamageClass,n,x; +x% extra magical damage against monsters of class n
|
bonus2 bAddMagicDamageClass,n,x; +x% extra magical damage against monsters of class n
|
||||||
@ -147,7 +131,7 @@ bonus2 bAddDefClass,n,x; x% physical damage reduction against monsters of class
|
|||||||
Against players, n is their job id.
|
Against players, n is their job id.
|
||||||
bonus2 bAddMDefClass,n,x; x% magical damage reduction against monsters of class n
|
bonus2 bAddMDefClass,n,x; x% magical damage reduction against monsters of class n
|
||||||
Against players, n is their job id.
|
Against players, n is their job id.
|
||||||
bonus2 bIgnoreMdefRate,n,x; Disregard x% of the target's MDEF if the target belongs to race n
|
bonus2 bIgnoreMdefRaceRate,n,x; Disregard x% of the target's MDEF if the target belongs to race n
|
||||||
bonus2 bHPDrainRate,n,x; n/10 % probability to drain x% HP when attacking
|
bonus2 bHPDrainRate,n,x; n/10 % probability to drain x% HP when attacking
|
||||||
bonus2 bSPDrainRate,n,x; n/10 % probability to drain x% SP when attacking
|
bonus2 bSPDrainRate,n,x; n/10 % probability to drain x% SP when attacking
|
||||||
bonus2 bSPVanishRate,n,x; Add the (n/10)% chance of decreasing enemy's SP (player) amount by x% when attacking
|
bonus2 bSPVanishRate,n,x; Add the (n/10)% chance of decreasing enemy's SP (player) amount by x% when attacking
|
||||||
@ -160,9 +144,7 @@ bonus2 bGetZenyNum,n,x; When killing a monster, there is a x% chance of gainin
|
|||||||
bonus2 bAddGetZenyNum,n,x; Same as bGetZenyNum, but the rates and zeny to gain stack.
|
bonus2 bAddGetZenyNum,n,x; Same as bGetZenyNum, but the rates and zeny to gain stack.
|
||||||
|
|
||||||
bonus3 bAddMonsterDropItem,n,x,y; Adds a y/100% chance for item n to be dropped, when killing any monster of race x.
|
bonus3 bAddMonsterDropItem,n,x,y; Adds a y/100% chance for item n to be dropped, when killing any monster of race x.
|
||||||
0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
If 'y' is negative value, then it's a part of formula
|
If 'y' is negative value, then it's a part of formula
|
||||||
chance = -y*(killed_mob_level/10)+1
|
chance = -y*(killed_mob_level/10)+1
|
||||||
bonus3 bAutoSpell,n,x,y; Auto Spell casting on attack of spell n at level x with y/10% chance. (supports skill names)
|
bonus3 bAutoSpell,n,x,y; Auto Spell casting on attack of spell n at level x with y/10% chance. (supports skill names)
|
||||||
@ -186,9 +168,7 @@ bonus bSPGainValue,n; When killing a monster by physical attack, you gain n SP
|
|||||||
bonus bHPGainValue,n; When killing a monster by physical attack, you gain n HP
|
bonus bHPGainValue,n; When killing a monster by physical attack, you gain n HP
|
||||||
bonus2 bCriticalAddRace,r,n; Critical + n vs. enemies of race r
|
bonus2 bCriticalAddRace,r,n; Critical + n vs. enemies of race r
|
||||||
r:
|
r:
|
||||||
0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
bonus2 bHPRegenRate,n,x; Gain n HP every x milliseconds
|
bonus2 bHPRegenRate,n,x; Gain n HP every x milliseconds
|
||||||
bonus2 bHPLossRate,n,x; Lose n HP every x milliseconds
|
bonus2 bHPLossRate,n,x; Lose n HP every x milliseconds
|
||||||
bonus2 bAddEffWhenHit,n,x; x/100% chance to cause n state to the enemy when being hit by physical damage
|
bonus2 bAddEffWhenHit,n,x; x/100% chance to cause n state to the enemy when being hit by physical damage
|
||||||
@ -291,16 +271,12 @@ bonus3 bAddEffWhenHit,n,x,y; x/100 chance to cause n state to the enemy when be
|
|||||||
ATF_LONG: Trigger in ranged attacks (default: trigger on all attacks)
|
ATF_LONG: Trigger in ranged attacks (default: trigger on all attacks)
|
||||||
|
|
||||||
bonus3 bAddMonsterDropItemGroup,n,x,y; Adds a y/100% chance to get an item of group type n when you kill a monster of race x (Check db/item_group_db.txt)
|
bonus3 bAddMonsterDropItemGroup,n,x,y; Adds a y/100% chance to get an item of group type n when you kill a monster of race x (Check db/item_group_db.txt)
|
||||||
0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
x: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
If 'y' is negative value, then it's a part of formula
|
If 'y' is negative value, then it's a part of formula
|
||||||
chance = -y*(killed_mob_level/10)+1
|
chance = -y*(killed_mob_level/10)+1
|
||||||
|
|
||||||
bonus2 bWeaponComaRace,x,y; y/100% chance to cause Coma when attacking a monster of race x with a normal attack
|
bonus2 bWeaponComaRace,x,y; y/100% chance to cause Coma when attacking a monster of race x with a normal attack
|
||||||
0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect,
|
x: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon,
|
|
||||||
10=Boss monster, 11=Other than (normal monster) boss monster
|
|
||||||
|
|
||||||
bonus bAddStealRate,n; n/100% increase to Steal skill success chance
|
bonus bAddStealRate,n; n/100% increase to Steal skill success chance
|
||||||
|
|
||||||
@ -315,8 +291,7 @@ bonus2 bSPDrainValue,n,x; When hitting a monster by physical attack, ...
|
|||||||
bonus2 bIgnoreDefRate,n,x; Disregard x% of the target's DEF if the target belongs to race n
|
bonus2 bIgnoreDefRate,n,x; Disregard x% of the target's DEF if the target belongs to race n
|
||||||
|
|
||||||
bonus3 bAddEle,n,x,t; +x% physical damage against element n
|
bonus3 bAddEle,n,x,t; +x% physical damage against element n
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
|
||||||
t: Trigger criteria:
|
t: Trigger criteria:
|
||||||
BF_SHORT: Trigger on melee attack
|
BF_SHORT: Trigger on melee attack
|
||||||
BF_LONG: Trigger on ranged attack
|
BF_LONG: Trigger on ranged attack
|
||||||
@ -336,8 +311,7 @@ bonus3 bAddEle,n,x,t; +x% physical damage against element n
|
|||||||
2=use random skill lv in [1..y]
|
2=use random skill lv in [1..y]
|
||||||
3=1+2 (random lv on enemy)
|
3=1+2 (random lv on enemy)
|
||||||
bonus3 bSubEle,n,x,t; x% Damage reduction against element n.
|
bonus3 bSubEle,n,x,t; x% Damage reduction against element n.
|
||||||
n: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
|
n: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
|
||||||
t: Trigger criteria:
|
t: Trigger criteria:
|
||||||
BF_SHORT: Trigger on melee attack
|
BF_SHORT: Trigger on melee attack
|
||||||
BF_LONG: Trigger on ranged attack
|
BF_LONG: Trigger on ranged attack
|
||||||
@ -375,8 +349,7 @@ bonus bUnbreakable,n; Reduces the break chance of all equipped equipment by n%
|
|||||||
bonus bShortWeaponDamageReturn,n; Reflects n% of received melee damage back to the enemy that caused it.
|
bonus bShortWeaponDamageReturn,n; Reflects n% of received melee damage back to the enemy that caused it.
|
||||||
bonus bLongWeaponDamageReturn,n; Reflects n% of received ranged damage back to the enemy that caused it.
|
bonus bLongWeaponDamageReturn,n; Reflects n% of received ranged damage back to the enemy that caused it.
|
||||||
bonus2 bWeaponComaEle,x,n; Adds a n/100% chance to cause Coma when attacking a monster of element x with normal attack.
|
bonus2 bWeaponComaEle,x,n; Adds a n/100% chance to cause Coma when attacking a monster of element x with normal attack.
|
||||||
x: 0=Neutral, 1=Water, 2=Earth, 3=Fire, 4=Wind, 5=Poison,
|
x: Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
|
||||||
6=Holy, 7=Dark, 8=Spirit, 9=Undead
|
|
||||||
bonus2 bAddEff2,e,n; Adds a n/100% chance to cause status change e on self when attacking.
|
bonus2 bAddEff2,e,n; Adds a n/100% chance to cause status change e on self when attacking.
|
||||||
e: Eff_Blind, Eff_Sleep, Eff_Poison, Eff_Freeze, Eff_Silence,
|
e: Eff_Blind, Eff_Sleep, Eff_Poison, Eff_Freeze, Eff_Silence,
|
||||||
Eff_Stun, Eff_Curse, Eff_Confusion, Eff_Stone, Eff_Bleeding,
|
Eff_Stun, Eff_Curse, Eff_Confusion, Eff_Stone, Eff_Bleeding,
|
||||||
@ -425,3 +398,25 @@ bonus2 bVariableCastrate,s,x; Increases variable cast time of skill s by x%. (s
|
|||||||
bonus2 bFixedCastrate,s,x; Increases fixed cast time of skill s by x%. (supports skill names.)
|
bonus2 bFixedCastrate,s,x; Increases fixed cast time of skill s by x%. (supports skill names.)
|
||||||
bonus4 bSetDefRace,n,x,r,y; Set DEF to y of an enemy of race n at x% for r milliseconds with normal attack.
|
bonus4 bSetDefRace,n,x,r,y; Set DEF to y of an enemy of race n at x% for r milliseconds with normal attack.
|
||||||
bonus4 bSetMDefRace,n,x,r,y; Set MDEF to y of an enemy of race n at x% for r milliseconds with normal attack.
|
bonus4 bSetMDefRace,n,x,r,y; Set MDEF to y of an enemy of race n at x% for r milliseconds with normal attack.
|
||||||
|
|
||||||
|
|
||||||
|
bonus bIgnoreDefClass,n; Disregard DEF against enemies of class n
|
||||||
|
n: Class_Normal, Class_Boss, Class_Guardian
|
||||||
|
bonus bDefRatioAtkClass,n; Does more damage depending on monster Defense against class n (defense disregard)
|
||||||
|
|
||||||
|
bonus2 bIgnoreDefRaceRate,n,x; Disregard x% of the target's DEF if the target belongs to race n
|
||||||
|
n: RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_All
|
||||||
|
bonus2 bAddClass,n,x; +x% physical damage against class n
|
||||||
|
n: Class_Normal, Class_Boss, Class_Guardian
|
||||||
|
bonus2 bSubClass,n,x; +x% damage reduction against class n
|
||||||
|
n: Class_Normal, Class_Boss, Class_Guardian
|
||||||
|
bonus2 bMagicAddClass,n,x; +x% magical damage against class n
|
||||||
|
n: Class_Normal, Class_Boss, Class_Guardian
|
||||||
|
bonus2 bWeaponComaClass,n,y; y/100% chance to cause Coma when attacking a monster of class x with a normal attack
|
||||||
|
n: Class_Normal, Class_Boss, Class_Guardian
|
||||||
|
bonus2 bHpDrainValueClass,n,x; Heals +x HP when attacking a monster of class n with normal attack.
|
||||||
|
n: Class_Normal, Class_Boss, Class_Guardian
|
||||||
|
bonus2 bSpDrainValueClass,n,x; Heals +x SP when attacking a monster of class n with normal attack.
|
||||||
|
n: Class_Normal, Class_Boss, Class_Guardian
|
||||||
|
bonus2 bIgnoreMdefClassRate,n,x; Disregard x% of the target's MDEF if the target belongs to class n
|
||||||
|
n: Class_Normal, Class_Boss, Class_Guardian
|
||||||
|
@ -6239,7 +6239,7 @@ ACMD_FUNC(mobsearch)
|
|||||||
|
|
||||||
if( md->bl.m != sd->bl.m )
|
if( md->bl.m != sd->bl.m )
|
||||||
continue;
|
continue;
|
||||||
if( mob_id != -1 && md->class_ != mob_id )
|
if( mob_id != -1 && md->mob_id != mob_id )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
++number;
|
++number;
|
||||||
@ -6863,8 +6863,8 @@ ACMD_FUNC(mobinfo)
|
|||||||
|
|
||||||
#ifdef RENEWAL_EXP
|
#ifdef RENEWAL_EXP
|
||||||
if( battle_config.atcommand_mobinfo_type ) {
|
if( battle_config.atcommand_mobinfo_type ) {
|
||||||
base_exp = base_exp * pc_level_penalty_mod(sd, mob->lv, mob->status.race, mob->status.mode, 1) / 100;
|
base_exp = base_exp * pc_level_penalty_mod(sd, mob->lv, mob->status.class_, 1) / 100;
|
||||||
job_exp = job_exp * pc_level_penalty_mod(sd, mob->lv, mob->status.race, mob->status.mode, 1) / 100;
|
job_exp = job_exp * pc_level_penalty_mod(sd, mob->lv, mob->status.class_, 1) / 100;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
// stats
|
// stats
|
||||||
@ -6897,7 +6897,7 @@ ACMD_FUNC(mobinfo)
|
|||||||
|
|
||||||
#ifdef RENEWAL_DROP
|
#ifdef RENEWAL_DROP
|
||||||
if( battle_config.atcommand_mobinfo_type ) {
|
if( battle_config.atcommand_mobinfo_type ) {
|
||||||
droprate = droprate * pc_level_penalty_mod(sd, mob->lv, mob->status.race, mob->status.mode, 2) / 100;
|
droprate = droprate * pc_level_penalty_mod(sd, mob->lv, mob->status.class_, 2) / 100;
|
||||||
if (droprate <= 0 && !battle_config.drop_rate0item)
|
if (droprate <= 0 && !battle_config.drop_rate0item)
|
||||||
droprate = 1;
|
droprate = 1;
|
||||||
}
|
}
|
||||||
@ -6996,7 +6996,7 @@ ACMD_FUNC(showmobs)
|
|||||||
|
|
||||||
if( md->bl.m != sd->bl.m )
|
if( md->bl.m != sd->bl.m )
|
||||||
continue;
|
continue;
|
||||||
if( mob_id != -1 && md->class_ != mob_id )
|
if( mob_id != -1 && md->mob_id != mob_id )
|
||||||
continue;
|
continue;
|
||||||
if( md->special_state.ai || md->master_id )
|
if( md->special_state.ai || md->master_id )
|
||||||
continue; // hide slaves and player summoned mobs
|
continue; // hide slaves and player summoned mobs
|
||||||
@ -7425,7 +7425,7 @@ ACMD_FUNC(whodrops)
|
|||||||
|
|
||||||
#ifdef RENEWAL_DROP
|
#ifdef RENEWAL_DROP
|
||||||
if( battle_config.atcommand_mobinfo_type )
|
if( battle_config.atcommand_mobinfo_type )
|
||||||
dropchance = dropchance * pc_level_penalty_mod(sd, mob_db(item_data->mob[j].id)->lv, mob_db(item_data->mob[j].id)->status.race, mob_db(item_data->mob[j].id)->status.mode, 2) / 100;
|
dropchance = dropchance * pc_level_penalty_mod(sd, mob_db(item_data->mob[j].id)->lv, mob_db(item_data->mob[j].id)->status.class_, 2) / 100;
|
||||||
#endif
|
#endif
|
||||||
sprintf(atcmd_output, "- %s (%02.02f%%)", mob_db(item_data->mob[j].id)->jname, dropchance/100.);
|
sprintf(atcmd_output, "- %s (%02.02f%%)", mob_db(item_data->mob[j].id)->jname, dropchance/100.);
|
||||||
clif_displaymessage(fd, atcmd_output);
|
clif_displaymessage(fd, atcmd_output);
|
||||||
|
289
src/map/battle.c
289
src/map/battle.c
@ -35,7 +35,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
int attr_fix_table[4][ELE_MAX][ELE_MAX];
|
int attr_fix_table[4][ELE_ALL][ELE_ALL];
|
||||||
|
|
||||||
struct Battle_Config battle_config;
|
struct Battle_Config battle_config;
|
||||||
static struct eri *delay_damage_ers; //For battle delay damage structures.
|
static struct eri *delay_damage_ers; //For battle delay damage structures.
|
||||||
@ -295,10 +295,10 @@ int battle_delay_damage (unsigned int tick, int amotion, struct block_list *src,
|
|||||||
int battle_attr_ratio(int atk_elem,int def_type, int def_lv)
|
int battle_attr_ratio(int atk_elem,int def_type, int def_lv)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (atk_elem < 0 || atk_elem >= ELE_MAX)
|
if (atk_elem < 0 || atk_elem >= ELE_ALL)
|
||||||
return 100;
|
return 100;
|
||||||
|
|
||||||
if (def_type < 0 || def_type > ELE_MAX || def_lv < 1 || def_lv > 4)
|
if (def_type < 0 || def_type > ELE_ALL || def_lv < 1 || def_lv > 4)
|
||||||
return 100;
|
return 100;
|
||||||
|
|
||||||
return attr_fix_table[def_lv-1][atk_elem][def_type];
|
return attr_fix_table[def_lv-1][atk_elem][def_type];
|
||||||
@ -317,10 +317,10 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d
|
|||||||
if (src) sc = status_get_sc(src);
|
if (src) sc = status_get_sc(src);
|
||||||
if (target) tsc = status_get_sc(target);
|
if (target) tsc = status_get_sc(target);
|
||||||
|
|
||||||
if (atk_elem < 0 || atk_elem >= ELE_MAX)
|
if (atk_elem < 0 || atk_elem >= ELE_ALL)
|
||||||
atk_elem = rnd()%ELE_MAX;
|
atk_elem = rnd()%ELE_ALL;
|
||||||
|
|
||||||
if (def_type < 0 || def_type > ELE_MAX ||
|
if (def_type < 0 || def_type > ELE_ALL ||
|
||||||
def_lv < 1 || def_lv > 4) {
|
def_lv < 1 || def_lv > 4) {
|
||||||
ShowError("battle_attr_fix: unknown attr type: atk=%d def_type=%d def_lv=%d\n",atk_elem,def_type,def_lv);
|
ShowError("battle_attr_fix: unknown attr type: atk=%d def_type=%d def_lv=%d\n",atk_elem,def_type,def_lv);
|
||||||
return damage;
|
return damage;
|
||||||
@ -431,7 +431,7 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d
|
|||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int left, int flag){
|
int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_list *target, int nk, int s_ele, int s_ele_, int64 damage, int left, int flag){
|
||||||
struct map_session_data *sd, *tsd;
|
struct map_session_data *sd, *tsd;
|
||||||
short cardfix = 1000, t_class, s_class, s_race2, t_race2;
|
short cardfix = 1000, t_cf = 0, t_class, s_class, s_race2, t_race2;
|
||||||
struct status_data *sstatus, *tstatus;
|
struct status_data *sstatus, *tstatus;
|
||||||
int64 original_damage;
|
int64 original_damage;
|
||||||
int i;
|
int i;
|
||||||
@ -453,18 +453,19 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
switch(attack_type){
|
switch(attack_type){
|
||||||
case BF_MAGIC:
|
case BF_MAGIC:
|
||||||
if ( sd && !(nk&NK_NO_CARDFIX_ATK) ) {
|
if ( sd && !(nk&NK_NO_CARDFIX_ATK) ) {
|
||||||
cardfix=cardfix*(100+sd->magic_addrace[tstatus->race])/100;
|
t_cf += sd->magic_addrace[tstatus->race] + sd->magic_addrace[RC_ALL];
|
||||||
if (!(nk&NK_NO_ELEFIX))
|
if (!(nk&NK_NO_ELEFIX))
|
||||||
cardfix=cardfix*(100+sd->magic_addele[tstatus->def_ele])/100;
|
t_cf += sd->magic_addele[tstatus->def_ele] + sd->magic_addele[ELE_ALL];
|
||||||
cardfix=cardfix*(100+sd->magic_addsize[tstatus->size])/100;
|
t_cf += sd->magic_addsize[tstatus->size] + sd->magic_addsize[SZ_ALL];
|
||||||
cardfix=cardfix*(100+sd->magic_addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
t_cf += sd->magic_addclass[tstatus->class_] + sd->magic_addclass[CLASS_ALL];
|
||||||
cardfix=cardfix*(100+sd->magic_atk_ele[s_ele])/100;
|
t_cf += sd->magic_atk_ele[s_ele] + sd->magic_atk_ele[ELE_ALL];
|
||||||
for(i=0; i< ARRAYLENGTH(sd->add_mdmg) && sd->add_mdmg[i].rate;i++) {
|
for(i=0; i< ARRAYLENGTH(sd->add_mdmg) && sd->add_mdmg[i].rate;i++) {
|
||||||
if(sd->add_mdmg[i].class_ == t_class) {
|
if(sd->add_mdmg[i].class_ == t_class) {
|
||||||
cardfix=cardfix*(100+sd->add_mdmg[i].rate)/100;
|
t_cf += sd->add_mdmg[i].rate;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
cardfix = cardfix * ( 100 + t_cf ) / 100;
|
||||||
if (cardfix != 1000)
|
if (cardfix != 1000)
|
||||||
bccDAMAGE_RATE(cardfix)
|
bccDAMAGE_RATE(cardfix)
|
||||||
}
|
}
|
||||||
@ -472,10 +473,11 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
if( tsd && !(nk&NK_NO_CARDFIX_DEF) )
|
if( tsd && !(nk&NK_NO_CARDFIX_DEF) )
|
||||||
{ // Target cards.
|
{ // Target cards.
|
||||||
cardfix = 1000; //reset var for target
|
cardfix = 1000; //reset var for target
|
||||||
|
t_cf = 0;
|
||||||
|
|
||||||
if (!(nk&NK_NO_ELEFIX))
|
if (!(nk&NK_NO_ELEFIX))
|
||||||
{
|
{
|
||||||
int ele_fix = tsd->subele[s_ele];
|
int ele_fix = tsd->subele[s_ele] + tsd->subele[ELE_ALL];
|
||||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++)
|
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].ele != s_ele) continue;
|
||||||
@ -485,31 +487,31 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
continue;
|
continue;
|
||||||
ele_fix += tsd->subele2[i].rate;
|
ele_fix += tsd->subele2[i].rate;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100-ele_fix)/100;
|
t_cf += ele_fix;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
t_cf += tsd->subsize[sstatus->size] + tsd->subsize[SZ_ALL];
|
||||||
cardfix=cardfix*(100-tsd->subrace2[s_race2])/100;
|
t_cf += tsd->subrace2[s_race2];
|
||||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
t_cf += tsd->subrace[sstatus->race] + tsd->subrace[RC_ALL];
|
||||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
t_cf += tsd->subclass[sstatus->class_] + tsd->subclass[CLASS_ALL];
|
||||||
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++) {
|
for(i=0; i < ARRAYLENGTH(tsd->add_mdef) && tsd->add_mdef[i].rate;i++) {
|
||||||
if(tsd->add_mdef[i].class_ == s_class) {
|
if(tsd->add_mdef[i].class_ == s_class) {
|
||||||
cardfix=cardfix*(100-tsd->add_mdef[i].rate)/100;
|
t_cf += tsd->add_mdef[i].rate;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//It was discovered that ranged defense also counts vs magic! [Skotlex]
|
//It was discovered that ranged defense also counts vs magic! [Skotlex]
|
||||||
if ( flag&BF_SHORT )
|
if ( flag&BF_SHORT )
|
||||||
cardfix = cardfix * ( 100 - tsd->bonus.near_attack_def_rate ) / 100;
|
t_cf += tsd->bonus.near_attack_def_rate;
|
||||||
else
|
else
|
||||||
cardfix = cardfix * ( 100 - tsd->bonus.long_attack_def_rate ) / 100;
|
t_cf += tsd->bonus.long_attack_def_rate;
|
||||||
|
|
||||||
cardfix = cardfix * ( 100 - tsd->bonus.magic_def_rate ) / 100;
|
t_cf += tsd->bonus.magic_def_rate;
|
||||||
|
|
||||||
if( tsd->sc.data[SC_MDEF_RATE] )
|
if( tsd->sc.data[SC_MDEF_RATE] )
|
||||||
cardfix = cardfix * ( 100 - tsd->sc.data[SC_MDEF_RATE]->val1 ) / 100;
|
t_cf += tsd->sc.data[SC_MDEF_RATE]->val1;
|
||||||
|
|
||||||
|
cardfix = cardfix * ( 100 - t_cf ) / 100;
|
||||||
|
|
||||||
if (cardfix != 1000)
|
if (cardfix != 1000)
|
||||||
bccDAMAGE_RATE(cardfix)
|
bccDAMAGE_RATE(cardfix)
|
||||||
@ -522,10 +524,12 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
short cardfix_ = 1000;
|
short cardfix_ = 1000;
|
||||||
if(sd->state.arrow_atk)
|
if(sd->state.arrow_atk)
|
||||||
{
|
{
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race]+sd->arrow_addrace[tstatus->race])/100;
|
t_cf += sd->right_weapon.addrace[tstatus->race] + sd->arrow_addrace[tstatus->race]
|
||||||
|
+ sd->right_weapon.addrace[RC_ALL] + sd->arrow_addrace[RC_ALL];
|
||||||
if (!(nk&NK_NO_ELEFIX))
|
if (!(nk&NK_NO_ELEFIX))
|
||||||
{
|
{
|
||||||
int ele_fix = sd->right_weapon.addele[tstatus->def_ele] + sd->arrow_addele[tstatus->def_ele];
|
int ele_fix = sd->right_weapon.addele[tstatus->def_ele] + sd->arrow_addele[tstatus->def_ele]
|
||||||
|
+ sd->right_weapon.addele[ELE_ALL] + sd->arrow_addele[ELE_ALL];
|
||||||
for (i = 0; ARRAYLENGTH(sd->right_weapon.addele2) > i && sd->right_weapon.addele2[i].rate != 0; i++) {
|
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].ele != tstatus->def_ele) continue;
|
||||||
if(!( ((sd->right_weapon.addele2[i].flag)&flag)&BF_WEAPONMASK &&
|
if(!( ((sd->right_weapon.addele2[i].flag)&flag)&BF_WEAPONMASK &&
|
||||||
@ -534,22 +538,22 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
continue;
|
continue;
|
||||||
ele_fix += sd->right_weapon.addele2[i].rate;
|
ele_fix += sd->right_weapon.addele2[i].rate;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100+ele_fix)/100;
|
t_cf += ele_fix;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size]+sd->arrow_addsize[tstatus->size])/100;
|
t_cf += sd->right_weapon.addsize[tstatus->size]+sd->arrow_addsize[tstatus->size]
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2])/100;
|
+ sd->right_weapon.addsize[SZ_ALL]+sd->arrow_addsize[SZ_ALL];
|
||||||
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;
|
t_cf += sd->right_weapon.addrace2[t_race2];
|
||||||
if( tstatus->race != RC_DEMIHUMAN )
|
t_cf += sd->right_weapon.addclass[tstatus->class_]+sd->arrow_addclass[tstatus->class_]
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN]+sd->arrow_addrace[RC_NONDEMIHUMAN])/100;
|
+ sd->right_weapon.addclass[CLASS_ALL]+sd->arrow_addclass[CLASS_ALL];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // Melee attack
|
{ // Melee attack
|
||||||
int skill_learnlv=0;
|
int skill_learnlv=0;
|
||||||
if( !battle_config.left_cardfix_to_right )
|
if( !battle_config.left_cardfix_to_right )
|
||||||
{
|
{
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race])/100;
|
t_cf += sd->right_weapon.addrace[tstatus->race] + sd->right_weapon.addrace[RC_ALL];
|
||||||
if (!(nk&NK_NO_ELEFIX)) {
|
if (!(nk&NK_NO_ELEFIX)) {
|
||||||
int ele_fix = sd->right_weapon.addele[tstatus->def_ele];
|
int ele_fix = sd->right_weapon.addele[tstatus->def_ele] + sd->right_weapon.addele[ELE_ALL];
|
||||||
for (i = 0; ARRAYLENGTH(sd->right_weapon.addele2) > i && sd->right_weapon.addele2[i].rate != 0; i++) {
|
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].ele != tstatus->def_ele) continue;
|
||||||
if(!( ((sd->right_weapon.addele2[i].flag)&flag)&BF_WEAPONMASK &&
|
if(!( ((sd->right_weapon.addele2[i].flag)&flag)&BF_WEAPONMASK &&
|
||||||
@ -558,19 +562,17 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
continue;
|
continue;
|
||||||
ele_fix += sd->right_weapon.addele2[i].rate;
|
ele_fix += sd->right_weapon.addele2[i].rate;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100+ele_fix)/100;
|
t_cf += ele_fix;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size])/100;
|
t_cf += sd->right_weapon.addsize[tstatus->size] + sd->right_weapon.addsize[SZ_ALL];
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2])/100;
|
t_cf += sd->right_weapon.addrace2[t_race2];
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
t_cf += sd->right_weapon.addclass[tstatus->class_] + sd->right_weapon.addclass[CLASS_ALL];
|
||||||
if( tstatus->race != RC_DEMIHUMAN )
|
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
|
||||||
|
|
||||||
if( left&1 )
|
if( left&1 )
|
||||||
{
|
{
|
||||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[tstatus->race])/100;
|
t_cf += sd->left_weapon.addrace[tstatus->race] + sd->left_weapon.addrace[RC_ALL];
|
||||||
if (!(nk&NK_NO_ELEFIX)) {
|
if (!(nk&NK_NO_ELEFIX)) {
|
||||||
int ele_fix_lh = sd->left_weapon.addele[tstatus->def_ele];
|
int ele_fix_lh = sd->left_weapon.addele[tstatus->def_ele] + sd->left_weapon.addele[ELE_ALL];
|
||||||
for (i = 0; ARRAYLENGTH(sd->left_weapon.addele2) > i && sd->left_weapon.addele2[i].rate != 0; i++) {
|
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].ele != tstatus->def_ele) continue;
|
||||||
if(!( ((sd->left_weapon.addele2[i].flag)&flag)&BF_WEAPONMASK &&
|
if(!( ((sd->left_weapon.addele2[i].flag)&flag)&BF_WEAPONMASK &&
|
||||||
@ -579,13 +581,11 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
continue;
|
continue;
|
||||||
ele_fix_lh += sd->left_weapon.addele2[i].rate;
|
ele_fix_lh += sd->left_weapon.addele2[i].rate;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100+ele_fix_lh)/100;
|
t_cf += ele_fix_lh;
|
||||||
}
|
}
|
||||||
cardfix_=cardfix_*(100+sd->left_weapon.addsize[tstatus->size])/100;
|
t_cf += sd->left_weapon.addsize[tstatus->size] + sd->left_weapon.addsize[SZ_ALL];
|
||||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace2[t_race2])/100;
|
t_cf += sd->left_weapon.addrace2[t_race2];
|
||||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS])/100;
|
t_cf += sd->left_weapon.addclass[tstatus->class_] + sd->left_weapon.addclass[CLASS_ALL];
|
||||||
if( tstatus->race != RC_DEMIHUMAN )
|
|
||||||
cardfix_=cardfix_*(100+sd->left_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -608,23 +608,24 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
ele_fix += sd->left_weapon.addele2[i].rate;
|
ele_fix += sd->left_weapon.addele2[i].rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race]+sd->left_weapon.addrace[tstatus->race])/100;
|
t_cf += sd->right_weapon.addrace[tstatus->race] + sd->left_weapon.addrace[tstatus->race]
|
||||||
cardfix=cardfix*(100+ele_fix)/100;
|
+ sd->right_weapon.addrace[RC_ALL] + sd->left_weapon.addrace[RC_ALL];
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addsize[tstatus->size]+sd->left_weapon.addsize[tstatus->size])/100;
|
t_cf += ele_fix;
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace2[t_race2]+sd->left_weapon.addrace2[t_race2])/100;
|
t_cf += sd->right_weapon.addsize[tstatus->size] + sd->left_weapon.addsize[tstatus->size]
|
||||||
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;
|
+ sd->right_weapon.addsize[SZ_ALL] + sd->left_weapon.addsize[SZ_ALL];
|
||||||
if( tstatus->race != RC_DEMIHUMAN )
|
t_cf += sd->right_weapon.addrace2[t_race2] + sd->left_weapon.addrace2[t_race2];
|
||||||
cardfix=cardfix*(100+sd->right_weapon.addrace[RC_NONDEMIHUMAN]+sd->left_weapon.addrace[RC_NONDEMIHUMAN])/100;
|
t_cf += sd->right_weapon.addclass[tstatus->class_] + sd->left_weapon.addclass[tstatus->class_]
|
||||||
|
+ sd->right_weapon.addclass[CLASS_ALL] + sd->left_weapon.addclass[CLASS_ALL];
|
||||||
}
|
}
|
||||||
if (sd->status.weapon == W_KATAR && (skill_learnlv=pc_checkskill(sd,ASC_KATAR)) > 0) { // Adv. Katar Mastery functions similar to a +%ATK card on official [helvetica]
|
if (sd->status.weapon == W_KATAR && (skill_learnlv=pc_checkskill(sd,ASC_KATAR)) > 0) { // Adv. Katar Mastery functions similar to a +%ATK card on official [helvetica]
|
||||||
cardfix = cardfix * (100 + (10 + 2 * skill_learnlv)) / 100;
|
t_cf += (10 + 2 * skill);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for( i = 0; i < ARRAYLENGTH(sd->right_weapon.add_dmg) && sd->right_weapon.add_dmg[i].rate; i++ )
|
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 )
|
if( sd->right_weapon.add_dmg[i].class_ == t_class )
|
||||||
{
|
{
|
||||||
cardfix=cardfix*(100+sd->right_weapon.add_dmg[i].rate)/100;
|
t_cf += sd->right_weapon.add_dmg[i].rate;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -643,8 +644,9 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
|
|
||||||
#ifndef RENEWAL
|
#ifndef RENEWAL
|
||||||
if( flag&BF_LONG )
|
if( flag&BF_LONG )
|
||||||
cardfix = cardfix * ( 100 + sd->bonus.long_attack_atk_rate ) / 100;
|
t_cf += sd->bonus.long_attack_atk_rate;
|
||||||
#endif
|
#endif
|
||||||
|
cardfix = cardfix * ( 100 + t_cf ) / 100;
|
||||||
|
|
||||||
if( (left&1) && cardfix_ != 1000 )
|
if( (left&1) && cardfix_ != 1000 )
|
||||||
bccDAMAGE_RATE(cardfix_)
|
bccDAMAGE_RATE(cardfix_)
|
||||||
@ -654,7 +656,7 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
} else if( tsd && !(nk&NK_NO_CARDFIX_DEF) && !(left&2) ){ //Target cards should be checked
|
} else if( tsd && !(nk&NK_NO_CARDFIX_DEF) && !(left&2) ){ //Target cards should be checked
|
||||||
if( !(nk&NK_NO_ELEFIX) )
|
if( !(nk&NK_NO_ELEFIX) )
|
||||||
{
|
{
|
||||||
int ele_fix = tsd->subele[s_ele];
|
int ele_fix = tsd->subele[s_ele] + tsd->subele[ELE_ALL];
|
||||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++)
|
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].ele != s_ele) continue;
|
||||||
@ -664,10 +666,10 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
continue;
|
continue;
|
||||||
ele_fix += tsd->subele2[i].rate;
|
ele_fix += tsd->subele2[i].rate;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100-ele_fix)/100;
|
t_cf += ele_fix;
|
||||||
if( left&1 && s_ele_ != s_ele )
|
if( left&1 && s_ele_ != s_ele )
|
||||||
{
|
{
|
||||||
int ele_fix_lh = tsd->subele[s_ele_];
|
int ele_fix_lh = tsd->subele[s_ele_] + tsd->subele[ELE_ALL];
|
||||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++)
|
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].ele != s_ele_) continue;
|
||||||
@ -677,30 +679,30 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
continue;
|
continue;
|
||||||
ele_fix_lh += tsd->subele2[i].rate;
|
ele_fix_lh += tsd->subele2[i].rate;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100-ele_fix_lh)/100;
|
t_cf += ele_fix_lh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
t_cf += tsd->subsize[sstatus->size] + tsd->subsize[SZ_ALL];
|
||||||
cardfix=cardfix*(100-tsd->subrace2[s_race2])/100;
|
t_cf += tsd->subrace2[s_race2];
|
||||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
t_cf += tsd->subrace[sstatus->race] + tsd->subrace[RC_ALL];
|
||||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
t_cf += tsd->subclass[sstatus->class_] + tsd->subclass[CLASS_ALL];
|
||||||
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++ ) {
|
for( i = 0; i < ARRAYLENGTH(tsd->add_def) && tsd->add_def[i].rate;i++ ) {
|
||||||
if( tsd->add_def[i].class_ == s_class ) {
|
if( tsd->add_def[i].class_ == s_class ) {
|
||||||
cardfix=cardfix*(100-tsd->add_def[i].rate)/100;
|
t_cf += tsd->add_def[i].rate;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( flag&BF_SHORT )
|
if( flag&BF_SHORT )
|
||||||
cardfix = cardfix * ( 100 - tsd->bonus.near_attack_def_rate ) / 100;
|
t_cf += tsd->bonus.near_attack_def_rate;
|
||||||
else // BF_LONG (there's no other choice)
|
else // BF_LONG (there's no other choice)
|
||||||
cardfix = cardfix * ( 100 - tsd->bonus.long_attack_def_rate ) / 100;
|
t_cf += tsd->bonus.long_attack_def_rate;
|
||||||
|
|
||||||
if( tsd->sc.data[SC_DEF_RATE] )
|
if( tsd->sc.data[SC_DEF_RATE] )
|
||||||
cardfix = cardfix * ( 100 - tsd->sc.data[SC_DEF_RATE]->val1 ) / 100;
|
t_cf += tsd->sc.data[SC_DEF_RATE]->val1;
|
||||||
|
|
||||||
|
cardfix = cardfix * ( 100 - t_cf ) / 100;
|
||||||
|
|
||||||
if( cardfix != 1000 )
|
if( cardfix != 1000 )
|
||||||
bccDAMAGE_RATE(cardfix)
|
bccDAMAGE_RATE(cardfix)
|
||||||
@ -711,7 +713,7 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
// misc damage reduction from equipment
|
// misc damage reduction from equipment
|
||||||
if (!(nk&NK_NO_ELEFIX))
|
if (!(nk&NK_NO_ELEFIX))
|
||||||
{
|
{
|
||||||
int ele_fix = tsd->subele[s_ele];
|
int ele_fix = tsd->subele[s_ele] + tsd->subele[ELE_ALL];
|
||||||
for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++)
|
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].ele != s_ele) continue;
|
||||||
@ -721,20 +723,20 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
|||||||
continue;
|
continue;
|
||||||
ele_fix += tsd->subele2[i].rate;
|
ele_fix += tsd->subele2[i].rate;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100-ele_fix)/100;
|
t_cf += ele_fix;
|
||||||
}
|
}
|
||||||
cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100;
|
t_cf += tsd->subsize[sstatus->size] + tsd->subsize[SZ_ALL];
|
||||||
cardfix=cardfix*(100-tsd->subrace2[s_race2])/100;
|
t_cf += tsd->subrace2[s_race2];
|
||||||
cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100;
|
t_cf += tsd->subrace[sstatus->race] + tsd->subrace[RC_ALL];
|
||||||
cardfix=cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS])/100;
|
t_cf += tsd->subclass[sstatus->class_] + tsd->subclass[CLASS_ALL];
|
||||||
if( sstatus->race != RC_DEMIHUMAN )
|
|
||||||
cardfix=cardfix*(100-tsd->subrace[RC_NONDEMIHUMAN])/100;
|
|
||||||
|
|
||||||
cardfix = cardfix * ( 100 - tsd->bonus.misc_def_rate ) / 100;
|
t_cf += tsd->bonus.misc_def_rate;
|
||||||
if( flag&BF_SHORT )
|
if( flag&BF_SHORT )
|
||||||
cardfix = cardfix * ( 100 - tsd->bonus.near_attack_def_rate ) / 100;
|
t_cf += tsd->bonus.near_attack_def_rate;
|
||||||
else // BF_LONG (there's no other choice)
|
else // BF_LONG (there's no other choice)
|
||||||
cardfix = cardfix * ( 100 - tsd->bonus.long_attack_def_rate ) / 100;
|
t_cf += tsd->bonus.long_attack_def_rate;
|
||||||
|
|
||||||
|
cardfix = cardfix * ( 100 - t_cf ) / 100;
|
||||||
|
|
||||||
if (cardfix != 10000)
|
if (cardfix != 10000)
|
||||||
bccDAMAGE_RATE(cardfix)
|
bccDAMAGE_RATE(cardfix)
|
||||||
@ -1045,13 +1047,13 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|||||||
int i;
|
int i;
|
||||||
if (sc->data[SC_MANU_DEF])
|
if (sc->data[SC_MANU_DEF])
|
||||||
for (i=0;ARRAYLENGTH(mob_manuk)>i;i++)
|
for (i=0;ARRAYLENGTH(mob_manuk)>i;i++)
|
||||||
if (mob_manuk[i]==((TBL_MOB*)src)->class_) {
|
if (mob_manuk[i]==((TBL_MOB*)src)->mob_id) {
|
||||||
DAMAGE_SUBRATE(sc->data[SC_MANU_DEF]->val1)
|
DAMAGE_SUBRATE(sc->data[SC_MANU_DEF]->val1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (sc->data[SC_SPL_DEF])
|
if (sc->data[SC_SPL_DEF])
|
||||||
for (i=0;ARRAYLENGTH(mob_splendide)>i;i++)
|
for (i=0;ARRAYLENGTH(mob_splendide)>i;i++)
|
||||||
if (mob_splendide[i]==((TBL_MOB*)src)->class_) {
|
if (mob_splendide[i]==((TBL_MOB*)src)->mob_id) {
|
||||||
DAMAGE_SUBRATE(sc->data[SC_SPL_DEF]->val1)
|
DAMAGE_SUBRATE(sc->data[SC_SPL_DEF]->val1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1196,7 +1198,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|||||||
((sce=sc->data[SC_MANU_MATK]) && (flag&BF_MAGIC))
|
((sce=sc->data[SC_MANU_MATK]) && (flag&BF_MAGIC))
|
||||||
)
|
)
|
||||||
for (i=0;ARRAYLENGTH(mob_manuk)>i;i++)
|
for (i=0;ARRAYLENGTH(mob_manuk)>i;i++)
|
||||||
if (((TBL_MOB*)bl)->class_==mob_manuk[i]) {
|
if (((TBL_MOB*)bl)->mob_id==mob_manuk[i]) {
|
||||||
DAMAGE_ADDRATE(sce->val1)
|
DAMAGE_ADDRATE(sce->val1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1204,7 +1206,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|||||||
((sce=sc->data[SC_SPL_MATK]) && (flag&BF_MAGIC))
|
((sce=sc->data[SC_SPL_MATK]) && (flag&BF_MAGIC))
|
||||||
)
|
)
|
||||||
for (i=0;ARRAYLENGTH(mob_splendide)>i;i++)
|
for (i=0;ARRAYLENGTH(mob_splendide)>i;i++)
|
||||||
if (((TBL_MOB*)bl)->class_==mob_splendide[i]) {
|
if (((TBL_MOB*)bl)->mob_id==mob_splendide[i]) {
|
||||||
DAMAGE_ADDRATE(sce->val1)
|
DAMAGE_ADDRATE(sce->val1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1274,7 +1276,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|||||||
else if( element == -2 ) //Use enchantment's element
|
else if( element == -2 ) //Use enchantment's element
|
||||||
element = status_get_attack_sc_element(src,status_get_sc(src));
|
element = status_get_attack_sc_element(src,status_get_sc(src));
|
||||||
else if( element == -3 ) //Use random element
|
else if( element == -3 ) //Use random element
|
||||||
element = rnd()%ELE_MAX;
|
element = rnd()%ELE_ALL;
|
||||||
if( element == ELE_FIRE || element == ELE_WATER )
|
if( element == ELE_FIRE || element == ELE_WATER )
|
||||||
pc_overheat(sd,element == ELE_FIRE ? 1 : -1);
|
pc_overheat(sd,element == ELE_FIRE ? 1 : -1);
|
||||||
}
|
}
|
||||||
@ -1298,7 +1300,7 @@ int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64
|
|||||||
|
|
||||||
if( bl->type == BL_MOB ) {
|
if( bl->type == BL_MOB ) {
|
||||||
struct mob_data* md = BL_CAST(BL_MOB, bl);
|
struct mob_data* md = BL_CAST(BL_MOB, bl);
|
||||||
if( map[bl->m].flag.battleground && (md->class_ == MOBID_BLUE_CRYST || md->class_ == MOBID_PINK_CRYST) && flag&BF_SKILL )
|
if( map[bl->m].flag.battleground && (md->mob_id == MOBID_BLUE_CRYST || md->mob_id == MOBID_PINK_CRYST) && flag&BF_SKILL )
|
||||||
return 0; // Crystal cannot receive skill damage on battlegrounds
|
return 0; // Crystal cannot receive skill damage on battlegrounds
|
||||||
}
|
}
|
||||||
if(skill_get_inf2(skill_id)&INF2_NO_BG_DMG)
|
if(skill_get_inf2(skill_id)&INF2_NO_BG_DMG)
|
||||||
@ -1976,7 +1978,7 @@ static bool is_attack_critical(struct Damage wd, struct block_list *src, struct
|
|||||||
{
|
{
|
||||||
short cri = sstatus->cri;
|
short cri = sstatus->cri;
|
||||||
if (sd) {
|
if (sd) {
|
||||||
cri+= sd->critaddrace[tstatus->race];
|
cri += sd->critaddrace[tstatus->race] + sd->critaddrace[RC_ALL];
|
||||||
if(is_skill_using_arrow(src, skill_id))
|
if(is_skill_using_arrow(src, skill_id))
|
||||||
cri += sd->bonus.arrow_cri;
|
cri += sd->bonus.arrow_cri;
|
||||||
}
|
}
|
||||||
@ -2038,14 +2040,14 @@ static int is_attack_piercing(struct Damage wd, struct block_list *src, struct b
|
|||||||
{ //Elemental/Racial adjustments
|
{ //Elemental/Racial adjustments
|
||||||
if( sd && (sd->right_weapon.def_ratio_atk_ele & (1<<tstatus->def_ele) ||
|
if( sd && (sd->right_weapon.def_ratio_atk_ele & (1<<tstatus->def_ele) ||
|
||||||
sd->right_weapon.def_ratio_atk_race & (1<<tstatus->race) ||
|
sd->right_weapon.def_ratio_atk_race & (1<<tstatus->race) ||
|
||||||
sd->right_weapon.def_ratio_atk_race & (1<<(is_boss(target)?RC_BOSS:RC_NONBOSS)))
|
sd->right_weapon.def_ratio_atk_class & (1<<tstatus->class_))
|
||||||
)
|
)
|
||||||
if (weapon_position == EQI_HAND_R)
|
if (weapon_position == EQI_HAND_R)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if( sd && (sd->left_weapon.def_ratio_atk_ele & (1<<tstatus->def_ele) ||
|
if( sd && (sd->left_weapon.def_ratio_atk_ele & (1<<tstatus->def_ele) ||
|
||||||
sd->left_weapon.def_ratio_atk_race & (1<<tstatus->race) ||
|
sd->left_weapon.def_ratio_atk_race & (1<<tstatus->race) ||
|
||||||
sd->left_weapon.def_ratio_atk_race & (1<<(is_boss(target)?RC_BOSS:RC_NONBOSS))) )
|
sd->left_weapon.def_ratio_atk_class & (1<<tstatus->class_)) )
|
||||||
{ //Pass effect onto right hand if configured so. [Skotlex]
|
{ //Pass effect onto right hand if configured so. [Skotlex]
|
||||||
if (battle_config.left_cardfix_to_right && is_attack_right_handed(src, skill_id)){
|
if (battle_config.left_cardfix_to_right && is_attack_right_handed(src, skill_id)){
|
||||||
if (weapon_position == EQI_HAND_R)
|
if (weapon_position == EQI_HAND_R)
|
||||||
@ -2236,15 +2238,15 @@ static bool attack_ignores_def(struct Damage wd, struct block_list *src, struct
|
|||||||
else if (skill_id != CR_GRANDCROSS && skill_id != NPC_GRANDDARKNESS)
|
else if (skill_id != CR_GRANDCROSS && skill_id != NPC_GRANDDARKNESS)
|
||||||
#endif
|
#endif
|
||||||
{ //Ignore Defense?
|
{ //Ignore Defense?
|
||||||
if (sd && ((sd->right_weapon.ignore_def_ele & (1<<tstatus->def_ele)) ||
|
if (sd && (sd->right_weapon.ignore_def_ele & (1<<tstatus->def_ele) || sd->right_weapon.ignore_def_ele & (1<<ELE_ALL) ||
|
||||||
sd->right_weapon.ignore_def_race & (1<<tstatus->race) ||
|
sd->right_weapon.ignore_def_race & (1<<tstatus->race) || sd->right_weapon.ignore_def_race & (1<<RC_ALL) ||
|
||||||
sd->right_weapon.ignore_def_race & (is_boss(target)?1<<RC_BOSS:1<<RC_NONBOSS)))
|
sd->right_weapon.ignore_def_class & (1<<tstatus->class_) || sd->right_weapon.ignore_def_class & (1<<CLASS_ALL)))
|
||||||
if (weapon_position == EQI_HAND_R)
|
if (weapon_position == EQI_HAND_R)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (sd && ((sd->left_weapon.ignore_def_ele & (1<<tstatus->def_ele)) ||
|
if (sd && (sd->left_weapon.ignore_def_ele & (1<<tstatus->def_ele) || sd->left_weapon.ignore_def_ele & (1<<ELE_ALL) ||
|
||||||
sd->left_weapon.ignore_def_race & (1<<tstatus->race) ||
|
sd->left_weapon.ignore_def_race & (1<<tstatus->race) || sd->left_weapon.ignore_def_race & (1<<RC_ALL) ||
|
||||||
sd->left_weapon.ignore_def_race & (is_boss(target)?1<<RC_BOSS:1<<RC_NONBOSS)))
|
sd->left_weapon.ignore_def_class & (1<<tstatus->class_) || sd->left_weapon.ignore_def_class & (1<<CLASS_ALL)))
|
||||||
{
|
{
|
||||||
if(battle_config.left_cardfix_to_right && is_attack_right_handed(src, skill_id)) {//Move effect to right hand. [Skotlex]
|
if(battle_config.left_cardfix_to_right && is_attack_right_handed(src, skill_id)) {//Move effect to right hand. [Skotlex]
|
||||||
if (weapon_position == EQI_HAND_R)
|
if (weapon_position == EQI_HAND_R)
|
||||||
@ -2346,7 +2348,7 @@ static int battle_get_weapon_element(struct Damage wd, struct block_list *src, s
|
|||||||
else if( element == -2 ) //Use enchantment's element
|
else if( element == -2 ) //Use enchantment's element
|
||||||
element = status_get_attack_sc_element(src,sc);
|
element = status_get_attack_sc_element(src,sc);
|
||||||
else if( element == -3 ) //Use random element
|
else if( element == -3 ) //Use random element
|
||||||
element = rnd()%ELE_MAX;
|
element = rnd()%ELE_ALL;
|
||||||
|
|
||||||
switch( skill_id ) {
|
switch( skill_id ) {
|
||||||
case GS_GROUNDDRIFT:
|
case GS_GROUNDDRIFT:
|
||||||
@ -3935,8 +3937,7 @@ struct Damage battle_calc_defense_reduction(struct Damage wd, struct block_list
|
|||||||
#endif
|
#endif
|
||||||
if( sd )
|
if( sd )
|
||||||
{
|
{
|
||||||
i = sd->ignore_def[is_boss(target)?RC_BOSS:RC_NONBOSS];
|
i = sd->ignore_def_by_race[tstatus->race] + sd->ignore_def_by_race[RC_ALL];
|
||||||
i += sd->ignore_def[tstatus->race];
|
|
||||||
if( i )
|
if( i )
|
||||||
{
|
{
|
||||||
if( i > 100 ) i = 100;
|
if( i > 100 ) i = 100;
|
||||||
@ -4492,7 +4493,7 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
|
|||||||
isDevotRdamage = true;
|
isDevotRdamage = true;
|
||||||
}
|
}
|
||||||
rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
||||||
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, is_boss(src));
|
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, sstatus->class_);
|
||||||
//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]
|
//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]
|
||||||
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
||||||
skill_additional_effect(target, (!isDevotRdamage) ? src : d_bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
skill_additional_effect(target, (!isDevotRdamage) ? src : d_bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
||||||
@ -4523,7 +4524,7 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
|
|||||||
map_foreachinshootrange(battle_damage_area,target,skill_get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd->amotion,sstatus->dmotion,rdamage,tstatus->race);
|
map_foreachinshootrange(battle_damage_area,target,skill_get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd->amotion,sstatus->dmotion,rdamage,tstatus->race);
|
||||||
else if(attack_type == BF_WEAPON || attack_type == BF_MISC) {
|
else if(attack_type == BF_WEAPON || attack_type == BF_MISC) {
|
||||||
rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
||||||
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, is_boss(src));
|
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, sstatus->class_);
|
||||||
// It appears that official servers give skill reflect damage a longer delay
|
// It appears that official servers give skill reflect damage a longer delay
|
||||||
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
||||||
skill_additional_effect(target, (!isDevotRdamage) ? src : d_bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
skill_additional_effect(target, (!isDevotRdamage) ? src : d_bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
||||||
@ -4832,7 +4833,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|||||||
}else if (s_ele == -2) //Use status element
|
}else if (s_ele == -2) //Use status element
|
||||||
s_ele = status_get_attack_sc_element(src,status_get_sc(src));
|
s_ele = status_get_attack_sc_element(src,status_get_sc(src));
|
||||||
else if( s_ele == -3 ) //Use random element
|
else if( s_ele == -3 ) //Use random element
|
||||||
s_ele = rnd()%ELE_MAX;
|
s_ele = rnd()%ELE_ALL;
|
||||||
|
|
||||||
if( skill_id == SO_PSYCHIC_WAVE ) {
|
if( skill_id == SO_PSYCHIC_WAVE ) {
|
||||||
if( sc && sc->count ) {
|
if( sc && sc->count ) {
|
||||||
@ -5330,9 +5331,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|||||||
|
|
||||||
//Ignore Defense?
|
//Ignore Defense?
|
||||||
if (!flag.imdef && (
|
if (!flag.imdef && (
|
||||||
sd->bonus.ignore_mdef_ele & ( 1 << tstatus->def_ele ) ||
|
sd->bonus.ignore_mdef_ele & ( 1 << tstatus->def_ele ) || sd->bonus.ignore_mdef_ele & ( 1 << ELE_ALL ) ||
|
||||||
sd->bonus.ignore_mdef_race & ( 1 << tstatus->race ) ||
|
sd->bonus.ignore_mdef_race & ( 1 << tstatus->race ) || sd->bonus.ignore_mdef_race & ( 1 << RC_ALL ) ||
|
||||||
sd->bonus.ignore_mdef_race & ( is_boss(target) ? 1 << RC_BOSS : 1 << RC_NONBOSS )
|
sd->bonus.ignore_mdef_class & ( 1 << tstatus->class_ ) || sd->bonus.ignore_mdef_class & ( 1 << CLASS_ALL )
|
||||||
))
|
))
|
||||||
flag.imdef = 1;
|
flag.imdef = 1;
|
||||||
}
|
}
|
||||||
@ -5345,8 +5346,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|||||||
mdef <<= 1; // only eMDEF is doubled
|
mdef <<= 1; // only eMDEF is doubled
|
||||||
#endif
|
#endif
|
||||||
if(sd) {
|
if(sd) {
|
||||||
i = sd->ignore_mdef[is_boss(target)?RC_BOSS:RC_NONBOSS];
|
i = sd->ignore_mdef_by_race[tstatus->race] + sd->ignore_mdef_by_race[RC_ALL];
|
||||||
i+= sd->ignore_mdef[tstatus->race];
|
i += sd->ignore_mdef_by_class[tstatus->class_] + sd->ignore_mdef_by_class[CLASS_ALL];
|
||||||
|
i += sd->ignore_mdef;
|
||||||
if (i)
|
if (i)
|
||||||
{
|
{
|
||||||
if (i > 100) i = 100;
|
if (i > 100) i = 100;
|
||||||
@ -5510,7 +5512,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
|
|||||||
if (s_ele < 0 && s_ele != -3) //Attack that takes weapon's element for misc attacks? Make it neutral [Skotlex]
|
if (s_ele < 0 && s_ele != -3) //Attack that takes weapon's element for misc attacks? Make it neutral [Skotlex]
|
||||||
s_ele = ELE_NEUTRAL;
|
s_ele = ELE_NEUTRAL;
|
||||||
else if (s_ele == -3) //Use random element
|
else if (s_ele == -3) //Use random element
|
||||||
s_ele = rnd()%ELE_MAX;
|
s_ele = rnd()%ELE_ALL;
|
||||||
|
|
||||||
//Skill Range Criteria
|
//Skill Range Criteria
|
||||||
md.flag |= battle_range_type(src, target, skill_id, skill_lv);
|
md.flag |= battle_range_type(src, target, skill_id, skill_lv);
|
||||||
@ -5968,49 +5970,56 @@ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, i
|
|||||||
/*===========================================
|
/*===========================================
|
||||||
* Perform battle drain effects (HP/SP loss)
|
* Perform battle drain effects (HP/SP loss)
|
||||||
*-------------------------------------------*/
|
*-------------------------------------------*/
|
||||||
void battle_drain(TBL_PC *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int boss)
|
void battle_drain(TBL_PC *sd, struct block_list *tbl, int64 rdamage, int64 ldamage, int race, int class_)
|
||||||
{
|
{
|
||||||
struct weapon_data *wd;
|
struct weapon_data *wd;
|
||||||
int64 *damage;
|
int64 *damage;
|
||||||
int type, thp = 0, tsp = 0, rhp = 0, rsp = 0, hp, sp, i;
|
int thp = 0, tsp = 0, rhp = 0, rsp = 0, hp, sp, i;
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
//First two iterations: Right hand
|
//First two iterations: Right hand
|
||||||
if (i < 2) { wd = &sd->right_weapon; damage = &rdamage; }
|
if (i < 2) { wd = &sd->right_weapon; damage = &rdamage; }
|
||||||
else { wd = &sd->left_weapon; damage = &ldamage; }
|
else { wd = &sd->left_weapon; damage = &ldamage; }
|
||||||
if (*damage <= 0) continue;
|
if (*damage <= 0) continue;
|
||||||
//First and Third iterations: race, other two boss/nonboss state
|
//First and Third iterations: race, other two boss/normal state
|
||||||
if (i == 0 || i == 2)
|
if( i == 1 || i == 3 )
|
||||||
type = race;
|
{
|
||||||
else
|
hp = wd->hp_drain_class[class_].value;
|
||||||
type = boss?RC_BOSS:RC_NONBOSS;
|
if (wd->hp_drain_class[class_].rate)
|
||||||
|
hp += battle_calc_drain(*damage, wd->hp_drain_class[class_].rate, wd->hp_drain_class[class_].per);
|
||||||
|
|
||||||
hp = wd->hp_drain[type].value;
|
sp = wd->sp_drain_class[class_].value;
|
||||||
if (wd->hp_drain[type].rate)
|
if (wd->sp_drain_class[class_].rate)
|
||||||
hp += battle_calc_drain(*damage, wd->hp_drain[type].rate, wd->hp_drain[type].per);
|
sp += battle_calc_drain(*damage, wd->sp_drain_class[class_].rate, wd->sp_drain_class[class_].per);
|
||||||
|
|
||||||
sp = wd->sp_drain[type].value;
|
if( hp && wd->hp_drain_class[class_].type )
|
||||||
if (wd->sp_drain[type].rate)
|
|
||||||
sp += battle_calc_drain(*damage, wd->sp_drain[type].rate, wd->sp_drain[type].per);
|
|
||||||
|
|
||||||
if (hp) {
|
|
||||||
if (wd->hp_drain[type].type)
|
|
||||||
rhp += hp;
|
rhp += hp;
|
||||||
thp += hp;
|
if( sp && wd->sp_drain_class[class_].type )
|
||||||
}
|
rsp += sp;
|
||||||
if (sp) {
|
} else {
|
||||||
if (wd->sp_drain[type].type)
|
hp = wd->hp_drain_race[race].value;
|
||||||
|
if (wd->hp_drain_race[race].rate)
|
||||||
|
hp += battle_calc_drain(*damage, wd->hp_drain_race[race].rate, wd->hp_drain_race[race].per);
|
||||||
|
|
||||||
|
sp = wd->sp_drain_race[race].value;
|
||||||
|
if (wd->sp_drain_race[race].rate)
|
||||||
|
sp += battle_calc_drain(*damage, wd->sp_drain_race[race].rate, wd->sp_drain_race[race].per);
|
||||||
|
|
||||||
|
if( hp && wd->hp_drain_race[race].type )
|
||||||
|
rhp += hp;
|
||||||
|
if( sp && wd->sp_drain_race[race].type)
|
||||||
rsp += sp;
|
rsp += sp;
|
||||||
tsp += sp;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
thp += hp;
|
||||||
|
tsp += sp;
|
||||||
|
|
||||||
if (sd->bonus.sp_vanish_rate && rnd()%1000 < sd->bonus.sp_vanish_rate)
|
if (sd->bonus.sp_vanish_rate && rnd()%1000 < sd->bonus.sp_vanish_rate)
|
||||||
status_percent_damage(&sd->bl, tbl, 0, (unsigned char)sd->bonus.sp_vanish_per, false);
|
status_percent_damage(&sd->bl, tbl, 0, (unsigned char)sd->bonus.sp_vanish_per, false);
|
||||||
|
|
||||||
if (sd->bonus.hp_vanish_rate && rnd()%1000 < sd->bonus.hp_vanish_rate
|
if (sd->bonus.hp_vanish_rate && rnd()%1000 < sd->bonus.hp_vanish_rate
|
||||||
&& tbl->type == BL_PC && (map[sd->bl.m].flag.pvp || map[sd->bl.m].flag.gvg))
|
&& tbl->type == BL_PC && (map[sd->bl.m].flag.pvp || map[sd->bl.m].flag.gvg))
|
||||||
status_percent_damage(&sd->bl, tbl, (unsigned char)sd->bonus.hp_vanish_per, 0, false);
|
status_percent_damage(&sd->bl, tbl, (unsigned char)sd->bonus.hp_vanish_per, 0, false);
|
||||||
|
|
||||||
|
|
||||||
if( sd->sp_gain_race_attack[race] )
|
if( sd->sp_gain_race_attack[race] )
|
||||||
tsp += sd->sp_gain_race_attack[race];
|
tsp += sd->sp_gain_race_attack[race];
|
||||||
@ -6043,12 +6052,12 @@ int battle_damage_area( struct block_list *bl, va_list ap) {
|
|||||||
amotion=va_arg(ap,int);
|
amotion=va_arg(ap,int);
|
||||||
dmotion=va_arg(ap,int);
|
dmotion=va_arg(ap,int);
|
||||||
damage=va_arg(ap,int);
|
damage=va_arg(ap,int);
|
||||||
if( bl->type == BL_MOB && ((TBL_MOB*)bl)->class_ == MOBID_EMPERIUM )
|
if( bl->type == BL_MOB && ((TBL_MOB*)bl)->mob_id == MOBID_EMPERIUM )
|
||||||
return 0;
|
return 0;
|
||||||
if( bl != src && battle_check_target(src,bl,BCT_ENEMY) > 0 ) {
|
if( bl != src && battle_check_target(src,bl,BCT_ENEMY) > 0 ) {
|
||||||
map_freeblock_lock();
|
map_freeblock_lock();
|
||||||
if( src->type == BL_PC )
|
if( src->type == BL_PC )
|
||||||
battle_drain((TBL_PC*)src, bl, damage, damage, status_get_race(bl), is_boss(bl));
|
battle_drain((TBL_PC*)src, bl, damage, damage, status_get_race(bl), status_get_class_(bl));
|
||||||
if( amotion )
|
if( amotion )
|
||||||
battle_delay_damage(tick, amotion,src,bl,0,CR_REFLECTSHIELD,0,damage,ATK_DEF,0,true);
|
battle_delay_damage(tick, amotion,src,bl,0,CR_REFLECTSHIELD,0,damage,ATK_DEF,0,true);
|
||||||
else
|
else
|
||||||
@ -6400,9 +6409,9 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
|
|||||||
|
|
||||||
if (wd.flag & BF_WEAPON && src != target && damage > 0) {
|
if (wd.flag & BF_WEAPON && src != target && damage > 0) {
|
||||||
if (battle_config.left_cardfix_to_right)
|
if (battle_config.left_cardfix_to_right)
|
||||||
battle_drain(sd, target, wd.damage, wd.damage, tstatus->race, is_boss(target));
|
battle_drain(sd, target, wd.damage, wd.damage, tstatus->race, tstatus->class_);
|
||||||
else
|
else
|
||||||
battle_drain(sd, target, wd.damage, wd.damage2, tstatus->race, is_boss(target));
|
battle_drain(sd, target, wd.damage, wd.damage2, tstatus->race, tstatus->class_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6687,7 +6696,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BL_MER:
|
case BL_MER:
|
||||||
if (t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->class_ == MOBID_EMPERIUM && flag&BCT_ENEMY)
|
if (t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->mob_id == MOBID_EMPERIUM && flag&BCT_ENEMY)
|
||||||
return 0; //mercenary may not attack Emperium
|
return 0; //mercenary may not attack Emperium
|
||||||
break;
|
break;
|
||||||
} //end switch actual src
|
} //end switch actual src
|
||||||
@ -6712,7 +6721,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
|
|||||||
return 0; // You can't target anything out of your duel
|
return 0; // You can't target anything out of your duel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( map_flag_gvg(m) && !sd->status.guild_id && t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->class_ == MOBID_EMPERIUM )
|
if( map_flag_gvg(m) && !sd->status.guild_id && t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->mob_id == MOBID_EMPERIUM )
|
||||||
return 0; //If you don't belong to a guild, can't target emperium.
|
return 0; //If you don't belong to a guild, can't target emperium.
|
||||||
if( t_bl->type != BL_PC )
|
if( t_bl->type != BL_PC )
|
||||||
state |= BCT_ENEMY; //Natural enemy.
|
state |= BCT_ENEMY; //Natural enemy.
|
||||||
|
@ -94,7 +94,7 @@ struct block_list* battle_getenemy(struct block_list *target, int type, int rang
|
|||||||
int battle_gettarget(struct block_list *bl);
|
int battle_gettarget(struct block_list *bl);
|
||||||
int battle_getcurrentskill(struct block_list *bl);
|
int battle_getcurrentskill(struct block_list *bl);
|
||||||
|
|
||||||
#define is_boss(bl) (status_get_mode(bl)&MD_BOSS) // Can refine later [Aru]
|
#define is_boss(bl) ( status_get_class_(bl) == CLASS_BOSS ) // Can refine later [Aru]
|
||||||
|
|
||||||
int battle_check_undead(int race,int element);
|
int battle_check_undead(int race,int element);
|
||||||
int battle_check_target(struct block_list *src, struct block_list *target,int flag);
|
int battle_check_target(struct block_list *src, struct block_list *target,int flag);
|
||||||
|
@ -210,7 +210,7 @@ int elemental_delete(struct elemental_data *ed, int reply) {
|
|||||||
return unit_free(&ed->bl, 0);
|
return unit_free(&ed->bl, 0);
|
||||||
|
|
||||||
sd->ed = NULL;
|
sd->ed = NULL;
|
||||||
sd->status.ele_id = 0;
|
sd->status.class_ = 0;
|
||||||
|
|
||||||
return unit_remove_map(&ed->bl, 0);
|
return unit_remove_map(&ed->bl, 0);
|
||||||
}
|
}
|
||||||
@ -238,7 +238,7 @@ int elemental_data_received(struct s_elemental *ele, bool flag) {
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if( !flag || i < 0 ) { // Not created - loaded - DB info
|
if( !flag || i < 0 ) { // Not created - loaded - DB info
|
||||||
sd->status.ele_id = 0;
|
sd->status.class_ = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ int elemental_data_received(struct s_elemental *ele, bool flag) {
|
|||||||
ed = sd->ed;
|
ed = sd->ed;
|
||||||
}
|
}
|
||||||
|
|
||||||
sd->status.ele_id = ele->elemental_id;
|
sd->status.class_ = ele->elemental_id;
|
||||||
|
|
||||||
if( ed->bl.prev == NULL && sd->bl.prev != NULL ) {
|
if( ed->bl.prev == NULL && sd->bl.prev != NULL ) {
|
||||||
if(map_addblock(&ed->bl))
|
if(map_addblock(&ed->bl))
|
||||||
@ -755,7 +755,7 @@ static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_
|
|||||||
|
|
||||||
static int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
|
static int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) {
|
||||||
unsigned int tick = va_arg(ap,unsigned int);
|
unsigned int tick = va_arg(ap,unsigned int);
|
||||||
if(sd->status.ele_id && sd->ed)
|
if(sd->status.class_ && sd->ed)
|
||||||
elemental_ai_sub_timer(sd->ed,sd,tick);
|
elemental_ai_sub_timer(sd->ed,sd,tick);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -832,8 +832,8 @@ int read_elementaldb(void) {
|
|||||||
ele = atoi(str[21]);
|
ele = atoi(str[21]);
|
||||||
status->def_ele = ele%10;
|
status->def_ele = ele%10;
|
||||||
status->ele_lv = ele/20;
|
status->ele_lv = ele/20;
|
||||||
if( status->def_ele >= ELE_MAX ) {
|
if( status->def_ele >= ELE_ALL ) {
|
||||||
ShowWarning("Elemental %d has invalid element type %d (max element is %d)\n", db->class_, status->def_ele, ELE_MAX - 1);
|
ShowWarning("Elemental %d has invalid element type %d (max element is %d)\n", db->class_, status->def_ele, ELE_ALL - 1);
|
||||||
status->def_ele = ELE_NEUTRAL;
|
status->def_ele = ELE_NEUTRAL;
|
||||||
}
|
}
|
||||||
if( status->ele_lv < 1 || status->ele_lv > 4 ) {
|
if( status->ele_lv < 1 || status->ele_lv > 4 ) {
|
||||||
|
@ -240,7 +240,7 @@ void log_pick_pc(struct map_session_data* sd, e_log_pick_type type, int amount,
|
|||||||
void log_pick_mob(struct mob_data* md, e_log_pick_type type, int amount, struct item* itm)
|
void log_pick_mob(struct mob_data* md, e_log_pick_type type, int amount, struct item* itm)
|
||||||
{
|
{
|
||||||
nullpo_retv(md);
|
nullpo_retv(md);
|
||||||
log_pick(md->class_, md->bl.m, type, amount, itm);
|
log_pick(md->mob_id, md->bl.m, type, amount, itm);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// logs zeny transactions
|
/// logs zeny transactions
|
||||||
|
@ -53,9 +53,14 @@ void map_msg_reload(void);
|
|||||||
// Added definitions for WoESE objects. [L0ne_W0lf]
|
// Added definitions for WoESE objects. [L0ne_W0lf]
|
||||||
enum MOBID {
|
enum MOBID {
|
||||||
MOBID_PORING = 1002,
|
MOBID_PORING = 1002,
|
||||||
MOBID_EMPERIUM = 1288,
|
MOBID_A_GUARDIAN = 1285,
|
||||||
|
MOBID_K_GUARDIAN,
|
||||||
|
MOBID_S_GUARDIAN,
|
||||||
|
MOBID_EMPERIUM,
|
||||||
MOBID_TREAS01 = 1324,
|
MOBID_TREAS01 = 1324,
|
||||||
MOBID_TREAS40 = 1363,
|
MOBID_TREAS40 = 1363,
|
||||||
|
MOBID_S_GUARDIAN_ = 1899,
|
||||||
|
MOBID_A_GUARDIAN_,
|
||||||
MOBID_BARRICADE1 = 1905,
|
MOBID_BARRICADE1 = 1905,
|
||||||
MOBID_BARRICADE2,
|
MOBID_BARRICADE2,
|
||||||
MOBID_GUARIDAN_STONE1,
|
MOBID_GUARIDAN_STONE1,
|
||||||
@ -274,10 +279,14 @@ enum {
|
|||||||
RC_DEMIHUMAN,
|
RC_DEMIHUMAN,
|
||||||
RC_ANGEL,
|
RC_ANGEL,
|
||||||
RC_DRAGON,
|
RC_DRAGON,
|
||||||
RC_BOSS,
|
RC_ALL
|
||||||
RC_NONBOSS,
|
};
|
||||||
RC_NONDEMIHUMAN,
|
|
||||||
RC_MAX
|
enum {
|
||||||
|
CLASS_NORMAL = 0,
|
||||||
|
CLASS_BOSS,
|
||||||
|
CLASS_GUARDIAN,
|
||||||
|
CLASS_ALL
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -302,7 +311,7 @@ enum {
|
|||||||
ELE_DARK,
|
ELE_DARK,
|
||||||
ELE_GHOST,
|
ELE_GHOST,
|
||||||
ELE_UNDEAD,
|
ELE_UNDEAD,
|
||||||
ELE_MAX,
|
ELE_ALL,
|
||||||
ELE_NONE
|
ELE_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -338,7 +347,7 @@ struct block_list {
|
|||||||
// Mob List Held in memory for Dynamic Mobs [Wizputer]
|
// Mob List Held in memory for Dynamic Mobs [Wizputer]
|
||||||
// Expanded to specify all mob-related spawn data by [Skotlex]
|
// Expanded to specify all mob-related spawn data by [Skotlex]
|
||||||
struct spawn_data {
|
struct spawn_data {
|
||||||
short class_; //Class, used because a mob can change it's class
|
short id; //ID, used because a mob can change it's class
|
||||||
unsigned short m, x, y; //Spawn information (map, point, spawn-area around point)
|
unsigned short m, x, y; //Spawn information (map, point, spawn-area around point)
|
||||||
signed short xs, ys;
|
signed short xs, ys;
|
||||||
unsigned short num; //Number of mobs using this structure
|
unsigned short num; //Number of mobs using this structure
|
||||||
@ -398,7 +407,7 @@ enum _sp {
|
|||||||
SP_IGNORE_MDEF_ELE,SP_IGNORE_MDEF_RACE, // 1033-1034
|
SP_IGNORE_MDEF_ELE,SP_IGNORE_MDEF_RACE, // 1033-1034
|
||||||
SP_MAGIC_ADDELE,SP_MAGIC_ADDRACE,SP_MAGIC_ADDSIZE, // 1035-1037
|
SP_MAGIC_ADDELE,SP_MAGIC_ADDRACE,SP_MAGIC_ADDSIZE, // 1035-1037
|
||||||
SP_PERFECT_HIT_RATE,SP_PERFECT_HIT_ADD_RATE,SP_CRITICAL_RATE,SP_GET_ZENY_NUM,SP_ADD_GET_ZENY_NUM, // 1038-1042
|
SP_PERFECT_HIT_RATE,SP_PERFECT_HIT_ADD_RATE,SP_CRITICAL_RATE,SP_GET_ZENY_NUM,SP_ADD_GET_ZENY_NUM, // 1038-1042
|
||||||
SP_ADD_DAMAGE_CLASS,SP_ADD_MAGIC_DAMAGE_CLASS,SP_ADD_DEF_CLASS,SP_ADD_MDEF_CLASS, // 1043-1046
|
SP_ADD_DAMAGE_CLASS,SP_ADD_MAGIC_DAMAGE_CLASS,SP_ADD_DEF_MONSTER,SP_ADD_MDEF_MONSTER, // 1043-1046
|
||||||
SP_ADD_MONSTER_DROP_ITEM,SP_DEF_RATIO_ATK_ELE,SP_DEF_RATIO_ATK_RACE,SP_UNBREAKABLE_GARMENT, // 1047-1050
|
SP_ADD_MONSTER_DROP_ITEM,SP_DEF_RATIO_ATK_ELE,SP_DEF_RATIO_ATK_RACE,SP_UNBREAKABLE_GARMENT, // 1047-1050
|
||||||
SP_HIT_RATE,SP_FLEE_RATE,SP_FLEE2_RATE,SP_DEF_RATE,SP_DEF2_RATE,SP_MDEF_RATE,SP_MDEF2_RATE, // 1051-1057
|
SP_HIT_RATE,SP_FLEE_RATE,SP_FLEE2_RATE,SP_DEF_RATE,SP_DEF2_RATE,SP_MDEF_RATE,SP_MDEF2_RATE, // 1051-1057
|
||||||
SP_SPLASH_RANGE,SP_SPLASH_ADD_RANGE,SP_AUTOSPELL,SP_HP_DRAIN_RATE,SP_SP_DRAIN_RATE, // 1058-1062
|
SP_SPLASH_RANGE,SP_SPLASH_ADD_RANGE,SP_AUTOSPELL,SP_HP_DRAIN_RATE,SP_SP_DRAIN_RATE, // 1058-1062
|
||||||
@ -409,7 +418,7 @@ enum _sp {
|
|||||||
SP_HP_DRAIN_VALUE,SP_SP_DRAIN_VALUE, // 1079-1080
|
SP_HP_DRAIN_VALUE,SP_SP_DRAIN_VALUE, // 1079-1080
|
||||||
SP_WEAPON_ATK,SP_WEAPON_ATK_RATE, // 1081-1082
|
SP_WEAPON_ATK,SP_WEAPON_ATK_RATE, // 1081-1082
|
||||||
SP_DELAYRATE,SP_HP_DRAIN_RATE_RACE,SP_SP_DRAIN_RATE_RACE, // 1083-1085
|
SP_DELAYRATE,SP_HP_DRAIN_RATE_RACE,SP_SP_DRAIN_RATE_RACE, // 1083-1085
|
||||||
SP_IGNORE_MDEF_RATE,SP_IGNORE_DEF_RATE,SP_SKILL_HEAL2,SP_ADDEFF_ONSKILL, //1086-1089
|
SP_IGNORE_MDEF_RATE,SP_IGNORE_DEF_RACE_RATE,SP_SKILL_HEAL2,SP_ADDEFF_ONSKILL, //1086-1089
|
||||||
SP_ADD_HEAL_RATE,SP_ADD_HEAL2_RATE, SP_EQUIP_ATK, //1090-1092
|
SP_ADD_HEAL_RATE,SP_ADD_HEAL2_RATE, SP_EQUIP_ATK, //1090-1092
|
||||||
|
|
||||||
SP_RESTART_FULL_RECOVER=2000,SP_NO_CASTCANCEL,SP_NO_SIZEFIX,SP_NO_MAGIC_DAMAGE,SP_NO_WEAPON_DAMAGE,SP_NO_GEMSTONE, // 2000-2005
|
SP_RESTART_FULL_RECOVER=2000,SP_NO_CASTCANCEL,SP_NO_SIZEFIX,SP_NO_MAGIC_DAMAGE,SP_NO_WEAPON_DAMAGE,SP_NO_GEMSTONE, // 2000-2005
|
||||||
@ -427,7 +436,11 @@ enum _sp {
|
|||||||
SP_EMATK, SP_SP_GAIN_RACE_ATTACK, SP_HP_GAIN_RACE_ATTACK, SP_SKILL_USE_SP_RATE, //2046-2049
|
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_COOLDOWN,SP_SKILL_FIXEDCAST, SP_SKILL_VARIABLECAST, SP_FIXCASTRATE, SP_VARCASTRATE, //2050-2054
|
||||||
SP_SKILL_USE_SP,SP_MAGIC_ATK_ELE, SP_ADD_FIXEDCAST, SP_ADD_VARIABLECAST, //2055-2058
|
SP_SKILL_USE_SP,SP_MAGIC_ATK_ELE, SP_ADD_FIXEDCAST, SP_ADD_VARIABLECAST, //2055-2058
|
||||||
SP_DEF_SET,SP_MDEF_SET,SP_HP_VANISH_RATE //2059-2061
|
SP_DEF_SET,SP_MDEF_SET,SP_HP_VANISH_RATE, //2059-2061
|
||||||
|
|
||||||
|
SP_IGNORE_DEF_CLASS, SP_IGNORE_MDEF_RACE_RATE, SP_DEF_RATIO_ATK_CLASS, //2062-2064
|
||||||
|
SP_ADDCLASS, SP_SUBCLASS, SP_MAGIC_ADDCLASS, SP_WEAPON_COMA_CLASS, //2065-2068
|
||||||
|
SP_HP_DRAIN_VALUE_CLASS, SP_SP_DRAIN_VALUE_CLASS, SP_IGNORE_MDEF_CLASS_RATE //2069-2071
|
||||||
};
|
};
|
||||||
|
|
||||||
enum _look {
|
enum _look {
|
||||||
|
@ -440,9 +440,9 @@ static bool read_mercenarydb_sub(char* str[], int columns, int current)
|
|||||||
ele = atoi(str[21]);
|
ele = atoi(str[21]);
|
||||||
status->def_ele = ele%10;
|
status->def_ele = ele%10;
|
||||||
status->ele_lv = ele/20;
|
status->ele_lv = ele/20;
|
||||||
if( status->def_ele >= ELE_MAX )
|
if( status->def_ele >= ELE_ALL )
|
||||||
{
|
{
|
||||||
ShowWarning("Mercenary %d has invalid element type %d (max element is %d)\n", db->class_, status->def_ele, ELE_MAX - 1);
|
ShowWarning("Mercenary %d has invalid element type %d (max element is %d)\n", db->class_, status->def_ele, ELE_ALL - 1);
|
||||||
status->def_ele = ELE_NEUTRAL;
|
status->def_ele = ELE_NEUTRAL;
|
||||||
}
|
}
|
||||||
if( status->ele_lv < 1 || status->ele_lv > 4 )
|
if( status->ele_lv < 1 || status->ele_lv > 4 )
|
||||||
|
291
src/map/mob.c
291
src/map/mob.c
@ -78,7 +78,7 @@ static struct eri *item_drop_list_ers;
|
|||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
int qty;
|
int qty;
|
||||||
int class_[350];
|
int mob_id[350];
|
||||||
} summon[MAX_RANDOMMONSTER];
|
} summon[MAX_RANDOMMONSTER];
|
||||||
|
|
||||||
//Defines the Manuk/Splendide mob groups for the status reductions [Epoque]
|
//Defines the Manuk/Splendide mob groups for the status reductions [Epoque]
|
||||||
@ -90,7 +90,7 @@ const int mob_splendide[5] = { 1991, 1992, 1993, 1994, 1995 };
|
|||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
static int mob_makedummymobdb(int);
|
static int mob_makedummymobdb(int);
|
||||||
static int mob_spawn_guardian_sub(int tid, unsigned int tick, int id, intptr_t data);
|
static int mob_spawn_guardian_sub(int tid, unsigned int tick, int id, intptr_t data);
|
||||||
int mob_skill_id2skill_idx(int class_,uint16 skill_id);
|
int mob_skill_id2skill_idx(int mob_id,uint16 skill_id);
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Mob is searched with a name.
|
* Mob is searched with a name.
|
||||||
@ -232,11 +232,11 @@ int mobdb_checkid(const int id)
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Returns the view data associated to this mob class.
|
* Returns the view data associated to this mob class.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
struct view_data * mob_get_viewdata(int class_)
|
struct view_data * mob_get_viewdata(int mob_id)
|
||||||
{
|
{
|
||||||
if (mob_db(class_) == mob_dummy)
|
if (mob_db(mob_id) == mob_dummy)
|
||||||
return 0;
|
return 0;
|
||||||
return &mob_db(class_)->vd;
|
return &mob_db(mob_id)->vd;
|
||||||
}
|
}
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Cleans up mob-spawn data to make it "valid"
|
* Cleans up mob-spawn data to make it "valid"
|
||||||
@ -245,7 +245,7 @@ int mob_parse_dataset(struct spawn_data *data)
|
|||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if ((!mobdb_checkid(data->class_) && !mob_is_clone(data->class_)) || !data->num)
|
if ((!mobdb_checkid(data->id) && !mob_is_clone(data->id)) || !data->num)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if( ( len = strlen(data->eventname) ) > 0 )
|
if( ( len = strlen(data->eventname) ) > 0 )
|
||||||
@ -257,9 +257,9 @@ int mob_parse_dataset(struct spawn_data *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(strcmp(data->name,"--en--")==0)
|
if(strcmp(data->name,"--en--")==0)
|
||||||
safestrncpy(data->name, mob_db(data->class_)->name, sizeof(data->name));
|
safestrncpy(data->name, mob_db(data->id)->name, sizeof(data->name));
|
||||||
else if(strcmp(data->name,"--ja--")==0)
|
else if(strcmp(data->name,"--ja--")==0)
|
||||||
safestrncpy(data->name, mob_db(data->class_)->jname, sizeof(data->name));
|
safestrncpy(data->name, mob_db(data->id)->jname, sizeof(data->name));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -274,9 +274,9 @@ struct mob_data* mob_spawn_dataset(struct spawn_data *data)
|
|||||||
md->bl.m = data->m;
|
md->bl.m = data->m;
|
||||||
md->bl.x = data->x;
|
md->bl.x = data->x;
|
||||||
md->bl.y = data->y;
|
md->bl.y = data->y;
|
||||||
md->class_ = data->class_;
|
md->mob_id = data->id;
|
||||||
md->state.boss = data->state.boss;
|
md->state.boss = data->state.boss;
|
||||||
md->db = mob_db(md->class_);
|
md->db = mob_db(md->mob_id);
|
||||||
if (data->level > 0 && data->level <= MAX_LEVEL)
|
if (data->level > 0 && data->level <= MAX_LEVEL)
|
||||||
md->level = data->level;
|
md->level = data->level;
|
||||||
memcpy(md->name, data->name, NAME_LENGTH);
|
memcpy(md->name, data->name, NAME_LENGTH);
|
||||||
@ -291,7 +291,7 @@ struct mob_data* mob_spawn_dataset(struct spawn_data *data)
|
|||||||
md->spawn_timer = INVALID_TIMER;
|
md->spawn_timer = INVALID_TIMER;
|
||||||
md->deletetimer = INVALID_TIMER;
|
md->deletetimer = INVALID_TIMER;
|
||||||
md->skill_idx = -1;
|
md->skill_idx = -1;
|
||||||
status_set_viewdata(&md->bl, md->class_);
|
status_set_viewdata(&md->bl, md->mob_id);
|
||||||
status_change_init(&md->bl);
|
status_change_init(&md->bl);
|
||||||
unit_dataset(&md->bl);
|
unit_dataset(&md->bl);
|
||||||
|
|
||||||
@ -315,19 +315,19 @@ struct mob_data* mob_spawn_dataset(struct spawn_data *data)
|
|||||||
int mob_get_random_id(int type, int flag, int lv)
|
int mob_get_random_id(int type, int flag, int lv)
|
||||||
{
|
{
|
||||||
struct mob_db *mob;
|
struct mob_db *mob;
|
||||||
int i=0, class_;
|
int i=0, mob_id;
|
||||||
if(type < 0 || type >= MAX_RANDOMMONSTER) {
|
if(type < 0 || type >= MAX_RANDOMMONSTER) {
|
||||||
ShowError("mob_get_random_id: Invalid type (%d) of random monster.\n", type);
|
ShowError("mob_get_random_id: Invalid type (%d) of random monster.\n", type);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
do {
|
do {
|
||||||
if (type)
|
if (type)
|
||||||
class_ = summon[type].class_[rnd()%summon[type].qty];
|
mob_id = summon[type].mob_id[rnd()%summon[type].qty];
|
||||||
else //Dead branch
|
else //Dead branch
|
||||||
class_ = rnd() % MAX_MOB_DB;
|
mob_id = rnd() % MAX_MOB_DB;
|
||||||
mob = mob_db(class_);
|
mob = mob_db(mob_id);
|
||||||
} while ((mob == mob_dummy ||
|
} while ((mob == mob_dummy ||
|
||||||
mob_is_clone(class_) ||
|
mob_is_clone(mob_id) ||
|
||||||
(flag&1 && mob->summonper[type] <= rnd() % 1000000) ||
|
(flag&1 && mob->summonper[type] <= rnd() % 1000000) ||
|
||||||
(flag&2 && lv < mob->lv) ||
|
(flag&2 && lv < mob->lv) ||
|
||||||
(flag&4 && mob->status.mode&MD_BOSS) ||
|
(flag&4 && mob->status.mode&MD_BOSS) ||
|
||||||
@ -335,8 +335,8 @@ int mob_get_random_id(int type, int flag, int lv)
|
|||||||
) && (i++) < MAX_MOB_DB);
|
) && (i++) < MAX_MOB_DB);
|
||||||
|
|
||||||
if(i >= MAX_MOB_DB) // no suitable monster found, use fallback for given list
|
if(i >= MAX_MOB_DB) // no suitable monster found, use fallback for given list
|
||||||
class_ = mob_db_data[0]->summonper[type];
|
mob_id = mob_db_data[0]->summonper[type];
|
||||||
return class_;
|
return mob_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
@ -425,14 +425,14 @@ bool mob_ksprotected (struct block_list *src, struct block_list *target)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int16 y, const char *mobname, int class_, const char *event, unsigned int size, unsigned int ai)
|
struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int16 y, const char *mobname, int mob_id, const char *event, unsigned int size, unsigned int ai)
|
||||||
{
|
{
|
||||||
struct spawn_data data;
|
struct spawn_data data;
|
||||||
|
|
||||||
memset(&data, 0, sizeof(struct spawn_data));
|
memset(&data, 0, sizeof(struct spawn_data));
|
||||||
data.m = m;
|
data.m = m;
|
||||||
data.num = 1;
|
data.num = 1;
|
||||||
data.class_ = class_;
|
data.id = mob_id;
|
||||||
data.state.size = size;
|
data.state.size = size;
|
||||||
data.state.ai = ai;
|
data.state.ai = ai;
|
||||||
|
|
||||||
@ -467,7 +467,7 @@ struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Spawn a single mob on the specified coordinates.
|
* Spawn a single mob on the specified coordinates.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const char* mobname, int class_, int amount, const char* event, unsigned int size, unsigned int ai)
|
int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const char* mobname, int mob_id, int amount, const char* event, unsigned int size, unsigned int ai)
|
||||||
{
|
{
|
||||||
struct mob_data* md = NULL;
|
struct mob_data* md = NULL;
|
||||||
int count, lv;
|
int count, lv;
|
||||||
@ -479,13 +479,13 @@ int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const
|
|||||||
|
|
||||||
for (count = 0; count < amount; count++)
|
for (count = 0; count < amount; count++)
|
||||||
{
|
{
|
||||||
int c = (class_ >= 0) ? class_ : mob_get_random_id(-class_ - 1, (battle_config.random_monster_checklv) ? 3 : 1, lv);
|
int c = (mob_id >= 0) ? mob_id : mob_get_random_id(-mob_id - 1, (battle_config.random_monster_checklv) ? 3 : 1, lv);
|
||||||
md = mob_once_spawn_sub((sd) ? &sd->bl : NULL, m, x, y, mobname, c, event, size, ai);
|
md = mob_once_spawn_sub((sd) ? &sd->bl : NULL, m, x, y, mobname, c, event, size, ai);
|
||||||
|
|
||||||
if (!md)
|
if (!md)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (class_ == MOBID_EMPERIUM)
|
if (mob_id == MOBID_EMPERIUM)
|
||||||
{
|
{
|
||||||
struct guild_castle* gc = guild_mapindex2gc(map[m].index);
|
struct guild_castle* gc = guild_mapindex2gc(map[m].index);
|
||||||
struct guild* g = (gc) ? guild_search(gc->guild_id) : NULL;
|
struct guild* g = (gc) ? guild_search(gc->guild_id) : NULL;
|
||||||
@ -507,7 +507,7 @@ int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const
|
|||||||
|
|
||||||
mob_spawn(md);
|
mob_spawn(md);
|
||||||
|
|
||||||
if (class_ < 0 && battle_config.dead_branch_active)
|
if (mob_id < 0 && battle_config.dead_branch_active)
|
||||||
//Behold Aegis's masterful decisions yet again...
|
//Behold Aegis's masterful decisions yet again...
|
||||||
//"I understand the "Aggressive" part, but the "Can Move" and "Can Attack" is just stupid" - Poki#3
|
//"I understand the "Aggressive" part, but the "Can Move" and "Can Attack" is just stupid" - Poki#3
|
||||||
sc_start4(NULL,&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE|MD_CANATTACK|MD_CANMOVE|MD_ANGRY, 0, 60000);
|
sc_start4(NULL,&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE|MD_CANATTACK|MD_CANMOVE|MD_ANGRY, 0, 60000);
|
||||||
@ -519,7 +519,7 @@ int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Spawn mobs in the specified area.
|
* Spawn mobs in the specified area.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, const char* mobname, int class_, int amount, const char* event, unsigned int size, unsigned int ai)
|
int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0, int16 x1, int16 y1, const char* mobname, int mob_id, int amount, const char* event, unsigned int size, unsigned int ai)
|
||||||
{
|
{
|
||||||
int i, max, id = 0;
|
int i, max, id = 0;
|
||||||
int lx = -1, ly = -1;
|
int lx = -1, ly = -1;
|
||||||
@ -565,7 +565,7 @@ int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0
|
|||||||
lx = x;
|
lx = x;
|
||||||
ly = y;
|
ly = y;
|
||||||
|
|
||||||
id = mob_once_spawn(sd, m, x, y, mobname, class_, 1, event, size, ai);
|
id = mob_once_spawn(sd, m, x, y, mobname, mob_id, 1, event, size, ai);
|
||||||
}
|
}
|
||||||
|
|
||||||
return id; // id of last spawned mob
|
return id; // id of last spawned mob
|
||||||
@ -596,7 +596,7 @@ static int mob_spawn_guardian_sub(int tid, unsigned int tick, int id, intptr_t d
|
|||||||
if (g == NULL)
|
if (g == NULL)
|
||||||
{ //Liberate castle, if the guild is not found this is an error! [Skotlex]
|
{ //Liberate castle, if the guild is not found this is an error! [Skotlex]
|
||||||
ShowError("mob_spawn_guardian_sub: Couldn't load guild %d!\n", (int)data);
|
ShowError("mob_spawn_guardian_sub: Couldn't load guild %d!\n", (int)data);
|
||||||
if (md->class_ == MOBID_EMPERIUM)
|
if (md->mob_id == MOBID_EMPERIUM)
|
||||||
{ //Not sure this is the best way, but otherwise we'd be invoking this for ALL guardians spawned later on.
|
{ //Not sure this is the best way, but otherwise we'd be invoking this for ALL guardians spawned later on.
|
||||||
md->guardian_data->guild_id = 0;
|
md->guardian_data->guild_id = 0;
|
||||||
if (md->guardian_data->castle->guild_id) //Free castle up.
|
if (md->guardian_data->castle->guild_id) //Free castle up.
|
||||||
@ -623,7 +623,7 @@ static int mob_spawn_guardian_sub(int tid, unsigned int tick, int id, intptr_t d
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Summoning Guardians [Valaris]
|
* Summoning Guardians [Valaris]
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobname, int class_, const char* event, int guardian, bool has_index)
|
int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobname, int mob_id, const char* event, int guardian, bool has_index)
|
||||||
{
|
{
|
||||||
struct mob_data *md=NULL;
|
struct mob_data *md=NULL;
|
||||||
struct spawn_data data;
|
struct spawn_data data;
|
||||||
@ -642,12 +642,12 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam
|
|||||||
}
|
}
|
||||||
data.m = m;
|
data.m = m;
|
||||||
data.num = 1;
|
data.num = 1;
|
||||||
if(class_<=0) {
|
if(mob_id<=0) {
|
||||||
class_ = mob_get_random_id(-class_-1, 1, 99);
|
mob_id = mob_get_random_id(-mob_id-1, 1, 99);
|
||||||
if (!class_) return 0;
|
if (!mob_id) return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
data.class_ = class_;
|
data.id = mob_id;
|
||||||
|
|
||||||
if( !has_index )
|
if( !has_index )
|
||||||
{
|
{
|
||||||
@ -655,13 +655,13 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam
|
|||||||
}
|
}
|
||||||
else if( guardian < 0 || guardian >= MAX_GUARDIANS )
|
else if( guardian < 0 || guardian >= MAX_GUARDIANS )
|
||||||
{
|
{
|
||||||
ShowError("mob_spawn_guardian: Invalid guardian index %d for guardian %d (castle map %s)\n", guardian, class_, map[m].name);
|
ShowError("mob_spawn_guardian: Invalid guardian index %d for guardian %d (castle map %s)\n", guardian, mob_id, map[m].name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((x<=0 || y<=0) && !map_search_freecell(NULL, m, &x, &y, -1,-1, 1))
|
if((x<=0 || y<=0) && !map_search_freecell(NULL, m, &x, &y, -1,-1, 1))
|
||||||
{
|
{
|
||||||
ShowWarning("mob_spawn_guardian: Couldn't locate a spawn cell for guardian class %d (index %d) at castle map %s\n",class_, guardian, map[m].name);
|
ShowWarning("mob_spawn_guardian: Couldn't locate a spawn cell for guardian class %d (index %d) at castle map %s\n",mob_id, guardian, map[m].name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
data.x = x;
|
data.x = x;
|
||||||
@ -678,7 +678,7 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!gc->guild_id)
|
if (!gc->guild_id)
|
||||||
ShowWarning("mob_spawn_guardian: Spawning guardian %d on a castle with no guild (castle map %s)\n", class_, map[m].name);
|
ShowWarning("mob_spawn_guardian: Spawning guardian %d on a castle with no guild (castle map %s)\n", mob_id, map[m].name);
|
||||||
else
|
else
|
||||||
g = guild_search(gc->guild_id);
|
g = guild_search(gc->guild_id);
|
||||||
|
|
||||||
@ -728,7 +728,7 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Summoning BattleGround [Zephyrus]
|
* Summoning BattleGround [Zephyrus]
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int class_, const char* event, unsigned int bg_id)
|
int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int mob_id, const char* event, unsigned int bg_id)
|
||||||
{
|
{
|
||||||
struct mob_data *md = NULL;
|
struct mob_data *md = NULL;
|
||||||
struct spawn_data data;
|
struct spawn_data data;
|
||||||
@ -743,16 +743,16 @@ int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int
|
|||||||
memset(&data, 0, sizeof(struct spawn_data));
|
memset(&data, 0, sizeof(struct spawn_data));
|
||||||
data.m = m;
|
data.m = m;
|
||||||
data.num = 1;
|
data.num = 1;
|
||||||
if( class_ <= 0 )
|
if( mob_id <= 0 )
|
||||||
{
|
{
|
||||||
class_ = mob_get_random_id(-class_-1,1,99);
|
mob_id = mob_get_random_id(-mob_id-1,1,99);
|
||||||
if( !class_ ) return 0;
|
if( !mob_id ) return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
data.class_ = class_;
|
data.id = mob_id;
|
||||||
if( (x <= 0 || y <= 0) && !map_search_freecell(NULL, m, &x, &y, -1,-1, 1) )
|
if( (x <= 0 || y <= 0) && !map_search_freecell(NULL, m, &x, &y, -1,-1, 1) )
|
||||||
{
|
{
|
||||||
ShowWarning("mob_spawn_bg: Couldn't locate a spawn cell for guardian class %d (bg_id %d) at map %s\n",class_, bg_id, map[m].name);
|
ShowWarning("mob_spawn_bg: Couldn't locate a spawn cell for guardian class %d (bg_id %d) at map %s\n",mob_id, bg_id, map[m].name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -802,17 +802,17 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state
|
|||||||
int mob_linksearch(struct block_list *bl,va_list ap)
|
int mob_linksearch(struct block_list *bl,va_list ap)
|
||||||
{
|
{
|
||||||
struct mob_data *md;
|
struct mob_data *md;
|
||||||
int class_;
|
int mob_id;
|
||||||
struct block_list *target;
|
struct block_list *target;
|
||||||
unsigned int tick;
|
unsigned int tick;
|
||||||
|
|
||||||
nullpo_ret(bl);
|
nullpo_ret(bl);
|
||||||
md=(struct mob_data *)bl;
|
md=(struct mob_data *)bl;
|
||||||
class_ = va_arg(ap, int);
|
mob_id = va_arg(ap, int);
|
||||||
target = va_arg(ap, struct block_list *);
|
target = va_arg(ap, struct block_list *);
|
||||||
tick=va_arg(ap, unsigned int);
|
tick=va_arg(ap, unsigned int);
|
||||||
|
|
||||||
if (md->class_ == class_ && DIFF_TICK(md->last_linktime, tick) < MIN_MOBLINKTIME
|
if (md->mob_id == mob_id && DIFF_TICK(md->last_linktime, tick) < MIN_MOBLINKTIME
|
||||||
&& !md->target_id)
|
&& !md->target_id)
|
||||||
{
|
{
|
||||||
md->last_linktime = tick;
|
md->last_linktime = tick;
|
||||||
@ -863,7 +863,7 @@ int mob_setdelayspawn(struct mob_data *md)
|
|||||||
spawntime+= rnd()%md->spawn->delay2;
|
spawntime+= rnd()%md->spawn->delay2;
|
||||||
|
|
||||||
//Apply the spawn delay fix [Skotlex]
|
//Apply the spawn delay fix [Skotlex]
|
||||||
db = mob_db(md->spawn->class_);
|
db = mob_db(md->spawn->id);
|
||||||
mode = db->status.mode;
|
mode = db->status.mode;
|
||||||
if (mode & MD_BOSS) { //Bosses
|
if (mode & MD_BOSS) { //Bosses
|
||||||
if (battle_config.boss_spawn_delay != 100) {
|
if (battle_config.boss_spawn_delay != 100) {
|
||||||
@ -893,7 +893,7 @@ int mob_count_sub(struct block_list *bl, va_list ap) {
|
|||||||
ARR_FIND(0, 10, i, (mobid[i] = va_arg(ap, int)) == 0); //fetch till 0
|
ARR_FIND(0, 10, i, (mobid[i] = va_arg(ap, int)) == 0); //fetch till 0
|
||||||
if (mobid[0]) { //if there one let's check it otherwise go backward
|
if (mobid[0]) { //if there one let's check it otherwise go backward
|
||||||
TBL_MOB *md = BL_CAST(BL_MOB, bl);
|
TBL_MOB *md = BL_CAST(BL_MOB, bl);
|
||||||
ARR_FIND(0, 10, i, md->class_ == mobid[i]);
|
ARR_FIND(0, 10, i, md->mob_id == mobid[i]);
|
||||||
return (i < 10) ? 1 : 0;
|
return (i < 10) ? 1 : 0;
|
||||||
}
|
}
|
||||||
return 1; //backward compatibility
|
return 1; //backward compatibility
|
||||||
@ -914,11 +914,11 @@ int mob_spawn (struct mob_data *md)
|
|||||||
if (md->bl.prev != NULL)
|
if (md->bl.prev != NULL)
|
||||||
unit_remove_map(&md->bl,CLR_RESPAWN);
|
unit_remove_map(&md->bl,CLR_RESPAWN);
|
||||||
else
|
else
|
||||||
if (md->spawn && md->class_ != md->spawn->class_)
|
if (md->spawn && md->mob_id != md->spawn->id)
|
||||||
{
|
{
|
||||||
md->class_ = md->spawn->class_;
|
md->mob_id = md->spawn->id;
|
||||||
status_set_viewdata(&md->bl, md->class_);
|
status_set_viewdata(&md->bl, md->mob_id);
|
||||||
md->db = mob_db(md->class_);
|
md->db = mob_db(md->mob_id);
|
||||||
memcpy(md->name,md->spawn->name,NAME_LENGTH);
|
memcpy(md->name,md->spawn->name,NAME_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1366,7 +1366,7 @@ int mob_randomwalk(struct mob_data *md,unsigned int tick)
|
|||||||
if(i==retrycount){
|
if(i==retrycount){
|
||||||
md->move_fail_count++;
|
md->move_fail_count++;
|
||||||
if(md->move_fail_count>1000){
|
if(md->move_fail_count>1000){
|
||||||
ShowWarning("MOB can't move. random spawn %d, class = %d, at %s (%d,%d)\n",md->bl.id,md->class_,map[md->bl.m].name, md->bl.x, md->bl.y);
|
ShowWarning("MOB can't move. random spawn %d, class = %d, at %s (%d,%d)\n",md->bl.id,md->mob_id,map[md->bl.m].name, md->bl.x, md->bl.y);
|
||||||
md->move_fail_count=0;
|
md->move_fail_count=0;
|
||||||
mob_spawn(md);
|
mob_spawn(md);
|
||||||
}
|
}
|
||||||
@ -2310,7 +2310,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
if(base_exp || job_exp) {
|
if(base_exp || job_exp) {
|
||||||
if( md->dmglog[i].flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) {
|
if( md->dmglog[i].flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) {
|
||||||
#ifdef RENEWAL_EXP
|
#ifdef RENEWAL_EXP
|
||||||
int rate = pc_level_penalty_mod(tmpsd[i], md->level, md->status.race, md->status.mode, 1);
|
int rate = pc_level_penalty_mod(tmpsd[i], md->level, md->status.class_, 1);
|
||||||
base_exp = (unsigned int)cap_value(base_exp * rate / 100, 1, UINT_MAX);
|
base_exp = (unsigned int)cap_value(base_exp * rate / 100, 1, UINT_MAX);
|
||||||
job_exp = (unsigned int)cap_value(job_exp * rate / 100, 1, UINT_MAX);
|
job_exp = (unsigned int)cap_value(job_exp * rate / 100, 1, UINT_MAX);
|
||||||
#endif
|
#endif
|
||||||
@ -2341,9 +2341,9 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
struct item_data* it = NULL;
|
struct item_data* it = NULL;
|
||||||
int drop_rate;
|
int drop_rate;
|
||||||
#ifdef RENEWAL_DROP
|
#ifdef RENEWAL_DROP
|
||||||
int drop_modifier = mvp_sd ? pc_level_penalty_mod(mvp_sd, md->level, md->status.race, md->status.mode, 2) :
|
int drop_modifier = mvp_sd ? pc_level_penalty_mod(mvp_sd, md->level, md->status.class_, 2) :
|
||||||
second_sd ? pc_level_penalty_mod(second_sd, md->level, md->status.race, md->status.mode, 2):
|
second_sd ? pc_level_penalty_mod(second_sd, md->level, md->status.class_, 2):
|
||||||
third_sd ? pc_level_penalty_mod(third_sd, md->level, md->status.race, md->status.mode, 2) :
|
third_sd ? pc_level_penalty_mod(third_sd, md->level, md->status.class_, 2) :
|
||||||
100;/* no player was attached, we dont use any modifier (100 = rates are not touched) */
|
100;/* no player was attached, we dont use any modifier (100 = rates are not touched) */
|
||||||
#endif
|
#endif
|
||||||
dlist->m = md->bl.m;
|
dlist->m = md->bl.m;
|
||||||
@ -2434,10 +2434,10 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
// process script-granted extra drop bonuses
|
// process script-granted extra drop bonuses
|
||||||
int itemid = 0;
|
int itemid = 0;
|
||||||
for (i = 0; i < ARRAYLENGTH(sd->add_drop) && (sd->add_drop[i].id || sd->add_drop[i].group); i++) {
|
for (i = 0; i < ARRAYLENGTH(sd->add_drop) && (sd->add_drop[i].id || sd->add_drop[i].group); i++) {
|
||||||
if ( sd->add_drop[i].race == -md->class_ ||
|
if ( sd->add_drop[i].race == -md->mob_id ||
|
||||||
( sd->add_drop[i].race > 0 && (
|
( (sd->add_drop[i].race > 0 || sd->add_drop[i].class_ > 0) && (
|
||||||
sd->add_drop[i].race & (1<<status->race) ||
|
sd->add_drop[i].race & (1<<status->race) ||
|
||||||
sd->add_drop[i].race & (1<<(status->mode&MD_BOSS?RC_BOSS:RC_NONBOSS))
|
sd->add_drop[i].class_ & (1<<status->class_)
|
||||||
)))
|
)))
|
||||||
{
|
{
|
||||||
//check if the bonus item drop rate should be multiplied with mob level/10 [Lupus]
|
//check if the bonus item drop rate should be multiplied with mob level/10 [Lupus]
|
||||||
@ -2569,10 +2569,10 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log_mvpdrop(mvp_sd, md->class_, log_mvp);
|
log_mvpdrop(mvp_sd, md->mob_id, log_mvp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type&2 && !sd && md->class_ == MOBID_EMPERIUM)
|
if (type&2 && !sd && md->mob_id == MOBID_EMPERIUM)
|
||||||
//Emperium destroyed by script. Discard mvp character. [Skotlex]
|
//Emperium destroyed by script. Discard mvp character. [Skotlex]
|
||||||
mvp_sd = NULL;
|
mvp_sd = NULL;
|
||||||
|
|
||||||
@ -2590,7 +2590,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( sd ) {
|
if( sd ) {
|
||||||
if( sd->mission_mobid == md->class_) { //TK_MISSION [Skotlex]
|
if( sd->mission_mobid == md->mob_id) { //TK_MISSION [Skotlex]
|
||||||
if( ++sd->mission_count >= 100 && (temp = mob_get_random_id(0, 0xE, sd->status.base_level)) ) {
|
if( ++sd->mission_count >= 100 && (temp = mob_get_random_id(0, 0xE, sd->status.base_level)) ) {
|
||||||
pc_addfame(sd, 1);
|
pc_addfame(sd, 1);
|
||||||
sd->mission_mobid = temp;
|
sd->mission_mobid = temp;
|
||||||
@ -2602,11 +2602,11 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( sd->status.party_id )
|
if( sd->status.party_id )
|
||||||
map_foreachinrange(quest_update_objective_sub,&md->bl,AREA_SIZE,BL_PC,sd->status.party_id,md->class_);
|
map_foreachinrange(quest_update_objective_sub,&md->bl,AREA_SIZE,BL_PC,sd->status.party_id,md->mob_id);
|
||||||
else if( sd->avail_quests )
|
else if( sd->avail_quests )
|
||||||
quest_update_objective(sd, md->class_);
|
quest_update_objective(sd, md->mob_id);
|
||||||
|
|
||||||
if( sd->md && src && src->type == BL_MER && mob_db(md->class_)->lv > sd->status.base_level/2 )
|
if( sd->md && src && src->type == BL_MER && mob_db(md->mob_id)->lv > sd->status.base_level/2 )
|
||||||
mercenary_kills(sd->md);
|
mercenary_kills(sd->md);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2620,7 +2620,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
|||||||
} else
|
} else
|
||||||
npc_event_do(md->npc_event);
|
npc_event_do(md->npc_event);
|
||||||
} else if( mvp_sd && !md->state.npc_killmonster ) {
|
} else if( mvp_sd && !md->state.npc_killmonster ) {
|
||||||
pc_setparam(mvp_sd, SP_KILLEDRID, md->class_);
|
pc_setparam(mvp_sd, SP_KILLEDRID, md->mob_id);
|
||||||
npc_script_event(mvp_sd, NPCE_KILLNPC); // PCKillNPC [Lance]
|
npc_script_event(mvp_sd, NPCE_KILLNPC); // PCKillNPC [Lance]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2700,7 +2700,7 @@ int mob_guardian_guildchange(struct mob_data *md)
|
|||||||
|
|
||||||
if (md->guardian_data->castle->guild_id == 0)
|
if (md->guardian_data->castle->guild_id == 0)
|
||||||
{ //Castle with no owner? Delete the guardians.
|
{ //Castle with no owner? Delete the guardians.
|
||||||
if (md->class_ == MOBID_EMPERIUM)
|
if (md->mob_id == MOBID_EMPERIUM)
|
||||||
{ //But don't delete the emperium, just clear it's guild-data
|
{ //But don't delete the emperium, just clear it's guild-data
|
||||||
md->guardian_data->guild_id = 0;
|
md->guardian_data->guild_id = 0;
|
||||||
md->guardian_data->emblem_id = 0;
|
md->guardian_data->emblem_id = 0;
|
||||||
@ -2756,7 +2756,7 @@ int mob_random_class (int *value, size_t count)
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Change mob base class
|
* Change mob base class
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_class_change (struct mob_data *md, int class_)
|
int mob_class_change (struct mob_data *md, int mob_id)
|
||||||
{
|
{
|
||||||
unsigned int tick = gettick();
|
unsigned int tick = gettick();
|
||||||
int i, c, hp_rate;
|
int i, c, hp_rate;
|
||||||
@ -2776,15 +2776,15 @@ int mob_class_change (struct mob_data *md, int class_)
|
|||||||
if( md->special_state.ai > AI_ATTACK )
|
if( md->special_state.ai > AI_ATTACK )
|
||||||
return 0; //Marine Spheres and Floras.
|
return 0; //Marine Spheres and Floras.
|
||||||
|
|
||||||
if( mob_is_clone(md->class_) )
|
if( mob_is_clone(md->mob_id) )
|
||||||
return 0; //Clones
|
return 0; //Clones
|
||||||
|
|
||||||
if( md->class_ == class_ )
|
if( md->mob_id == mob_id )
|
||||||
return 0; //Nothing to change.
|
return 0; //Nothing to change.
|
||||||
|
|
||||||
hp_rate = get_percentage(md->status.hp, md->status.max_hp);
|
hp_rate = get_percentage(md->status.hp, md->status.max_hp);
|
||||||
md->class_ = class_;
|
md->mob_id = mob_id;
|
||||||
md->db = mob_db(class_);
|
md->db = mob_db(mob_id);
|
||||||
if (battle_config.override_mob_names==1)
|
if (battle_config.override_mob_names==1)
|
||||||
memcpy(md->name,md->db->name,NAME_LENGTH);
|
memcpy(md->name,md->db->name,NAME_LENGTH);
|
||||||
else
|
else
|
||||||
@ -2793,7 +2793,7 @@ int mob_class_change (struct mob_data *md, int class_)
|
|||||||
mob_stop_attack(md);
|
mob_stop_attack(md);
|
||||||
mob_stop_walking(md, 0);
|
mob_stop_walking(md, 0);
|
||||||
unit_skillcastcancel(&md->bl, 0);
|
unit_skillcastcancel(&md->bl, 0);
|
||||||
status_set_viewdata(&md->bl, class_);
|
status_set_viewdata(&md->bl, mob_id);
|
||||||
clif_mob_class_change(md,md->vd->class_);
|
clif_mob_class_change(md,md->vd->class_);
|
||||||
status_calc_mob(md, 1);
|
status_calc_mob(md, 1);
|
||||||
md->ud.state.speed_changed = 1; //Speed change update.
|
md->ud.state.speed_changed = 1; //Speed change update.
|
||||||
@ -2925,8 +2925,8 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id)
|
|||||||
|
|
||||||
for(;k<amount;k++) {
|
for(;k<amount;k++) {
|
||||||
short x,y;
|
short x,y;
|
||||||
data.class_ = value[k%count]; //Summon slaves in round-robin fashion. [Skotlex]
|
data.id = value[k%count]; //Summon slaves in round-robin fashion. [Skotlex]
|
||||||
if (mobdb_checkid(data.class_) == 0)
|
if (mobdb_checkid(data.id) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (map_search_freecell(&md2->bl, 0, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 0)) {
|
if (map_search_freecell(&md2->bl, 0, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 0)) {
|
||||||
@ -2987,10 +2987,10 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id)
|
|||||||
* MOBskill lookup (get skillindex through skill_id)
|
* MOBskill lookup (get skillindex through skill_id)
|
||||||
* Returns -1 if not found.
|
* Returns -1 if not found.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_skill_id2skill_idx(int class_,uint16 skill_id)
|
int mob_skill_id2skill_idx(int mob_id,uint16 skill_id)
|
||||||
{
|
{
|
||||||
int i, max = mob_db(class_)->maxskill;
|
int i, max = mob_db(mob_id)->maxskill;
|
||||||
struct mob_skill *ms=mob_db(class_)->skill;
|
struct mob_skill *ms=mob_db(mob_id)->skill;
|
||||||
|
|
||||||
if(ms==NULL)
|
if(ms==NULL)
|
||||||
return -1;
|
return -1;
|
||||||
@ -3351,13 +3351,13 @@ int mobskill_event(struct mob_data *md, struct block_list *src, unsigned int tic
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Player cloned mobs. [Valaris]
|
// Player cloned mobs. [Valaris]
|
||||||
int mob_is_clone(int class_)
|
int mob_is_clone(int mob_id)
|
||||||
{
|
{
|
||||||
if(class_ < MOB_CLONE_START || class_ > MOB_CLONE_END)
|
if(mob_id < MOB_CLONE_START || mob_id > MOB_CLONE_END)
|
||||||
return 0;
|
return 0;
|
||||||
if (mob_db(class_) == mob_dummy)
|
if (mob_db(mob_id) == mob_dummy)
|
||||||
return 0;
|
return 0;
|
||||||
return class_;
|
return mob_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Flag values:
|
//Flag values:
|
||||||
@ -3367,7 +3367,7 @@ int mob_is_clone(int class_)
|
|||||||
//Returns: ID of newly crafted copy.
|
//Returns: ID of newly crafted copy.
|
||||||
int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, int mode, int flag, unsigned int duration)
|
int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, int mode, int flag, unsigned int duration)
|
||||||
{
|
{
|
||||||
int class_;
|
int mob_id;
|
||||||
int i,j,inf,skill_id, fd;
|
int i,j,inf,skill_id, fd;
|
||||||
struct mob_data *md;
|
struct mob_data *md;
|
||||||
struct mob_skill *ms;
|
struct mob_skill *ms;
|
||||||
@ -3379,11 +3379,11 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons
|
|||||||
if(pc_isdead(sd) && master_id && flag&1)
|
if(pc_isdead(sd) && master_id && flag&1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ARR_FIND( MOB_CLONE_START, MOB_CLONE_END, class_, mob_db_data[class_] == NULL );
|
ARR_FIND( MOB_CLONE_START, MOB_CLONE_END, mob_id, mob_db_data[mob_id] == NULL );
|
||||||
if(class_ >= MOB_CLONE_END)
|
if(mob_id >= MOB_CLONE_END)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
db = mob_db_data[class_]=(struct mob_db*)aCalloc(1, sizeof(struct mob_db));
|
db = mob_db_data[mob_id]=(struct mob_db*)aCalloc(1, sizeof(struct mob_db));
|
||||||
status = &db->status;
|
status = &db->status;
|
||||||
strcpy(db->sprite,sd->status.name);
|
strcpy(db->sprite,sd->status.name);
|
||||||
strcpy(db->name,sd->status.name);
|
strcpy(db->name,sd->status.name);
|
||||||
@ -3538,7 +3538,7 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons
|
|||||||
sd->fd = fd;
|
sd->fd = fd;
|
||||||
|
|
||||||
//Finally, spawn it.
|
//Finally, spawn it.
|
||||||
md = mob_once_spawn_sub(&sd->bl, m, x, y, "--en--", class_, event, SZ_SMALL, AI_NONE);
|
md = mob_once_spawn_sub(&sd->bl, m, x, y, "--en--", mob_id, event, SZ_SMALL, AI_NONE);
|
||||||
if (!md) return 0; //Failed?
|
if (!md) return 0; //Failed?
|
||||||
|
|
||||||
md->special_state.clone = 1;
|
md->special_state.clone = 1;
|
||||||
@ -3563,11 +3563,11 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons
|
|||||||
|
|
||||||
int mob_clone_delete(struct mob_data *md)
|
int mob_clone_delete(struct mob_data *md)
|
||||||
{
|
{
|
||||||
const int class_ = md->class_;
|
const int mob_id = md->mob_id;
|
||||||
if (class_ >= MOB_CLONE_START && class_ < MOB_CLONE_END
|
if (mob_id >= MOB_CLONE_START && mob_id < MOB_CLONE_END
|
||||||
&& mob_db_data[class_]!=NULL) {
|
&& mob_db_data[mob_id]!=NULL) {
|
||||||
aFree(mob_db_data[class_]);
|
aFree(mob_db_data[mob_id]);
|
||||||
mob_db_data[class_]=NULL;
|
mob_db_data[mob_id]=NULL;
|
||||||
//Clear references to the db
|
//Clear references to the db
|
||||||
md->db = mob_dummy;
|
md->db = mob_dummy;
|
||||||
md->vd = NULL;
|
md->vd = NULL;
|
||||||
@ -3582,16 +3582,16 @@ int mob_clone_delete(struct mob_data *md)
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Since un-setting [ mob ] up was used, it is an initial provisional value setup.
|
* Since un-setting [ mob ] up was used, it is an initial provisional value setup.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
static int mob_makedummymobdb(int class_)
|
static int mob_makedummymobdb(int mob_id)
|
||||||
{
|
{
|
||||||
if (mob_dummy != NULL)
|
if (mob_dummy != NULL)
|
||||||
{
|
{
|
||||||
if (mob_db(class_) == mob_dummy)
|
if (mob_db(mob_id) == mob_dummy)
|
||||||
return 1; //Using the mob_dummy data already. [Skotlex]
|
return 1; //Using the mob_dummy data already. [Skotlex]
|
||||||
if (class_ > 0 && class_ <= MAX_MOB_DB)
|
if (mob_id > 0 && mob_id <= MAX_MOB_DB)
|
||||||
{ //Remove the mob data so that it uses the dummy data instead.
|
{ //Remove the mob data so that it uses the dummy data instead.
|
||||||
aFree(mob_db_data[class_]);
|
aFree(mob_db_data[mob_id]);
|
||||||
mob_db_data[class_] = NULL;
|
mob_db_data[mob_id] = NULL;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -3668,23 +3668,23 @@ static bool mob_parse_dbrow(char** str)
|
|||||||
{
|
{
|
||||||
struct mob_db *db, entry;
|
struct mob_db *db, entry;
|
||||||
struct status_data *status;
|
struct status_data *status;
|
||||||
int class_, i, k;
|
int mob_id, i, k;
|
||||||
double exp, maxhp;
|
double exp, maxhp;
|
||||||
struct mob_data data;
|
struct mob_data data;
|
||||||
|
|
||||||
class_ = atoi(str[0]);
|
mob_id = atoi(str[0]);
|
||||||
|
|
||||||
if (class_ <= 1000 || class_ > MAX_MOB_DB) {
|
if (mob_id <= 1000 || mob_id > MAX_MOB_DB) {
|
||||||
ShowError("mob_parse_dbrow: Invalid monster ID %d, must be in range %d-%d.\n", class_, 1000, MAX_MOB_DB);
|
ShowError("mob_parse_dbrow: Invalid monster ID %d, must be in range %d-%d.\n", mob_id, 1000, MAX_MOB_DB);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (pcdb_checkid(class_)) {
|
if (pcdb_checkid(mob_id)) {
|
||||||
ShowError("mob_parse_dbrow: Invalid monster ID %d, reserved for player classes.\n", class_);
|
ShowError("mob_parse_dbrow: Invalid monster ID %d, reserved for player classes.\n", mob_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (class_ >= MOB_CLONE_START && class_ < MOB_CLONE_END) {
|
if (mob_id >= MOB_CLONE_START && mob_id < MOB_CLONE_END) {
|
||||||
ShowError("mob_parse_dbrow: Invalid monster ID %d. Range %d-%d is reserved for player clones. Please increase MAX_MOB_DB (%d).\n", class_, MOB_CLONE_START, MOB_CLONE_END-1, MAX_MOB_DB);
|
ShowError("mob_parse_dbrow: Invalid monster ID %d. Range %d-%d is reserved for player clones. Please increase MAX_MOB_DB (%d).\n", mob_id, MOB_CLONE_START, MOB_CLONE_END-1, MAX_MOB_DB);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3693,7 +3693,7 @@ static bool mob_parse_dbrow(char** str)
|
|||||||
db = &entry;
|
db = &entry;
|
||||||
status = &db->status;
|
status = &db->status;
|
||||||
|
|
||||||
db->vd.class_ = class_;
|
db->vd.class_ = mob_id;
|
||||||
safestrncpy(db->sprite, str[1], sizeof(db->sprite));
|
safestrncpy(db->sprite, str[1], sizeof(db->sprite));
|
||||||
safestrncpy(db->jname, str[2], sizeof(db->jname));
|
safestrncpy(db->jname, str[2], sizeof(db->jname));
|
||||||
safestrncpy(db->name, str[3], sizeof(db->name));
|
safestrncpy(db->name, str[3], sizeof(db->name));
|
||||||
@ -3746,12 +3746,12 @@ static bool mob_parse_dbrow(char** str)
|
|||||||
i = atoi(str[24]); //Element
|
i = atoi(str[24]); //Element
|
||||||
status->def_ele = i%10;
|
status->def_ele = i%10;
|
||||||
status->ele_lv = i/20;
|
status->ele_lv = i/20;
|
||||||
if (status->def_ele >= ELE_MAX) {
|
if (status->def_ele >= ELE_ALL) {
|
||||||
ShowError("mob_parse_dbrow: Invalid element type %d for monster ID %d (max=%d).\n", status->def_ele, class_, ELE_MAX-1);
|
ShowError("mob_parse_dbrow: Invalid element type %d for monster ID %d (max=%d).\n", status->def_ele, mob_id, ELE_ALL-1);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (status->ele_lv < 1 || status->ele_lv > 4) {
|
if (status->ele_lv < 1 || status->ele_lv > 4) {
|
||||||
ShowError("mob_parse_dbrow: Invalid element level %d for monster ID %d, must be in range 1-4.\n", status->ele_lv, class_);
|
ShowError("mob_parse_dbrow: Invalid element level %d for monster ID %d, must be in range 1-4.\n", status->ele_lv, mob_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3759,6 +3759,13 @@ static bool mob_parse_dbrow(char** str)
|
|||||||
if (!battle_config.monster_active_enable)
|
if (!battle_config.monster_active_enable)
|
||||||
status->mode &= ~MD_AGGRESSIVE;
|
status->mode &= ~MD_AGGRESSIVE;
|
||||||
|
|
||||||
|
if( status->mode&MD_BOSS )
|
||||||
|
status->class_ = CLASS_BOSS;
|
||||||
|
else if( mob_is_guardian(mob_id) )
|
||||||
|
status->class_ = CLASS_GUARDIAN;
|
||||||
|
else
|
||||||
|
status->class_ = CLASS_NORMAL;
|
||||||
|
|
||||||
status->speed = atoi(str[26]);
|
status->speed = atoi(str[26]);
|
||||||
status->aspd_rate = 1000;
|
status->aspd_rate = 1000;
|
||||||
i = atoi(str[27]);
|
i = atoi(str[27]);
|
||||||
@ -3808,7 +3815,7 @@ static bool mob_parse_dbrow(char** str)
|
|||||||
db->mvpitem[i].p = 0; //No item....
|
db->mvpitem[i].p = 0; //No item....
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
item_dropratio_adjust(db->mvpitem[i].nameid, class_, &rate_adjust);
|
item_dropratio_adjust(db->mvpitem[i].nameid, mob_id, &rate_adjust);
|
||||||
db->mvpitem[i].p = mob_drop_adjust(atoi(str[32+i*2]), rate_adjust, battle_config.item_drop_mvp_min, battle_config.item_drop_mvp_max);
|
db->mvpitem[i].p = mob_drop_adjust(atoi(str[32+i*2]), rate_adjust, battle_config.item_drop_mvp_min, battle_config.item_drop_mvp_max);
|
||||||
|
|
||||||
//calculate and store Max available drop chance of the MVP item
|
//calculate and store Max available drop chance of the MVP item
|
||||||
@ -3837,7 +3844,7 @@ static bool mob_parse_dbrow(char** str)
|
|||||||
rate = atoi(str[k+1]);
|
rate = atoi(str[k+1]);
|
||||||
if (battle_config.drop_rateincrease)
|
if (battle_config.drop_rateincrease)
|
||||||
if (rate < 5000) rate++;
|
if (rate < 5000) rate++;
|
||||||
if( (class_ >= 1324 && class_ <= 1363) || (class_ >= 1938 && class_ <= 1946) )
|
if( (mob_id >= 1324 && mob_id <= 1363) || (mob_id >= 1938 && mob_id <= 1946) )
|
||||||
{ //Treasure box drop rates [Skotlex]
|
{ //Treasure box drop rates [Skotlex]
|
||||||
rate_adjust = battle_config.item_rate_treasure;
|
rate_adjust = battle_config.item_rate_treasure;
|
||||||
ratemin = battle_config.item_drop_treasure_min;
|
ratemin = battle_config.item_drop_treasure_min;
|
||||||
@ -3874,11 +3881,11 @@ static bool mob_parse_dbrow(char** str)
|
|||||||
ratemax = battle_config.item_drop_common_max;
|
ratemax = battle_config.item_drop_common_max;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
item_dropratio_adjust(id->nameid, class_, &rate_adjust);
|
item_dropratio_adjust(id->nameid, mob_id, &rate_adjust);
|
||||||
db->dropitem[i].p = mob_drop_adjust(rate, rate_adjust, ratemin, ratemax);
|
db->dropitem[i].p = mob_drop_adjust(rate, rate_adjust, ratemin, ratemax);
|
||||||
|
|
||||||
//calculate and store Max available drop chance of the item
|
//calculate and store Max available drop chance of the item
|
||||||
if( db->dropitem[i].p && (class_ < 1324 || class_ > 1363) && (class_ < 1938 || class_ > 1946) )
|
if( db->dropitem[i].p && (mob_id < 1324 || mob_id > 1363) && (mob_id < 1938 || mob_id > 1946) )
|
||||||
{ //Skip treasure chests.
|
{ //Skip treasure chests.
|
||||||
if (id->maxchance == -1 || (id->maxchance < db->dropitem[i].p) ) {
|
if (id->maxchance == -1 || (id->maxchance < db->dropitem[i].p) ) {
|
||||||
id->maxchance = db->dropitem[i].p; //item has bigger drop chance or sold in shops
|
id->maxchance = db->dropitem[i].p; //item has bigger drop chance or sold in shops
|
||||||
@ -3890,21 +3897,21 @@ static bool mob_parse_dbrow(char** str)
|
|||||||
if (k == MAX_SEARCH)
|
if (k == MAX_SEARCH)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (id->mob[k].id != class_)
|
if (id->mob[k].id != mob_id)
|
||||||
memmove(&id->mob[k+1], &id->mob[k], (MAX_SEARCH-k-1)*sizeof(id->mob[0]));
|
memmove(&id->mob[k+1], &id->mob[k], (MAX_SEARCH-k-1)*sizeof(id->mob[0]));
|
||||||
id->mob[k].chance = db->dropitem[i].p;
|
id->mob[k].chance = db->dropitem[i].p;
|
||||||
id->mob[k].id = class_;
|
id->mob[k].id = mob_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finally insert monster's data into the database.
|
// Finally insert monster's data into the database.
|
||||||
if (mob_db_data[class_] == NULL)
|
if (mob_db_data[mob_id] == NULL)
|
||||||
mob_db_data[class_] = (struct mob_db*)aCalloc(1, sizeof(struct mob_db));
|
mob_db_data[mob_id] = (struct mob_db*)aCalloc(1, sizeof(struct mob_db));
|
||||||
else
|
else
|
||||||
//Copy over spawn data
|
//Copy over spawn data
|
||||||
memcpy(&db->spawn, mob_db_data[class_]->spawn, sizeof(db->spawn));
|
memcpy(&db->spawn, mob_db_data[mob_id]->spawn, sizeof(db->spawn));
|
||||||
|
|
||||||
memcpy(mob_db_data[class_], db, sizeof(struct mob_db));
|
memcpy(mob_db_data[mob_id], db, sizeof(struct mob_db));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4001,36 +4008,36 @@ static int mob_read_sqldb(void)
|
|||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
static bool mob_readdb_mobavail(char* str[], int columns, int current)
|
static bool mob_readdb_mobavail(char* str[], int columns, int current)
|
||||||
{
|
{
|
||||||
int class_, k;
|
int mob_id, k;
|
||||||
|
|
||||||
class_=atoi(str[0]);
|
mob_id=atoi(str[0]);
|
||||||
|
|
||||||
if(mob_db(class_) == mob_dummy) // invalid class (probably undefined in db)
|
if(mob_db(mob_id) == mob_dummy) // invalid class (probably undefined in db)
|
||||||
{
|
{
|
||||||
ShowWarning("mob_readdb_mobavail: Unknown mob id %d.\n", class_);
|
ShowWarning("mob_readdb_mobavail: Unknown mob id %d.\n", mob_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
k=atoi(str[1]);
|
k=atoi(str[1]);
|
||||||
|
|
||||||
memset(&mob_db_data[class_]->vd, 0, sizeof(struct view_data));
|
memset(&mob_db_data[mob_id]->vd, 0, sizeof(struct view_data));
|
||||||
mob_db_data[class_]->vd.class_=k;
|
mob_db_data[mob_id]->vd.class_=k;
|
||||||
|
|
||||||
//Player sprites
|
//Player sprites
|
||||||
if(pcdb_checkid(k) && columns==12) {
|
if(pcdb_checkid(k) && columns==12) {
|
||||||
mob_db_data[class_]->vd.sex=atoi(str[2]);
|
mob_db_data[mob_id]->vd.sex=atoi(str[2]);
|
||||||
mob_db_data[class_]->vd.hair_style=atoi(str[3]);
|
mob_db_data[mob_id]->vd.hair_style=atoi(str[3]);
|
||||||
mob_db_data[class_]->vd.hair_color=atoi(str[4]);
|
mob_db_data[mob_id]->vd.hair_color=atoi(str[4]);
|
||||||
mob_db_data[class_]->vd.weapon=atoi(str[5]);
|
mob_db_data[mob_id]->vd.weapon=atoi(str[5]);
|
||||||
mob_db_data[class_]->vd.shield=atoi(str[6]);
|
mob_db_data[mob_id]->vd.shield=atoi(str[6]);
|
||||||
mob_db_data[class_]->vd.head_top=atoi(str[7]);
|
mob_db_data[mob_id]->vd.head_top=atoi(str[7]);
|
||||||
mob_db_data[class_]->vd.head_mid=atoi(str[8]);
|
mob_db_data[mob_id]->vd.head_mid=atoi(str[8]);
|
||||||
mob_db_data[class_]->vd.head_bottom=atoi(str[9]);
|
mob_db_data[mob_id]->vd.head_bottom=atoi(str[9]);
|
||||||
mob_db_data[class_]->option=atoi(str[10])&~(OPTION_HIDE|OPTION_CLOAK|OPTION_INVISIBLE);
|
mob_db_data[mob_id]->option=atoi(str[10])&~(OPTION_HIDE|OPTION_CLOAK|OPTION_INVISIBLE);
|
||||||
mob_db_data[class_]->vd.cloth_color=atoi(str[11]); // Monster player dye option - Valaris
|
mob_db_data[mob_id]->vd.cloth_color=atoi(str[11]); // Monster player dye option - Valaris
|
||||||
}
|
}
|
||||||
else if(columns==3)
|
else if(columns==3)
|
||||||
mob_db_data[class_]->vd.head_bottom=atoi(str[2]); // mob equipment [Valaris]
|
mob_db_data[mob_id]->vd.head_bottom=atoi(str[2]); // mob equipment [Valaris]
|
||||||
else if( columns != 2 )
|
else if( columns != 2 )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -4067,7 +4074,7 @@ static int mob_read_randommonster(void)
|
|||||||
}
|
}
|
||||||
while(fgets(line, sizeof(line), fp))
|
while(fgets(line, sizeof(line), fp))
|
||||||
{
|
{
|
||||||
int class_;
|
int mob_id;
|
||||||
if(line[0] == '/' && line[1] == '/')
|
if(line[0] == '/' && line[1] == '/')
|
||||||
continue;
|
continue;
|
||||||
memset(str,0,sizeof(str));
|
memset(str,0,sizeof(str));
|
||||||
@ -4080,13 +4087,13 @@ static int mob_read_randommonster(void)
|
|||||||
if(str[0]==NULL || str[2]==NULL)
|
if(str[0]==NULL || str[2]==NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
class_ = atoi(str[0]);
|
mob_id = atoi(str[0]);
|
||||||
if(mob_db(class_) == mob_dummy)
|
if(mob_db(mob_id) == mob_dummy)
|
||||||
continue;
|
continue;
|
||||||
mob_db_data[class_]->summonper[i]=atoi(str[2]);
|
mob_db_data[mob_id]->summonper[i]=atoi(str[2]);
|
||||||
if (i) {
|
if (i) {
|
||||||
if( summon[i].qty < ARRAYLENGTH(summon[i].class_) ) //MvPs
|
if( summon[i].qty < ARRAYLENGTH(summon[i].mob_id) ) //MvPs
|
||||||
summon[i].class_[summon[i].qty++] = class_;
|
summon[i].mob_id[summon[i].qty++] = mob_id;
|
||||||
else {
|
else {
|
||||||
ShowDebug("Can't store more random mobs from %s, increase size of mob.c:summon variable!\n", mobfile[i]);
|
ShowDebug("Can't store more random mobs from %s, increase size of mob.c:summon variable!\n", mobfile[i]);
|
||||||
break;
|
break;
|
||||||
@ -4096,7 +4103,7 @@ static int mob_read_randommonster(void)
|
|||||||
}
|
}
|
||||||
if (i && !summon[i].qty)
|
if (i && !summon[i].qty)
|
||||||
{ //At least have the default here.
|
{ //At least have the default here.
|
||||||
summon[i].class_[0] = mob_db_data[0]->summonper[i];
|
summon[i].mob_id[0] = mob_db_data[0]->summonper[i];
|
||||||
summon[i].qty = 1;
|
summon[i].qty = 1;
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
@ -67,6 +67,7 @@ enum size {
|
|||||||
SZ_SMALL = 0,
|
SZ_SMALL = 0,
|
||||||
SZ_MEDIUM,
|
SZ_MEDIUM,
|
||||||
SZ_BIG,
|
SZ_BIG,
|
||||||
|
SZ_ALL,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mob_skill {
|
struct mob_skill {
|
||||||
@ -117,7 +118,7 @@ struct mob_data {
|
|||||||
struct view_data *vd;
|
struct view_data *vd;
|
||||||
struct status_data status, *base_status; //Second one is in case of leveling up mobs, or tiny/large mobs.
|
struct status_data status, *base_status; //Second one is in case of leveling up mobs, or tiny/large mobs.
|
||||||
struct status_change sc;
|
struct status_change sc;
|
||||||
struct mob_db *db; //For quick data access (saves doing mob_db(md->class_) all the time) [Skotlex]
|
struct mob_db *db; //For quick data access (saves doing mob_db(md->mob_id) all the time) [Skotlex]
|
||||||
char name[NAME_LENGTH];
|
char name[NAME_LENGTH];
|
||||||
struct {
|
struct {
|
||||||
unsigned int size : 2; //Small/Big monsters.
|
unsigned int size : 2; //Small/Big monsters.
|
||||||
@ -147,7 +148,7 @@ struct mob_data {
|
|||||||
struct spawn_data *spawn; //Spawn data.
|
struct spawn_data *spawn; //Spawn data.
|
||||||
int spawn_timer; //Required for Convex Mirror
|
int spawn_timer; //Required for Convex Mirror
|
||||||
struct item *lootitem;
|
struct item *lootitem;
|
||||||
short class_;
|
short mob_id;
|
||||||
unsigned int tdmg; //Stores total damage given to the mob, for exp calculations. [Skotlex]
|
unsigned int tdmg; //Stores total damage given to the mob, for exp calculations. [Skotlex]
|
||||||
int level;
|
int level;
|
||||||
int target_id,attacked_id;
|
int target_id,attacked_id;
|
||||||
@ -230,25 +231,25 @@ struct item_drop_list {
|
|||||||
struct item_drop* item; // linked list of drops
|
struct item_drop* item; // linked list of drops
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mob_db* mob_db(int class_);
|
struct mob_db* mob_db(int mob_id);
|
||||||
int mobdb_searchname(const char *str);
|
int mobdb_searchname(const char *str);
|
||||||
int mobdb_searchname_array(struct mob_db** data, int size, const char *str);
|
int mobdb_searchname_array(struct mob_db** data, int size, const char *str);
|
||||||
int mobdb_checkid(const int id);
|
int mobdb_checkid(const int id);
|
||||||
struct view_data* mob_get_viewdata(int class_);
|
struct view_data* mob_get_viewdata(int mob_id);
|
||||||
|
|
||||||
struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m,
|
struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m,
|
||||||
short x, short y, const char *mobname, int class_, const char *event, unsigned int size, unsigned int ai);
|
short x, short y, const char *mobname, int mob_id, const char *event, unsigned int size, unsigned int ai);
|
||||||
|
|
||||||
int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y,
|
int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y,
|
||||||
const char* mobname, int class_, int amount, const char* event, unsigned int size, unsigned int ai);
|
const char* mobname, int mob_id, int amount, const char* event, unsigned int size, unsigned int ai);
|
||||||
|
|
||||||
int mob_once_spawn_area(struct map_session_data* sd, int16 m,
|
int mob_once_spawn_area(struct map_session_data* sd, int16 m,
|
||||||
int16 x0, int16 y0, int16 x1, int16 y1, const char* mobname, int class_, int amount, const char* event, unsigned int size, unsigned int ai);
|
int16 x0, int16 y0, int16 x1, int16 y1, const char* mobname, int mob_id, int amount, const char* event, unsigned int size, unsigned int ai);
|
||||||
|
|
||||||
bool mob_ksprotected (struct block_list *src, struct block_list *target);
|
bool mob_ksprotected (struct block_list *src, struct block_list *target);
|
||||||
|
|
||||||
int mob_spawn_guardian(const char* mapname, int16 x, int16 y, const char* mobname, int class_, const char* event, int guardian, bool has_index); // Spawning Guardians [Valaris]
|
int mob_spawn_guardian(const char* mapname, int16 x, int16 y, const char* mobname, int mob_id, const char* event, int guardian, bool has_index); // Spawning Guardians [Valaris]
|
||||||
int mob_spawn_bg(const char* mapname, int16 x, int16 y, const char* mobname, int class_, const char* event, unsigned int bg_id);
|
int mob_spawn_bg(const char* mapname, int16 x, int16 y, const char* mobname, int mob_id, const char* event, unsigned int bg_id);
|
||||||
int mob_guardian_guildchange(struct mob_data *md); //Change Guardian's ownership. [Skotlex]
|
int mob_guardian_guildchange(struct mob_data *md); //Change Guardian's ownership. [Skotlex]
|
||||||
|
|
||||||
int mob_randomwalk(struct mob_data *md,unsigned int tick);
|
int mob_randomwalk(struct mob_data *md,unsigned int tick);
|
||||||
@ -268,9 +269,10 @@ void mob_heal(struct mob_data *md,unsigned int heal);
|
|||||||
|
|
||||||
#define mob_stop_walking(md, type) unit_stop_walking(&(md)->bl, type)
|
#define mob_stop_walking(md, type) unit_stop_walking(&(md)->bl, type)
|
||||||
#define mob_stop_attack(md) unit_stop_attack(&(md)->bl)
|
#define mob_stop_attack(md) unit_stop_attack(&(md)->bl)
|
||||||
#define mob_is_battleground(md) ( map[(md)->bl.m].flag.battleground && ((md)->class_ == MOBID_BARRICADE2 || ((md)->class_ >= MOBID_FOOD_STOR && (md)->class_ <= MOBID_PINK_CRYST)) )
|
#define mob_is_battleground(md) ( map[(md)->bl.m].flag.battleground && ((md)->mob_id == MOBID_BARRICADE2 || ((md)->mob_id >= MOBID_FOOD_STOR && (md)->mob_id <= MOBID_PINK_CRYST)) )
|
||||||
#define mob_is_gvg(md) (map[(md)->bl.m].flag.gvg_castle && ( (md)->class_ == MOBID_EMPERIUM || (md)->class_ == MOBID_BARRICADE1 || (md)->class_ == MOBID_GUARIDAN_STONE1 || (md)->class_ == MOBID_GUARIDAN_STONE2) )
|
#define mob_is_gvg(md) (map[(md)->bl.m].flag.gvg_castle && ( (md)->mob_id == MOBID_EMPERIUM || (md)->mob_id == MOBID_BARRICADE1 || (md)->mob_id == MOBID_GUARIDAN_STONE1 || (md)->mob_id == MOBID_GUARIDAN_STONE2) )
|
||||||
#define mob_is_treasure(md) (((md)->class_ >= MOBID_TREAS01 && (md)->class_ <= MOBID_TREAS40) || ((md)->class_ >= MOBID_TREAS41 && (md)->class_ <= MOBID_TREAS49))
|
#define mob_is_treasure(md) (((md)->mob_id >= MOBID_TREAS01 && (md)->mob_id <= MOBID_TREAS40) || ((md)->mob_id >= MOBID_TREAS41 && (md)->mob_id <= MOBID_TREAS49))
|
||||||
|
#define mob_is_guardian(mob_id) ((mob_id >= MOBID_A_GUARDIAN && mob_id <= MOBID_S_GUARDIAN) || mob_id == MOBID_S_GUARDIAN_ || mob_id == MOBID_A_GUARDIAN_)
|
||||||
|
|
||||||
void mob_clear_spawninfo();
|
void mob_clear_spawninfo();
|
||||||
int do_init_mob(void);
|
int do_init_mob(void);
|
||||||
@ -281,7 +283,7 @@ int mob_deleteslave(struct mob_data *md);
|
|||||||
|
|
||||||
int mob_random_class (int *value, size_t count);
|
int mob_random_class (int *value, size_t count);
|
||||||
int mob_get_random_id(int type, int flag, int lv);
|
int mob_get_random_id(int type, int flag, int lv);
|
||||||
int mob_class_change(struct mob_data *md,int class_);
|
int mob_class_change(struct mob_data *md,int mob_id);
|
||||||
int mob_warpslave(struct block_list *bl, int range);
|
int mob_warpslave(struct block_list *bl, int range);
|
||||||
int mob_linksearch(struct block_list *bl,va_list ap);
|
int mob_linksearch(struct block_list *bl,va_list ap);
|
||||||
|
|
||||||
@ -293,7 +295,7 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id);
|
|||||||
int mob_countslave(struct block_list *bl);
|
int mob_countslave(struct block_list *bl);
|
||||||
int mob_count_sub(struct block_list *bl, va_list ap);
|
int mob_count_sub(struct block_list *bl, va_list ap);
|
||||||
|
|
||||||
int mob_is_clone(int class_);
|
int mob_is_clone(int mob_id);
|
||||||
|
|
||||||
int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, int mode, int flag, unsigned int duration);
|
int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, const char *event, int master_id, int mode, int flag, unsigned int duration);
|
||||||
int mob_clone_delete(struct mob_data *md);
|
int mob_clone_delete(struct mob_data *md);
|
||||||
|
@ -3295,7 +3295,7 @@ static const char* npc_parse_mob(char* w1, char* w2, char* w3, char* w4, const c
|
|||||||
|
|
||||||
mob.num = (unsigned short)num;
|
mob.num = (unsigned short)num;
|
||||||
mob.active = 0;
|
mob.active = 0;
|
||||||
mob.class_ = (short) class_;
|
mob.id = (short) class_;
|
||||||
mob.x = (unsigned short)x;
|
mob.x = (unsigned short)x;
|
||||||
mob.y = (unsigned short)y;
|
mob.y = (unsigned short)y;
|
||||||
mob.xs = (signed short)xs;
|
mob.xs = (signed short)xs;
|
||||||
|
@ -1028,7 +1028,7 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b
|
|||||||
if (!md)
|
if (!md)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rate = pc_level_penalty_mod(sd[i], md->db->lv, md->db->status.race, md->db->status.mode, 1);
|
rate = pc_level_penalty_mod(sd[i], md->db->lv, md->db->status.class_, 1);
|
||||||
base_exp = (unsigned int)cap_value(base_exp_bonus * rate / 100, 1, UINT_MAX);
|
base_exp = (unsigned int)cap_value(base_exp_bonus * rate / 100, 1, UINT_MAX);
|
||||||
job_exp = (unsigned int)cap_value(job_exp_bonus * rate / 100, 1, UINT_MAX);
|
job_exp = (unsigned int)cap_value(job_exp_bonus * rate / 100, 1, UINT_MAX);
|
||||||
}
|
}
|
||||||
|
285
src/map/pc.c
285
src/map/pc.c
@ -56,7 +56,7 @@ int pc_split_atoui(char* str, unsigned int* val, char sep, int max);
|
|||||||
|
|
||||||
static unsigned int statp[MAX_LEVEL+1];
|
static unsigned int statp[MAX_LEVEL+1];
|
||||||
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
|
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
|
||||||
static unsigned int level_penalty[3][RC_MAX][MAX_LEVEL*2+1];
|
static unsigned int level_penalty[3][CLASS_ALL][MAX_LEVEL*2+1];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// h-files are for declarations, not for implementations... [Shinomori]
|
// h-files are for declarations, not for implementations... [Shinomori]
|
||||||
@ -1894,7 +1894,7 @@ static int pc_bonus_addeff_onskill(struct s_addeffectonskill* effect, int max, e
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short group, int race, int rate)
|
static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id, short group, int class_, int race, int rate)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
//Apply config rate adjustment settings.
|
//Apply config rate adjustment settings.
|
||||||
@ -1915,9 +1915,10 @@ static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id
|
|||||||
if(
|
if(
|
||||||
((id && drop[i].id == id) ||
|
((id && drop[i].id == id) ||
|
||||||
(group && drop[i].group == group))
|
(group && drop[i].group == group))
|
||||||
&& race > 0
|
&& (race > 0 || class_ > -1)
|
||||||
) {
|
) {
|
||||||
drop[i].race |= race;
|
drop[i].race |= race;
|
||||||
|
drop[i].class_ |= class_;
|
||||||
if(drop[i].rate > 0 && rate > 0)
|
if(drop[i].rate > 0 && rate > 0)
|
||||||
{ //Both are absolute rates.
|
{ //Both are absolute rates.
|
||||||
if (drop[i].rate < rate)
|
if (drop[i].rate < rate)
|
||||||
@ -1939,6 +1940,7 @@ static int pc_bonus_item_drop(struct s_add_drop *drop, const short max, short id
|
|||||||
drop[i].id = id;
|
drop[i].id = id;
|
||||||
drop[i].group = group;
|
drop[i].group = group;
|
||||||
drop[i].race |= race;
|
drop[i].race |= race;
|
||||||
|
drop[i].class_ |= class_;
|
||||||
drop[i].rate = rate;
|
drop[i].rate = rate;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -2228,7 +2230,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
sd->bonus.arrow_cri += val*10;
|
sd->bonus.arrow_cri += val*10;
|
||||||
break;
|
break;
|
||||||
case SP_ATKELE:
|
case SP_ATKELE:
|
||||||
if(val >= ELE_MAX) {
|
if(val > ELE_ALL) {
|
||||||
ShowError("pc_bonus: SP_ATKELE: Invalid element %d\n", val);
|
ShowError("pc_bonus: SP_ATKELE: Invalid element %d\n", val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2259,7 +2261,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_DEFELE:
|
case SP_DEFELE:
|
||||||
if(val >= ELE_MAX) {
|
if(val > ELE_ALL) {
|
||||||
ShowError("pc_bonus: SP_DEFELE: Invalid element %d\n", val);
|
ShowError("pc_bonus: SP_DEFELE: Invalid element %d\n", val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2369,7 +2371,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
sd->matk_rate += val;
|
sd->matk_rate += val;
|
||||||
break;
|
break;
|
||||||
case SP_IGNORE_DEF_ELE:
|
case SP_IGNORE_DEF_ELE:
|
||||||
if(val >= ELE_MAX) {
|
if(val > ELE_ALL) {
|
||||||
ShowError("pc_bonus: SP_IGNORE_DEF_ELE: Invalid element %d\n", val);
|
ShowError("pc_bonus: SP_IGNORE_DEF_ELE: Invalid element %d\n", val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2384,6 +2386,12 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
else if(sd->state.lr_flag == 1)
|
else if(sd->state.lr_flag == 1)
|
||||||
sd->left_weapon.ignore_def_race |= 1<<val;
|
sd->left_weapon.ignore_def_race |= 1<<val;
|
||||||
break;
|
break;
|
||||||
|
case SP_IGNORE_DEF_CLASS:
|
||||||
|
if(!sd->state.lr_flag)
|
||||||
|
sd->right_weapon.ignore_def_class |= 1<<val;
|
||||||
|
else if(sd->state.lr_flag == 1)
|
||||||
|
sd->left_weapon.ignore_def_class |= 1<<val;
|
||||||
|
break;
|
||||||
case SP_ATK_RATE:
|
case SP_ATK_RATE:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
sd->bonus.atk_rate += val;
|
sd->bonus.atk_rate += val;
|
||||||
@ -2398,12 +2406,11 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
break;
|
break;
|
||||||
case SP_IGNORE_MDEF_RATE:
|
case SP_IGNORE_MDEF_RATE:
|
||||||
if(sd->state.lr_flag != 2) {
|
if(sd->state.lr_flag != 2) {
|
||||||
sd->ignore_mdef[RC_NONBOSS] += val;
|
sd->ignore_mdef += val;
|
||||||
sd->ignore_mdef[RC_BOSS] += val;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_IGNORE_MDEF_ELE:
|
case SP_IGNORE_MDEF_ELE:
|
||||||
if(val >= ELE_MAX) {
|
if(val > ELE_ALL) {
|
||||||
ShowError("pc_bonus: SP_IGNORE_MDEF_ELE: Invalid element %d\n", val);
|
ShowError("pc_bonus: SP_IGNORE_MDEF_ELE: Invalid element %d\n", val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2427,7 +2434,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
sd->critical_rate+=val;
|
sd->critical_rate+=val;
|
||||||
break;
|
break;
|
||||||
case SP_DEF_RATIO_ATK_ELE:
|
case SP_DEF_RATIO_ATK_ELE:
|
||||||
if(val >= ELE_MAX) {
|
if(val > ELE_ALL) {
|
||||||
ShowError("pc_bonus: SP_DEF_RATIO_ATK_ELE: Invalid element %d\n", val);
|
ShowError("pc_bonus: SP_DEF_RATIO_ATK_ELE: Invalid element %d\n", val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2437,7 +2444,7 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
sd->left_weapon.def_ratio_atk_ele |= 1<<val;
|
sd->left_weapon.def_ratio_atk_ele |= 1<<val;
|
||||||
break;
|
break;
|
||||||
case SP_DEF_RATIO_ATK_RACE:
|
case SP_DEF_RATIO_ATK_RACE:
|
||||||
if(val >= RC_MAX) {
|
if(val > RC_ALL) {
|
||||||
ShowError("pc_bonus: SP_DEF_RATIO_ATK_RACE: Invalid race %d\n", val);
|
ShowError("pc_bonus: SP_DEF_RATIO_ATK_RACE: Invalid race %d\n", val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2446,6 +2453,16 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
else if(sd->state.lr_flag == 1)
|
else if(sd->state.lr_flag == 1)
|
||||||
sd->left_weapon.def_ratio_atk_race |= 1<<val;
|
sd->left_weapon.def_ratio_atk_race |= 1<<val;
|
||||||
break;
|
break;
|
||||||
|
case SP_DEF_RATIO_ATK_CLASS:
|
||||||
|
if(val > CLASS_ALL) {
|
||||||
|
ShowError("pc_bonus: SP_DEF_RATIO_ATK_CLASS: Invalid class %d\n", val);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(!sd->state.lr_flag)
|
||||||
|
sd->right_weapon.def_ratio_atk_class |= 1<<val;
|
||||||
|
else if(sd->state.lr_flag == 1)
|
||||||
|
sd->left_weapon.def_ratio_atk_class |= 1<<val;
|
||||||
|
break;
|
||||||
case SP_HIT_RATE:
|
case SP_HIT_RATE:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
sd->hit_rate += val;
|
sd->hit_rate += val;
|
||||||
@ -2647,22 +2664,20 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
|
|||||||
break;
|
break;
|
||||||
case SP_HP_DRAIN_VALUE:
|
case SP_HP_DRAIN_VALUE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.hp_drain[RC_NONBOSS].value += val;
|
sd->right_weapon.hp_drain_class[CLASS_NORMAL].value += val;
|
||||||
sd->right_weapon.hp_drain[RC_BOSS].value += val;
|
sd->right_weapon.hp_drain_class[CLASS_BOSS].value += val;
|
||||||
}
|
} else if(sd->state.lr_flag == 1) {
|
||||||
else if(sd->state.lr_flag == 1) {
|
sd->left_weapon.hp_drain_class[CLASS_NORMAL].value += val;
|
||||||
sd->left_weapon.hp_drain[RC_NONBOSS].value += val;
|
sd->left_weapon.hp_drain_class[CLASS_BOSS].value += val;
|
||||||
sd->left_weapon.hp_drain[RC_BOSS].value += val;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_SP_DRAIN_VALUE:
|
case SP_SP_DRAIN_VALUE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.sp_drain[RC_NONBOSS].value += val;
|
sd->right_weapon.sp_drain_class[CLASS_NORMAL].value += val;
|
||||||
sd->right_weapon.sp_drain[RC_BOSS].value += val;
|
sd->right_weapon.sp_drain_class[CLASS_BOSS].value += val;
|
||||||
}
|
} else if(sd->state.lr_flag == 1) {
|
||||||
else if(sd->state.lr_flag == 1) {
|
sd->left_weapon.sp_drain_class[CLASS_NORMAL].value += val;
|
||||||
sd->left_weapon.sp_drain[RC_NONBOSS].value += val;
|
sd->left_weapon.sp_drain_class[CLASS_BOSS].value += val;
|
||||||
sd->left_weapon.sp_drain[RC_BOSS].value += val;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_SP_GAIN_VALUE:
|
case SP_SP_GAIN_VALUE:
|
||||||
@ -2733,7 +2748,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
|
|
||||||
switch(type){
|
switch(type){
|
||||||
case SP_ADDELE:
|
case SP_ADDELE:
|
||||||
if(type2 >= ELE_MAX) {
|
if(type2 > ELE_ALL) {
|
||||||
ShowError("pc_bonus2: SP_ADDELE: Invalid element %d\n", type2);
|
ShowError("pc_bonus2: SP_ADDELE: Invalid element %d\n", type2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2752,6 +2767,14 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
else if(sd->state.lr_flag == 2)
|
else if(sd->state.lr_flag == 2)
|
||||||
sd->arrow_addrace[type2]+=val;
|
sd->arrow_addrace[type2]+=val;
|
||||||
break;
|
break;
|
||||||
|
case SP_ADDCLASS:
|
||||||
|
if(!sd->state.lr_flag)
|
||||||
|
sd->right_weapon.addclass[type2]+=val;
|
||||||
|
else if(sd->state.lr_flag == 1)
|
||||||
|
sd->left_weapon.addclass[type2]+=val;
|
||||||
|
else if(sd->state.lr_flag == 2)
|
||||||
|
sd->arrow_addclass[type2]+=val;
|
||||||
|
break;
|
||||||
case SP_ADDSIZE:
|
case SP_ADDSIZE:
|
||||||
if(!sd->state.lr_flag)
|
if(!sd->state.lr_flag)
|
||||||
sd->right_weapon.addsize[type2]+=val;
|
sd->right_weapon.addsize[type2]+=val;
|
||||||
@ -2761,7 +2784,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
sd->arrow_addsize[type2]+=val;
|
sd->arrow_addsize[type2]+=val;
|
||||||
break;
|
break;
|
||||||
case SP_SUBELE:
|
case SP_SUBELE:
|
||||||
if(type2 >= ELE_MAX) {
|
if(type2 > ELE_ALL) {
|
||||||
ShowError("pc_bonus2: SP_SUBELE: Invalid element %d\n", type2);
|
ShowError("pc_bonus2: SP_SUBELE: Invalid element %d\n", type2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2772,6 +2795,10 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
sd->subrace[type2]+=val;
|
sd->subrace[type2]+=val;
|
||||||
break;
|
break;
|
||||||
|
case SP_SUBCLASS:
|
||||||
|
if(sd->state.lr_flag != 2)
|
||||||
|
sd->subclass[type2]+=val;
|
||||||
|
break;
|
||||||
case SP_ADDEFF:
|
case SP_ADDEFF:
|
||||||
if (type2 > SC_MAX) {
|
if (type2 > SC_MAX) {
|
||||||
ShowWarning("pc_bonus2 (Add Effect): %d is not supported.\n", type2);
|
ShowWarning("pc_bonus2 (Add Effect): %d is not supported.\n", type2);
|
||||||
@ -2799,7 +2826,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
sd->reseff[type2-SC_COMMON_MIN]= cap_value(i, 0, 10000);
|
sd->reseff[type2-SC_COMMON_MIN]= cap_value(i, 0, 10000);
|
||||||
break;
|
break;
|
||||||
case SP_MAGIC_ADDELE:
|
case SP_MAGIC_ADDELE:
|
||||||
if(type2 >= ELE_MAX) {
|
if(type2 > ELE_ALL) {
|
||||||
ShowError("pc_bonus2: SP_MAGIC_ADDELE: Invalid element %d\n", type2);
|
ShowError("pc_bonus2: SP_MAGIC_ADDELE: Invalid element %d\n", type2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2810,6 +2837,10 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
sd->magic_addrace[type2]+=val;
|
sd->magic_addrace[type2]+=val;
|
||||||
break;
|
break;
|
||||||
|
case SP_MAGIC_ADDCLASS:
|
||||||
|
if(sd->state.lr_flag != 2)
|
||||||
|
sd->magic_addclass[type2]+=val;
|
||||||
|
break;
|
||||||
case SP_MAGIC_ADDSIZE:
|
case SP_MAGIC_ADDSIZE:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
sd->magic_addsize[type2]+=val;
|
sd->magic_addsize[type2]+=val;
|
||||||
@ -2860,7 +2891,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
if (!sd->add_mdmg[i].rate) //Shift the rest of elements up.
|
if (!sd->add_mdmg[i].rate) //Shift the rest of elements up.
|
||||||
memmove(&sd->add_mdmg[i], &sd->add_mdmg[i+1], sizeof(sd->add_mdmg) - (i+1)*sizeof(sd->add_mdmg[0]));
|
memmove(&sd->add_mdmg[i], &sd->add_mdmg[i+1], sizeof(sd->add_mdmg) - (i+1)*sizeof(sd->add_mdmg[0]));
|
||||||
break;
|
break;
|
||||||
case SP_ADD_DEF_CLASS:
|
case SP_ADD_DEF_MONSTER:
|
||||||
if(sd->state.lr_flag == 2)
|
if(sd->state.lr_flag == 2)
|
||||||
break;
|
break;
|
||||||
ARR_FIND(0, ARRAYLENGTH(sd->add_def), i, sd->add_def[i].rate == 0 || sd->add_def[i].class_ == type2);
|
ARR_FIND(0, ARRAYLENGTH(sd->add_def), i, sd->add_def[i].rate == 0 || sd->add_def[i].class_ == type2);
|
||||||
@ -2874,7 +2905,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
if (!sd->add_def[i].rate) //Shift the rest of elements up.
|
if (!sd->add_def[i].rate) //Shift the rest of elements up.
|
||||||
memmove(&sd->add_def[i], &sd->add_def[i+1], sizeof(sd->add_def) - (i+1)*sizeof(sd->add_def[0]));
|
memmove(&sd->add_def[i], &sd->add_def[i+1], sizeof(sd->add_def) - (i+1)*sizeof(sd->add_def[0]));
|
||||||
break;
|
break;
|
||||||
case SP_ADD_MDEF_CLASS:
|
case SP_ADD_MDEF_MONSTER:
|
||||||
if(sd->state.lr_flag == 2)
|
if(sd->state.lr_flag == 2)
|
||||||
break;
|
break;
|
||||||
ARR_FIND(0, ARRAYLENGTH(sd->add_mdef), i, sd->add_mdef[i].rate == 0 || sd->add_mdef[i].class_ == type2);
|
ARR_FIND(0, ARRAYLENGTH(sd->add_mdef), i, sd->add_mdef[i].rate == 0 || sd->add_mdef[i].class_ == type2);
|
||||||
@ -2890,58 +2921,58 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
break;
|
break;
|
||||||
case SP_HP_DRAIN_RATE:
|
case SP_HP_DRAIN_RATE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.hp_drain[RC_NONBOSS].rate += type2;
|
sd->right_weapon.hp_drain_class[CLASS_NORMAL].rate += type2;
|
||||||
sd->right_weapon.hp_drain[RC_NONBOSS].per += val;
|
sd->right_weapon.hp_drain_class[CLASS_NORMAL].per += val;
|
||||||
sd->right_weapon.hp_drain[RC_BOSS].rate += type2;
|
sd->right_weapon.hp_drain_class[CLASS_BOSS].rate += type2;
|
||||||
sd->right_weapon.hp_drain[RC_BOSS].per += val;
|
sd->right_weapon.hp_drain_class[CLASS_BOSS].per += val;
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.hp_drain[RC_NONBOSS].rate += type2;
|
sd->left_weapon.hp_drain_class[CLASS_NORMAL].rate += type2;
|
||||||
sd->left_weapon.hp_drain[RC_NONBOSS].per += val;
|
sd->left_weapon.hp_drain_class[CLASS_NORMAL].per += val;
|
||||||
sd->left_weapon.hp_drain[RC_BOSS].rate += type2;
|
sd->left_weapon.hp_drain_class[CLASS_BOSS].rate += type2;
|
||||||
sd->left_weapon.hp_drain[RC_BOSS].per += val;
|
sd->left_weapon.hp_drain_class[CLASS_BOSS].per += val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_HP_DRAIN_VALUE:
|
case SP_HP_DRAIN_VALUE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.hp_drain[RC_NONBOSS].value += type2;
|
sd->right_weapon.hp_drain_class[CLASS_NORMAL].value += type2;
|
||||||
sd->right_weapon.hp_drain[RC_NONBOSS].type = val;
|
sd->right_weapon.hp_drain_class[CLASS_NORMAL].type = val;
|
||||||
sd->right_weapon.hp_drain[RC_BOSS].value += type2;
|
sd->right_weapon.hp_drain_class[CLASS_BOSS].value += type2;
|
||||||
sd->right_weapon.hp_drain[RC_BOSS].type = val;
|
sd->right_weapon.hp_drain_class[CLASS_BOSS].type = val;
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.hp_drain[RC_NONBOSS].value += type2;
|
sd->left_weapon.hp_drain_class[CLASS_NORMAL].value += type2;
|
||||||
sd->left_weapon.hp_drain[RC_NONBOSS].type = val;
|
sd->left_weapon.hp_drain_class[CLASS_NORMAL].type = val;
|
||||||
sd->left_weapon.hp_drain[RC_BOSS].value += type2;
|
sd->left_weapon.hp_drain_class[CLASS_BOSS].value += type2;
|
||||||
sd->left_weapon.hp_drain[RC_BOSS].type = val;
|
sd->left_weapon.hp_drain_class[CLASS_BOSS].type = val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_SP_DRAIN_RATE:
|
case SP_SP_DRAIN_RATE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.sp_drain[RC_NONBOSS].rate += type2;
|
sd->right_weapon.sp_drain_class[CLASS_NORMAL].rate += type2;
|
||||||
sd->right_weapon.sp_drain[RC_NONBOSS].per += val;
|
sd->right_weapon.sp_drain_class[CLASS_NORMAL].per += val;
|
||||||
sd->right_weapon.sp_drain[RC_BOSS].rate += type2;
|
sd->right_weapon.sp_drain_class[CLASS_BOSS].rate += type2;
|
||||||
sd->right_weapon.sp_drain[RC_BOSS].per += val;
|
sd->right_weapon.sp_drain_class[CLASS_BOSS].per += val;
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.sp_drain[RC_NONBOSS].rate += type2;
|
sd->left_weapon.sp_drain_class[CLASS_NORMAL].rate += type2;
|
||||||
sd->left_weapon.sp_drain[RC_NONBOSS].per += val;
|
sd->left_weapon.sp_drain_class[CLASS_NORMAL].per += val;
|
||||||
sd->left_weapon.sp_drain[RC_BOSS].rate += type2;
|
sd->left_weapon.sp_drain_class[CLASS_BOSS].rate += type2;
|
||||||
sd->left_weapon.sp_drain[RC_BOSS].per += val;
|
sd->left_weapon.sp_drain_class[CLASS_BOSS].per += val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_SP_DRAIN_VALUE:
|
case SP_SP_DRAIN_VALUE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.sp_drain[RC_NONBOSS].value += type2;
|
sd->right_weapon.sp_drain_class[CLASS_NORMAL].value += type2;
|
||||||
sd->right_weapon.sp_drain[RC_NONBOSS].type = val;
|
sd->right_weapon.sp_drain_class[CLASS_NORMAL].type = val;
|
||||||
sd->right_weapon.sp_drain[RC_BOSS].value += type2;
|
sd->right_weapon.sp_drain_class[CLASS_BOSS].value += type2;
|
||||||
sd->right_weapon.sp_drain[RC_BOSS].type = val;
|
sd->right_weapon.sp_drain_class[CLASS_BOSS].type = val;
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.sp_drain[RC_NONBOSS].value += type2;
|
sd->left_weapon.sp_drain_class[CLASS_NORMAL].value += type2;
|
||||||
sd->left_weapon.sp_drain[RC_NONBOSS].type = val;
|
sd->left_weapon.sp_drain_class[CLASS_NORMAL].type = val;
|
||||||
sd->left_weapon.sp_drain[RC_BOSS].value += type2;
|
sd->left_weapon.sp_drain_class[CLASS_BOSS].value += type2;
|
||||||
sd->left_weapon.sp_drain[RC_BOSS].type = val;
|
sd->left_weapon.sp_drain_class[CLASS_BOSS].type = val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_SP_VANISH_RATE:
|
case SP_SP_VANISH_RATE:
|
||||||
@ -2969,7 +3000,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_WEAPON_COMA_ELE:
|
case SP_WEAPON_COMA_ELE:
|
||||||
if(type2 >= ELE_MAX) {
|
if(type2 > ELE_ALL) {
|
||||||
ShowError("pc_bonus2: SP_WEAPON_COMA_ELE: Invalid element %d\n", type2);
|
ShowError("pc_bonus2: SP_WEAPON_COMA_ELE: Invalid element %d\n", type2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2984,6 +3015,12 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
sd->weapon_coma_race[type2] += val;
|
sd->weapon_coma_race[type2] += val;
|
||||||
sd->special_state.bonus_coma = 1;
|
sd->special_state.bonus_coma = 1;
|
||||||
break;
|
break;
|
||||||
|
case SP_WEAPON_COMA_CLASS:
|
||||||
|
if(sd->state.lr_flag == 2)
|
||||||
|
break;
|
||||||
|
sd->weapon_coma_class[type2] += val;
|
||||||
|
sd->special_state.bonus_coma = 1;
|
||||||
|
break;
|
||||||
case SP_WEAPON_ATK:
|
case SP_WEAPON_ATK:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
sd->weapon_atk[type2]+=val;
|
sd->weapon_atk[type2]+=val;
|
||||||
@ -3167,11 +3204,11 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
break;
|
break;
|
||||||
case SP_ADD_MONSTER_DROP_ITEM:
|
case SP_ADD_MONSTER_DROP_ITEM:
|
||||||
if (sd->state.lr_flag != 2)
|
if (sd->state.lr_flag != 2)
|
||||||
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, (1<<RC_BOSS)|(1<<RC_NONBOSS), val);
|
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, (1<<CLASS_NORMAL)|(1<<CLASS_BOSS), 0, val);
|
||||||
break;
|
break;
|
||||||
case SP_ADD_MONSTER_DROP_ITEMGROUP:
|
case SP_ADD_MONSTER_DROP_ITEMGROUP:
|
||||||
if (sd->state.lr_flag != 2)
|
if (sd->state.lr_flag != 2)
|
||||||
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, (1<<RC_BOSS)|(1<<RC_NONBOSS), val);
|
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, (1<<CLASS_NORMAL)|(1<<CLASS_BOSS), 0, val);
|
||||||
break;
|
break;
|
||||||
case SP_SP_LOSS_RATE:
|
case SP_SP_LOSS_RATE:
|
||||||
if(sd->state.lr_flag != 2) {
|
if(sd->state.lr_flag != 2) {
|
||||||
@ -3187,27 +3224,47 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
break;
|
break;
|
||||||
case SP_HP_DRAIN_VALUE_RACE:
|
case SP_HP_DRAIN_VALUE_RACE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.hp_drain[type2].value += val;
|
sd->right_weapon.hp_drain_race[type2].value += val;
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.hp_drain[type2].value += val;
|
sd->left_weapon.hp_drain_race[type2].value += val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_SP_DRAIN_VALUE_RACE:
|
case SP_SP_DRAIN_VALUE_RACE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.sp_drain[type2].value += val;
|
sd->right_weapon.sp_drain_race[type2].value += val;
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.sp_drain[type2].value += val;
|
sd->left_weapon.sp_drain_race[type2].value += val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_IGNORE_MDEF_RATE:
|
case SP_HP_DRAIN_VALUE_CLASS:
|
||||||
if(sd->state.lr_flag != 2)
|
if(!sd->state.lr_flag) {
|
||||||
sd->ignore_mdef[type2] += val;
|
sd->right_weapon.hp_drain_class[type2].value += val;
|
||||||
|
}
|
||||||
|
else if(sd->state.lr_flag == 1) {
|
||||||
|
sd->left_weapon.hp_drain_class[type2].value += val;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SP_IGNORE_DEF_RATE:
|
case SP_SP_DRAIN_VALUE_CLASS:
|
||||||
|
if(!sd->state.lr_flag) {
|
||||||
|
sd->right_weapon.sp_drain_class[type2].value += val;
|
||||||
|
}
|
||||||
|
else if(sd->state.lr_flag == 1) {
|
||||||
|
sd->left_weapon.sp_drain_class[type2].value += val;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SP_IGNORE_MDEF_RACE_RATE:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
sd->ignore_def[type2] += val;
|
sd->ignore_mdef_by_race[type2] += val;
|
||||||
|
break;
|
||||||
|
case SP_IGNORE_MDEF_CLASS_RATE:
|
||||||
|
if(sd->state.lr_flag != 2)
|
||||||
|
sd->ignore_mdef_by_class[type2] += val;
|
||||||
|
break;
|
||||||
|
case SP_IGNORE_DEF_RACE_RATE:
|
||||||
|
if(sd->state.lr_flag != 2)
|
||||||
|
sd->ignore_def_by_race[type2] += val;
|
||||||
break;
|
break;
|
||||||
case SP_SP_GAIN_RACE_ATTACK:
|
case SP_SP_GAIN_RACE_ATTACK:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
@ -3327,11 +3384,11 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
|
|||||||
switch(type){
|
switch(type){
|
||||||
case SP_ADD_MONSTER_DROP_ITEM:
|
case SP_ADD_MONSTER_DROP_ITEM:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, 1<<type3, val);
|
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, -1, 1<<type3, val);
|
||||||
break;
|
break;
|
||||||
case SP_ADD_CLASS_DROP_ITEM:
|
case SP_ADD_CLASS_DROP_ITEM:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, -type3, val);
|
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), type2, 0, -1, -type3, val);
|
||||||
break;
|
break;
|
||||||
case SP_AUTOSPELL:
|
case SP_AUTOSPELL:
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
@ -3353,46 +3410,46 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
|
|||||||
break;
|
break;
|
||||||
case SP_SP_DRAIN_RATE:
|
case SP_SP_DRAIN_RATE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.sp_drain[RC_NONBOSS].rate += type2;
|
sd->right_weapon.sp_drain_class[CLASS_NORMAL].rate += type2;
|
||||||
sd->right_weapon.sp_drain[RC_NONBOSS].per += type3;
|
sd->right_weapon.sp_drain_class[CLASS_NORMAL].per += type3;
|
||||||
sd->right_weapon.sp_drain[RC_NONBOSS].type = val;
|
sd->right_weapon.sp_drain_class[CLASS_NORMAL].type = val;
|
||||||
sd->right_weapon.sp_drain[RC_BOSS].rate += type2;
|
sd->right_weapon.sp_drain_class[CLASS_BOSS].rate += type2;
|
||||||
sd->right_weapon.sp_drain[RC_BOSS].per += type3;
|
sd->right_weapon.sp_drain_class[CLASS_BOSS].per += type3;
|
||||||
sd->right_weapon.sp_drain[RC_BOSS].type = val;
|
sd->right_weapon.sp_drain_class[CLASS_BOSS].type = val;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.sp_drain[RC_NONBOSS].rate += type2;
|
sd->left_weapon.sp_drain_class[CLASS_NORMAL].rate += type2;
|
||||||
sd->left_weapon.sp_drain[RC_NONBOSS].per += type3;
|
sd->left_weapon.sp_drain_class[CLASS_NORMAL].per += type3;
|
||||||
sd->left_weapon.sp_drain[RC_NONBOSS].type = val;
|
sd->left_weapon.sp_drain_class[CLASS_NORMAL].type = val;
|
||||||
sd->left_weapon.sp_drain[RC_BOSS].rate += type2;
|
sd->left_weapon.sp_drain_class[CLASS_BOSS].rate += type2;
|
||||||
sd->left_weapon.sp_drain[RC_BOSS].per += type3;
|
sd->left_weapon.sp_drain_class[CLASS_BOSS].per += type3;
|
||||||
sd->left_weapon.sp_drain[RC_BOSS].type = val;
|
sd->left_weapon.sp_drain_class[CLASS_BOSS].type = val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_HP_DRAIN_RATE_RACE:
|
case SP_HP_DRAIN_RATE_RACE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.hp_drain[type2].rate += type3;
|
sd->right_weapon.hp_drain_race[type2].rate += type3;
|
||||||
sd->right_weapon.hp_drain[type2].per += val;
|
sd->right_weapon.hp_drain_race[type2].per += val;
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.hp_drain[type2].rate += type3;
|
sd->left_weapon.hp_drain_race[type2].rate += type3;
|
||||||
sd->left_weapon.hp_drain[type2].per += val;
|
sd->left_weapon.hp_drain_race[type2].per += val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_SP_DRAIN_RATE_RACE:
|
case SP_SP_DRAIN_RATE_RACE:
|
||||||
if(!sd->state.lr_flag) {
|
if(!sd->state.lr_flag) {
|
||||||
sd->right_weapon.sp_drain[type2].rate += type3;
|
sd->right_weapon.sp_drain_race[type2].rate += type3;
|
||||||
sd->right_weapon.sp_drain[type2].per += val;
|
sd->right_weapon.sp_drain_race[type2].per += val;
|
||||||
}
|
}
|
||||||
else if(sd->state.lr_flag == 1) {
|
else if(sd->state.lr_flag == 1) {
|
||||||
sd->left_weapon.sp_drain[type2].rate += type3;
|
sd->left_weapon.sp_drain_race[type2].rate += type3;
|
||||||
sd->left_weapon.sp_drain[type2].per += val;
|
sd->left_weapon.sp_drain_race[type2].per += val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SP_ADD_MONSTER_DROP_ITEMGROUP:
|
case SP_ADD_MONSTER_DROP_ITEMGROUP:
|
||||||
if (sd->state.lr_flag != 2)
|
if (sd->state.lr_flag != 2)
|
||||||
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, 1<<type3, val);
|
pc_bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, type2, -1, 1<<type3, val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SP_ADDEFF:
|
case SP_ADDEFF:
|
||||||
@ -3423,7 +3480,7 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SP_ADDELE:
|
case SP_ADDELE:
|
||||||
if (type2 > ELE_MAX) {
|
if (type2 > ELE_ALL) {
|
||||||
ShowWarning("pc_bonus3 (SP_ADDELE): element %d is out of range.\n", type2);
|
ShowWarning("pc_bonus3 (SP_ADDELE): element %d is out of range.\n", type2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3432,7 +3489,7 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SP_SUBELE:
|
case SP_SUBELE:
|
||||||
if (type2 > ELE_MAX) {
|
if (type2 > ELE_ALL) {
|
||||||
ShowWarning("pc_bonus3 (SP_SUBELE): element %d is out of range.\n", type2);
|
ShowWarning("pc_bonus3 (SP_SUBELE): element %d is out of range.\n", type2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3483,7 +3540,7 @@ int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SP_DEF_SET: //bonus4 bSetDefRace,n,x,r,y;
|
case SP_DEF_SET: //bonus4 bSetDefRace,n,x,r,y;
|
||||||
if( type2 > RC_MAX ) {
|
if( type2 > RC_ALL ) {
|
||||||
ShowWarning("pc_bonus4 (DEF_SET): %d is not supported.\n", type2);
|
ShowWarning("pc_bonus4 (DEF_SET): %d is not supported.\n", type2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3495,7 +3552,7 @@ int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SP_MDEF_SET: //bonus4 bSetMDefRace,n,x,r,y;
|
case SP_MDEF_SET: //bonus4 bSetMDefRace,n,x,r,y;
|
||||||
if( type2 > RC_MAX ) {
|
if( type2 > RC_ALL ) {
|
||||||
ShowWarning("pc_bonus4 (MDEF_SET): %d is not supported.\n", type2);
|
ShowWarning("pc_bonus4 (MDEF_SET): %d is not supported.\n", type2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -5894,9 +5951,10 @@ static void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsi
|
|||||||
int bonus = 0;
|
int bonus = 0;
|
||||||
struct status_data *status = status_get_status_data(src);
|
struct status_data *status = status_get_status_data(src);
|
||||||
|
|
||||||
if (sd->expaddrace[status->race])
|
if( sd->expaddrace[status->race] )
|
||||||
bonus += sd->expaddrace[status->race];
|
bonus += sd->expaddrace[status->race];
|
||||||
bonus += sd->expaddrace[status->mode&MD_BOSS?RC_BOSS:RC_NONBOSS];
|
if( sd->expaddrace[RC_ALL] )
|
||||||
|
bonus += sd->expaddrace[RC_ALL];
|
||||||
|
|
||||||
if (battle_config.pk_mode &&
|
if (battle_config.pk_mode &&
|
||||||
(int)(status_get_lv(src) - sd->status.base_level) >= 20)
|
(int)(status_get_lv(src) - sd->status.base_level) >= 20)
|
||||||
@ -9652,7 +9710,7 @@ int pc_del_talisman(struct map_session_data *sd,int count,int type)
|
|||||||
* Renewal EXP/Itemdrop rate modifier base on level penalty
|
* Renewal EXP/Itemdrop rate modifier base on level penalty
|
||||||
* 1=exp 2=itemdrop
|
* 1=exp 2=itemdrop
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int pc_level_penalty_mod(struct map_session_data *sd, int mob_level, uint32 mob_race, uint32 mob_mode, int type)
|
int pc_level_penalty_mod(struct map_session_data *sd, int mob_level, uint32 mob_class, int type)
|
||||||
{
|
{
|
||||||
int diff, rate = 100, i;
|
int diff, rate = 100, i;
|
||||||
|
|
||||||
@ -9663,17 +9721,10 @@ int pc_level_penalty_mod(struct map_session_data *sd, int mob_level, uint32 mob_
|
|||||||
if( diff < 0 )
|
if( diff < 0 )
|
||||||
diff = MAX_LEVEL + ( ~diff + 1 );
|
diff = MAX_LEVEL + ( ~diff + 1 );
|
||||||
|
|
||||||
for(i=0; i<RC_MAX; i++){
|
for( i = 0; i < CLASS_ALL; i++ ) {
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
if( mob_race != i ){
|
if( ( tmp = level_penalty[type][i][diff] ) > 0 ) {
|
||||||
if( mob_mode&MD_BOSS && i < RC_BOSS )
|
|
||||||
i = RC_BOSS;
|
|
||||||
else if( i <= RC_BOSS )
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( (tmp=level_penalty[type][i][diff]) > 0 ){
|
|
||||||
rate = tmp;
|
rate = tmp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -9793,10 +9844,10 @@ static bool pc_readdb_skilltree(char* fields[], int columns, int current)
|
|||||||
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
|
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
|
||||||
static bool pc_readdb_levelpenalty(char* fields[], int columns, int current)
|
static bool pc_readdb_levelpenalty(char* fields[], int columns, int current)
|
||||||
{
|
{
|
||||||
int type, race, diff;
|
int type, class_, diff;
|
||||||
|
|
||||||
type = atoi(fields[0]); //1=experience, 2=item drop
|
type = atoi(fields[0]); //1=experience, 2=item drop
|
||||||
race = atoi(fields[1]);
|
class_ = atoi(fields[1]);
|
||||||
diff = atoi(fields[2]);
|
diff = atoi(fields[2]);
|
||||||
|
|
||||||
if( type != 1 && type != 2 ){
|
if( type != 1 && type != 2 ){
|
||||||
@ -9804,8 +9855,8 @@ static bool pc_readdb_levelpenalty(char* fields[], int columns, int current)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( race < 0 || race > RC_MAX ){
|
if( class_ < 0 || class_ > CLASS_ALL ){
|
||||||
ShowWarning("pc_readdb_levelpenalty: Invalid race %d specified.\n", race);
|
ShowWarning("pc_readdb_levelpenalty: Invalid class %d specified.\n", class_);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9814,7 +9865,7 @@ static bool pc_readdb_levelpenalty(char* fields[], int columns, int current)
|
|||||||
if( diff < 0 )
|
if( diff < 0 )
|
||||||
diff = min(MAX_LEVEL + ( ~(diff) + 1 ), MAX_LEVEL*2);
|
diff = min(MAX_LEVEL + ( ~(diff) + 1 ), MAX_LEVEL*2);
|
||||||
|
|
||||||
level_penalty[type][race][diff] = atoi(fields[3]);
|
level_penalty[type][class_][diff] = atoi(fields[3]);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -10103,7 +10154,7 @@ int pc_readdb(void)
|
|||||||
sv_readdb(db_path, "re/level_penalty.txt", ',', 4, 4, -1, &pc_readdb_levelpenalty);
|
sv_readdb(db_path, "re/level_penalty.txt", ',', 4, 4, -1, &pc_readdb_levelpenalty);
|
||||||
for( k=1; k < 3; k++ ){ // fill in the blanks
|
for( k=1; k < 3; k++ ){ // fill in the blanks
|
||||||
int j;
|
int j;
|
||||||
for( j = 0; j < RC_MAX; j++ ){
|
for( j = 0; j < CLASS_ALL; j++ ){
|
||||||
int tmp = 0;
|
int tmp = 0;
|
||||||
for( i = 0; i < MAX_LEVEL*2; i++ ){
|
for( i = 0; i < MAX_LEVEL*2; i++ ){
|
||||||
if( i == MAX_LEVEL+1 )
|
if( i == MAX_LEVEL+1 )
|
||||||
|
56
src/map/pc.h
56
src/map/pc.h
@ -10,7 +10,7 @@
|
|||||||
#include "battle.h" // battle_config
|
#include "battle.h" // battle_config
|
||||||
#include "buyingstore.h" // struct s_buyingstore
|
#include "buyingstore.h" // struct s_buyingstore
|
||||||
#include "itemdb.h" // MAX_ITEMGROUP
|
#include "itemdb.h" // MAX_ITEMGROUP
|
||||||
#include "map.h" // RC_MAX
|
#include "map.h" // RC_ALL
|
||||||
#include "script.h" // struct script_reg, struct script_regstr
|
#include "script.h" // struct script_reg, struct script_regstr
|
||||||
#include "searchstore.h" // struct s_search_store_info
|
#include "searchstore.h" // struct s_search_store_info
|
||||||
#include "status.h" // OPTION_*, struct weapon_atk
|
#include "status.h" // OPTION_*, struct weapon_atk
|
||||||
@ -68,10 +68,13 @@ struct weapon_data {
|
|||||||
int star;
|
int star;
|
||||||
int ignore_def_ele;
|
int ignore_def_ele;
|
||||||
int ignore_def_race;
|
int ignore_def_race;
|
||||||
|
int ignore_def_class;
|
||||||
int def_ratio_atk_ele;
|
int def_ratio_atk_ele;
|
||||||
int def_ratio_atk_race;
|
int def_ratio_atk_race;
|
||||||
int addele[ELE_MAX];
|
int def_ratio_atk_class;
|
||||||
int addrace[RC_MAX];
|
int addele[ELE_ALL];
|
||||||
|
int addrace[RC_ALL];
|
||||||
|
int addclass[CLASS_ALL];
|
||||||
int addrace2[RC2_MAX];
|
int addrace2[RC2_MAX];
|
||||||
int addsize[3];
|
int addsize[3];
|
||||||
|
|
||||||
@ -80,7 +83,7 @@ struct weapon_data {
|
|||||||
short per;
|
short per;
|
||||||
short value;
|
short value;
|
||||||
unsigned type:1;
|
unsigned type:1;
|
||||||
} hp_drain[RC_MAX], sp_drain[RC_MAX];
|
} hp_drain_race[RC_ALL], sp_drain_race[RC_ALL], hp_drain_class[CLASS_ALL], sp_drain_class[CLASS_ALL];
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
short class_, rate;
|
short class_, rate;
|
||||||
@ -111,7 +114,7 @@ struct s_addeffectonskill {
|
|||||||
|
|
||||||
struct s_add_drop {
|
struct s_add_drop {
|
||||||
short id, group;
|
short id, group;
|
||||||
int race, rate;
|
int race, rate, class_;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct s_autobonus {
|
struct s_autobonus {
|
||||||
@ -286,30 +289,36 @@ struct map_session_data {
|
|||||||
|
|
||||||
// here start arrays to be globally zeroed at the beginning of status_calc_pc()
|
// here start arrays to be globally zeroed at the beginning of status_calc_pc()
|
||||||
int param_bonus[6],param_equip[6]; //Stores card/equipment bonuses.
|
int param_bonus[6],param_equip[6]; //Stores card/equipment bonuses.
|
||||||
int subele[ELE_MAX];
|
int subele[ELE_ALL];
|
||||||
int subrace[RC_MAX];
|
int subrace[RC_ALL];
|
||||||
|
int subclass[CLASS_ALL];
|
||||||
int subrace2[RC2_MAX];
|
int subrace2[RC2_MAX];
|
||||||
int subsize[3];
|
int subsize[3];
|
||||||
int reseff[SC_COMMON_MAX-SC_COMMON_MIN+1];
|
int reseff[SC_COMMON_MAX-SC_COMMON_MIN+1];
|
||||||
int weapon_coma_ele[ELE_MAX];
|
int weapon_coma_ele[ELE_ALL];
|
||||||
int weapon_coma_race[RC_MAX];
|
int weapon_coma_race[RC_ALL];
|
||||||
|
int weapon_coma_class[CLASS_ALL];
|
||||||
int weapon_atk[16];
|
int weapon_atk[16];
|
||||||
int weapon_atk_rate[16];
|
int weapon_atk_rate[16];
|
||||||
int arrow_addele[ELE_MAX];
|
int arrow_addele[ELE_ALL];
|
||||||
int arrow_addrace[RC_MAX];
|
int arrow_addrace[RC_ALL];
|
||||||
|
int arrow_addclass[CLASS_ALL];
|
||||||
int arrow_addsize[3];
|
int arrow_addsize[3];
|
||||||
int magic_addele[ELE_MAX];
|
int magic_addele[ELE_ALL];
|
||||||
int magic_addrace[RC_MAX];
|
int magic_addrace[RC_ALL];
|
||||||
|
int magic_addclass[CLASS_ALL];
|
||||||
int magic_addsize[3];
|
int magic_addsize[3];
|
||||||
int magic_atk_ele[ELE_MAX];
|
int magic_atk_ele[ELE_ALL];
|
||||||
int critaddrace[RC_MAX];
|
int critaddrace[RC_ALL];
|
||||||
int expaddrace[RC_MAX];
|
int expaddrace[RC_ALL];
|
||||||
int ignore_mdef[RC_MAX];
|
int ignore_mdef;
|
||||||
int ignore_def[RC_MAX];
|
int ignore_mdef_by_race[RC_ALL];
|
||||||
|
int ignore_mdef_by_class[CLASS_ALL];
|
||||||
|
int ignore_def_by_race[RC_ALL];
|
||||||
int itemgrouphealrate[MAX_ITEMGROUP];
|
int itemgrouphealrate[MAX_ITEMGROUP];
|
||||||
short sp_gain_race[RC_MAX];
|
short sp_gain_race[RC_ALL];
|
||||||
short sp_gain_race_attack[RC_MAX];
|
short sp_gain_race_attack[RC_ALL];
|
||||||
short hp_gain_race_attack[RC_MAX];
|
short hp_gain_race_attack[RC_ALL];
|
||||||
// zeroed arrays end here.
|
// zeroed arrays end here.
|
||||||
// zeroed structures start here
|
// zeroed structures start here
|
||||||
struct s_autospell autospell[15], autospell2[15], autospell3[15];
|
struct s_autospell autospell[15], autospell2[15], autospell3[15];
|
||||||
@ -340,7 +349,7 @@ struct map_session_data {
|
|||||||
struct {
|
struct {
|
||||||
short value;
|
short value;
|
||||||
int rate, tick;
|
int rate, tick;
|
||||||
} def_set_race[RC_MAX], mdef_set_race[RC_MAX];
|
} def_set_race[RC_ALL], mdef_set_race[RC_ALL];
|
||||||
// zeroed structures end here
|
// zeroed structures end here
|
||||||
// manually zeroed structures start here.
|
// manually zeroed structures start here.
|
||||||
struct s_autobonus autobonus[MAX_PC_BONUS], autobonus2[MAX_PC_BONUS], autobonus3[MAX_PC_BONUS]; //Auto script on attack, when attacked, on skill usage
|
struct s_autobonus autobonus[MAX_PC_BONUS], autobonus2[MAX_PC_BONUS], autobonus3[MAX_PC_BONUS]; //Auto script on attack, when attacked, on skill usage
|
||||||
@ -356,6 +365,7 @@ struct map_session_data {
|
|||||||
int near_attack_def_rate,long_attack_def_rate,magic_def_rate,misc_def_rate;
|
int near_attack_def_rate,long_attack_def_rate,magic_def_rate,misc_def_rate;
|
||||||
int ignore_mdef_ele;
|
int ignore_mdef_ele;
|
||||||
int ignore_mdef_race;
|
int ignore_mdef_race;
|
||||||
|
int ignore_mdef_class;
|
||||||
int perfect_hit;
|
int perfect_hit;
|
||||||
int perfect_hit_add;
|
int perfect_hit_add;
|
||||||
int get_zeny_rate;
|
int get_zeny_rate;
|
||||||
@ -1068,6 +1078,6 @@ void pc_bonus_script_clear(struct map_session_data *sd, uint16 flag);
|
|||||||
void pc_cell_basilica(struct map_session_data *sd);
|
void pc_cell_basilica(struct map_session_data *sd);
|
||||||
|
|
||||||
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
|
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
|
||||||
int pc_level_penalty_mod(struct map_session_data *sd, int mob_level, uint32 mob_race, uint32 mob_mode, int type);
|
int pc_level_penalty_mod(struct map_session_data *sd, int mob_level, uint32 mob_class, int type);
|
||||||
#endif
|
#endif
|
||||||
#endif /* _PC_H_ */
|
#endif /* _PC_H_ */
|
||||||
|
@ -509,11 +509,11 @@ int pet_catch_process2(struct map_session_data* sd, int target_id)
|
|||||||
|
|
||||||
//FIXME: delete taming item here, if this was an item-invoked capture and the item was flagged as delay-consume [ultramage]
|
//FIXME: delete taming item here, if this was an item-invoked capture and the item was flagged as delay-consume [ultramage]
|
||||||
|
|
||||||
i = search_petDB_index(md->class_,PET_CLASS);
|
i = search_petDB_index(md->mob_id,PET_CLASS);
|
||||||
//catch_target_class == 0 is used for universal lures (except bosses for now). [Skotlex]
|
//catch_target_class == 0 is used for universal lures (except bosses for now). [Skotlex]
|
||||||
if (sd->catch_target_class == 0 && !(md->status.mode&MD_BOSS))
|
if (sd->catch_target_class == 0 && !(md->status.mode&MD_BOSS))
|
||||||
sd->catch_target_class = md->class_;
|
sd->catch_target_class = md->mob_id;
|
||||||
if(i < 0 || sd->catch_target_class != md->class_) {
|
if(i < 0 || sd->catch_target_class != md->mob_id) {
|
||||||
clif_emotion(&md->bl, E_AG); //mob will do /ag if wrong lure is used on them.
|
clif_emotion(&md->bl, E_AG); //mob will do /ag if wrong lure is used on them.
|
||||||
clif_pet_roulette(sd,0);
|
clif_pet_roulette(sd,0);
|
||||||
sd->catch_target_class = -1;
|
sd->catch_target_class = -1;
|
||||||
|
@ -11308,7 +11308,7 @@ static int buildin_maprespawnguildid_sub_mob(struct block_list *bl,va_list ap)
|
|||||||
{
|
{
|
||||||
struct mob_data *md=(struct mob_data *)bl;
|
struct mob_data *md=(struct mob_data *)bl;
|
||||||
|
|
||||||
if(!md->guardian_data && md->class_ != MOBID_EMPERIUM)
|
if(!md->guardian_data && md->mob_id != MOBID_EMPERIUM)
|
||||||
status_kill(bl);
|
status_kill(bl);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -16951,7 +16951,7 @@ static int buildin_mobuseskill_sub(struct block_list *bl,va_list ap)
|
|||||||
int emotion = va_arg(ap,int);
|
int emotion = va_arg(ap,int);
|
||||||
int target = va_arg(ap,int);
|
int target = va_arg(ap,int);
|
||||||
|
|
||||||
if( md->class_ != mobid )
|
if( md->mob_id != mobid )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// 0:self, 1:target, 2:master, default:random
|
// 0:self, 1:target, 2:master, default:random
|
||||||
|
@ -1568,9 +1568,9 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint
|
|||||||
{ // Coma, Breaking Equipment
|
{ // Coma, Breaking Equipment
|
||||||
if( sd && sd->special_state.bonus_coma )
|
if( sd && sd->special_state.bonus_coma )
|
||||||
{
|
{
|
||||||
rate = sd->weapon_coma_ele[tstatus->def_ele];
|
rate = sd->weapon_coma_ele[tstatus->def_ele] + sd->weapon_coma_ele[ELE_ALL];
|
||||||
rate += sd->weapon_coma_race[tstatus->race];
|
rate += sd->weapon_coma_race[tstatus->race] + sd->weapon_coma_race[RC_ALL];
|
||||||
rate += sd->weapon_coma_race[tstatus->mode&MD_BOSS?RC_BOSS:RC_NONBOSS];
|
rate += sd->weapon_coma_class[tstatus->class_] + sd->weapon_coma_class[CLASS_ALL];
|
||||||
if (rate)
|
if (rate)
|
||||||
status_change_start(src,bl, SC_COMA, rate, 0, 0, src->id, 0, 0, 0);
|
status_change_start(src,bl, SC_COMA, rate, 0, 0, src->id, 0, 0, 0);
|
||||||
}
|
}
|
||||||
@ -1960,8 +1960,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
|
|||||||
int sp = 0, hp = 0;
|
int sp = 0, hp = 0;
|
||||||
if( (attack_type&(BF_WEAPON|BF_SHORT)) == (BF_WEAPON|BF_SHORT) ) {
|
if( (attack_type&(BF_WEAPON|BF_SHORT)) == (BF_WEAPON|BF_SHORT) ) {
|
||||||
sp += sd->bonus.sp_gain_value;
|
sp += sd->bonus.sp_gain_value;
|
||||||
sp += sd->sp_gain_race[status_get_race(bl)];
|
sp += sd->sp_gain_race[status_get_race(bl)] + sd->sp_gain_race[RC_ALL];
|
||||||
sp += sd->sp_gain_race[is_boss(bl)?RC_BOSS:RC_NONBOSS];
|
|
||||||
hp += sd->bonus.hp_gain_value;
|
hp += sd->bonus.hp_gain_value;
|
||||||
}
|
}
|
||||||
if( attack_type&BF_MAGIC ) {
|
if( attack_type&BF_MAGIC ) {
|
||||||
@ -2236,7 +2235,7 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in
|
|||||||
switch (target->type) {
|
switch (target->type) {
|
||||||
case BL_MOB: {
|
case BL_MOB: {
|
||||||
struct mob_data* md = BL_CAST(BL_MOB, target);
|
struct mob_data* md = BL_CAST(BL_MOB, target);
|
||||||
if( md->class_ == MOBID_EMPERIUM )
|
if( md->mob_id == MOBID_EMPERIUM )
|
||||||
return 0;
|
return 0;
|
||||||
//Bosses or imune can't be knocked-back
|
//Bosses or imune can't be knocked-back
|
||||||
if(src != target && status_get_mode(target)&(MD_KNOCKBACK_IMMUNE|MD_BOSS))
|
if(src != target && status_get_mode(target)&(MD_KNOCKBACK_IMMUNE|MD_BOSS))
|
||||||
@ -2643,7 +2642,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|||||||
else if (s_ele == -2) //Use status element
|
else if (s_ele == -2) //Use status element
|
||||||
s_ele = status_get_attack_sc_element(src,status_get_sc(src));
|
s_ele = status_get_attack_sc_element(src,status_get_sc(src));
|
||||||
else if( s_ele == -3 ) //Use random element
|
else if( s_ele == -3 ) //Use random element
|
||||||
s_ele = rnd()%ELE_MAX;
|
s_ele = rnd()%ELE_ALL;
|
||||||
|
|
||||||
dmg.damage = battle_attr_fix(bl, bl, dmg.damage, s_ele, status_get_element(bl), status_get_element_level(bl));
|
dmg.damage = battle_attr_fix(bl, bl, dmg.damage, s_ele, status_get_element(bl), status_get_element_level(bl));
|
||||||
|
|
||||||
@ -2968,9 +2967,9 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|||||||
(dmg.flag&BF_MISC && (skill_id == RA_CLUSTERBOMB || skill_id == RA_FIRINGTRAP || skill_id == RA_ICEBOUNDTRAP || skill_id == RK_DRAGONBREATH || skill_id == RK_DRAGONBREATH_WATER)) ) )
|
(dmg.flag&BF_MISC && (skill_id == RA_CLUSTERBOMB || skill_id == RA_FIRINGTRAP || skill_id == RA_ICEBOUNDTRAP || skill_id == RK_DRAGONBREATH || skill_id == RK_DRAGONBREATH_WATER)) ) )
|
||||||
{
|
{
|
||||||
if (battle_config.left_cardfix_to_right)
|
if (battle_config.left_cardfix_to_right)
|
||||||
battle_drain(sd, bl, dmg.damage, dmg.damage, tstatus->race, tstatus->mode&MD_BOSS);
|
battle_drain(sd, bl, dmg.damage, dmg.damage, tstatus->race, tstatus->class_);
|
||||||
else
|
else
|
||||||
battle_drain(sd, bl, dmg.damage, dmg.damage2, tstatus->race, tstatus->mode&MD_BOSS);
|
battle_drain(sd, bl, dmg.damage, dmg.damage2, tstatus->race, tstatus->class_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( damage > 0 ) {
|
if( damage > 0 ) {
|
||||||
@ -3147,7 +3146,7 @@ static int skill_check_unit_range2_sub (struct block_list *bl, va_list ap)
|
|||||||
if( skill_id == HP_BASILICA && bl->type == BL_PC )
|
if( skill_id == HP_BASILICA && bl->type == BL_PC )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if( skill_id == AM_DEMONSTRATION && bl->type == BL_MOB && ((TBL_MOB*)bl)->class_ == MOBID_EMPERIUM )
|
if( skill_id == AM_DEMONSTRATION && bl->type == BL_MOB && ((TBL_MOB*)bl)->mob_id == MOBID_EMPERIUM )
|
||||||
return 0; //Allow casting Bomb/Demonstration Right under emperium [Skotlex]
|
return 0; //Allow casting Bomb/Demonstration Right under emperium [Skotlex]
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -5231,7 +5230,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
int heal = skill_calc_heal(src, bl, skill_id, skill_lv, true);
|
int heal = skill_calc_heal(src, bl, skill_id, skill_lv, true);
|
||||||
int heal_get_jobexp;
|
int heal_get_jobexp;
|
||||||
if( status_isimmune(bl) ||
|
if( status_isimmune(bl) ||
|
||||||
(dstmd && (dstmd->class_ == MOBID_EMPERIUM || mob_is_battleground(dstmd))) ||
|
(dstmd && (dstmd->mob_id == MOBID_EMPERIUM || mob_is_battleground(dstmd))) ||
|
||||||
(dstsd && pc_ismadogear(dstsd)) )//Mado is immune to heal
|
(dstsd && pc_ismadogear(dstsd)) )//Mado is immune to heal
|
||||||
heal=0;
|
heal=0;
|
||||||
|
|
||||||
@ -5500,9 +5499,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
case SA_TAMINGMONSTER:
|
case SA_TAMINGMONSTER:
|
||||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
||||||
if (sd && dstmd) {
|
if (sd && dstmd) {
|
||||||
ARR_FIND( 0, MAX_PET_DB, i, dstmd->class_ == pet_db[i].class_ );
|
ARR_FIND( 0, MAX_PET_DB, i, dstmd->mob_id == pet_db[i].class_ );
|
||||||
if( i < MAX_PET_DB )
|
if( i < MAX_PET_DB )
|
||||||
pet_catch_process1(sd, dstmd->class_);
|
pet_catch_process1(sd, dstmd->mob_id);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -6464,7 +6463,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if( dstmd && dstmd->class_ == MOBID_EMPERIUM )
|
if( dstmd && dstmd->mob_id == MOBID_EMPERIUM )
|
||||||
break; // Cannot be Used on Emperium
|
break; // Cannot be Used on Emperium
|
||||||
|
|
||||||
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
||||||
@ -6657,7 +6656,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
case AM_BERSERKPITCHER:
|
case AM_BERSERKPITCHER:
|
||||||
case AM_POTIONPITCHER: {
|
case AM_POTIONPITCHER: {
|
||||||
int i,hp = 0,sp = 0;
|
int i,hp = 0,sp = 0;
|
||||||
if( dstmd && dstmd->class_ == MOBID_EMPERIUM ) {
|
if( dstmd && dstmd->mob_id == MOBID_EMPERIUM ) {
|
||||||
map_freeblock_unlock();
|
map_freeblock_unlock();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -7476,7 +7475,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
// Slim Pitcher
|
// Slim Pitcher
|
||||||
case CR_SLIMPITCHER:
|
case CR_SLIMPITCHER:
|
||||||
// Updated to block Slim Pitcher from working on barricades and guardian stones.
|
// Updated to block Slim Pitcher from working on barricades and guardian stones.
|
||||||
if( dstmd && (dstmd->class_ == MOBID_EMPERIUM || (dstmd->class_ >= MOBID_BARRICADE1 && dstmd->class_ <= MOBID_GUARIDAN_STONE2)) )
|
if( dstmd && (dstmd->mob_id == MOBID_EMPERIUM || (dstmd->mob_id >= MOBID_BARRICADE1 && dstmd->mob_id <= MOBID_GUARIDAN_STONE2)) )
|
||||||
break;
|
break;
|
||||||
if (potion_hp || potion_sp) {
|
if (potion_hp || potion_sp) {
|
||||||
int hp = potion_hp, sp = potion_sp;
|
int hp = potion_hp, sp = potion_sp;
|
||||||
@ -7549,7 +7548,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
{
|
{
|
||||||
int eff, count = -1;
|
int eff, count = -1;
|
||||||
if( rnd() % 100 > skill_lv * 8 || (tsc && tsc->data[SC_BASILICA]) ||
|
if( rnd() % 100 > skill_lv * 8 || (tsc && tsc->data[SC_BASILICA]) ||
|
||||||
(dstmd && ((dstmd->guardian_data && dstmd->class_ == MOBID_EMPERIUM) || mob_is_battleground(dstmd))) ) {
|
(dstmd && ((dstmd->guardian_data && dstmd->mob_id == MOBID_EMPERIUM) || mob_is_battleground(dstmd))) ) {
|
||||||
if( sd )
|
if( sd )
|
||||||
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
|
||||||
|
|
||||||
@ -8708,7 +8707,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
{
|
{
|
||||||
if( bl->type != BL_MOB ) break;
|
if( bl->type != BL_MOB ) break;
|
||||||
md = map_id2md(bl->id);
|
md = map_id2md(bl->id);
|
||||||
if( md && md->class_ >= MOBID_SILVERSNIPER && md->class_ <= MOBID_MAGICDECOY_WIND )
|
if( md && md->mob_id >= MOBID_SILVERSNIPER && md->mob_id <= MOBID_MAGICDECOY_WIND )
|
||||||
status_kill(bl);
|
status_kill(bl);
|
||||||
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
|
||||||
}
|
}
|
||||||
@ -9988,7 +9987,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data)
|
|||||||
|
|
||||||
if( ud->skill_id >= SL_SKE && ud->skill_id <= SL_SKA && target->type == BL_MOB )
|
if( ud->skill_id >= SL_SKE && ud->skill_id <= SL_SKA && target->type == BL_MOB )
|
||||||
{
|
{
|
||||||
if( ((TBL_MOB*)target)->class_ == MOBID_EMPERIUM )
|
if( ((TBL_MOB*)target)->mob_id == MOBID_EMPERIUM )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (inf && battle_check_target(src, target, inf) <= 0){
|
else if (inf && battle_check_target(src, target, inf) <= 0){
|
||||||
@ -12126,7 +12125,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
|||||||
int heal = skill_calc_heal(ss,bl,sg->skill_id,sg->skill_lv,true);
|
int heal = skill_calc_heal(ss,bl,sg->skill_id,sg->skill_lv,true);
|
||||||
struct mob_data *md = BL_CAST(BL_MOB, bl);
|
struct mob_data *md = BL_CAST(BL_MOB, bl);
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
if( md && md->class_ == MOBID_EMPERIUM )
|
if( md && md->mob_id == MOBID_EMPERIUM )
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
if( md && mob_is_battleground(md) )
|
if( md && mob_is_battleground(md) )
|
||||||
@ -12350,7 +12349,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
|
|||||||
int heal;
|
int heal;
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
struct mob_data *md = BL_CAST(BL_MOB, bl);
|
struct mob_data *md = BL_CAST(BL_MOB, bl);
|
||||||
if( md && md->class_ == MOBID_EMPERIUM )
|
if( md && md->mob_id == MOBID_EMPERIUM )
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
if( sg->src_id == bl->id && !(tsc && tsc->data[SC_SPIRIT] && tsc->data[SC_SPIRIT]->val2 == SL_BARDDANCER) )
|
if( sg->src_id == bl->id && !(tsc && tsc->data[SC_SPIRIT] && tsc->data[SC_SPIRIT]->val2 == SL_BARDDANCER) )
|
||||||
@ -13223,7 +13222,7 @@ static int skill_check_condition_mob_master_sub (struct block_list *bl, va_list
|
|||||||
if( md->master_id != src_id || md->special_state.ai != ai)
|
if( md->master_id != src_id || md->special_state.ai != ai)
|
||||||
return 0; //Non alchemist summoned mobs have nothing to do here.
|
return 0; //Non alchemist summoned mobs have nothing to do here.
|
||||||
|
|
||||||
if(md->class_==mob_class)
|
if(md->mob_id==mob_class)
|
||||||
(*c)++;
|
(*c)++;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -2207,7 +2207,7 @@ int status_calc_mob_(struct mob_data* md, bool first)
|
|||||||
|
|
||||||
if (md->guardian_data && md->guardian_data->guardup_lv)
|
if (md->guardian_data && md->guardian_data->guardup_lv)
|
||||||
flag|=4;
|
flag|=4;
|
||||||
if (md->class_ == MOBID_EMPERIUM)
|
if (md->mob_id == MOBID_EMPERIUM)
|
||||||
flag|=4;
|
flag|=4;
|
||||||
|
|
||||||
if (battle_config.slaves_inherit_speed && md->master_id)
|
if (battle_config.slaves_inherit_speed && md->master_id)
|
||||||
@ -2301,7 +2301,7 @@ int status_calc_mob_(struct mob_data* md, bool first)
|
|||||||
if (!gc)
|
if (!gc)
|
||||||
ShowError("status_calc_mob: No castle set at map %s\n", map[md->bl.m].name);
|
ShowError("status_calc_mob: No castle set at map %s\n", map[md->bl.m].name);
|
||||||
else
|
else
|
||||||
if(gc->castle_id < 24 || md->class_ == MOBID_EMPERIUM) {
|
if(gc->castle_id < 24 || md->mob_id == MOBID_EMPERIUM) {
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
status->max_hp += 50 * gc->defense;
|
status->max_hp += 50 * gc->defense;
|
||||||
status->max_sp += 70 * gc->defense;
|
status->max_sp += 70 * gc->defense;
|
||||||
@ -2314,7 +2314,7 @@ int status_calc_mob_(struct mob_data* md, bool first)
|
|||||||
status->def += (gc->defense+2)/3;
|
status->def += (gc->defense+2)/3;
|
||||||
status->mdef += (gc->defense+2)/3;
|
status->mdef += (gc->defense+2)/3;
|
||||||
}
|
}
|
||||||
if(md->class_ != MOBID_EMPERIUM) {
|
if(md->mob_id != MOBID_EMPERIUM) {
|
||||||
status->batk += status->batk * 10*md->guardian_data->guardup_lv/100;
|
status->batk += status->batk * 10*md->guardian_data->guardup_lv/100;
|
||||||
status->rhw.atk += status->rhw.atk * 10*md->guardian_data->guardup_lv/100;
|
status->rhw.atk += status->rhw.atk * 10*md->guardian_data->guardup_lv/100;
|
||||||
status->rhw.atk2 += status->rhw.atk2 * 10*md->guardian_data->guardup_lv/100;
|
status->rhw.atk2 += status->rhw.atk2 * 10*md->guardian_data->guardup_lv/100;
|
||||||
@ -2395,6 +2395,7 @@ int status_calc_pet_(struct pet_data *pd, bool first)
|
|||||||
if (first) {
|
if (first) {
|
||||||
memcpy(&pd->status, &pd->db->status, sizeof(struct status_data));
|
memcpy(&pd->status, &pd->db->status, sizeof(struct status_data));
|
||||||
pd->status.mode = MD_CANMOVE; // Pets discard all modes, except walking
|
pd->status.mode = MD_CANMOVE; // Pets discard all modes, except walking
|
||||||
|
pd->status.class_ = CLASS_NORMAL;
|
||||||
pd->status.speed = pd->petDB->speed;
|
pd->status.speed = pd->petDB->speed;
|
||||||
|
|
||||||
if(battle_config.pet_attack_support || battle_config.pet_damage_support) {
|
if(battle_config.pet_attack_support || battle_config.pet_damage_support) {
|
||||||
@ -2740,24 +2741,29 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
|
|||||||
+ sizeof(sd->param_equip)
|
+ sizeof(sd->param_equip)
|
||||||
+ sizeof(sd->subele)
|
+ sizeof(sd->subele)
|
||||||
+ sizeof(sd->subrace)
|
+ sizeof(sd->subrace)
|
||||||
|
+ sizeof(sd->subclass)
|
||||||
+ sizeof(sd->subrace2)
|
+ sizeof(sd->subrace2)
|
||||||
+ sizeof(sd->subsize)
|
+ sizeof(sd->subsize)
|
||||||
+ sizeof(sd->reseff)
|
+ sizeof(sd->reseff)
|
||||||
+ sizeof(sd->weapon_coma_ele)
|
+ sizeof(sd->weapon_coma_ele)
|
||||||
+ sizeof(sd->weapon_coma_race)
|
+ sizeof(sd->weapon_coma_race)
|
||||||
|
+ sizeof(sd->weapon_coma_class)
|
||||||
+ sizeof(sd->weapon_atk)
|
+ sizeof(sd->weapon_atk)
|
||||||
+ sizeof(sd->weapon_atk_rate)
|
+ sizeof(sd->weapon_atk_rate)
|
||||||
+ sizeof(sd->arrow_addele)
|
+ sizeof(sd->arrow_addele)
|
||||||
+ sizeof(sd->arrow_addrace)
|
+ sizeof(sd->arrow_addrace)
|
||||||
|
+ sizeof(sd->arrow_addclass)
|
||||||
+ sizeof(sd->arrow_addsize)
|
+ sizeof(sd->arrow_addsize)
|
||||||
+ sizeof(sd->magic_addele)
|
+ sizeof(sd->magic_addele)
|
||||||
+ sizeof(sd->magic_addrace)
|
+ sizeof(sd->magic_addrace)
|
||||||
|
+ sizeof(sd->magic_addclass)
|
||||||
+ sizeof(sd->magic_addsize)
|
+ sizeof(sd->magic_addsize)
|
||||||
+ sizeof(sd->magic_atk_ele)
|
+ sizeof(sd->magic_atk_ele)
|
||||||
+ sizeof(sd->critaddrace)
|
+ sizeof(sd->critaddrace)
|
||||||
+ sizeof(sd->expaddrace)
|
+ sizeof(sd->expaddrace)
|
||||||
+ sizeof(sd->ignore_mdef)
|
+ sizeof(sd->ignore_def_by_race)
|
||||||
+ sizeof(sd->ignore_def)
|
+ sizeof(sd->ignore_mdef_by_race)
|
||||||
|
+ sizeof(sd->ignore_mdef_by_class)
|
||||||
+ sizeof(sd->itemgrouphealrate)
|
+ sizeof(sd->itemgrouphealrate)
|
||||||
+ sizeof(sd->sp_gain_race)
|
+ sizeof(sd->sp_gain_race)
|
||||||
+ sizeof(sd->sp_gain_race_attack)
|
+ sizeof(sd->sp_gain_race_attack)
|
||||||
@ -2791,6 +2797,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
|
|||||||
status->aspd_rate = 1000;
|
status->aspd_rate = 1000;
|
||||||
status->ele_lv = 1;
|
status->ele_lv = 1;
|
||||||
status->race = RC_DEMIHUMAN;
|
status->race = RC_DEMIHUMAN;
|
||||||
|
status->class_ = CLASS_NORMAL;
|
||||||
|
|
||||||
// Zero up structures...
|
// Zero up structures...
|
||||||
memset(&sd->autospell,0,sizeof(sd->autospell)
|
memset(&sd->autospell,0,sizeof(sd->autospell)
|
||||||
@ -3510,6 +3517,7 @@ int status_calc_mercenary_(struct mercenary_data *md, bool first)
|
|||||||
|
|
||||||
if( first ) {
|
if( first ) {
|
||||||
memcpy(status, &md->db->status, sizeof(struct status_data));
|
memcpy(status, &md->db->status, sizeof(struct status_data));
|
||||||
|
status->class_ = CLASS_NORMAL;
|
||||||
status->mode = MD_CANMOVE|MD_CANATTACK;
|
status->mode = MD_CANMOVE|MD_CANATTACK;
|
||||||
status->hp = status->max_hp;
|
status->hp = status->max_hp;
|
||||||
status->sp = status->max_sp;
|
status->sp = status->max_sp;
|
||||||
@ -3550,6 +3558,7 @@ int status_calc_homunculus_(struct homun_data *hd, bool first)
|
|||||||
status->def_ele = db->element;
|
status->def_ele = db->element;
|
||||||
status->ele_lv = 1;
|
status->ele_lv = 1;
|
||||||
status->race = db->race;
|
status->race = db->race;
|
||||||
|
status->class_ = CLASS_NORMAL;
|
||||||
status->size = (hom->class_ == db->evo_class)?db->evo_size:db->base_size;
|
status->size = (hom->class_ == db->evo_class)?db->evo_size:db->base_size;
|
||||||
status->rhw.range = 1 + status->size;
|
status->rhw.range = 1 + status->size;
|
||||||
status->mode = MD_CANMOVE|MD_CANATTACK;
|
status->mode = MD_CANMOVE|MD_CANATTACK;
|
||||||
@ -3644,6 +3653,7 @@ int status_calc_elemental_(struct elemental_data *ed, bool first)
|
|||||||
else
|
else
|
||||||
status->mode = ele->mode;
|
status->mode = ele->mode;
|
||||||
|
|
||||||
|
status->class_ = CLASS_NORMAL;
|
||||||
status_calc_misc(&ed->bl, status, 0);
|
status_calc_misc(&ed->bl, status, 0);
|
||||||
|
|
||||||
status->max_hp = ele->max_hp;
|
status->max_hp = ele->max_hp;
|
||||||
@ -3693,6 +3703,7 @@ int status_calc_npc_(struct npc_data *nd, bool first)
|
|||||||
status->def_ele = ELE_NEUTRAL;
|
status->def_ele = ELE_NEUTRAL;
|
||||||
status->ele_lv = 1;
|
status->ele_lv = 1;
|
||||||
status->race = RC_DEMIHUMAN;
|
status->race = RC_DEMIHUMAN;
|
||||||
|
status->class_ = CLASS_NORMAL;
|
||||||
status->size = nd->size;
|
status->size = nd->size;
|
||||||
status->rhw.range = 1 + status->size;
|
status->rhw.range = 1 + status->size;
|
||||||
status->mode = (MD_CANMOVE|MD_CANATTACK);
|
status->mode = (MD_CANMOVE|MD_CANATTACK);
|
||||||
@ -7207,7 +7218,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
|
|
||||||
if( bl->type == BL_MOB) {
|
if( bl->type == BL_MOB) {
|
||||||
struct mob_data *md = BL_CAST(BL_MOB,bl);
|
struct mob_data *md = BL_CAST(BL_MOB,bl);
|
||||||
if(md && (md->class_ == MOBID_EMPERIUM || mob_is_battleground(md)) && type != SC_SAFETYWALL && type != SC_PNEUMA)
|
if(md && (md->mob_id == MOBID_EMPERIUM || mob_is_battleground(md)) && type != SC_SAFETYWALL && type != SC_PNEUMA)
|
||||||
return 0; // Emperium/BG Monsters can't be afflicted by status changes
|
return 0; // Emperium/BG Monsters can't be afflicted by status changes
|
||||||
// Uncomment to prevent status adding hp to gvg mob (like bloodylust=hp*3 etc...
|
// Uncomment to prevent status adding hp to gvg mob (like bloodylust=hp*3 etc...
|
||||||
// if(md && mob_is_gvg(md) && status_sc2scb_flag(type)&SCB_MAXHP) return 0;
|
// if(md && mob_is_gvg(md) && status_sc2scb_flag(type)&SCB_MAXHP) return 0;
|
||||||
@ -8085,7 +8096,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
// val1 : Element Lvl (if called by skill lvl 1, takes random value between 1 and 4)
|
// val1 : Element Lvl (if called by skill lvl 1, takes random value between 1 and 4)
|
||||||
// val2 : Element (When no element, random one is picked)
|
// val2 : Element (When no element, random one is picked)
|
||||||
// val3 : 0 = called by skill 1 = called by script (fixed level)
|
// val3 : 0 = called by skill 1 = called by script (fixed level)
|
||||||
if( !val2 ) val2 = rnd()%ELE_MAX;
|
if( !val2 ) val2 = rnd()%ELE_ALL;
|
||||||
|
|
||||||
if( val1 == 1 && val3 == 0 )
|
if( val1 == 1 && val3 == 0 )
|
||||||
val1 = 1 + rnd()%4;
|
val1 = 1 + rnd()%4;
|
||||||
@ -8749,10 +8760,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
// end previous enchants
|
// end previous enchants
|
||||||
skill_enchant_elemental_end(bl,type);
|
skill_enchant_elemental_end(bl,type);
|
||||||
// Make sure the received element is valid.
|
// Make sure the received element is valid.
|
||||||
if (val2 >= ELE_MAX)
|
if (val2 >= ELE_ALL)
|
||||||
val2 = val2%ELE_MAX;
|
val2 = val2%ELE_ALL;
|
||||||
else if (val2 < 0)
|
else if (val2 < 0)
|
||||||
val2 = rnd()%ELE_MAX;
|
val2 = rnd()%ELE_ALL;
|
||||||
break;
|
break;
|
||||||
case SC_CRITICALWOUND:
|
case SC_CRITICALWOUND:
|
||||||
val2 = 20*val1; // Heal effectiveness decrease
|
val2 = 20*val1; // Heal effectiveness decrease
|
||||||
@ -12187,13 +12198,13 @@ static bool status_readdb_attrfix()
|
|||||||
lv=atoi(split[0]);
|
lv=atoi(split[0]);
|
||||||
n=atoi(split[1]);
|
n=atoi(split[1]);
|
||||||
|
|
||||||
for(i=0;i<n && i<ELE_MAX;) {
|
for(i=0;i<n && i<ELE_ALL;) {
|
||||||
if( !fgets(line, sizeof(line), fp) )
|
if( !fgets(line, sizeof(line), fp) )
|
||||||
break;
|
break;
|
||||||
if(line[0]=='/' && line[1]=='/')
|
if(line[0]=='/' && line[1]=='/')
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for(j=0,p=line;j<n && j<ELE_MAX && p;j++) {
|
for(j=0,p=line;j<n && j<ELE_ALL && p;j++) {
|
||||||
while(*p==32 && *p>0)
|
while(*p==32 && *p>0)
|
||||||
p++;
|
p++;
|
||||||
attr_fix_table[lv-1][i][j]=atoi(p);
|
attr_fix_table[lv-1][i][j]=atoi(p);
|
||||||
@ -12242,8 +12253,8 @@ int status_readdb(void)
|
|||||||
}
|
}
|
||||||
// attr_fix.txt
|
// attr_fix.txt
|
||||||
for(i=0;i<4;i++)
|
for(i=0;i<4;i++)
|
||||||
for(j=0;j<ELE_MAX;j++)
|
for(j=0;j<ELE_ALL;j++)
|
||||||
for(k=0;k<ELE_MAX;k++)
|
for(k=0;k<ELE_ALL;k++)
|
||||||
attr_fix_table[i][j][k]=100;
|
attr_fix_table[i][j][k]=100;
|
||||||
|
|
||||||
// read databases
|
// read databases
|
||||||
|
@ -1738,7 +1738,8 @@ struct status_data {
|
|||||||
|
|
||||||
unsigned char
|
unsigned char
|
||||||
def_ele, ele_lv,
|
def_ele, ele_lv,
|
||||||
size, race;
|
size, race,
|
||||||
|
class_;
|
||||||
|
|
||||||
struct weapon_atk rhw, lhw; //Right Hand/Left Hand Weapon.
|
struct weapon_atk rhw, lhw; //Right Hand/Left Hand Weapon.
|
||||||
};
|
};
|
||||||
@ -1887,6 +1888,7 @@ unsigned char status_calc_attack_element(struct block_list *bl, struct status_ch
|
|||||||
#define status_get_attack_element(bl) status_get_status_data(bl)->rhw.ele
|
#define status_get_attack_element(bl) status_get_status_data(bl)->rhw.ele
|
||||||
#define status_get_attack_lelement(bl) status_get_status_data(bl)->lhw.ele
|
#define status_get_attack_lelement(bl) status_get_status_data(bl)->lhw.ele
|
||||||
#define status_get_race(bl) status_get_status_data(bl)->race
|
#define status_get_race(bl) status_get_status_data(bl)->race
|
||||||
|
#define status_get_class_(bl) status_get_status_data(bl)->class_
|
||||||
#define status_get_size(bl) status_get_status_data(bl)->size
|
#define status_get_size(bl) status_get_status_data(bl)->size
|
||||||
#define status_get_mode(bl) status_get_status_data(bl)->mode
|
#define status_get_mode(bl) status_get_status_data(bl)->mode
|
||||||
int status_get_party_id(struct block_list *bl);
|
int status_get_party_id(struct block_list *bl);
|
||||||
|
@ -2131,7 +2131,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t
|
|||||||
if (sstatus->mode&MD_ASSIST && DIFF_TICK(md->last_linktime, tick) < MIN_MOBLINKTIME) {
|
if (sstatus->mode&MD_ASSIST && DIFF_TICK(md->last_linktime, tick) < MIN_MOBLINKTIME) {
|
||||||
// Link monsters nearby [Skotlex]
|
// Link monsters nearby [Skotlex]
|
||||||
md->last_linktime = tick;
|
md->last_linktime = tick;
|
||||||
map_foreachinrange(mob_linksearch, src, md->db->range2, BL_MOB, md->class_, target, tick);
|
map_foreachinrange(mob_linksearch, src, md->db->range2, BL_MOB, md->mob_id, target, tick);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(src->type == BL_PET && pet_attackskill((TBL_PET*)src, target->id))
|
if(src->type == BL_PET && pet_attackskill((TBL_PET*)src, target->id))
|
||||||
@ -2740,7 +2740,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
|
|||||||
aFree(md->base_status);
|
aFree(md->base_status);
|
||||||
md->base_status = NULL;
|
md->base_status = NULL;
|
||||||
}
|
}
|
||||||
if( mob_is_clone(md->class_) )
|
if( mob_is_clone(md->mob_id) )
|
||||||
mob_clone_delete(md);
|
mob_clone_delete(md);
|
||||||
if( md->tomb_nid )
|
if( md->tomb_nid )
|
||||||
mvptomb_destroy(md);
|
mvptomb_destroy(md);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user