NWScript:
string ITEM_KILL_TAG = "MyObject";
float PROXIMITY_DISTANCE = 30.;
int VFX_EFFECT = VFX_FNF_GAS_EXPLOSION_EVIL;
int iDEBUG = TRUE;
void Alert(string szMessage) {
if(iDEBUG == TRUE) {
object oPC = GetFirstPC();
SendMessageToAllDMs(szMessage);
while(GetIsObjectValid(oPC)) {
SendMessageToPC(oPC, szMessage);
oPC = GetNextPC();
}
}
}
void SeakAndDestroy(object oCenter, float fDist) {
int nCounter = 0;
float fCreatureDist = 0.0;
object oCreature;
int TestFlag=0;
while(GetIsObjectValid(oCreature =
GetNearestObject(OBJECT_TYPE_CREATURE, oCenter,
++nCounter)))
{
fCreatureDist =
GetDistanceBetween(oCenter, oCreature);
Alert("Creature " + GetTag(oCreature)
+ " found at " + FloatToString(fCreatureDist));
if((GetArea(oCenter) == GetArea(oCreature))
&& (fCreatureDist < fDist)
&& (GetIsEnemy(oCreature,oCenter)))
{
Alert("Killing " + GetTag(oCreature));
effect eVis = EffectVisualEffect(VFX_EFFECT);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,
eVis, oCreature, 5.0);
effect eDamage = EffectDamage(10000,
DAMAGE_TYPE_MAGICAL,
DAMAGE_POWER_PLUS_FIVE);
DelayCommand(1.0,
ApplyEffectToObject(DURATION_TYPE_INSTANT,
eDamage, oCreature));
}
}
}
void Nukem(string sTag, float fDist) {
int nCounter = -1;
object oItem;
while(GetIsObjectValid(oItem =
GetObjectByTag(sTag, ++nCounter)))
{
SeakAndDestroy(oItem, fDist);
}
}
void main() {
Nukem(ITEM_KILL_TAG, PROXIMITY_DISTANCE);
}