From 74382866b1dc40a990f6dcc164fac8eb4d3e5a46 Mon Sep 17 00:00:00 2001 From: zephyrus Date: Thu, 4 Oct 2007 20:47:35 +0000 Subject: * Added SC_EXPBOOST (Field Manual), SC_ITEMBOOST (Bubble Gum) to const.txt. Allready working. - Added SC_LIFEINSURANCE and SC_BOSSMAPINFO to const.txt. (not implemented but i will work on it) - Updated Field Manual and Bubble Gum in the itemdb.txt file. - As L0ne Wolf reported to me and based on Doddler information, the Bubble Gum only do a second try of the item drop, and it don't increase the drop rates. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11356 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/mob.c | 10 +++++++--- src/map/pc.c | 4 ++-- src/map/skill.c | 2 +- src/map/status.c | 22 +++++----------------- src/map/status.h | 8 +++++--- 5 files changed, 20 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/map/mob.c b/src/map/mob.c index da151faed..77bd8e53d 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2017,12 +2017,16 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) if (sd && battle_config.pk_mode && (int)(md->level - sd->status.base_level) >= 20) drop_rate = (int)(drop_rate*1.25); // pk_mode increase drops if 20 level difference [Valaris] - if (sd && sd->sc.data[SC_BONUSDROP].timer != -1) - drop_rate += (int)(0.5+drop_rate*sd->sc.data[SC_BONUSDROP].val1/100.); // attempt to drop the item if (rand() % 10000 >= drop_rate) - continue; + { + if (sd && sd->sc.data[SC_ITEMBOOST].timer != -1) + if (rand() % 10000 >= drop_rate) + continue; // Double try by Bubble Gum + else + continue; + } ditem = mob_setdropitem(md->db->dropitem[i].nameid, 1); diff --git a/src/map/pc.c b/src/map/pc.c index 3e6c90792..bf999950e 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4197,8 +4197,8 @@ static void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsi (int)(status_get_lv(src) - sd->status.base_level) >= 20) bonus += 15; // pk_mode additional exp if monster >20 levels [Valaris] - if (sd->sc.data[SC_BONUSEXP].timer != -1) - bonus += sd->sc.data[SC_BONUSEXP].val1; + if (sd->sc.data[SC_EXPBOOST].timer != -1) + bonus += sd->sc.data[SC_EXPBOOST].val1; if (!bonus) return; diff --git a/src/map/skill.c b/src/map/skill.c index 3e2821464..3784e04d1 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -4824,7 +4824,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SC_CARTBOOST: case SC_MELTDOWN: case SC_SAFETYWALL: case SC_SMA: case SC_SPEEDUP0: case SC_NOCHAT: case SC_ANKLE: case SC_SPIDERWEB: case SC_JAILED: - case SC_BONUSDROP: case SC_BONUSEXP: // [ConvexMirror and FieldGuide] + case SC_ITEMBOOST: case SC_EXPBOOST: // [ConvexMirror and FieldGuide] continue; } if(i==SC_BERSERK) tsc->data[i].val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0. diff --git a/src/map/status.c b/src/map/status.c index 84ce9b581..0f44a5b7f 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -451,6 +451,10 @@ void initChangeTables(void) StatusIconChangeTable[SC_LUKFOOD] = SI_FOODLUK; StatusIconChangeTable[SC_FLEEFOOD]= SI_FOODFLEE; StatusIconChangeTable[SC_HITFOOD] = SI_FOODHIT; + //Cash Items + StatusIconChangeTable[SC_EXPBOOST] = SI_EXPBOOST; + StatusIconChangeTable[SC_ITEMBOOST] = SI_ITEMBOOST; + //Other SC which are not necessarily associated to skills. StatusChangeFlagTable[SC_ASPDPOTION0] = SCB_ASPD; StatusChangeFlagTable[SC_ASPDPOTION1] = SCB_ASPD; @@ -5804,15 +5808,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val //Place here SCs that have no SCB_* data, no skill associated, no ICON //associated, and yet are not wrong/unknown. [Skotlex] break; - case SC_BONUSDROP: - clif_specialeffect(&sd->bl, 348, AREA); - clif_disp_onlyself(sd, "[Drop Rate Increased]", (int)strlen("[Drop Rate Increased]")); - if (val1 < 0) - val1 = 0; - break; - case SC_BONUSEXP: - clif_specialeffect(&sd->bl, 348, AREA); - clif_disp_onlyself(sd, "[Exp Rate Increased]", (int)strlen("[Exp Rate Increased]")); + case SC_EXPBOOST: if (val1 < 0) val1 = 0; break; @@ -6407,14 +6403,6 @@ int status_change_end( struct block_list* bl , int type,int tid ) case SC_JOINTBEAT: sc->data[type].val2 = 0; // Clear stackable ailments break; - case SC_BONUSEXP: - clif_disp_onlyself(sd, "[Exp Rate Back to Normal]", (int)strlen("[Exp Rate Back to Normal]")); - clif_specialeffect(&sd->bl, 488, AREA); - break; - case SC_BONUSDROP: - clif_disp_onlyself(sd, "[Drop Rate Back to Normal]", (int)strlen("[Drop Rate Back to Normal]")); - clif_specialeffect(&sd->bl, 488, AREA); - break; } opt_flag = 1; diff --git a/src/map/status.h b/src/map/status.h index 489a08c66..d98ba1b82 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -269,9 +269,11 @@ enum { SC_CRITICALWOUND, SC_MAGICMIRROR, SC_SLOWCAST, - SC_SUMMER, // [Zephyrus Summer] - SC_BONUSEXP, // [Field Guide] - SC_BONUSDROP, // [Bubble Gum] + SC_SUMMER, + SC_EXPBOOST, // Field Guide + SC_ITEMBOOST, // Bubble Gum + SC_BOSSMAPINFO, // Convex Mirror + SC_LIFEINSURANCE, // Life Insurance SC_MAX, //Automatically updated max, used in for's to check we are within bounds. }; int SkillStatusChangeTable(int skill); -- cgit v1.2.3-70-g09d2