summaryrefslogblamecommitdiff
path: root/npc/009-4/torches.txt
blob: f4d2cedeae02bcec4f2159d2c4565bebf144d2de (plain) (tree)






































































































































                                                                                                                                                                                  
                                           







                                                                             
                                           








                                                                              
                                           

































































                                                                                                                                                                                  
                                           







                                                                             
                                           








                                                                              
                                           



























































































































                                                                                                                                                                                  
//# see detailed description at orum.txt
function	script	GetTorchColor	{
	if (@Torch < 0 || @Torch > 2) goto L_Error;

	set @Mask, 15;
	set @Shift, 4 * @Torch;
	set @TorchColor, (OrumQuestTorch >> @Shift) & @Mask;
	return;

L_Error:
	mes "Torch number is out of range.";
	close;
}

function	script	SetTorchColor	{
	if (@Torch < 0 || @Torch > 2) goto L_Error;
	if (@Color < 1 || @Color > 12) goto L_Error2;

	set @Mask, (15 << (4 * @Torch));
	set OrumQuestTorch, (OrumQuestTorch & (~(@Mask))) | @Color << (4 * @Torch);
	return;

L_Error:
	mes "Torch number is out of range.";
	close;

L_Error2:
	mes "Torch color is out of range.";
	close;
}

function	script	GetTorchIntensity	{
	if (@Torch < 0 || @Torch > 2) goto L_Error;

	set @Mask, 15;
	set @Shift, 4 * (@Torch + 3);
	set @TorchIntensity, (OrumQuestTorch >> @Shift) & @Mask;
	return;

L_Error:
	mes "Torch number is out of range.";
	close;
}

function	script	SetTorchIntensity	{
	if (@Torch < 0 || @Torch > 2) goto L_Error;
	if (@Intensity < 0 || @Intensity > 2) goto L_Error2;

	set @Mask, (15 << (4 * (@Torch + 3)));
	set OrumQuestTorch, (OrumQuestTorch & (~(@Mask))) | @Intensity << (4 * (@Torch + 3));
	return;

L_Error:
	mes "Torch number is out of range.";
	close;

L_Error2:
	mes "Torch intensity is out of range.";
	close;
}

function	script	DoneWithTorches	{
	if (OrumQuest < 11 && OrumQuest >= 8)
		return;

	if (OrumQuest < 7) goto L_Different;

	if (OrumQuest >= 11)
		mes "The flame on the torch looks ordinary.. Lowering the final barrier seems to have drained them of their magic.";

	if (OrumQuest < 8)
		mes "Without that powder the note mentions there isn't much you can do with this torch..";

	close;

L_Different:
	mes "The flame on this torch looks different than the rest.. You better tell Orum about it before doing anything.";
	set OrumQuest, 6;
	close;
}

// To make sure in range of torches
function	script	InRangeTorch1	{
	if (isin("009-4.gat",67,20,69,25))
		return;

	mes "You're too far away to do anything with that torch.";
	close;
}
function	script	InRangeTorch2	{
	if (isin("009-4.gat",65,41,69,46))
		return;

	mes "You're too far away to do anything with that torch.";
	close;
}
function	script	InRangeTorch3	{
	if (isin("009-4.gat",33,84,37,88))
		return;

	mes "You're too far away to do anything with that torch.";
	close;
}

// First Torch
009-4.gat,68,21,0	script	Torch	127,{
	callfunc "InRangeTorch1";
	callfunc "DoneWithTorches";

	set @Torch, 0;
	callfunc("GetTorchColor");
	callfunc("GetTorchIntensity");

	set @lastColor, @TorchColor;
	setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
	setarray @intensities$,"calm","bright","blinding";
	mes "Looking closely you notice that this torch is not like the others.. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
	goto L_Color_Loop;

L_Color_Loop:
	callfunc("GetTorchColor");
	menu
		"Add Red Powder", L_Use_Red,
		"Add Yellow Powder", L_Use_Yellow,
		"Add Blue Powder", L_Use_Blue,
		"Leave it alone.", -;

	mes "The flame flickers as if it's laughing at you..";
	close;

L_Use_Red:
	if (countitem("RedPowder") < 1) goto L_No_Powder;
	if (@TorchColor > 6 && @TorchColor < 12) set @Color, @TorchColor + 1;
	if (@TorchColor < 6 && @TorchColor > 1) set @Color, @TorchColor - 1;
	if (@TorchColor == 12) set @Color, 1;
       if (@TorchColor == 0) set @Color, 1;
	callfunc("SetTorchColor");
	delitem "RedPowder", 1;
	goto L_Show_Color;

L_Use_Yellow:
	if (countitem("YellowPowder") < 1) goto L_No_Powder;
	if (@TorchColor < 10 && @TorchColor > 5) set @Color, @TorchColor - 1;
	if (@TorchColor >= 1 && @TorchColor < 5) set @Color, @TorchColor + 1;
       if (@TorchColor == 0) set @Color, 5;
	callfunc("SetTorchColor");
	delitem "YellowPowder", 1;
	goto L_Show_Color;

L_Use_Blue:
	if (countitem("BluePowder") < 1) goto L_No_Powder;
	if (@TorchColor > 4 && @TorchColor < 9) set @Color, @TorchColor + 1;
	if (@TorchColor <= 12 && @TorchColor > 9) set @Color, @TorchColor - 1;
	if (@TorchColor == 1) set @Color, 12;
       if (@TorchColor == 0) set @Color, 9;
	callfunc("SetTorchColor");
	delitem "BluePowder", 1;
	goto L_Show_Color;

L_No_Powder:
	mes "You notice you're all out of that color of powder.. Perhaps Orum can make you some more.";
	close;

L_Show_Color:
	callfunc("GetTorchColor");
	callfunc("GetTorchIntensity");
	if (@TorchColor == @lastColor) goto L_Wrong_Color;
	misceffect 5;
	set @lastColor, @TorchColor;
	mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
	goto L_Color_Loop;

L_Wrong_Color:
	set @Intensity, @TorchIntensity + 1;
	if (@Intensity > 2) goto L_Failed;
	callfunc("SetTorchIntensity");
	callfunc("GetTorchIntensity");
	misceffect 5;
	mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
	goto L_Color_Loop;

L_Failed:
	mes "As you pour the powder into the flame it flares violently before bursting into your face!";
	misceffect 5;
	misceffect 16;
	set @Intensity, 0;
	callfunc("SetTorchIntensity");
	heal -Hp, 0;
	close;
}

// Second Torch
009-4.gat,67,42,0	script	Torch	127,{
	callfunc "InRangeTorch2";
	callfunc "DoneWithTorches";

	set @Torch, 1;
	callfunc("GetTorchColor");
	callfunc("GetTorchIntensity");

	set @lastColor, @TorchColor;
	setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
	mes "Looking closely you notice that this torch is not like the others.. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
	goto L_Color_Loop;

L_Color_Loop:
	callfunc("GetTorchColor");
	menu
		"Add Red Powder", L_Use_Red,
		"Add Yellow Powder", L_Use_Yellow,
		"Add Blue Powder", L_Use_Blue,
		"Leave it alone.", -;

	mes "The flame flickers as if it's laughing at you..";
	close;

L_Use_Red:
	if (countitem("RedPowder") < 1) goto L_No_Powder;
	if (@TorchColor > 6 && @TorchColor < 12) set @Color, @TorchColor + 1;
	if (@TorchColor < 6 && @TorchColor > 1) set @Color, @TorchColor - 1;
	if (@TorchColor == 12) set @Color, 1;
       if (@TorchColor == 0) set @Color, 1;
	callfunc("SetTorchColor");
	delitem "RedPowder", 1;
	goto L_Show_Color;

L_Use_Yellow:
	if (countitem("YellowPowder") < 1) goto L_No_Powder;
	if (@TorchColor < 10 && @TorchColor > 5) set @Color, @TorchColor - 1;
	if (@TorchColor >= 1 && @TorchColor < 5) set @Color, @TorchColor + 1;
       if (@TorchColor == 0) set @Color, 5;
	callfunc("SetTorchColor");
	delitem "YellowPowder", 1;
	goto L_Show_Color;

L_Use_Blue:
	if (countitem("BluePowder") < 1) goto L_No_Powder;
	if (@TorchColor > 4 && @TorchColor < 9) set @Color, @TorchColor + 1;
	if (@TorchColor <= 12 && @TorchColor > 9) set @Color, @TorchColor - 1;
	if (@TorchColor == 1) set @Color, 12;
       if (@TorchColor == 0) set @Color, 9;
	callfunc("SetTorchColor");
	delitem "BluePowder", 1;
	goto L_Show_Color;

L_No_Powder:
	mes "You notice you're all out of that color powder.. Perhaps Orum can make you some more.";
	close;

L_Show_Color:
	callfunc("GetTorchColor");
	callfunc("GetTorchIntensity");
	if (@TorchColor == @lastColor) goto L_Wrong_Color;
	misceffect 5;
	set @lastColor, @TorchColor;
	mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
	goto L_Color_Loop;

L_Wrong_Color:
	set @Intensity, @TorchIntensity + 1;
	if (@Intensity > 2) goto L_Failed;
	callfunc("SetTorchIntensity");
	callfunc("GetTorchIntensity");
	misceffect 5;
	mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
	goto L_Color_Loop;

L_Failed:
	mes "As you pour the powder into the flame it flares violently before bursting into your face!";
	misceffect 5;
	misceffect 16;
	set @Intensity, 0;
	callfunc("SetTorchIntensity");
	heal -Hp, 0;
	close;
}


// Third Torch
009-4.gat,33,86,0	script	Torch	127,{
	callfunc "InRangeTorch3";
	callfunc "DoneWithTorches";

	set @Torch, 2;
	callfunc("GetTorchColor");
	callfunc("GetTorchIntensity");

	set @lastColor, @TorchColor;
	setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
	setarray @intensities$,"calm","bright","blinding";
	mes "Looking closely you notice that this torch is not like the others.. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
	goto L_Color_Loop;

L_Too_Far:
	mes "You're too far away to do anything with that torch.";
	close;

L_Color_Loop:
	callfunc("GetTorchColor");
	menu
		"Add Red Powder", L_Use_Red,
		"Add Yellow Powder", L_Use_Yellow,
		"Add Blue Powder", L_Use_Blue,
		"Leave it alone.", -;

	mes "The flame flickers as if it's laughing at you..";
	close;

L_Use_Red:
	if (countitem("RedPowder") < 1) goto L_No_Powder;
	if (@TorchColor > 6 && @TorchColor < 12) set @Color, @TorchColor + 1;
	if (@TorchColor < 6 && @TorchColor > 1) set @Color, @TorchColor - 1;
	if (@TorchColor == 12) set @Color, 1;
	callfunc("SetTorchColor");
	delitem "RedPowder", 1;
	goto L_Show_Color;

L_Use_Yellow:
	if (countitem("YellowPowder") < 1) goto L_No_Powder;
	if (@TorchColor < 10 && @TorchColor > 5) set @Color, @TorchColor - 1;
	if (@TorchColor >= 1 && @TorchColor < 5) set @Color, @TorchColor + 1;
	callfunc("SetTorchColor");
	delitem "YellowPowder", 1;
	goto L_Show_Color;

L_Use_Blue:
	if (countitem("BluePowder") < 1) goto L_No_Powder;
	if (@TorchColor > 4 && @TorchColor < 9) set @Color, @TorchColor + 1;
	if (@TorchColor <= 12 && @TorchColor > 9) set @Color, @TorchColor - 1;
	if (@TorchColor == 1) set @Color, 12;
	callfunc("SetTorchColor");
	delitem "BluePowder", 1;
	goto L_Show_Color;

L_No_Powder:
	mes "You notice you're all out of that color powder.. Perhaps Orum can make you some more.";
	close;

L_Show_Color:
	callfunc("GetTorchColor");
	callfunc("GetTorchIntensity");
	if (@TorchColor == @lastColor) goto L_Wrong_Color;
	misceffect 5;
	set @lastColor, @TorchColor;
	mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
	goto L_Color_Loop;

L_Wrong_Color:
	set @Intensity, @TorchIntensity + 1;
	if (@Intensity > 2) goto L_Failed;
	callfunc("SetTorchIntensity");
	callfunc("GetTorchIntensity");
	misceffect 5;
	mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
	goto L_Color_Loop;

L_Failed:
	mes "As you pour the powder into the flame it flares violently before bursting into your face!";
	misceffect 5;
	misceffect 16;
	set @Intensity, 0;
	callfunc("SetTorchIntensity");
	heal -Hp, 0;
	close;
}