////////////////////////////////////////////////////////////////////////////////
// wazoo_use_place - Spells Out The Wazoo - Multi-Purpose Placeables OnUsed
// By Deva Bryson Winblood. 9/18/2004
////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////
// PROTOTYPES
/////////////////////////////////////

/////////////////////////////////////////////////////////////////////////// MAIN
void main()
{
   object oPC=GetLastUsedBy();
   string sTag=GetTag(OBJECT_SELF);
   object oDest;
   object oOb;
   int nN;
   float fF;
   location lLoc;
   vector vV;
   if (GetIsObjectValid(oPC))
   { // valid
     if (sTag=="wazoo_po_ropetd")
     { // used the Rope Trick Placeable while it was down
       oDest=GetLocalObject(OBJECT_SELF,"oLink");
       AssignCommand(oPC,SpeakString("*climbs rope*"));
       AssignCommand(oPC,JumpToObject(oDest));
     } // used the Rope Trick Placeable while it was down
     else if (sTag=="wazoo_po_ropetu")
     { // used the Rope Trick Placeable while it was up
       oDest=GetLocalObject(OBJECT_SELF,"oLink");
       oOb=GetLocalObject(oDest,"oArea");
       vV.x=GetLocalFloat(oDest,"fX");
       vV.y=GetLocalFloat(oDest,"fY");
       vV.z=GetLocalFloat(oDest,"fZ");
       lLoc=Location(oOb,vV,GetLocalFloat(oDest,"fOrientation"));
       AssignCommand(oPC,SpeakString("*lowers rope*"));
       oOb=CreateObject(OBJECT_TYPE_PLACEABLE,"wazoo_po_ropetd",lLoc);
       if (GetIsObjectValid(oOb))
       { // rope made
         SetLocalObject(oOb,"oLink",oDest);
         SetLocalObject(oDest,"oRope",oOb);
       } // rope made
       else
       { // failed
         AssignCommand(oPC,SpeakString("Failed to create rope at Area '"+GetName(GetLocalObject(oDest,"oArea"))+"' at X:"+FloatToString(vV.x)+",Y:"+FloatToString(vV.y)+"Z:"+FloatToString(vV.z)+"!"));
       } // failed
       DestroyObject(OBJECT_SELF);
     } // used the Rope Trick Placeable while it was up
     else if (GetName(OBJECT_SELF)=="Rope Trick Exit")
     { // exit rope trick
       AssignCommand(oPC,ClearAllActions());
       SetLocalObject(oPC,"oTarget",OBJECT_SELF);
       AssignCommand(oPC,ActionStartConversation(oPC,"wazoo_cv_ropetri",TRUE,FALSE));
     } // exit rope trick
   } // valid
}
/////////////////////////////////////////////////////////////////////////// MAIN

/////////////////////////////////////
// FUNCTIONS
/////////////////////////////////////