Author Topic: Sailing Ships  (Read 426 times)

Legacy_Supreme_Pizza

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
Sailing Ships
« on: February 04, 2013, 11:49:58 am »


               I installed the Sailing Ships Hak but I can not get the docking ships to work for the life of me.

Arival scrip:

void main()
{
int DO_ONCE = GetLocalInt(GetModule(),"do_once");
if (DO_ONCE == 1) return;

object oAnnouncer = GetObjectByTag("RanzingtonFerryManager");
object oShip = GetObjectByTag("ship_bigshipv2dr");

float fDelaySecondsLand=1.0;

AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle is inbound. ***", TALKVOLUME_SHOUT));
DelayCommand(1.0, AssignCommand(oAnnouncer, SpeakString("*** We are waiting it's arrival ***", TALKVOLUME_SHOUT)));
if(!GetLocalInt(oShip, "ACTIVATED")) {
    DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));
    DelayCommand(fDelaySecondsLand, SetLocalInt(oShip, "ACTIVATED", 1));
}
else{
    DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)));
    DelayCommand(fDelaySecondsLand, SetLocalInt(oShip, "ACTIVATED", 0));
}
//DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));
//DelayCommand(fDelaySecondsLand, SetLocalInt(oShip, "on", 1));
DelayCommand(300.0, ExecuteScript("seris_outbound", OBJECT_SELF));

SetLocalInt(GetModule(), "do_once", 1);

DelayCommand(360.0, SetLocalInt(GetModule(), "do_once", 0));
}



Departure script:

void main()
{
    object oAnnouncer = GetObjectByTag("RanzingtonFerryManager");
    object oShip = GetObjectByTag("ship_bigshipv2dr");
   
    float fDelaySecondsLand=45.0;
   
    AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle will be leaving shortly. ***", TALKVOLUME_SHOUT));
    DelayCommand(0.2, AssignCommand(oAnnouncer, SpeakString("***Clear the Decks!***", TALKVOLUME_SHOUT)));
    DelayCommand(fDelaySecondsLand, AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle has departed for Seris Island ***", TALKVOLUME_SHOUT)));
    if(!GetLocalInt(oShip, "ACTIVATED")) {
        DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));
        DelayCommand(fDelaySecondsLand, SetLocalInt(oShip, "ACTIVATED", 1));
    }
    else{
        DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)));
        DelayCommand(fDelaySecondsLand, SetLocalInt(oShip, "ACTIVATED", 0));
    }
}

               
               

               


                     Modifié par Supreme_Pizza, 04 février 2013 - 11:50 .
                     
                  


            

Legacy_NWN_baba yaga

  • Hero Member
  • *****
  • Posts: 1944
  • Karma: +0/-0
Sailing Ships
« Reply #1 on: February 04, 2013, 05:28:54 pm »


               We have a whole section for you Scriptors here. I´m sure one of the guys there can help you...
               
               

               
            

Legacy_Zwerkules

  • Hero Member
  • *****
  • Posts: 1997
  • Karma: +0/-0
Sailing Ships
« Reply #2 on: February 04, 2013, 06:35:04 pm »


               Since the scripts look alright, you probably have no NPC with the tag RanzingtonFerryManager
and/or no ship with the tag ship_bigshipv2dr.
Also without knowing which object or script calls those arrival and departure scripts it's not possible to tell why it doesn't work.
               
               

               
            

Legacy_Supreme_Pizza

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
Sailing Ships
« Reply #3 on: February 05, 2013, 12:55:02 pm »


               Thanks for the replies.
I didn't post in the scripting forum since this applies specifically to custom content and was hoping to find someone familiar with the Sailing Ships hak.
Besides...
What kind of custom content doesn't involve scripting?

The arrival script is called from a heartbeat script via ExecuteScript.
This is why I wrapped it in a DO_ONCE.
Why on heartbeat? Because I am trying to schedule the ships.
This particular ship is supposed to run as a shuttle to an island every 4 (game) hours.

The objects do exist. In fact the NPC shouts as he should.
I can get the ship to appear and disappear on cue. I just can't get the arrival and departure animations to play.

I have even added another NPC to the mix that charges a fee to use the shuttle. The NPC appears when the ship docks and disappears 45 seconds before the ship leaves.
               
               

               


                     Modifié par Supreme_Pizza, 05 février 2013 - 12:59 .
                     
                  


            

Legacy_Rolo Kipp

  • Hero Member
  • *****
  • Posts: 4349
  • Karma: +0/-0
Sailing Ships
« Reply #4 on: February 05, 2013, 02:19:37 pm »


               <too groggy to...>

Be sure the ship placeable is not set to static.
I'll take a look at the set up when I get to the Forge later today.

<...dance around>
               
               

               
            

Legacy_Rolo Kipp

  • Hero Member
  • *****
  • Posts: 4349
  • Karma: +0/-0
Sailing Ships
« Reply #5 on: February 05, 2013, 07:00:58 pm »


               <slapping at...>

Could you insert a debug message just before

DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)));
 

to send message that oShip is valid and give the tag of oShip?

I honestly can't find anything wrong script-wise.

I just played around in the Sailing Ships demo :-)
Nice! Been on my list of things to research a *long* time :-P

Edit: Well, I'd change 

int DO_ONCE = GetLocalInt(GetModule(),"do_once");
if (DO_ONCE == 1) return;

to

if (GetLocalInt(GetModule(), "do_once")) return;

but that's just me :-P

Edit 2: I'd also either give the do_once variable a more unique name (for other ships) or perhaps store it on the Dockmaster for each particular ship. 

<...no-see-ums>
               
               

               


                     Modifié par Rolo Kipp, 05 février 2013 - 07:13 .
                     
                  


            

Legacy_Supreme_Pizza

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
Sailing Ships
« Reply #6 on: February 06, 2013, 01:34:22 am »


               Upping my current scripts per request

inbound

//#include "ch_time"
#include "nw_i0_2q4luskan"
void main()
{
    //run once
    int DO_ONCE = GetLocalInt(GetModule(),"do_once");
    if (DO_ONCE == 1) return;
    /////////////////////////////////////////////////////

    string sShip = "serisshuttle"; //string is resref & tag of ship

    // tag of waypoint to spawn ship at
    object oWP = GetObjectByTag("WP_seris_shuttle");

    //location of waypoint
    location lLoc = GetLocation(oWP);

    //set speaker - by tag
    object oAnnouncer = GetObjectByTag("RanzingtonFerryManager");

    //create ship
    CreateObjectVoid(OBJECT_TYPE_PLACEABLE, sShip, lLoc); //resref and tag of ship must be the same

    //select ship
    object oShip = GetObjectByTag(sShip); //resref and tag of ship must be the same
    //park ship - prepred to dock
    AssignCommand(oShip, ActionPlayAnimation(-1));

    //set animation speed
    float fSpeed=1.0;
    //set animation durration
    float fDurationSeconds=25.0;
    //set delay -- ship must park before docking
    float fDelaySecondsLand=1.0;

    //speaker announces ship arrival & docking
    AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle is inbound ***", TALKVOLUME_SHOUT));
    DelayCommand(fDelaySecondsLand, AssignCommand(oAnnouncer, SpeakString("*** We are waiting it's arrival ***", TALKVOLUME_SHOUT)));
    DelayCommand(fDurationSeconds, AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle is docked and loading ***", TALKVOLUME_SHOUT)));

    //play inbound animation
    DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, fSpeed, fDurationSeconds)));
    //set docked animation -- ship must dock before leaving
    DelayCommand(fDurationSeconds, AssignCommand(oShip, ActionPlayAnimation(-1)));


    //Initiate creation of NPC after such time as the ship as (visually) docked
    location lTargetNPC = GetLocation(GetWaypointByTag("WP_seris_captain"));
    DelayCommand(fDurationSeconds, CreateObjectVoid(OBJECT_TYPE_CREATURE, "seriscapt", lTargetNPC, FALSE));

    //run outbound script
    DelayCommand(300.0, ExecuteScript("seris_outbound", OBJECT_SELF));

    /////////////////////////////////////////////////////////////
    //run once
    SetLocalInt(GetModule(), "do_once", 1);
    //reset run once
    DelayCommand(360.0, SetLocalInt(GetModule(), "do_once", 0));

}


outbound

//#include "ch_time"
void main()
{
//Destroy Captain
    object oDestroyNPC = GetObjectByTag("seriscapt");
    DestroyObject(oDestroyNPC);

//Cause the ship to take off

    object oAnnouncer = GetObjectByTag("RanzingtonFerryManager");
    object oShip = GetObjectByTag("serisshuttle");

    float fSpeed=1.0;
    float fDurationSeconds=15.0;
    float fDelaySecondsLand=45.0;
    float fDelaySecondsDestroy=61.0;

    AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle is finished loading and will be leaving shortly ***", TALKVOLUME_SHOUT));
    DelayCommand(1.0, AssignCommand(oAnnouncer, SpeakString("***Clear the Decks!***", TALKVOLUME_SHOUT)));
    DelayCommand(fDelaySecondsLand, AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle has departed for Seris Island ***", TALKVOLUME_SHOUT)));

    DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE, fSpeed, fDurationSeconds)));

    DestroyObject(oShip, fDelaySecondsDestroy);
}

heartbeat script used to call the inbound script

//::///////////////////////////////////////////////
//:: Custom User Defined Event
//:: FileName: HourBell
//:://////////////////////////////////////////////
/*

OnHeartbeat script for an invisible object
The bell tolls every hour counting the time.

*/
//:://////////////////////////////////////////////
//:: Created By: Ayath The Loafer
//:: Created On: October 26th 2002
//:://////////////////////////////////////////////


void main()
{
    int nHour = GetTimeHour();
    //Purely for testing purposes
    //SpeakString(IntToString(nHour));

    if (nHour==0 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        ExecuteScript("seris_inbound", OBJECT_SELF);
        SetLocalInt(OBJECT_SELF,"Called_Time",0);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(24.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(27.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(30.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(33.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==1 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",1);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==2 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",2);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==3 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",3);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==4 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        ExecuteScript("seris_inbound", OBJECT_SELF);
        SetLocalInt(OBJECT_SELF,"Called_Time",4);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==5 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",5);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==6 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",6);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==7 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",7);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==8 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        ExecuteScript("seris_inbound", OBJECT_SELF);
        SetLocalInt(OBJECT_SELF,"Called_Time",8);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==9 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",9);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(24.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==10 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",10);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(24.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(27.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==11 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",11);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(24.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(27.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(30.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==12 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        ExecuteScript("seris_inbound", OBJECT_SELF);
        SetLocalInt(OBJECT_SELF,"Called_Time",12);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(24.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(27.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(30.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(33.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==13 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",13);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==14 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",14);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==15 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",15);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==16 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        ExecuteScript("seris_inbound", OBJECT_SELF);
        SetLocalInt(OBJECT_SELF,"Called_Time",16);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==17 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",17);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==18 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",18);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==19 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",19);
        //StartRanzAirship();
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==20 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        ExecuteScript("seris_inbound", OBJECT_SELF);
        SetLocalInt(OBJECT_SELF,"Called_Time",20);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==21 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",21);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(24.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==22 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",22);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(24.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(27.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
    if (nHour==23 && GetLocalInt(OBJECT_SELF,"Called_Time")!=nHour)
    {
        SetLocalInt(OBJECT_SELF,"Called_Time",23);
        DelayCommand(0.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(3.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(6.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(9.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(12.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(15.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(18.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(21.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(24.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(27.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
        DelayCommand(30.0,AssignCommand(OBJECT_SELF, PlaySound("as_cv_bell2")));
    }
}


               
               

               
            

Legacy_Supreme_Pizza

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
Sailing Ships
« Reply #7 on: February 06, 2013, 04:11:20 am »


               Screens

Shippig Master - Toolset
'Image

Ship - Toolset
'Image

Ship Captain - Game

Can't get a screenie in game in Winduz 7. ':blink:'
               
               

               
            

Legacy_Supreme_Pizza

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
Sailing Ships
« Reply #8 on: February 06, 2013, 05:33:37 am »


               Update Working Arrival
Make sure the arrival durration is long enough or it will pull up then pull out without docking
You must set animation to -1 after creation
Then run activate
Then set animation to -1
Then deactivate

Quote from hak readme

Dockable Sailing Ships:
ACTIVATE:
    OFF2ON Animation. This animation contains all the movement animation from the ship's OFF-Area Start Position to it's Docked Position.
    ON Animation: Looping animation of ship at dock - no movement - no emitters - but NOT static either - so that the ship will reappear to players if/when they move outside the placeable viewing range, then move back into range.  In the toolset, use this setting (ACTIVATED) to place the ship where you want it docked, then once set as desired, return the placeable state to DEFAULT or DEACTIVATED.

DEACTIVARE:
    ON2OFF Animation: This animation contains all the movement animation from the ship's DOCKED position to it's OFF-Area End Position.
    OFF Animation: Static Ship - No Movement Animation
   
DEFAULT: Same as OFF Animation



Arrival

//::///////////////////////////////////////////////
//:: Ship Animation Script
//:: seris_inbound
//:: Copyright © 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*

*/
//:://////////////////////////////////////////////
//:: Created By: William Rickert
//:: AKA:        Supreme_Pizza
//:: Created On: Feb 5 2013
//:://////////////////////////////////////////////

//needed for CreateObjectVoid
#include "nw_i0_2q4luskan"


void main()
{
// Run once wrapper -- otherwise this will run every six seconds
int DO_ONCE = GetLocalInt(GetModule(),"seris_shuttle_do_once");
if (DO_ONCE == 1) return;
////////////// Wrapper //////////////////////////////////////////

    //tag of the speaker
    object oAnnouncer = GetObjectByTag("RanzingtonFerryManager");   //change for new speaker
    //tag of the ship
    object oShip = GetObjectByTag("serisshuttle");                  //change for new ship
   //set animation speed
    float fSpeed=1.0;
    //set animation durration -- can run long -- shorten later after working & timed
    float fDurationSeconds=115.0;                                    //change for arrival animation timing
    //set delay -- ship must park before docking
    float fDelaySecondsLand=1.0;
    // tag of waypoint to spawn ship at
    object oWP = GetObjectByTag("WP_seris_shuttle");                //change for new dock location
    //location of waypoint
    location lLoc = GetLocation(oWP);

    //create ship
    CreateObject(OBJECT_TYPE_PLACEABLE, "serisshuttle", lLoc);      //change for new ship

     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //set animation variable to off                                                                               //
    //                                                                                                            //
    // see hak readme at  http://vnfiles.ign.c...ips_read_me.txt //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //park ship - prepred to dock
    AssignCommand(oShip, ActionPlayAnimation(-1));

    //have dock master announce shipping movements
    AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle is inbound. ***", TALKVOLUME_SHOUT));
    DelayCommand(fDelaySecondsLand, AssignCommand(oAnnouncer, SpeakString("*** We are waiting it's arrival ***", TALKVOLUME_SHOUT)));

    //play inbound animation
    DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, fSpeed, fDurationSeconds)));

    //Initiate creation of NPC after such time as the ship as (visually) docked
    location lTargetNPC = GetLocation(GetWaypointByTag("WP_seris_captain"));
    DelayCommand((fDurationSeconds + 1.5), CreateObjectVoid(OBJECT_TYPE_CREATURE, "seriscapt", lTargetNPC, FALSE));

    //set docked animation -- ship must dock before leaving
    DelayCommand((fDurationSeconds + 1.5), AssignCommand(oShip, ActionPlayAnimation(-1)));

    //run departue script -- to do -- create include and run function here insted -- meh
    DelayCommand(300.0, ExecuteScript("seris_outbound", OBJECT_SELF));

////////////// Wrapper ////////////////////////////////////////////////////////////////////////
    SetLocalInt(GetModule(), "seris_shuttle_do_once", 1);
///////////////////////////////////////////////////////////////////////////////////////////////
//reset run once after module hour is up                                                     //
//current module properties one hour is set to 5 min -- so reset delay set to 6 min                                         //
//otherwise day and night subraces are constantly running in and out of the sun              //
    DelayCommand(360.0, SetLocalInt(GetModule(), "seris_shuttle_do_once", 0));
////////////// Wrapper ////////////////////////////////////////////////////////////////////////
}


Departure

//::///////////////////////////////////////////////
//:: Ship Animation Script
//:: seris_inbound
//:: Copyright © 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*

*/
//:://////////////////////////////////////////////
//:: Created By: William Rickert
//:: AKA:        Supreme_Pizza
//:: Created On: Feb 5 2013
//:://////////////////////////////////////////////

void main()
{
//Destroy Captain
    object oDestroyNPC = GetObjectByTag("seriscapt");
    DestroyObject(oDestroyNPC);

//Cause the ship to take off

    object oAnnouncer = GetObjectByTag("RanzingtonFerryManager");
    object oShip = GetObjectByTag("serisshuttle");

    float fSpeed=1.0;
    float fDurationSeconds=115.0;
    float fDelaySecondsLand=45.0;
    float fDelaySecondsDestroy=116.0;

    AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle is finished loading and will be leaving shortly ***", TALKVOLUME_SHOUT));
    DelayCommand(1.0, AssignCommand(oAnnouncer, SpeakString("***Clear the Decks!***", TALKVOLUME_SHOUT)));
    DelayCommand(fDelaySecondsLand, AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle has departed for Seris Island ***", TALKVOLUME_SHOUT)));

    DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE, fSpeed, fDurationSeconds)));

    DestroyObject(oShip, fDelaySecondsDestroy);
}

Screens
Ship Arriving with Captain (Left) & Shipping Master (Right) - Game
'Image
               
               

               
            

Legacy_Rolo Kipp

  • Hero Member
  • *****
  • Posts: 4349
  • Karma: +0/-0
Sailing Ships
« Reply #9 on: February 06, 2013, 06:29:06 am »


               <snapping off...>

Win 7 & 8 get grumpy with programs trying to muck about outside of the users directory. You could play with UAC and admin settings, but honestly, just look into Greenshot for screenies.

I have it set to let me drag out a region to snap and it automagically sticks a jpg in my images/uploads folder. How easy is that?

<...a quick reply>
               
               

               


                     Modifié par Rolo Kipp, 06 février 2013 - 06:30 .
                     
                  


            

Legacy_Supreme_Pizza

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
Sailing Ships
« Reply #10 on: February 06, 2013, 08:34:33 am »


               Removed one line from Arrival Script

//::///////////////////////////////////////////////
//:: Ship Animation Script
//:: seris_inbound
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*

*/
//:://////////////////////////////////////////////
//:: Created By: William Rickert
//:: AKA:        Supreme_Pizza
//:: Created On: Feb 5 2013
//:://////////////////////////////////////////////

//needed for CreateObjectVoid
#include "nw_i0_2q4luskan"


void main()
{
// Run once wrapper -- otherwise this will run every six seconds
int DO_ONCE = GetLocalInt(GetModule(),"seris_shuttle_do_once");
if (DO_ONCE == 1) return;
////////////// Wrapper //////////////////////////////////////////

    //tag of the speaker
    object oAnnouncer = GetObjectByTag("RanzingtonFerryManager");   //change for new speaker
    //tag of the ship
    object oShip = GetObjectByTag("serisshuttle");                  //change for new ship
   //set animation speed
    float fSpeed=1.0;
    //set animation durration -- can run long -- shorten later after working & timed
    float fDurationSeconds=115.0;                                    //change for arrival animation timing
    //set delay -- ship must park before docking
    float fDelaySecondsLand=1.0;
    // tag of waypoint to spawn ship at
    object oWP = GetObjectByTag("WP_seris_shuttle");                //change for new dock location
    //location of waypoint
    location lLoc = GetLocation(oWP);

    //create ship
    CreateObject(OBJECT_TYPE_PLACEABLE, "serisshuttle", lLoc);      //change for new ship

     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //set animation variable to off                                                                               //
    //                                                                                                            //
    // see hak readme at  http://vnfiles.ign.com/nwvault.ign.com/fms/files/hakpaks/8028/sailing_ships_read_me.txt //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //park ship - prepred to dock
    AssignCommand(oShip, ActionPlayAnimation(-1));

    //have dock master announce shipping movements
    AssignCommand(oAnnouncer, SpeakString("*** The Seris Shuttle is inbound. ***", TALKVOLUME_SHOUT));
    DelayCommand(fDelaySecondsLand, AssignCommand(oAnnouncer, SpeakString("*** We are waiting it's arrival ***", TALKVOLUME_SHOUT)));

    //play inbound animation
    DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, fSpeed, fDurationSeconds)));

    //Initiate creation of NPC after such time as the ship as (visually) docked
    location lTargetNPC = GetLocation(GetWaypointByTag("WP_seris_captain"));
    DelayCommand((fDurationSeconds + 1.5), CreateObjectVoid(OBJECT_TYPE_CREATURE, "seriscapt", lTargetNPC, FALSE));

    //run departue script -- to do -- create include and run function here insted -- meh
    DelayCommand(300.0, ExecuteScript("seris_outbound", OBJECT_SELF));

////////////// Wrapper ////////////////////////////////////////////////////////////////////////
    SetLocalInt(GetModule(), "seris_shuttle_do_once", 1);
///////////////////////////////////////////////////////////////////////////////////////////////
//reset run once after module hour is up                                                     //
//current module properties one hour is set to 5 min -- so reset delay set to 6 min                                         //
//otherwise day and night subraces are constantly running in and out of the sun              //
    DelayCommand(360.0, SetLocalInt(GetModule(), "seris_shuttle_do_once", 0));
////////////// Wrapper ////////////////////////////////////////////////////////////////////////
}

               
               

               
            

Legacy_Supreme_Pizza

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
Sailing Ships
« Reply #11 on: February 06, 2013, 08:39:56 am »


               

Rolo Kipp wrote...

<snapping off...>

Win 7 & 8 get grumpy with programs trying to muck about outside of the users directory. You could play with UAC and admin settings, but honestly, just look into Greenshot for screenies.

I have it set to let me drag out a region to snap and it automagically sticks a jpg in my images/uploads folder. How easy is that?

<...a quick reply>


I just ran NWN in window mode, took a screen shot, then cropped out NWN in Photoshop.
               
               

               
            

Legacy_Supreme_Pizza

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
Sailing Ships
« Reply #12 on: February 10, 2013, 10:39:42 am »


               I put everything in one script

//::///////////////////////////////////////////////
//:: Ship Animation Script
//:: seris_inbound
//:: Copyright © 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*

*/
//:://////////////////////////////////////////////
//:: Created By: William Rickert
//:: AKA:        Supreme_Pizza
//:: Created On: Feb 5 2013
//:://////////////////////////////////////////////

//needed for CreateObjectVoid
#include "nw_i0_2q4luskan"


void main()
{
// Run once wrapper -- otherwise this will run every six seconds //
int DO_ONCE = GetLocalInt(GetModule(),"teeth_shuttle_do_once");  //
if (DO_ONCE == 1) return;                                        //
////////////// Wrapper ////////////////////////////////////////////

    //tag of the speaker
    object oAnnouncer = GetObjectByTag("RanzingtonFerryManager");   //change for new speaker
    //tag of the ship
    object oShip = GetObjectByTag("remainkar");                  //change for new ship
   //set animation speed
    float fSpeed=1.0;
    //set animation durration -- can run long -- shorten later after working & timed
    float fDurationSeconds=125.0;                                    //change for arrival animation timing
    //set delay -- ship must park before docking
    float fDelaySecondsLand=1.0;
    // tag of waypoint to spawn ship at
    object oWP = GetObjectByTag("WP_ship_teeth");                //change for new dock location
    //location of waypoint
    location lLoc = GetLocation(oWP);
    //set warning of departure and time when captain gets on ship
    float fDelaySecondsWarning=345.0;
    //set when ship leaves
    float fDelaySecondsDepart=400.0;
    //set when ship is destroyed
    float fDelaySecondsDestroy=426.0;

    //create ship
    if(!GetIsObjectValid(oShip)){
    CreateObject(OBJECT_TYPE_PLACEABLE, "remainkar", lLoc);      //change for new ship
    }
     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //set animation variable to off                                                                               //
    //                                                                                                            //
    // see hak readme at  http://vnfiles.ign.c...ips_read_me.txt //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //park ship - prepred to dock
    AssignCommand(oShip, ActionPlayAnimation(-1));

    //have dock master announce shipping movements
    AssignCommand(oAnnouncer, SpeakString("*** The Re'Mainkar is inbound. ***", TALKVOLUME_SHOUT));
    DelayCommand(fDelaySecondsLand, AssignCommand(oAnnouncer, SpeakString("*** We are waiting it's arrival ***", TALKVOLUME_SHOUT)));

    //play inbound animation
    DelayCommand(fDelaySecondsLand, AssignCommand(oShip, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, fSpeed, fDurationSeconds)));

    //Initiate creation of NPC after such time as the ship as (visually) docked
    location lTargetNPC = GetLocation(GetWaypointByTag("WP_dustdyn"));
    DelayCommand((fDurationSeconds + 1.5), CreateObjectVoid(OBJECT_TYPE_CREATURE, "dustdyn", lTargetNPC, FALSE)); //change for new captain

    //announce departing soon
    DelayCommand(fDelaySecondsWarning, AssignCommand(oAnnouncer, SpeakString("*** The Re'Mainkar is finished loading and will be leaving shortly ***", TALKVOLUME_SHOUT)));

    //Destroy NPC
    DelayCommand((fDelaySecondsWarning + 1.0), DestroyObject( GetObjectByTag("dustdyn"))); //change for new captain

    //departing announcement
    DelayCommand(fDelaySecondsDepart, AssignCommand(oAnnouncer, SpeakString("*** The Re'Mainkar has departed for Stormreach ***", TALKVOLUME_SHOUT)));

    //ship departs
    DelayCommand(fDelaySecondsDepart, AssignCommand(oShip, ActionPlayAnimation(-1)));

    //Destroy ship
    //DestroyObject(oShip, fDelaySecondsDestroy);

    //run departue script -- to do -- create include and run function here insted -- meh
    //DelayCommand(300.0, ExecuteScript("seris_outbound", OBJECT_SELF));

////////////// Wrapper ////////////////////////////////////////////////////////////////////////
    SetLocalInt(GetModule(), "teeth_shuttle_do_once", 1);
///////////////////////////////////////////////////////////////////////////////////////////////
//reset run once after module hour is up                                                     //
//current module properties one hour is set to 5 min -- so reset delay set to 6 min          //
//otherwise day and night subraces are constantly running in and out of the sun              //
    DelayCommand(430.0, SetLocalInt(GetModule(), "teeth_shuttle_do_once", 0));               //
////////////// Wrapper ////////////////////////////////////////////////////////////////////////
}