LoT_PRC8/_module/nss/rp_pox_oud.nss
Jaysyn904 ec287507a1 Initial upload
Initial upload.
2023-09-25 21:32:17 -04:00

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;
}
}
}