summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/mob.c4
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/status.c3
-rw-r--r--src/map/status.h2
4 files changed, 9 insertions, 2 deletions
diff --git a/src/map/mob.c b/src/map/mob.c
index d9a3f6776..a6e2c7c21 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -2351,7 +2351,9 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
// Increase drop rate if user has SC_CASH_RECEIVEITEM
if (sd && sd->sc.data[SC_CASH_RECEIVEITEM]) // now rig the drop rate to never be over 90% unless it is originally >90%.
- drop_rate = max(drop_rate,cap_value((int)(0.5+drop_rate*(sd->sc.data[SC_CASH_RECEIVEITEM]->val1)/100.),0,9000));
+ drop_rate = max(drop_rate, cap_value((int)(0.5 + drop_rate * (sd->sc.data[SC_CASH_RECEIVEITEM]->val1) / 100.), 0, 9000));
+ if (sd && sd->sc.data[SC_OVERLAPEXPUP])
+ drop_rate = max(drop_rate, cap_value((int)(0.5 + drop_rate * (sd->sc.data[SC_OVERLAPEXPUP]->val2) / 100.), 0, 9000));
#ifdef RENEWAL_DROP
if( drop_modifier != 100 ) {
drop_rate = drop_rate * drop_modifier / 100;
diff --git a/src/map/pc.c b/src/map/pc.c
index 577123628..0313428ab 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -6553,6 +6553,8 @@ void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned in
if (sd->sc.data[SC_CASH_PLUSEXP])
bonus += sd->sc.data[SC_CASH_PLUSEXP]->val1;
+ if (sd->sc.data[SC_OVERLAPEXPUP])
+ bonus += sd->sc.data[SC_OVERLAPEXPUP]->val1;
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus/100., 1, UINT_MAX);
diff --git a/src/map/status.c b/src/map/status.c
index 699e7342b..da2892f98 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -830,6 +830,7 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_ATKER_ASPD] = SI_ATKER_ASPD;
status->dbs->IconChangeTable[SC_ATKER_MOVESPEED] = SI_ATKER_MOVESPEED;
status->dbs->IconChangeTable[SC_CUP_OF_BOZA] = SI_CUP_OF_BOZA;
+ status->dbs->IconChangeTable[SC_OVERLAPEXPUP] = SI_OVERLAPEXPUP;
// Eden Crystal Synthesis
status->dbs->IconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1;
@@ -8524,6 +8525,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
break;
case SC_CASH_PLUSEXP:
case SC_CASH_PLUSONLYJOBEXP:
+ case SC_OVERLAPEXPUP:
if (val1 < 0)
val1 = 0;
break;
@@ -9374,6 +9376,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_CASH_PLUSONLYJOBEXP:
case SC_MONSTER_TRANSFORM:
case SC_CASH_RECEIVEITEM:
+ case SC_OVERLAPEXPUP:
val_flag |= 1;
break;
}
diff --git a/src/map/status.h b/src/map/status.h
index a7549a5e4..f2173d81c 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -773,9 +773,9 @@ typedef enum sc_type {
SC_ATKER_ASPD,
SC_ATKER_MOVESPEED,
-
SC_FOOD_CRITICALSUCCESSVALUE, // 610
SC_CUP_OF_BOZA,
+ SC_OVERLAPEXPUP,
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
} sc_type;