generated from Jaysyn/ModuleTemplate
Initial commit
Initial commit
This commit is contained in:
105
_module/nss/wdm_magic_test.nss
Normal file
105
_module/nss/wdm_magic_test.nss
Normal file
@@ -0,0 +1,105 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Dead and Wild Magic System - Tutorial Test
|
||||
// wdm_magic_test
|
||||
// By Don Anderson
|
||||
// dandersonru@msn.com
|
||||
//
|
||||
// Place this script in the OnUsed Event of a Switch
|
||||
//
|
||||
// The source script is by Catscan
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "wdm_inc"
|
||||
|
||||
void DoStrip()
|
||||
{
|
||||
object oObject = GetFirstObjectInArea();
|
||||
while (oObject != OBJECT_INVALID)
|
||||
{
|
||||
int iType = GetObjectType(oObject);
|
||||
switch (iType)
|
||||
{
|
||||
case OBJECT_TYPE_CREATURE:
|
||||
{
|
||||
if (GetIsDM(oObject) || GetIsDMPossessed(oObject)) continue;
|
||||
else WDM_StripMagic(oObject); break;
|
||||
}
|
||||
case OBJECT_TYPE_ITEM: WDM_RemoveAllProperties(oObject); break;
|
||||
}
|
||||
oObject = GetNextObjectInArea();
|
||||
}
|
||||
}
|
||||
|
||||
void DoRestore()
|
||||
{
|
||||
object oObject = GetFirstObjectInArea();
|
||||
while (oObject != OBJECT_INVALID)
|
||||
{
|
||||
int iType = GetObjectType(oObject);
|
||||
switch (iType)
|
||||
{
|
||||
case OBJECT_TYPE_CREATURE:
|
||||
{
|
||||
if (GetIsDM(oObject) || GetIsDMPossessed(oObject)) continue;
|
||||
else WDM_RestoreMagic(oObject); break;
|
||||
}
|
||||
case OBJECT_TYPE_ITEM: WDM_RestoreAllProperties(oObject); break;
|
||||
|
||||
}
|
||||
oObject = GetNextObjectInArea();
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oSwitch = OBJECT_SELF;
|
||||
object oPC = GetLastUsedBy();
|
||||
object oArea = GetArea(oPC);
|
||||
string sLight = "LIGHT";
|
||||
int nCurStatus = GetLocalInt(oArea,"STATUS");
|
||||
|
||||
object oLight = GetNearestObjectByTag(sLight,oPC);
|
||||
DestroyObject(oLight);
|
||||
|
||||
SetLocalInt(oArea,"X2_L_WILD_MAGIC",TRUE);
|
||||
|
||||
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
|
||||
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShake,oSwitch,RoundsToSeconds(6));
|
||||
|
||||
nCurStatus++;
|
||||
if(nCurStatus > 2)nCurStatus = 0;
|
||||
|
||||
string sResRef;
|
||||
string sMsg;
|
||||
switch (nCurStatus)
|
||||
{
|
||||
case 0:
|
||||
sResRef = "plc_solwhite";
|
||||
sMsg = "* Magic works as normal *";
|
||||
WDM_SetAreaDeadMagicStatus(oArea, FALSE);
|
||||
WDM_SetAreaWildMagicStatus(oArea, FALSE);
|
||||
DoRestore();
|
||||
break;
|
||||
|
||||
case 1:
|
||||
sResRef = "plc_solred";
|
||||
sMsg = "* Area is now Wild *";
|
||||
WDM_SetAreaDeadMagicStatus(oArea, FALSE);
|
||||
WDM_SetAreaWildMagicStatus(oArea, TRUE, 100);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
sResRef = "plc_solgreen";
|
||||
sMsg = "* Area is now Dead *";
|
||||
WDM_SetAreaWildMagicStatus(oArea, FALSE);
|
||||
WDM_SetAreaDeadMagicStatus(oArea, TRUE, TRUE, TRUE);
|
||||
DoStrip();
|
||||
break;
|
||||
}
|
||||
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,sResRef,GetLocation(oSwitch),FALSE,sLight);
|
||||
SpeakString(sMsg);
|
||||
SetLocalInt(oArea,"STATUS",nCurStatus);
|
||||
}
|
||||
Reference in New Issue
Block a user