[Turn on line numbering]
arg id, part, value;
var r, chance, times, active;
(> .perms(sender()) <);
if (!reactions.contains(id))
throw(~noreaction, "No reaction with id \"" + id + "\".");
r = reactions[id];
if ((active = dict_contains(active_ids, id)))
.deactivate_reaction(id);
switch (part) {
case 'matchwith:
(> .check_reaction_matchwith(value) <);
r = replace(r, 1, value);
case 'template:
(> .check_reaction_template(value) <);
r = replace(r, 2, value);
case 'type:
(> .check_reaction_type(value) <);
r = replace(r, 3, value);
case 'chance:
(> .check_reaction_chance(value) <);
r = replace(r, 4, value);
case 'times:
(> .check_reaction_times(value) <);
r = replace(r, 5, value);
case 'method, 'hook_method:
(> .check_reaction_hook_method(value) <);
r = replace(r, 6, replace(r[6], 1, value));
case 'args, 'hook_args:
(> .check_reaction_hook_args(value) <);
r = replace(r, 6, replace(r[6], 2, value));
case 'min, 'min_delay:
(> .check_reaction_min(value) <);
r = replace(r, 7, value);
case 'max, 'max_delay:
(> .check_reaction_max(value) <);
r = replace(r, 8, value);
default:
throw(~invpart, "Invalid part '" + part + ".");
}
reactions = reactions.add(id, r);
if (active)
.activate_reaction(id);
["// Created 26-Mar-1995 as a part of ColdCore, see: @help Credit"]