Yes, and I'm interested seeing how others write that in a way that the new functionality is easy to add and involves minimal amount of editing of old code. If you check melee1.c in Sil's sources, there's code like:
/* Describe the attack method, apply special hit chance mods. */
switch (method)
{
case RBM_HIT:
{
...
}
case RBM_TOUCH:
{
act = "touches you";
// ignores armor
prt_percent = 0;
// can't do criticals
no_crit = TRUE;
break;
}
case RBM_PUNCH:
{
act = "punches you";
do_stun = 1;
// stopped by armor
prt_percent = 100;
break;
}
case RBM_KICK:
{
act = "kicks you";
do_stun = 1;
// stopped by armor
prt_percent = 100;
break;
}
which works and is easy enough to edit. But if you wanted to add something new, you would have to add it to that select-case - section, instead of just coding it as a stand alone unit and telling the system to use it.
Or if somebody would want to make a variant, which works pretty much the same as the original system, but kicks (for some reason) are not stopped by armour. In the example, this would be achieved by editing original code. When new version of original code is released, the variant has to merge the two codebases so that they have new functionality of the original plus their changes.
However, if the stuff that variant does differently was written in own location and the engine was told to use that one instead of the original, merging would most likely be much easier.