Problems with "Rock Knife" Quest

Content and general development discussion, including maps, quests, and server code from the development team.
Post Reply
User avatar
Wombat
TMW Adviser
TMW Adviser
Posts: 1532
Joined: Fri Aug 08, 2008 5:31 pm

Problems with "Rock Knife" Quest

Post by Wombat » Mon Oct 19, 2009 6:31 pm

I'm working on this Rock Knife quest to experiment with scripting. I've ran into some basic problems though. I manipulated "Alan" and "Jack" for "ngus" (soon to be "Angus") and a "Chest". The problem is when the character says "No way! Snakes are dangerous!" the Chest still recognizes that I have talked to ngus, thus responds as if the character has received the key, but the character hasn't. Returning to ngus, he responds as if the character had been sent to find the chest, but hasn't found it yet. This locks the character out from completing the quest. What am I doing wrong? Note: "ngus" is also taking part in the "noh mask" quest, so those parts have been kept, I think, though I haven't tested it to see if it works. Also not sure if I have hanging scripts that shouldn't be there.
Also the coordinates I've entered are for the sake of testing the quest without warping around on my private server.

ngus

Code: Select all

//#################################################################################
//#                                                                               #
//# This script file contains the npc scripts for the quest to obtain a RockKnife #
//#                                                                               #
//# Needed: Iron Ore, 200,000gp, some chatting and running.                       #
//#                                                                               #
//# Reward: Rock Knife                                                            #
//#################################################################################

// Rock Knife Maker
009-2.gat,102,71,0	script	ngus	147, {
	set @Q_MASK, NIBBLE_0_MASK;
	set @Q_SHIFT, NIBBLE_0_SHIFT;

        set @Q_status, ((QUEST_RockKnife_state) & @Q_MASK) >> @Q_SHIFT;

	if (@Q_status == 1) goto L_State_1;
	if (@Q_status == 2) goto L_State_2;
	if (@Q_status == 3) goto L_State_3;
	if (@Q_status == 4) goto L_State_4;
	if (@Q_status == 5) goto L_State_5;	

	mes "[ngus]";
	mes "\"If you want to buy something then please speak to the Blacksmith. I am only doing special requests.\"";
	next;
	if (Inspector == 10)
		menu
			"OK, thanks", -,
			"Can you make me a really good knife?", L_State_0_1,
			"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
	if (Inspector != 10)
		menu
			"OK, thanks", -,
			"Can you make me a really good knife?", L_State_0_1;
	close;
	
L_State_0_1:
	mes "[ngus]";
	mes "\"You mean like the legendary Rock Knife?\"";
	next;
	menu
		"Yes, that would be nice.", -;
	mes "[ngus]";
	mes "\"Sorry, I don't make those anymore.\"";
	next;
	menu
		"Oh, too bad.", -,
		"Why's that?", L_State_0_2;
	close;

L_State_0_2:
	mes "[ngus]";
	mes "\"The problem is that I don't have the materials nor the right equipment. My knives aren't made from common scrap metal.";
	mes "They are made of the strongest ore one can find. Only the best iron ore is good enough to make them.";
	mes "I also need my magic hammer, but I left it in a dangerous snake filled cave southeast of Tulimshar years ago.\"";

	set @Q_status, 1;
        callsub S_Update_Var;

	next;
	menu
		"No way! Snakes are dangerous!", -,
		"Bring 'em on! I'll help!", L_State_0_3;
	close;

L_State_0_3:
	mes "[ngus]";
	mes "\"Excellent!  Take this key.  In the deepest part of the cave is a treasure chest where I put the magic hammer for safe keeping.\"";
	next;
	menu
		"Take the key from ngus.", -;
	close;

L_State_1:
	mes "[ngus]";
	mes "\"Did you get my hammer?\"";
	next;
	if (Inspector == 10)
		menu
			"No, I haven't had the time yet", -,
			"No, I didn't find it yet.", L_State_1_1,
			"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
	if (Inspector != 10)
		menu
			"No, I haven't had the time yet", -,
			"No, I didn't find it yet.", L_State_1_1;
	close;

L_State_1_1:
	mes "[ngus]";
	mes "\"When you leave, just go to Hatmakers cave. It is southeast of Tulimshar in the Snake desert, you can't miss it.\"";
	close;
	
L_State_2:
	mes "[ngus]";
	mes "\"Did you get my hammer?\"";
	next;
	if (Inspector == 10)
		menu
			"Yes, I did. It was exactly where you said it would be.  Here you go.", -,
			"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
	if (Inspector != 10)
		menu
			"Yes, I did. It was exactly where you said it would be.  Here you go.", -;
	mes "[ngus]";
	mes "\"Thanks!  I'll make that Rock Knife for you.  Maybe you can go collect some ore for me then?";
	mes "Yellow slimes purify the ore they consume.  Bring me their ore I can take a look at them.";
	mes "Maybe you will find a piece of ore that is strong enough to make a Rock Knife.\"";

	set @Q_status, 3;
        callsub S_Update_Var;

	close;
	
L_State_3:
	mes "[ngus]";
	mes "\"How is the hunt going? Did you bring me any ore?\"";
	if (countitem(640) < 1) close;
	next;
	if (Inspector == 10)
		menu
			"Here, take a look!", L_State_3_try,
			"Yes, but I need it for something else.", -,
			"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
	if (Inspector != 10)
		menu
			"Here, take a look!", L_State_3_try,
			"Yes, but I need it for something else.", -;
	close;

L_State_3_try:
	mes "[ngus]";
	mes "\"Hmmm... looks ok, but is it good enough?\"";
	mes "ngus examines the ore.";
	next;
	delitem "IronOre", 1;
	set @Temp1, rand(20);
	if (@Temp1 == 0) goto L_State_3_success;
	mes "He raises the hammer above his head and brings it down onto the ore with all his might, smashing it into dust.";
	next;
	mes "[ngus]";
	mes "\"Sorry, that ore wasn't pure enough for one of my rock knives. Now it is garbage. Give me another.\"";
	if (countitem(640) < 1) close;
	next;
	menu
		"Sure, here you go.", L_State_3_try,
		"Hey! Stop throwing away my stuff!", -;
	close;
	
L_State_3_success:
	mes "ngus examines it with the greatest of scrutiny.";
	next;
	mes "[ngus]";
	mes "\"Aaah! Yes! That is a really fine piece of ore you bought me. It will make an excelent Rock Knife!\"";
	next;
	set @Q_status, 4;
        callsub S_Update_Var;
	
L_State_4:
	mes "[ngus]";
	mes "\"I can make you a really nice Rock Knife out of this. I just need 200,000 GP for labor costs.\"";
	next;
	if (Inspector == 10)
		menu
			"200,000??? What a ripoff!", -,
			"Sure, here you go!", L_State_4_pay,
			"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
	if (Inspector != 10)
		menu
			"200,000??? What a ripoff!", -,
			"Sure, here you go!", L_State_4_pay;
	close;

L_State_4_pay:
	if (zeny < 200000) goto L_State_4_nocash;
	getinventorylist;
	if (@inventorylist_count == 100) goto L_State_4_TooMany;
	set zeny, zeny - 200000;
	getitem "RockKnife", 1;
	set @Q_status, 5;
        callsub S_Update_Var;
	mes "[ngus]";
	mes "\"Here you go - have fun with it.\"";
	close;

L_State_4_nocash:
	mes "[ngus]";
	mes "\"Seems like you are out of cash.\"";
	close;

L_State_4_TooMany:
	mes "[ngus]";
	mes "\"Seems like you don't have room for this knife. Come back later.\"";
	close;

L_State_5:
	mes "[ngus]";
	mes "\"I hope you are statisfied with your Rock Knife. It is one of my best works.\"";
	next;

	if (Inspector == 10)
		menu
			"I am!", -,
			"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
	if (Inspector != 10)
		menu
			"I am!", -;
	close;

L_NohMask_Answer:
	mes "[ngus]";
	mes "\"I'm sorry, friend, I truely am, but I stay in the town. One of the miners might have heard something.\"";
	close;

S_Update_Var:
        set QUEST_RockKnife_state,
        	(QUEST_RockKnife_state & ~(@Q_MASK)
                | (@Q_status << @Q_SHIFT));
        return;
}
chest

Code: Select all

//#################################################################################
//# This script file contains the npc scripts for one quest:                      #
//# Quest1: Obtaining a Rock Knife                                                #
//# Needed: About 20 Iron Ore, 200,000gp, some chatting and running               #
//# Reward: Rock Knife                                                            #
//# Variables used:  @QUEST_RockKnife_state, nibbles 0 and 1			             #
//#################################################################################

// Hammer Chest
009-2.gat,109,70,0	script	Chest	111,{

        set @Q_RockKnife_MASK, NIBBLE_0_MASK;
        set @Q_RockKnife_SHIFT, NIBBLE_0_SHIFT;

        set @Q_RockKnife, ((QUEST_RockKnife_state & @Q_RockKnife_MASK) >> @Q_RockKnife_SHIFT);

	if (@Q_RockKnife > 1) goto L_RockKnife_state_2;

	mes "[Chest]";
	mes "\"This Chest appears locked.\"";
	
	if (@Q_RockKnife < 1) close;

	menu
		"Open the treasure chest with ngus's key", -;

	mes "[Chest]";
	mes "\"Find the magic hammer.\"";

	next;
	menu
		"Grab magic hammer for ngus.", -;

	set @Q_RockKnife, 2;

	close;

        set QUEST_RockKnife_state,
        	(QUEST_RockKnife_state & ~(@Q_RockKnife_MASK))
                | (@Q_RockKnife << @Q_RockKnife_SHIFT);
        return;
}
Current character is "Abolish".
User avatar
skipy
Warrior
Warrior
Posts: 781
Joined: Sat Nov 08, 2008 11:06 pm

Re: Problems with "Rock Knife" Quest

Post by skipy » Mon Oct 19, 2009 6:42 pm

nice !

i was hoping some one would try fixing a quest for the rock knife.. :twisted:

which makes me ask ..on the art side of things what is needed??

i see a rockknife movement set and a icon -need redoing???
this can be (PM) to me ,as to not spam on here :twisted:

good luck Wombat :twisted:
back to working on---> (crypt)then(player 1.5) and more. *been on hold do to my laptop being fix* any feel free to add/help. ill be up and working as soon as i can ...good luck to all.


"A mulatto, an albino
A mosquito, my libido
Yeah, hey, yay"---Nirvana
User avatar
Wombat
TMW Adviser
TMW Adviser
Posts: 1532
Joined: Fri Aug 08, 2008 5:31 pm

Re: Problems with "Rock Knife" Quest

Post by Wombat » Mon Oct 19, 2009 7:18 pm

skipy wrote:nice !

i was hoping some one would try fixing a quest for the rock knife.. :twisted:

which makes me ask ..on the art side of things what is needed??

i see a rockknife movement set and a icon -need redoing???
this can be (PM) to me ,as to not spam on here :twisted:

good luck Wombat :twisted:
Thanks. I was working on this quest more to test my scripting skills and the Rock Knife is a good item for testing because the client registers a "???" for how much damage the item deals, making it simpler to play with when balancing the item. I hope to make this quest more complex rather than repeat "Alan's Forest Bow", but I wanted to get it to function on a basic level and then expand on it. I'll continue to tinker with it. I don't know if eA-TMW would want this exact quest on the official server.
Current character is "Abolish".
Matt
Knight
Knight
Posts: 1746
Joined: Sat Aug 07, 2004 11:47 am
Location: Germany->Bavaria

Re: Problems with "Rock Knife" Quest

Post by Matt » Mon Oct 19, 2009 7:46 pm

Please change the name to "Roc knife" like the original creator Adarias intended to call it.

http://forums.themanaworld.org/viewtopi ... =roc+knife
User avatar
Wombat
TMW Adviser
TMW Adviser
Posts: 1532
Joined: Fri Aug 08, 2008 5:31 pm

Re: Problems with "Rock Knife" Quest

Post by Wombat » Mon Oct 19, 2009 7:54 pm

Matt wrote:Please change the name to "Roc knife" like the original creator Adarias intended to call it.

http://forums.themanaworld.org/viewtopi ... =roc+knife
Thanx for that Matt. To revert the name as the artist intended, the development team would have to alter it so it would register for the client. Feel free to submit a bug on mantis about it :D
Current character is "Abolish".
Matt
Knight
Knight
Posts: 1746
Joined: Sat Aug 07, 2004 11:47 am
Location: Germany->Bavaria

Re: Problems with "Rock Knife" Quest

Post by Matt » Mon Oct 19, 2009 7:59 pm

Wombat wrote:
Matt wrote:Please change the name to "Roc knife" like the original creator Adarias intended to call it.

http://forums.themanaworld.org/viewtopi ... =roc+knife
Thanx for that Matt. To revert the name as the artist intended, the development team would have to alter it so it would register for the client. Feel free to submit a bug on mantis about it :D
I already told the n00b who changed it to "Rock knife" years ago about it but he didn't seem to care.
Conroe
Peon
Peon
Posts: 11
Joined: Sun Jul 19, 2009 7:40 pm

Re: Problems with "Rock Knife" Quest

Post by Conroe » Mon Oct 19, 2009 11:10 pm

Wombat wrote:The problem is when the character says "No way! Snakes are dangerous!" the Chest still recognizes that I have talked to ngus, thus responds as if the character has received the key, but the character hasn't.
Looks to me like you have set the state variable to 1 before entering the menu. Then, the chest just wants to make sure the state variable is at least one (it is equal) before assuming the player has the key. Some code snippets:

Code: Select all

   set @Q_status, 1;
        callsub S_Update_Var;

   next;
   menu
      "No way! Snakes are dangerous!", -,
      "Bring 'em on! I'll help!", L_State_0_3;
   close;

L_State_0_3:
   mes "[ngus]";
   mes "\"Excellent!  Take this key.  In the deepest part of the cave is a treasure chest where I put the magic hammer for safe keeping.\"";
   next;
   menu
      "Take the key from ngus.", -;
   close;

Code: Select all

if (@Q_RockKnife < 1) close;

   menu
      "Open the treasure chest with ngus's key", -;
The real problem, if I had to guess though, is that the menu has the same outcome no matter what the user does. Other than displaying an extra message, there are NO state changes (or any other changes) based upon whether the user says "no way" or "bring it on". In the end, the only real difference between the two options is how quickly the NPC dialog will close.

Hope that helps ...
philip8
Peon
Peon
Posts: 2
Joined: Sat Nov 21, 2009 8:39 pm

Re: Problems with "Rock Knife" Quest

Post by philip8 » Sun Nov 22, 2009 10:00 am

Ohh nice, in that story I could remember my throwing knife :)
Post Reply