MAPINFO/Skill definition
Skill definitions begin with the keyword "skill" followed by the name of the skill and the properties block.
Skill commands
clearskills
- Before defining any skills you may use this to clear off any and all skill levels that the game uses. Use it outside of any other blocks.
skill <name> { properties }
- Creates a new skill level. <name> is arbitrary so long as no two skill blocks use the same one. Use one of the name or picname properties below to specify what to show in the skill selection menu. Note that the skill menu is a type of ListMenu, which by default is limited in size: if the virtual size of the menu exceeds 320x200 (which fits about 7 difficulty levels), it will fall back to a minimal smallfont version. This limitation can be circumvented by defining a custom SkillMenu in MENUDEF with the
ForceList
instruction that disables the fallback behavior.
Skill properties
The following properties are supported within a skill definition:
Property | Description |
---|---|
AmmoFactor = <value> | This affects how much ammo you pick up in the skill level, by multiplying the normal amount by <value>. For example, if the value is set to 2.0, you will receive double the normal ammo, and if it is set to 0.5, you would pick up half ammo. |
DropAmmoFactor = <value> | This affects how much ammo you pick up from fallen foes in the skill level, by multiplying the normal amount by <value>. For example, if the value is set to 2.0, you will receive double the normal ammo, and if it is set to 0.5, you would pick up half ammo. This value overrides AmmoFactor for ammo and weapons dropped by monsters. This affects both when an amount is specified in DropItem and when it's the default amount. For example, with DropAmmoFactor set to 4, a former human will drop clips containing 40 bullets while a golem will drop wand crystals containing 12 charges. |
DoubleAmmoFactor = <value> | This affects how much ammo you pick up when the Double Ammo DMFlag is set. |
DamageFactor = <value> | This value affects how much damage you take. If the value is set to 0.5 for example, you would only take half damage in that skill level. However, if you set it to 2.0, you take double damage from everything in the game. Note that this includes damage from sector effects, such as lava and slime. |
RespawnTime = <value> | Sets the amount of time in seconds it takes for monsters to respawn. Any value other than 0 means that monsters will respawn. |
RespawnLimit = <value> | Specifies how many times monsters respawn before staying permanently dead. Note: 0 means "infinite" — if you do not want monsters to respawn at all, use "respawntime = 0" instead. |
Aggressiveness = <value> | Factor for monster aggressiveness. 0.0 is normal, 1.0 is maximum. |
SpawnFilter = <value> | Only actors set to appear on the specified skill level will be spawned into the map. <value> can be from 1-16; however only UDMF-format maps can use skills above 5. You can also use one of the following keywords in place of a number. These correspond to the five skill levels present in all of the IWADs ZDoom supports:
|
SpawnMulti | Only things which are flagged for cooperative games and those which are flagged for single-player games spawn in single-player games. |
SpawnMultiCoopOnly | (New from 4.13.0)
Only things which are flagged for cooperative games spawn in single-player games. |
ACSReturn = <value> | The value returned by the ACS GameSkill command. |
Key = "<key>" | Sets the hotkey for the skill level. |
MustConfirm = "[text]" | The player must confirm they wish to play the skill level, just like when you choose Nightmare. If [text] is supplied, then it is used in place of the standard "Are you sure? This skill level isn't even remotely fair" when prompting the user. |
name = "<name>" | The name of the skill level in the menu. |
PlayerClassName = "<class>", "<name>" | The name of the skill for the specified class. The character class must be indicated by its display name (e.g. "Marine"), not its actor name (e.g. "DoomPlayer"). |
PicName = "<lump>" | Graphic used in menu - this and Name are mutually exclusive |
TextColor = "<color>" | Color that the skill level's name is displayed in. |
EasyBossBrain | This makes the BossEye shoot SpawnShots at a decreased rate. |
EasyKey | This makes keys show up on the automap, even without cheats. Heretic's lowest difficulty setting uses this. |
FastMonsters | Halves the duration of actor states with the Fast keyword, and makes monsters and projectiles use their FastSpeed property, if set, instead of their regular Speed property. |
SlowMonsters | Doubles the duration of actor states with the Slow keyword. |
InstantReaction | Allows monsters to immediately perform their first ranged attack since spawning without having to take a few steps first. |
DisableCheats | Disables using cheats in-game unless sv_cheats is set to true. |
AutoUseHealth | Enables automatic use of Raven's health items, as well as any HealthPickup with HealthPickup.AutoUse set to 1 or 2. Is not necessary for automatic use of Strife's health items or pickups with AutoUse set to 3. |
ReplaceActor = "<original class>", "<replacement class>" | Replace actors of type "original class" with actors of type "replacement class". This is applied before DECORATE replacements, and only if the actor names are valid class (if the actors are not replaced as you expected, check the console for error messages). If your mod also features DECORATE replacements for standard actors, use the original actor names in the skill definition. Finally, actor replacements done in this manner are not transitive: if a skill replaces actor A by actor B, and actor B by actor C, actor A will not be replaced by actor C. |
MonsterHealth = <value> | Specifies a factor to multiply the health of all hostile monsters by. 1.0 means normal health, higher values increase health, lower values decrease it. |
FriendlyHealth = <value> | Specifies a factor to multiply the health of all friendly monsters by. 1.0 means normal health, higher values increase health, lower values decrease it. |
NoPain | If present, no actors will ever enter their pain states. |
DefaultSkill | This skill will be highlighted by default in the menu. It will also be the skill chosen by default if an episode has the noskillmenu flag. |
ArmorFactor = <value> | Much like AmmoFactor. This affects how much armor you pick up in the skill level, by multiplying the normal amount by <value>. This affects BasicArmorBonus and BasicArmorPickup. |
NoInfighting | Monsters will not infight when playing under this skill. This, however, only has an effect on maps which do not define their own infighting settings. |
TotalInfighting | Monsters will infight when playing under this skill, even if they are of the same species. This, however, only has an effect on maps which do not define their own infighting settings. |
HealthFactor = <value> | This affects how much health you gain when healing in the skill level, by multiplying the base amount by <value>. |
KickbackFactor = <value> | A multiplier for kickback received from being damaged. |
NoMenu | This skill does not get listed in the skill selection menu. |
PlayerRespawn | This has the same effect as the AllowRespawn map flag, but only for this skill. |
Examples
Nightmare difficulty
skill nightmare { AmmoFactor = 2 FastMonsters DisableCheats RespawnTime = 12 SpawnFilter = Nightmare PicName = "M_NMARE" MustConfirm Key = "n" }
"I'm Too Young To Die" difficulty
skill baby { AutoUseHealth AmmoFactor = 2 DamageFactor = 0.5 EasyBossBrain SpawnFilter = Baby PicName = "M_JKILL" Key = "i" }
A hard difficulty that appears as "hellish" in the menu and replaces various items and monsters in the game with others
skill hellish { FastMonsters DisableCheats SpawnFilter = Hard Name = "Hellish" ReplaceActor = "Medikit", "Stimpack" ReplaceActor = "HellKnight", "BaronOfHell" ReplaceActor = "ZombieMan", "ShotgunGuy" ReplaceActor = "ShotgunGuy", "ChaingunGuy" ReplaceActor = "Demon", "Spectre" ReplaceActor = "DoomImpBall", "CacodemonBall" }
A ZDoom equivalent to the "Heaven or Hell" difficulty from the Devil May Cry series or the "Instant Kill" difficulty in Way of the Samurai 3. Everyone dies in one hit from anything. As a side effect, any actor that can gib will gib. Including the player, who gets knocked back very far if s/he is hit by an attack.
skill dante { damagefactor = 255 monsterhealth = 0.001 spawnfilter = Nightmare name = "Doomguy Must Die" textcolor = blue mustconfirm = "One Hit. One Kill." }