Method code for $robot.update_reaction()

[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"]

the Cold Dark