DMH-Online

Dungeon Masters Helper · Est. 2005

Placeables Scripts

NWN Script: kill_nearby.htm

Author Sticky: Post Working Scripts Here
ligaman Posted: Sunday, 30 June 08:43PM
NWScript:
//Script: Proximity_Killer 
// (thanks to Albert Shih (Calidarien) for Alert() 
// function)
//Author: Frank Liga
//Version: v0.9, 2002-06-30
//Description: When a creature gets near the item with a 
// that is an enemy faction
//the creature will be killed.
//Usage: Attach to OnHeartbeat of the module/area
//Notes:
// 1. Create any number of obects with the same tag (i used a portal but you can use any object)
// 2. Create a Faction that is Friendly to PCS, Hostile to Hostiles,
//      and neutral to everyone else
// 3. Give the newly created Items this faction
// 4. Place this script in the module/area heartbeat event
// 5. Set the 3 variables (you can kill iDEBUG after you test it out)
// ITEM_KILL_TAG =  tag of the object
// VFX_EFFECT = the visual affect you want to kill the creatur
// PROXIMITY_DISTANCE how close the creature needs to be to set it off
//  v0.9: Pretty cool
//
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();
    }
  }
}
//
// Checks how close a creature is and kills it
// if within proximity
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);
  }
}
//
//Main function
void main() {
  Nukem(ITEM_KILL_TAG, PROXIMITY_DISTANCE);
}
⌂ All Scripts ← PreviousNext → 👁 Category List

All Placeables Scripts

📄 cast_haste 📄 check_fire 📄 chest_puzzle 📄 close_door 📄 close_door_002 📄 close_door_003 📄 close_door_004 📄 create_item_with_delay 📄 darklamp 📄 darklamp_002 📄 day_night_lights 📄 day_night_lights_002 📄 destroy_spawned_items 📄 destroy_spawned_items_002 📄 door_guard 📄 door_lock_item 📄 dragging_placeables 📄 encounter_on_open 📄 encounter_on_open_002 📄 fair_loot 📄 fire_burns 📄 guarded_chest 📄 kill_attacker 📄 kill_nearby 📄 lights_on_off 📄 linked_doors 📄 moveable_placeables 📄 multi_door 📄 open_doors 📄 poly_attacker 📄 polymorph_pc 📄 polymorph_pc_002 📄 random_teleport 📄 refil_chest 📄 refil_chest_002 📄 refil_chest_003 📄 refil_chest_004 📄 refil_chest_005 📄 refil_chest_006 📄 refil_chest_007 📄 remove_with_item 📄 respawner 📄 smart_doors 📄 spit_treasure 📄 talkable_placeables 📄 talking_door 📄 talking_sign 📄 talking_sign_002 📄 talking_sign_003 📄 talking_sign_004 📄 teleporting_chairs 📄 useable_bedroll 📄 useable_birdcage 📄 useable_cannon 📄 useable_catapult 📄 useable_chair 📄 useable_chair_002 📄 useable_chair_003 📄 useable_chair_004 📄 useable_couch 📄 useable_divining_pool 📄 useable_gong 📄 useable_kegs 📄 useable_kegs_002 📄 useable_placeables_002 📄 useable_sign 📄 useable_sign_002 📄 useable_sundial 📄 useable_sundial_002 📄 useable_sundial_003 📄 useable_sundial_004 📄 useable_sundial_005 📄 useable_sundial_006 📄 useable_training_dummy 📄 useable_training_dummy_002 📄 useable_training_dummy_003 📄 useable_training_dummy_004 📄 useable_trapdoor 📄 useable_trapdoor_002 📄 useable_trapdoor_003 📄 useable_trapdoor_004 📄 weapon_spawn_per_class 📄 worth