summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/battle/skill.conf3
-rw-r--r--db/const.txt1
-rw-r--r--db/pet_db.txt6
-rw-r--r--db/re/item_db.conf339
-rw-r--r--doc/item_bonus.txt6
-rw-r--r--src/map/battle.c206
-rw-r--r--src/map/battle.h1
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/pc.c6
-rw-r--r--src/map/pc.h3
-rw-r--r--src/map/status.c32
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;