Red Solen Queen Quest

Got any custom JavaScript additions/tweaks you think other people would like to see? Post 'em here!
Post Reply
dragon slayer
UOX3 Guru
Posts: 776
Joined: Thu Dec 21, 2006 7:37 am
Has thanked: 4 times
Been thanked: 26 times

Red Solen Queen Quest

Post by dragon slayer »

I have made the first OSI like Quest.

here is the items u need
zoogi fungus

Code: Select all

[ZoogiFungus]
{ 
get=base_item
name=Zoogi Fungus
id=0x26B7
pileable=1
amount=1
decay=1
}
Global.js
function onDeathBlow( pKilled, pKiller )
{
   var oldNumToKill = pKiller.GetTag( "SQ_NUMTOKILL" );
   if( oldNumToKill && pKiller.GetTag( "SQ_IDTOKILL" ) == pKilled.id )
   {
      var newNumToKill = (oldNumToKill-1);
      pKiller.SetTag( "SQ_NUMTOKILL", newNumToKill );
      if( newNumToKill )
         pKiller.SysMessage( "You have "+NumToString( newNumToKill )+" more creatures to kill." );
      else
         pKiller.SysMessage( "You have completed your task, return to the taskmaster for your reward." );
   }
}
solenquest.js
function onSpeech( myString, myPlayer, myNPC, pSock )
{
   if( !myNPC.InRange( myPlayer, 2 ) )
      return;
   var startQuest = myPlayer.GetTag( "SQ_START" );
   var Speech_Array = myString.split(" ");
   var i = 0, currObj = 0;

   for( i = 1; i <= Speech_Array.length; i++ )
   {
      if( Speech_Array[currObj].match( /\bQuest\b/i ) || Speech_Array[currObj].match( /\bAdventure\b/i ) || Speech_Array[currObj].match( /\bTask\b/i ) )    
      {
         myNPC.TurnToward( myPlayer );
         if( myPlayer.GetTag( "SQ_LEVEL" ) )
         {
            myNPC.TextMessage( "I have already given you a task, you may request your reward when you have completed it" );
            return false;
         }
         else
         {
            myPlayer.SetTag( "SQ_START", 1 );
            var questGump = new Gump; // create a new gump  

            questGump.AddPage(0);
            questGump.AddTiledGump( 50, 20, 400, 400, 2624 );
            questGump.AddCheckerTrans( 50, 20, 400, 400 );
            questGump.AddGump( 90, 33, 9005 );
            questGump.AddXMFHTMLGumpColor( 130, 45, 270, 20, 1049010, false, false, 0x7FFF  ); // Quest Offer
            questGump.AddTiledGump( 130, 65, 175, 1, 9101 );
            questGump.AddGump( 140, 110, 1209 );
            questGump.AddXMFHTMLGumpColor( 160, 108, 250, 20, 1054146, false, false, 10000 );//name of quest darkgreen
            questGump.AddXMFHTMLGumpColor( 98, 140, 312, 200, 1054060, false, true, 90000 );//quest offer lightgreen
        questGump.AddRadio( 85, 350, 0x25f8, 0, 1 );
            questGump.AddXMFHTMLGumpColor( 120, 356, 280, 20, 1049011, false, false, 0x7FFF ); // I accept!
            questGump.AddRadio( 85, 385, 0x25f8, 0, 0 );
            questGump.AddXMFHTMLGumpColor( 120, 391, 280, 20, 1049012, false, false, 0x7FFF ); // No thanks, I decline.
            questGump.AddButton( 340, 390, 0xf7, 1, 0, 1 );//Okay button
            questGump.AddTiledGump( 50, 29, 30, 390, 10460 );
            questGump.AddTiledGump( 34, 140, 17, 279, 9263 );
            questGump.AddGump( 48, 135, 10411 );
            questGump.AddGump( -16, 285, 10402 );
            questGump.AddGump( 0, 10, 10421 );
            questGump.AddGump( 25, 0, 10420 );
            questGump.AddTiledGump( 83, 15, 350, 15, 10250 );
            questGump.AddGump( 34, 419, 10306 );
            questGump.AddGump( 442, 419, 10304 );
            questGump.AddTiledGump( 51, 419, 392, 17, 10101 );
            questGump.AddTiledGump( 415, 29, 44, 390, 2605 );
            questGump.AddTiledGump( 415, 29, 30, 390, 10460 );
            questGump.AddGump( 425, 0, 10441 );
            questGump.AddGump( 370, 50, 1417 );
        questGump.AddGump( 379, 60, 0x15c9 );//quest item picture
            questGump.Send( myPlayer ); // send this gump to client now
            questGump.Free(); // clear this gump from uox-memory
            return false;
         }
      }
      else if( Speech_Array[currObj].match( /\bReward\b/i ) )
      {
         myNPC.TurnToward( myPlayer );
         var taskLevel = myPlayer.GetTag( "SQ_NPCLEVEL" );
         var itemLevel = myPlayer.GetTag( "SQ_LEVEL" );
         if( taskLevel )
         {
            var numToKill = myPlayer.GetTag( "SQ_NUMTOKILL" );
            if( numToKill > 0 )
            {
                        var questGump = new Gump; // create a new gump
                    questGump.AddPage( 0 );

                        questGump.AddGump( 349, 10, 9392 );
            questGump.AddTiledGump( 349, 130, 100, 120, 9395 );
            questGump.AddTiledGump( 149, 10, 200, 140, 9391 );
            questGump.AddTiledGump( 149, 250, 200, 140, 9397 );
            questGump.AddGump( 349, 250, 9398 );
            questGump.AddGump( 35, 10, 9390 );
            questGump.AddTiledGump( 35, 150, 120, 100, 9393 );
            questGump.AddGump( 35, 250, 9396 );

            questGump.AddXMFHTMLGumpColor( 110, 60, 200, 20, 1049069, false, false, 0x7FFF ); // <STRONG>Conversation Event</STRONG>

            questGump.AddXMFHTMLGumpColor( 70, 110, 365, 220, 1054066, false, true, 90000 );//quest convo

            questGump.AddGump( 65, 14, 10102 );
            questGump.AddTiledGump( 81, 14, 349, 17, 10101 );
            questGump.AddGump( 426, 14, 10104 );

            questGump.AddTiledGump( 55, 40, 388, 323, 2624 );
                        questGump.AddCheckerTrans( 55, 40, 388, 323 );

            questGump.AddTiledGump( 75, 90, 200, 1, 9101 );
            questGump.AddGump( 75, 58, 9781 );
            questGump.AddGump( 380, 45, 223 );

            questGump.AddButton( 220, 335, 0x909, 1, 0, 3 );//okay
            questGump.AddGump( 0, 0, 10440 );

                        questGump.Send( myPlayer ); // send this gump to client now
                        questGump.Free(); // clear this gump from uox-memory
                        return false;
            }
            else
                        var questGump = new Gump; // create a new gump
                        var numToGet = (50);
                        var typeToGet = CreateItemQuest( myPlayer, 1, numToGet );
                        myPlayer.SetTag( "SQ_NPCLEVEL", 0 );
                    questGump.AddPage( 0 );

                        questGump.AddGump( 349, 10, 9392 );
            questGump.AddTiledGump( 349, 130, 100, 120, 9395 );
            questGump.AddTiledGump( 149, 10, 200, 140, 9391 );
            questGump.AddTiledGump( 149, 250, 200, 140, 9397 );
            questGump.AddGump( 349, 250, 9398 );
            questGump.AddGump( 35, 10, 9390 );
            questGump.AddTiledGump( 35, 150, 120, 100, 9393 );
            questGump.AddGump( 35, 250, 9396 );

            questGump.AddXMFHTMLGumpColor( 110, 60, 200, 20, 1049069, false, false, 0x7FFF ); // <STRONG>Conversation Event</STRONG>

            questGump.AddXMFHTMLGumpColor( 70, 110, 365, 220, 1054068, false, true, 90000 );//quest convo

            questGump.AddGump( 65, 14, 10102 );
            questGump.AddTiledGump( 81, 14, 349, 17, 10101 );
            questGump.AddGump( 426, 14, 10104 );

            questGump.AddTiledGump( 55, 40, 388, 323, 2624 );
                        questGump.AddCheckerTrans( 55, 40, 388, 323 );

            questGump.AddTiledGump( 75, 90, 200, 1, 9101 );
            questGump.AddGump( 75, 58, 9781 );
            questGump.AddGump( 380, 45, 223 );

            questGump.AddButton( 220, 335, 0x909, 1, 0, 3 );//okay
            questGump.AddGump( 0, 0, 10440 );

                        questGump.Send( myPlayer ); // send this gump to client now
                        questGump.Free(); // clear this gump from uox-memory
                        return false;
         }
         if( itemLevel )
         {
            var numToGet = myPlayer.GetTag( "SQ_numToGet" );
            if( numToGet > 0 )
            {
                        var questGump = new Gump; // create a new gump
                    questGump.AddPage( 0 );

                        questGump.AddGump( 349, 10, 9392 );
            questGump.AddTiledGump( 349, 130, 100, 120, 9395 );
            questGump.AddTiledGump( 149, 10, 200, 140, 9391 );
            questGump.AddTiledGump( 149, 250, 200, 140, 9397 );
            questGump.AddGump( 349, 250, 9398 );
            questGump.AddGump( 35, 10, 9390 );
            questGump.AddTiledGump( 35, 150, 120, 100, 9393 );
            questGump.AddGump( 35, 250, 9396 );

            questGump.AddXMFHTMLGumpColor( 110, 60, 200, 20, 1049069, false, false, 0x7FFF ); // <STRONG>Conversation Event</STRONG>

            questGump.AddXMFHTMLGumpColor( 70, 110, 365, 220, 1054070, false, true, 90000 );//quest convo

            questGump.AddGump( 65, 14, 10102 );
            questGump.AddTiledGump( 81, 14, 349, 17, 10101 );
            questGump.AddGump( 426, 14, 10104 );

            questGump.AddTiledGump( 55, 40, 388, 323, 2624 );
                        questGump.AddCheckerTrans( 55, 40, 388, 323 );

            questGump.AddTiledGump( 75, 90, 200, 1, 9101 );
            questGump.AddGump( 75, 58, 9781 );
            questGump.AddGump( 380, 45, 223 );

            questGump.AddButton( 220, 335, 0x909, 1, 0, 3 );//okay
            questGump.AddGump( 0, 0, 10440 );

                        questGump.Send( myPlayer ); // send this gump to client now
                        questGump.Free(); // clear this gump from uox-memory
                        return false;
            }
         }
         else
            myNPC.TextMessage( "I don't give rewards I'm a farmer");
            return false;
      }
      else if( Speech_Array[currObj].match( /\bQuite\b/i ) )
      {
               myNPC.TurnToward( myPlayer );
               myNPC.TextMessage( "I better get back to my garden work." );
               myPlayer.SetTag( "SQ_START", 0 );
               myPlayer.SetTag( "SQ_numToGet", 0 );
               myPlayer.SetTag( "SQ_NUMTOKILL", 0 );
               myPlayer.SetTag( "SQ_IDTOGET", 0 );
               myPlayer.SetTag( "SQ_LEVEL", 0 );
               myPlayer.SetTag( "SQ_NPCLEVEL", 0 );
               myPlayer.SetTag( "SQ_IDTOKILL", 0 );
      }
      currObj++;
   }
}

function onDropItemOnNpc( pDropper, pDroppedOn, iDropped )
{
  pDroppedOn.TurnToward( pDropper );
  var taskLevel = pDropper.GetTag( "SQ_LEVEL" );
  if( taskLevel )
  {
      var numZoogiFungus = pDropper.ResourceCount( 0x26B7 );
      if( numZoogiFungus >= 50)
      {
        var questGump = new Gump; // create a new gump
        questGump.AddPage( 0 );

        questGump.AddGump( 349, 10, 9392 );
        questGump.AddTiledGump( 349, 130, 100, 120, 9395 );
    questGump.AddTiledGump( 149, 10, 200, 140, 9391 );
    questGump.AddTiledGump( 149, 250, 200, 140, 9397 );
    questGump.AddGump( 349, 250, 9398 );
    questGump.AddGump( 35, 10, 9390 );
    questGump.AddTiledGump( 35, 150, 120, 100, 9393 );
    questGump.AddGump( 35, 250, 9396 );

    questGump.AddXMFHTMLGumpColor( 110, 60, 200, 20, 1049069, false, false, 0x7FFF ); // <STRONG>Conversation Event</STRONG>

    questGump.AddXMFHTMLGumpColor( 70, 110, 365, 220, 1054073, false, true, 90000 );//quest convo

    questGump.AddGump( 65, 14, 10102 );
    questGump.AddTiledGump( 81, 14, 349, 17, 10101 );
    questGump.AddGump( 426, 14, 10104 );

    questGump.AddTiledGump( 55, 40, 388, 323, 2624 );
        questGump.AddCheckerTrans( 55, 40, 388, 323 );

    questGump.AddTiledGump( 75, 90, 200, 1, 9101 );
    questGump.AddGump( 75, 58, 9781 );
    questGump.AddGump( 380, 45, 223 );

    questGump.AddButton( 220, 335, 0x909, 1, 0, 3 );//okay
    questGump.AddGump( 0, 0, 10440 );

        questGump.Send( pDropper); // send this gump to client now
        questGump.Free(); // clear this gump from uox-memory
        var goldToGive = 0;
        switch( RandomNumber( 0, 2 ) )
        {
          case 0:      goldToGive = 50;      break;
          case 1:      goldToGive = 75;      break;
          case 2:      goldToGive = 100;      break;
        }
        CreateDFNItem( pDropper.socket, pDropper, "0x0EED", goldToGive, "ITEM", true );
        pDropper.SoundEffect( 0x0037, false );
        pDropper.SetTag( "SQ_numToGet", 0 );
        pDropper.SetTag( "SQ_IDTOGET", 0 );
        pDropper.SetTag( "SQ_LEVEL", 0 );
        pDropper.SetTag( "SQ_NPCLEVEL", 0 );
        pDropper.SetTag( "SQ_IDTOKILL", 0 );
        pDropper.SetTag( "SQ_NUMTOKILL", 0 );
        pDropper.UseResource( 50, 0x26B7 );
        return 0;
      }
      else if( numZoogiFungus <= 50 )
      {
        var questGump = new Gump; // create a new gump
    questGump.AddPage( 0 );

        questGump.AddGump( 349, 10, 9392 );
    questGump.AddTiledGump( 349, 130, 100, 120, 9395 );
    questGump.AddTiledGump( 149, 10, 200, 140, 9391 );
    questGump.AddTiledGump( 149, 250, 200, 140, 9397 );
    questGump.AddGump( 349, 250, 9398 );
    questGump.AddGump( 35, 10, 9390 );
    questGump.AddTiledGump( 35, 150, 120, 100, 9393 );
    questGump.AddGump( 35, 250, 9396 );

    questGump.AddXMFHTMLGumpColor( 110, 60, 200, 20, 1049069, false, false, 0x7FFF ); // <STRONG>Conversation Event</STRONG>

    questGump.AddXMFHTMLGumpColor( 70, 110, 365, 220, 1054070, false, true, 90000 );//quest convo

    questGump.AddGump( 65, 14, 10102 );
    questGump.AddTiledGump( 81, 14, 349, 17, 10101 );
    questGump.AddGump( 426, 14, 10104 );

    questGump.AddTiledGump( 55, 40, 388, 323, 2624 );
        questGump.AddCheckerTrans( 55, 40, 388, 323 );

    questGump.AddTiledGump( 75, 90, 200, 1, 9101 );
    questGump.AddGump( 75, 58, 9781 );
    questGump.AddGump( 380, 45, 223 );

    questGump.AddButton( 220, 335, 0x909, 1, 0, 3 );//okay
    questGump.AddGump( 0, 0, 10440 );

        questGump.Send( pDropper ); // send this gump to client now
        questGump.Free(); // clear this gump from uox-memory
        return 0;
      }
  }
     pDroppedOn.TextMessage( "I did not ask for this item." );
     return 0;
}

function onGumpPress(pSock, myButtonID, gumpData )
{
  var myPlayer = pSock.currentChar;
   switch( myButtonID )
   {
      case 0: // abort and do nothing if gump is closed with right click
      break;
      case 1:
             var OtherButton = gumpData.getButton(0);
         switch( OtherButton )
         {
               case 0:
                       myPlayer.SetTag( "SQ_START", 0 );
                       myPlayer.SysMessage("You have declined the Quest.");
                       break; //decline
               case 1:  
                        var questGump = new Gump; // create a new gump
                        var numToKill = (5);
                        var typeToKill = CreateNpcQuest( myPlayer, 1, numToKill );

            questGump.AddPage( 0 );

                        questGump.AddGump( 349, 10, 9392 );
            questGump.AddTiledGump( 349, 130, 100, 120, 9395 );
            questGump.AddTiledGump( 149, 10, 200, 140, 9391 );
            questGump.AddTiledGump( 149, 250, 200, 140, 9397 );
            questGump.AddGump( 349, 250, 9398 );
            questGump.AddGump( 35, 10, 9390 );
            questGump.AddTiledGump( 35, 150, 120, 100, 9393 );
            questGump.AddGump( 35, 250, 9396 );

            questGump.AddXMFHTMLGumpColor( 110, 60, 200, 20, 1049069, false, false, 0x7FFF ); // <STRONG>Conversation Event</STRONG>

            questGump.AddXMFHTMLGumpColor( 70, 110, 365, 220, 1054061, false, true, 90000 );//quest convo

            questGump.AddGump( 65, 14, 10102 );
            questGump.AddTiledGump( 81, 14, 349, 17, 10101 );
            questGump.AddGump( 426, 14, 10104 );

            questGump.AddTiledGump( 55, 40, 388, 323, 2624 );
                        questGump.AddCheckerTrans( 55, 40, 388, 323 );

            questGump.AddTiledGump( 75, 90, 200, 1, 9101 );
            questGump.AddGump( 75, 58, 9781 );
            questGump.AddGump( 380, 45, 223 );

            questGump.AddButton( 220, 335, 0x909, 1, 0, 3 );//okay
            questGump.AddGump( 0, 0, 10440 );

                        questGump.Send( myPlayer ); // send this gump to client now
                        questGump.Free(); // clear this gump from uox-memory
                        return false;
                break;// Accept
         }
         break;
      case 2: // Resign
         myPlayer.SetTag( "SQ_numToGet", 0 );
         myPlayer.SetTag( "SQ_IDTOGET", 0 );
         myPlayer.SetTag( "SQ_LEVEL", 0 );  
         myPlayer.SetTag( "SQ_START", 0 );
         myPlayer.SetTag( "SQ_NPCLEVEL", 0 );
         myPlayer.SetTag( "SQ_IDTOKILL", 0 );
         myPlayer.SetTag( "SQ_NUMTOKILL", 0 );
         myPlayer.SysMessage("Farmer Jones goes back to his garden work.");
      break;
      case 3: // okay and close
      break;
    }
}

function CreateItemQuest( myPlayer, questLevel, numToGet )
{
   var typeToGet = GetItemType( myPlayer, questLevel );
   myPlayer.SetTag( "SQ_numToGet", numToGet );
   myPlayer.SetTag( "SQ_LEVEL", questLevel );
   myPlayer.SetTag( "SQ_START", 0 );
   return typeToGet;
}

function CreateNpcQuest( myPlayer, npcLevel, numToKill )
{
   var typeToKill = GetMonsterType( myPlayer, npcLevel );
   myPlayer.SetTag( "SQ_NUMTOKILL", numToKill );
   myPlayer.SetTag( "SQ_NPCLEVEL", npcLevel );
   myPlayer.SetTag( "SQ_START", 0 );
   return typeToKill;
}

function GetItemType( myPlayer, questLevel )
{
   var retVal = "";
   switch( questLevel )
   {
   case 1:
      switch( RandomNumber( 0, 1 ) )
      {
      case 0:
         myPlayer.SetTag( "SQ_IDTOGET", 0x26B7 );
         retVal = "Zoogi Fungus";
         break;
      case 1:
         myPlayer.SetTag( "SQ_IDTOGET", 0x26B7 );
         retVal = "Zoogi Fungus";
         break;
      }
      break;
   }
   return retVal;
}

function GetMonsterType( myPlayer, npcLevel )
{
   var retVal = "";
   switch( npcLevel )
   {
   case 1:
      switch( RandomNumber( 0, 1 ) )
      {
      case 0:
         myPlayer.SetTag( "SQ_IDTOKILL", 0x0327 );
         retVal = "a red solen queen";
         break;
      case 1:
         myPlayer.SetTag( "SQ_IDTOKILL", 0x0327 );
         retVal = "a red solen queen";
         break;
      }
      break;
   }
   return retVal;
}
Enjoy :)
Post Reply