summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/pre-re/item_db.conf22
-rw-r--r--db/re/item_db.conf28
-rw-r--r--src/map/status.c60
3 files changed, 66 insertions, 44 deletions
diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf
index 6bca307e7..2fde6314b 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -65550,14 +65550,17 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
- nocart: true
nostorage: true
- nogstorage: true
+ nocart: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ATKER_BLOOD,3600000,15; ">
+ Script: <"
+ specialeffect2 EF_SPELLBREAKER;
+ sc_start SC_ATKER_BLOOD,3600000,15;
+ ">
},
{
Id: 12299
@@ -65569,14 +65572,17 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
- nocart: true
nostorage: true
- nogstorage: true
+ nocart: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_TARGET_BLOOD,3600000,10; ">
+ Script: <"
+ specialeffect2 EF_GUARD;
+ sc_start SC_TARGET_BLOOD,3600000,10;
+ ">
},
{
Id: 12300
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index b7fefa9bd..a0d839190 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -80454,14 +80454,17 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
- nocart: true
nostorage: true
- nogstorage: true
+ nocart: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ATKER_BLOOD,3600000,15; ">
+ Script: <"
+ specialeffect2 EF_SPELLBREAKER;
+ sc_start SC_ATKER_BLOOD,3600000,15;
+ ">
},
{
Id: 12299
@@ -80473,14 +80476,17 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
- nocart: true
nostorage: true
- nogstorage: true
+ nocart: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_TARGET_BLOOD,3600000,10; ">
+ Script: <"
+ specialeffect2 EF_GUARD;
+ sc_start SC_TARGET_BLOOD,3600000,10;
+ ">
},
{
Id: 12300
@@ -86793,7 +86799,7 @@ item_db: (
}
Script: <"
sc_start SC_ATTHASTE_POTION1,1800000,4;
- specialeffect EF_POTION_CON; /* NOTE: No special effect when used. */
+ specialeffect2 EF_POTION_CON; /* NOTE: No special effect when used. */
">
},
{
@@ -86815,7 +86821,7 @@ item_db: (
}
Script: <"
sc_start SC_ATTHASTE_POTION2,1800000,6;
- specialeffect EF_POTION_; /* NOTE: No special effect when used. */
+ specialeffect2 EF_POTION_; /* NOTE: No special effect when used. */
">
},
{
@@ -86837,7 +86843,7 @@ item_db: (
}
Script: <"
sc_start SC_ATTHASTE_POTION3,1800000,9;
- specialeffect EF_POTION_BERSERK; /* NOTE: No special effect when used. */
+ specialeffect2 EF_POTION_BERSERK; /* NOTE: No special effect when used. */
">
},
{
diff --git a/src/map/status.c b/src/map/status.c
index 4cd73d3ac..7567fc129 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -759,22 +759,22 @@ void initChangeTables(void) {
// Storing the target job rather than simply SC_SOULLINK simplifies code later on.
status->dbs->Skill2SCTable[SL_ALCHEMIST] = (sc_type)MAPID_ALCHEMIST,
- status->dbs->Skill2SCTable[SL_MONK] = (sc_type)MAPID_MONK,
- status->dbs->Skill2SCTable[SL_STAR] = (sc_type)MAPID_STAR_GLADIATOR,
- status->dbs->Skill2SCTable[SL_SAGE] = (sc_type)MAPID_SAGE,
- status->dbs->Skill2SCTable[SL_CRUSADER] = (sc_type)MAPID_CRUSADER,
- status->dbs->Skill2SCTable[SL_SUPERNOVICE] = (sc_type)MAPID_SUPER_NOVICE,
- status->dbs->Skill2SCTable[SL_KNIGHT] = (sc_type)MAPID_KNIGHT,
- status->dbs->Skill2SCTable[SL_WIZARD] = (sc_type)MAPID_WIZARD,
- status->dbs->Skill2SCTable[SL_PRIEST] = (sc_type)MAPID_PRIEST,
- status->dbs->Skill2SCTable[SL_BARDDANCER] = (sc_type)MAPID_BARDDANCER,
- status->dbs->Skill2SCTable[SL_ROGUE] = (sc_type)MAPID_ROGUE,
- status->dbs->Skill2SCTable[SL_ASSASIN] = (sc_type)MAPID_ASSASSIN,
- status->dbs->Skill2SCTable[SL_BLACKSMITH] = (sc_type)MAPID_BLACKSMITH,
- status->dbs->Skill2SCTable[SL_HUNTER] = (sc_type)MAPID_HUNTER,
- status->dbs->Skill2SCTable[SL_SOULLINKER] = (sc_type)MAPID_SOUL_LINKER,
-
- //Status that don't have a skill associated.
+ status->dbs->Skill2SCTable[SL_MONK] = (sc_type)MAPID_MONK,
+ status->dbs->Skill2SCTable[SL_STAR] = (sc_type)MAPID_STAR_GLADIATOR,
+ status->dbs->Skill2SCTable[SL_SAGE] = (sc_type)MAPID_SAGE,
+ status->dbs->Skill2SCTable[SL_CRUSADER] = (sc_type)MAPID_CRUSADER,
+ status->dbs->Skill2SCTable[SL_SUPERNOVICE] = (sc_type)MAPID_SUPER_NOVICE,
+ status->dbs->Skill2SCTable[SL_KNIGHT] = (sc_type)MAPID_KNIGHT,
+ status->dbs->Skill2SCTable[SL_WIZARD] = (sc_type)MAPID_WIZARD,
+ status->dbs->Skill2SCTable[SL_PRIEST] = (sc_type)MAPID_PRIEST,
+ status->dbs->Skill2SCTable[SL_BARDDANCER] = (sc_type)MAPID_BARDDANCER,
+ status->dbs->Skill2SCTable[SL_ROGUE] = (sc_type)MAPID_ROGUE,
+ status->dbs->Skill2SCTable[SL_ASSASIN] = (sc_type)MAPID_ASSASSIN,
+ status->dbs->Skill2SCTable[SL_BLACKSMITH] = (sc_type)MAPID_BLACKSMITH,
+ status->dbs->Skill2SCTable[SL_HUNTER] = (sc_type)MAPID_HUNTER,
+ status->dbs->Skill2SCTable[SL_SOULLINKER] = (sc_type)MAPID_SOUL_LINKER,
+
+ // Status that don't have a skill associated.
status->dbs->IconChangeTable[SC_WEIGHTOVER50] = SI_WEIGHTOVER50;
status->dbs->IconChangeTable[SC_WEIGHTOVER90] = SI_WEIGHTOVER90;
status->dbs->IconChangeTable[SC_ATTHASTE_POTION1] = SI_ATTHASTE_POTION1;
@@ -802,7 +802,8 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_SPL_MATK] = SI_SPL_MATK;
status->dbs->IconChangeTable[SC_PLUSATTACKPOWER] = SI_PLUSATTACKPOWER;
status->dbs->IconChangeTable[SC_PLUSMAGICPOWER] = SI_PLUSMAGICPOWER;
- //Cash Items
+
+ // Cash Items
status->dbs->IconChangeTable[SC_FOOD_STR_CASH] = SI_FOOD_STR_CASH;
status->dbs->IconChangeTable[SC_FOOD_AGI_CASH] = SI_FOOD_AGI_CASH;
status->dbs->IconChangeTable[SC_FOOD_VIT_CASH] = SI_FOOD_VIT_CASH;
@@ -824,18 +825,21 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_ATKER_BLOOD] = SI_ATKER_BLOOD;
status->dbs->IconChangeTable[SC_TARGET_BLOOD] = SI_TARGET_BLOOD;
status->dbs->IconChangeTable[SC_ACARAJE] = SI_ACARAJE;
+
// Mercenary Bonus Effects
status->dbs->IconChangeTable[SC_MER_FLEE] = SI_MER_FLEE;
status->dbs->IconChangeTable[SC_MER_ATK] = SI_MER_ATK;
status->dbs->IconChangeTable[SC_MER_HP] = SI_MER_HP;
status->dbs->IconChangeTable[SC_MER_SP] = SI_MER_SP;
status->dbs->IconChangeTable[SC_MER_HIT] = SI_MER_HIT;
+
// Warlock Spheres
status->dbs->IconChangeTable[SC_SUMMON1] = SI_SPHERE_1;
status->dbs->IconChangeTable[SC_SUMMON2] = SI_SPHERE_2;
status->dbs->IconChangeTable[SC_SUMMON3] = SI_SPHERE_3;
status->dbs->IconChangeTable[SC_SUMMON4] = SI_SPHERE_4;
status->dbs->IconChangeTable[SC_SUMMON5] = SI_SPHERE_5;
+
// Warlock Preserved spells
status->dbs->IconChangeTable[SC_SPELLBOOK1] = SI_SPELLBOOK1;
status->dbs->IconChangeTable[SC_SPELLBOOK2] = SI_SPELLBOOK2;
@@ -873,7 +877,7 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_BANANA_BOMB] = SI_BANANA_BOMB;
status->dbs->IconChangeTable[SC_BANANA_BOMB_SITDOWN_POSTDELAY] = SI_BANANA_BOMB_SITDOWN_POSTDELAY;
- //Genetics New Food Items Status Icons
+ // Genetics New Food Items Status Icons
status->dbs->IconChangeTable[SC_SAVAGE_STEAK] = SI_SAVAGE_STEAK;
status->dbs->IconChangeTable[SC_COCKTAIL_WARG_BLOOD] = SI_COCKTAIL_WARG_BLOOD;
status->dbs->IconChangeTable[SC_MINOR_BBQ] = SI_MINOR_BBQ;
@@ -922,7 +926,7 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_LJOSALFAR] = SI_LJOSALFAR;
status->dbs->IconChangeTable[SC_MERMAID_LONGING] = SI_MERMAID_LONGING;
- //Other SC which are not necessarily associated to skills.
+ // Other SC which are not necessarily associated to skills.
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION1] = SCB_ASPD;
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION2] = SCB_ASPD;
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION3] = SCB_ASPD;
@@ -971,6 +975,8 @@ void initChangeTables(void) {
status->dbs->ChangeFlagTable[SC_ATKER_BLOOD] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_WALKSPEED] |= SCB_SPEED;
status->dbs->ChangeFlagTable[SC_ITEMSCRIPT] |= SCB_ALL;
+ status->dbs->ChangeFlagTable[SC_TARGET_BLOOD] |= SCB_ALL;
+
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR;
status->dbs->ChangeFlagTable[SC_FOOD_AGI_CASH] = SCB_AGI;
@@ -978,12 +984,14 @@ void initChangeTables(void) {
status->dbs->ChangeFlagTable[SC_FOOD_DEX_CASH] = SCB_DEX;
status->dbs->ChangeFlagTable[SC_FOOD_INT_CASH] = SCB_INT;
status->dbs->ChangeFlagTable[SC_FOOD_LUK_CASH] = SCB_LUK;
+
// Mercenary Bonus Effects
status->dbs->ChangeFlagTable[SC_MER_FLEE] |= SCB_FLEE;
status->dbs->ChangeFlagTable[SC_MER_ATK] |= SCB_WATK;
status->dbs->ChangeFlagTable[SC_MER_HP] |= SCB_MAXHP;
status->dbs->ChangeFlagTable[SC_MER_SP] |= SCB_MAXSP;
status->dbs->ChangeFlagTable[SC_MER_HIT] |= SCB_HIT;
+
// Guillotine Cross Poison Effects
status->dbs->ChangeFlagTable[SC_PARALYSE] |= SCB_FLEE|SCB_SPEED|SCB_ASPD;
status->dbs->ChangeFlagTable[SC_VENOMBLEED] |= SCB_MAXHP;
@@ -991,9 +999,11 @@ void initChangeTables(void) {
status->dbs->ChangeFlagTable[SC_DEATHHURT] |= SCB_REGEN;
status->dbs->ChangeFlagTable[SC_PYREXIA] |= SCB_HIT|SCB_FLEE;
status->dbs->ChangeFlagTable[SC_OBLIVIONCURSE] |= SCB_REGEN;
+
// RG status
status->dbs->ChangeFlagTable[SC_SHIELDSPELL_DEF] |= SCB_WATK;
status->dbs->ChangeFlagTable[SC_SHIELDSPELL_REF] |= SCB_DEF;
+
// Meca status
status->dbs->ChangeFlagTable[SC_STEALTHFIELD_MASTER] |= SCB_SPEED;
@@ -6613,16 +6623,16 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ
}
//Item resistance (only applies to rate%)
- if(sd && SC_COMMON_MIN <= type && type <= SC_COMMON_MAX)
+ if (sd && SC_COMMON_MIN <= type && type <= SC_COMMON_MAX)
{
- if( sd->reseff[type-SC_COMMON_MIN] > 0 )
- rate -= rate*sd->reseff[type-SC_COMMON_MIN]/10000;
- if( sd->sc.data[SC_TARGET_BLOOD] )
- rate -= rate*sd->sc.data[SC_TARGET_BLOOD]->val1/100;
+ if (sd->reseff[type-SC_COMMON_MIN] > 0)
+ rate -= rate * sd->reseff[type-SC_COMMON_MIN] / 10000;
+ if (sd->sc.data[SC_TARGET_BLOOD])
+ rate -= rate * sd->sc.data[SC_TARGET_BLOOD]->val1 / 100;
}
//Aegis accuracy
- if(rate > 0 && rate%10 != 0) rate += (10 - rate%10);
+ if (rate > 0 && rate%10 != 0) rate += (10 - rate%10);
}
if (!(rnd()%10000 < rate))