Author: maddman75
Author Website: n/a
Script Name: NPC Prostitute
Description: Causes a prostitute to act the part.
Instructions on Use: Give the prostitute a dialogue tree. She propositions the player if male and has one of two possible actions. The first is to give a 'special favor', which is a pretty severe abuse of the Worship animation.  When you reach that point in the conversation, set the actions taken to this script.

Script 1 below currently costs the PC 15 gold pieces and makes the prostitute worship him.  Script 2 is an alternate choice that will cause the prostitute to follow the PC around, script 3 ensures that the Prostitute does not follow the PC out of the area the encounter began in.

Scripts 1 and 2 are called from the "ActionTaken" part of a conversation, script 3 goes into the OnHearbeat of the prostitute.  You will also need a waypoint with the tag 'pro_start' at the point that you want her to return to after the PC leaves the area.

Script 1(ActionTaken):

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

//:: FileName pro15gp

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

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

//:: Created By: maddman75

//:: Created On: 7/6/2002 11:59:31 PM

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

void main()

{

    // Remove some gold from the player

    TakeGoldFromCreature(15, GetPCSpeaker(), TRUE);

    
    // perform the favor

    PlaySound("al_na_sludglake1");

    PlayAnimation(ANIMATION_LOOPING_WORSHIP, 1.0, 8.0);

}

Script 2(ActionTaken):

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

//:: FileName kela5gp

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

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

//:: Created By: maddman75

//:: Created On: 7/6/2002 11:59:31 PM

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

void main()

{

    object trick;

    trick = GetPCSpeaker();

    // Remove some gold from the player

    TakeGoldFromCreature(5, GetPCSpeaker(), FALSE);

    ActionForceFollowObject(GetPCSpeaker(), 1.0);

}

Script 3(OnHearbeat):

// Additions to default heartbeat script

    object trick;

    object inn;

    inn = GetObjectByTag("tag of area");

    if(trick != OBJECT_INVALID                                                      )

    {

    ActionForceFollowObject (trick, 1.0);

    }

    if(trick == OBJECT_INVALID)

    {

    ActionForceMoveToLocation(GetLocation(GetWaypointByTag("pro_start")));

    }
    if (inn != GetArea(OBJECT_SELF))

    {

    ClearAllActions();

    ActionForceMoveToLocation(GetLocation(GetWaypointByTag("pro_start")));

    trick = OBJECT_INVALID;

    }