Implemented SC_PERIOD_RECEIVEITEM_2ND and SC_PERIOD_PLUSEXP_2ND (#8197)

This commit is contained in:
Atemo 2024-04-10 14:01:12 +02:00 committed by GitHub
parent eb4658f940
commit c70bc39751
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 45 additions and 5 deletions

View File

@ -70737,7 +70737,8 @@ Body:
NoMail: true
NoAuction: true
Script: |
/* TODO */
sc_start SC_PERIOD_RECEIVEITEM_2ND,604800000,50;
sc_start SC_PERIOD_PLUSEXP_2ND,604800000,50;
- Id: 100914
AegisName: EXP_Drop_Up_1Hours
Name: Kafra Buff(1 Hour)
@ -70750,8 +70751,9 @@ Body:
NoGuildStorage: true
NoMail: true
NoAuction: true
# Script: |
# /* TODO */
Script: |
sc_start SC_PERIOD_RECEIVEITEM_2ND,86400000,50;
sc_start SC_PERIOD_PLUSEXP_2ND,86400000,50;
- Id: 100917
AegisName: Hero_Weapon_Hammer_4
Name: Modified Hero's Weapon Refinement Hammer IV
@ -70859,6 +70861,9 @@ Body:
NoGuildStorage: true
NoMail: true
NoAuction: true
Script: |
sc_start SC_PERIOD_RECEIVEITEM_2ND,86400000,50;
sc_start SC_PERIOD_PLUSEXP_2ND,86400000,50;
- Id: 100950
AegisName: Evt_RagFes_Box
Name: Ragfest Commemorative Box
@ -73313,6 +73318,9 @@ Body:
NoGuildStorage: true
NoMail: true
NoAuction: true
Script: |
sc_start SC_PERIOD_RECEIVEITEM_2ND,604800000,50;
sc_start SC_PERIOD_PLUSEXP_2ND,604800000,50;
- Id: 101240
AegisName: Season_Evt_Reward_1
Name: January Event's Reward Box

View File

@ -8897,3 +8897,21 @@ Body:
NoBanishingBuster: true
NoDispell: true
NoClearance: true
- Status: Period_Receiveitem_2nd
Icon: EFST_PERIOD_RECEIVEITEM_2ND
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
SendVal1: true
- Status: Period_Plusexp_2nd
Icon: EFST_PERIOD_PLUSEXP_2ND
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
SendVal1: true

View File

@ -2492,6 +2492,8 @@ int mob_getdroprate(struct block_list *src, std::shared_ptr<s_mob_db> mob, int b
if (sd->sc.getSCE(SC_ITEMBOOST))
drop_rate_bonus += sd->sc.getSCE(SC_ITEMBOOST)->val1;
if (sd->sc.getSCE(SC_PERIOD_RECEIVEITEM_2ND))
drop_rate_bonus += sd->sc.getSCE(SC_PERIOD_RECEIVEITEM_2ND)->val1;
int cap;

View File

@ -8222,6 +8222,9 @@ static void pc_calcexp(map_session_data *sd, t_exp *base_exp, t_exp *job_exp, st
bonus += (sd->sc.getSCE(SC_EXPBOOST)->val1 / battle_config.vip_bm_increase);
}
if (sd->sc.getSCE(SC_PERIOD_PLUSEXP_2ND))
bonus += sd->sc.getSCE(SC_PERIOD_PLUSEXP_2ND)->val1;
if (*base_exp) {
t_exp exp = (t_exp)(*base_exp + ((double)*base_exp * ((bonus + vip_bonus_base) / 100.)));
*base_exp = cap_value(exp, 1, MAX_EXP);
@ -8231,6 +8234,9 @@ static void pc_calcexp(map_session_data *sd, t_exp *base_exp, t_exp *job_exp, st
if (sd->sc.getSCE(SC_JEXPBOOST))
bonus += sd->sc.getSCE(SC_JEXPBOOST)->val1;
if (sd->sc.getSCE(SC_PERIOD_PLUSEXP_2ND)) // Increase Jexp as well
bonus += sd->sc.getSCE(SC_PERIOD_PLUSEXP_2ND)->val1;
if (*job_exp) {
t_exp exp = (t_exp)(*job_exp + ((double)*job_exp * ((bonus + vip_bonus_job) / 100.)));
*job_exp = cap_value(exp, 1, MAX_EXP);

View File

@ -1910,6 +1910,8 @@
export_constant(SC_GRENADE_FRAGMENT_6);
export_constant(SC_AUTO_FIRING_LAUNCHER);
export_constant(SC_HIDDEN_CARD);
export_constant(SC_PERIOD_RECEIVEITEM_2ND);
export_constant(SC_PERIOD_PLUSEXP_2ND);
#ifdef RENEWAL
export_constant(SC_EXTREMITYFIST2);

View File

@ -11513,8 +11513,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
case SC_EXPBOOST:
case SC_JEXPBOOST:
case SC_JP_EVENT04:
if (val1 < 0)
val1 = 0;
case SC_PERIOD_RECEIVEITEM_2ND:
case SC_PERIOD_PLUSEXP_2ND:
if (val1 < 1)
return 0;
break;
case SC_INCFLEE2:
case SC_INCCRI:

View File

@ -1304,6 +1304,8 @@ enum sc_type : int16 {
SC_GRENADE_FRAGMENT_6,
SC_AUTO_FIRING_LAUNCHER,
SC_HIDDEN_CARD,
SC_PERIOD_RECEIVEITEM_2ND,
SC_PERIOD_PLUSEXP_2ND,
#ifdef RENEWAL
SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled