diff options
author | Jesusaves <cpntb1@ymail.com> | 2018-09-09 16:10:17 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2018-09-09 16:10:17 -0300 |
commit | 73f268e83c278b735d8f6613a2a74f56bb5a7d62 (patch) | |
tree | fa7272759e1642e825ef799e7060c6c4196aefcd /npc/functions | |
parent | ee3ad796031ac328496bf2ebe1616aa7c0f7621e (diff) | |
download | serverdata-73f268e83c278b735d8f6613a2a74f56bb5a7d62.tar.gz serverdata-73f268e83c278b735d8f6613a2a74f56bb5a7d62.tar.bz2 serverdata-73f268e83c278b735d8f6613a2a74f56bb5a7d62.tar.xz serverdata-73f268e83c278b735d8f6613a2a74f56bb5a7d62.zip |
Placeholder for r7
Diffstat (limited to 'npc/functions')
-rw-r--r-- | npc/functions/TODO.txt | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/npc/functions/TODO.txt b/npc/functions/TODO.txt new file mode 100644 index 000000000..2cacec81b --- /dev/null +++ b/npc/functions/TODO.txt @@ -0,0 +1,96 @@ +// TMW2/LoF Script +// Author: +// Jesusalva +// Description: +// ToDo - Please disregard for now + +// Important variables: +// MERC_EXP +// Experience on Thief Tree +// MERC_RANK +// Position on the Thief Tree + +// ToDoMerc(num_pins, max_pins) +// Returns 0 upon failure, 1 upon success +// Closes script if an error happen or if you give up / cannot try. +// +// The 'next' is upon script responsability +// Maximum pin number is infinite. Maximum Pin Positiors range from 2~5. +// If you fail, you can end up having to start again. If you fail too much, +// you'll be caught! +function script ToDoMerc { + // If you don't have a LockPick, you can't do this (useless) + if (!countitem(Lockpicks)) { + mesc l("You need a @@ to try this.", getitemlink(Lockpicks)), 1; + close; + } + + .@d=getarg(0,1); + .@m=getarg(1,3); + + // Invalid Argument (kill script) + if (.@d < 1 || .@m < 2 || .@m > 5) + end; + + // You must be rank (number of locks - 1) to try + if (MERC_RANK+1 < .@d) { + mesc l("This lock is beyond your current capacity."), 1; + close; + } + + // Create @pins array (the answer) + for (.@i=0; .@i < .@d;.@i++) + @pins[.@i] = rand(1,.@m); + + // Check if you'll try to open it. + mesc l("I'm not sure exactly what we are trying to do, but you seem to need to resolve this puzzle."); + mesc l("Will you try to unlock it?"); + if (askyesno() == ASK_NO) + close; + + // Setup your attempt + delitem Lockpicks, 1; + @pos=0; + mesc l("There are only @@ pins to set.", .@d); + + // You have as many attempts as pins and appliable strenghts. + // Each merc rank grants you an extra attempt. + // Each pin takes one attempt. + // It's not multiplied, so 3 pins with 3 positions: 6 chances, 9 possibilities. + // There's no penalty, but the attempt is counted working or not! + // Remember if you fail, all previous pins will be cleared (@pos) + for (.@i=0; .@i < (.@d+.@m+MERC_RANK) ; .@i++) { + mesc l("You are trying to lock the @@th pin. What will to do?", @pos+1); + + menuint + rif(.@m >= 4, l("Apply no pressure")), 4, + rif(.@m >= 2, l("Apply soft pressure")), 2, + rif(.@m >= 1, l("Apply normal pressure")), 1, + rif(.@m >= 3, l("Apply strong pressure")), 3, + rif(.@m >= 5, l("Apply very strong pressure")), 5, + l("Give up!"), 0; + + if (!@menuret) + close; + + // Is your guess correct? + if (@pins[@pos] == @menuret) { + mesc l("*click*"); + @pos+=1; + } else { + mesc l("This didn't work. All pins are now unlocked!"); + @pos=0; + // We don't need to clear console, each successful attempt IS counted. + // Therefore, unsetting 3 pins means you must do 3 new attempts!! + // The biggie is that you're running against time, here!!! + } + + if (@pos >= .@d) { + MERC_EXP += .@d*.@m; + return 1; + } + } + + MERC_EXP += 1; + return 0; +} |