diff options
author | Dastgir <dastgir@users.noreply.github.com> | 2015-06-12 20:03:10 +0530 |
---|---|---|
committer | Dastgir <dastgir@users.noreply.github.com> | 2015-06-12 20:03:10 +0530 |
commit | a989eeeba89436dbf088ed115e18228e4a43a117 (patch) | |
tree | 30f0e20ade2caa43496e1b4d4a847b28239ae3c9 | |
parent | 64dfaf2c8c8be7ff288ea88a64eddfeae1e364a4 (diff) | |
parent | 46c11b354fbc9e4f2d581142691b926d81e77c0d (diff) | |
download | hercules-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.txt | 12 | ||||
-rw-r--r-- | db/pet_db.txt | 8 | ||||
-rw-r--r-- | db/pre-re/item_combo_db.txt | 18 | ||||
-rw-r--r-- | db/pre-re/item_db.conf | 550 | ||||
-rw-r--r-- | src/map/battle.c | 24 | ||||
-rw-r--r-- | src/map/map.h | 10 | ||||
-rw-r--r-- | src/map/pc.c | 506 | ||||
-rw-r--r-- | src/map/status.c | 4 |
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); |