DMH-Online

Dungeon Masters Helper · Est. 2005

Npcs Scripts

NWN Script: blacksmith_002.htm

Author: Rich Dersheimer
Author Website: n/a
Script Name: Blacksmith NPC
Description: See script comments
Instructions on Use: See script comments

Script 1 (OnUserDefined):

//::///////////////////////////////////////////////
//:: Custom User Defined Event
//:: FileName kelin_userdefs
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/* The smith bashes the anvil every other heartbeat
   until a PC approaches, then he stops bashing,
   turns to face the PC, and speaks a random insult.
   Put this script in your blacksmith NPC's
   OnUserDefined slot, rename and edit
   the NPC's OnSpawn script to activate
   the HEARTBEAT user event. Start the smith near
   an anvil that has the tag "ANVIL1". If the smith
   is attacked, he will fight back instead of
   bashing the anvil. If he kills the PC, he will
   return to bashing. The smith should NOT have
   a conversation assigned to it.
*/
//:://////////////////////////////////////////////
//:: Created By: Rich Dersheimer
//:: Created On: July 4, 2002
//:://////////////////////////////////////////////
void main()
{
    int nUser = GetUserDefinedEventNumber();
    if(nUser == 1001 && GetIsInCombat(OBJECT_SELF) == FALSE) //HEARTBEAT
    {
    // Find the PC who was percieved by the NPC
    object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
    //Get the range to the PC
    float fRange = GetDistanceToObject(oPC);
    //Get where the PC is
    vector vTarget = GetPosition(oPC);
        // Is the PC too far away to talk to?
        if (fRange > 3.0)
        {
        //Bash the object!
        DoPlaceableObjectAction(GetObjectByTag("ANVIL1"), PLACEABLE_ACTION_BASH);
        ActionDoCommand(ClearAllActions());
        }
        else
        {
        // The PC is close
        ClearAllActions();
        // Turn to face the PC
        SetFacingPoint(vTarget);
        // Speak a random insult
        int nRandomInsult = Random(6);
            switch(nRandomInsult)
            {
            case 0:
            ActionSpeakString("Can't you see I'm busy?", TALKVOLUME_TALK);
            ActionDoCommand(ClearAllActions());
            case 1:
            ActionSpeakString("If yer looking to buy, go talk to my brother!", TALKVOLUME_TALK);
            ActionDoCommand(ClearAllActions());
            case 2:
            ActionSpeakString("Go bother someone else!", TALKVOLUME_TALK);
            ActionDoCommand(ClearAllActions());
            case 3:
            ActionSpeakString("Beat it!", TALKVOLUME_TALK);
            ActionDoCommand(ClearAllActions());
            case 4:
            ActionSpeakString("Leave me be!", TALKVOLUME_TALK);
            ActionDoCommand(ClearAllActions());
            case 5:
            ActionSpeakString("GO AWAY!", TALKVOLUME_TALK);
            ActionDoCommand(ClearAllActions());
            }
        }
    }
    else if(nUser == 1002) // PERCEIVE
    {
    }
    else if(nUser == 1003) // END OF COMBAT
    {
    }
    else if(nUser == 1004) // ON DIALOGUE
    {
    }
    else if(nUser == 1005) // ATTACKED
    {
    }
    else if(nUser == 1006) // DAMAGED
    {
    }
    else if(nUser == 1007) // DEATH
    {
    }
    else if(nUser == 1008) // DISTURBED
    {
    }
}
⌂ 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