DMH-Online

Dungeon Masters Helper · Est. 2005

Npcs Scripts

NWN Script: item_guardian_002.htm

Author Sticky: Post Working Scripts Here
Pothole Posted: Wednesday, 03 July 02:35AM
script name: bm_npc_disturb
What is does: This script will cause NPC's to defend items. Items are defended by TAG instead of customizing the script for each NPC/Container.
How to use: Create an OnDisturb script for your items to protect. This can be a generic script used for all items you want watch over.
Create an NPC. Give them a unique TAG.
Create a container that the NPC will defend.
Make it's TAG NPCTAG1234, where NPCTAG is the TAG of teh NPC, and 1234 is any number between 0001 and 9999.
It must be a 4 digit number. Make sure the container is not of the hostile faction.



In the OnDisturb script of the container put the following:
NWScript:
#include "bm_npc_disturb"
void main() {
   NPC_CheckDisturb();
}



Then create a new script and call it
bm_npc_disturb.
Put in the following:

NWScript:
//:://////////////////////////////////
//:: bm_npc_disturb
//:: Created By: Brandon Mathis
//:: Created On: July 2, 2002
//:: Inspired By: EtherDragon's ondisturb script
//:://///////////////////////////////
//:://///////////////////////////////
//:: This script provides a function
//:: that will cause NPC's to attack
//:: if items that belong to them are disturbed.
//:://///////////////////////////////
//:://///////////////////////////////
//:: To Use: Place this script in your
//:: module.  In the OnDisturb script
//:: of an object to be protected insert
//:: the following line:
//:: #include "bm_npc_disturb"
//:: Then in the void main() section of the
//:: OnDisturb script place a call to
//:: NPC_CheckDisturb();
//:: The Item must have a TAG of NPCTAG0001,
//:: where NPCTAG is the TAG of the NPC that
//:: owns the item and 0001 is a number
//:: between 0001 and 9999.  The number must
//:: be 4 digits long.
//:://////////////////////////////////
void NPC_CheckDisturb()
{
    // Initialize Objects
    object oPlayer = GetLastDisturbed();
    string sOwner = GetTag(OBJECT_SELF);
    sOwner = GetStringLeft(sOwner, GetStringLength(sOwner) - 4);
    object oOwner = GetObjectByTag(sOwner);
     if ((GetInventoryDisturbType() == INVENTORY_DISTURB_TYPE_REMOVED) ||
        (GetInventoryDisturbType() == INVENTORY_DISTURB_TYPE_STOLEN))
    {
        int iPCPickPocket = GetSkillRank(SKILL_PICK_POCKET, oPlayer) + GetAbilityModifier(ABILITY_DEXTERITY, oPlayer) + d20(1);
        int iNPCSpot = GetSkillRank(SKILL_SPOT, oOwner) + GetAbilityModifier(ABILITY_WISDOM, oOwner) + d20(1) + 2;
        if (iPCPickPocket > iNPCSpot)
        {
        // Theft not spotted.
          SendMessageToPC(oPlayer, "Your actions were unnoticed.");
          return;
        }
        else
        {
        // Theft was spotted.
          SendMessageToPC(oPlayer, "You were spotted!");
          AdjustReputation(oPlayer, oOwner, -20);
          AssignCommand(oOwner, ActionAttack(oPlayer));
        }
    }
}
⌂ All Scripts ← PreviousNext → 👁 Category List

All Npcs Scripts

📄 ambient_animations 📄 barmaid 📄 barmaid002 📄 barmaid003 📄 barmaid003a 📄 barmaid004 📄 bitch_slap 📄 blacksmith 📄 blacksmith_001 📄 blacksmith_002 📄 blacksmith_003 📄 bounty_hunter 📄 check 📄 check_pc_item 📄 check_pc_item_002 📄 cheer_pcs 📄 cook 📄 daily_activity 📄 day_merchant 📄 determine_armed 📄 drunk 📄 equip_dequip 📄 equip_dequip_002 📄 escort 📄 flee 📄 flee_001 📄 force_pc_sit 📄 gate_guard 📄 get_nearest 📄 guard_dog_002 📄 guard_patrol 📄 healer 📄 impersonation 📄 item_guardian 📄 item_guardian_002 📄 jail_cell 📄 janitor 📄 janitor_002 📄 living_statues 📄 misc_activity 📄 monolouge 📄 multi_converse 📄 night_watch 📄 npc_brawls 📄 npc_pick_pocket 📄 npc_speak_onperception 📄 npc_start_conv 📄 npc_start_conv_002 📄 npc_start_conv_003 📄 npc_start_conv_004 📄 npc_start_conv_005 📄 open_door 📄 polymorph 📄 prostitute 📄 protect_items 📄 protect_items_002 📄 random_speak 📄 random_speak_002 📄 random_speak_003 📄 random_speak_004 📄 random_speak_005 📄 random_walk2 📄 reinforcements 📄 reinforcements_002 📄 remember_conv 📄 rowdy 📄 sheath_weapons 📄 sit_and_talk 📄 sit_and_talk_002 📄 sit_in_nearest_chair 📄 smart_npc 📄 smart_sitting 📄 streetfight 📄 tag 📄 tag_001a 📄 teleport_away 📄 teleport_away_002 📄 teleport_away_003 📄 town_crier 📄 trivia_bot 📄 walk_after 📄 woodcutter 📄 worker 📄 worker_002 📄 workstation 📄 wrestling_game