summaryrefslogtreecommitdiff
path: root/world/map/npc/029-2/alchemy.txt
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/029-2/alchemy.txt')
-rw-r--r--world/map/npc/029-2/alchemy.txt138
1 files changed, 0 insertions, 138 deletions
diff --git a/world/map/npc/029-2/alchemy.txt b/world/map/npc/029-2/alchemy.txt
deleted file mode 100644
index 7bc58337..00000000
--- a/world/map/npc/029-2/alchemy.txt
+++ /dev/null
@@ -1,138 +0,0 @@
--|script|_N-Alchemy|32767
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if (@npc_check) end;
-
- title "Alchemy Lab";
- mes "This is an alchemy lab.";
- mes "With it, you can combine reagents together to create powerful potions.";
- next;
- clear;
- mes "##BDrag & drop 2 items from your inventory. All items used will be lost.##b";
- cleararray @alchlab_items$[0], "", 2; // since we're not using a scoped (.@) array, we need to clean it
- requestitem @alchlab_items$[0], 2; // TODO: add a craft builtin (npc action 12)
- clear;
- if (@alchlab_items$[0] == "" || @alchlab_items$[1] == "")
- goto L_NoItems;
-
- mes "You are about to combine the following:";
- mes " ["+ getitemlink(@alchlab_items$[0]) +"]";
- mes " ["+ getitemlink(@alchlab_items$[1]) +"]";
- mes;
- mes "##BWarning! This will permanently destroy the selected items.##b";
- // can not use a scope variable to store item names because menu is a script terminator (destroys the scope)
- menu
- "Abort Mission.", L_Abort,
- "Proceed.", L_Proceed,
- "I want to make several.", L_Multi;
-
-L_Proceed:
- // XXX: here we could make it wait a little, while the potion is boiling (and show an animation/particles/sound)
- if (countitem(@alchlab_items$[0]) < 1 || countitem(@alchlab_items$[1]) < 1) // this shouldn't happen, but just to be safe..
- goto L_NoItems;
- delitem @alchlab_items$[0], 1;
- delitem @alchlab_items$[1], 1;
- if (@alchlab_items$[0] == "BottleOfWater" || @alchlab_items$[1] == "BottleOfWater") // give back used bottles
- getitem "EmptyBottle", if_then_else(@alchlab_items$[0] == "BottleOfWater" && @alchlab_items$[1] == "BottleOfWater",2,1);
-
- set .@n, -3;
- goto L_CheckRecipes;
-
-L_CheckRecipes:
- set .@n, .@n+3;
- if (.@n == get(.rsize, "_N-Alchemy"))
- goto L_Failed;
- if (!(get(.recipes$[.@n], "_N-Alchemy") == @alchlab_items$[0] && get(.recipes$[.@n+1], "_N-Alchemy") == @alchlab_items$[1]) &&
- !(get(.recipes$[.@n], "_N-Alchemy") == @alchlab_items$[1] && get(.recipes$[.@n+1], "_N-Alchemy") == @alchlab_items$[0]))
- goto L_CheckRecipes;
-
- getitem get(.recipes$[.@n+2], "_N-Alchemy"), 1; // XXX: here we could also make it fail sometimes depending on your expertise
-
- // XXX: here we could make it give profession/crafting exp
- clear;
- mes "You combined the following:";
- mes " ["+ getitemlink(@alchlab_items$[0]) +"]";
- mes " ["+ getitemlink(@alchlab_items$[1]) +"]";
- mes;
- mes "You obtained:";
- mes " ["+ getitemlink(get(.recipes$[.@n+2], "_N-Alchemy")) +"]";
- close;
-
-L_NoItems:
- mes "You must put exactly 2 items.";
- close;
-
-L_Failed:
- mes "The potion bubbles violently and evaporates."; // XXX: here we could have random failure messages
- close;
-
-L_Abort:
- close;
-
-// Bikeshedding starts here
-L_Multi:
- mes "How many?";
- mes "##BWarning! This will permanently destroy the selected items.##b";
- input @count;
- if (@count == 0)
- close;
-
- if (countitem(@alchlab_items$[0]) < @count || countitem(@alchlab_items$[1]) < @count)
- goto L_NoItems;
- delitem @alchlab_items$[0], @count;
- delitem @alchlab_items$[1], @count;
- if (@alchlab_items$[0] == "BottleOfWater" || @alchlab_items$[1] == "BottleOfWater")
- getitem "EmptyBottle", if_then_else(@alchlab_items$[0] == "BottleOfWater" && @alchlab_items$[1] == "BottleOfWater",2*@count,@count);
-
- set .@n, -3;
- goto L_CheckRecipesMulti;
-
-L_CheckRecipesMulti:
- set .@n, .@n+3;
- if (.@n == get(.rsize, "_N-Alchemy"))
- goto L_Failed;
- if (!(get(.recipes$[.@n], "_N-Alchemy") == @alchlab_items$[0] && get(.recipes$[.@n+1], "_N-Alchemy") == @alchlab_items$[1]) &&
- !(get(.recipes$[.@n], "_N-Alchemy") == @alchlab_items$[1] && get(.recipes$[.@n+1], "_N-Alchemy") == @alchlab_items$[0]))
- goto L_CheckRecipesMulti;
-
- getitem get(.recipes$[.@n+2], "_N-Alchemy"), @count;
-
- clear;
- mes "You combined the following:";
- mes " ["+ getitemlink(@alchlab_items$[0]) +"]";
- mes " ["+ getitemlink(@alchlab_items$[1]) +"]";
- mes;
- mes "You obtained:";
- mes " ["+ getitemlink(get(.recipes$[.@n+2], "_N-Alchemy")) +"]";
- close;
-// Bikeshedding ends here
-
-S_Spawn:
- set .@s, getarraysize(.x1);
- if (.spawned >= .@s)
- goto S_Return;
- set .@n$, "#_Al-lab"+chr(3)+.spawned;
- if (puppet(.m$[.spawned], .x1[.spawned], .y1[.spawned], .@n$, 399) < 1) mapexit;
- set .spawned, .spawned + 1;
- if (.spawned < .@s)
- goto S_Spawn;
- return;
-
-S_Return:
- return;
-
-OnMaybeStart:
- callsub S_Spawn;
- if (.started == 0)
- goto L_InitVars;
- end;
-
-L_InitVars:
- setarray .recipes$[0], 0,
- "DilutedConcentrationPot", "DarkConcentrationPotion", "ConcentrationPotion",
- "CactusDrink", "CactusDrink", "CactusPotion",
- "PinkPetal", "BottleOfWater", "ConcentrationPotion";
- set .rsize, getarraysize(.recipes$);
- end;
-}