Files
HeroesStone_PRC8/_module/nss/hc_inc_fatigue.nss
Jaysyn904 1eefc84201 Initial Commit
Initial Commit.
2025-09-14 15:40:46 -04:00

68 lines
3.1 KiB
Plaintext

// hcr3 7/17/2003
//hc_inc_fatigue
//
// Created August 14, 2002 by Edward Beck.
// Helper functions to apply fatigue effects to PC's, and save the state.
// Include in scripts that want to use fatigue effects.
void MakePlayerFatigued(object oPC, string message = "")
{
if (!GetIsPC(oPC)) return;
int bFatigued = GetLocalInt(oPC, "bFatigued");
int bExhausted = GetLocalInt(oPC, "bExhausted");
if (bFatigued || bExhausted) return;
// hcr3 7/17/2003
AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_PERMANENT,
ExtraordinaryEffect(EffectAbilityDecrease( ABILITY_STRENGTH, 2)), oPC));
AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_PERMANENT,
ExtraordinaryEffect(EffectAbilityDecrease( ABILITY_DEXTERITY, 2)), oPC));
AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect( EffectMovementSpeedDecrease (60)), oPC));
if (message!="") FloatingTextStringOnCreature(message, oPC, FALSE);
SetLocalInt(oPC,"bFatigued",TRUE);
}
void MakePlayerExhausted(object oPC, string message = "")
{
if (!GetIsPC(oPC)) return;
int bFatigued = GetLocalInt(oPC, "bFatigued");
int bExhausted = GetLocalInt(oPC, "bExhausted");
if (bExhausted) return;
if (bFatigued) {
// hcr3 7/17/2003
RemoveEffect( oPC, ExtraordinaryEffect( EffectAbilityDecrease( ABILITY_STRENGTH, 2)));
RemoveEffect( oPC, ExtraordinaryEffect( EffectAbilityDecrease( ABILITY_DEXTERITY, 2)));
RemoveEffect( oPC, ExtraordinaryEffect( EffectMovementSpeedDecrease(60)));
SetLocalInt(oPC,"bFatigued",FALSE);
}
// hcr3 7/17/2003
AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_PERMANENT,
ExtraordinaryEffect(EffectAbilityDecrease( ABILITY_STRENGTH, 6)), oPC));
AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_PERMANENT,
ExtraordinaryEffect(EffectAbilityDecrease( ABILITY_DEXTERITY, 6)), oPC));
AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect( EffectMovementSpeedDecrease(80)), oPC));
if (message!="") FloatingTextStringOnCreature( message, oPC, FALSE);
SetLocalInt(oPC,"bExhausted",TRUE);
}
void MakePlayerCollapse(object oPC, string message = "")
{
if (!GetIsPC(oPC)) return;
effect eSnore = EffectVisualEffect(VFX_IMP_SLEEP);
effect eBlind = SupernaturalEffect(EffectBlindness());
effect eCollapse = SupernaturalEffect(EffectSleep());
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCollapse, oPC, 30.0);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSnore, oPC, 7.0);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlind, oPC, 29.0);
DelayCommand(7.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSnore, oPC, 7.0));
if (message!="") FloatingTextStringOnCreature(message, oPC, FALSE);
}
void MakePCDrunk(object oPC, int IntLoss, string message = "")
{
if (!GetIsPC(oPC)) return;
AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_TEMPORARY,
SupernaturalEffect(EffectAbilityDecrease( ABILITY_INTELLIGENCE, IntLoss)), oPC, 30.0));
if (message!="") FloatingTextStringOnCreature(message, oPC, FALSE);
}