// Evol functions.
// Authors:
// 4144
// Travolta
// Description:
// Build in functions.
function script menuimage {
return getarg(0) + "|" + getarg(1);
}
function script menuaction {
return "[" + getarg(0) + "]";
}
function script mesn {
if (getargcount() > 0)
{
.@s$ = "[" + getarg(0) + "]";
}
else
{
.@s$ = "[" + strnpcinfo(1) + "]";
}
mes .@s$;
return;
}
function script mesq {
mes "\"" + getarg(0)+ "\"";
return;
}
function script g {
return Sex == 0 ? getarg(0) : getarg(1);
}
function script col {
.@color = getarg(1);
if (.@color < 0) .@color = 0;
if (.@color > 9) .@color = 9;
return "##" + .@color + getarg(0) + "##0";
}
function script adddefaultskills {
if (getskilllv(NV_BASIC) < 6)
{
skill NV_BASIC, 6, 0;
}
return;
}
function script str {
return "" + getarg(0);
}
function script addremovemapmask {
setmapmask getarg(0), (getmapmask(getarg(0)) | (getarg(1) + getarg(2))) ^ getarg(2);
return;
}
// returns a randomly picked argument from the given ones
function script any {
return getarg(rand(getargcount()));
}
// remove spaces at the start and end of string and return result
function script strip {
.@s$ = getarg(0);
if (.@s$ == "")
return "";
.@start = 0;
.@end = getstrlen(.@s$) - 1;
for (.@i = .@start; .@i < .@end; .@i++)
{
if (charat(.@s$, .@i) != " ")
break;
else
.@start++;
}
for (.@i = .@end; .@i >= .@start; .@i--)
{
if (charat(.@s$, .@i) != " ")
break;
else
.@end--;
}
return substr(.@s$, .@start, .@end);
}
// Function to show narrator text. Accepts string args.
// If first arg is a number N, then it represents bit flags.
// Bit flags :
// 0x1 -- blank line at beginning
// 0x2 -- blank line at the end
// 0x4 -- use last "next;"
// 0x8 -- don't use first "mesn;"
function script narrator {
.@start = 0;
.@argc = getargcount();
.@flags = 0;
if (.@argc > 1 && !isstr(getarg(0)))
{
.@start = 1;
.@flags = getarg(0);
}
if (.@flags & 0x1)
mes "";
if (!(.@flags & 0x8))
mesn l("Narrator");
for (.@i = .@start; .@i < .@argc; .@i++)
{
mes col(getarg(.@i), 9);
if (.@i < .@argc - 1)
next;
}
if (.@flags & 0x4)
next;
else if (.@flags & 0x2)
mes "";
return;
}
// Function to show NPC speech. Accepts string args.
// If first arg is a number N, then it represents bit flags.
// Bit flags :
// 0x1 -- blank line at beginning
// 0x2 -- blank line at the end
// 0x4 -- use last "next;"
// 0x8 -- don't use first "mesn;"
function script speech {
.@start = 0;
.@argc = getargcount();
.@flags = 0;
if (.@argc > 1 && !isstr(getarg(0)))
{
.@start = 1;
.@flags = getarg(0);
}
if (.@flags & 0x1)
mes "";
if (!(.@flags & 0x8))
mesn;
for (.@i = .@start; .@i < .@argc; .@i++)
{
mesq getarg(.@i);
if (.@i < .@argc - 1)
next;
}
if (.@flags & 0x4)
next;
else if (.@flags & 0x2)
mes "";
return;
}
// Show debug message if .debug variable of NPC is set to 1
function script npcdebug {
if (getvariableofnpc(.debug, strnpcinfo(3)))
debugmes strnpcinfo(3) + ": " + getarg(0);
return;
}
function script abs {
.@n = getarg(0);
return .@n >= 0 ? .@n : -.@n;
}
function script askyesno {
return select (menuaction(l("Yes")),
menuaction(l("No")));
}
// Argument:
// 0 Quest variable
// 1 Current value
// 2 Next value
function script compareandsetq {
if (getq (getarg(0)) == getarg(1))
{
setq getarg(0), getarg(2);
return true;
}
return false;
}
// Use a delay to prevent spams from NPC that display text without the
// use of (a) close/next function(s).
// Argument:
// 0 Text to display
// 1 Lock delay (default = 1)
// 2 Message function: (default = 0)
// 0 = npctalk3
// 1 = npctalk
// 2 = message
function script npctalkonce {
if ((.@current_time = gettimetick(2)) < Repeat_NPC_lock)
{
return false;
}
Repeat_NPC_lock = .@current_time + getarg(1,1);
if (getarg(2,0) == 0)
{
npctalk3 getarg(0);
}
else if (getarg(2,0) == 1)
{
npctalk getarg(0);
}
else if (getarg(2,0) == 2)
{
message strcharinfo(0), getarg(0);
}
return true;
}
// A somehow of BaseLevel * logn (BaseLevel * alpha).
// alpha = multiplicator factor.
// min = minimum result value.
function script lognbaselvl {
.@alpha = getarg(0, 1);
.@min = getarg(1, 1);
.@ret = 0;
.@pc_level = BaseLevel * .@alpha;
while (.@pc_level >>= 1)
{
++.@ret;
}
.@ret *= BaseLevel;
if (.@ret <= .@min)
{
.@ret = .@min;
}
return .@ret;
}
function script getquestlink {
return "[@@q" + getarg(0) + "|@@]";
}
function script getmonsterlink {
return "[@@m" + getarg(0) + "|@@]";
}
function script getpetlink {
return "[@@p" + getarg(0) + "|@@]";
}
function script getmercenarylink {
return "[@@M" + getarg(0) + "|@@]";
}
function script gethomunculuslink {
return "[@@h" + getarg(0) + "|@@]";
}