forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
83 lines
3.0 KiB
Plaintext
83 lines
3.0 KiB
Plaintext
#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());
|
|
}
|