summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDastgir <dastgir@users.noreply.github.com>2015-06-12 20:03:10 +0530
committerDastgir <dastgir@users.noreply.github.com>2015-06-12 20:03:10 +0530
commita989eeeba89436dbf088ed115e18228e4a43a117 (patch)
tree30f0e20ade2caa43496e1b4d4a847b28239ae3c9
parent64dfaf2c8c8be7ff288ea88a64eddfeae1e364a4 (diff)
parent46c11b354fbc9e4f2d581142691b926d81e77c0d (diff)
downloadhercules-a989eeeba89436dbf088ed115e18228e4a43a117.tar.gz
hercules-a989eeeba89436dbf088ed115e18228e4a43a117.tar.bz2
hercules-a989eeeba89436dbf088ed115e18228e4a43a117.tar.xz
hercules-a989eeeba89436dbf088ed115e18228e4a43a117.zip
Merge pull request #535 from dastgir/RC_Player
RC_Player,RC_DemiPlayer,RC_NonDemiPlayer,RC_All and Ele_All implemented
-rw-r--r--db/const.txt12
-rw-r--r--db/pet_db.txt8
-rw-r--r--db/pre-re/item_combo_db.txt18
-rw-r--r--db/pre-re/item_db.conf550
-rw-r--r--src/map/battle.c24
-rw-r--r--src/map/map.h10
-rw-r--r--src/map/pc.c506
-rw-r--r--src/map/status.c4
8 files changed, 735 insertions, 397 deletions
diff --git a/db/const.txt b/db/const.txt
index 0fec098ef..950bf8ceb 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -657,6 +657,7 @@ Ele_Holy 6
Ele_Dark 7
Ele_Ghost 8
Ele_Undead 9
+Ele_All 255
RC_Formless 0
RC_Undead 1
@@ -668,9 +669,14 @@ RC_Demon 6
RC_DemiHuman 7
RC_Angel 8
RC_Dragon 9
-RC_Boss 10
-RC_NonBoss 11
-RC_NonDemiHuman 12
+RC_Player 10
+RC_Boss 11
+RC_NonBoss 12
+RC_NonDemiHuman 14
+RC_NonPlayer 15
+RC_DemiPlayer 16
+RC_NonDemiPlayer 17
+RC_All 255
RC2_None 0
RC2_Goblin 1
diff --git a/db/pet_db.txt b/db/pet_db.txt
index f3f574718..37401dca4 100644
--- a/db/pet_db.txt
+++ b/db/pet_db.txt
@@ -76,13 +76,13 @@
1109,DEVIRUCHI,Deviruchi,641,9023,10004,711,80,60,10,100,250,20,500,150,0,0,800,200,100,{ petskillbonus bAgiDexStr,6,20,40; },{ bonus bMatkRate,1; bonus bAtkRate,1; bonus bMaxHPrate,-3; bonus bMaxSPrate,-3; }
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; if (RENEWAL) { bonus2 bAddRaceTolerance,RC_DemiHuman,1; } else { bonus2 bSubRace,RC_DemiHuman,1; } }
+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_DemiPlayer,2; bonus2 bMagicAddRace,RC_DemiPlayer,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; if (RENEWAL) { bonus2 bAddRaceTolerance,RC_DemiPlayer,1; } else { bonus2 bSubRace,RC_DemiPlayer,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; if (RENEWAL) { bonus2 bAddRaceTolerance,RC_DemiHuman,1; } else { 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 (RENEWAL) { bonus2 bAddRaceTolerance,RC_DemiPlayer,1; } else { bonus2 bSubRace,RC_DemiPlayer,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; },{}
@@ -98,7 +98,7 @@
1143,MARIONETTE,Marionette,12361,9043,10025,6098,80,60,10,100,250,20,500,150,0,0,300,300,800,{},{ bonus bSPrecovRate,3; }
1148,MEDUSA,Medusa,12368,9050,10032,6108,80,60,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus bVit,1; bonus2 bResEff,Eff_Stone,500; }
1179,WHISPER,Whisper,12363,9045,10027,6100,80,60,20,100,250,20,500,150,0,0,300,300,800,{},{ bonus bFlee,7; bonus bDef,-3; }
-1299,GOBLIN_LEADER,Goblin Leader,12364,9046,10028,6104,80,60,10,100,250,20,50,150,0,0,300,300,800,{},{ bonus2 bAddRace,RC_DemiHuman,3; }
+1299,GOBLIN_LEADER,Goblin Leader,12364,9046,10028,6104,80,60,10,100,250,20,50,150,0,0,300,300,800,{},{ bonus2 bAddRace,RC_DemiPlayer,3; }
1370,SUCCUBUS,Succubus,12373,9055,10037,6113,80,60,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus2 bHPDrainRate,50,5; }
1374,INCUBUS,Incubus,12370,9052,10034,6110,80,60,10,100,250,20,50,150,0,0,300,300,800,{},{ bonus bMaxSPrate,3; }
1379,NIGHTMARE_TERROR,Nightmare Terror,12372,9054,10036,6112,80,60,10,100,250,20,200,150,0,0,300,300,800,{},{ bonus2 bResEff,Eff_Sleep,10000; }
diff --git a/db/pre-re/item_combo_db.txt b/db/pre-re/item_combo_db.txt
index 2c7b3cc81..5177d339c 100644
--- a/db/pre-re/item_combo_db.txt
+++ b/db/pre-re/item_combo_db.txt
@@ -64,18 +64,18 @@
2357:2421:2524:5171,{ bonus bAllStats,1; }
2358:5153,{ bonus bLuk,6; bonus bFlee,5; bonus bInt,2; }
2359:2654,{ bonus bUseSPrate,-20; bonus bMaxHP,300; }
-//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
+//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiPlayer,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
2374:2729,{ bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; }
2375:2729,{ bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; }
-2376:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bVit,3; bonus bMaxHPrate,12; bonus bHealPower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2377:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bStr,3; bonus bMaxHPrate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
-2378:2435:2538,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bAgi,3; bonus bMaxHPrate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2379:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bInt,3; bonus bMaxHPrate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2380:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bInt,3; bonus bMaxHPrate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2381:2436:2539,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bDex,3; bonus bMaxHPrate,12; bonus bLongAtkDef,10; bonus bDelayrate,-25; }
-2382:2437:2540,{ bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bDex,3; bonus bMaxHPrate,12; bonus bLongAtkDef,10; bonus bDelayrate,-25; }
+2376:2435:2538,{ bonus2 bSubRace,RC_NonDemiPlayer,-300; bonus bVit,3; bonus bMaxHPrate,12; bonus bHealPower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2377:2435:2538,{ bonus2 bSubRace,RC_NonDemiPlayer,-300; bonus bStr,3; bonus bMaxHPrate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }
+2378:2435:2538,{ bonus2 bSubRace,RC_NonDemiPlayer,-300; bonus bAgi,3; bonus bMaxHPrate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2379:2436:2539,{ bonus2 bSubRace,RC_NonDemiPlayer,-300; bonus bInt,3; bonus bMaxHPrate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2380:2436:2539,{ bonus2 bSubRace,RC_NonDemiPlayer,-300; bonus bInt,3; bonus bMaxHPrate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2381:2436:2539,{ bonus2 bSubRace,RC_NonDemiPlayer,-300; bonus bDex,3; bonus bMaxHPrate,12; bonus bLongAtkDef,10; bonus bDelayrate,-25; }
+2382:2437:2540,{ bonus2 bSubRace,RC_NonDemiPlayer,-300; bonus bDex,3; bonus bMaxHPrate,12; bonus bLongAtkDef,10; bonus bDelayrate,-25; }
2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bCastrate,-3; bonus bDelayrate,-15; }
2390:2749,{ bonus bFlee2,5; }
2394:2444:2549,{ bonus2 bAddRace,RC_NonBoss,5; bonus2 bAddRace,RC_Boss,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
@@ -150,7 +150,7 @@
4268:4277,{ bonus bBaseAtk,20; bonus bLuk,3; }
4311:4319:4331:4371,{ bonus bInt,1; bonus bStr,1; bonus bDef,2; bonus bSPrecovRate,10; bonus2 bSkillAtk,"PA_SHIELDCHAIN",10; bonus2 bSkillAtk,"PA_SACRIFICE",10; bonus bCastrate,-10; if(BaseJob==Job_Crusader) bonus bDefEle,Ele_Holy; }
4323:4324,{ bonus3 bAutoSpell,"MG_FROSTDIVER",3,250; }
-4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; }
+4435:4436,{ bonus2 bSPGainRace,RC_DemiPlayer,2; }
5040:5442,{ bonus bAspdRate,3; bonus bCastrate,3; }
5068:5653,{ bonus bStr,1; bonus bAtkRate,5; }
5074:5653,{ bonus bStr,1; bonus bAspdRate,2; }
diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf
index 65044a647..4d45931c3 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -4866,7 +4866,7 @@ item_db: (
Script: <"
skill TF_DOUBLE,5;
bonus bDoubleRate,25;
- bonus2 bAddRace,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,5;
">
},
{
@@ -5557,9 +5557,9 @@ item_db: (
EquipLv: 48
View: 3
Script: <"
- bonus bIgnoreDefRace,RC_DemiHuman;
- bonus2 bAddRace,RC_DemiHuman,20;
- bonus2 bSubRace,RC_DemiHuman,-10;
+ bonus bIgnoreDefRace,RC_DemiPlayer;
+ bonus2 bAddRace,RC_DemiPlayer,20;
+ bonus2 bSubRace,RC_DemiPlayer,-10;
bonus bAtkEle,Ele_Dark;
">
},
@@ -5658,9 +5658,9 @@ item_db: (
Refine: false
View: 3
Script: <"
- bonus bIgnoreDefRace,RC_DemiHuman;
- bonus2 bAddRace,RC_DemiHuman,20;
- bonus2 bSubRace,RC_DemiHuman,-10;
+ bonus bIgnoreDefRace,RC_DemiPlayer;
+ bonus2 bAddRace,RC_DemiPlayer,20;
+ bonus2 bSubRace,RC_DemiPlayer,-10;
bonus bAtkEle,Ele_Dark;
">
},
@@ -5770,9 +5770,9 @@ item_db: (
EquipLv: 48
View: 3
Script: <"
- bonus bIgnoreDefRace,RC_DemiHuman;
- bonus2 bAddRace,RC_DemiHuman,20;
- bonus2 bSubRace,RC_DemiHuman,-10;
+ bonus bIgnoreDefRace,RC_DemiPlayer;
+ bonus2 bAddRace,RC_DemiPlayer,20;
+ bonus2 bSubRace,RC_DemiPlayer,-10;
bonus bAtkEle,Ele_Dark;
">
},
@@ -5866,8 +5866,8 @@ item_db: (
}
Script: <"
bonus bStr,2;
- bonus2 bAddRace,RC_DemiHuman,55;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,55;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -5894,7 +5894,7 @@ item_db: (
}
Script: <"
bonus bCritical,20;
- bonus2 bAddRace,RC_DemiHuman,55;
+ bonus2 bAddRace,RC_DemiPlayer,55;
bonus bCritAtkRate,20;
bonus bUnbreakableWeapon,0;
">
@@ -5970,12 +5970,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,70;
- bonus2 bIgnoreDefRate,RC_DemiHuman,25;
+ bonus2 bAddRace,RC_DemiPlayer,70;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,25;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-3)*(getrefine()-3);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus3 bAutoSpell,LK_CONCENTRATION,max(getskilllv(LK_CONCENTRATION),1),30;
@@ -6513,8 +6513,8 @@ item_db: (
EquipLv: 36
View: 1
Script: <"
- bonus bIgnoreDefRace,RC_DemiHuman;
- bonus2 bSubRace,RC_DemiHuman,10;
+ bonus bIgnoreDefRace,RC_DemiPlayer;
+ bonus2 bSubRace,RC_DemiPlayer,10;
bonus2 bSubRace,RC_Demon,-10;
">
},
@@ -6614,7 +6614,7 @@ item_db: (
Script: <"
bonus bIgnoreDefRace,RC_Demon;
bonus2 bSubRace,RC_Demon,5;
- bonus2 bSubRace,RC_DemiHuman,-10;
+ bonus2 bSubRace,RC_DemiPlayer,-10;
">
},
{
@@ -7096,7 +7096,7 @@ item_db: (
EquipLv: 75
View: 16
Script: <"
- bonus2 bAddRace,RC_DemiHuman,50;
+ bonus2 bAddRace,RC_DemiPlayer,50;
bonus bDef,3;
bonus bFlee,5;
bonus bFlee2,2;
@@ -7171,7 +7171,7 @@ item_db: (
EquipLv: 75
View: 16
Script: <"
- bonus bIgnoreDefRace,RC_DemiHuman;
+ bonus bIgnoreDefRace,RC_DemiPlayer;
bonus bFlee,-160;
bonus bFlee2,-160;
bonus bHPrecovRate,-100;
@@ -7194,7 +7194,7 @@ item_db: (
EquipLv: 75
View: 16
Script: <"
- bonus2 bAddRace,RC_DemiHuman,50;
+ bonus2 bAddRace,RC_DemiPlayer,50;
bonus bDef,3;
bonus bFlee,5;
bonus bFlee2,2;
@@ -7225,7 +7225,7 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,70;
+ bonus2 bAddRace,RC_DemiPlayer,70;
bonus bDef,3;
bonus bFlee,5;
bonus bFlee2,2;
@@ -7360,7 +7360,7 @@ item_db: (
Refine: false
View: 16
Script: <"
- bonus bIgnoreDefRace,RC_DemiHuman;
+ bonus bIgnoreDefRace,RC_DemiPlayer;
bonus bFlee,-160;
bonus bFlee2,-160;
">
@@ -7490,8 +7490,8 @@ item_db: (
bonus bStr,1;
bonus bDex,1;
bonus bLuk,1;
- bonus2 bAddRace,RC_DemiHuman,70;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,70;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -7520,7 +7520,7 @@ item_db: (
bonus bStr,1;
bonus bDex,1;
bonus bLuk,1;
- bonus2 bAddRace,RC_DemiHuman,70;
+ bonus2 bAddRace,RC_DemiPlayer,70;
bonus bCritAtkRate,20;
bonus bAspdRate,5;
bonus bUnbreakableWeapon,0;
@@ -7549,12 +7549,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,70;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,70;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";
">
@@ -7582,12 +7582,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,70;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,70;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bCriticalAddRace,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bCriticalAddRace,RC_DemiPlayer,5;
}
if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";
">
@@ -7779,7 +7779,7 @@ item_db: (
EquipLv: 44
View: 6
Script: <"
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
bonus3 bAddMonsterDropItem,517,RC_Brute,3000;
">
},
@@ -7876,12 +7876,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
bonus bAspdRate,5;
}
if(getrefine()>8) {
@@ -8332,9 +8332,9 @@ item_db: (
EquipLv: 44
View: 7
Script: <"
- bonus2 bWeaponComaRace,RC_DemiHuman,30;
- bonus2 bSPGainRaceAttack,RC_DemiHuman,2;
- bonus2 bSPGainRace,RC_DemiHuman,20;
+ bonus2 bWeaponComaRace,RC_DemiPlayer,30;
+ bonus2 bSPGainRaceAttack,RC_DemiPlayer,2;
+ bonus2 bSPGainRace,RC_DemiPlayer,20;
">
},
{
@@ -8565,8 +8565,8 @@ item_db: (
}
Script: <"
bonus bStr,3;
- bonus2 bAddRace,RC_DemiHuman,55;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,55;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -8593,7 +8593,7 @@ item_db: (
}
Script: <"
bonus bStr,3;
- bonus2 bAddRace,RC_DemiHuman,55;
+ bonus2 bAddRace,RC_DemiPlayer,55;
autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";
bonus bUnbreakableWeapon,0;
">
@@ -8646,12 +8646,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,70;
- bonus2 bIgnoreDefRate,RC_DemiHuman,25;
+ bonus2 bAddRace,RC_DemiPlayer,70;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,25;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-3)*(getrefine()-3);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
bonus3 bAutoSpell,NPC_CRITICALWOUND,1,50;
}
if(getrefine()>8) {
@@ -9249,7 +9249,7 @@ item_db: (
View: 4
Script: <"
bonus2 bAddEff,Eff_Stun,500;
- bonus2 bAddRace,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,20;
skill KN_PIERCE,3;
">
},
@@ -9343,8 +9343,8 @@ item_db: (
}
Script: <"
bonus bStr,2;
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(BaseJob==Job_Crusader) bonus bAspdRate,20;
">
@@ -9372,12 +9372,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
bonus bAspdRate,10;
}
if(getrefine()>8) {
@@ -9821,7 +9821,7 @@ item_db: (
View: 5
Script: <"
bonus2 bAddRace,RC_Brute,10;
- bonus2 bAddRace,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,5;
">
},
{
@@ -9860,7 +9860,7 @@ item_db: (
View: 5
Script: <"
bonus bAtkEle,Ele_Dark;
- bonus2 bAddRace,RC_DemiHuman,10;
+ bonus2 bAddRace,RC_DemiPlayer,10;
bonus2 bAddRace,RC_Angel,10;
">
},
@@ -10043,7 +10043,7 @@ item_db: (
Script: <"
bonus bIgnoreDefRace,RC_NonBoss;
bonus bIgnoreDefRace,RC_Boss;
- bonus2 bAddRace,RC_DemiHuman,10;
+ bonus2 bAddRace,RC_DemiPlayer,10;
bonus3 bAutoSpell,KN_PIERCE,5,30;
">
},
@@ -10136,8 +10136,8 @@ item_db: (
}
Script: <"
bonus bStr,2;
- bonus2 bAddRace,RC_DemiHuman,25;
- bonus bIgnoreDefRace,RC_DemiHuman;
+ bonus2 bAddRace,RC_DemiPlayer,25;
+ bonus bIgnoreDefRace,RC_DemiPlayer;
bonus bUnbreakableWeapon,0;
">
},
@@ -10226,12 +10226,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,70;
- bonus2 bIgnoreDefRate,RC_DemiHuman,25;
+ bonus2 bAddRace,RC_DemiPlayer,70;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,25;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,KN_PIERCE,NPC_CRITICALWOUND,2,200;
@@ -10286,7 +10286,7 @@ item_db: (
Script: <"
bonus bIgnoreDefRace,RC_NonBoss;
bonus bIgnoreDefRace,RC_Boss;
- bonus2 bAddRace,RC_DemiHuman,10;
+ bonus2 bAddRace,RC_DemiPlayer,10;
bonus3 bAutoSpell,KN_PIERCE,5,30;
">
},
@@ -10732,7 +10732,7 @@ item_db: (
View: 8
Script: <"
bonus2 bAddRace,RC_Undead,10;
- bonus2 bAddRace,RC_DemiHuman,10;
+ bonus2 bAddRace,RC_DemiPlayer,10;
bonus2 bAddEle,Ele_Earth,10;
">
},
@@ -10944,7 +10944,7 @@ item_db: (
Refine: false
View: 8
Script: <"
- bonus2 bAddRace,RC_DemiHuman,30;
+ bonus2 bAddRace,RC_DemiPlayer,30;
bonus2 bAddRace,RC_Demon,40;
bonus2 bAddRace,RC_Undead,40;
">
@@ -11059,8 +11059,8 @@ item_db: (
Script: <"
bonus bStr,1;
bonus bDex,1;
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -11088,7 +11088,7 @@ item_db: (
Script: <"
bonus bStr,1;
bonus bDex,1;
- bonus2 bAddRace,RC_DemiHuman,75;
+ bonus2 bAddRace,RC_DemiPlayer,75;
bonus bUnbreakableWeapon,0;
autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";
">
@@ -11168,12 +11168,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
bonus bAspdRate,5;
}
if(getrefine()>8) {
@@ -11541,7 +11541,7 @@ item_db: (
bonus bStr,3;
bonus bInt,3;
bonus bLuk,-20;
- bonus2 bWeaponComaRace,RC_DemiHuman,10;
+ bonus2 bWeaponComaRace,RC_DemiPlayer,10;
bonus bAspdRate,getrefine();
if(BaseJob==Job_Sage) bonus3 bAutoSpell,NPC_HELLJUDGEMENT,5,20;
">
@@ -11723,8 +11723,8 @@ item_db: (
bonus bStr,2;
bonus bInt,1;
bonus bMatkRate,15;
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -11753,7 +11753,7 @@ item_db: (
bonus bStr,2;
bonus bInt,1;
bonus bMatkRate,15;
- bonus2 bIgnoreMdefRate,RC_DemiHuman,25;
+ bonus2 bIgnoreMdefRate,RC_DemiPlayer,25;
bonus bUnbreakableWeapon,0;
">
},
@@ -11781,12 +11781,12 @@ item_db: (
}
Script: <"
bonus bMatkRate,15;
- bonus2 bAddRace,RC_DemiHuman,80;
- bonus2 bIgnoreDefRate,RC_DemiHuman,25;
+ bonus2 bAddRace,RC_DemiPlayer,80;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,25;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";
">
@@ -11815,10 +11815,10 @@ item_db: (
}
Script: <"
bonus bMatkRate,15;
- bonus2 bAddRace,RC_DemiHuman,80;
- bonus2 bIgnoreDefRate,RC_DemiHuman,25;
+ bonus2 bAddRace,RC_DemiPlayer,80;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,25;
bonus bUnbreakableWeapon,0;
- if(getrefine()>5) bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ if(getrefine()>5) bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
if(getrefine()>8) {
bonus bMatkRate,5;
bonus bCastrate,-5;
@@ -11885,7 +11885,7 @@ item_db: (
bonus bStr,3;
bonus bInt,3;
bonus bLuk,-20;
- bonus2 bWeaponComaRace,RC_DemiHuman,10;
+ bonus2 bWeaponComaRace,RC_DemiPlayer,10;
bonus bAspdRate,getrefine();
if(BaseJob==Job_Sage) bonus3 bAutoSpell,NPC_HELLJUDGEMENT,5,20;
">
@@ -12649,7 +12649,7 @@ item_db: (
bonus bInt,4;
bonus bDex,3;
bonus bMatkRate,15;
- bonus2 bIgnoreMdefRate,RC_DemiHuman,25;
+ bonus2 bIgnoreMdefRate,RC_DemiPlayer,25;
bonus3 bAddEff,Eff_Stun,500,ATF_SKILL;
bonus bUnbreakableWeapon,0;
">
@@ -12679,7 +12679,7 @@ item_db: (
bonus bInt,3;
bonus bDex,3;
bonus bMatkRate,15;
- bonus2 bMagicAddRace,RC_DemiHuman,15;
+ bonus2 bMagicAddRace,RC_DemiPlayer,15;
bonus3 bAddEff,Eff_Stun,500,ATF_SKILL;
bonus bUnbreakableWeapon,0;
">
@@ -12868,8 +12868,8 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bMagicAddRace,RC_DemiHuman,15;
- bonus2 bIgnoreMdefRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0);
+ bonus2 bMagicAddRace,RC_DemiPlayer,15;
+ bonus2 bIgnoreMdefRate,RC_DemiPlayer,25 + ((getrefine()>5) ? 5 : 0);
bonus bUnbreakableWeapon,0;
if(getrefine()>8) {
bonus bCastrate,-5;
@@ -12906,7 +12906,7 @@ item_db: (
bonus bDelayrate,-10;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bIgnoreMdefRate,RC_DemiHuman,5;
+ bonus2 bIgnoreMdefRate,RC_DemiPlayer,5;
bonus bHealPower,5+(getrefine()-5)*2;
}
if(getrefine()>8) bonus5 bAutoSpellOnSkill,AL_HEAL,AL_HEAL,10,100,1;
@@ -13775,8 +13775,8 @@ item_db: (
}
Script: <"
bonus bDex,2;
- bonus2 bAddRace,RC_DemiHuman,55;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,55;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -13804,7 +13804,7 @@ item_db: (
Script: <"
bonus bDex,2;
bonus bInt,10;
- bonus2 bAddRace,RC_DemiHuman,55;
+ bonus2 bAddRace,RC_DemiPlayer,55;
bonus bUnbreakableWeapon,0;
">
},
@@ -13895,13 +13895,13 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,55;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,55;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bCritAtkRate,getrefine() * 2;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) bonus2 bSkillAtk,AC_DOUBLE,20;
">
@@ -14702,8 +14702,8 @@ item_db: (
Script: <"
bonus bStr,2;
bonus bAgi,1;
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus4 bAutoSpell,CH_SOULCOLLECT,1,5,0;
bonus bUnbreakableWeapon,0;
">
@@ -14732,7 +14732,7 @@ item_db: (
Script: <"
bonus bStr,2;
bonus bInt,1;
- bonus2 bAddRace,RC_DemiHuman,95;
+ bonus2 bAddRace,RC_DemiPlayer,95;
bonus2 bCastrate,MO_EXTREMITYFIST,-25;
autobonus "{ bonus2 bCastrate,MO_EXTREMITYFIST,-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }";
bonus bUnbreakableWeapon,0;
@@ -14783,12 +14783,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus3 bAutoSpell,MO_INVESTIGATE,5,(getrefine()*10-50);
@@ -14820,12 +14820,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus2 bCastrate,MO_EXTREMITYFIST,-100;
@@ -15329,8 +15329,8 @@ item_db: (
}
Script: <"
bonus bDex,2;
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -15358,7 +15358,7 @@ item_db: (
}
Script: <"
bonus bDex,2;
- bonus2 bAddRace,RC_DemiHuman,95;
+ bonus2 bAddRace,RC_DemiPlayer,95;
bonus2 bSkillAtk,CG_ARROWVULCAN,20;
bonus bUnbreakableWeapon,0;
">
@@ -15439,12 +15439,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) bonus4 bAutoSpellOnSkill,CG_ARROWVULCAN,CG_TAROTCARD,5,100;
">
@@ -16012,8 +16012,8 @@ item_db: (
}
Script: <"
bonus bDex,2;
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -16040,7 +16040,7 @@ item_db: (
}
Script: <"
bonus bDex,2;
- bonus2 bAddRace,RC_DemiHuman,95;
+ bonus2 bAddRace,RC_DemiPlayer,95;
bonus2 bSkillAtk,CG_ARROWVULCAN,20;
bonus bUnbreakableWeapon,0;
">
@@ -16118,12 +16118,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) bonus4 bAutoSpellOnSkill,CG_ARROWVULCAN,CG_TAROTCARD,5,100;
">
@@ -16258,12 +16258,12 @@ item_db: (
}
Script: <"
bonus bMatkRate,getrefine();
- bonus2 bMagicAddRace,RC_DemiHuman,15;
- bonus2 bIgnoreMdefRate,RC_DemiHuman,25;
+ bonus2 bMagicAddRace,RC_DemiPlayer,15;
+ bonus2 bIgnoreMdefRate,RC_DemiPlayer,25;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2;
- bonus2 bIgnoreMdefRate,RC_DemiHuman,5+(getrefine()-5)*2;
+ bonus2 bMagicAddRace,RC_DemiPlayer,(getrefine()-5)*2;
+ bonus2 bIgnoreMdefRate,RC_DemiPlayer,5+(getrefine()-5)*2;
}
if(getrefine()>8) {
bonus5 bAutoSpellOnSkill,WZ_STORMGUST,MG_SAFETYWALL,10,200,1;
@@ -17048,7 +17048,7 @@ item_db: (
bonus bAllStats,50;
bonus bMdef,99;
bonus bShortWeaponDamageReturn,100;
- bonus2 bSubRace,RC_DemiHuman,95;
+ bonus2 bSubRace,RC_DemiPlayer,95;
skill CR_FULLPROTECTION,5;
skill WZ_ESTIMATION,1;
skill ST_FULLSTRIP,5;
@@ -18175,7 +18175,7 @@ item_db: (
Loc: 256
Refine: false
View: 76
- Script: <" bonus2 bSubRace,RC_DemiHuman,10; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,10; ">
},
{
Id: 2290
@@ -18200,7 +18200,7 @@ item_db: (
Loc: 512
Refine: false
View: 78
- Script: <" bonus2 bAddRace,RC_DemiHuman,3; ">
+ Script: <" bonus2 bAddRace,RC_DemiPlayer,3; ">
},
{
Id: 2292
@@ -19263,7 +19263,7 @@ item_db: (
}
Script: <"
bonus bUnbreakableArmor,0;
- bonus2 bSubRace,RC_DemiHuman,10;
+ bonus2 bSubRace,RC_DemiPlayer,10;
">
},
{
@@ -19400,7 +19400,7 @@ item_db: (
Script: <"
bonus bMaxHP,150;
bonus bMdef,2;
- bonus2 bSubRace,RC_DemiHuman,2;
+ bonus2 bSubRace,RC_DemiPlayer,2;
">
},
{
@@ -19425,7 +19425,7 @@ item_db: (
Script: <"
bonus bMaxHP,150;
bonus bMdef,2;
- bonus2 bSubRace,RC_DemiHuman,2;
+ bonus2 bSubRace,RC_DemiPlayer,2;
">
},
{
@@ -19450,7 +19450,7 @@ item_db: (
Script: <"
bonus bMaxHP,150;
bonus bMdef,2;
- bonus2 bSubRace,RC_DemiHuman,2;
+ bonus2 bSubRace,RC_DemiPlayer,2;
">
},
{
@@ -19475,7 +19475,7 @@ item_db: (
Script: <"
bonus bMaxHP,150;
bonus bMdef,2;
- bonus2 bSubRace,RC_DemiHuman,2;
+ bonus2 bSubRace,RC_DemiPlayer,2;
">
},
{
@@ -19500,7 +19500,7 @@ item_db: (
Script: <"
bonus bMaxHP,150;
bonus bMdef,2;
- bonus2 bSubRace,RC_DemiHuman,2;
+ bonus2 bSubRace,RC_DemiPlayer,2;
">
},
{
@@ -19525,7 +19525,7 @@ item_db: (
Script: <"
bonus bMaxHP,150;
bonus bMdef,2;
- bonus2 bSubRace,RC_DemiHuman,2;
+ bonus2 bSubRace,RC_DemiPlayer,2;
">
},
{
@@ -19550,7 +19550,7 @@ item_db: (
Script: <"
bonus bMaxHP,150;
bonus bMdef,2;
- bonus2 bSubRace,RC_DemiHuman,2;
+ bonus2 bSubRace,RC_DemiPlayer,2;
">
},
{
@@ -19807,7 +19807,7 @@ item_db: (
}
Script: <"
bonus bMaxHPrate,20;
- bonus2 bSubRace,RC_DemiHuman,7;
+ bonus2 bSubRace,RC_DemiPlayer,7;
">
},
{
@@ -20310,7 +20310,7 @@ item_db: (
Job: 0xFFFFFFFE
Loc: 64
Refine: false
- Script: <" bonus2 bSubRace,RC_DemiHuman,5; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,5; ">
},
*/
{
@@ -20442,7 +20442,7 @@ item_db: (
Script: <"
bonus bMaxHP,100;
bonus bMdef,1;
- bonus2 bSubRace,RC_DemiHuman,1;
+ bonus2 bSubRace,RC_DemiPlayer,1;
">
},
{
@@ -20467,7 +20467,7 @@ item_db: (
Script: <"
bonus bMaxHP,100;
bonus bMdef,1;
- bonus2 bSubRace,RC_DemiHuman,1;
+ bonus2 bSubRace,RC_DemiPlayer,1;
">
},
{
@@ -20492,7 +20492,7 @@ item_db: (
Script: <"
bonus bMaxHP,100;
bonus bMdef,1;
- bonus2 bSubRace,RC_DemiHuman,1;
+ bonus2 bSubRace,RC_DemiPlayer,1;
">
},
{
@@ -20624,7 +20624,7 @@ item_db: (
}
Script: <"
bonus bMaxHPrate,10;
- bonus2 bSubRace,RC_DemiHuman,4;
+ bonus2 bSubRace,RC_DemiPlayer,4;
bonus3 bAutoSpellWhenHit,AL_INCAGI,1,10;
">
},
@@ -21203,7 +21203,7 @@ item_db: (
Job: 0xFFFFFFFE
Loc: 4
Refine: false
- Script: <" bonus2 bSubRace,RC_DemiHuman,15; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,15; ">
},
*/
{
@@ -21303,7 +21303,7 @@ item_db: (
Script: <"
bonus bMaxHP,50;
bonus bMdef,1;
- bonus2 bSubRace,RC_DemiHuman,1;
+ bonus2 bSubRace,RC_DemiPlayer,1;
">
},
{
@@ -21328,7 +21328,7 @@ item_db: (
Script: <"
bonus bMaxHP,50;
bonus bMdef,1;
- bonus2 bSubRace,RC_DemiHuman,1;
+ bonus2 bSubRace,RC_DemiPlayer,1;
">
},
{
@@ -21353,7 +21353,7 @@ item_db: (
Script: <"
bonus bMaxHP,50;
bonus bMdef,1;
- bonus2 bSubRace,RC_DemiHuman,1;
+ bonus2 bSubRace,RC_DemiPlayer,1;
">
},
{
@@ -21509,7 +21509,7 @@ item_db: (
EquipLv: 95
Refine: false
Script: <"
- bonus2 bSubRace,RC_DemiHuman,10;
+ bonus2 bSubRace,RC_DemiPlayer,10;
bonus bMaxHPrate,10;
bonus2 bSubEle,Ele_Water,5;
bonus2 bSubEle,Ele_Fire,5;
@@ -21537,7 +21537,7 @@ item_db: (
}
Script: <"
bonus bMaxHPrate,5;
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
">
},
{
@@ -24464,7 +24464,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" bonus2 bExpAddRace,RC_DemiHuman,15; ">
+ Script: <" bonus2 bExpAddRace,RC_DemiPlayer,15; ">
},
{
Id: 2761
@@ -25751,7 +25751,7 @@ item_db: (
Buy: 20
Weight: 10
Loc: 2
- Script: <" bonus2 bAddRace,RC_DemiHuman,20; ">
+ Script: <" bonus2 bAddRace,RC_DemiPlayer,20; ">
},
{
Id: 4036
@@ -26015,7 +26015,7 @@ item_db: (
Buy: 20
Weight: 10
Loc: 32
- Script: <" bonus2 bSubRace,RC_DemiHuman,30; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,30; ">
},
{
Id: 4059
@@ -26790,7 +26790,7 @@ item_db: (
Weight: 10
Loc: 2
Script: <"
- bonus2 bAddRace,RC_DemiHuman,7;
+ bonus2 bAddRace,RC_DemiPlayer,7;
bonus2 bAddRace,RC_Brute,7;
bonus2 bAddRace,RC_Plant,7;
bonus2 bAddRace,RC_Insect,7;
@@ -27131,8 +27131,8 @@ item_db: (
Script: <"
bonus2 bAddItemHealRate,Candy,50;
bonus2 bAddItemHealRate,Candy_Striper,50;
- bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300;
- bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100;
+ bonus3 bAddMonsterDropItem,529,RC_DemiPlayer,300;
+ bonus3 bAddMonsterDropItem,530,RC_DemiPlayer,100;
">
},
{
@@ -28229,8 +28229,8 @@ item_db: (
Weight: 10
Loc: 64
Script: <"
- bonus2 bSubRace,RC_DemiHuman,-20;
- bonus2 bExpAddRace,RC_DemiHuman,10;
+ bonus2 bSubRace,RC_DemiPlayer,-20;
+ bonus2 bExpAddRace,RC_DemiPlayer,10;
">
},
{
@@ -28243,7 +28243,7 @@ item_db: (
Loc: 2
Script: <"
bonus bCritAtkRate,10;
- bonus2 bCriticalAddRace,RC_DemiHuman,7;
+ bonus2 bCriticalAddRace,RC_DemiPlayer,7;
">
},
{
@@ -28359,7 +28359,7 @@ item_db: (
Buy: 20
Weight: 10
Loc: 136
- Script: <" bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; ">
+ Script: <" bonus3 bAddMonsterDropItem,12034,RC_DemiPlayer,100; ">
},
{
Id: 4257
@@ -29240,7 +29240,7 @@ item_db: (
Buy: 20
Weight: 10
Loc: 2
- Script: <" bonus2 bSPGainRace,RC_DemiHuman,5; ">
+ Script: <" bonus2 bSPGainRace,RC_DemiPlayer,5; ">
OnUnequipScript: <" heal 0,-5; ">
},
{
@@ -29621,7 +29621,7 @@ item_db: (
Buy: 20
Weight: 10
Loc: 2
- Script: <" bonus2 bCriticalAddRace,RC_DemiHuman,10; ">
+ Script: <" bonus2 bCriticalAddRace,RC_DemiPlayer,10; ">
},
{
Id: 4361
@@ -30602,8 +30602,8 @@ item_db: (
Weight: 10
Loc: 64
Script: <"
- bonus2 bAddRace,RC_DemiHuman,1;
- bonus2 bMagicAddRace,RC_DemiHuman,1;
+ bonus2 bAddRace,RC_DemiPlayer,1;
+ bonus2 bMagicAddRace,RC_DemiPlayer,1;
bonus bHPGainValue,50;
">
},
@@ -30616,9 +30616,9 @@ item_db: (
Weight: 10
Loc: 136
Script: <"
- bonus2 bCriticalAddRace,RC_DemiHuman,5;
- bonus2 bAddRace,RC_DemiHuman,1;
- bonus2 bMagicAddRace,RC_DemiHuman,1;
+ bonus2 bCriticalAddRace,RC_DemiPlayer,5;
+ bonus2 bAddRace,RC_DemiPlayer,1;
+ bonus2 bMagicAddRace,RC_DemiPlayer,1;
bonus2 bAddEff2,Eff_Bleeding,10;
">
},
@@ -30702,7 +30702,7 @@ item_db: (
bonus bMatkRate,10;
bonus bMaxSPrate,-50;
bonus2 bMagicAddRace,RC_Angel,50;
- bonus2 bMagicAddRace,RC_DemiHuman,50;
+ bonus2 bMagicAddRace,RC_DemiPlayer,50;
">
},
{
@@ -33316,8 +33316,8 @@ item_db: (
EquipLv: 70
View: 200
Script: <"
- bonus2 bAddRace,RC_DemiHuman,5;
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
">
},
{
@@ -33501,7 +33501,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" bonus2 bSubRace,RC_DemiHuman,10; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,10; ">
},
{
Id: 5133
@@ -33574,7 +33574,7 @@ item_db: (
View: 208
Script: <"
bonus bStr,1;
- bonus2 bAddRace,RC_DemiHuman,10;
+ bonus2 bAddRace,RC_DemiPlayer,10;
bonus2 bAddEff2,Eff_Sleep,10;
">
},
@@ -33658,7 +33658,7 @@ item_db: (
View: 213
Script: <"
bonus bVit,1;
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
">
},
{
@@ -34075,7 +34075,7 @@ item_db: (
View: 224
Script: <"
bonus bMdef,1;
- bonus2 bSubRace,RC_DemiHuman,10;
+ bonus2 bSubRace,RC_DemiPlayer,10;
">
},
{
@@ -34103,7 +34103,7 @@ item_db: (
Loc: 256
Refine: false
View: 226
- Script: <" bonus2 bSubRace,RC_DemiHuman,10; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,10; ">
},
{
Id: 5173
@@ -35813,7 +35813,7 @@ item_db: (
}
Script: <"
bonus bMdef,5;
- bonus2 bSubRace,RC_DemiHuman,10;
+ bonus2 bSubRace,RC_DemiPlayer,10;
">
},
{
@@ -36120,7 +36120,7 @@ item_db: (
bonus bMaxSP,50;
skill TF_DOUBLE,2;
bonus bDoubleRate,10;
- bonus2 bSubRace,RC_DemiHuman,3;
+ bonus2 bSubRace,RC_DemiPlayer,3;
">
},
{
@@ -36548,7 +36548,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" bonus2 bSubRace,RC_DemiHuman,5; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,5; ">
},
{
Id: 5307
@@ -36659,7 +36659,7 @@ item_db: (
}
Script: <"
bonus bStr,1;
- bonus2 bAddRace,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,5;
">
},
{
@@ -36701,7 +36701,7 @@ item_db: (
noselltonpc: true
nogstorage: true
}
- Script: <" bonus2 bAddRace,RC_DemiHuman,5; ">
+ Script: <" bonus2 bAddRace,RC_DemiPlayer,5; ">
},
{
Id: 5315
@@ -36913,7 +36913,7 @@ item_db: (
Loc: 512
Refine: false
View: 78
- Script: <" bonus2 bAddRace,RC_DemiHuman,7; ">
+ Script: <" bonus2 bAddRace,RC_DemiPlayer,7; ">
},
{
Id: 5327
@@ -37148,7 +37148,7 @@ item_db: (
Refine: false
View: 354
Script: <"
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
bonus bStr,2;
bonus3 bAutoSpellWhenHit,AL_ANGELUS,10,20;
">
@@ -37166,7 +37166,7 @@ item_db: (
Refine: false
View: 355
Script: <"
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
bonus bInt,2;
bonus bMagicHPGainValue,50;
">
@@ -37184,7 +37184,7 @@ item_db: (
Refine: false
View: 356
Script: <"
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
bonus bDex,2;
autobonus "{ bonus bBaseAtk,50; }",20,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }";
">
@@ -37202,7 +37202,7 @@ item_db: (
Refine: false
View: 357
Script: <"
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
bonus bAgi,2;
bonus2 bAddItemHealRate,504,10;
bonus2 bAddItemHealRate,547,10;
@@ -37221,7 +37221,7 @@ item_db: (
Refine: false
View: 358
Script: <"
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
bonus bVit,2;
autobonus "{ bonus bAspdRate,5; }",20,30000,0,"{ specialeffect2 EF_HASTEUP; }";
">
@@ -37239,7 +37239,7 @@ item_db: (
Refine: false
View: 359
Script: <"
- bonus2 bSubRace,RC_DemiHuman,5;
+ bonus2 bSubRace,RC_DemiPlayer,5;
bonus bLuk,2;
bonus2 bAddRace,RC_Undead,5;
bonus2 bMagicAddRace,RC_Undead,5;
@@ -37564,7 +37564,7 @@ item_db: (
EquipLv: 70
View: 371
Script: <"
- bonus2 bSubRace,RC_DemiHuman,-10;
+ bonus2 bSubRace,RC_DemiPlayer,-10;
bonus2 bSubRace,RC_Boss,10;
">
},
@@ -37773,7 +37773,7 @@ item_db: (
nogstorage: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,12;
+ bonus2 bAddRace,RC_DemiPlayer,12;
bonus bBaseAtk,(JobLevel*2)/7;
">
},
@@ -37834,7 +37834,7 @@ item_db: (
noselltonpc: true
nogstorage: true
}
- Script: <" bonus2 bSubRace,RC_DemiHuman,2; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,2; ">
},
{
Id: 5378
@@ -37955,7 +37955,7 @@ item_db: (
Script: <"
bonus bLuk,1;
bonus2 bAddRace,RC_Brute,10;
- bonus2 bAddRace,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,5;
">
},
{
@@ -38470,7 +38470,7 @@ item_db: (
Script: <"
bonus bMaxHP,100;
bonus2 bResEff, Eff_Stun, 400;
- bonus2 bSubRace,RC_DemiHuman,4;
+ bonus2 bSubRace,RC_DemiPlayer,4;
">
},
{
@@ -38706,7 +38706,7 @@ item_db: (
}
Script: <"
bonus bDex,3;
- bonus2 bSubRace,RC_DemiHuman,10;
+ bonus2 bSubRace,RC_DemiPlayer,10;
">
},
{
@@ -38776,7 +38776,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" bonus2 bSubRace,RC_DemiHuman,12; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,12; ">
},
{
Id: 5429
@@ -39136,7 +39136,7 @@ item_db: (
Script: <"
bonus bAspdRate,10;
bonus bAllStats,3;
- bonus2 bAddRace,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,5;
">
},
{
@@ -39164,7 +39164,7 @@ item_db: (
Script: <"
bonus bAspdRate,7;
bonus bAllStats,2;
- bonus2 bAddRace,RC_DemiHuman,3;
+ bonus2 bAddRace,RC_DemiPlayer,3;
">
},
{
@@ -39191,7 +39191,7 @@ item_db: (
Script: <"
bonus bAspdRate,5;
bonus bAllStats,2;
- bonus2 bAddRace,RC_DemiHuman,1;
+ bonus2 bAddRace,RC_DemiPlayer,1;
">
},
{
@@ -39374,8 +39374,8 @@ item_db: (
}
Script: <"
bonus bVit,1;
- bonus2 bAddRace,RC_DemiHuman,1;
- bonus2 bSubRace,RC_DemiHuman,1;
+ bonus2 bAddRace,RC_DemiPlayer,1;
+ bonus2 bSubRace,RC_DemiPlayer,1;
">
},
{
@@ -39570,7 +39570,7 @@ item_db: (
Weight: 100
Loc: 256
View: 469
- Script: <" bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3; ">
+ Script: <" bonus3 bAddMonsterDropItem,550,RC_DemiPlayer,3; ">
},
*/
/*
@@ -39775,7 +39775,7 @@ item_db: (
}
Script: <"
bonus bHit,-10;
- bonus2 bAddRace,RC_DemiHuman,6;
+ bonus2 bAddRace,RC_DemiPlayer,6;
">
},
{
@@ -39916,7 +39916,7 @@ item_db: (
}
Script: <"
bonus bMdef,3;
- bonus2 bAddRace,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,5;
">
},
{
@@ -40446,7 +40446,7 @@ item_db: (
EquipLv: 50
View: 513
Script: <"
- bonus2 bSubRace,RC_DemiHuman,12;
+ bonus2 bSubRace,RC_DemiPlayer,12;
bonus bBaseAtk,(JobLevel*2)/7;
">
},
@@ -40750,8 +40750,8 @@ item_db: (
bonus bVit,1;
bonus bDex,1;
bonus bMdef,3;
- bonus2 bSubRace,RC_DemiHuman,5;
- bonus2 bAddRace,RC_DemiHuman,3;
+ bonus2 bSubRace,RC_DemiPlayer,5;
+ bonus2 bAddRace,RC_DemiPlayer,3;
">
},
{
@@ -41122,7 +41122,7 @@ item_db: (
View: 15
Script: <"
bonus bMdef,4;
- bonus2 bSubRace,RC_DemiHuman,9;
+ bonus2 bSubRace,RC_DemiPlayer,9;
">
},
{
@@ -41345,7 +41345,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" bonus2 bAddRace,RC_DemiHuman,10; ">
+ Script: <" bonus2 bAddRace,RC_DemiPlayer,10; ">
},
{
Id: 5566
@@ -41368,7 +41368,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" bonus2 bAddRace,RC_DemiHuman,2; ">
+ Script: <" bonus2 bAddRace,RC_DemiPlayer,2; ">
},
{
Id: 5567
@@ -45303,7 +45303,7 @@ item_db: (
Loc: 512
Refine: false
View: 125
- Script: <" bonus2 bSubRace,RC_DemiHuman,3; ">
+ Script: <" bonus2 bSubRace,RC_DemiPlayer,3; ">
},
{
Id: 5801
@@ -45317,7 +45317,7 @@ item_db: (
View: 167
Script: <"
bonus bAllStats,2;
- bonus2 bSubRace,RC_DemiHuman,10;
+ bonus2 bSubRace,RC_DemiPlayer,10;
if(getskilllv(AL_HEAL)==10) {
bonus3 bAutoSpellWhenHit,AL_HEAL,10,20;
}
@@ -45677,7 +45677,7 @@ item_db: (
bonus bLuk,4;
bonus bMaxHP,100;
bonus bMaxSP,100;
- bonus2 bSubRace,RC_DemiHuman,7;
+ bonus2 bSubRace,RC_DemiPlayer,7;
bonus2 bSubRace,RC_Undead,7;
">
},
@@ -71645,7 +71645,7 @@ item_db: (
View: 1
Script: <"
bonus bAtkEle,Ele_Water;
- bonus2 bCriticalAddRace,RC_DemiHuman,10;
+ bonus2 bCriticalAddRace,RC_DemiPlayer,10;
">
},
{
@@ -71665,7 +71665,7 @@ item_db: (
View: 1
Script: <"
bonus bAtkEle,Ele_Water;
- bonus2 bCriticalAddRace,RC_DemiHuman,10;
+ bonus2 bCriticalAddRace,RC_DemiPlayer,10;
">
},
{
@@ -71839,8 +71839,8 @@ item_db: (
noauction: true
}
Script: <"
- bonus bIgnoreDefRace,RC_DemiHuman;
- bonus2 bSubRace,RC_DemiHuman,10;
+ bonus bIgnoreDefRace,RC_DemiPlayer;
+ bonus2 bSubRace,RC_DemiPlayer,10;
bonus2 bSubRace,RC_Demon,-10;
bonus bMaxSPrate,10;
bonus bSPDrainValue,3;
@@ -72148,8 +72148,8 @@ item_db: (
Script: <"
bonus bStr,1;
bonus bAgi,1;
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;
">
@@ -72178,7 +72178,7 @@ item_db: (
Script: <"
bonus bStr,1;
bonus bAgi,1;
- bonus2 bAddRace,RC_DemiHuman,75;
+ bonus2 bAddRace,RC_DemiPlayer,75;
bonus bUnbreakableWeapon,0;
autobonus "{ bonus bDefRatioAtkRace,RC_Boss; bonus bDefRatioAtkRace,RC_NonBoss; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }";
if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;
@@ -72304,13 +72304,13 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus3 bAutoSpell,PR_LEXDIVINA,1,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) bonus4 bAutoSpellOnSkill,RG_RAID,NPC_WIDEBLEEDING,1,250;
">
@@ -72621,8 +72621,8 @@ item_db: (
Script: <"
bonus bDex,2;
bonus bHit,-10;
- bonus2 bAddRace,RC_DemiHuman,55;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,55;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";
bonus bUnbreakableWeapon,0;
">
@@ -72671,12 +72671,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,55;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,55;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,pow(getrefine()-4,2);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus4 bAutoSpellOnSkill,GS_RAPIDSHOWER,GS_GLITTERING,1,1000;
@@ -73164,9 +73164,9 @@ item_db: (
bonus bDex,2;
bonus bHit,10;
bonus bCritical,10;
- bonus2 bAddRace,RC_DemiHuman,75;
+ bonus2 bAddRace,RC_DemiPlayer,75;
bonus2 bCastrate,GS_TRACKING,-25;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -73193,8 +73193,8 @@ item_db: (
}
Script: <"
bonus bDex,2;
- bonus2 bAddRace,RC_DemiHuman,35;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,35;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";
bonus bUnbreakableWeapon,0;
">
@@ -73223,8 +73223,8 @@ item_db: (
Script: <"
bonus bDex,2;
bonus bSplashRange,1;
- bonus2 bAddRace,RC_DemiHuman,55;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,55;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";
bonus bUnbreakableWeapon,0;
">
@@ -73252,8 +73252,8 @@ item_db: (
}
Script: <"
bonus bDex,2;
- bonus2 bAddRace,RC_DemiHuman,35;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,35;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";
bonus bUnbreakableWeapon,0;
">
@@ -73310,13 +73310,13 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus2 bSkillAtk,GS_TRIPLEACTION,30;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus2 bCastrate,GS_TRACKING,25;
@@ -73348,13 +73348,13 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,35;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,35;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus2 bSkillAtk,GS_TRIPLEACTION,30;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus2 bAddRace,RC_Boss,getrefine();
@@ -73386,14 +73386,14 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,55;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,55;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bSplashRange,1;
bonus2 bSkillAtk,GS_TRIPLEACTION,30;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus2 bSkillAtk,GS_SPREADATTACK,getrefine() * 2;
@@ -73425,13 +73425,13 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,35;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,35;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus2 bSkillAtk,GS_TRIPLEACTION,30;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus2 bSkillAtk,GS_GROUNDDRIFT,getrefine() * 2;
@@ -74282,8 +74282,8 @@ item_db: (
Script: <"
bonus bStr,2;
bonus bDex,1;
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -74311,7 +74311,7 @@ item_db: (
Script: <"
bonus bStr,2;
bonus bDex,1;
- bonus2 bAddRace,RC_DemiHuman,95;
+ bonus2 bAddRace,RC_DemiPlayer,95;
autobonus "{ bonus2 bSkillAtk,NJ_HUUMA,100; bonus2 bSkillAtk,NJ_ISSEN,100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }";
bonus bUnbreakableWeapon,0;
">
@@ -74339,14 +74339,14 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,95;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,95;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bMatkRate,15;
autobonus "{ bonus2 bSkillAtk,NJ_HUUMA,100; bonus2 bSkillAtk,NJ_ISSEN,100; }",50,10000;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-3)*(getrefine()-3);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>8) {
bonus5 bAutoSpellOnSkill,NJ_ISSEN,AL_HEAL,10,1000,1;
@@ -74579,7 +74579,7 @@ item_db: (
Script: <"
skill TF_DOUBLE,5;
bonus bDoubleRate,25;
- bonus2 bAddRace,RC_DemiHuman,40;
+ bonus2 bAddRace,RC_DemiPlayer,40;
">
},
{
@@ -74646,8 +74646,8 @@ item_db: (
Script: <"
bonus bStr,1;
bonus bDex,1;
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
">
},
@@ -74675,7 +74675,7 @@ item_db: (
Script: <"
bonus bStr,1;
bonus bDex,1;
- bonus2 bAddRace,RC_DemiHuman,75;
+ bonus2 bAddRace,RC_DemiPlayer,75;
bonus bMatkRate,10;
bonus bUnbreakableWeapon,0;
">
@@ -74800,12 +74800,12 @@ item_db: (
noauction: true
}
Script: <"
- bonus2 bAddRace,RC_DemiHuman,75;
- bonus2 bIgnoreDefRate,RC_DemiHuman,20;
+ bonus2 bAddRace,RC_DemiPlayer,75;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,20;
bonus bUnbreakableWeapon,0;
if(getrefine()>5) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4);
- bonus2 bIgnoreDefRate,RC_DemiHuman,5;
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine()-4)*(getrefine()-4);
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,5;
}
if(getrefine()>6) bonus bAspdRate,5;
if(getrefine()>8) {
@@ -88088,7 +88088,7 @@ item_db: (
Script: <"
bonus bStr,1;
bonus bMdef,3;
- bonus2 bIgnoreDefRate,RC_DemiHuman,10;
+ bonus2 bIgnoreDefRate,RC_DemiPlayer,10;
bonus2 bIgnoreDefRate,RC_Brute,10;
bonus3 bAutoSpellWhenHit,NPC_WIDEBLEEDING,1,10;
">
@@ -89105,12 +89105,12 @@ item_db: (
Script: <"
bonus bAtkRate,5;
if(getrefine() > 5 && getrefine() <= 12) {
- bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5);
- bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5);
+ bonus2 bAddRace,RC_DemiPlayer,(getrefine() - 5);
+ bonus2 bSubRace,RC_DemiPlayer,(getrefine() - 5);
}
if(getrefine() > 12) {
- bonus2 bAddRace,RC_DemiHuman,7;
- bonus2 bSubRace,RC_DemiHuman,7;
+ bonus2 bAddRace,RC_DemiPlayer,7;
+ bonus2 bSubRace,RC_DemiPlayer,7;
}
">
diff --git a/src/map/battle.c b/src/map/battle.c
index 363fba9d7..b7ee23d09 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -300,10 +300,10 @@ int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct
int battle_attr_ratio(int atk_elem,int def_type, int def_lv)
{
- if (atk_elem < 0 || atk_elem >= ELE_MAX)
+ if (atk_elem < ELE_NEUTRAL || atk_elem >= ELE_MAX)
return 100;
- if (def_type < 0 || def_type >= ELE_MAX || def_lv < 1 || def_lv > 4)
+ if (def_type < ELE_NEUTRAL || def_type >= ELE_MAX || def_lv < 1 || def_lv > 4)
return 100;
return battle->attr_fix_table[def_lv-1][atk_elem][def_type];
@@ -322,10 +322,10 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d
if (src) sc = status->get_sc(src);
if (target) tsc = status->get_sc(target);
- if (atk_elem < 0 || atk_elem >= ELE_MAX)
+ if (atk_elem < ELE_NEUTRAL || atk_elem >= ELE_MAX)
atk_elem = rnd()%ELE_MAX;
- if (def_type < 0 || def_type >= ELE_MAX ||
+ if (def_type < ELE_NEUTRAL || def_type >= ELE_MAX ||
def_lv < 1 || def_lv > 4) {
ShowError("battle_attr_fix: unknown attr type: atk=%d def_type=%d def_lv=%d\n",atk_elem,def_type,def_lv);
return damage;
@@ -935,8 +935,6 @@ int64 battle_calc_cardfix2(struct block_list *src, struct block_list *bl, int64
// 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
@@ -1019,8 +1017,6 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
cardfix = cardfix * (100 - tsd->subrace2[s_race2]) / 100;
cardfix = cardfix * (100 - tsd->subrace[sstatus->race]) / 100;
cardfix = cardfix * (100 - tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS]) / 100;
- if( sstatus->race != RC_DEMIHUMAN )
- cardfix = cardfix * (100-tsd->subrace[RC_NONDEMIHUMAN]) / 100;
for(i=0; i < ARRAYLENGTH(tsd->add_mdef) && tsd->add_mdef[i].rate;i++) {
if(tsd->add_mdef[i].class_ == s_class) {
@@ -1076,8 +1072,6 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
cardfix = cardfix * (100 + sd->right_weapon.addsize[tstatus->size]+sd->arrow_addsize[tstatus->size]) / 100;
cardfix = cardfix * (100 + sd->right_weapon.addrace2[t_race2]) / 100;
cardfix = cardfix * (100 + sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS] + sd->arrow_addrace[is_boss(target)?RC_BOSS:RC_NONBOSS]) / 100;
- if( tstatus->race != RC_DEMIHUMAN )
- cardfix = cardfix * (100 + sd->right_weapon.addrace[RC_NONDEMIHUMAN]+sd->arrow_addrace[RC_NONDEMIHUMAN]) / 100;
}else{ // Melee attack
if( !battle_config.left_cardfix_to_right ){
cardfix=cardfix*(100+sd->right_weapon.addrace[tstatus->race])/100;
@@ -1096,8 +1090,6 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
cardfix = cardfix * (100+sd->right_weapon.addsize[tstatus->size]) / 100;
cardfix = cardfix * (100+sd->right_weapon.addrace2[t_race2]) / 100;
cardfix = cardfix * (100+sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS]) / 100;
- if( tstatus->race != RC_DEMIHUMAN )
- cardfix = cardfix * (100 + sd->right_weapon.addrace[RC_NONDEMIHUMAN]) / 100;
if( cflag&1 ){
cardfix_ = cardfix_*(100+sd->left_weapon.addrace[tstatus->race])/100;
@@ -1116,8 +1108,6 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
cardfix_ = cardfix_ * (100+sd->left_weapon.addsize[tstatus->size]) / 100;
cardfix_ = cardfix_ * (100+sd->left_weapon.addrace2[t_race2]) / 100;
cardfix_ = cardfix_ * (100+sd->left_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS]) / 100;
- if( tstatus->race != RC_DEMIHUMAN )
- cardfix_ = cardfix_*(100+sd->left_weapon.addrace[RC_NONDEMIHUMAN])/100;
}
}else{
int ele_fix = sd->right_weapon.addele[tstatus->def_ele] + sd->left_weapon.addele[tstatus->def_ele];
@@ -1143,8 +1133,6 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
cardfix = cardfix * (100 + sd->right_weapon.addsize[tstatus->size] + sd->left_weapon.addsize[tstatus->size])/100;
cardfix = cardfix * (100 + sd->right_weapon.addrace2[t_race2] + sd->left_weapon.addrace2[t_race2])/100;
cardfix = cardfix * (100 + sd->right_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS] + sd->left_weapon.addrace[is_boss(target)?RC_BOSS:RC_NONBOSS]) / 100;
- if( tstatus->race != RC_DEMIHUMAN )
- cardfix = cardfix * (100+sd->right_weapon.addrace[RC_NONDEMIHUMAN] + sd->left_weapon.addrace[RC_NONDEMIHUMAN]) / 100;
}
}
@@ -1209,8 +1197,6 @@ int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct block_
cardfix = cardfix * (100-tsd->subrace2[s_race2]) / 100;
cardfix = cardfix * (100-tsd->subrace[sstatus->race]) / 100;
cardfix = cardfix * (100-tsd->subrace[is_boss(src)?RC_BOSS:RC_NONBOSS]) / 100;
- if( sstatus->race != RC_DEMIHUMAN )
- cardfix = cardfix * (100 - tsd->subrace[RC_NONDEMIHUMAN]) / 100;
for( i = 0; i < ARRAYLENGTH(tsd->add_def) && tsd->add_def[i].rate;i++ ){
if( tsd->add_def[i].class_ == s_class )
@@ -1257,8 +1243,6 @@ 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;
if( wflag&BF_SHORT )
cardfix = cardfix * ( 100 - tsd->bonus.near_attack_def_rate ) / 100;
else // BF_LONG (there's no other choice)
diff --git a/src/map/map.h b/src/map/map.h
index 28ad6bf6f..fdc0d111f 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -256,10 +256,15 @@ enum {
RC_DEMIHUMAN,
RC_ANGEL,
RC_DRAGON,
+ RC_PLAYER,
RC_BOSS,
RC_NONBOSS,
+ RC_MAX,
RC_NONDEMIHUMAN,
- RC_MAX
+ RC_NONPLAYER,
+ RC_DEMIPLAYER,
+ RC_NONDEMIPLAYER,
+ RC_ALL = 0xFF
};
enum {
@@ -284,7 +289,8 @@ enum elements {
ELE_DARK,
ELE_GHOST,
ELE_UNDEAD,
- ELE_MAX
+ ELE_MAX,
+ ELE_ALL = 0xFF
};
/**
diff --git a/src/map/pc.c b/src/map/pc.c
index 81a0df1c9..ce4f31f25 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -2805,24 +2805,56 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
switch(type){
case SP_ADDELE:
- if(type2 >= ELE_MAX) {
+ if( (type2 >= ELE_MAX && type2 != ELE_ALL) || (type2 < ELE_NEUTRAL) ) {
ShowError("pc_bonus2: SP_ADDELE: Invalid element %d\n", type2);
break;
}
- if(!sd->state.lr_flag)
- sd->right_weapon.addele[type2]+=val;
- else if(sd->state.lr_flag == 1)
- sd->left_weapon.addele[type2]+=val;
- else if(sd->state.lr_flag == 2)
- sd->arrow_addele[type2]+=val;
+ if ( type2 == ELE_ALL ) {
+ for ( i = ELE_NEUTRAL; i < ELE_MAX; i++ ) {
+ if ( !sd->state.lr_flag )
+ sd->right_weapon.addele[i] += val;
+ else if ( sd->state.lr_flag == 1 )
+ sd->left_weapon.addele[i] += val;
+ else if ( sd->state.lr_flag == 2 )
+ sd->arrow_addele[i] += val;
+ }
+ } else {
+ if(!sd->state.lr_flag)
+ sd->right_weapon.addele[type2] += val;
+ else if(sd->state.lr_flag == 1)
+ sd->left_weapon.addele[type2] += val;
+ else if(sd->state.lr_flag == 2)
+ sd->arrow_addele[type2] += val;
+ }
break;
case SP_ADDRACE:
- if(!sd->state.lr_flag)
- sd->right_weapon.addrace[type2]+=val;
- else if(sd->state.lr_flag == 1)
- sd->left_weapon.addrace[type2]+=val;
- else if(sd->state.lr_flag == 2)
- sd->arrow_addrace[type2]+=val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_ADDRACE: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ) {
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ if ( !sd->state.lr_flag )
+ sd->right_weapon.addrace[i] += val;
+ else if ( sd->state.lr_flag == 1 )
+ sd->left_weapon.addrace[i] += val;
+ else if ( sd->state.lr_flag == 2 )
+ sd->arrow_addrace[i] += val;
+ }
+ } else {
+ if(!sd->state.lr_flag)
+ sd->right_weapon.addrace[type2] += val;
+ else if(sd->state.lr_flag == 1)
+ sd->left_weapon.addrace[type2] += val;
+ else if(sd->state.lr_flag == 2)
+ sd->arrow_addrace[type2] += val;
+ }
break;
case SP_ADDSIZE:
if(!sd->state.lr_flag)
@@ -2833,16 +2865,40 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
sd->arrow_addsize[type2]+=val;
break;
case SP_SUBELE:
- if(type2 >= ELE_MAX) {
+ if( (type2 >= ELE_MAX && type2 != ELE_ALL) || (type2 < ELE_NEUTRAL) ) {
ShowError("pc_bonus2: SP_SUBELE: Invalid element %d\n", type2);
break;
}
- if(sd->state.lr_flag != 2)
- sd->subele[type2]+=val;
+ if(sd->state.lr_flag != 2) {
+ if ( type2 == ELE_ALL ) {
+ for ( i = ELE_NEUTRAL; i < ELE_MAX; i++ ){
+ sd->subele[i] += val;
+ }
+ } else {
+ sd->subele[type2] += val;
+ }
+ }
break;
case SP_SUBRACE:
- if(sd->state.lr_flag != 2)
- sd->subrace[type2]+=val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_SUBRACE: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if(sd->state.lr_flag != 2) {
+ if (type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->subrace[i] += val;
+ }
+ } else {
+ sd->subrace[type2]+=val;
+ }
+ }
break;
case SP_ADDEFF:
if (type2 > SC_MAX) {
@@ -2871,24 +2927,57 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
sd->reseff[type2-SC_COMMON_MIN]= cap_value(i, 0, 10000);
break;
case SP_MAGIC_ADDELE:
- if(type2 >= ELE_MAX) {
+ if( (type2 >= ELE_MAX && type2 != ELE_ALL) || (type2 < ELE_NEUTRAL) ) {
ShowError("pc_bonus2: SP_MAGIC_ADDELE: Invalid element %d\n", type2);
break;
}
- if(sd->state.lr_flag != 2)
- sd->magic_addele[type2]+=val;
+ if ( sd->state.lr_flag != 2 ) {
+ if ( type2 == ELE_ALL ) {
+ for ( i = ELE_NEUTRAL; i < ELE_MAX; i++ )
+ sd->magic_addele[i] += val;
+ } else {
+ sd->magic_addele[type2] += val;
+ }
+ }
break;
case SP_MAGIC_ADDRACE:
- if(sd->state.lr_flag != 2)
- sd->magic_addrace[type2]+=val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_MAGIC_ADDRACE: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if(sd->state.lr_flag != 2){
+ if ( type2 >= RC_MAX ){
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->magic_addrace[i] += val;
+ }
+ } else {
+ sd->magic_addrace[type2]+=val;
+ }
+ }
break;
case SP_MAGIC_ADDSIZE:
if(sd->state.lr_flag != 2)
sd->magic_addsize[type2]+=val;
break;
case SP_MAGIC_ATK_ELE:
- if(sd->state.lr_flag != 2)
- sd->magic_atk_ele[type2]+=val;
+ if( (type2 >= ELE_MAX && type2 != ELE_ALL) || (type2 < ELE_NEUTRAL) ) {
+ ShowError("pc_bonus2: SP_MAGIC_ATK_ELE: Invalid element %d\n", type2);
+ break;
+ }
+ if ( sd->state.lr_flag != 2 ) {
+ if ( type2 == ELE_ALL ) {
+ for ( i = ELE_NEUTRAL; i < ELE_MAX; i++ )
+ sd->magic_atk_ele[i] += val;
+ } else {
+ sd->magic_atk_ele[type2] += val;
+ }
+ }
break;
case SP_ADD_DAMAGE_CLASS:
switch (sd->state.lr_flag) {
@@ -3037,19 +3126,40 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
}
break;
case SP_WEAPON_COMA_ELE:
- if(type2 >= ELE_MAX) {
+ if( (type2 >= ELE_MAX && type2 != ELE_ALL) || (type2 < ELE_NEUTRAL) ) {
ShowError("pc_bonus2: SP_WEAPON_COMA_ELE: Invalid element %d\n", type2);
break;
}
if(sd->state.lr_flag == 2)
break;
- sd->weapon_coma_ele[type2] += val;
+ if ( type2 == ELE_ALL ) {
+ for ( i = ELE_NEUTRAL; i < ELE_MAX; i++ )
+ sd->weapon_coma_ele[i] += val;
+ } else {
+ sd->weapon_coma_ele[type2] += val;
+ }
sd->special_state.bonus_coma = 1;
break;
case SP_WEAPON_COMA_RACE:
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_WEAPON_COMA_RACE: Invalid Race(%d)\n",type2);
+ break;
+ }
if(sd->state.lr_flag == 2)
break;
- sd->weapon_coma_race[type2] += val;
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->weapon_coma_race[i] += val;
+ }
+ } else {
+ sd->weapon_coma_race[type2] += val;
+ }
sd->special_state.bonus_coma = 1;
break;
case SP_WEAPON_ATK:
@@ -3061,8 +3171,25 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
sd->weapon_atk_rate[type2]+=val;
break;
case SP_CRITICAL_ADDRACE:
- if(sd->state.lr_flag != 2)
- sd->critaddrace[type2] += val*10;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_CRITICAL_ADDRACE: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if(sd->state.lr_flag != 2){
+ if ( type2 >= RC_MAX ){
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->critaddrace[i] += val*10;
+ }
+ } else {
+ sd->critaddrace[type2] += val*10;
+ }
+ }
break;
case SP_ADDEFF_WHENHIT:
if (type2 > SC_MAX) {
@@ -3233,12 +3360,46 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
sd->itemhealrate[i].rate += val;
break;
case SP_EXP_ADDRACE:
- if(sd->state.lr_flag != 2)
- sd->expaddrace[type2]+=val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_EXP_ADDRACE: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if(sd->state.lr_flag != 2) {
+ if ( type2 >= RC_MAX ){
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->expaddrace[i] += val;
+ }
+ } else {
+ sd->expaddrace[type2] += val;
+ }
+ }
break;
case SP_SP_GAIN_RACE:
- if(sd->state.lr_flag != 2)
- sd->sp_gain_race[type2]+=val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_SP_GAIN_RACE: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if(sd->state.lr_flag != 2) {
+ if ( type2 >= RC_MAX ){
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->sp_gain_race[i] += val;
+ }
+ } else {
+ sd->sp_gain_race[type2] += val;
+ }
+ }
break;
case SP_ADD_MONSTER_DROP_ITEM:
if (sd->state.lr_flag != 2)
@@ -3257,19 +3418,61 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
}
break;
case SP_HP_DRAIN_VALUE_RACE:
- if(!sd->state.lr_flag) {
- sd->right_weapon.hp_drain[type2].value += val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_HP_DRAIN_VALUE_RACE: Invalid Race(%d)\n",type2);
+ break;
}
- else if(sd->state.lr_flag == 1) {
- sd->left_weapon.hp_drain[type2].value += val;
+ if ( type2 >= RC_MAX ){
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ if(!sd->state.lr_flag) {
+ sd->right_weapon.hp_drain[i].value += val;
+ }
+ else if(sd->state.lr_flag == 1) {
+ sd->left_weapon.hp_drain[i].value += val;
+ }
+ }
+ } else {
+ if(!sd->state.lr_flag) {
+ sd->right_weapon.hp_drain[type2].value += val;
+ }
+ else if(sd->state.lr_flag == 1) {
+ sd->left_weapon.hp_drain[type2].value += val;
+ }
}
break;
case SP_SP_DRAIN_VALUE_RACE:
- if(!sd->state.lr_flag) {
- sd->right_weapon.sp_drain[type2].value += val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_SP_DRAIN_VALUE_RACE: Invalid Race(%d)\n",type2);
+ break;
}
- else if(sd->state.lr_flag == 1) {
- sd->left_weapon.sp_drain[type2].value += val;
+ if ( type2 >= RC_MAX ){
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ if(!sd->state.lr_flag) {
+ sd->right_weapon.sp_drain[i].value += val;
+ }
+ else if(sd->state.lr_flag == 1) {
+ sd->left_weapon.sp_drain[i].value += val;
+ }
+ }
+ } else {
+ if(!sd->state.lr_flag) {
+ sd->right_weapon.sp_drain[type2].value += val;
+ }
+ else if(sd->state.lr_flag == 1) {
+ sd->left_weapon.sp_drain[type2].value += val;
+ }
}
break;
case SP_IGNORE_MDEF_RATE:
@@ -3281,12 +3484,46 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
sd->ignore_def[type2] += val;
break;
case SP_SP_GAIN_RACE_ATTACK:
- if(sd->state.lr_flag != 2)
- sd->sp_gain_race_attack[type2] = cap_value(sd->sp_gain_race_attack[type2] + val, 0, INT16_MAX);
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_SP_GAIN_RACE_ATTACK: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if(sd->state.lr_flag != 2) {
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->sp_gain_race_attack[i] = cap_value(sd->sp_gain_race_attack[i] + val, 0, INT16_MAX);
+ }
+ } else {
+ sd->sp_gain_race_attack[type2] = cap_value(sd->sp_gain_race_attack[type2] + val, 0, INT16_MAX);
+ }
+ }
break;
case SP_HP_GAIN_RACE_ATTACK:
- if(sd->state.lr_flag != 2)
- sd->hp_gain_race_attack[type2] = cap_value(sd->hp_gain_race_attack[type2] + val, 0, INT16_MAX);
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_HP_GAIN_RACE_ATTACK: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if(sd->state.lr_flag != 2) {
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->hp_gain_race_attack[i] = cap_value(sd->hp_gain_race_attack[i] + val, 0, INT16_MAX);
+ }
+ } else {
+ sd->hp_gain_race_attack[type2] = cap_value(sd->hp_gain_race_attack[type2] + val, 0, INT16_MAX);
+ }
+ }
break;
case SP_SKILL_USE_SP_RATE: //bonus2 bSkillUseSPrate,n,x;
if(sd->state.lr_flag == 2)
@@ -3392,8 +3629,25 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
break;
#ifdef RENEWAL
case SP_RACE_TOLERANCE:
- if ( sd->state.lr_flag != 2 )
- sd->race_tolerance[type2] += val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus2: SP_RACE_TOLERANCE: Invalid Race(%d)\n",type2);
+ break;
+ }
+ if(sd->state.lr_flag != 2) {
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->race_tolerance[i] += val;
+ }
+ } else {
+ sd->race_tolerance[type2] += val;
+ }
+ }
break;
#endif
default:
@@ -3405,6 +3659,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
{
+ int i;
nullpo_ret(sd);
switch(type){
@@ -3454,23 +3709,69 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
}
break;
case SP_HP_DRAIN_RATE_RACE:
- if(!sd->state.lr_flag) {
- sd->right_weapon.hp_drain[type2].rate += type3;
- sd->right_weapon.hp_drain[type2].per += val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus3: SP_HP_DRAIN_RATE_RACE: Invalid Race(%d)\n",type2);
+ break;
}
- else if(sd->state.lr_flag == 1) {
- sd->left_weapon.hp_drain[type2].rate += type3;
- sd->left_weapon.hp_drain[type2].per += val;
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ if(!sd->state.lr_flag) {
+ sd->right_weapon.hp_drain[i].rate += type3;
+ sd->right_weapon.hp_drain[i].per += val;
+ }
+ else if(sd->state.lr_flag == 1) {
+ sd->left_weapon.hp_drain[i].rate += type3;
+ sd->left_weapon.hp_drain[i].per += val;
+ }
+ }
+ } else {
+ if(!sd->state.lr_flag) {
+ sd->right_weapon.hp_drain[type2].rate += type3;
+ sd->right_weapon.hp_drain[type2].per += val;
+ }
+ else if(sd->state.lr_flag == 1) {
+ sd->left_weapon.hp_drain[type2].rate += type3;
+ sd->left_weapon.hp_drain[type2].per += val;
+ }
}
break;
case SP_SP_DRAIN_RATE_RACE:
- if(!sd->state.lr_flag) {
- sd->right_weapon.sp_drain[type2].rate += type3;
- sd->right_weapon.sp_drain[type2].per += val;
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus3: SP_SP_DRAIN_RATE_RACE: Invalid Race(%d)\n",type2);
+ break;
}
- else if(sd->state.lr_flag == 1) {
- sd->left_weapon.sp_drain[type2].rate += type3;
- sd->left_weapon.sp_drain[type2].per += val;
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ if(!sd->state.lr_flag) {
+ sd->right_weapon.sp_drain[i].rate += type3;
+ sd->right_weapon.sp_drain[i].per += val;
+ }
+ else if(sd->state.lr_flag == 1) {
+ sd->left_weapon.sp_drain[i].rate += type3;
+ sd->left_weapon.sp_drain[i].per += val;
+ }
+ }
+ } else {
+ if(!sd->state.lr_flag) {
+ sd->right_weapon.sp_drain[type2].rate += type3;
+ sd->right_weapon.sp_drain[type2].per += val;
+ }
+ else if(sd->state.lr_flag == 1) {
+ sd->left_weapon.sp_drain[type2].rate += type3;
+ sd->left_weapon.sp_drain[type2].per += val;
+ }
}
break;
case SP_ADDEFF:
@@ -3501,21 +3802,33 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
break;
case SP_ADDELE:
- if (type2 > ELE_MAX) {
- ShowWarning("pc_bonus3 (SP_ADDELE): element %d is out of range.\n", type2);
+ if( (type2 >= ELE_MAX && type2 != ELE_ALL) || (type2 < ELE_NEUTRAL) ) {
+ ShowError("pc_bonus3: SP_ADDELE: Invalid element %d\n", type2);
break;
}
- if (sd->state.lr_flag != 2)
- pc_bonus_addele(sd, (unsigned char)type2, type3, val);
+ if ( sd->state.lr_flag != 2 ) {
+ if ( type2 == ELE_ALL ) {
+ for ( i = ELE_NEUTRAL; i < ELE_MAX; i++ )
+ pc_bonus_addele(sd, (unsigned char)i, type3, val);
+ } else {
+ pc_bonus_addele(sd, (unsigned char)type2, type3, val);
+ }
+ }
break;
case SP_SUBELE:
- if (type2 > ELE_MAX) {
- ShowWarning("pc_bonus3 (SP_SUBELE): element %d is out of range.\n", type2);
+ if( (type2 >= ELE_MAX && type2 != ELE_ALL) || (type2 < ELE_NEUTRAL) ) {
+ ShowError("pc_bonus3: SP_SUBELE: Invalid element %d\n", type2);
break;
}
- if (sd->state.lr_flag != 2)
- pc_bonus_subele(sd, (unsigned char)type2, type3, val);
+ if ( sd->state.lr_flag != 2 ) {
+ if ( type2 == ELE_ALL ) {
+ for ( i = ELE_NEUTRAL; i < ELE_MAX; i++ )
+ pc_bonus_subele(sd, (unsigned char)i, type3, val);
+ } else {
+ pc_bonus_subele(sd, (unsigned char)type2, type3, val);
+ }
+ }
break;
case SP_SP_VANISH_RATE:
if(sd->state.lr_flag != 2) {
@@ -3534,6 +3847,7 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
}
int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4,int val) {
+ int i;
nullpo_ret(sd);
switch(type) {
@@ -3566,27 +3880,55 @@ int pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type4
break;
case SP_SET_DEF_RACE: //bonus4 bSetDefRace,n,x,r,y;
- if( type2 >= RC_MAX ) {
- ShowWarning("pc_bonus4 (DEF_SET): %d is not supported.\n", type2);
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus4: SP_SET_DEF_RACE: Invalid Race(%d)\n",type2);
break;
}
if(sd->state.lr_flag == 2)
break;
- sd->def_set_race[type2].rate = type3;
- sd->def_set_race[type2].tick = type4;
- sd->def_set_race[type2].value = val;
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->def_set_race[i].rate = type3;
+ sd->def_set_race[i].tick = type4;
+ sd->def_set_race[i].value = val;
+ }
+ } else {
+ sd->def_set_race[type2].rate = type3;
+ sd->def_set_race[type2].tick = type4;
+ sd->def_set_race[type2].value = val;
+ }
break;
case SP_SET_MDEF_RACE: //bonus4 bSetMDefRace,n,x,r,y;
- if( type2 >= RC_MAX ) {
- ShowWarning("pc_bonus4 (MDEF_SET): %d is not supported.\n", type2);
+ if (type2 == RC_MAX || (type2 > RC_NONDEMIPLAYER && type2 != RC_ALL) || type2 < RC_FORMLESS ){
+ ShowWarning("pc_bonus4: SP_SET_MDEF_RACE: Invalid Race(%d)\n",type2);
break;
}
if(sd->state.lr_flag == 2)
break;
- sd->mdef_set_race[type2].rate = type3;
- sd->mdef_set_race[type2].tick = type4;
- sd->mdef_set_race[type2].value = val;
+ if ( type2 >= RC_MAX ) {
+ for ( i = RC_FORMLESS; i < RC_MAX; i++ ){
+ if ( (type2 == RC_NONPLAYER && i == RC_PLAYER) ||
+ (type2 == RC_NONDEMIHUMAN && i == RC_DEMIHUMAN) ||
+ (type2 == RC_DEMIPLAYER && (i != RC_PLAYER && i != RC_DEMIHUMAN)) ||
+ (type2 == RC_NONDEMIPLAYER && (i == RC_PLAYER || i == RC_DEMIHUMAN))
+ )
+ continue;
+ sd->mdef_set_race[i].rate = type3;
+ sd->mdef_set_race[i].tick = type4;
+ sd->mdef_set_race[i].value = val;
+ }
+ } else {
+ sd->mdef_set_race[type2].rate = type3;
+ sd->mdef_set_race[type2].tick = type4;
+ sd->mdef_set_race[type2].value = val;
+ }
break;
case SP_ADDEFF:
@@ -10491,8 +10833,8 @@ int pc_readdb(void) {
// Reset then read attr_fix
for(i=0;i<4;i++)
- for(j=0;j<ELE_MAX;j++)
- for(k=0;k<ELE_MAX;k++)
+ for ( j = ELE_NEUTRAL; j<ELE_MAX; j++ )
+ for ( k = ELE_NEUTRAL; k<ELE_MAX; k++ )
battle->attr_fix_table[i][j][k]=100;
sprintf(line, "%s/"DBPATH"attr_fix.txt", map->db_path);
@@ -10519,13 +10861,13 @@ int pc_readdb(void) {
lv=atoi(split[0]);
n=atoi(split[1]);
count++;
- for(i=0;i<n && i<ELE_MAX;){
+ for ( i = ELE_NEUTRAL; i<n && i<ELE_MAX; ) {
if( !fgets(line, sizeof(line), fp) )
break;
if(line[0]=='/' && line[1]=='/')
continue;
- for(j=0,p=line;j<n && j<ELE_MAX && p;j++){
+ for ( j = ELE_NEUTRAL, p = line; j<n && j<ELE_MAX && p; j++ ) {
while(*p==32 && *p>0)
p++;
battle->attr_fix_table[lv-1][i][j]=atoi(p);
diff --git a/src/map/status.c b/src/map/status.c
index 299b732ff..fd75ef81c 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -2222,7 +2222,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
}
bstatus->aspd_rate = 1000;
bstatus->ele_lv = 1;
- bstatus->race = RC_DEMIHUMAN;
+ bstatus->race = RC_PLAYER;
// Autobonus
pc->delautobonus(sd,sd->autobonus,ARRAYLENGTH(sd->autobonus),true);
@@ -3032,7 +3032,7 @@ int status_calc_npc_(struct npc_data *nd, enum e_status_calc_opt opt) {
nstatus->def_ele = ELE_NEUTRAL;
nstatus->ele_lv = 1;
- nstatus->race = RC_DEMIHUMAN;
+ nstatus->race = RC_PLAYER;
nstatus->size = nd->size;
nstatus->rhw.range = 1 + nstatus->size;
nstatus->mode = (MD_CANMOVE|MD_CANATTACK);