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
}
{
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
}
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);
}
}
{
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);
}
}
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;
}
{
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;
}