diff options
author | malufett <malufett.eat.my.binaries@gmail.com> | 2015-03-11 13:02:41 +0800 |
---|---|---|
committer | malufett <malufett.eat.my.binaries@gmail.com> | 2015-03-11 13:02:41 +0800 |
commit | 210c963d2851eb880ba3560998ee984d942cde19 (patch) | |
tree | 188e6a21ae92f37fb2bf66dd635c71e3e62b3644 | |
parent | fb5aaa96cbed8fe8c9ce8a47a63ffe017c7e53b4 (diff) | |
download | hercules-210c963d2851eb880ba3560998ee984d942cde19.tar.gz hercules-210c963d2851eb880ba3560998ee984d942cde19.tar.bz2 hercules-210c963d2851eb880ba3560998ee984d942cde19.tar.xz hercules-210c963d2851eb880ba3560998ee984d942cde19.zip |
RENEWAL Updates:
-Fixed card bonuses related to to ATK.(Added 'bRaceTolerance'). Thanks Michi for the support.
-Fixed Renewal EDP. Special thanks to Awesome Yommy <3
-Enabled 'display_skill_fail' since '/skillfail' is already available in the client
Signed-off-by: malufett <malufett.eat.my.binaries@gmail.com>
-rw-r--r-- | conf/battle/skill.conf | 3 | ||||
-rw-r--r-- | db/const.txt | 1 | ||||
-rw-r--r-- | db/pet_db.txt | 6 | ||||
-rw-r--r-- | db/re/item_db.conf | 339 | ||||
-rw-r--r-- | doc/item_bonus.txt | 6 | ||||
-rw-r--r-- | src/map/battle.c | 206 | ||||
-rw-r--r-- | src/map/battle.h | 1 | ||||
-rw-r--r-- | src/map/map.h | 1 | ||||
-rw-r--r-- | src/map/pc.c | 6 | ||||
-rw-r--r-- | src/map/pc.h | 3 | ||||
-rw-r--r-- | src/map/status.c | 32 |
11 files changed, 370 insertions, 234 deletions
diff --git a/conf/battle/skill.conf b/conf/battle/skill.conf index 028228729..f3da0e209 100644 --- a/conf/battle/skill.conf +++ b/conf/battle/skill.conf @@ -154,11 +154,12 @@ monster_cloak_check_type: 4 land_skill_limit: 9 //Determines which kind of skill-failed messages should be sent: +// 0 - Enable by default // 1 - Disable all skill-failed messages. // 2 - Disable skill-failed messages due to can-act delays. // 4 - Disable failed message from Snatcher // 8 - Disable failed message from Envenom -display_skill_fail: 2 +display_skill_fail: 0 // Can a player in chat room (in-game), be warped by a warp portal? (Note 1) chat_warpportal: no diff --git a/db/const.txt b/db/const.txt index c7fff2825..0fec098ef 100644 --- a/db/const.txt +++ b/db/const.txt @@ -593,6 +593,7 @@ bFixedCast 2057 bVariableCast 2058 bSetDefRace 2059 bSetMDefRace 2060 +bAddRaceTolerance 2061 //reference to script.c::script_defaults():equip[] array used for easy-conversion EQI_HEAD_TOP 1 diff --git a/db/pet_db.txt b/db/pet_db.txt index a95154974..fdfc69748 100644 --- a/db/pet_db.txt +++ b/db/pet_db.txt @@ -77,12 +77,12 @@ 1101,BAPHOMET_,Baphomet Jr.,642,9024,10001,518,80,60,10,100,250,20,200,150,0,0,1000,100,200,{ petskillattack "NPC_DARKNESSATTACK",1776,4,0,5; },{ bonus bDef,1; bonus bMdef,1; bonus2 bResEff,Eff_Stun,-100; } 1188,BON_GUN,Bon Gun,659,9025,10020,537,80,60,30,100,250,20,500,150,1,0,600,200,400,{ petskillattack "NPC_DARKNESSATTACK",555,1,1,1; },{ bonus bVit,1; bonus2 bResEff,Eff_Stun,100; } 1200,ZHERLTHSH,Zealotus,660,9026,0,929,80,60,10,100,250,20,300,150,0,0,1000,100,500,{ petskillattack "AS_SONICBLOW",1,0,0,3; },{ bonus2 bAddRace,RC_DemiHuman,2; bonus2 bMagicAddRace,RC_DemiHuman,2; } -1275,ALICE,Alice,661,9027,0,504,80,60,20,100,250,20,800,150,0,0,100,1000,200,{ petskillsupport "AL_HEAL",5,60,25,100; },{ bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; } +1275,ALICE,Alice,661,9027,0,504,80,60,20,100,250,20,800,150,0,0,100,1000,200,{ petskillsupport "AL_HEAL",5,60,25,100; },{ bonus bMdef,1; if(checkre(0)){bonus2 bAddRaceTolerance,RC_DemiHuman,1;}else{bonus2 bSubRace,RC_DemiHuman,1;} } 1815,EVENT_RICECAKE,Rice Cake,0,9028,0,511,80,60,50,100,250,20,2000,150,1,0,500,500,200,{ petskillsupport "CR_DEFENDER",3,240,50,100; },{ bonus2 bSubEle,Ele_Neutral,1; bonus bMaxHPrate,-1; } 1245,GOBLINE_XMAS,Christmas Goblin,12225,9029,0,911,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "MG_SIGHT",5,0,5,5; },{ bonus bMaxHP,30; bonus2 bSubEle,Ele_Water,1; } // Newest pets. -1519,CHUNG_E,Green Maiden,12395,9030,0,6115,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,0,5,5; },{ bonus bDef,1; bonus2 bSubRace,RC_DemiHuman,1; } +1519,CHUNG_E,Green Maiden,12395,9030,0,6115,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,0,5,5; },{ bonus bDef,1; if(checkre(0)){bonus2 bAddRaceTolerance,RC_DemiHuman,1;}else{bonus2 bSubRace,RC_DemiHuman,1;} } 1879,ECLIPSE_P,Spring Rabbit,0,9031,0,7766,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "TF_THROWSTONE",1,0,5,5; },{} 1122,GOBLIN_1,Goblin,14569,9032,0,7821,80,60,50,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_WINDATTACK",5,0,5,5; },{} 1123,GOBLIN_2,Goblin,14570,9033,0,7821,80,60,50,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_FIREATTACK",5,0,5,5; },{} @@ -109,7 +109,7 @@ 1504,DULLAHAN,Dullahan,12367,9049,10031,6107,80,60,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus bCritAtkRate,5; } 1505,LOLI_RURI,Loli Ruri,12360,9042,10024,6097,80,60,15,100,250,20,200,150,0,0,300,300,800,{},{ bonus bMaxHPrate,3; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,50; } 1513,CIVIL_SERVANT,Mao Guai,12358,9040,10022,6095,80,60,10,100,250,20,500,150,0,0,300,300,800,{},{ bonus bMaxSP,10; } -1586,LEAF_CAT,Leaf Cat,12359,9041,10023,6096,80,60,20,100,250,20,200,150,0,0,300,300,800,{},{ bonus2 bSubRace,RC_Brute,3; } +1586,LEAF_CAT,Leaf Cat,12359,9041,10023,6096,80,60,20,100,250,20,200,150,0,0,300,300,800,{},{ if(checkre(0)){bonus2 bAddRaceTolerance,RC_Brute,2;}else{bonus2 bSubRace,RC_Brute,3;} } 1630,BACSOJIN_,White Lady,12357,9039,10021,6094,80,60,10,100,250,20,2000,150,0,0,300,300,800,{},{} 1837,IMP,Fire Imp,12374,9056,10038,6114,80,60,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus2 bSubEle,Ele_Fire,2; bonus2 bAddEle,Ele_Fire,2; } diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 796297709..4377d5c6e 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -1,4 +1,4 @@ -item_db: ( +item_db: ( // Items Database // /****************************************************************************** @@ -6963,7 +6963,7 @@ item_db: ( Script: <" bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; - bonus2 bSubRace,RC_Plant,15; + bonus2 bAddRaceTolerance,RC_Plant,15; "> }, { @@ -6983,7 +6983,7 @@ item_db: ( View: 1 Script: <" bonus bIgnoreDefRace,RC_DemiHuman; - bonus2 bSubRace,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; bonus2 bSubRace,RC_Demon,-10; "> }, @@ -7086,7 +7086,7 @@ item_db: ( View: 1 Script: <" bonus bIgnoreDefRace,RC_Demon; - bonus2 bSubRace,RC_Demon,5; + bonus2 bAddRaceTolerance,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; "> }, @@ -8498,7 +8498,7 @@ item_db: ( EquipLv: 44 View: 6 Script: <" - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; bonus3 bAddMonsterDropItem,517,RC_Brute,3000; "> }, @@ -11116,8 +11116,8 @@ item_db: ( 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 bAddRaceTolerance,RC_Demon,10; + bonus2 bAddRaceTolerance,RC_Undead,10; bonus3 bAddEff,Eff_Confusion,10000,ATF_SELF|ATF_SHORT; bonus bHPGainValue,50; "> @@ -11165,8 +11165,8 @@ item_db: ( 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 bAddRaceTolerance,RC_Demon,10; + bonus2 bAddRaceTolerance,RC_Undead,10; bonus3 bAddEff,Eff_Confusion,10000,ATF_SELF|ATF_SHORT; bonus bHPGainValue,50; "> @@ -18452,8 +18452,8 @@ item_db: ( Script: <" bonus bAtkEle,Ele_Holy; bonus bDex,4; - bonus2 bSubRace,RC_Demon,15; - bonus2 bSubRace,RC_Undead,15; + bonus2 bAddRaceTolerance,RC_Demon,15; + bonus2 bAddRaceTolerance,RC_Undead,15; "> }, { @@ -19138,7 +19138,7 @@ item_db: ( Loc: 32 EquipLv: 20 View: 1 - Script: <" bonus2 bSubRace,RC_Demon,5; "> + Script: <" bonus2 bAddRaceTolerance,RC_Demon,5; "> }, { Id: 2117 @@ -19235,7 +19235,7 @@ item_db: ( bonus bMdef,5; bonus2 bSubSize,Size_Medium,15; bonus2 bSubSize,Size_Large,15; - bonus2 bSubRace,RC_Undead,10; + bonus2 bAddRaceTolerance,RC_Undead,10; bonus5 bAutoSpellWhenHit,NPC_MAGICMIRROR,2,150,BF_MAGIC,0; "> }, @@ -20326,7 +20326,7 @@ item_db: ( Loc: 256 Refine: false View: 4 - Script: <" bonus2 bSubRace,RC_Plant,10; "> + Script: <" bonus2 bAddRaceTolerance,RC_Plant,10; "> }, { Id: 2208 @@ -20946,7 +20946,7 @@ item_db: ( Loc: 256 Refine: false View: 37 - Script: <" bonus2 bSubRace,RC_Insect,10; "> + Script: <" bonus2 bAddRaceTolerance,RC_Insect,10; "> }, { Id: 2254 @@ -20964,7 +20964,7 @@ item_db: ( bonus bMdef,3; bonus bAgi,1; bonus bLuk,1; - bonus2 bSubRace,RC_Demon,3; + bonus2 bAddRaceTolerance,RC_Demon,3; "> }, { @@ -20982,7 +20982,7 @@ item_db: ( Script: <" bonus bMdef,2; bonus bStr,1; - bonus2 bSubRace,RC_Angel,3; + bonus2 bAddRaceTolerance,RC_Angel,3; "> }, { @@ -21101,7 +21101,7 @@ item_db: ( Loc: 769 Refine: false View: 51 - Script: <" bonus2 bSubRace,RC_Undead,10; "> + Script: <" bonus2 bAddRaceTolerance,RC_Undead,10; "> }, { Id: 2265 @@ -21143,7 +21143,7 @@ item_db: ( Loc: 1 Refine: false View: 54 - Script: <" bonus2 bSubRace,RC_Insect,3; "> + Script: <" bonus2 bAddRaceTolerance,RC_Insect,3; "> }, { Id: 2268 @@ -21157,7 +21157,7 @@ item_db: ( Loc: 1 Refine: false View: 55 - Script: <" bonus2 bSubRace,RC_Insect,3; "> + Script: <" bonus2 bAddRaceTolerance,RC_Insect,3; "> }, { Id: 2269 @@ -21171,7 +21171,7 @@ item_db: ( Loc: 1 Refine: false View: 56 - Script: <" bonus2 bSubRace,RC_Plant,3; "> + Script: <" bonus2 bAddRaceTolerance,RC_Plant,3; "> }, { Id: 2270 @@ -21185,7 +21185,7 @@ item_db: ( Loc: 1 Refine: false View: 57 - Script: <" bonus2 bSubRace,RC_Plant,3; "> + Script: <" bonus2 bAddRaceTolerance,RC_Plant,3; "> }, { Id: 2271 @@ -21439,7 +21439,7 @@ item_db: ( Loc: 256 Refine: false View: 76 - Script: <" bonus2 bSubRace,RC_DemiHuman,10; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,10; "> }, { Id: 2290 @@ -21933,7 +21933,7 @@ item_db: ( EquipLv: 60 Script: <" bonus bMdef,5; - bonus2 bSubRace,RC_Demon,15; + bonus2 bAddRaceTolerance,RC_Demon,15; bonus2 bSubEle,Ele_Dark,10; "> }, @@ -22606,7 +22606,7 @@ item_db: ( } Script: <" bonus bUnbreakableArmor,0; - bonus2 bSubRace,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; "> }, { @@ -22680,7 +22680,7 @@ item_db: ( EquipLv: 60 Script: <" bonus bMdef,5; - bonus2 bSubRace,RC_Demon,15; + bonus2 bAddRaceTolerance,RC_Demon,15; bonus2 bSubEle,Ele_Dark,10; "> }, @@ -22748,7 +22748,7 @@ item_db: ( Script: <" bonus bMaxHP,150; bonus bMdef,2; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -22774,7 +22774,7 @@ item_db: ( Script: <" bonus bMaxHP,150; bonus bMdef,2; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -22800,7 +22800,7 @@ item_db: ( Script: <" bonus bMaxHP,150; bonus bMdef,2; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -22826,7 +22826,7 @@ item_db: ( Script: <" bonus bMaxHP,150; bonus bMdef,2; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -22852,7 +22852,7 @@ item_db: ( Script: <" bonus bMaxHP,150; bonus bMdef,2; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -22878,7 +22878,7 @@ item_db: ( Script: <" bonus bMaxHP,150; bonus bMdef,2; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -22904,7 +22904,7 @@ item_db: ( Script: <" bonus bMaxHP,150; bonus bMdef,2; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -23167,7 +23167,7 @@ item_db: ( } Script: <" bonus bMaxHPrate,20; - bonus2 bSubRace,RC_DemiHuman,7; + bonus2 bAddRaceTolerance,RC_DemiHuman,7; "> }, { @@ -23700,7 +23700,7 @@ item_db: ( Upper: 63 Loc: 64 Refine: false - Script: <" bonus2 bSubRace,RC_DemiHuman,5; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,5; "> }, { Id: 2429 @@ -23836,7 +23836,7 @@ item_db: ( Script: <" bonus bMaxHP,100; bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bAddRaceTolerance,RC_DemiHuman,1; "> }, { @@ -23862,7 +23862,7 @@ item_db: ( Script: <" bonus bMaxHP,100; bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bAddRaceTolerance,RC_DemiHuman,1; "> }, { @@ -23888,7 +23888,7 @@ item_db: ( Script: <" bonus bMaxHP,100; bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bAddRaceTolerance,RC_DemiHuman,1; "> }, { @@ -24024,7 +24024,7 @@ item_db: ( } Script: <" bonus bMaxHPrate,10; - bonus2 bSubRace,RC_DemiHuman,4; + bonus2 bAddRaceTolerance,RC_DemiHuman,4; bonus3 bAutoSpellWhenHit,AL_INCAGI,1,10; "> }, @@ -24533,16 +24533,16 @@ item_db: ( EquipLv: 100 Script: <" bonus bMaxHP,500; - bonus2 bSubRace,RC_DemiHuman,10; - bonus2 bSubRace,RC_Formless,-10; - bonus2 bSubRace,RC_Undead,-10; - bonus2 bSubRace,RC_Brute,-10; - bonus2 bSubRace,RC_Plant,-10; - bonus2 bSubRace,RC_Insect,-10; - bonus2 bSubRace,RC_Fish,-10; - bonus2 bSubRace,RC_Demon,-10; - bonus2 bSubRace,RC_Angel,-10; - bonus2 bSubRace,RC_Dragon,-10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_Formless,-10; + bonus2 bAddRaceTolerance,RC_Undead,-10; + bonus2 bAddRaceTolerance,RC_Brute,-10; + bonus2 bAddRaceTolerance,RC_Plant,-10; + bonus2 bAddRaceTolerance,RC_Insect,-10; + bonus2 bAddRaceTolerance,RC_Fish,-10; + bonus2 bAddRaceTolerance,RC_Demon,-10; + bonus2 bAddRaceTolerance,RC_Angel,-10; + bonus2 bAddRaceTolerance,RC_Dragon,-10; "> }, { @@ -24741,7 +24741,7 @@ item_db: ( EquipLv: 95 Script: <" bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -24759,7 +24759,7 @@ item_db: ( EquipLv: 95 Script: <" bonus bMdef,5; - bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bAddRaceTolerance,RC_DemiHuman,1; "> }, { @@ -24777,7 +24777,7 @@ item_db: ( EquipLv: 95 Script: <" bonus bMdef,10; - bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bAddRaceTolerance,RC_DemiHuman,1; "> }, { @@ -25288,7 +25288,7 @@ item_db: ( Upper: 58 Loc: 4 EquipLv: 48 - Script: <" bonus2 bSubRace,RC_Dragon,15; "> + Script: <" bonus2 bAddRaceTolerance,RC_Dragon,15; "> }, { Id: 2528 @@ -25379,7 +25379,7 @@ item_db: ( Upper: 63 Loc: 4 Refine: false - Script: <" bonus2 bSubRace,RC_DemiHuman,15; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,15; "> }, { Id: 2534 @@ -25482,7 +25482,7 @@ item_db: ( Script: <" bonus bMaxHP,50; bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bAddRaceTolerance,RC_DemiHuman,1; "> }, { @@ -25508,7 +25508,7 @@ item_db: ( Script: <" bonus bMaxHP,50; bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bAddRaceTolerance,RC_DemiHuman,1; "> }, { @@ -25534,7 +25534,7 @@ item_db: ( Script: <" bonus bMaxHP,50; bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bAddRaceTolerance,RC_DemiHuman,1; "> }, { @@ -25627,8 +25627,8 @@ item_db: ( Script: <" bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; - bonus2 bSubRace,RC_Plant,5; - bonus2 bSubRace,RC_Brute,5; + bonus2 bAddRaceTolerance,RC_Plant,5; + bonus2 bAddRaceTolerance,RC_Brute,5; "> }, { @@ -25725,7 +25725,7 @@ item_db: ( } Script: <" bonus bMaxHPrate,5; - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; "> }, { @@ -26419,7 +26419,7 @@ item_db: ( EquipLv: 95 Script: <" bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -26436,7 +26436,7 @@ item_db: ( EquipLv: 95 Script: <" bonus bMdef,10; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -26477,6 +26477,7 @@ item_db: ( bonus bAspdRate,readparam(bAgi)/20; bonus bLongAtkRate,readparam(bDex)/20; bonus bCritAtkRate,readparam(bLuk)/20; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; "> }, { @@ -26726,8 +26727,8 @@ item_db: ( Refine: false Script: <" bonus2 bResEff,Eff_Poison,10000; - bonus2 bSubRace,RC_Undead,4; - bonus2 bSubRace,RC_Demon,4; + bonus2 bAddRaceTolerance,RC_Undead,4; + bonus2 bAddRaceTolerance,RC_Demon,4; "> }, { @@ -28501,7 +28502,7 @@ item_db: ( Upper: 63 Loc: 136 Refine: false - Script: <" bonus2 bSubRace,RC_Undead,1; "> + Script: <" bonus2 bAddRaceTolerance,RC_Undead,1; "> }, { Id: 2716 @@ -33182,7 +33183,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_DemiHuman,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,30; "> }, { Id: 4059 @@ -33192,7 +33193,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Plant,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Plant,30; "> }, { Id: 4060 @@ -33265,7 +33266,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Brute,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Brute,30; "> }, { Id: 4067 @@ -33354,7 +33355,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Insect,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Insect,30; "> }, { Id: 4075 @@ -33459,7 +33460,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Fish,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Fish,30; "> }, { Id: 4084 @@ -33898,7 +33899,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Dragon,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Dragon,30; "> }, { Id: 4121 @@ -33944,7 +33945,7 @@ item_db: ( Weight: 10 Loc: 32 Script: <" - bonus2 bSubRace,RC_Demon,15; + bonus2 bAddRaceTolerance,RC_Demon,15; bonus2 bResEff,Eff_Stone,10000; "> }, @@ -34086,7 +34087,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Demon,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Demon,30; "> }, { Id: 4137 @@ -34106,7 +34107,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Angel,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Angel,30; "> }, { Id: 4139 @@ -36534,7 +36535,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Undead,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Undead,30; "> }, { Id: 4341 @@ -38812,9 +38813,9 @@ item_db: ( Loc: 769 Script: <" bonus bInt,3; - bonus2 bSubRace,RC_Insect,10; + bonus2 bAddRaceTolerance,RC_Insect,10; if(getrefine()>=9) { - bonus2 bSubRace,RC_Insect,5; + bonus2 bAddRaceTolerance,RC_Insect,5; } "> }, @@ -38886,7 +38887,7 @@ item_db: ( Buy: 20 Weight: 10 Loc: 32 - Script: <" bonus2 bSubRace,RC_Plant,30; "> + Script: <" bonus2 bAddRaceTolerance,RC_Plant,30; "> }, { Id: 4516 @@ -38980,7 +38981,7 @@ item_db: ( Loc: 16 Script: <" bonus bDefEle,Ele_Water; - bonus2 bSubRace,RC_Fish,10; + bonus2 bAddRaceTolerance,RC_Fish,10; "> }, { @@ -41176,7 +41177,7 @@ item_db: ( Type: 6 Buy: 0 Loc: 16 - Script: <" bonus2 bSubRace,RC_DemiHuman,5; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,5; "> }, { Id: 4850 @@ -42837,7 +42838,7 @@ item_db: ( Script: <" bonus bLuk,2; bonus bMdef,10; - bonus2 bSubRace,RC_Brute,5; + bonus2 bAddRaceTolerance,RC_Brute,5; "> }, { @@ -43106,7 +43107,7 @@ item_db: ( Upper: 63 Loc: 256 View: 198 - Script: <" bonus2 bSubRace,RC_Plant,2; "> + Script: <" bonus2 bAddRaceTolerance,RC_Plant,2; "> }, { Id: 5118 @@ -43164,7 +43165,7 @@ item_db: ( View: 200 Script: <" bonus2 bAddRace,RC_DemiHuman,5; - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; "> }, { @@ -43302,7 +43303,7 @@ item_db: ( View: 201 Script: <" bonus bAgi,2; - bonus2 bSubRace,RC_Brute,10; + bonus2 bAddRaceTolerance,RC_Brute,10; "> }, { @@ -43359,7 +43360,7 @@ item_db: ( nomail: true noauction: true } - Script: <" bonus2 bSubRace,RC_DemiHuman,10; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,10; "> }, { Id: 5133 @@ -43494,8 +43495,8 @@ item_db: ( EquipLv: 10 View: 211 Script: <" - bonus2 bSubRace,RC_Undead,5; - bonus2 bSubRace,RC_Demon,5; + bonus2 bAddRaceTolerance,RC_Undead,5; + bonus2 bAddRaceTolerance,RC_Demon,5; "> }, { @@ -43530,7 +43531,7 @@ item_db: ( View: 213 Script: <" bonus bVit,1; - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; "> }, { @@ -43924,7 +43925,7 @@ item_db: ( Loc: 769 Refine: false View: 51 - Script: <" bonus2 bSubRace,RC_Undead,10; "> + Script: <" bonus2 bAddRaceTolerance,RC_Undead,10; "> }, { Id: 5168 @@ -43974,7 +43975,7 @@ item_db: ( View: 224 Script: <" bonus bMdef,1; - bonus2 bSubRace,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; "> }, { @@ -44003,7 +44004,7 @@ item_db: ( Loc: 256 Refine: false View: 226 - Script: <" bonus2 bSubRace,RC_DemiHuman,10; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,10; "> }, { Id: 5173 @@ -44487,7 +44488,7 @@ item_db: ( Upper: 63 Loc: 256 View: 206 - Script: <" bonus2 bSubRace,RC_Demon,5; "> + Script: <" bonus2 bAddRaceTolerance,RC_Demon,5; "> }, { Id: 5203 @@ -44552,7 +44553,7 @@ item_db: ( noselltonpc: true nogstorage: true } - Script: <" bonus2 bSubRace,RC_Plant,3; "> + Script: <" bonus2 bAddRaceTolerance,RC_Plant,3; "> }, { Id: 5207 @@ -44727,7 +44728,7 @@ item_db: ( bonus bMdef,3; bonus bDex,1; bonus bInt,1; - bonus2 bSubRace,RC_Demon,3; + bonus2 bAddRaceTolerance,RC_Demon,3; "> }, { @@ -44751,7 +44752,7 @@ item_db: ( bonus bStr,1; bonus bAgi,1; bonus bFlee,3; - bonus2 bSubRace,RC_Angel,3; + bonus2 bAddRaceTolerance,RC_Angel,3; "> }, { @@ -44832,7 +44833,7 @@ item_db: ( } Script: <" bonus bVit,1; - bonus2 bSubRace,RC_Brute,5; + bonus2 bAddRaceTolerance,RC_Brute,5; "> }, { @@ -45560,7 +45561,7 @@ item_db: ( Script: <" bonus bStr,1; bonus bCritical,3; - bonus2 bSubRace,RC_Angel,-20; + bonus2 bAddRaceTolerance,RC_Angel,-20; if(getrefine()>=6) { bonus bCritical,getrefine()-5; } @@ -45802,7 +45803,7 @@ item_db: ( } Script: <" bonus bMdef,5; - bonus2 bSubRace,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; "> }, { @@ -46126,7 +46127,8 @@ item_db: ( bonus bMaxSP,50; skill TF_DOUBLE,2; bonus bDoubleRate,10; - bonus2 bSubRace,RC_DemiHuman,3; + bonus2 bAddRaceTolerance,RC_DemiHuman,3; + bonus2 bAddRaceTolerance,RC_Brute,3; "> }, { @@ -46321,7 +46323,7 @@ item_db: ( noselltonpc: true nogstorage: true } - Script: <" bonus2 bSubRace,RC_Dragon,5; "> + Script: <" bonus2 bAddRaceTolerance,RC_Dragon,5; "> }, { Id: 5293 @@ -46577,7 +46579,7 @@ item_db: ( nomail: true noauction: true } - Script: <" bonus2 bSubRace,RC_DemiHuman,5; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,5; "> }, { Id: 5307 @@ -46821,7 +46823,13 @@ item_db: ( Upper: 63 Loc: 256 View: 341 - Script: <" bonus bLuk,3; "> + Script: <" + bonus bLuk,3; + bonus2 bAddRaceTolerance,RC_Angel, 5; + bonus2 bAddRace,RC_Angel, 5; + bonus2 bMagicAddRace,RC_Angel,5; + bonus3 bAddMonsterDropItem,12033,RC_Angel,100; + "> }, { Id: 5320 @@ -47215,7 +47223,7 @@ item_db: ( Refine: false View: 354 Script: <" - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; bonus4 bAutoSpellWhenHit,AL_ANGELUS,10,20,0; "> }, @@ -47234,7 +47242,7 @@ item_db: ( Refine: false View: 355 Script: <" - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; bonus bMagicHPGainValue,50; "> }, @@ -47253,7 +47261,7 @@ item_db: ( Refine: false View: 356 Script: <" - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; autobonus "{ bonus bBaseAtk,50; }",20,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; "> }, @@ -47272,7 +47280,7 @@ item_db: ( Refine: false View: 357 Script: <" - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; bonus2 bAddItemHealRate,504,10; bonus2 bAddItemHealRate,547,10; "> @@ -47292,7 +47300,7 @@ item_db: ( Refine: false View: 358 Script: <" - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; autobonus "{ bonus bAspdRate,5; }",20,30000,0,"{ specialeffect2 EF_HASTEUP; }"; "> }, @@ -47311,7 +47319,7 @@ item_db: ( Refine: false View: 359 Script: <" - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; bonus2 bAddRace,RC_Undead,5; bonus2 bMagicAddRace,RC_Undead,5; "> @@ -47409,7 +47417,7 @@ item_db: ( Loc: 256 Refine: false View: 37 - Script: <" bonus2 bSubRace,RC_Insect,10; "> + Script: <" bonus2 bAddRaceTolerance,RC_Insect,10; "> }, { Id: 5352 @@ -47730,7 +47738,7 @@ item_db: ( } Script: <" bonus bMdef,3; - bonus2 bSubRace,RC_Demon,10; + bonus2 bAddRaceTolerance,RC_Demon,10; "> }, { @@ -47940,7 +47948,7 @@ item_db: ( } Script: <" bonus bUnbreakableHelm,0; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; "> }, { @@ -48621,7 +48629,7 @@ item_db: ( Script: <" bonus bMaxHP,100; bonus2 bResEff,Eff_Stun,400; - bonus2 bSubRace,RC_DemiHuman,4; + bonus2 bAddRaceTolerance,RC_DemiHuman,4; "> }, { @@ -48877,7 +48885,7 @@ item_db: ( } Script: <" bonus bDex,3; - bonus2 bSubRace,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; "> }, { @@ -48953,7 +48961,7 @@ item_db: ( nomail: true noauction: true } - Script: <" bonus2 bSubRace,RC_DemiHuman,12; "> + Script: <" bonus2 bAddRaceTolerance,RC_DemiHuman,12; "> }, { Id: 5429 @@ -49105,7 +49113,7 @@ item_db: ( Script: <" bonus bInt,1; bonus bMdef,1; - bonus2 bSubRace,RC_Insect,5; + bonus2 bAddRaceTolerance,RC_Insect,5; "> }, { @@ -50020,7 +50028,7 @@ item_db: ( EquipLv: 60 View: 483 Script: <" - bonus2 bSubRace,RC_Brute,5; + bonus2 bAddRaceTolerance,RC_Brute,5; bonus2 bAddRace,RC_Brute,5; bonus2 bMagicAddRace,RC_Brute,5; "> @@ -50719,7 +50727,7 @@ item_db: ( EquipLv: 50 View: 513 Script: <" - bonus2 bSubRace,RC_DemiHuman,12; + bonus2 bAddRaceTolerance,RC_DemiHuman,12; bonus bBaseAtk,(JobLevel*2)/7; "> }, @@ -51041,7 +51049,7 @@ item_db: ( bonus bVit,1; bonus bDex,1; bonus bMdef,3; - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; bonus2 bAddRace,RC_DemiHuman,3; "> }, @@ -51836,7 +51844,7 @@ item_db: ( Script: <" bonus bVit,2; bonus2 bAddEff,Eff_Stun,500; - bonus2 bSubRace,RC_Brute,-10; + bonus2 bAddRaceTolerance,RC_Brute,-10; "> }, { @@ -52085,7 +52093,7 @@ item_db: ( nogstorage: true } Script: <" - bonus2 bSubRace,RC_Demon,3; + bonus2 bAddRaceTolerance,RC_Demon,3; bonus2 bHPDrainRate,3,15; bonus2 bSPDrainRate,1,7; "> @@ -52252,7 +52260,7 @@ item_db: ( Script: <" bonus bBaseAtk,10; bonus bMatk,10; - bonus2 bSubRace,RC_DemiHuman,3; + bonus2 bAddRaceTolerance,RC_DemiHuman,3; bonus bDelayrate,-3; if(getrefine()>6) { bonus2 bSubEle,Ele_Neutral,5; @@ -53491,8 +53499,8 @@ item_db: ( nogstorage: true } Script: <" - bonus2 bSubRace,RC_Demon,10; - bonus2 bSubRace,RC_Undead,10; + bonus2 bAddRaceTolerance,RC_Demon,10; + bonus2 bAddRaceTolerance,RC_Undead,10; if(getrefine()>=7) autobonus "{ bonus bCritical,30; bonus bHit,10; }",10,10000,0,"{ specialeffect2 EF_ENHANCE; }"; "> }, @@ -55660,8 +55668,8 @@ item_db: ( EquipLv: 45 View: 610 Script: <" - bonus2 bSubRace,RC_Demon,-5; - bonus2 bSubRace,RC_Undead,-5; + bonus2 bAddRaceTolerance,RC_Demon,-5; + bonus2 bAddRaceTolerance,RC_Undead,-5; bonus3 bAutoSpell,MG_COLDBOLT,1,20; "> }, @@ -55695,7 +55703,7 @@ item_db: ( Upper: 63 Loc: 256 View: 669 - Script: <" bonus2 bSubRace,RC_Fish,1; "> + Script: <" bonus2 bAddRaceTolerance,RC_Fish,1; "> }, { Id: 5793 @@ -55854,7 +55862,7 @@ item_db: ( View: 125 Script: <" bonus bUnbreakableHelm,0; - bonus2 bSubRace,RC_DemiHuman,3; + bonus2 bAddRaceTolerance,RC_DemiHuman,3; "> }, { @@ -55870,7 +55878,7 @@ item_db: ( View: 167 Script: <" bonus bAllStats,2; - bonus2 bSubRace,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; if(getskilllv(AL_HEAL)==10) { bonus3 bAutoSpellWhenHit,AL_HEAL,10,20; } @@ -56046,7 +56054,7 @@ item_db: ( Loc: 1 Refine: false View: 25 - Script: <" bonus2 bSubRace,RC_Brute,5; "> + Script: <" bonus2 bAddRaceTolerance,RC_Brute,5; "> }, { Id: 5812 @@ -56268,8 +56276,8 @@ item_db: ( bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; - bonus2 bSubRace,RC_Brute,7; - bonus2 bSubRace,RC_DemiHuman,7; + bonus2 bAddRaceTolerance,RC_Brute,7; + bonus2 bAddRaceTolerance,RC_DemiHuman,7; "> }, { @@ -87020,7 +87028,7 @@ item_db: ( } Script: <" bonus bIgnoreDefRace,RC_DemiHuman; - bonus2 bSubRace,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3; @@ -106667,16 +106675,16 @@ item_db: ( bonus bMdef,10; bonus bStr,1; bonus bInt,1; - bonus2 bSubRace,RC_Demon,10; - bonus2 bSubRace,RC_Undead,10; - bonus2 bSubRace,RC_Formless,-10; - bonus2 bSubRace,RC_Brute,-10; - bonus2 bSubRace,RC_DemiHuman,-10; - bonus2 bSubRace,RC_Plant,-10; - bonus2 bSubRace,RC_Insect,-10; - bonus2 bSubRace,RC_Fish,-10; - bonus2 bSubRace,RC_Angel,-10; - bonus2 bSubRace,RC_Dragon,-10; + bonus2 bAddRaceTolerance,RC_Demon,10; + bonus2 bAddRaceTolerance,RC_Undead,10; + bonus2 bAddRaceTolerance,RC_Formless,-10; + bonus2 bAddRaceTolerance,RC_Brute,-10; + bonus2 bAddRaceTolerance,RC_DemiHuman,-10; + bonus2 bAddRaceTolerance,RC_Plant,-10; + bonus2 bAddRaceTolerance,RC_Insect,-10; + bonus2 bAddRaceTolerance,RC_Fish,-10; + bonus2 bAddRaceTolerance,RC_Angel,-10; + bonus2 bAddRaceTolerance,RC_Dragon,-10; "> }, { @@ -106783,7 +106791,7 @@ item_db: ( Script: <" bonus bMdef,10; bonus bMaxHPrate,getequiprefinerycnt(EQI_ARMOR); - bonus2 bSubRace,RC_DemiHuman,5; + bonus2 bAddRaceTolerance,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5; "> }, @@ -106958,7 +106966,7 @@ item_db: ( EquipLv: 95 Script: <" bonus bMdef,5; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; if(getrefine()>5) { bonus bHealPower2,12; bonus bAddItemHealRate,12; @@ -106983,7 +106991,7 @@ item_db: ( EquipLv: 95 Script: <" bonus bMdef,10; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; if(getrefine()>5) { bonus bFlee2,5; bonus bLongAtkDef,20; @@ -107008,7 +107016,7 @@ item_db: ( EquipLv: 95 Script: <" bonus bMdef,20; - bonus2 bSubRace,RC_DemiHuman,2; + bonus2 bAddRaceTolerance,RC_DemiHuman,2; if(getrefine()>5) { bonus bFlee,5; bonus bLongAtkDef,15; @@ -108637,7 +108645,7 @@ item_db: ( { Id: 16457 AegisName: "Tw_Nov_Scroll" - Name: "±???Â?Â?????" + Name: "±?????????" Type: 2 Buy: 20 Weight: 10 @@ -111806,7 +111814,7 @@ item_db: ( EquipLv: 15 View: 678 Script: <" - bonus2 bSubRace,RC_DemiHuman,10; + bonus2 bAddRaceTolerance,RC_DemiHuman,10; bonus bCritical,10; bonus2 bAddItemHealRate,501,100; bonus2 bAddItemHealRate,504,100; @@ -111990,8 +111998,8 @@ item_db: ( noauction: true } Script: <" - bonus2 bSubRace,RC_Plant,5; - bonus2 bSubRace,RC_Brute,5; + bonus2 bAddRaceTolerance,RC_Plant,5; + bonus2 bAddRaceTolerance,RC_Brute,5; bonus2 bAddRace,RC_Plant,5; bonus2 bAddRace,RC_Brute,5; "> @@ -112214,7 +112222,7 @@ item_db: ( Script: <" bonus bMdef,3; bonus2 bAddRace,RC_Insect,5; - bonus2 bSubRace,RC_Insect,5; + bonus2 bAddRaceTolerance,RC_Insect,5; bonus3 bAddMonsterDropItem,518,RC_Insect,50; "> }, @@ -112551,7 +112559,13 @@ item_db: ( Loc: 256 EquipLv: 10 View: 729 - Script: <" bonus bMdef,3; "> + Script: <" + bonus bMdef,3; + bonus2 bAddRaceTolerance,RC_Dragon,5; + bonus2 bAddRace,RC_Dragon,5; + bonus2 bMagicAddRace,RC_Dragon,5; + bonus3 bAddMonsterDropItem,7444,RC_Dragon,2; + "> }, { Id: 18556 @@ -112636,6 +112650,7 @@ item_db: ( Script: <" bonus bVit,2; bonus bMdef,3; + bonus2 bAddRaceTolerace,RC_DemiHuman,10; "> }, { @@ -113266,11 +113281,11 @@ item_db: ( bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); - bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); + bonus2 AddRaceTolerace,RC_DemiHuman,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; - bonus2 bSubRace,RC_DemiHuman,7; + bonus2 AddRaceTolerace,RC_DemiHuman,7; } "> }, @@ -113288,11 +113303,11 @@ item_db: ( Script: <" bonus bMdef,5; if(getrefine() > 5 && getrefine() <= 12) { - bonus2 bMagicAddRace,RC_DemiHuman,(getrefine() - 5); + bonus2 bAddRaceTolerace,RC_DemiHuman,(getrefine() - 5); bonus2 bMagicAddRace,RC_DemiHuman,(getrefine() - 5); } if(getrefine() > 12) { - bonus2 bMagicAddRace,RC_DemiHuman,7; + bonus2 bAddRaceTolerace,RC_DemiHuman,7; bonus2 bMagicAddRace,RC_DemiHuman,7; } "> @@ -113996,6 +114011,7 @@ item_db: ( Loc: 1 Refine: false View: 801 + Script: <" bonus2 bAddRaceTolerace,RC_Demon,3; "> }, { Id: 18649 @@ -114310,7 +114326,7 @@ item_db: ( EquipLv: 12 Refine: false View: 818 - Script: <" bonus2 bSubRace,RC_DemiHuman,3; "> + Script: <" bonus2 bAddRaceTolerace,RC_DemiHuman,3; "> }, { Id: 18671 @@ -114503,6 +114519,7 @@ item_db: ( Loc: 1 Refine: false View: 829 + Script: <" bonus2 bAddRaceTolerace,RC_Plant,3;"> }, { Id: 18684 @@ -117308,7 +117325,13 @@ item_db: ( Loc: 2048 Refine: false View: 712 - Script: <" bonus bUnbreakableHelm,0; "> + Script: <" + bonus bUnbreakableHelm,0; + bonus2 bAddRaceTolerace,RC_Angel,1; + bonus2 bAddRaceTolerace,RC_Demon,1; + bonus3 bAddMonsterDropItem,523,RC_Angel,400; + bonus3 bAddMonsterDropItem,12020,RC_Demon,400; + "> }, { Id: 19543 diff --git a/doc/item_bonus.txt b/doc/item_bonus.txt index 1f96362d1..c93149b1c 100644 --- a/doc/item_bonus.txt +++ b/doc/item_bonus.txt @@ -415,4 +415,8 @@ bonus2 bSkillVariableCast,s,x; Increases variable cast time of skill s by x mil bonus2 bVariableCastrate,s,x; Increases variable 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,r,n,t,y; Set DEF to y of an enemy of race r at n% for t milliseconds with normal attack -bonus4 bSetMDefRace,r,n,t,y; Set MDEF to y of an enemy of race r at n% for t milliseconds with normal attack
\ No newline at end of file +bonus4 bSetMDefRace,r,n,t,y; Set MDEF to y of an enemy of race r at n% for t milliseconds with normal attack +bonus2 bAddRaceTolerance,n,x; Add x% tolerance against race n (Renewal Only) + n: 0=Formless, 1=Undead, 2=Brute, 3=Plant, 4=Insect, + 5=Fish, 6=Demon, 7=Demi-Human, 8=Angel, 9=Dragon, + 10=Boss monster, 11=Other than (normal monster) boss monster
\ No newline at end of file diff --git a/src/map/battle.c b/src/map/battle.c index b2ee9cf1d..e4f4e6679 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -421,41 +421,47 @@ int64 battle_calc_weapon_damage(struct block_list *src, struct block_list *bl, u damage = status->get_weapon_atk(src, watk, flag); - if( sd ){ - if( type == EQI_HAND_R ) - damage = battle->calc_sizefix(sd, damage, EQI_HAND_R, size, flag&8); + if ( sd ) { + if ( type == EQI_HAND_R ) + damage = battle->calc_sizefix(sd, damage, EQI_HAND_R, size, flag & 8); else - damage = battle->calc_sizefix(sd, damage, EQI_HAND_L, size, flag&8); + damage = battle->calc_sizefix(sd, damage, EQI_HAND_L, size, flag & 8); - if( flag&2 && sd->bonus.arrow_atk ) + if ( flag & 2 && sd->bonus.arrow_atk ) damage += sd->bonus.arrow_atk; - if( sd->battle_status.equip_atk != 0 ) + if ( sd->battle_status.equip_atk != 0 ) eatk = sd->base_status.equip_atk; + + if ( sd->bonus.atk_rate ) + damage += damage * sd->bonus.atk_rate / 100; } if ( skill_id == TF_POISON ) eatk += 15 * skill_lv; + if ( skill_id != ASC_METEORASSAULT ) { + if ( sc && sc->data[SC_SUB_WEAPONPROPERTY] ) // Temporary. [malufett] + damage += damage * sc->data[SC_SUB_WEAPONPROPERTY]->val2 / 100; + } + if( sc && sc->count ){ if( sc->data[SC_ZENKAI] && watk->ele == sc->data[SC_ZENKAI]->val2 ) eatk += 200; + } + #ifdef RENEWAL_EDP - if( sc->data[SC_EDP] && skill_id != AS_GRIMTOOTH && skill_id != AS_VENOMKNIFE && skill_id != ASC_BREAKER ){ - eatk = eatk * (sc->data[SC_EDP]->val4 / 100 - 1); - damage = damage * (sc->data[SC_EDP]->val4 / 100); - } + if ( sc && sc->data[SC_EDP] && skill_id != AS_GRIMTOOTH && skill_id != AS_VENOMKNIFE && skill_id != ASC_BREAKER ) { + struct status_data *tstatus; + tstatus = status->get_status_data(bl); + eatk += damage * 0x19 * battle->attr_fix_table[tstatus->ele_lv - 1][ELE_POISON][tstatus->def_ele] / 10000; + damage += (eatk + damage) * sc->data[SC_EDP]->val3 / 100 + eatk; + } else /* fall through */ #endif - } - - if( skill_id != ASC_METEORASSAULT ){ - if( sc && sc->data[SC_SUB_WEAPONPROPERTY] ) // Temporary. [malufett] - damage += damage * sc->data[SC_SUB_WEAPONPROPERTY]->val2 / 100; - } - - // Temporary. [malufett] - damage = battle->calc_elefix(src, bl, skill_id, skill_lv, damage + eatk, nk, n_ele, s_ele, s_ele_, type == EQI_HAND_L, flag); - + damage += eatk; + + damage = battle->calc_elefix(src, bl, skill_id, skill_lv, damage, nk, n_ele, s_ele, s_ele_, type == EQI_HAND_L, flag); + /** * In RE Shield Boomerang takes weapon element only for damage calculation, * - resist calculation is always against neutral @@ -896,6 +902,42 @@ int64 battle_calc_elefix(struct block_list *src, struct block_list *target, uint #endif return damage; } +int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64 damage, int s_ele, int nk, int flag) { +#ifdef RENEWAL + struct map_session_data *sd, *tsd; + struct status_data *sstatus; + struct status_data *tstatus; + + if ( !damage ) + return 0; + + nullpo_ret(bl); + nullpo_ret(src); + + sd = BL_CAST(BL_PC, src); + tsd = BL_CAST(BL_PC, bl); + sstatus = status->get_status_data(src); + tstatus = status->get_status_data(bl); + + if ( tsd ) { + if ( !(nk&NK_NO_CARDFIX_ATK) ) { + // RaceAddTolerance + damage -= damage * tsd->race_tolerance[sstatus->race] / 100; + damage -= damage * tsd->race_tolerance[is_boss(src) ? RC_BOSS : RC_NONBOSS] / 100; + if ( sstatus->race != RC_DEMIHUMAN ) + damage -= damage *tsd->race_tolerance[RC_NONDEMIHUMAN] / 100; + if ( flag&BF_SHORT ) + damage -= damage * tsd->bonus.near_attack_def_rate / 100; + else // SubRangeAttackDamage or bLongAtkDef + damage -= damage * tsd->bonus.long_attack_def_rate / 100; + } + if ( flag&BF_LONG && tsd->sc.data[SC_GS_ADJUSTMENT] ) { + damage -= 20 * damage / 100; + } + } +#endif + return damage; +} /*========================================== * Calculates card bonuses damage adjustments. * cflag(cardfix flag): @@ -904,7 +946,13 @@ int64 battle_calc_elefix(struct block_list *src, struct block_list *target, uint *------------------------------------------*/ int64 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 cflag, int wflag){ struct map_session_data *sd, *tsd; - short cardfix = 1000, t_class, s_class, s_race2, t_race2; + short cardfix = +#ifdef RENEWAL + 100; +#else + 1000; +#endif + short t_class, s_class, s_race2, t_race2; struct status_data *sstatus, *tstatus; int i; @@ -937,8 +985,6 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_ break; } } - if (cardfix != 1000) - damage = damage * cardfix / 1000; } if( tsd && !(nk&NK_NO_CARDFIX_DEF) ) @@ -982,16 +1028,25 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_ if( tsd->sc.data[SC_PROTECT_MDEF] ) cardfix = cardfix * ( 100 - tsd->sc.data[SC_PROTECT_MDEF]->val1 ) / 100; - - if( cardfix != 1000 ) - damage = damage * cardfix / 1000; } +#ifdef RENEWAL + if ( cardfix != 100 ) + damage += damage * (cardfix - 100) / 100; +#else + if ( cardfix != 1000 ) + damage = damage * cardfix / 1000; +#endif break; case BF_WEAPON: t_race2 = status->get_race2(target); if( cflag&2 ){ if( sd && !(nk&NK_NO_CARDFIX_ATK) ){ - short cardfix_ = 1000; + short cardfix_ = +#ifdef RENEWAL + 100; +#else + 1000; +#endif if( sd->state.arrow_atk ){ cardfix = cardfix * (100 + sd->right_weapon.addrace[tstatus->race] + sd->arrow_addrace[tstatus->race]) / 100; if( !(nk&NK_NO_ELEFIX) ){ @@ -1099,11 +1154,16 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_ #ifndef RENEWAL if( wflag&BF_LONG ) cardfix = cardfix * (100 + sd->bonus.long_attack_atk_rate) / 100; -#endif if( (cflag&1) && cardfix_ != 1000 ) damage = damage * cardfix_ / 1000; else if( cardfix != 1000 ) damage = damage * cardfix / 1000; +#else + if ( (cflag & 1) && cardfix_ != 100 ) + damage += damage * (cardfix - 100) / 100; + else if ( cardfix != 100 ) + damage += damage * (cardfix - 100) / 100; +#endif } }else{ // Target side @@ -1138,7 +1198,7 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_ cardfix = cardfix * (100-tsd->subrace[sstatus->race]) / 100; cardfix = cardfix * (100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS]) / 100; if( sstatus->race != RC_DEMIHUMAN ) - cardfix = cardfix * (100-tsd->subrace[RC_NONDEMIHUMAN]) / 100; + cardfix = cardfix * (100 - tsd->subrace[RC_NONDEMIHUMAN]) / 100; for( i = 0; i < ARRAYLENGTH(tsd->add_def) && tsd->add_def[i].rate;i++ ){ if( tsd->add_def[i].class_ == s_class ) @@ -1147,52 +1207,61 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_ break; } } - +#ifndef RENEWAL if( wflag&BF_SHORT ) cardfix = cardfix * (100 - tsd->bonus.near_attack_def_rate) / 100; else // BF_LONG (there's no other choice) cardfix = cardfix * (100 - tsd->bonus.long_attack_def_rate) / 100; - +#endif if( tsd->sc.data[SC_PROTECT_DEF] ) cardfix = cardfix * (100 - tsd->sc.data[SC_PROTECT_DEF]->val1) / 100; - +#ifdef RENEWAL + if ( cardfix != 100 ) + damage += damage * (cardfix - 100) / 100; +#else if( cardfix != 1000 ) damage = damage * cardfix / 1000; +#endif } } break; case BF_MISC: - if( tsd && !(nk&NK_NO_CARDFIX_DEF) ){ - // misc damage reduction from equipment - if (!(nk&NK_NO_ELEFIX)) + if ( tsd && !(nk&NK_NO_CARDFIX_DEF) ) { + // misc damage reduction from equipment +#ifndef RENEWAL + if ( !(nk&NK_NO_ELEFIX) ) { int ele_fix = tsd->subele[s_ele]; for (i = 0; ARRAYLENGTH(tsd->subele2) > i && tsd->subele2[i].rate != 0; i++) { if(tsd->subele2[i].ele != s_ele) continue; if(!(tsd->subele2[i].flag&wflag&BF_WEAPONMASK && - tsd->subele2[i].flag&wflag&BF_RANGEMASK && - tsd->subele2[i].flag&wflag&BF_SKILLMASK)) + tsd->subele2[i].flag&wflag&BF_RANGEMASK && + tsd->subele2[i].flag&wflag&BF_SKILLMASK)) continue; ele_fix += tsd->subele2[i].rate; } cardfix = cardfix * (100 - ele_fix) / 100; } - cardfix = cardfix*(100-tsd->subsize[sstatus->size]) / 100; - cardfix = cardfix*(100-tsd->subrace2[s_race2]) / 100; cardfix = cardfix*(100-tsd->subrace[sstatus->race]) / 100; cardfix = cardfix*(100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS]) / 100; if( sstatus->race != RC_DEMIHUMAN ) cardfix = cardfix * (100 - tsd->subrace[RC_NONDEMIHUMAN]) / 100; - - cardfix = cardfix * ( 100 - tsd->bonus.misc_def_rate ) / 100; if( wflag&BF_SHORT ) cardfix = cardfix * ( 100 - tsd->bonus.near_attack_def_rate ) / 100; else // BF_LONG (there's no other choice) cardfix = cardfix * ( 100 - tsd->bonus.long_attack_def_rate ) / 100; - - if (cardfix != 1000) +#endif + cardfix = cardfix*(100 - tsd->subsize[sstatus->size]) / 100; + cardfix = cardfix*(100 - tsd->subrace2[s_race2]) / 100; + cardfix = cardfix * (100 - tsd->bonus.misc_def_rate) / 100; +#ifdef RENEWAL + if ( cardfix != 100 ) + damage += damage * (cardfix - 100) / 100; +#else + if ( cardfix != 1000 ) damage = damage * cardfix / 1000; +#endif } break; } @@ -1244,21 +1313,26 @@ int64 battle_calc_defense(int attack_type, struct block_list *src, struct block_ #endif if ( sd ) { + if ( sd->charm_type == CHARM_TYPE_LAND && sd->charm_count > 0 ) // hidden from status window + def1 += 10 * def1 * sd->charm_count / 100; + i = sd->ignore_def[is_boss(target) ? RC_BOSS : RC_NONBOSS]; i += sd->ignore_def[tstatus->race]; if ( i ) { if ( i > 100 ) i = 100; def1 -= def1 * i / 100; +#ifndef RENEWAL def2 -= def2 * i / 100; +#endif } - if (sd->charm_type == CHARM_TYPE_LAND && sd->charm_count > 0 ) // hidden from status window - def1 += 10 * def1 * sd->charm_count / 100; } if( sc && sc->data[SC_EXPIATIO] ){ i = 5 * sc->data[SC_EXPIATIO]->val1; // 5% per level def1 -= def1 * i / 100; +#ifndef RENEWAL def2 -= def2 * i / 100; +#endif } if( battle_config.vit_penalty_type && battle_config.vit_penalty_target&target->type ) { @@ -2920,11 +2994,11 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if(sc->data[SC_DEFENDER] && ((flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON) || skill_id == CR_ACIDDEMONSTRATION)) damage = damage * ( 100 - sc->data[SC_DEFENDER]->val2 ) / 100; - +#ifndef RENEWAL if(sc->data[SC_GS_ADJUSTMENT] && (flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON)) damage -= damage * 20 / 100; - +#endif if(sc->data[SC_FOGWALL]) { if(flag&BF_SKILL) { //25% reduction if ( !(skill->get_inf(skill_id)&INF_GROUND_SKILL) && !(skill->get_nk(skill_id)&NK_SPLASH) ) @@ -3500,7 +3574,10 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list break; default: { MATK_ADD( status->get_matk(src, 2) ); - +#ifdef RENEWAL + ad.damage = battle->calc_cardfix(BF_MAGIC, src, target, nk, s_ele, 0, ad.damage, 0, ad.flag); + ad.damage = battle->calc_cardfix2(src, target, ad.damage, s_ele, nk, ad.flag); +#endif if (nk&NK_SPLASHSPLIT) { // Divide MATK in case of multiple targets skill if(mflag>0) ad.damage/= mflag; @@ -3554,9 +3631,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list } } #endif -#ifdef RENEWAL - ad.damage = battle->calc_cardfix(BF_MAGIC, src, target, nk, s_ele, 0, ad.damage, 0, ad.flag); -#endif if(sd) { uint16 rskill;/* redirect skill */ //Damage bonuses @@ -3866,10 +3940,11 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * int ratio = 300 + 50 * skill_lv; int64 matk = battle->calc_magic_attack(src, target, skill_id, skill_lv, mflag).damage; short totaldef = status->get_total_def(target) + status->get_total_mdef(target); - int64 atk = battle->calc_base_damage(src, target, skill_id, skill_lv, nk, false, s_ele, ELE_NEUTRAL, EQI_HAND_R, (sc && sc->data[SC_MAXIMIZEPOWER]?1:0)|(sc && sc->data[SC_WEAPONPERFECT]?8:0), md.flag); - + int64 atk = battle->calc_base_damage(src, target, skill_id, skill_lv, nk, false, s_ele, ELE_NEUTRAL, EQI_HAND_R, (sc && sc->data[SC_MAXIMIZEPOWER] ? 1 : 0) | (sc && sc->data[SC_WEAPONPERFECT] ? 8 : 0), md.flag); +#ifdef RENEWAL_EDP if( sc && sc->data[SC_EDP] ) ratio >>= 1; +#endif md.damage = (matk + atk) * ratio / 100; md.damage -= totaldef; #endif @@ -4030,6 +4105,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } #endif md.damage = battle->calc_cardfix(BF_MISC, src, target, nk, s_ele, 0, md.damage, 0, md.flag); + md.damage = battle->calc_cardfix2(src, target, md.damage, s_ele, nk, md.flag); if(skill_id){ uint16 rskill;/* redirect skill id */ switch(skill_id){ @@ -4712,9 +4788,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list #ifdef RENEWAL GET_NORMAL_ATTACK( i ); wd.damage = battle->calc_masteryfix(src, target, skill_id, skill_lv, wd.damage, wd.div_, 0, flag.weapon); + wd.damage = battle->calc_cardfix2(src, target, wd.damage, s_ele, nk, wd.flag); if (flag.lh){ GET_NORMAL_ATTACK2( i ); wd.damage2 = battle->calc_masteryfix(src, target, skill_id, skill_lv, wd.damage2, wd.div_, 1, flag.weapon); + wd.damage2 = battle->calc_cardfix2(src, target, wd.damage2, s_ele, nk, wd.flag); } #else wd.damage = battle->calc_base_damage2(sstatus, &sstatus->rhw, sc, tstatus->size, sd, i); @@ -4730,8 +4808,10 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list //Add any bonuses that modify the base baseatk+watk (pre-skills) if(sd) { +#ifndef RENEWAL if (sd->bonus.atk_rate) ATK_ADDRATE(sd->bonus.atk_rate); +#endif if(flag.cri && sd->bonus.crit_atk_rate) ATK_ADDRATE(sd->bonus.crit_atk_rate); if(flag.cri && sc && sc->data[SC_MTF_CRIDAMAGE]) @@ -4818,6 +4898,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list ATK_RATE(85); } wd.damage = battle->calc_masteryfix(src, target, skill_id, skill_lv, wd.damage, wd.div_, 0, flag.weapon); + wd.damage = battle->calc_cardfix2(src, target, wd.damage, s_ele, nk, wd.flag); } /* Fall through */ #endif @@ -4886,11 +4967,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list } break; case SR_GATEOFHELL: - ATK_ADD (sstatus->max_hp - status_get_hp(src)); - if(sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == SR_FALLENEMPIRE) { - ATK_ADD( (sstatus->max_sp * (1 + skill_lv * 2 / 10)) + 40 * status->get_lv(src) ); + ATK_ADD(sstatus->max_hp - status_get_hp(src)); + if ( sc && sc->data[SC_COMBOATTACK] && sc->data[SC_COMBOATTACK]->val1 == SR_FALLENEMPIRE ) { + ATK_ADD((sstatus->max_sp * (1 + skill_lv * 2 / 10)) + 40 * status->get_lv(src)); } else { - ATK_ADD( (sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status->get_lv(src) ); + ATK_ADD((sstatus->sp * (1 + skill_lv * 2 / 10)) + 10 * status->get_lv(src)); } break; case SR_FALLENEMPIRE:// [(Target Size value + Skill Level - 1) x Caster STR] + [(Target current weight x Caster DEX / 120)] @@ -5064,6 +5145,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list #ifdef RENEWAL //Div fix. damage_div_fix(wd.damage, wd.div_); + if ( skill_id > 0 && skill->get_ele(skill_id, skill_lv) == ELE_NEUTRAL ) { // re-evaluate forced neutral skills + wd.damage = battle->attr_fix(src, target, wd.damage, s_ele_, tstatus->def_ele, tstatus->ele_lv); + if ( flag.lh ) + wd.damage2 = battle->attr_fix(src, target, wd.damage2, s_ele_, tstatus->def_ele, tstatus->ele_lv); + } #endif #if 0 // Can't find any source about this one even in eagis if (skill_id == NPC_EARTHQUAKE) { @@ -5188,10 +5274,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list } } #endif - //Card Fix, tsd side - if(tsd){ //if player on player then it was already measured above - wd.damage = battle->calc_cardfix(BF_WEAPON, src, target, nk, s_ele, s_ele_, wd.damage, (flag.lh?1:0), wd.flag); - } + if( flag.infdef ) { //Plants receive 1 damage when hit short class_ = status->get_class(target); if( flag.hit || wd.damage > 0 ) @@ -7287,6 +7370,7 @@ void battle_defaults(void) { battle->attr_ratio = battle_attr_ratio; battle->attr_fix = battle_attr_fix; battle->calc_cardfix = battle_calc_cardfix; + battle->calc_cardfix2 = battle_calc_cardfix2; battle->calc_elefix = battle_calc_elefix; battle->calc_masteryfix = battle_calc_masteryfix; battle->calc_chorusbonus = battle_calc_chorusbonus; diff --git a/src/map/battle.h b/src/map/battle.h index 233c325cf..b3437dbc3 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -558,6 +558,7 @@ struct battle_interface { int64 (*attr_fix) (struct block_list *src, struct block_list *target, int64 damage, int atk_elem, int def_type, int def_lv); /* applies card modifiers */ int64 (*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); + int64 (*calc_cardfix2) (struct block_list *src, struct block_list *bl, int64 damage, int s_ele, int nk, int flag); /* applies element modifiers */ int64 (*calc_elefix) (struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int64 damage, int nk, int n_ele, int s_ele, int s_ele_, bool left, int flag); /* applies mastery modifiers */ diff --git a/src/map/map.h b/src/map/map.h index 26aac7720..3960a64b4 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -425,6 +425,7 @@ enum status_point_types { 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_SET_DEF_RACE,SP_SET_MDEF_RACE, //2059-2060 + SP_RACE_TOLERANCE, //2061 /* must be the last, plugins add bonuses from this value onwards */ SP_LAST_KNOWN, diff --git a/src/map/pc.c b/src/map/pc.c index 3d5e240f8..f28a4cfdd 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3354,6 +3354,12 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val) if (sd->state.lr_flag != 2) pc->bonus_item_drop(sd->add_drop, ARRAYLENGTH(sd->add_drop), 0, val, 1<<type2, 10000); break; +#ifdef RENEWAL + case SP_RACE_TOLERANCE: + if ( sd->state.lr_flag != 2 ) + sd->race_tolerance[type2] += val; + break; +#endif default: ShowWarning("pc_bonus2: unknown type %d %d %d!\n",type,type2,val); break; diff --git a/src/map/pc.h b/src/map/pc.h index 56380447e..9e9aa4673 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -285,6 +285,9 @@ struct map_session_data { short sp_gain_race[RC_MAX]; short sp_gain_race_attack[RC_MAX]; short hp_gain_race_attack[RC_MAX]; +#ifdef RENEWAL + int race_tolerance[RC_MAX]; +#endif // zeroed arrays end here. // zeroed structures start here struct s_autospell autospell[15], autospell2[15], autospell3[15]; diff --git a/src/map/status.c b/src/map/status.c index 7985e58c6..b278324b0 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1049,11 +1049,6 @@ void initChangeTables(void) { status->DisplayType[SC_STRANGELIGHTS] = true; status->DisplayType[SC_DECORATION_OF_MUSIC] = true; -#ifdef RENEWAL_EDP - // renewal EDP increases your weapon atk - status->ChangeFlagTable[SC_EDP] |= SCB_WATK; -#endif - if( !battle_config.display_hallucination ) //Disable Hallucination. status->IconChangeTable[SC_ILLUSION] = SI_BLANK; #undef add_sc @@ -2236,6 +2231,9 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) { + sizeof(sd->sp_gain_race) + sizeof(sd->sp_gain_race_attack) + sizeof(sd->hp_gain_race_attack) +#ifdef RENEWAL + + sizeof(sd->race_tolerance) +#endif ); memset (&sd->right_weapon.overrefine, 0, sizeof(sd->right_weapon) - sizeof(sd->right_weapon.atkmods)); @@ -2930,7 +2928,11 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) { sd->right_weapon.addrace[RC_DRAGON]+=skill_lv; sd->left_weapon.addrace[RC_DRAGON]+=skill_lv; sd->magic_addrace[RC_DRAGON]+=skill_lv; +#ifdef RENEWAL + sd->race_tolerance[RC_DRAGON] += skill_lv; +#else sd->subrace[RC_DRAGON]+=skill_lv; +#endif } if( (skill_lv = pc->checkskill(sd, AB_EUCHARISTICA)) > 0 ) { @@ -2940,7 +2942,11 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) { sd->left_weapon.addele[ELE_DARK] += skill_lv; sd->magic_addrace[RC_DEMON] += skill_lv; sd->magic_addele[ELE_DARK] += skill_lv; +#ifdef RENEWAL + sd->race_tolerance[RC_DEMON] += skill_lv; +#else sd->subrace[RC_DEMON] += skill_lv; +#endif sd->subele[ELE_DARK] += skill_lv; } @@ -2963,7 +2969,11 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) { } if(sc->data[SC_PROVIDENCE]){ sd->subele[ELE_HOLY] += sc->data[SC_PROVIDENCE]->val2; +#ifdef RENEWAL + sd->race_tolerance[RC_DEMON] += sc->data[SC_PROVIDENCE]->val2; +#else sd->subrace[RC_DEMON] += sc->data[SC_PROVIDENCE]->val2; +#endif } if(sc->data[SC_ARMORPROPERTY]) { //This status change should grant card-type elemental resist. @@ -7639,11 +7649,13 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t tick = -1; // duration sent to the client should be infinite break; case SC_EDP: // [Celest] - val2 = val1 + 2; //Chance to Poison enemies. - val3 = 50*(val1+1); //Damage increase (+50 +50*lv%) - #ifdef RENEWAL_EDP - val4 = 100 * ((val1 + 1)/2 + 2); - #endif + //Chance to Poison enemies. +#ifdef RENEWAL_EDP + val2 = ((val1 + 1) / 2 + 2); +#else + val2 = val1 + 2; +#endif + val3 = 50 * (val1 + 1); //Damage increase (+50 +50*lv%) if( sd )//[Ind] - iROwiki says each level increases its duration by 3 seconds tick += pc->checkskill(sd,GC_RESEARCHNEWPOISON)*3000; break; |