NWNWiki
Advertisement
NWNWiki
3,718
pages

99 Bottles of Beer on the Wall

What it does[]

Has an NPC sing 99 bottles of beer on the wall. That's right, the whole song! Something I felt ought to be out there. Have an NPC bard in the corner? Need him to be singing something but don't have time to come up with a song of your own? Then this script is for you!

Notes[]

When your NPC finishes the song he says, "One more time!" and starts over!

The Script, Part 1[]

Make this script the NPC's OnSpawn script

void main()
{
  SetLocalInt(OBJECT_SELF, "SINGER_COUNT", 100);
}

The Script, Part 2[]

Make this the NPC's OnHeartbeat script:

int nCount=GetLocalInt(OBJECT_SELF, "SINGER_COUNT");
void main()
{
    nCount = nCount-1;
    if (nCount==-1)
      {
ActionSpeakString("One more time!");
       SetLocalInt(OBJECT_SELF, "SINGER_COUNT", 100);
       }
    else
       {
        if (nCount==0)
          {
ActionSpeakString(IntToString(nCount)+" bottles of beer on the wall!");
           }
        else
           {
            if (nCount==1)
              {
ActionSpeakString(IntToString(nCount)+" bottle of beer on the wall.");
               ActionWait(2.0);
ActionSpeakString(IntToString(nCount)+" bottle of beer.");
               ActionWait(2.0);
ActionSpeakString("Take it down, pass it around...");
               }
            else
               {
                if (nCount==2)
                  {
ActionSpeakString(IntToString(nCount)+" bottles of beer on the wall.");
               ActionWait(1.5);
ActionSpeakString(IntToString(nCount)+" bottles of beer.");
               ActionWait(1.5);
ActionSpeakString("Take one down and pass it around...");
               ActionWait(1.5);
ActionSpeakString(IntToString(nCount-1)+" bottle of beer on the wall!");
                   }
                else
                   {
ActionSpeakString(IntToString(nCount)+" bottles of beer on the wall.");
               ActionWait(1.5);
ActionSpeakString(IntToString(nCount)+" bottles of beer.");
               ActionWait(1.5);
ActionSpeakString("Take one down and pass it around...");
               ActionWait(1.5);
ActionSpeakString(IntToString(nCount-1)+" bottles of beer on the wall!");
                    }
                }
            }
        SetLocalInt(OBJECT_SELF, "SINGER_COUNT", nCount);
        }
}

Special Thanks[]

A special thanks to the author of Celowin's Scripting Tutorials for making it possible for me to turn out scripts like this.

Advertisement