summaryrefslogtreecommitdiff
path: root/npc/functions
diff options
context:
space:
mode:
Diffstat (limited to 'npc/functions')
-rw-r--r--npc/functions/util.txt39
1 files changed, 39 insertions, 0 deletions
diff --git a/npc/functions/util.txt b/npc/functions/util.txt
index 644954942..c83f040b0 100644
--- a/npc/functions/util.txt
+++ b/npc/functions/util.txt
@@ -603,6 +603,45 @@ function script sk_intcost {
return 0;
}
+// Magic School Learning Interface
+// mlearn( skill, {item 1, amount 1}, {item 2, amount 2}... )
+// returns false if cheater
+function script mlearn {
+ if (getargcount() < 2 || getargcount() % 2 != 1)
+ return Exception("Faulty learning skill command invoked - error");
+
+ .@sk=getarg(0);
+
+ // List required ingredients
+ mesq l("This useful skill will only require:");
+ for (.@i=1;.@i < getargcount(); .@i++) {
+ mesc l("@@/@@ @@", countitem(getarg(.@i)), (getskilllv(.@sk)+1)*getarg(.@i+1), getitemlink(getarg(.@i)));
+ .@i++;
+ }
+ // getarg(.@i)
+ next;
+ if (askyesno() == ASK_NO)
+ return true;
+
+ // Count items
+ for (.@i=1;.@i < getargcount(); .@i++) {
+ if (countitem(getarg(.@i)) < (getskilllv(.@sk)+1)*getarg(.@i+1))
+ return false;
+ .@i++;
+ }
+
+ // Delete Items
+ for (.@i=1;.@i < getargcount(); .@i++) {
+ delitem getarg(.@i), (getskilllv(.@sk)+1)*getarg(.@i+1);
+ .@i++;
+ }
+
+ sk_lvup(.@sk);
+ next;
+
+ return true;
+}
+
// Returns a value defining your current magic control (affects success ratio, higher is better)
// A value of '5' means perfect control, and a value of '0' means overwhelm.
// abizit()