void main() { object oPC = GetLastPCRested(); if (GetLastRestEventType()==REST_EVENTTYPE_REST_STARTED) { int nWM = d100(1); string sLevel = IntToString(GetHitDice(oPC)); string sResref = "wm_" + sLevel; object oWP = GetNearestObjectByTag("wmwp"); location lWP = GetLocation(oWP); if (nWM<=10) { object oSpawn = CreateObject(OBJECT_TYPE_CREATURE,sResref,lWP); AssignCommand(oSpawn,ActionAttack(oPC)); } } else if (GetLastRestEventType()==REST_EVENTTYPE_REST_FINISHED||REST_EVENTTYPE_REST_CANCELLED) { int nHour = GetTimeHour(); int nMinute = GetTimeMinute(); int nSecond = GetTimeSecond(); int nMillisecond = GetTimeMillisecond(); // Advance the time 8 hours. nHour += 8; // Set the new time int iPW = GetLocalInt(GetModule(), "PW_MODE"); //:: Skip if running as a Persistant World MP module if (!iPW) { SetTime(nHour, nMinute, nSecond, nMillisecond); } // See how hungry and thirsty PC is int ibHungry = GetLocalInt(oPC,"ate"); int ibThirsty = GetLocalInt(oPC,"drank"); // Make them wake up hungrier and thirstier SetLocalInt(oPC,"ate",ibHungry-1); SetLocalInt(oPC,"drank",ibThirsty-1); //get new values int iHungry = GetLocalInt(oPC,"ate"); int iThirsty = GetLocalInt(oPC,"drank"); //apply hunger and thirst penalties switch (iHungry) { case -1: { effect eEffect = EffectAbilityDecrease(ABILITY_CONSTITUTION, 2); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You rest well, but you awaken hungry."); break; } case -2: { effect eEffect = EffectAbilityDecrease(ABILITY_CONSTITUTION, 4); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You rest well, but you awaken quite hungry."); break; } case -3: { effect eEffect = EffectAbilityDecrease(ABILITY_CONSTITUTION, 5); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You rest well, but you awaken really hungry."); break; } case -4: { effect eEffect = EffectAbilityDecrease(ABILITY_CONSTITUTION, 6); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You rest well, but you awaken very hungry."); break; } case -5: { effect eEffect = EffectAbilityDecrease(ABILITY_CONSTITUTION, 7); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You rest well, but you awaken painfully hungry."); break; } case -6: { effect eEffect = EffectAbilityDecrease(ABILITY_CONSTITUTION, 8); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You rest well, but you awaken extremely hungry."); break; } case -7: { effect eEffect = EffectAbilityDecrease(ABILITY_CONSTITUTION, 10); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You rest well, but you are starving to death."); break; } case -8: { effect eEffect = EffectAbilityDecrease(ABILITY_CONSTITUTION, 12); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You will die soon if you don't eat."); break; } case -9: { effect eEffect = EffectDeath(); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You have starved to death."); break; } } switch (iThirsty) { case -1: { effect eEffect = EffectNegativeLevel(1,FALSE); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You awaken and are quite thirsty."); break; } case -2: { effect eEffect = EffectNegativeLevel(2,FALSE); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You awaken and are extremely thirsty."); break; } case -3: { effect eEffect = EffectNegativeLevel(3,FALSE); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You awaken and are dreadfully thirsty."); break; } case -4: { effect eEffect = EffectNegativeLevel(4,FALSE); eEffect = ExtraordinaryEffect(eEffect); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You are dying of thirst, you need to find something to drink."); break; } case -5: { effect eEffect = EffectDeath(); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC); SendMessageToPC(oPC,"You have died of thirst."); break; } } } }