Author: ICE Hammer
Author Website: n/a
Script Name: Pack Mule/Ox (Currently model is OX though)
Description: This scripts let's you buy an ox and add him to you party. The ox follows the person who bought it, you can place items into the Ox and take them out agian any time you want (no Charge). Also you can make the Ox acts like a normal Henchmen, such as making it stand ground outside a cave or telling it to follow you agian. The ox has a limited number of hit points and can die.
Instructions on Use: These Scripts require:
  1. 1 NPC (Person who sells the OX)
  2. 1 OX (Animal that carries the items)

Implementation steps:

  1. Create an NPC merchant (can use any creature for this)
  2. Create a conversation for the NPC called: "ice_conv_ox"
  3. Create a conversation as follows (the actual spoken words can be altered as you see fit):
    • [OWNER] - Hi there.
      • [PC] - I wish to buy your OX.
        • [OWNER] - Ok it will be 500gp.
          • [PC] -Alright that sounds fair enough. (NOTE: Input Script 1 below into the ActionTaken part of this conversation.  If you wish to raise/lower the price of the Ox be certain to update both the conversation and the script appropriately.)
          • [PC] - No way that's to much. [End Dialog]
  4. Create an Ox, his name does not matter but his tag does. Make his TAG this:"Pack_OX_1".
  5. Create a conversation for the Ox now called: "ice_conv_invenOX"
    • [OWNER] - Mooo (NOTE: Input Script 2 below into the TextAppearsWhen part of the conversation.  You may also want to set the Other Actions: Play Sound to "as_an_cow1")
      • [PC] - Inventory. (NOTE: Input Script 3 below into the ActionTaken part of the conversation.)
  6. Create a Merchant called: "Pack_OX_Store_1".
  7. Set the "Sell Mark Up" = 1
  8. Set the "Buy Mark Down" = 1
  9. Click "Buy Stolen Goods" 
  10. Set "Buy Mark Down" = 1
  11. Place the new Merchant you just made on top of the OX.
  12. Go to the properties on the OX and click on it's Statistics. Do the Following things:
    1. Str - 25
    2. Dex - 8
    3. Con - 18
    4. Int - 3
    5. Wis - 10
    6. Cha - 6
    7. Natural AC - 15
    8. Base Hit Points - 50
  13. Click on Scripts on the Ox's properties and Change these to the following things:
    1. OnBlocked - nw_ch_ace
    2. OnCombatRoundEnd - nw_chac3
    3. OnConversation - nw_ch_ac4
    4. OnDamaged - nw_ch_ac6
    5. OnDisturbed - nw_c2_default8
    6. OnHearbeat - nw_ch_ac1
    7. OnPreception - nw_ch_ac2
    8. OnPhysicalAttacked - nw_ch_ac5
    9. onRested - nw_c2_defaulta
    10. OnSpawn - nw_ch_ac9
    11. OnSpellCastAt - nw_ch_acb
    12. OnUserDefined - nw_ch_acd
Notes: Miscellaneous Notes:
  1. Your pack Ox is like a henchmen it will fight what you fight unless you tell it to stand ground.
  2. Your pack Ox is slower then you so if you run to far it might get into to a fight a die.
  3. When you put Items into the Pack mule you are actually selling them, but to get items back out you have to buy them but the price of buying and selling is the same.

How to use Pack Ox:
Click on him and it will bring a dialogue box up and then just click inventory.  You can put and take things in whenever you want.

Future Plans:
-Putting a weight limit on how much it carries
-Leveling up your Pack Ox when you do.

Script 1 (ActionTaken):

//::///////////////////////////////////////////////

//:: ice_add_ox

//:: 

//:://////////////////////////////////////////////

/* 

    Buys Ox and adds him to your party.

  

*/

//:://////////////////////////////////////////////

//:: Created By:ICE Hammer

//:: Created On:7-12-02

//:://////////////////////////////////////////////

void main()

{

    if(GetGold(GetPCSpeaker()) >= 500)

    {

	//Creates an object variable

	object oOx = GetObjectByTag("Pack_OX_1");

        

	//This take 500Gp from the PC who buying the OX

	TakeGoldFromCreature(500, GetPCSpeaker(), TRUE);

	

	SetAssociateListenPatterns(oOx);

        // * Companions, come in, by default with Attack Nearest Enemy && Follow Master 		//modes

        

	//This tells the OX to follow the PC	

	SetLocalInt(oOx, "NW_COM_MODE_MOVEMENT", ASSOCIATE_COMMAND_FOLLOWMASTER);

        

	//This adds the Ox into the party as a Henchmen

	AddHenchman(GetPCSpeaker(),oOx);

        

	//This varable let's the PC now be able to talk to the Ox(gives acess to inventory).	

	SetLocalInt(GetPCSpeaker(),"Bought_OX",1);

    }

}

Script 2 (TextAppearsWhen):

//::///////////////////////////////////////////////
//:: FileName ice_ox_bought
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: ICE Hammer
//:: Created On: 7/12/2002
//:://////////////////////////////////////////////
int StartingConditional()
{
// Checks to see if You have bought the Ox
if(!(GetLocalInt(GetPCSpeaker(), "Bought_OX") == 1))
return FALSE;
return TRUE;
}

Script 3 (ActionTaken):

//::///////////////////////////////////////////////
//:: FileName ice_convox_inven
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: ICE Hammer
//:: Created On: 7/11/2002
//:://////////////////////////////////////////////
void main()
{
    // Either open the store with that tag or let the user know that no store exists.
    object oStore = GetObjectByTag("Pack_OX_Store_1");
    if(GetObjectType(oStore) == OBJECT_TYPE_STORE)
        OpenStore(oStore, GetPCSpeaker());
    else
        ActionSpeakStringByStrRef(53090, TALKVOLUME_TALK);
}