[Turn on line numbering]
arg name, @args;
var tmp, kid;
(> .perms(sender()) <);
(> $sys.touch() <);
if (!tostr(name).valid_ident())
throw(~invident, name + " is not a valid ident.");
(> add_var(name) <);
if ('core in .flags())
$changelog.log("ADD-VAR: " + this() + "," + name + " by " + sender());
// The following code is a kludge as we can't send a default value
// to the primitive.
if (args) {
tmp = tosym("__set_" + tostr(name) + "_" + time());
catch any {
add_method([tostr(name) + " = " + toliteral(args[1]) + ";"], tmp);
.(tmp)();
if (args.length() > 1 && args[2] == 'inherit) {
for kid in (.descendants())
kid.(tmp)();
}
del_method(tmp);
} with {
del_method(tmp);
rethrow(error());
}
}
["// Created as a part of ColdCore, see: @help Credit"]