// Evol functions. // Authors: // gumi // Reid // Description: // script terminator functions // goodbye_msg // Tell a random goodbye sentence. // Variables: // .@rand = Random number between the number of "goodbye" choice. function script goodbye_msg { setarray .byemsg$[0], l("See you!"), l("See you later!"), l("See you soon!"), l("Bye!"), l("Farewell."), l("Bye then!"), l("Goodbye."), l("Bye for now."), l("Talk to you soon!"), l("Talk to you later!"), l("Have a good day!"), l("Cheers!"), l("Take care!"); return any_of(.byemsg$); } // cwarp // Closes the dialog, then warps the player. // You almost always want to use this instead of `warp`. // usage: // cwarp; // cwarp x, y; // cwarp map, x, y; function script cwarp { .@map$ = getarg(0, ""); .@x = getarg(1, 0); .@y = getarg(2, 0); if (getargcount() > 0 && getargcount() < 3) { .@npc$ = strnpcinfo(0); .@map$ = getvariableofnpc(.map$, .@npc$); .@x = getarg(0); .@y = getarg(1); } getmapxy .@pc_map$, .@pc_x, .@pc_y, UNITTYPE_PC; // get char location closedialog; // XXX: maybe send closeclientdialog in the future if (getargcount() < 1) { warp .@pc_map$, .@pc_x, .@pc_y; // no arguments, just refresh close; } if (.@map$ == .@pc_map$) { if (.@pc_x == .@x && .@pc_y == .@y) { close; // same location, don't move } else { slide .@x, .@y; // same map, slide instead of full warp close; } } warp .@map$, .@x, .@y; // different map, warp to given location close; } // cshop // closes the dialog, then opens a shop // if no npc is given, calls "# $" function script cshop { closedialog; // XXX: maybe send closeclientdialog in the future shop getarg(0, "#" + strnpcinfo(0) + " $"); //close; => the shop buildin already sends close, and is a terminator itself } // cstorage // closes the dialog, then opens storage function script cstorage { closedialog; // XXX: maybe send closeclientdialog in the future openstorage; close; } // bye // closes the dialog without waiting for the player to press close // can also display an emote function script bye { .@emote = getarg(0, -1); closedialog; // XXX: maybe send closeclientdialog in the future if (.@emote >= 0) emotion .@emote; close; } // goodbye // same as bye, but also displays a canned message // can also display an emote function script goodbye { npctalkonce(goodbye_msg()); bye getarg(0, -1); } // goodbye2 // Waits for the player to press close, displays a canned message, // ends execution. // Can also display an emote function script goodbye2 { .@emote = getarg(0, -1); close2; npctalkonce(goodbye_msg()); if (.@emote >= 0) emotion .@emote; end; }