Browse Source

Added Old Glastheim Buffs (#3167)

* Fixes #2772.
* Added missing Old Glastheim buffs.
* Added buffs to Old Glastheim script.
* Renamed Glastheim -> Glast Heim.
Thanks to @Atemo and @mrjnumber1!
Aleos 7 years ago
parent
commit
7c4d769234

+ 4 - 0
db/re/mob_race2_db.txt

@@ -30,3 +30,7 @@ RC2_MANUK,1986,1987,1988,1989,1990,1997,1998,1999
 RC2_SPLENDIDE,1991,1992,1993,1994,1995
 RC2_SPLENDIDE,1991,1992,1993,1994,1995
 // Scaraba
 // Scaraba
 RC2_SCARABA,2083,2084,2085,2086,2087,2088,2089,2090,2091,2144,2145,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2304,2693,2799,2896
 RC2_SCARABA,2083,2084,2085,2086,2087,2088,2089,2090,2091,2144,2145,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2304,2693,2799,2896
+// Old Glast Heim - SC_GLASTHEIM_ATK/SC_GLASTHEIM_DEF
+RC2_OGH_ATK_DEF,2475,2476
+// Old Glast Heim - SC_GLASTHEIM_HIDDEN
+RC2_OGH_HIDDEN,2337,2343//,2495

+ 14 - 7
npc/re/instances/OldGlastHeim.txt

@@ -1554,12 +1554,19 @@ OnMobDead:
 	end;
 	end;
 OnTouch:
 OnTouch:
 	specialeffect2 EF_ENHANCE;
 	specialeffect2 EF_ENHANCE;
-	// buff
-	// .@num = atoi( replacestr(strnpcinfo(2), "Buff", "") );
-	// if (.@num == 1)
-	// else if (.@num == 2)
-	// else if (.@num == 3)
-	// else
+	.@num = atoi( replacestr(strnpcinfo(2), "Buff", "") );
+	if (.@num == 1)
+		sc_start SC_GLASTHEIM_HIDDEN,30000,1,10000,SCSTART_NOTICKDEF;
+	else if (.@num == 2)
+		sc_start SC_GLASTHEIM_STATE,30000,1,10000,SCSTART_NOTICKDEF;
+	else if (.@num == 3) {
+		sc_start SC_GLASTHEIM_HEAL,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_HPSP,30000,1,10000,SCSTART_NOTICKDEF;
+	}
+	else {
+		sc_start SC_GLASTHEIM_DEF,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_ITEMDEF,30000,1,10000,SCSTART_NOTICKDEF;
+	}
 	end;
 	end;
 OnEvent:
 OnEvent:
 	initnpctimer;
 	initnpctimer;
@@ -1572,7 +1579,7 @@ OnEvent:
 	else if (.@num == 3)
 	else if (.@num == 3)
 		npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais' zombie, come to me and get more power!";
 		npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais' zombie, come to me and get more power!";
 	else
 	else
-		npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais's power, come to me and get more power! ";
+		npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais's power, come to me and get more power!";
 	end;
 	end;
 OnTimer10000:
 OnTimer10000:
 	stopnpctimer;
 	stopnpctimer;

+ 6 - 0
src/map/battle.cpp

@@ -1334,6 +1334,10 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 			if( sc->data[SC_SPL_DEF] && status_get_race2(src) == RC2_SPLENDIDE ){
 			if( sc->data[SC_SPL_DEF] && status_get_race2(src) == RC2_SPLENDIDE ){
 				damage -= damage * sc->data[SC_SPL_DEF]->val1 / 100;
 				damage -= damage * sc->data[SC_SPL_DEF]->val1 / 100;
 			}
 			}
+			if (sc->data[SC_GLASTHEIM_DEF] && status_get_race2(src) == RC2_OGH_ATK_DEF)
+				return 0;
+			if (sc->data[SC_GLASTHEIM_HIDDEN] && status_get_race2(src) == RC2_OGH_HIDDEN)
+				damage -= damage * sc->data[SC_GLASTHEIM_HIDDEN]->val1 / 100;
 		}
 		}
 
 
 		if((sce=sc->data[SC_ARMOR]) && //NPC_DEFENDER
 		if((sce=sc->data[SC_ARMOR]) && //NPC_DEFENDER
@@ -1506,6 +1510,8 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 				) {
 				) {
 				damage += damage * sce->val1 / 100;
 				damage += damage * sce->val1 / 100;
 			}
 			}
+			if (sc->data[SC_GLASTHEIM_ATK] && status_get_race2(bl) == RC2_OGH_ATK_DEF)
+				damage <<= 1;
 		}
 		}
 		/* Self Buff that destroys the armor of any target hit with melee or ranged physical attacks */
 		/* Self Buff that destroys the armor of any target hit with melee or ranged physical attacks */
 		if( sc->data[SC_SHIELDSPELL_REF] && sc->data[SC_SHIELDSPELL_REF]->val1 == 1 && flag&BF_WEAPON ) {
 		if( sc->data[SC_SHIELDSPELL_REF] && sc->data[SC_SHIELDSPELL_REF]->val1 == 1 && flag&BF_WEAPON ) {

+ 7 - 0
src/map/map.cpp

@@ -2053,6 +2053,13 @@ int map_quit(struct map_session_data *sd) {
 			status_change_end(&sd->bl, SC_E_CHAIN, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_E_CHAIN, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_SIGHTBLASTER, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_SIGHTBLASTER, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_BENEDICTIO, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_BENEDICTIO, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_GLASTHEIM_ATK, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_GLASTHEIM_DEF, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_GLASTHEIM_HEAL, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_GLASTHEIM_HIDDEN, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_GLASTHEIM_STATE, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_GLASTHEIM_ITEMDEF, INVALID_TIMER);
+			status_change_end(&sd->bl, SC_GLASTHEIM_HPSP, INVALID_TIMER);
 		}
 		}
 	}
 	}
 
 

+ 2 - 0
src/map/map.hpp

@@ -325,6 +325,8 @@ enum e_race2 : uint8{
 	RC2_MANUK,
 	RC2_MANUK,
 	RC2_SPLENDIDE,
 	RC2_SPLENDIDE,
 	RC2_SCARABA,
 	RC2_SCARABA,
+	RC2_OGH_ATK_DEF,
+	RC2_OGH_HIDDEN,
 	RC2_MAX
 	RC2_MAX
 };
 };
 
 

+ 9 - 0
src/map/script_constants.hpp

@@ -1485,6 +1485,13 @@
 	export_constant(SC_FALLEN_ANGEL);
 	export_constant(SC_FALLEN_ANGEL);
 	export_constant(SC_CHEERUP);
 	export_constant(SC_CHEERUP);
 	export_constant(SC_DRESSUP);
 	export_constant(SC_DRESSUP);
+	export_constant(SC_GLASTHEIM_ATK);
+	export_constant(SC_GLASTHEIM_DEF);
+	export_constant(SC_GLASTHEIM_HEAL);
+	export_constant(SC_GLASTHEIM_HIDDEN);
+	export_constant(SC_GLASTHEIM_STATE);
+	export_constant(SC_GLASTHEIM_ITEMDEF);
+	export_constant(SC_GLASTHEIM_HPSP);
 #ifdef RENEWAL
 #ifdef RENEWAL
 	export_constant(SC_EXTREMITYFIST2);
 	export_constant(SC_EXTREMITYFIST2);
 #endif
 #endif
@@ -3594,6 +3601,8 @@
 	export_constant(RC2_MANUK);
 	export_constant(RC2_MANUK);
 	export_constant(RC2_SPLENDIDE);
 	export_constant(RC2_SPLENDIDE);
 	export_constant(RC2_SCARABA);
 	export_constant(RC2_SCARABA);
+	export_constant(RC2_OGH_ATK_DEF);
+	export_constant(RC2_OGH_HIDDEN);
 	export_constant(RC2_MAX);
 	export_constant(RC2_MAX);
 
 
 	/* classes */
 	/* classes */

+ 8 - 2
src/map/skill.cpp

@@ -513,8 +513,12 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
 	if( tsd && (skill = pc_skillheal2_bonus(tsd, skill_id)) )
 	if( tsd && (skill = pc_skillheal2_bonus(tsd, skill_id)) )
 		hp_bonus += skill;
 		hp_bonus += skill;
 
 
-	if( sc && sc->data[SC_OFFERTORIUM] && (skill_id == AB_HIGHNESSHEAL || skill_id == AB_CHEAL || skill_id == PR_SANCTUARY || skill_id == AL_HEAL) )
-		hp_bonus += sc->data[SC_OFFERTORIUM]->val2;
+	if (sc && sc->count) {
+		if (sc->data[SC_OFFERTORIUM] && (skill_id == AB_HIGHNESSHEAL || skill_id == AB_CHEAL || skill_id == PR_SANCTUARY || skill_id == AL_HEAL))
+			hp_bonus += sc->data[SC_OFFERTORIUM]->val2;
+		if (sc->data[SC_GLASTHEIM_HEAL] && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN)
+			hp_bonus += sc->data[SC_GLASTHEIM_HEAL]->val1;
+	}
 
 
 	if (tsc && tsc->count) {
 	if (tsc && tsc->count) {
 		if (skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN) {
 		if (skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN) {
@@ -522,6 +526,8 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
 				hp_bonus += tsc->data[SC_INCHEALRATE]->val1; //Only affects Heal, Sanctuary and PotionPitcher.(like bHealPower) [Inkfish]
 				hp_bonus += tsc->data[SC_INCHEALRATE]->val1; //Only affects Heal, Sanctuary and PotionPitcher.(like bHealPower) [Inkfish]
 			if (tsc->data[SC_EXTRACT_WHITE_POTION_Z])
 			if (tsc->data[SC_EXTRACT_WHITE_POTION_Z])
 				hp_bonus += tsc->data[SC_EXTRACT_WHITE_POTION_Z]->val1;
 				hp_bonus += tsc->data[SC_EXTRACT_WHITE_POTION_Z]->val1;
+			if (tsc->data[SC_GLASTHEIM_HEAL])
+				hp_bonus += sc->data[SC_GLASTHEIM_HEAL]->val2;
 		}
 		}
 	}
 	}
 
 

+ 61 - 0
src/map/status.cpp

@@ -1157,6 +1157,15 @@ void initChangeTables(void)
 
 
 	StatusIconChangeTable[SC_DRESSUP] = EFST_DRESS_UP;
 	StatusIconChangeTable[SC_DRESSUP] = EFST_DRESS_UP;
 
 
+	// Old Glast Heim
+	StatusIconChangeTable[SC_GLASTHEIM_ATK] = EFST_GLASTHEIM_ATK;
+	StatusIconChangeTable[SC_GLASTHEIM_DEF] = EFST_GLASTHEIM_DEF;
+	StatusIconChangeTable[SC_GLASTHEIM_HEAL] = EFST_GLASTHEIM_HEAL;
+	StatusIconChangeTable[SC_GLASTHEIM_HIDDEN] = EFST_GLASTHEIM_HIDDEN;
+	StatusIconChangeTable[SC_GLASTHEIM_STATE] = EFST_GLASTHEIM_STATE;
+	StatusIconChangeTable[SC_GLASTHEIM_ITEMDEF] = EFST_GLASTHEIM_ITEMDEF;
+	StatusIconChangeTable[SC_GLASTHEIM_HPSP] = EFST_GLASTHEIM_HPSP;
+
 	/* Other SC which are not necessarily associated to skills */
 	/* Other SC which are not necessarily associated to skills */
 	StatusChangeFlagTable[SC_ASPDPOTION0] |= SCB_ASPD;
 	StatusChangeFlagTable[SC_ASPDPOTION0] |= SCB_ASPD;
 	StatusChangeFlagTable[SC_ASPDPOTION1] |= SCB_ASPD;
 	StatusChangeFlagTable[SC_ASPDPOTION1] |= SCB_ASPD;
@@ -1304,6 +1313,12 @@ void initChangeTables(void)
 	// RODEX
 	// RODEX
 	StatusChangeFlagTable[SC_DAILYSENDMAILCNT] |= SCB_NONE;
 	StatusChangeFlagTable[SC_DAILYSENDMAILCNT] |= SCB_NONE;
 
 
+	// Old Glast Heim
+	StatusChangeFlagTable[SC_GLASTHEIM_ATK] |= SCB_ALL;
+	StatusChangeFlagTable[SC_GLASTHEIM_STATE] |= SCB_STR|SCB_AGI|SCB_VIT|SCB_DEX|SCB_INT|SCB_LUK;
+	StatusChangeFlagTable[SC_GLASTHEIM_ITEMDEF] |= SCB_DEF|SCB_MDEF;
+	StatusChangeFlagTable[SC_GLASTHEIM_HPSP] |= SCB_MAXHP|SCB_MAXSP;
+
 	// Summoner
 	// Summoner
 	StatusChangeFlagTable[SC_SHRIMPBLESSING] |= SCB_REGEN;
 	StatusChangeFlagTable[SC_SHRIMPBLESSING] |= SCB_REGEN;
 	StatusChangeFlagTable[SC_DORAM_WALKSPEED] |= SCB_SPEED;
 	StatusChangeFlagTable[SC_DORAM_WALKSPEED] |= SCB_SPEED;
@@ -3003,6 +3018,8 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += 30;
 				bonus += 30;
 			if(sc->data[SC_CROSSBOWCLAN])
 			if(sc->data[SC_CROSSBOWCLAN])
 				bonus += 30;
 				bonus += 30;
+			if(sc->data[SC_GLASTHEIM_HPSP])
+				bonus += sc->data[SC_GLASTHEIM_HPSP]->val1;
 		}
 		}
 	} else if (type == STATUS_BONUS_RATE) {
 	} else if (type == STATUS_BONUS_RATE) {
 		struct status_change *sc = status_get_sc(bl);
 		struct status_change *sc = status_get_sc(bl);
@@ -3124,6 +3141,8 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += 10;
 				bonus += 10;
 			if(sc->data[SC_CROSSBOWCLAN])
 			if(sc->data[SC_CROSSBOWCLAN])
 				bonus += 10;
 				bonus += 10;
+			if(sc->data[SC_GLASTHEIM_HPSP])
+				bonus += sc->data[SC_GLASTHEIM_HPSP]->val2;
 		}
 		}
 	} else if (type == STATUS_BONUS_RATE) {
 	} else if (type == STATUS_BONUS_RATE) {
 		struct status_change *sc = status_get_sc(bl);
 		struct status_change *sc = status_get_sc(bl);
@@ -4186,6 +4205,10 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt)
 			sd->subele[ELE_NEUTRAL] += sc->data[SC_MTF_MLEATKED]->val3;
 			sd->subele[ELE_NEUTRAL] += sc->data[SC_MTF_MLEATKED]->val3;
 		if (sc->data[SC_MTF_CRIDAMAGE])
 		if (sc->data[SC_MTF_CRIDAMAGE])
 			sd->bonus.crit_atk_rate += sc->data[SC_MTF_CRIDAMAGE]->val1;
 			sd->bonus.crit_atk_rate += sc->data[SC_MTF_CRIDAMAGE]->val1;
+		if (sc->data[SC_GLASTHEIM_ATK]) {
+			sd->ignore_mdef_by_race[RC_UNDEAD] += sc->data[SC_GLASTHEIM_ATK]->val1;
+			sd->ignore_mdef_by_race[RC_DEMON] += sc->data[SC_GLASTHEIM_ATK]->val1;
+		}
 	}
 	}
 	status_cpy(&sd->battle_status, base_status);
 	status_cpy(&sd->battle_status, base_status);
 
 
@@ -5467,6 +5490,8 @@ static unsigned short status_calc_str(struct block_list *bl, struct status_chang
 		str += str * sc->data[SC_FULL_THROTTLE]->val3 / 100;
 		str += str * sc->data[SC_FULL_THROTTLE]->val3 / 100;
 	if(sc->data[SC_CHEERUP])
 	if(sc->data[SC_CHEERUP])
 		str += 3;
 		str += 3;
+	if(sc->data[SC_GLASTHEIM_STATE])
+		str += sc->data[SC_GLASTHEIM_STATE]->val1;
 
 
 	return (unsigned short)cap_value(str,0,USHRT_MAX);
 	return (unsigned short)cap_value(str,0,USHRT_MAX);
 }
 }
@@ -5541,6 +5566,8 @@ static unsigned short status_calc_agi(struct block_list *bl, struct status_chang
 		agi += sc->data[SC_ARCLOUSEDASH]->val2;
 		agi += sc->data[SC_ARCLOUSEDASH]->val2;
 	if(sc->data[SC_CHEERUP])
 	if(sc->data[SC_CHEERUP])
 		agi += 3;
 		agi += 3;
+	if(sc->data[SC_GLASTHEIM_STATE])
+		agi += sc->data[SC_GLASTHEIM_STATE]->val1;
 
 
 	return (unsigned short)cap_value(agi,0,USHRT_MAX);
 	return (unsigned short)cap_value(agi,0,USHRT_MAX);
 }
 }
@@ -5607,6 +5634,8 @@ static unsigned short status_calc_vit(struct block_list *bl, struct status_chang
 #endif
 #endif
 	if(sc->data[SC_CHEERUP])
 	if(sc->data[SC_CHEERUP])
 		vit += 3;
 		vit += 3;
+	if(sc->data[SC_GLASTHEIM_STATE])
+		vit += sc->data[SC_GLASTHEIM_STATE]->val1;
 
 
 	return (unsigned short)cap_value(vit,0,USHRT_MAX);
 	return (unsigned short)cap_value(vit,0,USHRT_MAX);
 }
 }
@@ -5679,6 +5708,8 @@ static unsigned short status_calc_int(struct block_list *bl, struct status_chang
 		int_ += int_ * sc->data[SC_FULL_THROTTLE]->val3 / 100;
 		int_ += int_ * sc->data[SC_FULL_THROTTLE]->val3 / 100;
 	if(sc->data[SC_CHEERUP])
 	if(sc->data[SC_CHEERUP])
 		int_ += 3;
 		int_ += 3;
+	if(sc->data[SC_GLASTHEIM_STATE])
+		int_ += sc->data[SC_GLASTHEIM_STATE]->val1;
 
 
 	if(bl->type != BL_PC) {
 	if(bl->type != BL_PC) {
 		if(sc->data[SC_STRIPHELM])
 		if(sc->data[SC_STRIPHELM])
@@ -5762,6 +5793,8 @@ static unsigned short status_calc_dex(struct block_list *bl, struct status_chang
 		dex += dex * sc->data[SC_FULL_THROTTLE]->val3 / 100;
 		dex += dex * sc->data[SC_FULL_THROTTLE]->val3 / 100;
 	if(sc->data[SC_CHEERUP])
 	if(sc->data[SC_CHEERUP])
 		dex += 3;
 		dex += 3;
+	if(sc->data[SC_GLASTHEIM_STATE])
+		dex += sc->data[SC_GLASTHEIM_STATE]->val1;
 
 
 	return (unsigned short)cap_value(dex,0,USHRT_MAX);
 	return (unsigned short)cap_value(dex,0,USHRT_MAX);
 }
 }
@@ -5826,6 +5859,8 @@ static unsigned short status_calc_luk(struct block_list *bl, struct status_chang
 		luk += luk * sc->data[SC_FULL_THROTTLE]->val3 / 100;
 		luk += luk * sc->data[SC_FULL_THROTTLE]->val3 / 100;
 	if(sc->data[SC_CHEERUP])
 	if(sc->data[SC_CHEERUP])
 		luk += 3;
 		luk += 3;
+	if(sc->data[SC_GLASTHEIM_STATE])
+		luk += sc->data[SC_GLASTHEIM_STATE]->val1;
 
 
 	return (unsigned short)cap_value(luk,0,USHRT_MAX);
 	return (unsigned short)cap_value(luk,0,USHRT_MAX);
 }
 }
@@ -6436,6 +6471,8 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc,
 		def -= def * sc->data[SC_ASH]->val3/100;
 		def -= def * sc->data[SC_ASH]->val3/100;
 	if( sc->data[SC_OVERED_BOOST] && bl->type == BL_HOM )
 	if( sc->data[SC_OVERED_BOOST] && bl->type == BL_HOM )
 		def -= def * sc->data[SC_OVERED_BOOST]->val4 / 100;
 		def -= def * sc->data[SC_OVERED_BOOST]->val4 / 100;
+	if(sc->data[SC_GLASTHEIM_ITEMDEF])
+		def += sc->data[SC_GLASTHEIM_ITEMDEF]->val1;
 
 
 	return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);;
 	return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);;
 }
 }
@@ -6567,6 +6604,8 @@ static defType status_calc_mdef(struct block_list *bl, struct status_change *sc,
 	}
 	}
 	if (sc->data[SC_ODINS_POWER])
 	if (sc->data[SC_ODINS_POWER])
 		mdef -= 20 * sc->data[SC_ODINS_POWER]->val1;
 		mdef -= 20 * sc->data[SC_ODINS_POWER]->val1;
+	if(sc->data[SC_GLASTHEIM_ITEMDEF])
+		mdef += sc->data[SC_GLASTHEIM_ITEMDEF]->val2;
 
 
 	return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX);
 	return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX);
 }
 }
@@ -11085,6 +11124,28 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				val4 = 1;
 				val4 = 1;
 			break;
 			break;
 
 
+		case SC_GLASTHEIM_ATK:
+			val1 = 100; // Undead/Demon MDEF ignore rate
+			break;
+		case SC_GLASTHEIM_HEAL:
+			val1 = 100; // Heal Power rate bonus
+			val2 = 50; // Received heal rate bonus
+			break;
+		case SC_GLASTHEIM_HIDDEN:
+			val1 = 90; // Damage rate reduction bonus
+			break;
+		case SC_GLASTHEIM_STATE:
+			val1 = 20; // All-stat bonus
+			break;
+		case SC_GLASTHEIM_ITEMDEF:
+			val1 = 200; // DEF bonus
+			val2 = 50; // MDEF bonus
+			break;
+		case SC_GLASTHEIM_HPSP:
+			val1 = 10000; // HP bonus
+			val2 = 1000; // SP bonus
+			break;
+
 		default:
 		default:
 			if( calc_flag == SCB_NONE && StatusSkillChangeTable[type] == -1 && StatusIconChangeTable[type] == EFST_BLANK ) {
 			if( calc_flag == SCB_NONE && StatusSkillChangeTable[type] == -1 && StatusIconChangeTable[type] == EFST_BLANK ) {
 				// Status change with no calc, no icon, and no skill associated...?
 				// Status change with no calc, no icon, and no skill associated...?

+ 9 - 0
src/map/status.hpp

@@ -843,6 +843,15 @@ enum sc_type : int16 {
 	SC_CHEERUP,
 	SC_CHEERUP,
 	SC_DRESSUP,
 	SC_DRESSUP,
 
 
+	// Old Glast Heim Buffs
+	SC_GLASTHEIM_ATK,
+	SC_GLASTHEIM_DEF,
+	SC_GLASTHEIM_HEAL,
+	SC_GLASTHEIM_HIDDEN,
+	SC_GLASTHEIM_STATE,
+	SC_GLASTHEIM_ITEMDEF,
+	SC_GLASTHEIM_HPSP,
+
 #ifdef RENEWAL
 #ifdef RENEWAL
 	SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
 	SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
 #endif
 #endif