void main()
{
object oBookie = GetObjectByTag("Bookie");
if (GetLocalInt(oBookie, "nBookieTalkedTo") == 2)
    {
    //Play Gong sound
    object oSound1 = GetObjectByTag("StarterGong");
    object oSound2 = GetObjectByTag("RaceBugle");
    SoundObjectPlay(oSound1);
    SoundObjectPlay(oSound2);

    //Random number generation
    int Dog1Speed = Random(4);
    int Dog2Speed = Random(4);
    int Dog3Speed = Random(4);
    int Dog4Speed = Random(4);

    //Now to make them all different...
    if (Dog2Speed == (Dog1Speed))
        {
        int Dog2Speed = Random(4);
        }
    if (Dog3Speed == (Dog1Speed))
        {
        int Dog3Speed = Random(4);
        }
    if (Dog3Speed == (Dog2Speed))
        {
        int Dog3Speed = Random(4);
        }
    if (Dog4Speed == (Dog1Speed))
        {
        int Dog4Speed = Random(4);
        }
    if (Dog4Speed == (Dog2Speed))
        {
        int Dog4Speed = Random(4);
        }
    if (Dog4Speed == (Dog3Speed))
        {
        int Dog4Speed = Random(4);
        }

    //For Dog 1
    if (Dog1Speed == 0)
        {
        effect eDogSpeed1 = (EffectMovementSpeedDecrease(20));
        object oRaceDog1 = GetObjectByTag("RaceDog1");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed1, oRaceDog1, 5.0);
        }
    if (Dog1Speed == 1)
        {
        effect eDogSpeed1 = (EffectMovementSpeedDecrease(10));
        object oRaceDog1 = GetObjectByTag("RaceDog1");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed1, oRaceDog1, 5.0);
        }
    if (Dog1Speed == 3)
        {
        effect eDogSpeed1 = (EffectMovementSpeedIncrease(10));
        object oRaceDog1 = GetObjectByTag("RaceDog1");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed1, oRaceDog1, 5.0);
        }
    if (Dog1Speed == 4)
        {
        effect eDogSpeed1 = (EffectMovementSpeedIncrease(20));
        object oRaceDog1 = GetObjectByTag("RaceDog1");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed1, oRaceDog1, 5.0);
        }

    //For Dog 2
    if (Dog2Speed == 0)
        {
        effect eDogSpeed2 = (EffectMovementSpeedDecrease(20));
        object oRaceDog2 = GetObjectByTag("RaceDog2");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed2, oRaceDog2, 5.0);
        }
    if (Dog2Speed == 1)
        {
        effect eDogSpeed2 = (EffectMovementSpeedDecrease(10));
        object oRaceDog2 = GetObjectByTag("RaceDog2");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed2, oRaceDog2, 5.0);
        }
    if (Dog2Speed == 3)
        {
        effect eDogSpeed2 = (EffectMovementSpeedIncrease(10));
        object oRaceDog2 = GetObjectByTag("RaceDog2");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed2, oRaceDog2, 5.0);
        }
    if (Dog2Speed == 4)
        {
        effect eDogSpeed2 = (EffectMovementSpeedIncrease(20));
        object oRaceDog2 = GetObjectByTag("RaceDog2");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed2, oRaceDog2, 5.0);
        }

    //For Dog 3
    if (Dog3Speed == 0)
        {
        effect eDogSpeed3 = (EffectMovementSpeedDecrease(20));
        object oRaceDog3 = GetObjectByTag("RaceDog3");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed3, oRaceDog3, 5.0);
        }
    if (Dog3Speed == 1)
        {
        effect eDogSpeed3 = (EffectMovementSpeedDecrease(10));
        object oRaceDog3 = GetObjectByTag("RaceDog3");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed3, oRaceDog3, 5.0);
        }
    if (Dog3Speed == 3)
        {
        effect eDogSpeed3 = (EffectMovementSpeedIncrease(10));
        object oRaceDog3 = GetObjectByTag("RaceDog3");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed3, oRaceDog3, 5.0);
        }
    if (Dog3Speed == 4)
        {
        effect eDogSpeed3 = (EffectMovementSpeedIncrease(20));
        object oRaceDog3 = GetObjectByTag("RaceDog3");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed3, oRaceDog3, 5.0);
        }

    //For Dog 4
    if (Dog4Speed == 0)
        {
        effect eDogSpeed4 = (EffectMovementSpeedDecrease(20));
        object oRaceDog4 = GetObjectByTag("RaceDog4");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed4, oRaceDog4, 5.0);
        }
    if (Dog4Speed == 1)
        {
        effect eDogSpeed4 = (EffectMovementSpeedDecrease(10));
        object oRaceDog4 = GetObjectByTag("RaceDog4");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed4, oRaceDog4, 5.0);
        }
    if (Dog4Speed == 3)
        {
        effect eDogSpeed4 = (EffectMovementSpeedIncrease(10));
        object oRaceDog4 = GetObjectByTag("RaceDog4");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed4, oRaceDog4, 5.0);
        }
    if (Dog4Speed == 4)
        {
        effect eDogSpeed4 = (EffectMovementSpeedIncrease(20));
        object oRaceDog4 = GetObjectByTag("RaceDog4");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDogSpeed4, oRaceDog4, 5.0);
        }

    //Get the badger running!
    object oBadger = GetObjectByTag("RaceBadger");
    object oWaypoint = GetObjectByTag("BADGER");
    AssignCommand(oBadger, ActionMoveToObject(oWaypoint, TRUE));

    //Dogs running!
    object oDog1 = GetObjectByTag("RaceDog1");
    object oDog2 = GetObjectByTag("RaceDog2");
    object oDog3 = GetObjectByTag("RaceDog3");
    object oDog4 = GetObjectByTag("RaceDog4");
    object oDogWP1 = GetObjectByTag("DOG1");
    object oDogWP2 = GetObjectByTag("DOG2");
    object oDogWP3 = GetObjectByTag("DOG3");
    object oDogWP4 = GetObjectByTag("DOG4");
    AssignCommand(oDog1, ActionMoveToObject(oDogWP1, TRUE));
    AssignCommand(oDog2, ActionMoveToObject(oDogWP2, TRUE));
    AssignCommand(oDog3, ActionMoveToObject(oDogWP3, TRUE));
    AssignCommand(oDog4, ActionMoveToObject(oDogWP4, TRUE));
    }

else
SpeakString("You cannot ring the gong at this time.");
}