The gamemode uses a system where it has a list containing every enemy type, their looks (A separate list to allow randomization), their playertype, size, melee weapons, long range weapons, probability to spawn, images that are mounted upon spawning (for example particle effects or hats) and a class that allows players to enable/disable any specified class of enemy. The system provides two functions:
The below functions add a new type of enemy or boss for the gamemode to use.
EZM_addZombie(name,namelist,player_datablock,size,list_of_melee_weapons,list_of_ranged_weapons,has_special_wave,spawn_propability,class);
EZM_addBoss(name,namelist,player_datablock,size,list_of_melee_weapons,list_of_ranged_weapons,has_special_wave,spawn_propability,class);
name is simply the name of the enemy.
namelist is not used if I remember correctly. Just to make sure it should be set to the same value as name.
player_datablock is the PlayerData this enemy uses.
size is the enemys size.
list_of_melee_weapons is a string containing the names of melee weapons used. A random one is selected upon spawning.
list_of_ranged_weapons is the same as above, but ranged. Both values can be set to -1 to disable.
has_special_wave allows this enemy to be used in special waves (which occur randomly), in which only this type of enemy will spawn.
spawn_propability is the likelihood of this enemy spawning. I can't remember exactly how it determines that.
class is the name of the enemy class.
To allow players the disabling of enemy classes, one has to add a Slayer hook:
Slayer.Prefs.addPref("EZM","Allow Soldier Zombies","%mini.EZM_AllowSoldierZombies","bool",1,0,1,-1,"Rules EZM Mode");
The second value is what shows up in Slayer, the third is the string used in class. The "%mini." must be there or it won't work. Nothing else must be changed there.
This one adds apperances for a specific enemy or boss. Any enemy/boss can have an infinite number of different appearances, from which the gamemode selects a random one when it spawns that enemy.
function EZM_addAppearance(name,appearance,hide_nodes,face_decal,chest_decal,mounted_image)
name refers to the enemy name (name in EZM_addZombie).
appearance is a list of nodes and their colors (e.g. "headskin 1 1 1 1 lhand 0 0 0 0.5" sets the enemy head to white and makes the left hand black semitransparent). It must follow the pattern (nodename, red, green, blue, alpha,...) or it won't work. Nodes that are invisible will be turned visible.
hide_nodes is a list of nodes that will be hidden (e.g. "chest lshoe rshoe").
face_decal is the name of the face decal used.
face_decal is the name of the chest decal used.
mounted_image is the ShapeBaseImageData that will be mounted to the enemy when it spawns.
So instead of trying to mod the gamemode so the zombies don't spawn with weapons you could simply change their parameters in zombies.cs so they won't have any weapons. Or add your own weaponless enemies. But that's boring. How about giving them all rapid-fire rocketlaunchers?
And if you want to disable bosses you can just set "Add Boss every X Waves" to 10000. I set the limit for that to 50, but after changing the "int 0 50" to "int 0 10000" at line 27 in basic.cs you can do that.
Slayer.Prefs.addPref("EZM","Add Boss every X Waves","%mini.EZM_BossCountInc","int 0 10000",20,0,1,-1,"Rules EZM Mode");