I think I finally found a way to prevent farming in an automated fashion (in other words, working 24/7 without humans needed). 

It's a subclass of CreatureFactory that keeps track of who kills its monsters and inflicts penalties to players who kill too many. 

It's working. There's a test map you can try on the Mapping server. 
Right now the penalty is your score becomes 0, and you lose all weapons to make it more obvious. 



In detail, it works this way: 

A factory owns a dynamic list of items with the form (player, number of charges, next item). 

When a player kills a monster from the factory, the factory searches its list for this player and adds him/her a charge. 
If a player's charges get close to the limit, the player receives a warning message. 
If the limit is hit, the player receives a severe penalty so he/she won't do that again. 

Charges decrease with time, meaning a player can't reach the limit by accident. If you're not a farmer you shouldn't even notice that this system exists. 

Charges limit and cooldown are configured by the mapper. 



These factories also come with a custom class of triggers to control when the anti-farming mode is active, because we don't necessarily want to do it all the time the factory is working. 
For example in LongCorridor, the anti-farming mode of a factory should be activated only when the next zone has been entered. 



This is not a perfect solution against farming, for various reasons, but it works with almost zero efforts. 
A perfect solution would need a new element in the scoring system and custom monsters in all maps, which is just unthinkable. 


Bob I need your help with the custom class of LocalMessage. If the class is written from UEd the default properties can't be overriden (because the default properties of LocalMessage are hidden...) and I don't know how to work with .uc files. 
Right now I'm using a subclass of MultiKillMessage so it's kind of retarded.