//:://///////////////////////////////////////////// //:: Emote Wand: Lap Sit 0 degrees //:: onConv emotewand //::////////////////////////////////////////////// /* 1: find nearest chair/seat in use. 2: create lap and sit on it */ //::////////////////////////////////////////////// //-- ripped from: // chair sitting script by Jhenne // script modified to allow sitting on laps // with Sittable Objects v2.0 by Ranot // //-- by bloodsong //::////////////////////////////////////////////// void DestroyLap(object oLap) { object oSitter = GetSittingCreature(oLap); if(!GetIsObjectValid(oSitter)) { //-- no sitter, blow it up DestroyObject(oLap); return; } //-- else someone is still sitting on it, wait DelayCommand(300.0, DestroyLap(oLap)); } void main() { //-- Step One: find the nearest chair/seat and a lap in it object oPC = GetPCSpeaker(); object oChair = GetNearestObjectByTag("Chair"); object oSeat = GetNearestObjectByTag("Seat"); float fDistanceChair = GetDistanceToObject(oChair); float fDistanceSeat = GetDistanceToObject(oSeat); //-- if non existant (-1) change to vast distance if(fDistanceChair == -1.0) { fDistanceChair = 1000.0; } if(fDistanceSeat == -1.0) { fDistanceSeat = 1000.0; } object oLap; if(fDistanceChair > fDistanceSeat) { //-- chair is further, use seat oLap = oSeat; } else { //-- note, chair selected over seat when same dist oLap = oChair; } object oLapper = GetSittingCreature(oLap); if(!GetIsObjectValid(oLapper)) { //-- nobody sitting in that chair/seat SendMessageToPC(oPC, "No nearby laps found."); return; } //-- Step Two: Create the Lap and Sit In It vector vSit = GetPosition(oLap); float fDir=GetFacing(oLap); float fLapLength = -0.3 ; float fSitterFacing = GetFacing(oLap); vector vPosition = GetPositionFromLocation(GetLocation(oLap)) ; float fPosX = vPosition.x + cos(fSitterFacing)*fLapLength; float fPosY = vPosition.y + sin(fSitterFacing)*fLapLength; vector vLapPosition = Vector(fPosX, fPosY, 0.0) ; location lSit = Location(GetArea(oLap),vLapPosition,fDir); object oSit = CreateObject(OBJECT_TYPE_PLACEABLE, "invisiblelap", lSit,FALSE); DelayCommand(16.0, DestroyLap(oSit)); ActionSit(oSit); }