From db020f7cccf3894ace14558b4c737ccc9f16886d Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 24 May 2019 15:40:24 -0300 Subject: mlearn() skill, meant to reduce the maintenance cost on Magic Schools. --- npc/functions/util.txt | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'npc/functions') 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() -- cgit v1.2.3-70-g09d2