83 lines
3.1 KiB
Plaintext
83 lines
3.1 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Default: On User Defined for Pack Ox
|
|
//:: rp_oud_pox
|
|
//:: Copyright (c) 2002 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Determines the course of action to be taken
|
|
on a user defined event.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Rogers Pessin
|
|
//:: Created On: August 4, 2002
|
|
//:://////////////////////////////////////////////
|
|
|
|
void main()
|
|
{
|
|
int nEvent = GetUserDefinedEventNumber();
|
|
|
|
switch (nEvent)
|
|
{
|
|
case 1007: // Pack Ox was killed
|
|
{
|
|
/*
|
|
Drop the packs on the ox. An invisible placeable object is used
|
|
to facilitate this, because otherwise the container created to
|
|
hold the objects when the ox simply dies isn't large enough to
|
|
hold all of the packs (it's just 1 "page" in size and only holds
|
|
6 of the packs). By having the invisible placeable take all of the
|
|
packs and then destroying said placeable, all of the packs are
|
|
available to be looted.
|
|
*/
|
|
FloatingTextStringOnCreature("The packs fall to the ground.",OBJECT_SELF,FALSE);
|
|
object oTransferor = CreateObject(OBJECT_TYPE_PLACEABLE,"rp_gen_item_trfr",GetLocation(OBJECT_SELF));
|
|
object oPack = GetFirstItemInInventory();
|
|
object oOx = OBJECT_SELF;
|
|
while (GetIsObjectValid(oPack))
|
|
{
|
|
// Only transfer the actual packs by this method.
|
|
if (GetTag(oPack)=="ATS_S_L901_N_SLH")
|
|
{
|
|
AssignCommand(oTransferor,ActionTakeItem(oPack,oOx));
|
|
}
|
|
oPack = GetNextItemInInventory();
|
|
}
|
|
DestroyObject(oTransferor,0.5);
|
|
|
|
// Do the death mooo :)
|
|
ActionSpeakString("MOOOOooooo.....");
|
|
PlaySound("as_an_cow2");
|
|
break;
|
|
}
|
|
|
|
case 1050: // Pack Ox was loosely tied down... teleport it to its owner.
|
|
{
|
|
object oOwner = GetLocalObject(OBJECT_SELF,"RP_OWNER");
|
|
|
|
// Make sure current owner object is valid and a PC still.
|
|
if (GetIsObjectValid(oOwner) && GetIsPC(oOwner))
|
|
{
|
|
// Is owner in a different area now? If so, teleport to him/her.
|
|
if (GetArea(OBJECT_SELF)!=GetArea(oOwner))
|
|
{
|
|
ActionJumpToObject(oOwner,FALSE);
|
|
}
|
|
} // end if (GetIsObjectValid(oOwner) && GetIsPC(oOwner))
|
|
|
|
// Lastly, resume following the owner at a close distance.
|
|
ActionForceFollowObject(oOwner,FeetToMeters(5.0));
|
|
break;
|
|
}
|
|
|
|
case 1051: // Take the pack from the owner and resume the conversation.
|
|
{
|
|
object oPack = GetLocalObject(OBJECT_SELF,"RP_PACK_OFF");
|
|
object oMyOwner = GetLocalObject(OBJECT_SELF,"RP_OWNER");
|
|
ActionTakeItem(oPack,oMyOwner);
|
|
SetLocalObject(OBJECT_SELF,"RP_PACK_OFF",OBJECT_INVALID);
|
|
ActionResumeConversation();
|
|
break;
|
|
}
|
|
}
|
|
}
|