Initial Upload
Initial Upload
This commit is contained in:
72
_module/nss/dh2_onaenter.nss
Normal file
72
_module/nss/dh2_onaenter.nss
Normal file
@@ -0,0 +1,72 @@
|
||||
///////////////////////////////////////////////////////
|
||||
// DESERT HEAT 2.0 - OnAreaEnter
|
||||
// By Deva Bryson Winblood
|
||||
// 10/10/2003
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////
|
||||
// Prototypes
|
||||
////////////////////////////
|
||||
void fnHeatEffects(object oPC,object oArea);
|
||||
|
||||
//////////////////////////////////////////// MAIN
|
||||
void main()
|
||||
{
|
||||
object oPC=GetEnteringObject();
|
||||
if(GetIsDM(oPC))return;
|
||||
object oIntensity=GetNearestObjectByTag("DH2_INTENSITY",oPC);
|
||||
object oArea=GetArea(oPC);
|
||||
int nIntensity=30;
|
||||
if (oIntensity!=OBJECT_INVALID)
|
||||
nIntensity=StringToInt(GetName(oIntensity));
|
||||
SetLocalInt(oPC,"DH2_Intensity",nIntensity);
|
||||
if (nIntensity<5) nIntensity=15;
|
||||
if (GetIsNight()==TRUE&&GetWaypointByTag("DH2_DAYNIGHT")!=OBJECT_INVALID) nIntensity=nIntensity*2;
|
||||
if (GetIsPC(oPC)==TRUE)
|
||||
{ // is PC
|
||||
DelayCommand(IntToFloat(nIntensity),fnHeatEffects(oPC,oArea));
|
||||
} // is PC
|
||||
}
|
||||
//////////////////////////////////////////// MAIN
|
||||
|
||||
///////////////////////////
|
||||
// Functions
|
||||
///////////////////////////
|
||||
void fnHeatEffects(object oPC,object oArea)
|
||||
{
|
||||
int nHeat;
|
||||
effect eCon=EffectAbilityDecrease(ABILITY_CONSTITUTION,1);
|
||||
effect eMov=EffectMovementSpeedDecrease(20);
|
||||
effect eStr=EffectAbilityDecrease(ABILITY_STRENGTH,1);
|
||||
effect eLight=EffectVisualEffect(VFX_IMP_DAZED_S);
|
||||
effect eFull=EffectVisualEffect(VFX_IMP_SLOW);
|
||||
effect eDmg=EffectDamage(1);
|
||||
if (GetArea(oPC)==oArea)
|
||||
{ // still in same area
|
||||
//SendMessageToPC(oPC,"fnHeatEffects("+GetName(oPC)+","+GetName(oArea)+") current area:"+GetName(GetArea(oPC)));
|
||||
nHeat=GetLocalInt(oPC,"DH2_HeatLevel");
|
||||
nHeat=nHeat+1;
|
||||
SetLocalInt(oPC,"DH2_HeatLevel",nHeat);
|
||||
if (nHeat==2)
|
||||
SendMessageToPC(oPC,"You are starting to feel thirsty.");
|
||||
else if (nHeat==3)
|
||||
SendMessageToPC(oPC,"You need a drink of water soon.");
|
||||
else if (nHeat==4)
|
||||
{
|
||||
SendMessageToPC(oPC,"You are extremely thirsty.");
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT,eLight,oPC,5.0);
|
||||
}
|
||||
else if (nHeat>4)
|
||||
{ // suffer heat problems
|
||||
SendMessageToPC(oPC,"You are suffering from thirst");
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eCon,oPC,140.0);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eMov,oPC,130.0);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eStr,oPC,120.0);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT,eFull,oPC,5.0);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT,eDmg,oPC,1.0);
|
||||
} // suffer heat problems
|
||||
nHeat=GetLocalInt(oPC,"DH2_Intensity");
|
||||
if (GetIsNight()==TRUE&&GetWaypointByTag("DH2_DAYNIGHT")!=OBJECT_INVALID) nHeat=nHeat*2;
|
||||
DelayCommand(IntToFloat(nHeat),fnHeatEffects(oPC,oArea));
|
||||
} // still in same area
|
||||
} // fnHeatEffects()
|
Reference in New Issue
Block a user