Fisherman 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

Fisherman Quest

Post by dragon slayer »

Updated to use new java script paste
This just a simple fisherman quest you can add to any npc. petty cool quest if you like hehe.

fishermanquestitems.dfn
[goldenfish]
{
get=base_item
name=Golden Fish
id=0x09CC
color=0x52
pileable=1
amount=1
decay=1
weight=100
}

[fishingboots]
{
get=base_item
name=Special Fishing Boots
id=0x1711
weight=400
value=56 28
layer=0x03
def=2
hp=50
str=20
dyeable=1
decay=1
good=19
SCRIPT=5033
}

[fishinghat]
{
get=base_item
name=Special Fishing Hat
id=0x171b
weight=100
value=26 13
layer=0x06
hp=50
restock=10
dyeable=1
decay=1
good=20
SCRIPT=5033
}

[fishingpants]
{
get=base_item
name=Special Fishing Pants
id=0x1539
weight=200
value=34 17
layer=0x4
hp=50
restock=10
dyeable=1
decay=1
good=18
SCRIPT=5033
}

[fishingsash]
{
get=base_item
name=Special Fishing Sash
id=0x1541
weight=100
value=15 7
layer=0x11
hp=50
restock=10
dyeable=1
decay=1
good=18
SCRIPT=5033
}

[fishingshirt]
{
get=base_item
name=Special Fishing Shirt
id=0x1EFD
weight=200
value=55 27
layer=0x5
hp=50
restock=10
dyeable=1
decay=1
good=18
SCRIPT=5033
}

[ITEMLIST fishinglist]
{
fishingboots
fishinghat
fishingpants
fishingsash
fishingshirt
}
specialfishingequipment.js
function onEquip(mChar, ourObj)
{
      if (ourObj.id == 0x1711 || ourObj.id == 0x171b ||ourObj.id == 0x1539 || ourObj.id ==0x1541 || ourObj.id ==0x1EFD)
      {
         mChar.skills.fishing=(mChar.skills.fishing + 200);
      }
}

function onUnequip(mChar, ourObj)
{
     if (ourObj.id == 0x1711 || ourObj.id == 0x171b ||ourObj.id == 0x1539 || ourObj.id ==0x1541 || ourObj.id ==0x1EFD)
     {
        mChar.skills.fishing=(mChar.skills.fishing - 200);
     }
}
And now the Awesome Quest

fishingquest.js
function onSpeech( myString, myPlayer, myNPC, pSock )
{
   if( !myNPC.InRange( myPlayer, 2 ) )
      return;
   var startQuest = myPlayer.GetTag( "LQ_START" );
   var Speech_Array = myString.split(" ");
   var i = 0, currObj = 0;

   for( i = 1; i <= Speech_Array.length; i++ )
   {
      if( Speech_Array[currObj].match( /\bHail\b/i ) || Speech_Array[currObj].match( /\bHi\b/i ) || Speech_Array[currObj].match( /\bHello\b/i ) )
      {
         myNPC.TurnToward( myPlayer );
         myNPC.TextMessage( "Hail "+myPlayer.name+". You seem like a brave sort, I may have a task for you." );
      }
      else 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( "LQ_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( "LQ_START", 1 );
            var myGump = new Gump; // create a new gump  

            myGump.AddPage(0);
            myGump.AddTiledGump( 50, 20, 400, 400, 5124 );
            myGump.AddCheckerTrans( 50, 20, 400, 400 );
            myGump.AddTiledGump( 50, 29, 30, 390, 10460 );
            myGump.AddTiledGump( 34, 140, 17, 279, 9263 );
            myGump.AddGump( 48, 135, 10411 );
            myGump.AddGump( -16, 285, 10402 );
            myGump.AddGump( 0, 10, 10421 );
            myGump.AddGump( 25, 0, 10420 );
            myGump.AddTiledGump( 83, 15, 350, 15, 10250 );
            myGump.AddGump( 34, 419, 10306 );
            myGump.AddGump( 442, 419, 10304 );
            myGump.AddTiledGump( 51, 419, 392, 17, 10101 );
            myGump.AddTiledGump( 415, 29, 44, 390, 2605 );
            myGump.AddTiledGump( 415, 29, 30, 390, 10460 );
            myGump.AddGump( 370, 50, 1417 );
            myGump.AddGump( 425, 0, 10441 );
            myGump.AddGump( 90, 33, 9005 );
            myGump.AddTiledGump( 130, 65, 175, 1, 9101 );
            myGump.AddButton( 95, 395, 0x2ee0, 1, 0, 1 );       // Button - Accept
            myGump.AddButton( 313, 395, 0x2ef2, 1, 0, 0 );        // Button - Refuse
            myGump.AddText( 130, 45, 0x34, "Fisher Quest" );
            myGump.AddText( 98, 140, 0x34, "Description" );
            myGump.AddText( 125, 165, 0x34, "The Legendary Fisher looks at" );
            myGump.AddText( 98, 180, 0x34, "you with concern. Oh, please help me!" );
            myGump.AddText( 98, 195, 0x34, "A Theiving Serpentine has stolen the" );
            myGump.AddText( 98, 210, 0x34, "greatest catch of my life!" );
            myGump.AddText( 98, 225, 0x34, "I had caught a Golden Fish!" );
            myGump.AddText( 98, 240, 0x34, "Yes, that is right... a GOLDEN FISH!" );
            myGump.AddText( 98, 255, 0x34, "Are interested?" );
            myGump.Send( myPlayer ); // send this gump to client now
            myGump.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( "LQ_LEVEL" );
         if( taskLevel )
         {
            var numToGet = myPlayer.GetTag( "LQ_numToGet" );
            if( numToGet > 0 )
            {
               myNPC.TextMessage( "You Started a Quest but have not finished it.");
            }
        }
        else
            myNPC.TextMessage( "I don't give rewards I'm a fisherman");
            return false;
      }
      else if( Speech_Array[currObj].match( /\bQuite\b/i ) )
      {
               myNPC.TurnToward( myPlayer );
               myNPC.TextMessage( "I better get back to my fishing" );
               myPlayer.SetTag( "LQ_START", 0 );
               myPlayer.SetTag( "LQ_numToGet", -1 );
               myPlayer.SetTag( "LQ_IDTOGET", 0 );
               myPlayer.SetTag( "LQ_LEVEL", 0 );
      }
      currObj++;
   }
}

function onDropItemOnNpc( pDropper, pDroppedOn, iDropped )
{
  pDroppedOn.TurnToward( pDropper );
  var taskLevel = pDropper.GetTag( "LQ_LEVEL" );
  if( taskLevel )
  {
      var numFish = pDropper.ResourceCount( 0x09CC,0x35 );
      if( numFish >= 1)
      {
       pDroppedOn.TextMessage( "Thank you for bringing my prized Golden Fish. I hope you find your reward useful." );
       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 );
       CreateDFNItem( pDropper.socket, pDropper, "fishinglist", 1, "ITEM", true );
       pDropper.SoundEffect( 0x0037, false );
       pDropper.SetTag( "LQ_numToGet", 0 );
       pDropper.SetTag( "LQ_IDTOGET", 0 );
       pDropper.SetTag( "LQ_LEVEL", 0 );
       pDropper.UseResource( 1, 0x09CC,0x35 );
       return 0;
      }
      else if( numFish <= 1 )
      {
       pDroppedOn.TextMessage( "I have no need for that. I only want my Golden Fish back!" );
       return 0;
      }
  }
     pDroppedOn.TextMessage( "I have no need for that. I only want my Golden Fish back!" );
     return 0;
}

function onGumpPress(pSock, myButtonID)
{
  var myPlayer = pSock.currentChar;
   switch( myButtonID )
   {
      case 0: // Refuse
         myPlayer.SetTag( "LQ_START", 0 );
         myPlayer.SysMessage("Legendary Fisher Says: Please get me back my Golden Fish!");
      break;
      case 1: // Accept
         var myGump = new Gump; // create a new gump
         var numToGet = (1);
         var typeToGet = CreateGenericQuest( myPlayer, 1, numToGet );

            myGump.AddPage(0);
            myGump.AddTiledGump( 50, 20, 400, 400, 5124 );
            myGump.AddCheckerTrans( 50, 20, 400, 400 );
            myGump.AddTiledGump( 50, 29, 30, 390, 10460 );
            myGump.AddTiledGump( 34, 140, 17, 279, 9263 );
            myGump.AddGump( 48, 135, 10411 );
            myGump.AddGump( -16, 285, 10402 );
            myGump.AddGump( 0, 10, 10421 );
            myGump.AddGump( 25, 0, 10420 );
            myGump.AddTiledGump( 83, 15, 350, 15, 10250 );
            myGump.AddGump( 34, 419, 10306 );
            myGump.AddGump( 442, 419, 10304 );
            myGump.AddTiledGump( 51, 419, 392, 17, 10101 );
            myGump.AddTiledGump( 415, 29, 44, 390, 2605 );
            myGump.AddTiledGump( 415, 29, 30, 390, 10460 );
            myGump.AddGump( 370, 50, 1417 );
            myGump.AddGump( 425, 0, 10441 );
            myGump.AddGump( 90, 33, 9005 );
            myGump.AddTiledGump( 130, 65, 175, 1, 9101 );
            myGump.AddButton( 313, 395, 0x2eec, 1, 0, 3 );      // Button - Close
            myGump.AddButton( 95, 395, 0x2ef5, 1, 0, 2 );       // Button - Resign
            myGump.AddText( 130, 45, 0x34, "Fisher Quest" );
            myGump.AddText( 98, 140, 0x34, "Description" );
            myGump.AddText( 125, 165, 0x34, "The Thieving Serpentine is located a very" );
            myGump.AddText( 98, 180, 0x34, "long ways south of this shop." );
            myGump.AddText( 98, 195, 0x34, "You will find 2 fishing holes where the" );
            myGump.AddText( 98, 210, 0x34, "Golden Fish was stolen from me." );
            myGump.AddText( 98, 225, 0x34, "The Serpentine should be close to there." );
            //myGump.AddText( 98, 240, 0x34, "" );
            //myGump.AddText( 98, 255, 0x34, "" );
            myGump.Send( myPlayer ); // send this gump to client now
            myGump.Free(); // clear this gump from uox-memory
            return false;
      break;
      case 2: // Resign
         myPlayer.SetTag( "LQ_numToGet", 0 );
         myPlayer.SetTag( "LQ_IDTOGET", 0 );
         myPlayer.SetTag( "LQ_LEVEL", 0 );  
         myPlayer.SetTag( "LQ_START", 0 );
         myPlayer.SysMessage("Legendary Fisher Says: Please get me back my Golden Fish!");
      break;
      case 3: // Close
      break;
    }
}

function CreateGenericQuest( myPlayer, questLevel, numToGet )
{
   var typeToGet = GetItemType( myPlayer, questLevel );
   myPlayer.SetTag( "LQ_numToGet", numToGet );
   myPlayer.SetTag( "LQ_LEVEL", questLevel );
   myPlayer.SetTag( "LQ_START", 0 );
   return typeToGet;
}

function GetItemType( myPlayer, questLevel )
{
   var retVal = "";
   switch( questLevel )
   {
   case 1:
      switch( RandomNumber( 0, 2 ) )
      {
      case 0:
        myPlayer.SetTag( "LQ_IDTOGET", 0x09CC );
        retVal = "Golden fish";
        break;
      case 1:
        myPlayer.SetTag( "LQ_IDTOGET", 0x09CC );
        retVal = "Golden fish";
        break;
      case 2:
        myPlayer.SetTag( "LQ_IDTOGET", 0x09CC );
        retVal = "Golden fish";
        break;
      }
      break;
   }
   return retVal;
}
Last edited by dragon slayer on Tue Apr 03, 2012 7:59 pm, edited 1 time in total.
RandallFlagg26
UOX3 Newbie
Posts: 16
Joined: Wed May 18, 2011 1:25 am
Has thanked: 0
Been thanked: 0

Post by RandallFlagg26 »

Looks like you are missing some code between lines 9 and 10 in the fishingquest.js file.
dragon slayer
UOX3 Guru
Posts: 776
Joined: Thu Dec 21, 2006 7:37 am
Has thanked: 4 times
Been thanked: 26 times

Post by dragon slayer »

Updated to use new java script paste so you can read code.
Post Reply