#include "prc_alterations" void Rejuvenate(object oTarget) { int nType; int nLevel = GetLevelByClass(CLASS_TYPE_MORNINGLORD); effect eHeal,eVis; effect eEffect = GetFirstEffect(oTarget); while(GetIsEffectValid(eEffect)) { nType = GetEffectType(eEffect); if (nType == EFFECT_TYPE_POISON || nType == EFFECT_TYPE_ABILITY_DECREASE || nType == EFFECT_TYPE_DISEASE || nType == EFFECT_TYPE_NEGATIVELEVEL) { RemoveEffect(oTarget, eEffect); } eEffect = GetNextEffect(oTarget); } eVis = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION); eHeal = EffectHeal(nLevel+d6()); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } void RejuvenateParty() { object oPC = OBJECT_SELF; FloatingTextStringOnCreature("**Lathander answers your prayer**",oPC,FALSE); object oTarget = GetFirstFactionMember(oPC,FALSE); while(GetIsObjectValid(oTarget)) { Rejuvenate(oTarget); oTarget = GetNextFactionMember(oPC,FALSE); } } void CheckRejuventationSuccess() { object oPC = OBJECT_SELF; location lStart = GetLocalLocation(oPC,"MLPrayerLocation"); location lFinish =GetLocation(oPC); if(lStart!=lFinish) { FloatingTextStringOnCreature("**Rejuvenation Failed**",oPC,FALSE); SendMessageToPC(oPC,"Your concentration was broken."); return; } RejuvenateParty(); } void main() { object oPC = OBJECT_SELF; int nPreDawn = MOD_DAWN_START_HOUR-1; int nSecondsPerHour = FloatToInt(HoursToSeconds(1)); string sTime = IntToString(nPreDawn); if(GetTimeHour() != nPreDawn) { FloatingTextStringOnCreature("**Rejuvenation Failed**",oPC,FALSE); SendMessageToPC(oPC,"This ability only works just before dawn, at "+IntToString(nPreDawn)+" AM."); IncrementRemainingFeatUses(oPC,FEAT_REJUVENATION_OF_MORN); return; } int nSecondsElapsed = GetTimeSecond()+GetTimeMinute()*60; int nSecondsBeforeDawn = nSecondsPerHour-nSecondsElapsed; if(nSecondsBeforeDawn<12) { FloatingTextStringOnCreature("**Rejuvenation Failed**",oPC,FALSE); SendMessageToPC(oPC,"It is too close to dawn to begin the prayer. You will have to wait until tomorrow."); return; } int nSecondsToBegin = abs(60-nSecondsBeforeDawn); if(nSecondsBeforeDawn>60) { FloatingTextStringOnCreature("**Rejuvenation Failed**",oPC,FALSE); SendMessageToPC(oPC,"It is not quite time to begin the prayer. Try again in "+IntToString(nSecondsToBegin)+" seconds."); IncrementRemainingFeatUses(oPC,FEAT_REJUVENATION_OF_MORN); return; } FloatingTextStringOnCreature("**You pray to Lathander**",oPC,FALSE); float fPrayerTime = IntToFloat(nSecondsBeforeDawn); AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE,1.0,fPrayerTime)); SetLocalLocation(oPC,"MLPrayerLocation",GetLocation(oPC)); DelayCommand(fPrayerTime,CheckRejuventationSuccess()); }