2428 lines
148 KiB
Plaintext
2428 lines
148 KiB
Plaintext
//=============================================================================
|
|
//
|
|
// MOD : AD v1.70 Patch 1 - (Arcane Dimensions)
|
|
// Updated : 31st January 2018
|
|
// Author : Simon "Sock" OCallaghan
|
|
// Website : www.simonoc.com
|
|
// Info : AD documentation (currently not fully up to date)
|
|
// This is planned to be fixed in the new year (2018)
|
|
// with the new developer kit for AD.
|
|
//
|
|
//=============================================================================
|
|
|
|
Documentation Contents
|
|
------------------------------------------------------------------------------
|
|
|
|
Installation : How to install the MOD and maps details
|
|
MOD settings : How to change the way the MOD works
|
|
|
|
Entity State System : New ability to switch any entity on/off/disable
|
|
Starting Point : Ways to enahance start/hub map layouts
|
|
|
|
New / Updated Entities : Detail list of misc, func and trigger changes
|
|
Trains, Chains and Corners : New train system and path corners
|
|
Traps, Tricks and Tips : New traps and tricks to include in maps
|
|
Breakable System : How to enhance/change a map environment
|
|
Particle System : How to create/use pixel particles in maps
|
|
|
|
AD Monsters : Detailed look at all new monters and abilities
|
|
Monster Infighting : Shows which monsters belong to which group
|
|
Minion System : New minion spawning system for certain monsters
|
|
Bounding Boxes : Large table showing all monster bounding boxes
|
|
|
|
New Weapons : Detailed look at new weapons and how they work
|
|
Setting up New Weapons : How weapon upgrades are given/taken from players
|
|
Ammo Resistance : Details on how and what is affected by resistance
|
|
|
|
|
|
==============================================================================
|
|
MOD Features
|
|
------------------------------------------------------------------------------
|
|
|
|
* New breakable system with 4 different material styles (model+sounds)
|
|
* New sprite based particle system added to most items/monsters/models
|
|
* New player debuff system with DoT/Poison/Burning effects over time
|
|
* New minion spawning system to allow for more dynamic encounter design
|
|
* New gib system with unique body parts for most monsters (blood/poison/stone)
|
|
* All monster projectiles are variable speed based on player skill level
|
|
* Z-aware projectile ability added to some existing/new monsters (low grav aware)
|
|
* Two new powerups Sharpshooter and Nail Piercer to work with existing powerups
|
|
* MOD settings are maintained between map loads and remembered by savegame
|
|
* New HUB/Start map spawning system, can return to 7 unique spawn locations
|
|
* New re-spawning system for any item with particle effects and extra options
|
|
* Entity state system for switching entities to exact states (on/off/disable)
|
|
* Extensive updates to coop item behaviour and new player backpack system
|
|
|
|
* The following changes affect ALL monsters:
|
|
+ can be setup to spawn when triggered and angry at unique target
|
|
+ are affected by liquid damage (slime/lava) check done at feet of model
|
|
+ have unique idle and sight sounds setup including during combat
|
|
+ sightchecks can changed based on water alpha values (water=1;solid)
|
|
+ will check the first 3 death frames for additional damage (LG/SNG)
|
|
+ have access to better infighting parameters (focus, pain, damage)
|
|
+ all melee attacks check z axis (+/- 64) as well as XY axis distance
|
|
+ the speed of range attacks are based on skill level (org base value=hard)
|
|
+ will detect and destroy breakable entities in the way (if spawnflags allow)
|
|
+ Delayed monster/items can check inventory for new Shotgun/Axe/PlasmaGun
|
|
+ new footstep sound system which supports two different feet sounds
|
|
+ can be turn into a turret (no movement) with % HP release condition
|
|
|
|
* monster_dguard, _dcross, _ dfury, _sergeant; new death series of knights
|
|
* monster_hogre, _hammer, _mace; new hunter series of ogres (more armour)
|
|
* monster_knight/hell_knight stone statue option, need trigger to come alive
|
|
* monster_zombiek with slow melee attacks and small leaps, can start lying down
|
|
* monster_zombie with extra skins for variety and can start lying down
|
|
* monster_boil a slow moving player proximity bomb (can be nailed to floor/walls)
|
|
* monster_demon has extra claw and jump checks (height/blocked)
|
|
* monster_dog, monster_knight, player, monster_solider new higher detail models
|
|
* monster_eel, is a plasma firing surprise from murky watery depths
|
|
* monster_fish solid state and death counter fixed
|
|
* monster_wizard has option to maintain extra height above the player
|
|
* monster_gargoyle has independent height target and enemy target
|
|
* monster_gaunt is a large pterodactyl creature which fires plasma bolts
|
|
* monster_spider with low health and two variants (brown=melee and green=range)
|
|
* monster_wraith with health debuff/nail attack, optional minion spawning
|
|
* monster_shalrath with extra skins, new effects and optional minion spawning
|
|
* monster_voreling with low health, small jump and bite/frenzy melee attacks
|
|
* monster_drole is a high health tentacle tank with dangerous range/melee attacks
|
|
* monster_freddie is a high health mutant ogre with burst fire nail/laser attacks
|
|
* monster_minotaur is a high health stalking giant with lethal range/melee attacks
|
|
* monster_golem is a high health mountain of rock with deadly melee attacks
|
|
* monster_army is a low health soldier with many new types of projectiles
|
|
* monster_enforcer is mid range soldiers with new skins and more weapons
|
|
* monster_defender is a tough enforcer with Super Shotgun and Grenade Launcher
|
|
* monster_pyro is a flame obsessed enforcer with large gas tanks
|
|
* monster_fumigator is a poison loving enforcer with large gas tanks
|
|
* monster_centurion is flying on a hover board and fires plasma bolts
|
|
* monster_seeker is a relentless tough robot with rockets, lasers & plasma bolts
|
|
* monster_boglord is a special shambler with projectile attacks only
|
|
* monster_eidolon is a giant rock demon with summon/projectile attacks
|
|
* monster_firetopboss is a custom Chthon encounter with infighting ability
|
|
* monster_nour is a large white wizard with summon/projectile attacks
|
|
|
|
* func_door has new custom keys and alternative textures on open/close states
|
|
* func_train can be nonsolid / models and forward / backward with path_corners
|
|
* func_bob bmodel with gently bobbing motion based on angle and new parameters
|
|
* func_laser bmodel with damage/block abilities, has on/off/toggle states and sounds
|
|
* func_skill bmodel with touch/move functionality, keeps checking skill level
|
|
* misc_drip spawns water drip, can be delayed and has special water impact checks
|
|
* misc_fireball can be delayed, has variable waits and liquid impact sounds
|
|
* misc_model can be added to maps for extra detail (frame/skin/delay/collision)
|
|
* misc_shake affects the player/screen, added on/off/toggle states and sounds
|
|
* misc_smoke unique model with multiple skins, alpha and ON/OFF states
|
|
* misc_spark spawns shower of sparks, has on/off/toggle states and sounds
|
|
* misc_explobox/box2 exploding models, added delay/float/dmg/health options
|
|
* Multi, Once and secret trigs can check inventory for new Shotgun/Axe/PlasmaGun
|
|
* Added all predefined trigger sounds to trigger_once, multi and secret
|
|
* trigger_changelevel can be linked to 7 different spawn locations in next map
|
|
* trigger_fog changes global fog parameters (density/red/green/blue) over time
|
|
* trigger_heal function for creating healing pools or generic healing functions
|
|
* trigger_hurt can be delayed and setup to only affect monsters instead
|
|
* trigger_ladder can be climbed vertically, has on/off/toggle states and sounds
|
|
* trigger_monsterjump can be delayed and only work with certain monster types
|
|
* trigger_monsterturret will temporarily turn a range monster into a turret
|
|
* trigger_rune can test and fire multiple triggers based on runes collected
|
|
* trigger_setskill can be delayed or triggered to change console skill level
|
|
* trigger_teleport can start off and have active sound linked to status (on/off)
|
|
* trigger_void can safely remove all/or specific entities upon contact
|
|
* Trap shooters upgraded to fire spikes, grenades, rockets, lightning and gas
|
|
* Trap shooters require constant trigger to work, have toggle on/off mode as well
|
|
* Trap shooters can also track moving targets (func_trains) while firing
|
|
* Trap buzzsaw/pendulum models (originally Rogue software) more setup options
|
|
* Path_corner system upgrade to support wait/delay and multiple routes
|
|
* Extra information (arrow models) for path_corners in developer mode
|
|
* QS has changed the SV_AIM default, console variable overrides mod settings
|
|
* Can cycle through all info_intermission camera(s) on final screen
|
|
* Will trigger events when info_intermission cameras are viewed through
|
|
* Will trigger events on most info_player spawn locations when used
|
|
|
|
* New health models (15/25/100) flasks for medieval/metal and boxes for base worlds
|
|
* New ammo box pickup models, multiple skins for world type (medieval/base)
|
|
* Shells/Spikes ammo boxes have special lid model while rocket/cells have alt frames
|
|
* New alternative ammo box item_plasma, give cells, has multiple frames for diff look
|
|
* Cannot pick up any items when notarget is active (testing purposes)
|
|
* All keys (base/medieval/runic) and artifacts replaced with better skin/uv versions
|
|
* Custom key models (circuit board/base/medieval/runic) available with multiple skins
|
|
* All monster/player projectiles updated with better skin/uv setups
|
|
* Plenty of extra gib models dropped from monsters (swords, chainsaw, GL)
|
|
* Armour model (green/yellow/red skins) has been upgraded with more details
|
|
* New misc models added (candle, flame, drips, keys, sparks, smoke)
|
|
* New random rotation feature to ammo, health items, flames and candles
|
|
* Change the defaults of the MOD with new worldspawn keys:
|
|
+ can change item offset and use central rotation point
|
|
+ can add/remove player inventory items: weapons, ammo, health and armour
|
|
+ can add/remove new shotgun/axe/plasmagun upgrades from inventory
|
|
+ can change Z-aware range parameter for monsters (ogres/zombies)
|
|
+ can change the wateralpha (will remain active after finished map)
|
|
|
|
* Added upgrade to Axe (Based on new axe by MatthewB, new models/sound)
|
|
* Added upgrade to Super Shotgun (The Widowmaker by slapmap, new models/sound)
|
|
* Added upgrade to Lightning Gun (The PlasmaGun by slapmap, new models/sound)
|
|
* The Axe/Shotgun/LightningGun upgrades can knockdown down or kill zombies
|
|
* Added option to toggle Shotguns between hitscan and projectile bullets
|
|
* When projectile shells or Shotgun upgrade active, Shotgun sounds are replaced
|
|
* Added shell casings and particle effects for projectile pellets
|
|
* Shotgun/Nailguns have separate muzzle flashes to stop interpolation errors
|
|
* Plasma Gun will not discharge when underwater like LG, will not fire instead
|
|
* Plasma Gun has 10% chance on a fatal hit (HP<0) to blow up target
|
|
|
|
|
|
==============================================================================
|
|
MOD settings
|
|
------------------------------------------------------------------------------
|
|
|
|
There are several different places (RC/Map/Console) where the MOD settings can
|
|
be changed and some locations have precedent over others. The MOD will initially
|
|
look to the quake.rc file first, worldspawn second and finally the console
|
|
commands third. The higher levels will always override lower levels.
|
|
|
|
------------------------------------------------------------------------------
|
|
Level 1 - quake.rc
|
|
The first place where settings can be changed is the Quake.RC file which is
|
|
located in the root directory of the MOD. The file contains full details of
|
|
what settings can be changed and what values to use.
|
|
|
|
------------------------------------------------------------------------------
|
|
Level 2 - World/Map
|
|
When a map is loaded the worldspawn entity can have the following settings
|
|
which will override any quake.rc settings. These options below will affect
|
|
all clients (SP / Coop / DM ) and can even give / take items.
|
|
|
|
float gravity; // gravity of map (default = 800)
|
|
string fog; // console command (Den/R/G/B - '0.05 0.3 0.3 0.3')
|
|
float fog_density; // Global fog density (works with trigger_fog)
|
|
vector fog_colour; // Global fog colour (XYZ = RGB)
|
|
string fog_dpextra; // extra DP fog parameters, default - '1 0 8192 1024 32'
|
|
string water_alpha; // Water Alpha, default - 1.00
|
|
float particlemax; // Amount of ACTIVE particles per map
|
|
|
|
float no_item_offset; // All ammo/heal items use central point rotation
|
|
float no_item_rotate; // Not used anymore, kept for compatibility
|
|
float no_zaware; // Switch OFF zaware monster attacks
|
|
float no_sgprojectile; // Switches OFF ALL shotgun projectiles
|
|
float no_sgcasing; // Switches OFF ALL shotgun casings
|
|
float no_liquiddmg; // Switch OFF liquid (slime/lava) monster damage
|
|
float knight_defskin; // Default skin for new red shoulder knight model
|
|
float bodyflrcheck; // Stationary and Dead monsters do floor checks
|
|
float bodyfadeaway; // Dead monster bodies fade away (secs)
|
|
float sprite_particles; // Switch all custom particles to sprites (builtin excluded)
|
|
float no_bigprojectiles; // Switches OFF large player projectiles size
|
|
vector mapvar_update; // Update map variables (Range X->Y=Z)
|
|
|
|
float upgrade_axe; // Upgrade Axe -1=disable, 1=enable
|
|
float upgrade_ssg; // Upgrade Super Shotgun -1=disable, 1=enable
|
|
float upgrade_lg; // Upgrade Lightning Gun -1=disable, 1=enable
|
|
|
|
float give_weapons; // Bit flag for which weapons to give to the player
|
|
float take_weapons; // 1=SG, 2=SSG, 4=NG, 8=SNG, 16=GL, 32=RL, 64=LG (excludes Axe)
|
|
float max_health; // Update player health if below this value
|
|
float reset_health; // Reset player health to this value (1-100)
|
|
float currentammo; // =1 reset inventory, =0 minimum values
|
|
float ammo_shells, ammo_nails; // Player ammo quantities for the map (reset/minimum)
|
|
float ammo_rockets, ammo_cells; // currentammo flag specifies how these values are used
|
|
float armortype; // Armour type to start with 1=Green, 2=Yellow, 3=Red
|
|
float armorvalue; // Quantity of armour to reset player (100/150/200)
|
|
|
|
------------------------------------------------------------------------------
|
|
Level 3 - Console Commands
|
|
Once a map is loaded certain impulse commands can be used to fine tune
|
|
settings or override current map defaults
|
|
|
|
autoaim // Toggle player weapon Auto Aim (default = OFF)
|
|
zaware // Toggle Z Aware monsters (default = ON)
|
|
pixels // Toggle texture pixel mode (linear = blurry, nearest = crispy)
|
|
feet // Toggle monster / player footstep sounds (default = ON)
|
|
liqdmg // Toggle monster liquid damage (default = ON)
|
|
upgproj // Toggle Shotgun Projectiles/Casing (default = ON)
|
|
ver // Display MOD information
|
|
upgaxe // Upgrade Axe to Shadow Axe
|
|
upgssg // Upgrade Super Shotgun to Widowmaker
|
|
upglg // Upgrade Lightning Gun to Plasma Gun
|
|
|
|
==============================================================================
|
|
IMPULSE COMMANDS
|
|
------------------------------------------------------------------------------
|
|
|
|
This is a full list of new impulse commands added to the AD MOD. Impulse
|
|
commands will only work when a map is loaded because they are functions
|
|
defined in QC. Some of these will only work when developer 1 is set.
|
|
|
|
This information was originally in the quake.rc file.
|
|
|
|
Impulse 100 - Toggle auto aim (0.93 <> 1.00)
|
|
Impulse 105 - Toggle player projectile size
|
|
Impulse 110 - Toggle Z aware monsters
|
|
Impulse 115 - Toggle texture mode (linear/nearest)
|
|
Impulse 120 - Toggle footstep sound
|
|
Impulse 125 - Toggle Monster Liquid Damage
|
|
Impulse 130 - Toggle Shotgun Projectiles
|
|
Impulse 135 - Toggle Shotgun Casing
|
|
Impulse 140 - Display MOD information
|
|
Impulse 142 - Display Player information
|
|
Impulse 145 - Cycle through Intermission Camera(s)
|
|
Impulse 160 - Toggle Weather systems
|
|
Impulse 170 - Toggle monster body fade/removal
|
|
Impulse 175 - Display Arcane Key Inventory
|
|
|
|
------------------------------------------------------------------------------
|
|
COOP ONLY
|
|
------------------------------------------------------------------------------
|
|
Impulse 150 - Toggle COOP players can drop artifacts
|
|
Impulse 152 - Toggle COOP weapons to respawn
|
|
Impulse 154 - Toggle COOP health packs to respawn
|
|
Impulse 156 - Toggle COOP ammo boxes to respawn
|
|
Impulse 158 - Toggle COOP powerups to respawn
|
|
|
|
------------------------------------------------------------------------------
|
|
DEVELOPER ONLY (need to set developer to "1")
|
|
------------------------------------------------------------------------------
|
|
Impulse 200 - Upgrade Axe
|
|
Impulse 205 - Upgrade SSG
|
|
Impulse 210 - Upgrade LG
|
|
Impulse 220 - Display Configflag
|
|
Impulse 225 - Display Map Variables
|
|
Impulse 230 - Toggle Dev Helpers (mark/arrow)
|
|
Impulse 235 - Cycle Particle debug commands
|
|
|
|
Impulse 240 - Give ALL rune sigils
|
|
Impulse 241 - Give rune sigil 1
|
|
Impulse 242 - Give rune sigil 2
|
|
Impulse 243 - Give rune sigil 3
|
|
Impulse 244 - Give rune sigil 4
|
|
Impulse 245 - Give SILVER+GOLD key
|
|
|
|
Impulse 250 - Sharp Shooter
|
|
Impulse 251 - Nail Piercer
|
|
Impulse 252 - Environment Suit
|
|
Impulse 253 - Pentagram of Protection
|
|
Impulse 254 - Ring of Shadows
|
|
Impulse 255 - Quad Damage
|
|
|
|
==============================================================================
|
|
Entity State System
|
|
------------------------------------------------------------------------------
|
|
|
|
When Quake first came out there were strict limitations on how many entities
|
|
could exist and be active at the same time. The quick fix solution to this
|
|
problem was to use the killtarget key so that entities could be removed.
|
|
This was a very powerful feature with very few restrictions on what it
|
|
could affect or destroy at the same time.
|
|
|
|
The idea of the entity state system is to create a way to safely switch
|
|
entities on, off or have then temporarily disabled. This will help prevent
|
|
situations where entity chains are broken or strange errors occur because
|
|
the touch function does not have an entity anymore.
|
|
|
|
There are two ways to change the state of any entity as follows:
|
|
|
|
Method 1
|
|
--------
|
|
Add an extra key on triggering entities (_once, _multi, _relay etc)
|
|
|
|
------------------------------------------------------------------------------
|
|
float estate_trigger; // new entity key command
|
|
= 1; // Switch ON -Added to world
|
|
= 2; // Switch OFF -Removed from world
|
|
= 4; // Disabled -blocks entity functionality
|
|
= 8; // Reset -reset back to spawn state
|
|
= 16; // Aframe -change aframe state
|
|
|
|
The ON state (default) will allow the entity to work as designed, be
|
|
toggled and physically exist as per its setup.
|
|
|
|
The OFF state will block all of the designed functionality and hide
|
|
the entity from interaction with the world/player.
|
|
|
|
The DISABLE state blocks any toggle ability or entity functionality
|
|
and turns off any visual aids like animated textures.
|
|
|
|
The RESET state will revert the entity back to the state it was in when
|
|
starting the map. There are exceptions, it does not work on every entity.
|
|
|
|
The AFRAME state will allow certain entities to change to exact frame
|
|
states. This is only supported on a few entity types at the moment.
|
|
|
|
Method 2
|
|
--------
|
|
Use one of the new triggering entities listed below:
|
|
|
|
------------------------------------------------------------------------------
|
|
trigger_entitystate_on // Switch the target(s) ON
|
|
trigger_entitystate_off // Switch the target(s) OFF
|
|
trigger_entitystate_disable // DISABLE the target(s)
|
|
trigger_entitystate_reset // RESET the target(s)
|
|
trigger_entitystate_aframe // Change AFRAME of target(s)
|
|
|
|
These new entities will affect multiple targets and are designed to show
|
|
(visually) what is happening in the editor by using target lines. They
|
|
work/setup very much like a trigger_relay in the editor.
|
|
|
|
|
|
|
|
==============================================================================
|
|
Starting Point, do you remember me!?!
|
|
------------------------------------------------------------------------------
|
|
|
|
Quake starts in a hub style map with various skill selection portals
|
|
and several episodes gates which the player can complete in any order.
|
|
Once all of the episodes are completed a final area is unlocked and the
|
|
player can beat the final boss and complete the game.
|
|
|
|
When the player starts the game they begin at the 'info_player_start'
|
|
spawn location and once the player has some rune(s) they return to the
|
|
start map using the 'info_player_start2' entity instead.
|
|
|
|
The start2 system always returns the 'trigger_changelevel' portals to the
|
|
same location in the start map. To allow the creation of more detailed
|
|
start map layouts there can now be up to seven 'info_player_start2'
|
|
locations in the start map which are all linked to different returning
|
|
changelevel triggers.
|
|
|
|
By adding the new key 'startspawn2' to a 'trigger_changelevel' entity
|
|
with a unique number (1-7) and then adding the same key and number to an
|
|
'info_player_start2' entity in the returning map, the player will start
|
|
at the new location instead of the default one.
|
|
|
|
When the new key 'startspawn2' is used there is no rune check done
|
|
anymore and the player will spawn in the next or returning map at a
|
|
'info_player_start2' location, the default number is one.
|
|
|
|
With the ability to create hub maps with multiple returning points there
|
|
is now a new 'trigger_rune' entity which can be used to test the players
|
|
inventory for runes and trigger different events. This is a touch
|
|
trigger unlike the func_episode/boss triggers which only happen at the
|
|
beginning when the map is loaded.
|
|
|
|
All player spawn entities will fire any 'target' triggers when used as a
|
|
starting location, this can help fine tune locations ready for the player.
|
|
|
|
When the end intermission screen is active showing map totals for monsters
|
|
killed and secrets found, the intermission camera can cycled around multiple
|
|
'info_intermission' locations. When the player looks through these extra
|
|
cameras any target keys found are triggered.
|
|
|
|
------------------------------------------------------------------------------
|
|
info_player_start // Starting point for players without runes
|
|
string target; // triggered target(s) when used as a client destination
|
|
info_player_start2 // Starting point for players with runes or startspawn2 system
|
|
string target; // triggered target(s) when used as a client destination
|
|
float startspawn2; // Unique spawn location number matching a trigger_changelevel
|
|
|
|
info_player_coop2 // Starting position for coop games
|
|
string target; // triggered target(s) when used as a client destination
|
|
float startspawn2; // Unique spawn location number matching a trigger_changelevel
|
|
info_player_deathmatch // Starting position for deathmatch games
|
|
string target; // triggered target(s) when used as a client destination
|
|
info_stuffcmd // Puts specified message into the console
|
|
string message; // Command eg "r_wateralpha 0.3"
|
|
info_teleport_destination // Destination for trigger_teleport bmodels
|
|
string targetname; // triggered target(s) when used as a client destination
|
|
string target; // fires when the entities is used as a destination
|
|
info_intermission // camera point for the intermission
|
|
string target; // triggered target(s) when used as a viewing camera
|
|
float fog_density; // Fog density (Must be >0 to activate feature)
|
|
string fog_colour; // Fog colours (def=0.1 0.1 0.1)
|
|
float speed; // Fog time to change (def=2s)
|
|
|
|
trigger_changelevel // End of level trigger to change/reload map
|
|
spawnflags NO_INTERMIS = 1; // No Intermission screen, load next map without pause
|
|
spawnflags RESETINV = 2; // Reset player inventory to default (Shotgun+Shells)
|
|
string target; // name of target(s) to trigger before intermission
|
|
string map; // The name of next map (e.g. e1m1) "" == same map
|
|
float startspawn2; // Special unique number (1-7) which must match info_player_start2
|
|
trigger_rune // Triggers when the player has certain runes
|
|
spawnflags E1 = 1; // Player has Rune 1
|
|
spawnflags E2 = 2; // Player has Rune 2
|
|
spawnflags E3 = 4; // Player has Rune 3
|
|
spawnflags E4 = 8; // Player has Rune 4
|
|
float health; // Can be damaged instead of touched
|
|
float angle; // Facing Direction for trigger to work
|
|
string target; // trigger to fire if player has SOME runes
|
|
string noise1; // trigger to fire if player has Rune 1
|
|
string noise2; // trigger to fire if player has Rune 2
|
|
string noise3; // trigger to fire if player has Rune 3
|
|
string noise4; // trigger to fire if player has Rune 4
|
|
|
|
|
|
|
|
==============================================================================
|
|
Entity keys for All entities
|
|
------------------------------------------------------------------------------
|
|
spawnflags STARTOFF = 64; // Starts off and waits for trigger
|
|
// Exceptions; lights, breakables
|
|
string targetname; // toggle state (use trigger ent for exact state)
|
|
float noradiusdmg; // Block all T_RadiusDamage, stops splashdamage
|
|
// can enable triggers to be direct damage only
|
|
|
|
New / Updated MISC entities
|
|
------------------------------------------------------------------------------
|
|
misc_fireball // Lava Balls, can toggle on/off with multiple triggers
|
|
float dmg; // impact damage (default 5)
|
|
float delay; // base time between spawning fireballs (default 3)
|
|
float wait; // random time default 5 (= time + self.delay + (random() * self.wait) )
|
|
misc_drip // Single, continuous drip. Can be toggled on/off
|
|
spawnflags SILENT = 2; // Don't make any drip sound (good for multiple drips)
|
|
spawnflags BLOOD = 16; // Blood red drips instead of default
|
|
spawnflags SLIME = 32; // Slime green dripd instead of default
|
|
float wait = 1; // time between drips
|
|
misc_explobox // 32 x 64 unit exploding box with multiple styles
|
|
spawnflag FLOATING = 32; // Spawns floating, trigger entity to drop it
|
|
string target; // trigger events when box explodes
|
|
float skin_override; // 0=original, 1=rubicon2, 3=plasma, 4=toxic
|
|
string noise; // Explosion sound (def=weapons/r_exp3.wav)
|
|
float health; // Amount of damage required before exploding
|
|
float dmg; // Override radius damage (def=160)
|
|
misc_explobox2 // 32 square exploding box with multiple styles
|
|
spawnflag FLOATING = 32; // Spawns floating, trigger entity to drop it
|
|
string target; // trigger events when box explodes
|
|
float skin_override; // 0=original, 1=rubicon2, 3=plasma, 4=toxic
|
|
string noise; // Explosion sound (def=weapons/r_exp3.wav)
|
|
float health; // Amount of damage required before exploding
|
|
float dmg; // Override radius damage (def=160)
|
|
misc_bob // model that gently moves back and forth
|
|
string mdl; // Name of model (progs/candle.mdl)
|
|
float angle; // direction movement, use "360" for angle 0
|
|
float height; // direction intensity (def=4)
|
|
float count; // direction cycle timer (def=2s, minimum=1s)
|
|
float waitmin; // Speed up scale (def=1) 1+=non linear
|
|
float waitmin2; // Slow down scale (def=0.75)
|
|
float delay; // Starting time delay (def=0, -1=random)
|
|
misc_model / gtk_model // Display Static Mesh Models
|
|
spawnflags MISC_COLLISION = 2;// Bounding box collision enabled (square and no rotation)
|
|
string mdl; // Specify model to load, full path "progs/candle.mdl"
|
|
vector angles; // 'pitch yaw roll' up/down, angle, tilt left/right
|
|
float ideal_yaw; // Setup model with random Y axis rotation
|
|
vector pos1; // used for selection of frame(s) has several setups
|
|
X=0, Y=0, Z=exact frame number
|
|
X->Y, Z=0 : will randomly pick a frame from the X,Y range
|
|
X->Y, Z=-1 : will animate between the X,Y range, forward or backward setup
|
|
vector pos2; // used for the selection of skin(s) has several setups
|
|
X=0, Y=0, Z=exact skin number
|
|
X->Y, Z=0 : will randomly pick a skin from the X,Y range
|
|
misc_shake // Shakes players inside of entity radius
|
|
spawnflags VIEWONLY = 1; // Shakes the view, not the player movement
|
|
float count; // Radius of shake (def = 200)
|
|
float wait; // Duration of shake (def = 2s)
|
|
float dmg; // strength at center (def = 200)
|
|
float sounds; // 1=long rubble (There is no default)
|
|
string noise1; // Starting sound (def = empty sound)
|
|
string noise2; // Finishing sound (def = empty sound)
|
|
misc_spark // Produces a burst of sparks at random intervals
|
|
spawnflags BLUE = 2; // sparks are blue in colour (def=yellow)
|
|
spawnflags PALE = 4; // sparks are pale yellow in colour (def=yellow)
|
|
spawnflags RED = 8; // sparks are red in colour (def=yellow)
|
|
string target; // Used to switch a light on/off in sync
|
|
// The light must start switched off (lights spawnflag=1)
|
|
float wait; // time delay between bursts Def=2, spark once=-1
|
|
float cnt; // number of sparks in burst (0.5 + random() x 0.5) Def=16
|
|
float angle; // direction of sparks to follow, use "360" for 0
|
|
float fixangle; // 1 = Random Y axis direction of sparks
|
|
float speed; // velocity speed of sparks (def=40)
|
|
float height; // random velocity modifier (def=+/-20)
|
|
float sounds; // 1=sparks, 4=silent, 5=custom
|
|
string noise; // custom sound for sparks
|
|
misc_targetdummy // Target practice dummy
|
|
spawnflags KNIGHT = 1; // Small Knight (small bounding box)
|
|
spawnflags WIZARD = 2; // Flying Wizard (tall bounding box)
|
|
spawnflags OGRE = 4; // Large ID ogre (wide bounding box)
|
|
spawnflags HELL_KNIGHT = 8; // Metallic Hell Knight (tall bounding box)
|
|
spawnflags ZOMBIE = 16; // Slow Zombie (small bounding box)
|
|
spawnflags DEMON = 32; // Jumpinh Demon (wide bounding box)
|
|
spawnflags SHALRATH = 64; // Spider like Shalrath (wide bounding box)
|
|
spawnflags SHAMBLER = 128; // Furry Shambler (Massive bounding box)
|
|
string noise1; // Targetnumber tracking weapon used
|
|
string noise2; // Targetnumber tracking enemy distance
|
|
string noise3; // Targetnumber tracking damage
|
|
string noise4; // Targetnumber tracking % efficency
|
|
float wait; // Impact marker removal time (def=2)
|
|
misc_targetnumber // Target number to display ingame
|
|
float pos1; // X=top, Y=bottom digit quantity
|
|
misc_textbook // Custom text books for the player to read
|
|
spawnflags NOMODEL = 1; // Will not use book model + particles
|
|
spawnflags PLINTH1 = 2; // Setup book on top of plinth1 model
|
|
spawnflags PLINTH2 = 4; // Setup book on top of plinth2 model
|
|
spawnflags STORY = 8; // Book is part of a story (use target2)
|
|
spawnflags COLLISION = 16; // Use bounding box collision for plinth
|
|
spawnflags ANGLEONLY = 32; // Will only work when standing infront of entity (angle key)
|
|
spawnflags NOEFFECTS = 128; // No particle or effects active
|
|
string target; // trigger event when book is opened (only works once)
|
|
string target2; // name of story controller (only works with spawnflag)
|
|
float angle; // facing angle for model or direction player must be standing
|
|
vector v_angle; // The viewing angle the book is active (def=30,60,0)
|
|
float exactskin; // skin number for book (1-8, Brown1/2,Green1/2,Blue1/2,Red1/2)
|
|
vector pos1; // Touch trigger minimin size (def=-48 -48 -32)
|
|
vector pos2; // Touch trigger maximum size (def=48 48 32)
|
|
string message; // header message
|
|
string message2; // Body Text 1 (need to add linefeeds)
|
|
string message3; // Body Text 2 (displayed after message2)
|
|
string message4; // Body Text 3 (displayed after message3)
|
|
misc_textstory // Custom text book story chapters
|
|
string targetname; // Name of current chapter
|
|
string target; // Name of next chapter
|
|
string message; // header message
|
|
string message2; // Body Text 1 (need to add linefeeds)
|
|
string message3; // Body Text 2 (displayed after message2)
|
|
string message4; // Body Text 3 (displayed after message3)
|
|
misc_textstoryctrl // Custom text book story controller
|
|
string targetname; // Name of controller for book story
|
|
string target; // Name of first chapter
|
|
|
|
|
|
New / Updated FUNC entities
|
|
------------------------------------------------------------------------------
|
|
func_button // button bmodel with touch/shoot functions
|
|
spawnflags STARTDIS = 32; // button starts in disabled entity state
|
|
float sounds; // 0=steam metal, 1=wooden, 2=metallic, 3=in-out, 4=Silent, 5=Custom
|
|
string noise; // custom sound - open/close
|
|
func_door // Classic func door
|
|
spawnflags STARTOPEN = 1; // door opens in reverse state (moved to dest at spawn)
|
|
spawnflags SPAWNTRIG = 2; // Will spawn trigger around door even if targetname SETUP
|
|
spawnflags DONTLINK = 4; // Touching doors will not link into a single entity
|
|
spawnflags GOLD = 8; // Requires gold key to open
|
|
spawnflags SILVER = 16; // Requires silver key to open
|
|
spawnflags TOGGLE = 32; // Door waits in start and end states for a trigger
|
|
float speed; // Movement speed (default = 100)
|
|
float yaw_speed; // Alternative closing speed (def speed)
|
|
float wait; // Wait before returning (def=3,-1=never)
|
|
float lip; // the map units remaining at the end of a move (def=8)
|
|
float health; // Can be damaged instead of touched
|
|
float dmg; // damage to inflict when blocked (def=2)
|
|
string message; // centerprint message when touched (removed once opened)
|
|
float sounds; // 0=Silent, 1=Stone, 2=Base, 3=Chain, 4=Metal 5=Custom sounds
|
|
float locksounds; // 0=talktalk, 1=fast rattle, 2=slow rattle, 3=long rattle
|
|
string noise; // custom sound - door locked sound (targetname+message)
|
|
string noise1; // custom sound - Moving/Open door (looping)
|
|
string noise2; // custom sound - Stop/Close door
|
|
string noise3; // custom sound - Silver/Gold key try lock
|
|
string noise4; // custom sound - Silver/Gold key OPEN
|
|
float customkey; // custom key required to open door (1-4 supported values)
|
|
string message2; // custom key message (You need the custom key)
|
|
func_door_secret // Two stage movement func_door clone
|
|
spawnflags ONCE_ONLY = 1; // Stays open (basically wait = -1)
|
|
spawnflags 1ST_LEFT = 2; // 1st movement is left of movement direction
|
|
spawnflags 1ST_DOWN = 4; // 1st movement is down
|
|
spawnflags NO_SHOOT = 8; // Cannot shoot the door to open it
|
|
spawnflags ALWAYS_SHOOT = 16; // Will override any other shoot setting!
|
|
string angles; // Allow for custom movement angles (Pitch Yaw Roll)
|
|
float speed; // Override speed (def 50)
|
|
float yaw_speed; // 2nd movement speed (default = speed)
|
|
float t_width; // 1st movement distance to travel
|
|
float t_length; // 2nd movement distance to travel
|
|
float wait; // Override pausing before closing (def 5s)
|
|
float dmg; // damage to inflict when blocked (def=2)
|
|
string message; // centerprint message when touched (removed once opened)
|
|
float sounds; // 1=Medieval, 2=Air base, 3=Ind base (def), 4=Silent, 5=Custom
|
|
float locksounds; // 0=talktalk, 1=fast rattle, 2=slow rattle, 3=long rattle
|
|
string noise; // custom sound - door locked sound (targetname+message)
|
|
string noise1; // custom sound - Open
|
|
string noise2; // custom sound - Opening (looping)
|
|
string noise3; // custom sound - Closing
|
|
func_bob // bmodel that gently moves back and forth
|
|
spawnflags NONSOLID = 4; // Bmodel is non solid (only func_bob)
|
|
float angle; // direction movement, use "360" for angle 0
|
|
float height; // direction intensity (def=4)
|
|
float count; // direction cycle timer (def=2s, minimum=1s)
|
|
float waitmin; // Speed up scale (def=1) 1+=non linear
|
|
float waitmin2; // Slow down scale (def=0.75)
|
|
float delay; // Starting time delay (def=0, -1=random)
|
|
func_bossgate // A NON SOLID bmodel when player has ALL runes
|
|
func_episodegate // SOLID bmodel when player has SELECTED rune(s)
|
|
func_illusionary // A NON SOLID bmodel with texture toggle
|
|
spawnflags AFRAME = 2; // Start with the A frame animated texture
|
|
func_laser // A togglable laser, hurts to touch and can block
|
|
spawnflags SOLID = 2; // will block everything (players/monsters/projectiles)
|
|
spawnflags NODMG = 4; // touch function does no damage
|
|
string message; // message to display when activated
|
|
string message2; // message to display when deactivated
|
|
float waitmin = -1; // Will display the messages only once
|
|
float sounds; // 1=standard laser (def), 4=silent, 5=custom
|
|
string noise1; // Trigger on sound (everytime turned on)
|
|
string noise2; // Trigger off sound (everytime turned off)
|
|
float dmg; // damage to do on touch. default 1
|
|
float alpha; // alpha value will vary +/- 20% (def=0.5)
|
|
float spr_frame; // 1=Yellow, 2=Green, 4=Red, 8=Blue, 16=Purple, 32=Fire, 64=White
|
|
float angle; // Direction of particles to move (def=-2 down)
|
|
float part_limit; // Maximum active quantity of particles (def=25)
|
|
float part_life; // Lifetime of particle (def=2s)
|
|
vector part_velrand; // Random movement of particles (def='4 4 4')
|
|
vector part_vol; // Size of area to spawn particles in (def=bmodel)
|
|
float wakeup_dist; // Distance to wakeup particle emitter (def=768)
|
|
float spawn_base; // Minimum time frame to spawn particles (def=0.1s)
|
|
float spawn_rand; // Random time amount to add to spawning times (def=0.1s)
|
|
func_plat // platform that starts low and travels upwards
|
|
spawnflags MIN_TRIGGER = 4; // Uses the min bounding box (instead of max) to calculate trigger
|
|
spawnflags START_LOWER = 8; // Will start the platform lower regardless of targetname
|
|
spawnflags START_OPEN = 16; // Used for lighting issues, place at bottom position
|
|
spawnflags STARTDIS = 32; // platform starts in disabled entity state
|
|
float sounds; // 1=Base, 2=Medieval (def), 4=Silent, 5=Custom sounds
|
|
string noise; // custom sound - moving (looping)
|
|
string noise1; // custom sound - Stopped
|
|
func_skill // Bmodel that changes based on current skill level
|
|
spawnflags STARTOPEN = 1; // Start in pos2 and await trigger (like func_door)
|
|
float style; // 0 = easy, 1 = normal, 2 = hard, 3 = nightmare
|
|
string message2; // Override message when bmodel is touched/damaged
|
|
string target; // Particle emitters to switch on/off
|
|
string target2; // target(s) to fire when touched/damaged
|
|
float health = 1; // Can be damaged instead of touched
|
|
float angle; // movement direction for trigger event
|
|
float speed; // movement speed (100 default)
|
|
float lip; // lip remaining at end of move (8 default)
|
|
string noise1; // Custom sound - Stop moving (doors/drclos4.wav)
|
|
string noise2; // Custom sound - Start/Loop moving (doors/stndr1.wav)
|
|
string noise3; // Custom sound - Touching (plats/medplat2.wav)
|
|
func_wall // A SOLID bmodel with toggled animated texture
|
|
spawnflags AFRAME = 2; // Start with the A frame animated texture
|
|
spawnflags MODCHECK = 16; // Will remove this entity if THIS mod is active
|
|
|
|
|
|
New / Updated TRIGGER entities
|
|
------------------------------------------------------------------------------
|
|
trigger_count // A counter which triggers target(s) when complete
|
|
string message2; // message to display when complete (ignores NOMESSAGE spawnflag)
|
|
float delay; // time delay to fire final trigger event
|
|
float sounds; // 0=silent,1=Secret,2=talk,3=switch,5=custom,6=secret2
|
|
string noise; // custom sound to play when complete
|
|
trigger_explode // Triggered once entity producing damage + sprite explosion
|
|
float dmg; // explosive radius damage (def=40, -1=no damage)
|
|
float delay; // time delay to explosion
|
|
trigger_fog // Change global fog to new value over time
|
|
float speed; // time (secs) to fade from current to new (-1 = instant)
|
|
float wait; // re-trigger time (-1 = trigger once)
|
|
float fog_density; // new fog density (def=0.5, -1=debug mode)
|
|
float fog_colour; // new fog colours (def=0.1 0.1 0.1)
|
|
trigger_heal // Healing pool/trigger function
|
|
spawnflags BUBBLES = 2; // Spawn bubbles within trigger volume when active
|
|
string target; // trigger once when players stands in trigger (start cycle)
|
|
string target2; // trigger once when healing expires (finish cycle)
|
|
float wait; // Time between healing (default 1s)
|
|
float healamount; // Quantity to heal each time touched (default 10)
|
|
float max_health; // Total amount to heal (default 50, -1=no limit)
|
|
float sounds; // 1=heal_15, 2=heal_25, 3=heal_100, 4=respawn, 5=custom (default 1)
|
|
string noise; // custom sound override
|
|
string message; // centerprints to show when touching trigger
|
|
float lip; // All messages are silent to the player (heal/expire) 1=block heal 2=block all
|
|
string message; // centerprints when players stands in trigger
|
|
string message2; // centerprints when healing function has expired
|
|
float count; // total amount of active bubbles (default 5)
|
|
float height; // Maximum travel distance for bubbles (default trigger size)
|
|
float style; // 1-15 (grey, brown1, blue1=default, green1, red1, brown2, pinkyel, brown3, purp1, purp2, brown4, green2, yellow, blue2, red2)
|
|
float yaw_speed; // spawning rate (def=0.5) for bubbles (speed + random() x speed)
|
|
trigger_hurt // Will hurt any touching entity
|
|
spawnflags BUBBLES = 2; // Spawn bubbles within trigger volume when active
|
|
spawnflags MONSTER_ONLY = 4; // Will only affect monsters
|
|
spawnflags MODCHECK = 16; // Will remove this entity if THIS mod is active
|
|
float dmg; // damage from contact with trigger (def=5)
|
|
float wait; // time between pain contact (def=1s)
|
|
float angle; // Facing Direction for trigger to work, use "360" for angle 0
|
|
float count; // total amount of active bubbles (default 5)
|
|
float height; // Maximum travel distance for bubbles (default trigger size)
|
|
float style; // 1-15 (grey, brown1, blue1=default, green1, red1, brown2, pinkyel, brown3, purp1, purp2, brown4, green2, yellow, blue2, red2)
|
|
float yaw_speed; // spawning rate (def=0.5) for bubbles (speed + random() x speed)
|
|
trigger_clientmsg // Centerprints a message to all clients
|
|
float sounds; // 1=Secret,2=talk,3=switch,4=silent(def),5=custom,6=secret2
|
|
string noise; // Custom sound to play when triggered
|
|
string message; // Message to display when triggered
|
|
trigger_itemrespawnupd // Change the state of respawn flag on items
|
|
spawnflags RESPAWN = 16; // Value of respawn flag to copy to item
|
|
trigger_ladder // Brush based ladder (jump key to climb)
|
|
float angle; // facing direction to use ladder (def = 360)
|
|
float waitmin; // time between climb sounds (def=material)
|
|
float speed; // velocity speed to climb ladder (def=160)
|
|
float sounds; // 1=metal, 2=wood, 3=rope, 4=silent, 5=custom (def=wood)
|
|
string noise1-4; // custom sounds to play when climbing
|
|
trigger_monsterattack // Force a monster to attack another monster
|
|
string target; // Name of monster to affect
|
|
string target2; // Name of entity to attack
|
|
trigger_monsterjump // Push monsters in a certain direction
|
|
spawnflags FLYING = 2; // Will affect flying monsters
|
|
spawnflags SWIMMING = 4; // Will affect swimming monsters
|
|
string target; // targeting entity used for custom direction
|
|
float wait = -1; // Only trigger a monster jump once
|
|
float angle; // direction of push (-2 is down, -1 up)
|
|
float speed; // the speed thrown forward (def 200)
|
|
float height; // the speed thrown upwards (def 200)
|
|
string noise1; // Only works with this type of monster (monster_ogre)
|
|
trigger_drolejump // Special jump trigger for enraged droles
|
|
float wait = -1; // Switch off trigger after being used once
|
|
string target; // Trigger additional targets (trigger once)
|
|
trigger_nomonjump // Stop monsters from using jump attack
|
|
float wait = -1; // Switch off trigger after being used once
|
|
float delay = 0.5s; // Amount of time to delay jump attack by
|
|
float waitmin = 0.1s; // Re-trigger timer to stop touch flooding
|
|
string target; // Trigger additional targets (trigger once)
|
|
string noise1; // Only works with this type of monster (monster_ogre)
|
|
trigger_monsterkill // Will safely kill/remove monsters from maps
|
|
spawnflags DEATH = 16; // Use monster death function instead of removing
|
|
string target; // Pointing to single/group of monsters
|
|
trigger_monsterturret // Temporarily turn a monster into a turret
|
|
string target; // When used, trigger additional events, only trigger once
|
|
float wait = -1; // trigger only works once
|
|
float count; // Random chance to pause; constant = -1, def = 0.25, range = 0 - 1
|
|
string noise1; // Only works with this type of monster (monster_ogre)
|
|
trigger_monstermovespeed // Change the movement speed of monsters
|
|
string target; // Points to the monster(s) to change
|
|
float state; // -1=No movement, 0=Toggle, 1=Free movement
|
|
float wait = -1; // trigger only works once
|
|
trigger_multiple // Variable sized bmodel used once
|
|
spawnflags NOTOUCH = 1; // can only be triggered via other entities
|
|
spawnflags MODCHECK = 16; // Will remove this entity if THIS mod is active
|
|
spawnflags MONSTERS = 32; // Can be touched/triggered by monsters
|
|
float upgrade_axe = 1; // Only trigger if player has got upgrade Axe
|
|
float upgrade_ssg = 1; // Only trigger if player has got upgrade Shotgun
|
|
float upgrade_lg = 1; // Only trigger if player has got upgrade Lightning Gun
|
|
float health; // Can be damaged instead of touched
|
|
float wait; // time between re-triggering
|
|
float angle; // Facing Direction for trigger to work, use "360" for angle 0
|
|
float sounds; // 1=Secret,2=talk(def),3=switch,4=silent,5=custom,6=secret2
|
|
string noise; // Custom sound to play when triggered
|
|
string message; // Message to display when triggered
|
|
trigger_once // Variable sized bmodel used multiple times
|
|
spawnflags NOTOUCH = 1; // can only be triggered via other entities
|
|
spawnflags TRIG_INVIEW = 8; // player has to see trigger (only works on _once)
|
|
spawnflags MODCHECK = 16; // Will remove this entity if THIS mod is active
|
|
spawnflags MONSTERS = 32; // Can be touched/triggered by monsters
|
|
float upgrade_axe = 1; // Only trigger if player has got upgrade Axe
|
|
float upgrade_ssg = 1; // Only trigger if player has got upgrade Shotgun
|
|
float upgrade_lg = 1; // Only trigger if player has got upgrade Lightning Gun
|
|
float health; // Can be damaged instead of touched
|
|
float angle; // Facing Direction for trigger to work, use "360" for angle 0
|
|
float wait; // Always set to -1, its trigger_once!
|
|
float sounds; // 1=Secret,2=talk(def),3=switch,4=silent,5=custom,6=secret2
|
|
string noise; // Custom sound to play when triggered
|
|
string message; // Message to display when triggered
|
|
float t_length; // Activation radius for inview triggers
|
|
trigger_push // Pushes the player and Grenades!
|
|
spawnflags PUSH_ONCE = 1; // Removes itself after firing once
|
|
spawnflags SILENT = 2; // No wind sound for player
|
|
spawnflags NOMONSTERS = 4; // Monsters cannot be pushed by this trigger
|
|
string target; // targetting entity used for custom direction
|
|
float angle; // direction of push (-2 is down, -1 up)
|
|
float angles; // Pitch Yaw Roll (up/down, angle, tilt left/right)
|
|
float speed; // Speed of push direction (def=1000)
|
|
trigger_relay // Triggers target(s) with custom sounds and messages
|
|
spawnflags RANDOM = 2; // Will randomly select between target/target2
|
|
float cnt; // Random amount of time to add to delay
|
|
float wait = -1; // Will only fire targets once
|
|
float waitmin = 0.0-1.0; // % random chance between target/target2
|
|
float sounds; // 1=Secret,2=talk(def),3=switch,4=silent,5=custom,6=secret2
|
|
string noise; // custom sound to play when triggered
|
|
string message; // message to display when triggered
|
|
trigger_secret // Updates map secrets found counter
|
|
spawnflags NOTOUCH = 1; // can only be triggered via other entities
|
|
spawnflags NOMSG = 2; // Remove/Block any trigger secret message
|
|
float health; // Can be damaged instead of touched
|
|
float angle; // Facing Direction for trigger to work, use "360" for angle 0
|
|
float sounds; // 1=Secret(def),2=talk,3=switch,4=silent,5=custom,6=secret2
|
|
string noise; // custom sound to play when triggered
|
|
string message; // message to display when triggered
|
|
trigger_setskill // Sets player skill level (via console)
|
|
spawnflags NOTOUCH = 1; // can only be triggered via other entities
|
|
float health; // Can be damaged instead of touched
|
|
float wait = -1; // Switch off trigger after being touched once
|
|
float angle; // Facing Direction for trigger to work, use "360" for angle 0
|
|
string message; // Skill Level - 0=easy, 1=normal, 2=hard, 3=nightmare
|
|
trigger_touchsound // Plays sounds when touched by the player
|
|
spawnflags WORLDGEO = 8; // Will draw bmodel (not just a trigger)
|
|
spawnflags DRAIN = 16; // Drain effect when trigger_disabled
|
|
float sounds; // 1=Water (def) 2=Slime 3=Lava 4=silent 5=custom
|
|
string noise; // Custom sound for touch/enter trigger
|
|
string noise1; // Custom sound for leave/exit of trigger
|
|
string noise2; // Custom sound for draining of liquid
|
|
float speed; // Time taken to drain liquid (def=1.5)
|
|
float yaw_speed; // Vertical drain speed (def=0.05)
|
|
float super_time; // Time delay playing drain sound (def=0.1s)
|
|
float water_alpha; // alpha value for liquid (override worldspawn)
|
|
trigger_teleport // Teleport player/monsters to target location
|
|
spawnflags PLAYER_ONLY = 1; // Can only be used by players (nothing else)
|
|
spawnflags SILENT = 2; // No teleporter hum sound regardless of state
|
|
spawnflags STARTON = 4; // Will start active regardless of targetname setting
|
|
string target; // Points to info_teleport_destination entity
|
|
float wait = -1; // Switch off trigger after being touched once
|
|
float speed; // forward momentum speed after teleporting (def=300)
|
|
float volume; // teleporter hum sound volume (def=0.5)
|
|
string noise; // custom sound to play when active (must be looped, def=hum1.wav)
|
|
float waitmin; // length of the custom sound (def=3.622 for hum1.wav)
|
|
trigger_void // Garbage collector for bottom of skyboxes
|
|
spawnflags NO_CLIENT = 1; // Ignore clients (anything flagged as a client)
|
|
spawnflags NO_MONSTER = 2; // Ignore monsters (anything flagged as a monster)
|
|
spawnflags NO_AMMO = 4; // Ignore ammo types (all ammo projectile types)
|
|
spawnflags NO_EGG = 8; // Ignore minion eggs (affects shalrath, wraiths)
|
|
spawnflags NO_TEMP = 16; // Ignore temporary ents (gibs, sparks, smoke)
|
|
spawnflags NO_ITEM = 32; // Ignore items (weapons,armor,keys,runes,powerups)
|
|
|
|
|
|
Switchable light entities (state can be toggled via triggers)
|
|
+ Need new compiler for the style key to be linked to the light model entity
|
|
------------------------------------------------------------------------------
|
|
spawnflags LIGHTOFF = 1; // Starts off and waits for trigger
|
|
spawnflags NO_SOUND = 2; // No ambient sound
|
|
spawnflags NO_STATIC = 4; // Will not turn into static entity
|
|
spawnflags NO_EFFECTS = 128; // Will not spawn any particle effects
|
|
light_candle // Variable size, width candle, place 16 units off ground
|
|
spawnflags SHADOW = 8; // Turn ON shadows in DP engine
|
|
float angle = 0, 1-360; // 0=random angle, 1-360=specific
|
|
float height; // Height : 1=short, 2=medium, 3=regular, -1=random
|
|
float t_width; // Width : 1=regular, 2=fat, 3=thin, -1=random
|
|
float lip; // Moves model down to ground plane (default = 16)
|
|
light // Non-displayed light
|
|
light_fluoro // Makes steady fluorescent humming sound
|
|
light_fluorospark // Makes sparking, broken fluorescent sound
|
|
light_globe // Sphere globe light (sprite)
|
|
light_postlight // Light post from Quoth MOD (multiple frames)
|
|
light_tubelight // Tube light from Quoth MOD
|
|
light_fixture1 // Wall light from Rubicon2 MOD
|
|
light_torch_small_walltorch // Short wall torch
|
|
light_flame_small_yellow // Small yellow flame
|
|
light_flame_large_yellow // Large yellow flame
|
|
|
|
|
|
All items (health, armor, weapons, ammo, keys, sigils, artifacts)
|
|
------------------------------------------------------------------------------
|
|
spawnflags RESPAWN = 16; // Can respawn after being picked up
|
|
spawnflag FLOATING = 32; // Spawns floating, trigger entity to drop it
|
|
spawnflags STARTOFF = 64; // Starts off and waits for trigger to spawn
|
|
spawnflags NOEFFECTS = 128; // No particle or effects active on this entity
|
|
float upgrade_axe = 1; // Only spawn if player has got upgrade Axe
|
|
float upgrade_ssg = 1; // Only spawn if player has got upgrade Shotgun
|
|
float upgrade_lg = 1; // Only spawn if player has got upgrade Lightning Gun
|
|
float respawn_effect = 1; // Show particle effect while respawning
|
|
float respawn_time; // Time to wait respawning (=-1 instant spawn)
|
|
float respawn_count; // Total amount of times to respawn an item
|
|
float respawn_trig = 1; // Wait for a trigger event before respawning
|
|
float item_flrcheck = 1; // Check floor below and simulate gravity
|
|
|
|
|
|
Artifacts
|
|
------------------------------------------------------------------------------
|
|
item_artifact_tomeofpower // Tome of Power, custom event trigger
|
|
string target; // Trigger targets to fire when item touched
|
|
string message; // Centerprint message when item is picked up
|
|
string noise; // Custom pickup sound (def=misc/medkey.wav)
|
|
item_artifact_nail_piercer // All nail attacks will travel through monsters
|
|
float cnt; // Duration override of artifact (def=30s)
|
|
item_artifact_sharp_shooter // Reduces the bullet spread of all Shotguns
|
|
float cnt; // Duration override of artifact (def=30s)
|
|
item_artifact_wetsuit // Can breath underwater for 5mins/300secs
|
|
float exactskin; // 0=Orginal,1=Green,2=Brown,3=Aqua,4=Blue
|
|
float cnt; // Duration override of artifact (def=300s)
|
|
item_artifact_envirosuit // No damage from water or slime for 30 seconds
|
|
float exactskin; // 0=Orginal,1=Green,2=Brown,3=Aqua,4=Blue
|
|
float cnt; // Duration override of artifact (def=30s)
|
|
item_artifact_invulnerability // invulnerable to all damage for 30 seconds
|
|
float cnt; // Duration override of artifact (def=30s)
|
|
item_artifact_invisibility // invisible to monsters for 30 seconds
|
|
float cnt; // Duration override of artifact (def=30s)
|
|
item_artifact_super_damage // Player does 4x damage with all weapons
|
|
float cnt; // Duration override of artifact (def=30s)
|
|
|
|
|
|
Ammo Packs
|
|
------------------------------------------------------------------------------
|
|
spawnflag A_LARGE = 1; // Double ammo boxes quantity (different model)
|
|
spawnflag A_LID = 2; // Shells and Spikes have lids (matching rotation)
|
|
float angle = 0 or -1; // Random rotation everytime spawned
|
|
float angle = 1-359; // Specific rotation (lid/frame always match)
|
|
float skin_override = 1-2; // Override world type 1=Base Green, 2=Medieval Wood
|
|
float frame_box = 1-7; // Special frames for rockets, plasma boxes and lids
|
|
|
|
|
|
New Weapons & Items
|
|
------------------------------------------------------------------------------
|
|
weapon_upgrade_axe // Give the player the new Shadow Axe
|
|
weapon_upgrade_ssg // Give the player the new Widowmaker Shotgun
|
|
weapon_upgrade_lg // Give the player the new Plasma Gun
|
|
weapon_shotgun // Give the player the single barrel Shotgun
|
|
item_backpack // Backpack with random/exact amount of ammo
|
|
spawnflags SHELLS; // ammo for SG / SSG / RG
|
|
spawnflags NAILS; // ammo for NG / SNG
|
|
spawnflags ROCKETS; // ammo for GL / RL
|
|
spawnflags CELLS; // ammo for LG
|
|
float count; // random amount of ammo to give (works with spawnflags)
|
|
float ammo_shells; // exact amount of shells
|
|
float ammo_nails; // exact amount of spikes
|
|
float ammo_rockets; // exact amount of rockets
|
|
float ammo_cells; // exact amount of cells
|
|
float armorvalue; // armor shards (gives green armor if none present)
|
|
float armortype = 1; // random amount of armor shards (uses count)
|
|
float exactskin; // 0=Original, 1=green, 2=blue, 3=red, 4=yellow, 5=swamp, 6=white, 7=pale
|
|
item_keyx // Custom key for opening func_door bmodels
|
|
spawnflags CKEY1 = 1; // Key type 1, each key can only be one type
|
|
spawnflags CKEY1 = 2; // Key type 2, this can be any model, not just keys
|
|
spawnflags CKEY1 = 4; // Key type 3
|
|
spawnflags CKEY1 = 8; // Key type 4
|
|
string mdl; // model name to load/display (progs/model.mdl)
|
|
float skin; // Skin number for custom model
|
|
string netname; // XXX Part of pickup string (You got the XXX)
|
|
string message2; // Particle colours (KEYSILVER, KEYGOLD, KEYRED, KEYGREEN, KEYPURPLE, KEYWHITE)
|
|
item_custom // Custom Pickup Item
|
|
string mdl; // model name to load/display (progs/model.mdl)
|
|
float skin; // Skin number for custom model
|
|
string netname; // XXX Part of pickup string (You got the XXX)
|
|
string noise; // Pickup sound (def=weapons/lock4.wav)
|
|
string pos1; // Pickup bounding box minimum (def=-16 -16 -24)
|
|
string pos2; // Pickup bounding box maximum (def=16 16 32)
|
|
float bodyfadeaway; // Model will fade away on pickup
|
|
float part_active; // = 1 Enable particle burst on pickup
|
|
string part_ofs; // Particle Origin Offset (def='0 0 0')
|
|
float part_tcount; // Particle Quantity (def=20)
|
|
float part_life; // Particle Life Time (def=2s)
|
|
float part_style; // 1=yellow, 2=green, 3=red, 4=blue, 5=purple, 6=fire, 7=white
|
|
float part_movetype; // 2=center, 3=up, 4=shockwave, 5=skull, 6=lost, 7=minotaur
|
|
|
|
|
|
New Ambient Sound entities
|
|
------------------------------------------------------------------------------
|
|
ambient_custom_sound // Play a sound on a periodic basis
|
|
spawnflags PLAYONCE = 2; // When triggered plays once
|
|
float volume; // volume of sound (default 1, capped at 1)
|
|
string target; // Sound Triggers (fires everytime sound played)
|
|
string noise; // Sound Primary (ambience/windgust1a.wav)
|
|
string noise1; // Sound Stop (ambience/switch6_off.wav)
|
|
string noise2; // Sound Random (ambience/windgust1b.wav)
|
|
float wait; // random time between sounds (default 20; =-1 no random element)
|
|
float delay; // minimum time between sounds (default 2)
|
|
float waitmin; // Starting time (waitmin + random() x waitmin; =-1 no delay)
|
|
float waitmin2; // Will not silence any playing sound if switching off
|
|
float impulse; // channel on which to play sound (0-7) (0 automatic is default)
|
|
float speed; // attenuation -1=no attenuation, 1=normal (default), 2=idle, 3=static, 4=quiet
|
|
ambient_custom_loop // Custom ambient (must be looped) sound
|
|
float volume; // volume of sound (default 1, capped at 1)
|
|
string noise; // custom sound to play (looped)
|
|
|
|
|
|
Ritual / Hipnotic Rotation entities (as is, no changes)
|
|
------------------------------------------------------------------------------
|
|
rotate_object // Defines a bmodel object to be rotated
|
|
info_rotate // center point for rotatable objects
|
|
func_rotate_entity // Basic rotating object
|
|
spawnflags TOGGLE = 1; // allows the rotation to be toggled on/off
|
|
spawnflags STARTON = 2; // whether the entity is spinning when spawned
|
|
string target; // points to center of rotation entity
|
|
float rotate; // The rate of rotation in degrees
|
|
float speed; // time taken to go from zero to full speed and vice-versa.
|
|
path_rotate // Corner Path for rotate_train
|
|
spawnflags ROTATION = 1; // Rotate train at rate specified by 'rotate'
|
|
spawnflags ANGLES = 2; // Rotate to the angles specified by 'angles'
|
|
spawnflags STOP = 4; // stop train and wait to be retriggered
|
|
spawnflags NO_ROTATE = 8; // stop train rotating when waiting to be triggered
|
|
spawnflag DAMAGE = 16; // Cause damage based on 'dmg'
|
|
spawnflags MOVETIME = 32; // Interpret 'speed' as the length of time to take moving
|
|
spawnflags SET_DAMAGE = 64; // Set all targets damage to 'dmg'
|
|
string event; // trigger when train arrives at path_rotate
|
|
string noise; // sound to play when train stops
|
|
string noise1; // sound to play when train moves
|
|
float speed; // new speed of the train after it reaches corner
|
|
func_rotate_train // moving platforms that players can ride
|
|
string path; // Starts at'path_rotate' position
|
|
float speed; // travel speed (def=100)
|
|
float dmg; // blocking damage (def=0)
|
|
float sounds; // 0=Silent 1=ratchet metal
|
|
string noise; // sound to play when train stops
|
|
string noise1; // sound to play when train moves
|
|
func_movewall // Emulate collision on rotating objects
|
|
spawnflags VISIBLE = 1; // Causes brush to be displayed
|
|
spawnflags TOUCH = 2; // Cause damage when touched by player
|
|
spawnflags NONBLOCKING = 4; // makes the brush non-solid, This is useless if VISIBLE is set
|
|
float dmg; // damage to cause when touched or blocked
|
|
func_rotate_door // Rotating door moving around a point of rotation
|
|
string target; // Points to the rotate_object bmodel entity
|
|
string target2; // Move on spawn to this entity (info_rotate) location
|
|
spawnflags STAYOPEN = 1; // Reopen after closing, stops a once only door from closing if blocked
|
|
float dmg; // Damage caused when blocked (def=2)
|
|
float speed; // Time taken to rotate open/close
|
|
float sounds; // 1=medieval 2=metal 3=base 4=Silent (def=1)
|
|
|
|
|
|
|
|
==============================================================================
|
|
Trains, Chains and Corners
|
|
------------------------------------------------------------------------------
|
|
|
|
There are many good examples of trains in the original ID maps with some
|
|
notable ones being the opening sequence of the Demon door in E1M2 and the
|
|
long wandering platforms in E3M4. These are classics because they show the
|
|
player that the environment can be more than just doors or buttons and with
|
|
a clever use of path corners, things can flow in multiple directions.
|
|
|
|
The original func_train entity has limited options (start on/off), it was
|
|
designed to follow a chain of path corners in loops or pause and stop at
|
|
various corners via different wait states.
|
|
|
|
This MOD has changed the func_train entity so that it can switch paths,
|
|
speed up or slow down, pause at corners, go backwards or forward and
|
|
even be invisible! All these extra options are split across both train
|
|
and corner entities with some being used by monsters.
|
|
|
|
A func_train entity starts as a collection of brushes in the editor which
|
|
eventually become a bmodel located at position 0,0,0 and its origin is an
|
|
offset of what movement has happened since spawning. Bmodels have collision
|
|
on the edges of their bounding boxes and are often used as crushers because
|
|
they have no roll back condition.
|
|
|
|
The new func_trains can be setup with no collision or even have the bmodel
|
|
replaced with a model instead! Once the spawnflag MODEL is enabled the train
|
|
will default to an empty model (invisible) unless the 'mdl' key is defined.
|
|
This can be useful for the new trap shooters entities because they can now
|
|
track moving targets like trains.
|
|
|
|
The original train entity had restrictions (start on/off) based on the
|
|
setting of the 'targetname' key and this has been removed with a new
|
|
spawnflag. The final addition is a new spawnflag to make trains start
|
|
backwards through their entity chains instead of forward.
|
|
|
|
------------------------------------------------------------------------------
|
|
func_train // Moving bmodels, always start on 2nd frame
|
|
spawnflags STARTON = 1; // Start moving straight away if targetname is used
|
|
spawnflags NONSOLID = 2; // No collision or blocking functionality (uses bmodel)
|
|
spawnflags MODEL = 4; // Model with no collision (use mdl key, def=empty model)
|
|
spawnflags TOUCH = 8; // Nonsolid or model trains have touch damage (dmg)
|
|
spawnflags REVERSE = 32; // Start going backward through path_corner chain
|
|
string target; // Name of first path_corner to start at (instant move)
|
|
string mdl; // Specify a model for MODEL mode only (progs/object.mdl)
|
|
float speed; // moving speed (def=100)
|
|
float dmg; // block damage (def=2)
|
|
float sounds; // 0=Silent, 1=Train, 5=Custom sounds
|
|
string noise; // custom sound - stopped
|
|
string noise1; // custom sound - moving (looping)
|
|
|
|
The real power behind the new func_train entity comes from the new options
|
|
available on the path corners and dynamically via triggering entities.
|
|
Essentially trains have options for appearance and movement, while the path
|
|
corners have options for routes, speed and direction.
|
|
|
|
* The new functionality of path_corners is designed to work with func_train
|
|
entities and most of the new feaures will not work with monsters.
|
|
|
|
Path corners are usually setup with a 'targetname' and 'target' key which are
|
|
linked together with other corners into a large single loop. To create route
|
|
variety an alternative route key 'target2' has been added and depending on
|
|
which route logic mode is active can be picked randomly or exactly.
|
|
|
|
As a general rule if a path corner DOES NOT have a second alternative
|
|
'target2' key route defined then there is NO ROUTING LOGIC active. The path
|
|
corner is just forward or backward routes dictated by direction flow.
|
|
|
|
The default route logic mode is RANDOM and when a second route is defined
|
|
the train or monster will randomly pick between 'target' and 'target2' keys.
|
|
When the train is moving backwards the RANDOM logic mode excludes the current
|
|
path direction first and then randomly picks from the remaining two.
|
|
|
|
The second route logic mode is EXACT and initially setup via a spawnflag
|
|
option. When a train or monster arrives at an EXACT route path corner
|
|
they are sent (no choice) in the currently selected route. This mode will
|
|
even send a train back the way it came if selected and always change the
|
|
direction flow to suit the route taken.
|
|
|
|
All links backward are automatically generated when the path corners are
|
|
spawned. If this process has picking the wrong target (check dev arrows) then
|
|
the backward link can be overridden with the 'targetback' key.
|
|
|
|
The downside to path corner networks is that they do not change, they
|
|
are static and cannot be affected by the players actions. Several new keys
|
|
have been added that when setup on firing triggers that target path corners
|
|
will change internal settings.
|
|
|
|
The key 'corner_route' will change the path corner to either RANDOM or EXACT
|
|
routing logic or a specific route number, as long as the route exists.
|
|
|
|
The route number on a path corner can either be changed with the new
|
|
'corner_route' key or when the EXACT mode is active and a trigger is fired
|
|
at the corner, it will cycle around between the routes.
|
|
|
|
The key 'corner_switch' will change the direction of a path corner to
|
|
forward or backward routing or toggle the current value. This will affect
|
|
any train using this corner and reverse its direction.
|
|
|
|
The key 'corner_pause' will change the NOPAUSE spawnflag and 'wait' key
|
|
to instruct any train to either stop or continue on. The new key supports
|
|
exact values (on/off) or toggles the current state.
|
|
|
|
The key 'corner_speed' will change the speed on the target path_corner
|
|
so that trains can be made to move slower or faster when leaving the
|
|
path_corner. Speed value must be greater than 0, default = 100.
|
|
|
|
The key 'corner_event' is only active on the path corner and acts like
|
|
a typical 'target' key on any entity which will trigger target(s) when
|
|
any func_train entity is at the path corner.
|
|
|
|
The 'state' key only works when EXACT logic routing is active and will
|
|
setup an initial value for which route is selected.
|
|
|
|
------------------------------------------------------------------------------
|
|
path_corner // Node based path routing system
|
|
spawnflags EXACT = 1; // Exact route logic (def=random route choices)
|
|
spawnflags INSTANT = 2; // Move instantly to this corner if next destination
|
|
spawnflags REVERSE = 4; // Train direction is reversed for next corner
|
|
spawnflags NOPAUSE = 8; // Train does not pause on this path corner
|
|
string corner_event; // Name of target(s) to trigger when used/touched
|
|
float corner_route; // Change path_corner route (1-3 routes, 4=exact, 5=random)
|
|
float corner_switch; // Change spawnflags REVERSE (-1=NO, 1=YES, 2=Toggle)
|
|
float corner_pause; // Change spawnflags NOPAUSE (-1=NO, 1=YES, 2=Toggle)
|
|
float corner_speed; // Change the speed on the path_corner for trains
|
|
float state; // Starting route (1=forward, 2=alt forward, 3=backward)
|
|
string target; // Targetname of FORWARD route
|
|
string target2; // Alternative FORWARD route
|
|
string targetback; // Override default BACKWARD route
|
|
float wait; // fixed amount of time to pause at corner (=-1 stop)
|
|
float delay; // random amount of time to pause at corner
|
|
float alpha; // Override default for visual arrows (def=0.35)
|
|
float speed; // Override default speed of func_train (def=100)
|
|
|
|
With all the new options, extra routes and dynamically changing parameters it
|
|
is difficult to see what is going on with a path corner network. To help with
|
|
this problem when path corners are spawned and developer mode is active, a set
|
|
of coloured arrows will be drawn showing status, routes and any errors.
|
|
|
|
All forward and backward routes will be displayed in yellow, any secondary
|
|
routes 'target2' will be shown in green and currently selected exact logic
|
|
routes are displayed in white. All errors are shown in red.
|
|
|
|
A path corner with a missing 'target' key or a broken back link will be shown
|
|
with a red arrow pointing upwards. These path corners are labelled as DEADENDS
|
|
and anything arriving at them will be turned around automatically.
|
|
|
|
The helper arrows on path corners is only displayed when developer mode is
|
|
active and can be switched on/off with an impulse command. Check the quake.rc
|
|
file for full details of mod commands.
|
|
|
|
|
|
|
|
==============================================================================
|
|
Traps, Tricks and Tips
|
|
------------------------------------------------------------------------------
|
|
|
|
It is hard to image Quake without some kind of trap, whether it be a spike
|
|
shooter hidden on the ceiling or a large pit of lava waiting for one wrong step!
|
|
There should be something lurking around a corner, high above the player or
|
|
just below waiting to kill the unobservant player.
|
|
|
|
Here is a list of all trap related entities added/updated to the MOD
|
|
------------------------------------------------------------------------------
|
|
trap_grenadeshooter // fires a GRENADE in the direction determined by angle
|
|
spawnflags LARGE = 1; // shoots high damage grenade (Player damage, def=ogre)
|
|
spawnflags TOGGLE = 32; // Trigger will toggle the shooter on/off instead
|
|
spawnflags TRACK = 128; // Will update target entity origin before firing
|
|
string targetname; // toggle state (use trigger ent for exact state)
|
|
string target; // targeting entity used for custom direction
|
|
float angle; // direction for projectile to follow
|
|
float wait; // time between projectiles (def=1s)
|
|
float delay; // random time between projectile (def=0s)
|
|
float speed; // speed (def/sng=500, laser=600, wiz=500, hell=300)
|
|
trap_lightningshooter // fires a LIGHTNING in the direction determined by angle
|
|
spawnflags LARGE = 1; // Cthton Boss Lightning (double damage)
|
|
spawnflags TOGGLE = 32; // Trigger will toggle the shooter on/off instead
|
|
spawnflags TRACK = 128; // Will update target entity origin before firing
|
|
string targetname; // toggle state (use trigger ent for exact state)
|
|
string target; // targeting entity used for custom direction
|
|
float wait; // time between projectiles (def=1s)
|
|
float delay; // random time between projectile (def=0s)
|
|
float dmg; // Damage from lightning strike (def=15, large=30)
|
|
vector pos1; // Random XYZ wobble to source position
|
|
vector pos2; // Random XYZ wobble to target position
|
|
trap_rocketshooter // fires a ROCKET in the direction determined by angle
|
|
spawnflags LAVABALL = 1; // shoots Chthon lava ball (Player damage)
|
|
spawnflags FIREBALL = 2; // shoots Gargoyle fire ball (low damage)
|
|
spawnflags JIM = 4; // shoots Jim flyer rocket (low damage)
|
|
spawnflags TOGGLE = 32; // Trigger will toggle the shooter on/off instead
|
|
spawnflags TRACK = 128; // Will update target entity origin before firing
|
|
string targetname; // toggle state (use trigger ent for exact state)
|
|
string target; // targeting entity used for custom direction
|
|
float angle; // direction for projectile to follow
|
|
float wait; // time between projectiles (def=1s)
|
|
float delay; // random time between projectile (def=0s)
|
|
float speed; // speed (def/sng=500, laser=600, wiz=500, hell=300)
|
|
trap_spikeshooter // fires a SPIKE in the direction determined by angle
|
|
spawnflags SNG = 1; // shoots large spike (SNG damage)
|
|
spawnflags LASER = 2; // shoots laser (Enforcer damage)
|
|
spawnflags WIZARD = 4; // shoots acid spike (Wizard damage)
|
|
spawnflags HELLK = 8; // shoots fire spike (Hell Knight damage)
|
|
spawnflags TOGGLE = 32; // Trigger will toggle the shooter on/off instead
|
|
spawnflags TRACK = 128; // Will update target entity origin before firing
|
|
string target; // targeting entity used for custom direction
|
|
float angle; // direction for projectile to follow
|
|
float wait; // time between projectiles (def=1s)
|
|
float delay; // random time between projectile (def=0s)
|
|
float speed; // speed (def/sng=500, laser=600, wiz=500, hell=300)
|
|
trap_gasshooter // Fires a stream of dangerous particles
|
|
spawnflags STEAM = 1; // White hot clouds of steam (default)
|
|
spawnflags FIRE = 2; // Will add burning debuff to player
|
|
spawnflags POISON = 4; // Will add poison debuff to player
|
|
spawnflags SILENT = 16; // Stream is silent, no loop/off sounds
|
|
spawnflags TOGGLE = 32; // Trigger will toggle the shooter on/off instead
|
|
spawnflags TRACK = 128; // Will update target entity origin before firing
|
|
string target; // targeting entity used for custom direction
|
|
float angle; // direction of streaming particles
|
|
float wait; // time between particles (def=0.05s)
|
|
float waitmin; // auto switch off timer (def=0.5s)
|
|
float speed; // velocity speed (def=200)
|
|
float dmg; // damage from contact with particles (def=1)
|
|
trap_pendlong // Long (192 units) Pendulum
|
|
spawnflags REVERSE = 1; // Starts at frame 12 instead 0
|
|
spawnflags ONESWING = 2; // Will do a single swing (back + forth)
|
|
float dmg; // Damage to do for each contact, def=5
|
|
float waitmin; // Damage throttle to touch function, def=0.5s
|
|
float wait; // amount of time (seconds) before starting swinging
|
|
trap_pendlongx // Long (192 units) Pendulum working on X axis only
|
|
spawnflags REVERSE = 1; // Starts at frame 12 instead 0
|
|
spawnflags ONESWING = 2; // Will do a single swing (back + forth)
|
|
float dmg; // Damage to do for each contact, def=5
|
|
float waitmin; // Damage throttle to touch function, def=0.5s
|
|
float wait; // amount of time (seconds) before starting swinging
|
|
trap_pendshort // Short (128 units) Pendulum
|
|
spawnflags REVERSE = 1; // Starts at frame 12 instead 0
|
|
spawnflags ONESWING = 2; // Will do a single swing (back + forth)
|
|
float dmg; // Damage to do for each contact, def=5
|
|
float waitmin; // Damage throttle to touch function, def=0.5s
|
|
float wait; // amount of time (seconds) before starting swinging
|
|
trap_pendlongx // Short (128 units) Pendulum working on X axis only
|
|
spawnflags REVERSE = 1; // Starts at frame 12 instead 0
|
|
spawnflags ONESWING = 2; // Will do a single swing (back + forth)
|
|
float dmg; // Damage to do for each contact, def=5
|
|
float waitmin; // Damage throttle to touch function, def=0.5s
|
|
float wait; // amount of time (seconds) before starting swinging
|
|
trap_sawbladex // Rotating Saw Blade X Axis only
|
|
string target; // Name of first path_corner to start at (instant move)
|
|
float speed; // Speed to follow path, def=10
|
|
float yaw_speed; // Rotation speed for Saw Blade (def=180)
|
|
float dmg; // Damage to do for each contact, def=4
|
|
float waitmin; // Damage throttle for ON touch function, def=0.1s
|
|
float height; // Damage throttle for OFF touch function, def=1s
|
|
float lip; // Deceleration time; def=2s, =-1 instant stop
|
|
float sounds; // 0=Silent, 1=Woodmill, 5=Custom sounds
|
|
string noise; // Custom sound - stopping, should be short
|
|
string noise1; // Custom sound - moving (looping)
|
|
trap_sawbladey // Rotating Saw Blade Y Axis only
|
|
string target; // Name of first path_corner to start at (instant move)
|
|
float speed; // Speed to follow path, def=10
|
|
float yaw_speed; // Rotation speed for Saw Blade (def=180)
|
|
float dmg; // Damage to do for each contact, def=4
|
|
float waitmin; // Damage throttle for ON touch function, def=0.1s
|
|
float height; // Damage throttle for OFF touch function, def=1s
|
|
float lip; // Deceleration time; def=2s, =-1 instant stop
|
|
float sounds; // 0=Silent, 1=Woodmill, 5=Custom sounds
|
|
string noise; // Custom sound - stopping, should be short
|
|
string noise1; // Custom sound - moving (looping)
|
|
|
|
|
|
|
|
==============================================================================
|
|
Breakable System
|
|
------------------------------------------------------------------------------
|
|
|
|
The breakables system is a way to create interactive environments by opening up
|
|
alternative routes, having sudden destructible monster ambushes and encouraging
|
|
plenty of rewarding player exploration moments.
|
|
|
|
func_breakable - is the primary entity of the breakable system
|
|
func_breakable_spawner - is a point entity clone of func_breakable
|
|
func_breakable_wall - used to fill in the gaps or reveal the details
|
|
trigger_monsterbreak - will trigger a breakable and monster together
|
|
|
|
The breakable system starts with the style key which defines all the defaults
|
|
based on material types. Each style has default rubble bmodels, unique
|
|
break/impact sounds, particle effects and different rubble velocity values.
|
|
|
|
If a different style of breakable is required there are plenty of extra types which
|
|
can be specified by the brkobjects key (10-12=rocks, 20-22=woods, 30-32=glass,
|
|
40-42=metals, 50-54=brick) and more will be added over time.
|
|
|
|
To create your own custom rubble the new bmodels should be setup in sets of 4
|
|
(roughly 8/16/24/32 units in size) and specified with the brkobj1-4 keys.
|
|
There are plenty of example map files under the 'maps/brk' directory which
|
|
can be re-painted to suit your needs. Always create any custom bmodels in
|
|
the map directory so that they can be grouped together with the map files.
|
|
|
|
It is recommended that all new bmodels be compiled with minimum lighting
|
|
using the following command line (tycompiler\light -light 150 %1) The light
|
|
value (150) should be changed to suit the location of the breakable.
|
|
|
|
The breakable system will randomly pick a rubble bmodel from the defined set
|
|
and if something is required to be picked more frequently then duplicate the
|
|
required bmodel across several of the brkobj keys.
|
|
|
|
When a breakable is triggered or the health reaches zero the initial bmodel is
|
|
removed and any targets are fired. This is to make sure that any broken detail
|
|
is present before any rubble is generated. The system will then try
|
|
(up to 4 times) to spawn rubble inside of the original bmodel volume.
|
|
|
|
When a monster is pursuing the player and finds a breakable in the way they
|
|
will try to destroy it using either melee or range attacks. If the breakable
|
|
is for scripted events only then add the extra spawnflags noshoot and nomonster
|
|
to prevent any unscripted interactions.
|
|
|
|
When a breakable is damaged and not destroyed the system shows feedback to the
|
|
player with specially coloured particles instead of the default white ones
|
|
used for world geometry. All of the default material styles have particle
|
|
colours setup and this can be fine tuned with the entity key pos1.
|
|
|
|
Breakables inside of liquids (underwater) will break apart at the same velocity
|
|
as anywhere else in the map and can be fine tuned either by changing the
|
|
velocity keys (brkvelbase, brkveladd) or by changing the gravity (brkgravity)
|
|
of rubble so that it falls slower.
|
|
|
|
The default velocity for the rubble is a directional force and this is based on
|
|
the angle of impact or the triggering entity. The angle of velocity can be
|
|
changed by moving around the trigger so that the rubble can fall in more visually
|
|
impressive ways. The system also supports the angle key on the original bmodel and
|
|
this will override any directional force. The angle key set to 1-360 will produce
|
|
a flat (XY) velocity, an up direction is like a fountain from the center and a
|
|
downward angle is without any XY movement. Depending on where the player is in
|
|
relation to the breakble when it falls apart, a special angle key setup might
|
|
produce better visual results.
|
|
|
|
There are plenty of monsters that have jumping abilities and their collision
|
|
detection does not always produce perfect results. It is possible to setup
|
|
breakables with an extra touch function that will detect jumping monsters and
|
|
break apart if a flying monster hits them and the (brktrigjump) key active.
|
|
|
|
Breakable entity details
|
|
------------------------------------------------------------------------------
|
|
func_breakable // Spawn breakable objects from a volume
|
|
spawnflag START_OFF = 1; // Will wait for trigger to spawn
|
|
spawnflag NOSHOOT = 2; // Cannot be damaged or shot, trigger only
|
|
spawnflag EXPLOSION = 4; // trigger sprite/particle explosion
|
|
spawnflag SILENT = 8; // No initial breakage sound
|
|
spawnflag DAMAGE = 16; // Spawning rubble can damage (def = 2, use dmg key for touch damage)
|
|
spawnflag NOMONSTER = 32; // monsters cannot damage this breakable and/or spawning rubble will not damage monsters
|
|
spawnflag TRIGGERONLY = 64; // Can only be triggered, no direct damage
|
|
spawnflag NOROTATE = 128; // Spawning rubble has No Y rotation
|
|
string target, target2; // Additional targets to fire when breakable is dead/used (only used once)
|
|
float style; // pre-defined sound/model types - 1=rock, 2=wood, 3=glass, 4=metal, 5=brick, 6=ceramic, 10=custom
|
|
float brksound; // Initial breaking sound type (override style default)
|
|
float brkimpsound; // Impact sound type (override style default)
|
|
float brkobjects; // Breakable object model type (10-15=rocks, 20-22=woods, 30-32=glass, 40-43=metals, 50-54=brick, 60=ceramic)
|
|
string noise; // Initial breaking sound (unique sound file)
|
|
string noise1 - noise4; // Impact sounds (unique sound files, must have 1 defined)
|
|
string brkobj1 - brkobj4; // Breakable objects (unique models, must have 1 defined)
|
|
float health; // amount of damage to take before breaking (def 1)
|
|
float count; // minimum quantity to spawn (def 4)
|
|
float cnt; // random quantity to spawn (def 4) =-1 no random qty
|
|
float dmg; // explosive radius damage (emits from center of func object)
|
|
vector pos1; // x=start particle colour, y=random range, z=quantity
|
|
vector brkvelbase; // Base amount for velocity of broken parts (def based on style)
|
|
vector brkveladd; // Random additions for velocity of broken parts (def based on style)
|
|
vector brkavel; // Amount of breaking object angle velocity (def 200)
|
|
float brkfade; // Fade time before rubble fades away (def 4+random()*4)
|
|
float brkmondmg; // Damage multiplier for monster damage against breakable
|
|
float brktrigjump; // Trigger if damaged by jumping monster attack
|
|
float brktrigmissile; // Trigger if damaged by - rocket/grenade/shalball
|
|
float brkgravity; // Change the gravity for rubble, useful for underwater (Value = 0-1)
|
|
func_breakable_spawner // Spawn breakable objects from a single point
|
|
vector brkvol; // Spawning volume vector for breakable point entity
|
|
// Always starts off, has all the same parameters as func_breakable, can fire multiple times
|
|
func_breakable_wall // Switchable bmodel for breakable setups with optional collision
|
|
spawnflag START_ON = 1; // Will spawn visible and wait for trigger
|
|
spawnflag SOLID = 2; // Will block player/monster movement
|
|
spawnflags FADEOUT = 4; // Will fade out after a certain amount of time if visible!
|
|
string targetname; // must be defined otherwise will be removed
|
|
float wait = -1; // trigger once only, cannot toggle state
|
|
float waitmin; // random time to wait before fading out
|
|
trigger_monsterbreak // Trigger breakable and monster together
|
|
spawnflag NODELAY = 1; // No delay between monster and breakable trigger
|
|
spawnflag WAKEANIM = 2; // Will do special wakeup animation when triggered
|
|
string targetname; // activating trigger points to this
|
|
string target; // points to func_breakable (single target)
|
|
string target2; // points to a monster (single target)
|
|
float wait; // time before breakable is triggered (def 0.2)
|
|
|
|
|
|
|
|
==============================================================================
|
|
Particle System
|
|
------------------------------------------------------------------------------
|
|
|
|
The particle system is OFF by default because it can easily bring a Quake
|
|
engine to its knees with over use. When the system is active it will create
|
|
a large bank (1000) of particles to minimize entity thrashing. All requests
|
|
for a particle goes through a single system that does all the work fetching,
|
|
re-using and configuring all particles ready for use.
|
|
|
|
The system comes in two different flavours (pixel sprites and alpha textures)
|
|
which are automatically switched between when the correct engine is detected.
|
|
This allows for one map to work with multiple clients and minimize the
|
|
effort involved in getting a map looking good with multiple engines.
|
|
|
|
There are several predefined particle setups which can be triggered via a
|
|
'misc_particle' entity or if they are not right a new particle can be setup
|
|
with the template system that copies all of its settings to any particle
|
|
entity that targets it when the map starts.
|
|
|
|
Quake does come with a small set of builtin particle effects that are used
|
|
throughout the game by monsters or map specific events. Using the new entity
|
|
'misc_builtineffects' the ID effects can easily be triggered.
|
|
|
|
The Darkplaces engine uses alpha texture particles which allows for one of
|
|
the best kind of particles, smoke! The new entity 'misc_smoke' is designed
|
|
to take advantage of that with multiple colours, different spread patterns
|
|
and velocity directions.
|
|
|
|
Particle entity details
|
|
------------------------------------------------------------------------------
|
|
misc_particle // Spawn a particle emitter
|
|
string target; // destination of effect (self -> target)
|
|
string target2; // name of a particle template
|
|
string message; // Particle style string (upper case) leave blank for custom
|
|
ARMOR1, ARMOR2, ARMOR3, BOOK, ELECTRIC, FCIRCLE,
|
|
FLAMES, FLAMEL, KEYGOLD, KEYSILVER, MEGAH, PENT,
|
|
PORTAL, QUAD, SIGIL, SKILL, SRING, SUIT
|
|
misc_particletemplate // A particle emitter template
|
|
string targetname; // target name reference for misc_particle entities
|
|
string spr_name1; // sprite name (def=progs/s_bubble_blue1.spr)
|
|
string spr_name2; // sprite name (def=progs/s_bubble_wht.spr)
|
|
string spr_name3; // sprite name (def=progs/s_dotmed_grey.spr)
|
|
float part_movetype; // Movetype of particle (def=8, check defs.qc)
|
|
float part_limit; // Maximum amount of particles to emit at once (def=25)
|
|
float part_life; // Life time (seconds) particle is active (def=1)
|
|
vector part_ofs; // Offset from emitter (def='0 0 0' XYZ vector)
|
|
float part_veltype; // Velocity type 1=random, 2=circular 3=center (def=3)
|
|
vector part_vel; // Velocity direction (def='8 8 8' XYZ vector)
|
|
vector part_velrand; // Extra random velocity (requires part_veltype=1)
|
|
float part_velrot; // Velocity rotation (Y axis only)
|
|
vector part_vol; // Spawning volume around emitter (XYZ vector)
|
|
float wakeup_dist; // Wake up distance for particle emitter (def=1024)
|
|
float wakeup_timer; // How often to check distance time (def=1)
|
|
float spawn_base; // Spawn rate time - base value (def=0.1)
|
|
float spawn_rand; // Spawn rate time - random adjustment (def=0)
|
|
float dpp_name; // DP particle effect name in effectinfo.txt file (def="")
|
|
float dpp_wait; // DP particle re-trigger timer (def=0.1)
|
|
float dpp_rnd; // DP particle random multiplier for time (def=0)
|
|
float dpp_vel; // Direction of DP particles to move towards (XYZ)
|
|
misc_particle_burst; // A particle emitter that fires a burst
|
|
string part_ofs; // Particle Origin Offset (def='0 0 0')
|
|
float part_tcount; // Particle Quantity (def=20)
|
|
float part_life; // Particle Life Time (def=2s)
|
|
float part_style; // 1=yellow, 2=green, 3=red, 4=blue, 5=purple, 6=fire, 7=white
|
|
float part_movetype; // 2=center, 3=up, 4=shockwave, 5=skull, 6=lost, 7=minotaur
|
|
misc_builtineffects // Spawn a builtin particle effect
|
|
string target; // destination of effect (self -> target)
|
|
float wait; // time between firing of effect (def=0)
|
|
float delay; // random time between firing of effect (def=0s)
|
|
float count; // type of effect to fire
|
|
0=TE_SPIKE (def), 1=TE_SUPERSPIKE, 2=TE_GUNSHOT,
|
|
3=TE_EXPLOSION (sprites), 4=TE_TAREXPLOSION (purple ver)
|
|
5=TE_LIGHTNING1 (Shambler ver), 6=TE_LIGHTNING2 (Player ver)
|
|
7=TE_WIZSPIKE, 8=TE_KNIGHTSPIKE, 9=TE_LIGHTNING3 (boss ver)
|
|
10=TE_LAVASPLASH (boss wakeup), 11=TE_TELEPORT (sparkles)
|
|
misc_smoke // special smoke model with multiple skins
|
|
spawnflags NODPMDL = 2; // Do not draw smoke model in DP engine
|
|
spawnflags NODPFX = 4; // Do not draw any DP particle effects
|
|
string target; // targeting entity used for custom direction
|
|
float exactskin; // 0=Gunsmoke, 1=Soot, 2=Steam, 3=Toxin, 4=Plague, 5=Incense, 6=Lithium, 7=Flames
|
|
vector angles; // 'pitch roll yaw' up/down, angle, tilt left/right
|
|
float alpha; // Smoke is generally transparent (def=0.65)
|
|
float wait; // time between generation of smoke particles (def=0.1, min=0.01)
|
|
float delay; // random amount of time delay ( time = wait + delay x random() )
|
|
float height; // Percentage of velocity distance travelled (def=1, range=0-1+)
|
|
|
|
|
|
|
|
==============================================================================
|
|
AD Monsters
|
|
------------------------------------------------------------------------------
|
|
monster_spider (30/75HP) // Erratic arachnids in brown/green variety
|
|
monster_voreling (30/60HP) // Ankle biting, crazy jumping, mini shalraths
|
|
monster_swampling (30/60HP) // Ankle biting, poisonous three legged terrors
|
|
monster_lostsoul (30HP) // Floating skull with a ram/bite attack
|
|
monster_dguard (35HP) // Medieval style soldier replacement (melee only)
|
|
monster_eel (35HP) // Fast moving sneaky fish firing plasma (range only)
|
|
monster_boil (40HP) // Proximity mine with tarbaby like explosive damage
|
|
monster_zombiek (60HP) // Sword wielding zombie, fast movement (melee only)
|
|
monster_dcrossbow (75HP) // Chainmail knight with crossbow (sniper ability)
|
|
monster_gargoyle (120HP) // Large flying fireball throwing imp (range only)
|
|
monster_gaunt (120HP) // Flying plasma wielding harpy creature (range only)
|
|
monster_scorpion (80/120HP) // Brown/green range stinger and black jumping surprise
|
|
monster_skullwiz (120HP) // Tall wizard with fast skull missiles and teleportation
|
|
monster_hogre (200HP) // Ogre Hunter model replacement (extra melee)
|
|
monster_hogremac (200HP) // Alternative ogre model with mace weapon
|
|
monster_hogreham (300HP) // Heavy metal ogre model with hammer attack
|
|
monster_dknight (250HP) // Hell Knight model replacement (classic silver)
|
|
monster_wraith (300HP) // Semi-transparent wraith with debuff attacks
|
|
monster_dfury (400HP) // Fast sword wielding knight with magic attacks
|
|
monster_dsergeant (400HP) // Blue Flail knight with homing missiles
|
|
monster_drole (500HP) // Large tentacle tank with rocket/melee attacks
|
|
monster_minotaur (500HP) // Giant hulk with fast plasma/poison attacks
|
|
monster_golem (500HP) // Massive mountain of rock with large fists and feet
|
|
|
|
monster_army_rocket (45HP) // Red armour heat seeking rocket soldiers
|
|
monster_army_grenade (60HP) // Green armour Z aware grenade firing soldiers
|
|
monster_army_plasma (75HP) // Blue armour high damage plasma gun soldiers
|
|
monster_pyro (100HP) // Yellow armour flamethrowing enforcer (burn defuff)
|
|
monster_fumigator (100HP) // Green armour Posion Spewing enforcer (poison debuff)
|
|
monster_jim (50/100HP) // Fast moving flying laser/rocket robot
|
|
monster_defender (100HP) // Dual wielding SSG (melee range) and GL (mid range)
|
|
monster_eliminator (120HP) // Blue armour double firing plasma gun enforcers
|
|
monster_centurion (120HP) // Flying hover board plasma gun enforcers
|
|
monster_freddie (500HP) // Slow moving weapons platform with ogre on top
|
|
monster_seeker (500HP) // Large industrial mech with heavy range weapons
|
|
|
|
monster_boglord (1200HP) // Special shambler with projectile attacks only
|
|
monster_eidolon (2500HP) // Giant rock demon with summon/projectile attacks
|
|
monster_firetopboss (---) // Custom Chthon encounter with infighting ability
|
|
monster_nour (2000HP) // Large white wizard with summon/projectile attacks
|
|
monster_chthon (---) // Custom Chthon encounter with multiple wave setup
|
|
monster_shub/_shubupsd (---) // Custom Shub-Niggurath encounter with wave setup
|
|
|
|
|
|
==============================================================================
|
|
BASE AD Monsters
|
|
|
|
monster_army (_rocket, _grenade, _plasma)
|
|
------------------------------------------------------------------------------
|
|
Low health cannon fodder with various weapon upgrades and different coloured
|
|
armour to fill up early base levels with. The rocket version has a small amount
|
|
of target seeking, the grenades are Z aware and the plasma is high damage!
|
|
|
|
monster_enforcer (_defender, _pyro, _eliminator, _centurion)
|
|
------------------------------------------------------------------------------
|
|
A large battalion of dual shock defenders, high burst plasma eliminators, floating
|
|
high centurions and firey flamethrowing enforcers. With a gradually inclining range
|
|
of HP bars and jigsaw like large pack encounter designs, this is a formidable
|
|
front line defence force!
|
|
|
|
monster_jim
|
|
------------------------------------------------------------------------------
|
|
A fast moving flying robot that can easily avoid players projectile attacks
|
|
with a special upward move and still keep firing lasers or rockets. The speed
|
|
of the projectiles and movement are linked to skill levels which can be a
|
|
challenge when encountered in large packs.
|
|
|
|
monster_freddie
|
|
------------------------------------------------------------------------------
|
|
A Large ogre fused to a rusty industrial exoskeleton, with various weapons
|
|
grafted to both arms forcing it to open cans of food with its teeth! Either
|
|
has a Super Nail gun or a Laser Chain gun as a primary weapon.
|
|
|
|
monster_seeker
|
|
------------------------------------------------------------------------------
|
|
A large grey looking robot with a distinct whirling sound and sparking noise
|
|
if one of its arms is missing. Can be setup to start with a blue shield and
|
|
wait to be activated with a trigger event. Either arm can be removed on
|
|
spawn and used as a way to balance different skill levels. Has a powerful
|
|
melee attack when both arms are attached and can lose arms during combat.
|
|
Will switch from lasers to fast moving plasma bolts for higher skill
|
|
levels and has a slow moving rocket attack for distance.
|
|
|
|
|
|
==============================================================================
|
|
CRITTER AD Monsters
|
|
|
|
monster_lostsoul
|
|
------------------------------------------------------------------------------
|
|
The lost soul is inspired by the equilivant monster from Doom and features
|
|
all the same attacks and abilities. A floating skull which wanders around,
|
|
rushes the player if seen and can be deadly if within melee range as it
|
|
has a nasty frenzy like bite attack.
|
|
|
|
monster_scorpion
|
|
------------------------------------------------------------------------------
|
|
The brown/green (default) scorpion is very slow moving and prefers to throw
|
|
acid coloured spikes at the player. A low health enemy with an easily dodged
|
|
range attack, but a lethal claw melee attack.
|
|
|
|
The black version is much tougher on health and will jump extremely quickly
|
|
at the player with a deadly poison tail sting. The players health will be
|
|
reduced by 50% each sting and gradually restore back 5HP per second afterwards.
|
|
Best setup in very dark corners ready for any unsuspecting players, produces a
|
|
very distinct idle sound designed to induce fear of attack.
|
|
|
|
monster_spider
|
|
------------------------------------------------------------------------------
|
|
The brown (default) spider is melee only and will erratically move towards
|
|
the player with a tame jump attack for close encounters. The green (large)
|
|
spider prefers to stay at range and spit at the player with 3 blobs of acid.
|
|
The spit function will track the player and is ZAware.
|
|
|
|
The spider bite is low damage 1-3 per 5 frames with a special frenzy attack. This
|
|
can be lethal in large groups as the spider also pushes forward at the same time.
|
|
The jump attack is 5-10 damage, half that of a dog. Can be setup to spawn on
|
|
the ceiling and triggered to drop on unobservant players.
|
|
|
|
monster_voreling / monster_swampling
|
|
------------------------------------------------------------------------------
|
|
Mini three legged ankle biting vorelings are fast moving with a small sized
|
|
jump and frenzy bite attack for snacking. They speed up and slow down while
|
|
they run and will often pause if at distance from the player. They have very
|
|
low health and are designed to be encountered in packs. Can be setup to spawn
|
|
on the ceiling and triggered to drop on unobservant players.
|
|
|
|
There is a large spawnflag option which spits projectiles and stays at distance
|
|
and the swamplings are all poisonous with their bite/projectile attacks.
|
|
|
|
|
|
==============================================================================
|
|
MEDIEVAL AD Monsters
|
|
|
|
monster_boil
|
|
------------------------------------------------------------------------------
|
|
A slow moving explosive enemy that can do massive amounts of damage to other
|
|
monsters. Can be setup to walk around, be hobbled to the ground or staked
|
|
to a wall. Has a spit projectile if stationary to attract attention to
|
|
itself and be a warning to players. Best dealt with by a NG/SNG because its
|
|
a small bounding box or use a GL for one hit explosions.
|
|
|
|
monster_dcrossbow
|
|
------------------------------------------------------------------------------
|
|
A cautious range unit with high damage bolts and a strong melee attack. The
|
|
bolts are variable speed based on skill level and are designed to force the
|
|
player to strafe or seek cover. The health bar can easily be taken down
|
|
with NG+ weapons, but SG\SSG will struggle because of reload times.
|
|
|
|
When the player is within melee range the unit will use the crossbow as a club
|
|
and as soon outside of range straight away fire a bolt for a quick hipshot.
|
|
Unlike most monsters in Quake the crossbow knight will not immediately follow
|
|
the player but rather wait and keep distance.
|
|
|
|
It is recommended to place these units around sharp corners (90 degree)
|
|
or up on ledges overlooking areas. The crossbow knight does not follow the
|
|
same way as other quake units and needs to be in position first.
|
|
|
|
monster_dguard
|
|
------------------------------------------------------------------------------
|
|
A medieval version of the 'monster_army' unit with low health and knight like
|
|
melee damage. Good for starting areas and general filler to existing groups.
|
|
Designed to be an easy introduction to the Death Brigade with fast movement.
|
|
|
|
monster_dknight
|
|
------------------------------------------------------------------------------
|
|
A model upgrade with more polygon detail, plenty of extra idle animations and
|
|
all the standard ID hell knight attacks.
|
|
|
|
monster_dfury
|
|
------------------------------------------------------------------------------
|
|
A mid level monster with shalrath/demon like health bar that has five melee
|
|
attacks and two very quick firing magic attacks. Designed to jump close to
|
|
the player and use multiple quick sword swings for high damage. Will use
|
|
two types of magic attacks at mid to long range that have slow build up
|
|
animations that fire variable speed projectiles dependant on skill level.
|
|
|
|
The fury knight will easily work its way through a crowded room doing extra
|
|
damage against other monsters and using its over head smash attack for
|
|
visual affect. It has a high pain threshold for small impact damage, but
|
|
can be dealt with easily with SNG/GL/RL heavy attacks.
|
|
|
|
monster_dsergeant
|
|
------------------------------------------------------------------------------
|
|
A fast moving Blue Flail knight with shalrath homing missiles and heavy
|
|
single strike melee attacks. This unit will constantly charge the player if the
|
|
Z height is similar and if different keep send deadly homing missiles instead.
|
|
This is a mid level monster that is highly mobile, crushing up close and
|
|
will easily tear a path through any crowd to get its target.
|
|
|
|
The homing missiles have the same speed regardless of skill level. Originally
|
|
these were setup identical to the Shalrath with easy/normal/hard being different
|
|
to the nightmare skill level. During testing it felt like the missiles were
|
|
going faster than usual because the blue knight moves around so quick, this
|
|
is the reason the missiles use only one speed.
|
|
|
|
monster_drole
|
|
------------------------------------------------------------------------------
|
|
A large hulking tank of tentacles with a tendency to get angry at the player
|
|
with sometimes deadly results. This monster has two phases, the first is to
|
|
keep mid range distance and fire rapidly increasing fireballs. There is no
|
|
strafe mode but instead the monster will physically turn and walk around
|
|
to the side waiting for the cooldown on range attacks.
|
|
|
|
The second phase is the enrage at 70% health the drole will switch to a
|
|
very fast run attack (demon/fiend speed) and constantly try to pummel the
|
|
player with a wall of tentacles. The second phase is really to apply the
|
|
pressure to the player and make them panic.
|
|
|
|
monster_gargoyle
|
|
------------------------------------------------------------------------------
|
|
A tough flying unit with a single range attack (fireball) that prefers to keep
|
|
its distance from ground enemies. The fireball does 25% damage compared to a
|
|
player rocket with direct and splashdamage to encourage infighting.
|
|
|
|
The gargoyle will always try to maintain height above its enemies to reduce
|
|
melee damage and works best when in areas with high ceilings. If the enemy
|
|
is within close range, will fire rapid shots instead.
|
|
|
|
monster_gaunt
|
|
------------------------------------------------------------------------------
|
|
A large Cthulhu like Pterodactyl with an creepy calling sound and the ability
|
|
to transmute electricity into fast moving bolts of plasma. Will always hover
|
|
above the player and can be setup in a perch state for surprise attacks.
|
|
|
|
monster_golem
|
|
------------------------------------------------------------------------------
|
|
A slow moving mountain of rock with giant fists and large feet that can easily
|
|
destroy any enemies that get too close. The Golem has several strong melee
|
|
attacks, one large radius ground shockwave attack and the ability to throw a
|
|
large volley of bone breaking rock debris.
|
|
|
|
monster_hogre
|
|
------------------------------------------------------------------------------
|
|
A new model with greater detail and some armour pieces similar to the Hell
|
|
Knight. There are three different types; chainsaw, mace and hammer. Each
|
|
ogre can be upgraded (skin) with a new spawnflag that gives an extra HP boast.
|
|
|
|
The chainsaw version has an extra thrust attack which does +150% damage. The
|
|
mace ogre does high single strike attacks and the hammer version has a special
|
|
shockwave attack which lifts everything nearby off the ground.
|
|
|
|
monster_minotaur
|
|
------------------------------------------------------------------------------
|
|
An extremely tall demonic beast with a powerful melee attack and very fast
|
|
plasma/poison attack. This monster has two phases likes the drole and will
|
|
eventually switch to a very fast charge/melee attack when enraged.
|
|
|
|
monster_shambler (by Renier "Skiffy" Banninga)
|
|
------------------------------------------------------------------------------
|
|
This set of files are designed as a new HD replacement for the default Quake
|
|
Shambler.MLD which I've always found to be one of the weakest models in the game.
|
|
made monster models in the game. This model was created with the purpose of
|
|
finally giving the shambler its visual fidelity deserving of such a large
|
|
and terrifying brute while still staying within the limits of Vanilla quake.
|
|
|
|
The original Shambler has 284 triangles which is less than half the amount used
|
|
on the dog model. The new Shambler uses 992 triangles which is a little less than
|
|
double the amount used on the beloved dog. He uses a 256 x 256 texture which conforms
|
|
to GL texture size standards unlike the 308 x 115 texture size of the original.
|
|
Considering his overall size and rarity in the game these upgrades specs would
|
|
work just fine in the original game. It is still within the limits of stock Quake.
|
|
|
|
Animation has been completely redone and was made in such a way to work with the
|
|
originals size and AI motions. Some fixes have been done for the movement and
|
|
attack animations. He no longer hits high up in the air for the walking slash
|
|
attacks and should have most if not all sliding feet issues removed or reduced.
|
|
His overhead smash has also been shifted one frame to sync up more with the damage
|
|
trigger and features a less floaty death animation. Overall it should read a bit
|
|
more solid.
|
|
|
|
h_shams.mdl has also received a visual makeover to be consistent with the updated
|
|
shambler model. I tried to make it look a little more mauled to help convey that
|
|
a serious amount of damage was required to gib the Shambler. There also supports
|
|
Arcane Dimensions custom gib models adding 2 feet and claw gore meshes when
|
|
gibbing the shambler.
|
|
|
|
The Boglord (larger shambler) and re-colouring of skins for monster+gibs
|
|
was done by me (simonoc) after receiving the final models from Renier.
|
|
|
|
monster_wraith
|
|
------------------------------------------------------------------------------
|
|
A semi-transparent flying apparition with multiple range attacks that will
|
|
try to stay out of melee range and high above the player as much as possible.
|
|
The primary attack is a hitscan burning debuff that does direct fire damage
|
|
and then sets fire to the player with damage over time afterward.
|
|
|
|
The burning debuff will ignores all armour and is deflected by the Pentagram
|
|
of Protection and Environment Suit. The screen will flash orange every second
|
|
and a loud heartbeat sound can be heard in background while the health is
|
|
being drained. The player can use health packs to instantly stop the burning.
|
|
|
|
Once the debuff has been applied to the player the wraith will start attacking
|
|
with a burst of bones (nails) to keep the player pre-occupied with dodging.
|
|
|
|
The wraith is designed to be a support class monster that lurks in the
|
|
background helping an existing encounter by disorientating the player with
|
|
large fire attacks and slow burning damage.
|
|
|
|
monster_zombiek
|
|
------------------------------------------------------------------------------
|
|
A slow moving zombie with a knight sword in one hand and counter balance club foot.
|
|
Has a small leap forward when close to the player and requires large hit damage to die.
|
|
Designed to be lurking in the shadows or part of a pack of monsters as it is good
|
|
at applying pressure to an already active combat situation. Can start/spawn
|
|
lying down and then be triggered later.
|
|
|
|
|
|
==============================================================================
|
|
Entity Keys that affect All monster
|
|
------------------------------------------------------------------------------
|
|
spawnflag AMBUSH = 1; // Ambush (will only wakeup if see the player)
|
|
spawnflag SILENT_WAKEUP = 8; // No wakeup sight sound
|
|
spawnflag SPAWN_NOIDLE = 16; // no idle sounds (cupboard monster)
|
|
spawnflag SPAWN_NOGFX = 32; // No spawn effect or sound
|
|
spawnflag SPAWN_DELAY = 64; // Will wait for trigger before spawning
|
|
spawnflag SPAWN_ANGRY = 128; // When spawning will be angry at the player
|
|
string target; // Primary target field for trigger events
|
|
string target2; // Secondary target field (additional fires)
|
|
string angrytarget; // target name to get angry at when spawning
|
|
string deathtarget; // Alternative target to fire when dying
|
|
float health = 1-x; // Override default health defined in QC
|
|
float exactskin = 0-x; // Override default skin (no range check)
|
|
float upgrade_axe = 1; // Only spawn if player has got upgrade Axe
|
|
float upgrade_ssg = 1; // Only spawn if player has got upgrade Shotgun
|
|
float upgrade_lg = 1; // Only spawn if player has got upgrade Lightning Gun
|
|
float nomonstercount = 1; // Will not count towards map monster total
|
|
float infightextra = 1-x; // Damage multiplier when infighting
|
|
float pain_ignore = 1; // Will ignore pain frame when infighting
|
|
float noinfighting = 1; // Will ignore all requests to infight
|
|
float no_liquiddmg = 1; // Blocks all liquid (slime/lava) damage checks
|
|
float no_zaware = 1; // Z Aware projectiles will be disabled
|
|
float bboxtype = 1-10; // 1=Tiny,4=Short,5=Tall,7=Wide,8=Giant,10=Massive
|
|
float gibondeath = 1; // Will always explode into gibs on death
|
|
float bodyfadeaway = 1-x; // Time in seconds before body/head fades away
|
|
float movespeed = -1/0/1; // =-1 no movement(turret), =0/1 free movement
|
|
float turrethealth = 0-1; // % of HP when monster turret is released
|
|
string turrettarget; // Target(s) to fire when turret % HP is released
|
|
float nospawndamage = 1; // Does not kill anything inside spawn area
|
|
float attack_instant = 1; // No pause when waking up to attack
|
|
float attack_sniper = 1; // Will wake up at any range (def=1000)
|
|
|
|
Boil
|
|
------------------------------------------------------------------------------
|
|
spawnflag HANGING = 2; // On wall upside down by spikes
|
|
spawnflag HOBBLED = 4; // On floor fixed down by spikes
|
|
|
|
Crossbow Knights
|
|
------------------------------------------------------------------------------
|
|
spawnflag SNIPER = 2; // no max range limitations for enemies (sniper mode)
|
|
spawnflag TRACKING = 4; // Will velocity track enemies (harder to dodge)
|
|
|
|
Eels and Fish
|
|
------------------------------------------------------------------------------
|
|
spawnflag FISHSMALL = 2; // Smaller version, less HP
|
|
spawnflag LIQBLOCK = 4; // Liquid surfaces block wakeup/sight lines
|
|
|
|
Gargoyles
|
|
------------------------------------------------------------------------------
|
|
spawnflag GARGOYLESTATUE = 2; // Convert monster to a stone statue (frozen)
|
|
spawnflag GARGOYLEPERCH = 4; // Will start in a perch position (active)
|
|
|
|
Gaunt
|
|
------------------------------------------------------------------------------
|
|
spawnflag PERCH = 4; // Will start in a perch position
|
|
|
|
Golem
|
|
------------------------------------------------------------------------------
|
|
spawnflag STATUE = 2; // Will start as a statue, wait for trigger
|
|
spawnflag MELEEONLY = 4; // Melee and Stomp only attacks, no rockstorm range
|
|
|
|
Hunter Ogres (chainsaw/mace/hammer) & ID Ogre
|
|
------------------------------------------------------------------------------
|
|
spawnflag HOGREMETAL = 4; // Hunter Ogre - upgraded metal skin and +HP
|
|
spawnflag OGREGREEN = 4; // ID ogre only - Green skin and HP+
|
|
|
|
Minotaur
|
|
------------------------------------------------------------------------------
|
|
spawnflag MINIONS = 4; // Spawn gargoyle minions (def=3)
|
|
|
|
Vanilla Ogre / Fishing Ogre
|
|
------------------------------------------------------------------------------
|
|
spawnflag VANILLA_NAIL = 2; // Fires 4 nails in a random pattern
|
|
spawnflag GREEN = 4; // Green leather armour and +HP
|
|
|
|
Robots (Freddie, Jim and Seeker)
|
|
------------------------------------------------------------------------------
|
|
spawnflag FREDLASER = 2; // Freddie Ogre - Upgrade SNG to Lasers
|
|
spawnflag JIMROCKET = 4; // Robot Jim - fires rockets and has lower health
|
|
spawnflag SEEKERSHIELD = 4; // Seeker - Start with blue shield on
|
|
float state; // Seeker - 0=Both arms, 1=Left, 2=Right
|
|
|
|
Shalrath (Vore)
|
|
------------------------------------------------------------------------------
|
|
spawnflag MINIONS = 4; // Spawn little (purple) vorelings
|
|
|
|
Skull Wizards
|
|
------------------------------------------------------------------------------
|
|
spawnflag GUARDIAN = 2; // Green robes and deadly explosive poison attack
|
|
spawnflag MINIONS = 4; // Black robes and spawns lost souls (def=5)
|
|
float bodyphased; // Starting body state; 0=solid, 1=invisible
|
|
float bodystatic; // Prevents skull wizard from teleporting
|
|
float height; // Maximum teleport destination height (def=96)
|
|
float distmin; // Minimum amount for teleport distance (def=256)
|
|
float distmax; // Random amount to add to teleport distance (def=512)
|
|
|
|
Stone Statues (Knights/Hell Knights)
|
|
------------------------------------------------------------------------------
|
|
spawnflag MON_STATUE = 2; // Convert monster to a stone statue (frozen)
|
|
spawnflag MON_NOTFROZEN = 4; // Will start not frozen (works with statue)
|
|
string targetname; // Will not spawn if targetname is missing
|
|
float frame = x; // Statue pose (default knight=44, hellknight=73)
|
|
vector pos1; // X->Y, Z=0 ; Idle animation range to pick from
|
|
|
|
Stone Statue Lightning (Hell Knights)
|
|
------------------------------------------------------------------------------
|
|
spawnflag STATUE = 2; // Setup with stone statue skin/resistance
|
|
string target; // Target for electricity beam to go towards
|
|
string target2; // Trigger to fire when electricity stopped
|
|
vector pos1; // Offset to start lightning (def=20 0 24)
|
|
vector pos2; // Random offset to lightning (def=30 0 2)
|
|
vector pos3; // Animation Pose during Lightning (98 103 1)
|
|
float t_length; // random wobble to electricity target origin (0=def 5)
|
|
float dmg; // Touch damage from electricity (0=def 5)
|
|
|
|
Scorpions
|
|
------------------------------------------------------------------------------
|
|
BLACKSTINGER = 4; // HP+ and deadly bleeding HP debuff attack
|
|
|
|
Spiders, Swamplings and Vorelings
|
|
------------------------------------------------------------------------------
|
|
spawnflag LARGE = 2; // Spit projectile, increased HP, different skin
|
|
spawnflag ONCEILING = 4; // Will start on the ceiling and drop when wakeup
|
|
|
|
Tarbaby (Spawn)
|
|
------------------------------------------------------------------------------
|
|
spawnflag LESSJUMP = 4; // Will not constantly jump around
|
|
|
|
Wizards (Scrags)
|
|
------------------------------------------------------------------------------
|
|
spawnflag ALWAYSABOVE = 4; // Will always maintain height above enemies
|
|
float height; (def=128) // Height to stay above player reqs=ALWAYSABOVE
|
|
|
|
Wraiths
|
|
------------------------------------------------------------------------------
|
|
spawnflag SCORPIONS = 2; // Will Spawn brown/green scorpions (Def=3)
|
|
spawnflag SPIDERS = 4; // Will Spawn brown/green spiders (Def=5)
|
|
|
|
Zombies (Regular, Poison (Mummy) and Knight)
|
|
------------------------------------------------------------------------------
|
|
spawnflag CRUCIFIED = 1; // Zombies - start in crucified position (regular only)
|
|
spawnflag AMBUSH = 2; // Ambush (will only wakeup if see the player)
|
|
spawnflag ONFLOOR = 4; // Zombies - spawn lying on the floor
|
|
float angle = 0, 1-360; // 0=random lying down angle, 1-360=specific
|
|
float aflag = 1-2; // Lying down orientation 1=Front 2=Back
|
|
|
|
Mini Bosses
|
|
------------------------------------------------------------------------------
|
|
spawnflag NOUR_BOSS = 2; // Version with waves and minion spawns
|
|
spawnflag BOGLORD_STRONG = 2; // More Health and Skin 2 (Fire)
|
|
|
|
==============================================================================
|
|
Monster Infighting Groups (Can only be change in QC)
|
|
------------------------------------------------------------------------------
|
|
Soldiers _army, _army_rocket, _army_grenade, _army_plasma
|
|
Enforcers _enforcer, _defender, _eliminator, _centurion, _fumigator, _pyro,
|
|
Demons _demon1, _drole, _minotaur, _boglord
|
|
Dogs _dog
|
|
Fish _fish, _eel
|
|
Robots _jim, _seeker
|
|
Knights _knight, _dguard, _dcrossbow
|
|
Hell Knights _hell_knight, monster_dknight
|
|
Knight Captains _dfury, monster_dserg
|
|
Stone _hell_knight (statue), _knight (statue), _golem, _eidolon
|
|
Ogre _ogre, _hogre, _hogremac, _hogreham, _freddie
|
|
Arachnids _shalrath, _spider, _scorpion, _swampling, _voreling, _wraith
|
|
Shambler _shambler
|
|
Tarbaby _tarbaby, _boil
|
|
Wizard _wizard, _gargoyle, _gaunt, _lostsoul, _skullwiz, _nour
|
|
Zombie _zombie, _zombiek, _mummy
|
|
Boss _boss, _oldone, _chthon, _shub
|
|
|
|
|
|
==============================================================================
|
|
Minion System
|
|
------------------------------------------------------------------------------
|
|
|
|
This system is designed to work with specific monsters and spawn certain
|
|
monsters, this is not a global function for all monsters. The idea is to create
|
|
a support class, a strong HP monster that stays at mid range and keep spawning
|
|
low health monsters that will create more chaotic encounter groups.
|
|
|
|
Minion spawning monsters on their own are easy to deal with, their spawning is
|
|
slow and they rarely use any kind of direct damage attack. It is essential that
|
|
these monsters are placed at the edge of encounters so that any monsters they
|
|
do spawn can join the encounter easily.
|
|
|
|
The primary concern with the minion spawning mechanic is that the player can
|
|
eventually run out of ammo and the endless spawning can eventually crash the
|
|
engine. This is solved by two mechanics, a limit to how many minions are
|
|
active at once and trigger events based on quantity spawned so far.
|
|
|
|
The defaults can be changed by adding the following keys to the monster:
|
|
------------------------------------------------------------------------------
|
|
float minion_maxcount; // Maximum amount of active minions (def=3/5)
|
|
float minion_maxtrigger; // Spawn total for trigger event (def=5)
|
|
string miniontarget; // targetname string for trigger event
|
|
|
|
Once the monster reaches the maximum active amount of minions it will go into
|
|
wandering phase of maintaining distance from the enemy and start using a
|
|
range attack so that it looks like it is doing something. The spawning monster
|
|
will not spawn any minions unless it can see the player.
|
|
|
|
The default throw parameters are quiet low (100-150 speed) and this can be
|
|
problem if the minion spawner is on a high ledge. The following parameters will
|
|
change the default throw distance and fix any stuck problems.
|
|
|
|
How to change the throw speed of the ball/egg
|
|
------------------------------------------------------------------------------
|
|
float minion_throwspeed; // Forward speed of ball to be thrown (def=100)
|
|
float minion_throwextra; // Random forward momentum (def=50)
|
|
float minion_throwside; // Random +/- sideways momentum (def=50)
|
|
|
|
If the player gets within melee range there is a chance that the
|
|
minion spawner will revert to the monsters original base attack. This can be
|
|
blocked with the following parameter, otherwise it is on by default.
|
|
|
|
------------------------------------------------------------------------------
|
|
float minion_baseattack = -1; // Block base attack within melee range
|
|
|
|
Every minion spawning monster requires a special entity that must be added to
|
|
the map so that all the correct precache files are loaded. If the entity is not
|
|
present when the monster tries to spawn a minion, a dev console message will be
|
|
displayed and the monster will not spawn anything!
|
|
|
|
Here is a list of the new entities (named after spawning monster)
|
|
|
|
------------------------------------------------------------------------------
|
|
monster_minotaurminion // Gargoyle precache for the Minotaur
|
|
monster_shalrathminion // Vorling precache for the shalrath
|
|
monster_skullwizminion // Lost Soul precache for the Skull Wizard
|
|
monster_wraithminion // Spider precache for the wraith
|
|
monster_wraithminion2 // Scorpion precache for the wraith
|
|
|
|
The spawning minion function only works against the player, if the monster is
|
|
caught infighting it will revert to its typical range attacks until the
|
|
fight is over. Then it will switch back to the player and resume spawning.
|
|
|
|
Here is a list of available minion spawning monsters:
|
|
|
|
monster_minotaur
|
|
------------------------------------------------------------------------------
|
|
A large hulking demonic beast with strong melee attacks, large feet and the
|
|
chance to throw very fast plasma or poison bolts at the player. The dark brown
|
|
version loves to summon gargoyles out of thin air!
|
|
|
|
monster_shalrath
|
|
------------------------------------------------------------------------------
|
|
A classic ID monster with three legs, a rough voice and a tendency to throw
|
|
homing missiles that love to chase players around tiny pillars. The purple
|
|
skinned version loves to throw baby voreling eggs at the player!
|
|
|
|
monster_skullwizard
|
|
------------------------------------------------------------------------------
|
|
A turret like dead wizard that fires powerful skull rockets and when
|
|
the player is too close will teleport away to another location. The black
|
|
robe version loves to summon lost souls out of thin air!
|
|
|
|
monster_wraith
|
|
------------------------------------------------------------------------------
|
|
A semi-transparent flying apparition with multiple range attacks that will
|
|
try to stay out of melee range and high above the player. The dark skinned
|
|
version loves to throw baby scorpion/spider eggs at the player!
|
|
|
|
|
|
==============================================================================
|
|
Bounding Boxes
|
|
------------------------------------------------------------------------------
|
|
|
|
The quickest way to make the game harder is to change the size of bounding
|
|
boxes! All projectiles are tested against a monsters bounding box, which cannot
|
|
be rotated, is always centered on the model and XY square in dimensions because
|
|
of the rotation problem.
|
|
|
|
To view ingame bounding boxes use the console command 'r_showbboxes'
|
|
|
|
All of the bounding boxes have been tweaked to fit the models better, this
|
|
will affect how monsters move around (collision) and especially weapons that
|
|
have large projectile spread patterns (ie shotguns)
|
|
|
|
The monsters break down into several categories based on model sizes and
|
|
location (ground/air/water). Flying monsters usually have taller bounding
|
|
boxes so they can be hit easier from the ground.
|
|
|
|
Name Category ( Min ) ( Max ) ( IDmin ) ( IDMax ) Diff
|
|
------------------------------------------------------------------------------
|
|
Lost Soul Tiny -16 -16 -24 16 16 16 --- --- --- -- -- --
|
|
Scorpion Tiny -16 -16 -24 16 16 16 --- --- --- -- -- --
|
|
Spider (Br/Gr) Tiny -16 -16 -24 16 16 16 --- --- --- -- -- --
|
|
Voreling Tiny -16 -16 -24 16 16 16 --- --- --- -- -- --
|
|
Swampling Tiny -16 -16 -24 16 16 16 --- --- --- -- -- --
|
|
|
|
Dog Dog -20 -20 -24 20 20 16 -32 -32 -24 32 32 40 **
|
|
Fish Fish -16 -16 -24 16 16 24 -16 -16 -24 16 16 24
|
|
Eel Fish -16 -16 -16 16 16 16 --- --- --- -- -- --
|
|
|
|
Player Short -16 -16 -24 16 16 32 -16 -16 -24 16 16 32
|
|
Knights Short -16 -16 -24 16 16 32 -16 -16 -24 16 16 40 **
|
|
Army (SG/GL/RL/PG) Short -16 -16 -24 16 16 32 -16 -16 -24 16 16 40 **
|
|
Death Guard Short -16 -16 -24 16 16 32 --- --- --- -- -- --
|
|
Crossbow Knight Short -16 -16 -24 16 16 32 --- --- --- -- -- --
|
|
Jim (Robot) Short -16 -16 -24 16 16 32 --- --- --- -- -- --
|
|
Zombie Short -16 -16 -24 16 16 32 -16 -16 -24 16 16 40 **
|
|
Zombie Knight Short -16 -16 -24 16 16 32 --- --- --- -- -- --
|
|
Boil Short -16 -16 -24 16 16 32 --- --- --- -- -- --
|
|
|
|
Enforcer (LZ/GL/PG) Tall -16 -16 -24 16 16 40 -16 -16 -24 16 16 40
|
|
Pyro Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Fumigator Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Centurion Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Hell Knight Tall -16 -16 -24 16 16 40 -16 -16 -24 16 16 40
|
|
Death Knight Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Fury Knight Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Sergeant Knight Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Gargoyles Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Gaunt Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Skull Wizard Tall -16 -16 -24 16 16 40 --- --- --- -- -- --
|
|
Tarbaby Tall -16 -16 -24 16 16 40 -16 -16 -24 16 16 40
|
|
Wizard (Scrag) Tall -16 -16 -24 16 16 40 -16 -16 -24 16 16 40
|
|
|
|
* All monsters below this point have HULL2 bounding boxes against the world
|
|
|
|
Name Category ( Min ) ( Max ) ( IDmin ) ( IDMax ) Diff
|
|
------------------------------------------------------------------------------
|
|
Demon Wide -24 -24 -24 24 24 40 -32 -32 -24 32 32 64 **
|
|
Ogre Wide -24 -24 -24 24 24 40 -32 -32 -24 32 32 64 **
|
|
Hunter Ogre Wide -24 -24 -24 24 24 40 --- --- --- -- -- --
|
|
Mace Ogre Wide -24 -24 -24 24 24 40 --- --- --- -- -- --
|
|
Hammer Ogre Wide -24 -24 -24 24 24 40 --- --- --- -- -- --
|
|
Shalrath Wide -24 -24 -24 24 24 40 -32 -32 -24 32 32 64 **
|
|
Wraith Wide -24 -24 -24 24 24 40 -16 -16 -24 16 16 32 **
|
|
|
|
Drole Giant -24 -24 -24 24 24 64 --- --- --- -- -- --
|
|
Freddie Giant -24 -24 -24 24 24 64 --- --- --- -- -- --
|
|
Minotaur Giant -24 -24 -24 24 24 64 --- --- --- -- -- --
|
|
Seeker Giant -24 -24 -24 24 24 64 --- --- --- -- -- --
|
|
Golem Golem -24 -24 -24 24 24 72 --- --- --- -- -- --
|
|
Shambler Massive -32 -32 -24 32 32 64 -32 -32 -24 32 32 64
|
|
|
|
BogLord Boss -32 -32 24 32 32 80
|
|
Boss (Chthon) Boss -128 -128 -24 128 128 256
|
|
Eidolon Boss -32 -32 -24 32 32 128
|
|
Nour Boss -24 -24 -24 24 24 40
|
|
Oldone Boss -160 -128 -24 160 128 256
|
|
Chthon Boss -80 -80 -24 80 80 256
|
|
Shub-Niggurath Boss -96 -96 -24 96 96 192
|
|
|
|
|
|
Quake maintains two types of collision, projectiles and world (geometry).
|
|
The QC can set the projectile collision (see above) but the world collision
|
|
is done via the engine. There are currently 3 types of world collision
|
|
called Hull 0, 1 and 2.
|
|
|
|
Any monster that is wider than 32 units will have a Hull 2 collision which
|
|
is the size of a shambler. This is why ogres, demons and shalraths often
|
|
cannot fit through small doorways even though it looks like they can!
|
|
|
|
|
|
|
|
==============================================================================
|
|
New Weapons
|
|
------------------------------------------------------------------------------
|
|
|
|
Shadow Axe (SA)
|
|
------------------------------------------------------------------------------
|
|
The new axe is a visual upgrade (blood soaked model) which does +75% more
|
|
damage, kills zombies and deals with low level monsters easily. To some
|
|
the axe has always been a novelty weapon, but there are plenty of Quake
|
|
players who love to dance around monsters cutting them down to size!
|
|
|
|
Weapon Dmg 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ 10+ 11+ 12+ 13+ 14+ 15+
|
|
Axe 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300
|
|
New Axe 35 70 105 140 175 210 245 280 315 350 385 420 455 490 525
|
|
|
|
Monster Health Axe Hits Time NAxe Hits Time Diff
|
|
----------------------------------------------------
|
|
Dog 25 40 +2 1.0s 35 +1 0.5s +0.5s
|
|
Army 35 40 +2 1.0s 35 +1 0.5s +0.5s
|
|
Knight 75 80 +4 2.0s 105 +3 1.5s +0.5s
|
|
Wizard 85 100 +5 2.5s 105 +3 1.5s +1.0s
|
|
Ogre 200 200 +10 5.0s 210 +6 3.0s +2.0s
|
|
----------------------------------------------------
|
|
HKnight 250 260 +13 6.5s 280 +8 4.0s +2.5s
|
|
Demon 300 300 +15 7.5s 315 +9 4.5s +3.0s
|
|
Shalrath 400 400 +20 10.0s 420 +12 6.0s +4.0s
|
|
Shambler 600 600 +30 15.0s 630 +18 9.0s +6.0s
|
|
|
|
With the increased damage, many of the low level monsters are now one hit
|
|
wonders and several of them will now play long pain animations when attacked
|
|
with the new axe to allow the player time to get in extra 2nd/3rd fatal hit.
|
|
(dcrossbow, enforcer, hogre, knight, ogre, wizard do long pain animations)
|
|
|
|
The primary benefit of the new axe is against zombies, one hit will often
|
|
knock them down to the ground and another will deal with them on the ground.
|
|
This also applies to all bodies lying on the floor, so observant players can
|
|
preempt traps by dealing with bodies on the floor first.
|
|
|
|
The Widowmaker (WM)
|
|
------------------------------------------------------------------------------
|
|
This is an upgrade to the Super Shotgun (SSG) and does +50% more damage, but
|
|
uses +50% more shells (3 per shot). The WM spread pattern is identical to the
|
|
SSG and there are now 21 pellets instead of 14 fire every 7 frames.
|
|
|
|
Weapon Pellets Dmg Total 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ 10+ 11+
|
|
SG 6 4 24 48 72 96 120 144 168 192 216 240 264
|
|
SSG 14 4 56 112 168 224 280 336 392 448 504 560 616
|
|
WM 21 4 84 168 252 336 420 504 588 672
|
|
|
|
Monster Health SSG Shots Ammo Time WM Shots Ammo Time Diff
|
|
---------------------------------------------------------------
|
|
Army 35 56 +1 2 0.7s 84 +1 3 0.7s -.-s
|
|
Zombie 60 56 -- - -.-s 84 +1 3 0.7s +0.7s
|
|
Knight 75 112 +2 4 1.4s 84 +1 3 0.7s +0.7s
|
|
Wizard 80 112 +2 4 1.4s 84 +1 3 0.7s +0.7s
|
|
Gargoye 120 168 +3 6 1.4s 168 +2 6 1.4s +0.7s
|
|
Ogre 200 224 +4 8 2.8s 252 +3 9 2.1s +0.7s
|
|
HKnight 250 280 +5 10 3.5s 252 +3 9 2.1s +1.4s
|
|
---------------------------------------------------------------
|
|
Demon 300 336 +6 12 4.2s 336 +4 12 2.8s +1.4s
|
|
Shalrath 400 448 +8 16 5.6s 420 +5 15 3.5s +2.1s
|
|
Shambler 600 616 +11 22 7.7s 672 +8 24 5.6s +2.1s
|
|
|
|
The WM is designed to be effective against mid range monsters (demon/shalrath)
|
|
and less effective against single low level monsters (knight/wizard). This gives
|
|
the player more high damage weapon/ammo choices (shells/nails) and extra time to
|
|
deal with more powerful enemies quickly. With the same spread pattern as the SSG
|
|
and higher damage output the RG can easily deal with multiple small monsters.
|
|
|
|
One side effect of the higher damage (84) is that the weapon can effectively
|
|
kill zombies with one hit and is an ideal early weapon alternative to the GL/RL.
|
|
|
|
The greatest concern with the WM is the ammo consumption, especially if the
|
|
player is missing many shots or catching the sides of bounding boxes. Extra
|
|
boxes of shell ammo should be setup to delay spawn (via extra keys) if the
|
|
player has the item in their inventory.
|
|
|
|
Plasma Gun (PG)
|
|
------------------------------------------------------------------------------
|
|
This is an upgrade to the Lightning Gun with extra (splash) damage, the
|
|
ability to plasma climb walls and no instant death if fired in water.
|
|
|
|
Weapon Direct Splash Speed Refire Damage
|
|
---------------------------------------------------
|
|
Lightning 30 0 - 0.10 300
|
|
AD Plasma 45 20 900 0.20 325
|
|
---------------------------------------------------
|
|
Doom 5-40 0 875 0.086 58-465
|
|
Doom3 16 0 700 0.125 128
|
|
Quoth 0 50 1000 0.20 250
|
|
|
|
|
|
==============================================================================
|
|
Setting up New Weapons
|
|
------------------------------------------------------------------------------
|
|
|
|
This MOD contains several ways to give or take weapon upgrades from the
|
|
player during the various stages of the map loading process.
|
|
|
|
Stage 1 - TEMP1 in Quake.rc
|
|
------------------------------------------------------------------------------
|
|
|
|
The temp1 variable in quake.rc has the following parameters:
|
|
|
|
8192 Turn ON Axe Upgrade, +75% dmg, gib zombies
|
|
16384 Turn ON SSG Upgrade, +50% dmg, uses 3 shells
|
|
32768 Turn ON LG Upgrade, Plasma projectiles + Splash Damage
|
|
|
|
Enabling these parameters DOES NOT give the player the upgrade weapon,
|
|
it will upgrade the original weapons in any map. For example, if the player
|
|
finds the Super Shotgun in a map it will automatically be upgraded to the
|
|
Widowmaker Shotgun instead.
|
|
|
|
These options are designed for players who want to enjoy maps which don't
|
|
have the weapon upgrades entities present, like for example ID maps.
|
|
|
|
Stage 2 - Worldspawn
|
|
------------------------------------------------------------------------------
|
|
|
|
The worldspawn entity of a map has the following parameters:
|
|
|
|
upgrade_axe Upgrade Axe -1=remove, 1=enable
|
|
upgrade_ssg Upgrade Super Shotgun -1=remove, 1=enable
|
|
upgrade_lg Upgrade Lightning Gun -1=remove, 1=enable
|
|
|
|
Not every map is designed for the upgraded weapons and by using the
|
|
worldspawn entity, mappers can decide if the upgraded weapons are given
|
|
or taken away when the map is started.
|
|
|
|
These worldspawn parameters will OVERRIDE the temp1 key and any
|
|
existing inventory if the player has come from another map. These
|
|
parameters will also change the server flags for original weapons
|
|
to be upgraded and triggers for special spawn conditions.
|
|
|
|
Stage 3 - Worldspawn II
|
|
------------------------------------------------------------------------------
|
|
|
|
The worldspawn entity also has the following parameters:
|
|
|
|
give_weapons Bit flag for which weapons to give to the player
|
|
take_weapons 1=SG, 2=SSG, 4=NG, 8=SNG, 16=GL, 32=RL, 64=LG (excludes Axe)
|
|
|
|
These worldspawn parameters are designed to give exact weapon loadouts
|
|
to a new player starting a map. There are also parameters for ammo, health
|
|
and armour to customize the player inventory further.
|
|
|
|
The take weapon command will remove upgraded weapons if the base weapon is
|
|
removed by these parameters. For example, if the map removes the SSG, then
|
|
the Widowmaker upgrade will be removed at the same time.
|
|
|
|
Stage 4 - Impulse Commands
|
|
------------------------------------------------------------------------------
|
|
|
|
These impulse commands are available when developer mode is enabled:
|
|
|
|
Impulse 200 Upgrade Axe (alias = "upgaxe")
|
|
Impulse 205 Upgrade SSG (alias = "upgssg")
|
|
Impulse 210 Upgrade LG (alias = "upglg")
|
|
|
|
These impulse commands are toggles that will add/remove the relevant
|
|
weapon upgrade. These weapons are not part of impulse 9 which is the
|
|
general cheat function used for testing.
|
|
|
|
|
|
==============================================================================
|
|
Ammo Resistance
|
|
------------------------------------------------------------------------------
|
|
|
|
I always thought it was odd that the Shambler had 50% resistance to all
|
|
rockets. This was never visually shown or hinted at in the game besides the
|
|
manual warning about it! I am sure there were plenty of players who never
|
|
realized this 'feature' existed.
|
|
|
|
I am sure some people will scream that a RPG style resistance system has
|
|
no place in Quake and maybe they are right, but unfortunately there is
|
|
an exception to the rule, the Shambler!
|
|
|
|
In an effort to resolve this visual problem a few monsters (high tier)
|
|
now have ammo resistance to encourage the player to use different weapons
|
|
and manage / collect more ammo types. This is also something a designer
|
|
needs to be aware of when balancing a map involving these monsters.
|
|
|
|
The Shell and Nail visual resistance is shown with a mixture of red and
|
|
grey impact particles, a ricochet sound, various smoke chunks flying off
|
|
in random directions and the monster screaming in pain.
|
|
|
|
The Rocket and Cell visual resistance is shown with a small puff of smoke,
|
|
a different rocket sound, small gibs of flesh (blood particles look odd),
|
|
various smoke chunks flying off in random directions and a monster scream.
|
|
|
|
When a monster is hit with a projectile and they have ammo resistance they
|
|
will ALWAYS ignore pain and not go into any pain animations.
|
|
|
|
Name Shells Nails Rockets Cells HP Effective
|
|
------------------------------------------------------------------------------
|
|
Golem --- 50% --- --- 500 1000
|
|
Minotaur --- --- --- 50% 500 1000
|
|
Seeker --- --- 50% --- 500 1000
|
|
Shambler --- --- 50% --- 600 1200
|
|
|
|
Stone Knight --- 50% --- --- 75 150
|
|
Stone Hell Knight --- 50% --- --- 250 500
|
|
Stone Gargoyle --- 50% --- --- 120 240
|
|
|
|
Defender --- --- 50% --- 100 200
|
|
Eliminator --- --- --- 50% 120 240
|
|
Pyro --- 50% --- --- 100 200
|
|
Fumigator --- 50% --- --- 100 200
|
|
|
|
Boglord --- --- 75% 75% 1200 ---
|
|
Fire Shambler --- --- 75% 75% 2000 ---
|
|
|
|
Eidolon --- 75% 75% --- 2500 ---
|
|
Nour --- --- --- 100% 2000 ---
|
|
|
|
Chthon --- --- --- --- 2500 ---
|
|
Shub-Niggurath --- --- --- --- 2500 ---
|
|
|
|
==============================================================================
|
|
Distribution / Copyright / Permissions
|
|
------------------------------------------------------------------------------
|
|
|
|
Please do not use any of these assets in ANY COMMERCIAL PROJECT.
|
|
and remember to give credit if you use any of these assets.
|
|
|
|
The QC files in this MOD are based on 1.06 source files by ID Software.
|
|
These files are released under the terms of GNU General Public License v2 or
|
|
later. You may use the source files as a base to build your own MODs as long
|
|
as you release them under the same license and make the source available.
|
|
Please also give proper credit. Check http://www.gnu.org for details.
|
|
|
|
Quake I is a registered trademark of id Software, Inc.
|
|
|
|
All of these resources may be electronically distributed only at
|
|
NO CHARGE to the recipient in its current state and MUST include this
|
|
readme.txt file.
|
|
|
|
===========================================================================
|