void Water(object PC, string tag, float time) { string atag = GetTag(GetArea(PC)); if (atag == tag) { int thirst = GetLocalInt(PC, "thirst"); if (thirst > 4) { FloatingTextStringOnCreature("You died of thirst!", PC); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(FALSE), PC); thirst = 0; } else if (thirst == 4) { FloatingTextStringOnCreature("You are going to die of thirst soon.", PC); ApplyEffectToObject(DURATION_TYPE_INSTANT, ExtraordinaryEffect(EffectDamage((thirst-1)*40, DAMAGE_TYPE_DIVINE, DAMAGE_POWER_ENERGY)), PC); AssignCommand(PC, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 1.0, 20.0)); } else if (thirst > 1) { FloatingTextStringOnCreature("You need water.", PC); ApplyEffectToObject(DURATION_TYPE_INSTANT, ExtraordinaryEffect(EffectDamage((thirst-1)*40, DAMAGE_TYPE_DIVINE, DAMAGE_POWER_ENERGY)), PC); } else { FloatingTextStringOnCreature("You feel thirsty.", PC); } SetLocalInt(PC, "thirst", thirst+1); DelayCommand(time, Water(PC, tag, time)); } } void main() { float delay = 60.0; // time in seconds before player must drink object PC = GetEnteringObject(); if (GetIsPC(PC) == TRUE) { FloatingTextStringOnCreature("The heat here is scorching.", PC); SetLocalInt(PC, "thirst", GetLocalInt(PC, "thirst")+1); DelayCommand(20.0, Water(PC, GetTag(OBJECT_SELF), delay)); } }