Merge branch 'master' into terencehill/hud_updates 353/head
authorterencehill <piuntn@gmail.com>
Mon, 22 Aug 2016 13:10:10 +0000 (15:10 +0200)
committerterencehill <piuntn@gmail.com>
Mon, 22 Aug 2016 13:10:10 +0000 (15:10 +0200)
Conflicts:
qcsrc/client/hud/hud.qc

757 files changed:
CMakeLists.txt
bal-wep-mario.cfg
qcsrc/Doxyfile
qcsrc/Makefile
qcsrc/client/_all.inc [new file with mode: 0644]
qcsrc/client/_all.qh
qcsrc/client/autocvars.qh
qcsrc/client/commands/_mod.inc
qcsrc/client/commands/_mod.qh
qcsrc/client/commands/all.qc [deleted file]
qcsrc/client/commands/all.qh [deleted file]
qcsrc/client/commands/cl_cmd.qc
qcsrc/client/csqcmodel_hooks.qc
qcsrc/client/hud/_mod.inc
qcsrc/client/hud/_mod.qh
qcsrc/client/hud/all.inc [deleted file]
qcsrc/client/hud/all.qh [deleted file]
qcsrc/client/hud/hud.qc
qcsrc/client/hud/hud.qh
qcsrc/client/hud/panel.qc [new file with mode: 0644]
qcsrc/client/hud/panel/_mod.inc
qcsrc/client/hud/panel/_mod.qh
qcsrc/client/hud/panel/ammo.qh
qcsrc/client/hud/panel/centerprint.qh
qcsrc/client/hud/panel/powerups.qc
qcsrc/client/hud/panel/powerups.qh
qcsrc/client/hud/panel/quickmenu.qc
qcsrc/client/hud/panel/scoreboard.qc
qcsrc/client/main.qc
qcsrc/client/main.qh
qcsrc/client/mapvoting.qc
qcsrc/client/miscfunctions.qc
qcsrc/client/mutators/_mod.inc
qcsrc/client/mutators/_mod.qh
qcsrc/client/mutators/events.qc [new file with mode: 0644]
qcsrc/client/mutators/events.qh
qcsrc/client/progs.inc
qcsrc/client/shownames.qc
qcsrc/client/teamradar.qc
qcsrc/client/view.qc
qcsrc/common/_all.inc
qcsrc/common/campaign_file.qc
qcsrc/common/campaign_file.qh [new file with mode: 0644]
qcsrc/common/campaign_setup.qc
qcsrc/common/campaign_setup.qh [new file with mode: 0644]
qcsrc/common/command/_mod.inc
qcsrc/common/command/_mod.qh
qcsrc/common/command/all.qc [deleted file]
qcsrc/common/command/all.qh [deleted file]
qcsrc/common/command/generic.qc
qcsrc/common/command/markup.qc
qcsrc/common/command/reg.qc [new file with mode: 0644]
qcsrc/common/command/reg.qh [new file with mode: 0644]
qcsrc/common/command/rpn.qc
qcsrc/common/constants.qh
qcsrc/common/debug.qh
qcsrc/common/effects/_mod.inc
qcsrc/common/effects/_mod.qh
qcsrc/common/effects/effectinfo.qc
qcsrc/common/effects/effectinfo.qh [new file with mode: 0644]
qcsrc/common/effects/qc/casings.qc
qcsrc/common/effects/qc/casings.qh [new file with mode: 0644]
qcsrc/common/effects/qc/damageeffects.qc
qcsrc/common/effects/qc/damageeffects.qh [new file with mode: 0644]
qcsrc/common/effects/qc/globalsound.qc
qcsrc/common/ent_cs.qc
qcsrc/common/ent_cs.qh
qcsrc/common/gamemodes/_mod.inc
qcsrc/common/gamemodes/_mod.qh
qcsrc/common/gamemodes/all.inc [deleted file]
qcsrc/common/gamemodes/all.qc [deleted file]
qcsrc/common/gamemodes/all.qh [deleted file]
qcsrc/common/gamemodes/gamemode/_mod.inc
qcsrc/common/gamemodes/gamemode/_mod.qh
qcsrc/common/gamemodes/gamemode/nexball/module.inc [deleted file]
qcsrc/common/gamemodes/gamemode/nexball/nexball.qc
qcsrc/common/gamemodes/gamemode/nexball/nexball.qh
qcsrc/common/gamemodes/gamemode/nexball/weapon.qc
qcsrc/common/gamemodes/gamemode/nexball/weapon.qh [new file with mode: 0644]
qcsrc/common/gamemodes/gamemode/onslaught/_mod.inc
qcsrc/common/gamemodes/gamemode/onslaught/_mod.qh
qcsrc/common/gamemodes/gamemode/onslaught/cl_controlpoint.qh
qcsrc/common/gamemodes/gamemode/onslaught/cl_generator.qh
qcsrc/common/gamemodes/gamemode/onslaught/controlpoint.qc [new file with mode: 0644]
qcsrc/common/gamemodes/gamemode/onslaught/controlpoint.qh [new file with mode: 0644]
qcsrc/common/gamemodes/gamemode/onslaught/generator.qc [new file with mode: 0644]
qcsrc/common/gamemodes/gamemode/onslaught/generator.qh [new file with mode: 0644]
qcsrc/common/gamemodes/gamemode/onslaught/module.inc [deleted file]
qcsrc/common/gamemodes/gamemode/onslaught/onslaught.qc
qcsrc/common/gamemodes/gamemode/onslaught/onslaught.qh [new file with mode: 0644]
qcsrc/common/gamemodes/gamemode/onslaught/sv_controlpoint.qh
qcsrc/common/gamemodes/gamemode/onslaught/sv_generator.qh
qcsrc/common/gamemodes/gamemode/onslaught/sv_onslaught.qc [new file with mode: 0644]
qcsrc/common/gamemodes/gamemode/onslaught/sv_onslaught.qh [new file with mode: 0644]
qcsrc/common/items/_mod.inc
qcsrc/common/items/_mod.qh
qcsrc/common/items/all.qc
qcsrc/common/items/all.qh
qcsrc/common/items/item/ammo.qc
qcsrc/common/items/item/ammo.qh
qcsrc/common/items/item/armor.qc
qcsrc/common/items/item/armor.qh
qcsrc/common/items/item/health.qc
qcsrc/common/items/item/health.qh
qcsrc/common/items/item/jetpack.qc
qcsrc/common/items/item/jetpack.qh [new file with mode: 0644]
qcsrc/common/items/item/pickup.qh
qcsrc/common/items/item/powerup.qc
qcsrc/common/items/item/powerup.qh
qcsrc/common/mapinfo.qc
qcsrc/common/minigames/_mod.inc
qcsrc/common/minigames/_mod.qh
qcsrc/common/minigames/minigame/bd.qc
qcsrc/common/minigames/minigame/bd.qh [new file with mode: 0644]
qcsrc/common/minigames/minigame/c4.qc
qcsrc/common/minigames/minigame/c4.qh [new file with mode: 0644]
qcsrc/common/minigames/minigame/nmm.qc
qcsrc/common/minigames/minigame/nmm.qh [new file with mode: 0644]
qcsrc/common/minigames/minigame/pong.qc
qcsrc/common/minigames/minigame/pong.qh [new file with mode: 0644]
qcsrc/common/minigames/minigame/pp.qc
qcsrc/common/minigames/minigame/pp.qh [new file with mode: 0644]
qcsrc/common/minigames/minigame/ps.qc
qcsrc/common/minigames/minigame/ps.qh [new file with mode: 0644]
qcsrc/common/minigames/minigame/snake.qc
qcsrc/common/minigames/minigame/snake.qh [new file with mode: 0644]
qcsrc/common/minigames/minigame/ttt.qc
qcsrc/common/minigames/minigame/ttt.qh [new file with mode: 0644]
qcsrc/common/minigames/sv_minigames.qc
qcsrc/common/monsters/_all.inc [new file with mode: 0644]
qcsrc/common/monsters/_all.qh [new file with mode: 0644]
qcsrc/common/monsters/_mod.inc
qcsrc/common/monsters/_mod.qh
qcsrc/common/monsters/all.qc
qcsrc/common/monsters/monster.qh
qcsrc/common/monsters/monster/mage.qc
qcsrc/common/monsters/monster/mage.qh [new file with mode: 0644]
qcsrc/common/monsters/monster/shambler.qc
qcsrc/common/monsters/monster/shambler.qh [new file with mode: 0644]
qcsrc/common/monsters/monster/spider.qc
qcsrc/common/monsters/monster/spider.qh [new file with mode: 0644]
qcsrc/common/monsters/monster/wyvern.qc
qcsrc/common/monsters/monster/wyvern.qh [new file with mode: 0644]
qcsrc/common/monsters/monster/zombie.qc
qcsrc/common/monsters/monster/zombie.qh [new file with mode: 0644]
qcsrc/common/monsters/spawn.qc
qcsrc/common/monsters/sv_monsters.qc
qcsrc/common/mutators/_mod.inc
qcsrc/common/mutators/_mod.qh
qcsrc/common/mutators/all.inc [deleted file]
qcsrc/common/mutators/all.qc [deleted file]
qcsrc/common/mutators/all.qh [deleted file]
qcsrc/common/mutators/base.qh
qcsrc/common/mutators/events.qh
qcsrc/common/mutators/mutator/_mod.inc
qcsrc/common/mutators/mutator/_mod.qh
qcsrc/common/mutators/mutator/bloodloss/_mod.inc
qcsrc/common/mutators/mutator/bloodloss/_mod.qh
qcsrc/common/mutators/mutator/bloodloss/bloodloss.qc [deleted file]
qcsrc/common/mutators/mutator/bloodloss/module.inc [deleted file]
qcsrc/common/mutators/mutator/bloodloss/sv_bloodloss.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/bloodloss/sv_bloodloss.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/breakablehook/_mod.inc
qcsrc/common/mutators/mutator/breakablehook/_mod.qh
qcsrc/common/mutators/mutator/breakablehook/breakablehook.qc [deleted file]
qcsrc/common/mutators/mutator/breakablehook/module.inc [deleted file]
qcsrc/common/mutators/mutator/breakablehook/sv_breakablehook.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/breakablehook/sv_breakablehook.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/buffs/_mod.inc
qcsrc/common/mutators/mutator/buffs/_mod.qh
qcsrc/common/mutators/mutator/buffs/all.qc [deleted file]
qcsrc/common/mutators/mutator/buffs/all.qh [deleted file]
qcsrc/common/mutators/mutator/buffs/buffs.qc
qcsrc/common/mutators/mutator/buffs/buffs.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/buffs/cl_buffs.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/buffs/cl_buffs.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/buffs/module.inc [deleted file]
qcsrc/common/mutators/mutator/buffs/sv_buffs.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/buffs/sv_buffs.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/bugrigs/bugrigs.qc
qcsrc/common/mutators/mutator/bugrigs/bugrigs.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/bugrigs/module.inc [deleted file]
qcsrc/common/mutators/mutator/campcheck/_mod.inc
qcsrc/common/mutators/mutator/campcheck/_mod.qh
qcsrc/common/mutators/mutator/campcheck/campcheck.qc
qcsrc/common/mutators/mutator/campcheck/campcheck.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/campcheck/module.inc [deleted file]
qcsrc/common/mutators/mutator/campcheck/sv_campcheck.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/campcheck/sv_campcheck.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/cloaked/_mod.inc
qcsrc/common/mutators/mutator/cloaked/_mod.qh
qcsrc/common/mutators/mutator/cloaked/cloaked.qc [deleted file]
qcsrc/common/mutators/mutator/cloaked/module.inc [deleted file]
qcsrc/common/mutators/mutator/cloaked/sv_cloaked.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/cloaked/sv_cloaked.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/damagetext/damagetext.qc
qcsrc/common/mutators/mutator/damagetext/damagetext.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/damagetext/module.inc [deleted file]
qcsrc/common/mutators/mutator/dodging/_mod.inc
qcsrc/common/mutators/mutator/dodging/_mod.qh
qcsrc/common/mutators/mutator/dodging/dodging.qc [deleted file]
qcsrc/common/mutators/mutator/dodging/module.inc [deleted file]
qcsrc/common/mutators/mutator/dodging/sv_dodging.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/dodging/sv_dodging.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/doublejump/doublejump.qc
qcsrc/common/mutators/mutator/doublejump/doublejump.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/doublejump/module.inc [deleted file]
qcsrc/common/mutators/mutator/globalforces/_mod.inc
qcsrc/common/mutators/mutator/globalforces/_mod.qh
qcsrc/common/mutators/mutator/globalforces/globalforces.qc [deleted file]
qcsrc/common/mutators/mutator/globalforces/module.inc [deleted file]
qcsrc/common/mutators/mutator/globalforces/sv_globalforces.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/globalforces/sv_globalforces.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/hook/_mod.inc
qcsrc/common/mutators/mutator/hook/_mod.qh
qcsrc/common/mutators/mutator/hook/hook.qc [deleted file]
qcsrc/common/mutators/mutator/hook/module.inc [deleted file]
qcsrc/common/mutators/mutator/hook/sv_hook.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/hook/sv_hook.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/instagib/_mod.inc
qcsrc/common/mutators/mutator/instagib/_mod.qh
qcsrc/common/mutators/mutator/instagib/instagib.qc [deleted file]
qcsrc/common/mutators/mutator/instagib/items.qc
qcsrc/common/mutators/mutator/instagib/items.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/instagib/module.inc [deleted file]
qcsrc/common/mutators/mutator/instagib/sv_instagib.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/instagib/sv_instagib.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/invincibleproj/_mod.inc
qcsrc/common/mutators/mutator/invincibleproj/_mod.qh
qcsrc/common/mutators/mutator/invincibleproj/invincibleproj.qc [deleted file]
qcsrc/common/mutators/mutator/invincibleproj/module.inc [deleted file]
qcsrc/common/mutators/mutator/invincibleproj/sv_invincibleproj.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/invincibleproj/sv_invincibleproj.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/itemstime.qc [deleted file]
qcsrc/common/mutators/mutator/itemstime/_mod.inc [new file with mode: 0644]
qcsrc/common/mutators/mutator/itemstime/_mod.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/itemstime/itemstime.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/itemstime/itemstime.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/melee_only/_mod.inc
qcsrc/common/mutators/mutator/melee_only/_mod.qh
qcsrc/common/mutators/mutator/melee_only/melee_only.qc [deleted file]
qcsrc/common/mutators/mutator/melee_only/module.inc [deleted file]
qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/midair/_mod.inc
qcsrc/common/mutators/mutator/midair/_mod.qh
qcsrc/common/mutators/mutator/midair/midair.qc [deleted file]
qcsrc/common/mutators/mutator/midair/module.inc [deleted file]
qcsrc/common/mutators/mutator/midair/sv_midair.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/midair/sv_midair.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/multijump/module.inc [deleted file]
qcsrc/common/mutators/mutator/multijump/multijump.qc
qcsrc/common/mutators/mutator/multijump/multijump.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/nades/module.inc [deleted file]
qcsrc/common/mutators/mutator/nades/nades.inc
qcsrc/common/mutators/mutator/nades/nades.qc
qcsrc/common/mutators/mutator/nades/nades.qh
qcsrc/common/mutators/mutator/nades/net.qc
qcsrc/common/mutators/mutator/nades/net.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/new_toys/_mod.inc
qcsrc/common/mutators/mutator/new_toys/_mod.qh
qcsrc/common/mutators/mutator/new_toys/module.inc [deleted file]
qcsrc/common/mutators/mutator/new_toys/new_toys.qc [deleted file]
qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/nix/_mod.inc
qcsrc/common/mutators/mutator/nix/_mod.qh
qcsrc/common/mutators/mutator/nix/module.inc [deleted file]
qcsrc/common/mutators/mutator/nix/nix.qc [deleted file]
qcsrc/common/mutators/mutator/nix/sv_nix.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/nix/sv_nix.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/overkill/_mod.inc
qcsrc/common/mutators/mutator/overkill/_mod.qh
qcsrc/common/mutators/mutator/overkill/cl_overkill.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/overkill/cl_overkill.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/overkill/hmg.qc
qcsrc/common/mutators/mutator/overkill/hmg.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/overkill/module.inc [deleted file]
qcsrc/common/mutators/mutator/overkill/overkill.qc
qcsrc/common/mutators/mutator/overkill/overkill.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/overkill/rpc.qc
qcsrc/common/mutators/mutator/overkill/rpc.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/overkill/sv_overkill.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/overkill/sv_overkill.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/physical_items/_mod.inc
qcsrc/common/mutators/mutator/physical_items/_mod.qh
qcsrc/common/mutators/mutator/physical_items/module.inc [deleted file]
qcsrc/common/mutators/mutator/physical_items/physical_items.qc [deleted file]
qcsrc/common/mutators/mutator/physical_items/sv_physical_items.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/physical_items/sv_physical_items.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/pinata/_mod.inc
qcsrc/common/mutators/mutator/pinata/_mod.qh
qcsrc/common/mutators/mutator/pinata/module.inc [deleted file]
qcsrc/common/mutators/mutator/pinata/pinata.qc [deleted file]
qcsrc/common/mutators/mutator/pinata/sv_pinata.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/pinata/sv_pinata.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/random_gravity/_mod.inc
qcsrc/common/mutators/mutator/random_gravity/_mod.qh
qcsrc/common/mutators/mutator/random_gravity/module.inc [deleted file]
qcsrc/common/mutators/mutator/random_gravity/random_gravity.qc [deleted file]
qcsrc/common/mutators/mutator/random_gravity/sv_random_gravity.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/random_gravity/sv_random_gravity.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/rocketflying/_mod.inc
qcsrc/common/mutators/mutator/rocketflying/_mod.qh
qcsrc/common/mutators/mutator/rocketflying/module.inc [deleted file]
qcsrc/common/mutators/mutator/rocketflying/rocketflying.qc [deleted file]
qcsrc/common/mutators/mutator/rocketflying/sv_rocketflying.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/rocketflying/sv_rocketflying.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/rocketminsta/_mod.inc
qcsrc/common/mutators/mutator/rocketminsta/_mod.qh
qcsrc/common/mutators/mutator/rocketminsta/module.inc [deleted file]
qcsrc/common/mutators/mutator/rocketminsta/rocketminsta.qc [deleted file]
qcsrc/common/mutators/mutator/rocketminsta/sv_rocketminsta.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/rocketminsta/sv_rocketminsta.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/running_guns/_mod.inc
qcsrc/common/mutators/mutator/running_guns/_mod.qh
qcsrc/common/mutators/mutator/running_guns/module.inc [deleted file]
qcsrc/common/mutators/mutator/running_guns/running_guns.qc [deleted file]
qcsrc/common/mutators/mutator/running_guns/sv_running_guns.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/running_guns/sv_running_guns.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/sandbox/_mod.inc
qcsrc/common/mutators/mutator/sandbox/_mod.qh
qcsrc/common/mutators/mutator/sandbox/module.inc [deleted file]
qcsrc/common/mutators/mutator/sandbox/sandbox.qc [deleted file]
qcsrc/common/mutators/mutator/sandbox/sv_sandbox.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/sandbox/sv_sandbox.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/spawn_near_teammate/_mod.inc
qcsrc/common/mutators/mutator/spawn_near_teammate/_mod.qh
qcsrc/common/mutators/mutator/spawn_near_teammate/module.inc [deleted file]
qcsrc/common/mutators/mutator/spawn_near_teammate/spawn_near_teammate.qc [deleted file]
qcsrc/common/mutators/mutator/spawn_near_teammate/sv_spawn_near_teammate.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/spawn_near_teammate/sv_spawn_near_teammate.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/superspec/_mod.inc
qcsrc/common/mutators/mutator/superspec/_mod.qh
qcsrc/common/mutators/mutator/superspec/module.inc [deleted file]
qcsrc/common/mutators/mutator/superspec/superspec.qc [deleted file]
qcsrc/common/mutators/mutator/superspec/sv_superspec.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/superspec/sv_superspec.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/touchexplode/_mod.inc
qcsrc/common/mutators/mutator/touchexplode/_mod.qh
qcsrc/common/mutators/mutator/touchexplode/module.inc [deleted file]
qcsrc/common/mutators/mutator/touchexplode/sv_touchexplode.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/touchexplode/sv_touchexplode.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/touchexplode/touchexplode.qc [deleted file]
qcsrc/common/mutators/mutator/vampire/_mod.inc
qcsrc/common/mutators/mutator/vampire/_mod.qh
qcsrc/common/mutators/mutator/vampire/module.inc [deleted file]
qcsrc/common/mutators/mutator/vampire/sv_vampire.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/vampire/sv_vampire.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/vampire/vampire.qc [deleted file]
qcsrc/common/mutators/mutator/vampirehook/_mod.inc
qcsrc/common/mutators/mutator/vampirehook/_mod.qh
qcsrc/common/mutators/mutator/vampirehook/module.inc [deleted file]
qcsrc/common/mutators/mutator/vampirehook/sv_vampirehook.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/vampirehook/sv_vampirehook.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/vampirehook/vampirehook.qc [deleted file]
qcsrc/common/mutators/mutator/waypoints/all.qh
qcsrc/common/mutators/mutator/waypoints/module.inc [deleted file]
qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc
qcsrc/common/mutators/mutator/waypoints/waypointsprites.qh
qcsrc/common/mutators/mutator/weaponarena_random/_mod.inc
qcsrc/common/mutators/mutator/weaponarena_random/_mod.qh
qcsrc/common/mutators/mutator/weaponarena_random/module.inc [deleted file]
qcsrc/common/mutators/mutator/weaponarena_random/sv_weaponarena_random.qc [new file with mode: 0644]
qcsrc/common/mutators/mutator/weaponarena_random/sv_weaponarena_random.qh [new file with mode: 0644]
qcsrc/common/mutators/mutator/weaponarena_random/weaponarena_random.qc [deleted file]
qcsrc/common/notifications/all.qc
qcsrc/common/notifications/all.qh
qcsrc/common/physics/_mod.inc
qcsrc/common/physics/_mod.qh
qcsrc/common/physics/movetypes/follow.qc
qcsrc/common/physics/movetypes/follow.qh [new file with mode: 0644]
qcsrc/common/physics/movetypes/movetypes.qc
qcsrc/common/physics/movetypes/step.qc
qcsrc/common/physics/movetypes/step.qh [new file with mode: 0644]
qcsrc/common/physics/movetypes/toss.qc
qcsrc/common/physics/movetypes/toss.qh [new file with mode: 0644]
qcsrc/common/physics/movetypes/walk.qc
qcsrc/common/physics/movetypes/walk.qh [new file with mode: 0644]
qcsrc/common/playerstats.qc
qcsrc/common/sounds/all.qc
qcsrc/common/sounds/all.qh
qcsrc/common/stats.qh
qcsrc/common/t_items.qc
qcsrc/common/triggers/_mod.inc
qcsrc/common/triggers/_mod.qh
qcsrc/common/triggers/func/bobbing.qc
qcsrc/common/triggers/func/bobbing.qh [new file with mode: 0644]
qcsrc/common/triggers/func/breakable.qc
qcsrc/common/triggers/func/button.qc
qcsrc/common/triggers/func/button.qh [new file with mode: 0644]
qcsrc/common/triggers/func/conveyor.qc
qcsrc/common/triggers/func/conveyor.qh [new file with mode: 0644]
qcsrc/common/triggers/func/door.qc
qcsrc/common/triggers/func/door_rotating.qc
qcsrc/common/triggers/func/door_rotating.qh [new file with mode: 0644]
qcsrc/common/triggers/func/door_secret.qc
qcsrc/common/triggers/func/door_secret.qh [new file with mode: 0644]
qcsrc/common/triggers/func/fourier.qc
qcsrc/common/triggers/func/fourier.qh [new file with mode: 0644]
qcsrc/common/triggers/func/ladder.qc
qcsrc/common/triggers/func/pendulum.qc
qcsrc/common/triggers/func/pendulum.qh [new file with mode: 0644]
qcsrc/common/triggers/func/plat.qc
qcsrc/common/triggers/func/plat.qh [new file with mode: 0644]
qcsrc/common/triggers/func/pointparticles.qc
qcsrc/common/triggers/func/pointparticles.qh [new file with mode: 0644]
qcsrc/common/triggers/func/rainsnow.qc
qcsrc/common/triggers/func/rainsnow.qh [new file with mode: 0644]
qcsrc/common/triggers/func/rotating.qc
qcsrc/common/triggers/func/rotating.qh [new file with mode: 0644]
qcsrc/common/triggers/func/stardust.qc
qcsrc/common/triggers/func/stardust.qh [new file with mode: 0644]
qcsrc/common/triggers/func/train.qc
qcsrc/common/triggers/func/vectormamamam.qc
qcsrc/common/triggers/func/vectormamamam.qh [new file with mode: 0644]
qcsrc/common/triggers/include.qh
qcsrc/common/triggers/misc/corner.qc
qcsrc/common/triggers/misc/corner.qh [new file with mode: 0644]
qcsrc/common/triggers/misc/follow.qc
qcsrc/common/triggers/misc/follow.qh [new file with mode: 0644]
qcsrc/common/triggers/misc/include.qc
qcsrc/common/triggers/misc/include.qh [new file with mode: 0644]
qcsrc/common/triggers/misc/laser.qc
qcsrc/common/triggers/misc/laser.qh [new file with mode: 0644]
qcsrc/common/triggers/misc/teleport_dest.qc
qcsrc/common/triggers/misc/teleport_dest.qh [new file with mode: 0644]
qcsrc/common/triggers/platforms.qc
qcsrc/common/triggers/subs.qc
qcsrc/common/triggers/target/changelevel.qc
qcsrc/common/triggers/target/changelevel.qh [new file with mode: 0644]
qcsrc/common/triggers/target/location.qc
qcsrc/common/triggers/target/location.qh [new file with mode: 0644]
qcsrc/common/triggers/target/music.qc
qcsrc/common/triggers/target/spawn.qc
qcsrc/common/triggers/target/spawn.qh [new file with mode: 0644]
qcsrc/common/triggers/target/speaker.qc
qcsrc/common/triggers/target/speaker.qh [new file with mode: 0644]
qcsrc/common/triggers/target/voicescript.qc
qcsrc/common/triggers/target/voicescript.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/counter.qc
qcsrc/common/triggers/trigger/counter.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/delay.qc
qcsrc/common/triggers/trigger/delay.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/disablerelay.qc
qcsrc/common/triggers/trigger/disablerelay.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/flipflop.qc
qcsrc/common/triggers/trigger/flipflop.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/gamestart.qc
qcsrc/common/triggers/trigger/gamestart.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/gravity.qc
qcsrc/common/triggers/trigger/gravity.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/heal.qc
qcsrc/common/triggers/trigger/heal.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/hurt.qc
qcsrc/common/triggers/trigger/hurt.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/impulse.qc
qcsrc/common/triggers/trigger/jumppads.qc
qcsrc/common/triggers/trigger/keylock.qc
qcsrc/common/triggers/trigger/magicear.qc
qcsrc/common/triggers/trigger/magicear.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/monoflop.qc
qcsrc/common/triggers/trigger/monoflop.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/multi.qc
qcsrc/common/triggers/trigger/multivibrator.qc
qcsrc/common/triggers/trigger/multivibrator.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/relay.qc
qcsrc/common/triggers/trigger/relay.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/relay_activators.qc
qcsrc/common/triggers/trigger/relay_activators.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/relay_if.qc
qcsrc/common/triggers/trigger/relay_if.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/relay_teamcheck.qc
qcsrc/common/triggers/trigger/relay_teamcheck.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/secret.qc
qcsrc/common/triggers/trigger/swamp.qc
qcsrc/common/triggers/trigger/teleport.qc
qcsrc/common/triggers/trigger/teleport.qh [new file with mode: 0644]
qcsrc/common/triggers/trigger/viewloc.qc
qcsrc/common/triggers/triggers.qc
qcsrc/common/triggers/triggers.qh
qcsrc/common/turrets/_all.inc [new file with mode: 0644]
qcsrc/common/turrets/_all.qh [new file with mode: 0644]
qcsrc/common/turrets/_mod.inc
qcsrc/common/turrets/_mod.qh
qcsrc/common/turrets/all.qh
qcsrc/common/turrets/checkpoint.qc
qcsrc/common/turrets/checkpoint.qh [new file with mode: 0644]
qcsrc/common/turrets/cl_turrets.qc
qcsrc/common/turrets/cl_turrets.qh [new file with mode: 0644]
qcsrc/common/turrets/config.qc
qcsrc/common/turrets/sv_turrets.qc
qcsrc/common/turrets/targettrigger.qc
qcsrc/common/turrets/targettrigger.qh [new file with mode: 0644]
qcsrc/common/turrets/turret.qh
qcsrc/common/turrets/turret/ewheel.qc
qcsrc/common/turrets/turret/ewheel.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/flac.qc
qcsrc/common/turrets/turret/flac.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/fusionreactor.qc
qcsrc/common/turrets/turret/fusionreactor.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/hellion.qc
qcsrc/common/turrets/turret/hellion.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/hk.qc
qcsrc/common/turrets/turret/hk.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/machinegun.qc
qcsrc/common/turrets/turret/machinegun.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/mlrs.qc
qcsrc/common/turrets/turret/mlrs.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/phaser.qc
qcsrc/common/turrets/turret/phaser.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/plasma.qc
qcsrc/common/turrets/turret/plasma.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/plasma_dual.qc
qcsrc/common/turrets/turret/plasma_dual.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/tesla.qc
qcsrc/common/turrets/turret/tesla.qh [new file with mode: 0644]
qcsrc/common/turrets/turret/walker.qc
qcsrc/common/turrets/turret/walker.qh [new file with mode: 0644]
qcsrc/common/turrets/turrets.qc [new file with mode: 0644]
qcsrc/common/turrets/turrets.qh [new file with mode: 0644]
qcsrc/common/turrets/util.qc
qcsrc/common/util.qc
qcsrc/common/util.qh
qcsrc/common/vehicles/_all.inc [new file with mode: 0644]
qcsrc/common/vehicles/_all.qh [new file with mode: 0644]
qcsrc/common/vehicles/_mod.inc
qcsrc/common/vehicles/_mod.qh
qcsrc/common/vehicles/all.qc
qcsrc/common/vehicles/cl_vehicles.qc
qcsrc/common/vehicles/vehicle/bumblebee.qc
qcsrc/common/vehicles/vehicle/bumblebee.qh
qcsrc/common/vehicles/vehicle/bumblebee_weapons.qh
qcsrc/common/vehicles/vehicle/racer.qc
qcsrc/common/vehicles/vehicle/racer.qh [new file with mode: 0644]
qcsrc/common/vehicles/vehicle/racer_weapon.qh
qcsrc/common/vehicles/vehicle/raptor.qc
qcsrc/common/vehicles/vehicle/raptor.qh
qcsrc/common/vehicles/vehicle/raptor_weapons.qh
qcsrc/common/vehicles/vehicle/spiderbot.qc
qcsrc/common/vehicles/vehicle/spiderbot.qh [new file with mode: 0644]
qcsrc/common/vehicles/vehicle/spiderbot_weapons.qh
qcsrc/common/vehicles/vehicles.qc [new file with mode: 0644]
qcsrc/common/vehicles/vehicles.qh [new file with mode: 0644]
qcsrc/common/viewloc.qc
qcsrc/common/weapons/_all.inc [new file with mode: 0644]
qcsrc/common/weapons/_all.qh [new file with mode: 0644]
qcsrc/common/weapons/all.qc
qcsrc/common/weapons/all.qh
qcsrc/common/weapons/calculations.qc
qcsrc/common/weapons/calculations.qh
qcsrc/common/weapons/config.qc
qcsrc/common/weapons/weapon.qh
qcsrc/common/weapons/weapon/arc.qc
qcsrc/common/weapons/weapon/arc.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/blaster.qc
qcsrc/common/weapons/weapon/blaster.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/crylink.qc
qcsrc/common/weapons/weapon/crylink.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/devastator.qc
qcsrc/common/weapons/weapon/devastator.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/electro.qc
qcsrc/common/weapons/weapon/electro.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/fireball.qc
qcsrc/common/weapons/weapon/fireball.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/hagar.qc
qcsrc/common/weapons/weapon/hagar.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/hlac.qc
qcsrc/common/weapons/weapon/hlac.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/hook.qc
qcsrc/common/weapons/weapon/hook.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/machinegun.qc
qcsrc/common/weapons/weapon/machinegun.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/minelayer.qc
qcsrc/common/weapons/weapon/minelayer.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/mortar.qc
qcsrc/common/weapons/weapon/mortar.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/porto.qc
qcsrc/common/weapons/weapon/porto.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/rifle.qc
qcsrc/common/weapons/weapon/rifle.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/seeker.qc
qcsrc/common/weapons/weapon/seeker.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/shockwave.qc
qcsrc/common/weapons/weapon/shockwave.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/shotgun.qc
qcsrc/common/weapons/weapon/shotgun.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/tuba.qc
qcsrc/common/weapons/weapon/tuba.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/vaporizer.qc
qcsrc/common/weapons/weapon/vaporizer.qh [new file with mode: 0644]
qcsrc/common/weapons/weapon/vortex.qc
qcsrc/common/weapons/weapon/vortex.qh [new file with mode: 0644]
qcsrc/dpdefs/post.qh
qcsrc/dpdefs/pre.qh
qcsrc/dpdefs/upstream/dpextensions.qc
qcsrc/ecs/_lib.inc [deleted file]
qcsrc/ecs/_lib.qh [deleted file]
qcsrc/ecs/_mod.inc
qcsrc/ecs/_mod.qh
qcsrc/ecs/lib.qh [new file with mode: 0644]
qcsrc/ecs/main.qh
qcsrc/lib/_all.inc
qcsrc/lib/angle.qh [new file with mode: 0644]
qcsrc/lib/csqcmodel/_mod.inc
qcsrc/lib/csqcmodel/_mod.qh
qcsrc/lib/csqcmodel/cl_model.qc
qcsrc/lib/csqcmodel/model.qc [new file with mode: 0644]
qcsrc/lib/csqcmodel/model.qh [new file with mode: 0644]
qcsrc/lib/csqcmodel/player.qc [new file with mode: 0644]
qcsrc/lib/csqcmodel/player.qh [new file with mode: 0644]
qcsrc/lib/defer.qh
qcsrc/lib/intrusivelist.qh
qcsrc/lib/iter.qh
qcsrc/lib/json.qh [new file with mode: 0644]
qcsrc/lib/matrix/command.qc
qcsrc/lib/net.qh
qcsrc/lib/replicate.qh
qcsrc/lib/self.qh
qcsrc/lib/vector.qh
qcsrc/lib/warpzone/common.qc
qcsrc/lib/warpzone/server.qc
qcsrc/menu/_all.inc [new file with mode: 0644]
qcsrc/menu/auto-super.pl [deleted file]
qcsrc/menu/command/_mod.inc
qcsrc/menu/command/_mod.qh
qcsrc/menu/command/all.qc [deleted file]
qcsrc/menu/command/all.qh [deleted file]
qcsrc/menu/command/menu_cmd.qc
qcsrc/menu/menu.qc
qcsrc/menu/progs.inc
qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc
qcsrc/menu/xonotic/keybinder.qc
qcsrc/menu/xonotic/util.qc
qcsrc/menu/xonotic/weaponslist.qc
qcsrc/server/_all.inc [new file with mode: 0644]
qcsrc/server/_mod.inc
qcsrc/server/_mod.qh
qcsrc/server/bot/_mod.inc
qcsrc/server/bot/_mod.qh
qcsrc/server/bot/api.qc
qcsrc/server/bot/api.qh
qcsrc/server/bot/default/_mod.inc
qcsrc/server/bot/default/_mod.qh
qcsrc/server/bot/default/aim.qc
qcsrc/server/bot/default/bot.qc
qcsrc/server/bot/default/havocbot/havocbot.qc
qcsrc/server/bot/default/navigation.qc
qcsrc/server/bot/null/_mod.inc [new file with mode: 0644]
qcsrc/server/bot/null/_mod.qh [new file with mode: 0644]
qcsrc/server/bot/null/bot_null.qc [new file with mode: 0644]
qcsrc/server/bot/null/bot_null.qh [new file with mode: 0644]
qcsrc/server/cheats.qc
qcsrc/server/cl_client.qc [deleted file]
qcsrc/server/cl_client.qh [deleted file]
qcsrc/server/cl_impulse.qc [deleted file]
qcsrc/server/cl_impulse.qh [deleted file]
qcsrc/server/cl_player.qc [deleted file]
qcsrc/server/cl_player.qh [deleted file]
qcsrc/server/client.qc [new file with mode: 0644]
qcsrc/server/client.qh [new file with mode: 0644]
qcsrc/server/command/_mod.inc
qcsrc/server/command/_mod.qh
qcsrc/server/command/all.qc [deleted file]
qcsrc/server/command/all.qh [deleted file]
qcsrc/server/command/banning.qc
qcsrc/server/command/cmd.qc
qcsrc/server/command/common.qc
qcsrc/server/command/common.qh
qcsrc/server/command/getreplies.qc
qcsrc/server/command/radarmap.qc
qcsrc/server/command/reg.qc [new file with mode: 0644]
qcsrc/server/command/reg.qh [new file with mode: 0644]
qcsrc/server/command/sv_cmd.qc
qcsrc/server/command/vote.qc
qcsrc/server/defs.qh
qcsrc/server/g_damage.qc
qcsrc/server/g_damage.qh
qcsrc/server/g_hook.qc
qcsrc/server/g_world.qc
qcsrc/server/impulse.qc [new file with mode: 0644]
qcsrc/server/impulse.qh [new file with mode: 0644]
qcsrc/server/matrix.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/_mod.inc
qcsrc/server/mutators/_mod.qh
qcsrc/server/mutators/all.inc [deleted file]
qcsrc/server/mutators/all.qc [deleted file]
qcsrc/server/mutators/all.qh [deleted file]
qcsrc/server/mutators/events.qh
qcsrc/server/mutators/gamemode.qh
qcsrc/server/mutators/loader.qc [new file with mode: 0644]
qcsrc/server/mutators/loader.qh [new file with mode: 0644]
qcsrc/server/mutators/mutator.qh
qcsrc/server/mutators/mutator/gamemode_assault.qc
qcsrc/server/mutators/mutator/gamemode_assault.qh
qcsrc/server/mutators/mutator/gamemode_ca.qc
qcsrc/server/mutators/mutator/gamemode_ca.qh
qcsrc/server/mutators/mutator/gamemode_ctf.qc
qcsrc/server/mutators/mutator/gamemode_cts.qc
qcsrc/server/mutators/mutator/gamemode_cts.qh
qcsrc/server/mutators/mutator/gamemode_deathmatch.qc
qcsrc/server/mutators/mutator/gamemode_deathmatch.qh
qcsrc/server/mutators/mutator/gamemode_domination.qc
qcsrc/server/mutators/mutator/gamemode_domination.qh
qcsrc/server/mutators/mutator/gamemode_freezetag.qc
qcsrc/server/mutators/mutator/gamemode_freezetag.qh
qcsrc/server/mutators/mutator/gamemode_invasion.qc
qcsrc/server/mutators/mutator/gamemode_invasion.qh
qcsrc/server/mutators/mutator/gamemode_keepaway.qc
qcsrc/server/mutators/mutator/gamemode_keepaway.qh
qcsrc/server/mutators/mutator/gamemode_keyhunt.qc
qcsrc/server/mutators/mutator/gamemode_keyhunt.qh
qcsrc/server/mutators/mutator/gamemode_lms.qc
qcsrc/server/mutators/mutator/gamemode_lms.qh
qcsrc/server/mutators/mutator/gamemode_race.qc
qcsrc/server/mutators/mutator/gamemode_race.qh
qcsrc/server/mutators/mutator/gamemode_tdm.qc
qcsrc/server/mutators/mutator/gamemode_tdm.qh
qcsrc/server/pathlib/_all.inc [deleted file]
qcsrc/server/pathlib/costs.qc
qcsrc/server/pathlib/costs.qh
qcsrc/server/pathlib/debug.qc
qcsrc/server/pathlib/debug.qh
qcsrc/server/pathlib/pathlib.qh
qcsrc/server/player.qc [new file with mode: 0644]
qcsrc/server/player.qh [new file with mode: 0644]
qcsrc/server/portals.qc
qcsrc/server/progs.inc
qcsrc/server/race.qc
qcsrc/server/scores.qc
qcsrc/server/scores_rules.qc
qcsrc/server/spawnpoints.qc
qcsrc/server/steerlib.qc
qcsrc/server/steerlib.qh
qcsrc/server/sv_main.qc
qcsrc/server/t_quake.qc
qcsrc/server/t_quake3.qc
qcsrc/server/teamplay.qc
qcsrc/server/teamplay.qh
qcsrc/server/tests.qh
qcsrc/server/weapons/accuracy.qc
qcsrc/server/weapons/common.qc
qcsrc/server/weapons/csqcprojectile.qc
qcsrc/server/weapons/hitplot.qc
qcsrc/server/weapons/selection.qc
qcsrc/server/weapons/spawning.qc
qcsrc/server/weapons/throwing.qc
qcsrc/server/weapons/tracing.qc
qcsrc/server/weapons/weaponstats.qc
qcsrc/server/weapons/weaponsystem.qc
qcsrc/server/weapons/weaponsystem.qh
qcsrc/tools/auto-super.pl [new file with mode: 0644]
qcsrc/tools/compilationunits.sh
qcsrc/tools/genmod.sh
qcsrc/tools/headerstyle.sh
qcsrc/tools/qcc.sh

index fdbce7d5ac19f8b20fd5990f9756af7773ea05ba..2f38e43ba2be7ad75167b6683b238baae72dbc1a 100644 (file)
@@ -26,11 +26,11 @@ set_source_files_properties(
 )
 
 add_executable(csprogs qcsrc/client/progs.inc)
-target_compile_definitions(csprogs PRIVATE -DCSQC)
+target_compile_definitions(csprogs PRIVATE -DGAMEQC -DCSQC)
 add_dependencies(csprogs gmqcc)
 
 add_executable(progs qcsrc/server/progs.inc)
-target_compile_definitions(progs PRIVATE -DSVQC)
+target_compile_definitions(progs PRIVATE -DGAMEQC -DSVQC)
 add_dependencies(progs gmqcc)
 
 add_executable(menu qcsrc/menu/progs.inc)
index 5979b78b84947acfbd6ca3790b0bb7e76ec7f4c1..f0fbb6291ccac30ea531630069396d56542c2c30 100644 (file)
@@ -61,7 +61,7 @@ set g_balance_shotgun_secondary_alt_refire 1.2
 set g_balance_shotgun_switchdelay_drop 0.2
 set g_balance_shotgun_switchdelay_raise 0.2
 set g_balance_shotgun_weaponreplace ""
-set g_balance_shotgun_weaponstart 0
+set g_balance_shotgun_weaponstart 1
 set g_balance_shotgun_weaponstartoverride -1
 set g_balance_shotgun_weaponthrowable 1
 // }}}
@@ -343,7 +343,7 @@ set g_balance_hagar_primary_lifetime 5
 set g_balance_hagar_primary_radius 65
 set g_balance_hagar_primary_refire 0.16667
 set g_balance_hagar_primary_speed 2200
-set g_balance_hagar_primary_spread 0.03
+set g_balance_hagar_primary_spread 0
 set g_balance_hagar_reload_ammo 0
 set g_balance_hagar_reload_time 2
 set g_balance_hagar_secondary 1
@@ -721,7 +721,7 @@ set g_balance_shockwave_melee_traces 10
 set g_balance_shockwave_switchdelay_drop 0.2
 set g_balance_shockwave_switchdelay_raise 0.2
 set g_balance_shockwave_weaponreplace ""
-set g_balance_shockwave_weaponstart 1
+set g_balance_shockwave_weaponstart 0
 set g_balance_shockwave_weaponstartoverride -1
 set g_balance_shockwave_weaponthrowable 0
 // }}}
index 09d0128578d272c49812442b4d840efc7eede915..06ee7468ddd83bfbb93c83a15e0fe61a0d6ae45f 100644 (file)
@@ -1997,6 +1997,7 @@ INCLUDE_FILE_PATTERNS  =
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 PREDEFINED             = \
+    "XONOTIC" \
     "USING(name, T)=using name = T" \
     "CLASS(name, base)=class name : public base { public:" \
     "INIT(class)=class::class()" \
index 0ed67281b4259d18fdd466d6f29912b94f011a63..903d8537e695bf35b33fb78889c814a38536cf7b 100644 (file)
@@ -8,7 +8,7 @@ QCCFLAGS_WATERMARK ?= $(shell git describe --tags --dirty='~')
 VER = $(subst *,\*,$(QCCFLAGS_WATERMARK))
 NDEBUG ?= 1
 XONOTIC ?= 1
-BUILD_MOD ?= 0
+BUILD_MOD ?=
 
 ifndef ZIP
        ifneq ($(shell which zip),)
@@ -34,7 +34,7 @@ QCCDEFS ?= \
        -DXONOTIC=$(XONOTIC) \
        -DWATERMARK="$(QCCFLAGS_WATERMARK)" \
        -DNDEBUG=$(NDEBUG) \
-       -DBUILD_MOD=$(BUILD_MOD) \
+       $(if $(BUILD_MOD), -DBUILD_MOD="$(BUILD_MOD)" -I$(BUILD_MOD), ) \
        $(QCCDEFS_EXTRA)
 
 # -Ooverlap-locals is required
diff --git a/qcsrc/client/_all.inc b/qcsrc/client/_all.inc
new file mode 100644 (file)
index 0000000..f592f8a
--- /dev/null
@@ -0,0 +1,20 @@
+#include <client/_all.qh>
+#include "_mod.inc"
+
+#include "commands/_mod.inc"
+#include "hud/_mod.inc"
+#include "mutators/_mod.inc"
+#include "weapons/_mod.inc"
+
+#include <common/_all.inc>
+#include <common/effects/qc/all.qc>
+
+#include <lib/csqcmodel/cl_model.qc>
+#include <lib/csqcmodel/cl_player.qc>
+#include <lib/csqcmodel/interpolate.qc>
+
+#include <lib/warpzone/anglestransform.qc>
+#include <lib/warpzone/common.qc>
+#include <lib/warpzone/client.qc>
+#include <lib/warpzone/server.qc>
+#include <lib/warpzone/util_server.qc>
index 746734dee2011e048533d0113c4d59a089ea4e82..077b5f450a5ff2eee4b0ca4dd52a5aee382c77ee 100644 (file)
@@ -1,4 +1,5 @@
 #pragma once
+//#include "_mod.qh"
 
 #include <common/util.qh>
 
@@ -10,3 +11,5 @@
 #include "defs.qh"
 #include "main.qh"
 #include "miscfunctions.qh"
+
+#include <common/ent_cs.qh>
index 296cffbe2370d52beb66405246cf3b5922807187..25ab0e2a053fcfe0ff45703a880a62f87d5724c3 100644 (file)
@@ -395,7 +395,6 @@ float autocvar_hud_shownames_offset;
 string autocvar_hud_skin;
 float autocvar_menu_mouse_speed;
 string autocvar_menu_skin;
-float autocvar_r_drawviewmodel;
 int autocvar_r_fakelight;
 int autocvar_r_fullbright;
 float autocvar_r_letterbox;
@@ -455,4 +454,5 @@ vector autocvar_crosshair_rpc_color = '0.2 1.0 0.2';
 float autocvar_crosshair_rpc_alpha = 1;
 float autocvar_crosshair_rpc_size = 1;
 int autocvar_cl_nade_timer;
+bool autocvar_r_drawviewmodel;
 bool autocvar_cl_items_nofade;
index 235f1297fda6e5c7fdc3d6b43c3cab94e0af6109..dcfc6ecea56e94103c08ae21a99997bf815dff72 100644 (file)
@@ -1,3 +1,4 @@
 // generated file; do not modify
-#include <client/commands/all.qc>
-#include <client/commands/cl_cmd.qc>
+#ifdef CSQC
+    #include <client/commands/cl_cmd.qc>
+#endif
index 03df56398ccf89c0e09f1a70011698f8e1465d50..7829965a2350f0bb075fd0431447aabe030f7d57 100644 (file)
@@ -1,3 +1,4 @@
 // generated file; do not modify
-#include <client/commands/all.qh>
-#include <client/commands/cl_cmd.qh>
+#ifdef CSQC
+    #include <client/commands/cl_cmd.qh>
+#endif
diff --git a/qcsrc/client/commands/all.qc b/qcsrc/client/commands/all.qc
deleted file mode 100644 (file)
index bc15eeb..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "all.qh"
-#include <common/command/all.qc>
diff --git a/qcsrc/client/commands/all.qh b/qcsrc/client/commands/all.qh
deleted file mode 100644 (file)
index 2df61f0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#pragma once
-
-#include <common/command/all.qh>
-
-#include "cl_cmd.qh"
index 9b8f58f94418e13163a120c30eaefcb3f37bc886..631090cc1f9b7d119a2a9847b9d6ee5619cdd568 100644 (file)
@@ -4,12 +4,12 @@
 //  Last updated: December 28th, 2011
 // ==============================================
 
-#include <common/command/command.qh>
+#include <common/command/_mod.qh>
 #include "cl_cmd.qh"
 
 #include "../autocvars.qh"
 #include "../defs.qh"
-#include <client/hud/all.qh>
+#include <client/hud/_mod.qh>
 #include "../main.qh"
 #include "../mapvoting.qh"
 #include "../miscfunctions.qh"
@@ -18,8 +18,6 @@
 
 #include <common/mapinfo.qh>
 
-#include <common/command/generic.qh>
-
 void DrawDebugModel(entity this)
 {
        if (time - floor(time) > 0.5)
index d6ee5f8f79add97bf2dfded05615e01788260bab..0643bb09d5b37e3bdd7b014f13964959ab837484 100644 (file)
@@ -3,6 +3,7 @@
 #include "player_skeleton.qh"
 #include "weapons/projectile.qh"
 #include <common/animdecide.qh>
+#include <common/ent_cs.qh>
 #include <common/physics/movetypes/movetypes.qh>
 #include <common/viewloc.qh>
 #include <lib/csqcmodel/cl_model.qh>
@@ -192,7 +193,7 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer)
        bool isfriend;
        int cm;
        cm = this.forceplayermodels_savecolormap;
-       cm = (cm >= 1024) ? cm : (stof(getplayerkeyvalue(cm - 1, "colors")) + 1024);
+       cm = (cm >= 1024) ? cm : (entcs_GetClientColors(cm - 1) + 1024);
 
        if(teamplay)
                isfriend = (cm == 1024 + 17 * myteam);
@@ -279,7 +280,7 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer)
 
        // GLOWMOD AND DEATH FADING
        if(this.colormap > 0)
-               this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : stof(getplayerkeyvalue(this.colormap - 1, "colors"))) & 0x0F, true) * 2;
+               this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : entcs_GetClientColors(this.colormap - 1)) & 0x0F, true) * 2;
        else
                this.glowmod = '1 1 1';
 
index b90f61b8cc443286de41af3507cfbf146f8c988c..aa785a9e94c5524789bf7e47dbe0adeebe6ed8c3 100644 (file)
@@ -1,3 +1,6 @@
 // generated file; do not modify
 #include <client/hud/hud.qc>
 #include <client/hud/hud_config.qc>
+#include <client/hud/panel.qc>
+
+#include <client/hud/panel/_mod.inc>
index ee9ac8f76f56736a9f05f6d0a60834abf3849b99..2d4850d521d360565cacf66e4dabf3e7949f6d66 100644 (file)
@@ -1,3 +1,6 @@
 // generated file; do not modify
 #include <client/hud/hud.qh>
 #include <client/hud/hud_config.qh>
+#include <client/hud/panel.qh>
+
+#include <client/hud/panel/_mod.qh>
diff --git a/qcsrc/client/hud/all.inc b/qcsrc/client/hud/all.inc
deleted file mode 100644 (file)
index 8305304..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "panel/weapons.qc"
-#include "panel/ammo.qc"
-#include "panel/powerups.qc"
-#include "panel/healtharmor.qc"
-#include "panel/notify.qc"
-#include "panel/timer.qc"
-#include "panel/radar.qc"
-#include "panel/score.qc"
-#include "panel/racetimer.qc"
-#include "panel/vote.qc"
-#include "panel/modicons.qc"
-#include "panel/pressedkeys.qc"
-#include "panel/chat.qc"
-#include "panel/engineinfo.qc"
-#include "panel/infomessages.qc"
-#include "panel/physics.qc"
-#include "panel/centerprint.qc"
-#include "panel/minigame.qc"
-// #include "panel/mapvote.qc"
-// #include "panel/itemstime.qc"
-#include "panel/quickmenu.qc"
-#include "panel/scoreboard.qc"
diff --git a/qcsrc/client/hud/all.qh b/qcsrc/client/hud/all.qh
deleted file mode 100644 (file)
index 2e458e6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-#include "hud.qh"
-#include "hud_config.qh"
index f48d789c3ce55fd990684007217db724cc8d349f..d200e2c6c522e67f05b009f301f9a03f5677d9db 100644 (file)
@@ -6,7 +6,7 @@
 #include "../teamradar.qh"
 #include <common/t_items.qh>
 #include <common/deathtypes/all.qh>
-#include <common/items/all.qc>
+#include <common/items/_mod.qh>
 #include <common/mapinfo.qh>
 #include <common/vehicles/all.qh>
 #include <common/mutators/mutator/waypoints/all.qh>
@@ -335,8 +335,6 @@ void DrawNumIcon(vector myPos, vector mySize, float x, string icon, bool vertica
        DrawNumIcon_expanding(myPos, mySize, x, icon, vertical, icon_right_align, color, theAlpha, 0);
 }
 
-#include "all.inc"
-
 /*
 ==================
 Main HUD system
@@ -358,6 +356,8 @@ void HUD_Vehicle()
        }
 }
 
+bool HUD_Minigame_Showpanels();
+
 void HUD_Panel_Draw(entity panent)
 {
        panel = panent;
@@ -433,6 +433,7 @@ bool Hud_Shake_Update()
        return true;
 }
 
+entity CSQCModel_server2csqc(int i);
 void calc_followmodel_ofs(entity view);
 void Hud_Dynamic_Frame()
 {
@@ -555,11 +556,11 @@ void HUD_Main()
                {
                        string hud_dock_color = autocvar_hud_dock_color;
                        if(hud_dock_color == "shirt") {
-                               f = stof(getplayerkeyvalue(current_player, "colors"));
+                               f = entcs_GetClientColors(current_player);
                                color = colormapPaletteColor(floor(f / 16), 0);
                        }
                        else if(hud_dock_color == "pants") {
-                               f = stof(getplayerkeyvalue(current_player, "colors"));
+                               f = entcs_GetClientColors(current_player);
                                color = colormapPaletteColor(f % 16, 1);
                        }
                        else
index d7b4585b709c05839658cdf6986461d773fb3740..5087fa526929a086937b16d0dadb3463739045a1 100644 (file)
@@ -1,6 +1,6 @@
 #pragma once
 
-#include <common/weapons/all.qh>
+#include <common/weapons/_all.qh>
 
 bool HUD_Radar_Clickable();
 void HUD_Radar_Mouse();
@@ -280,9 +280,9 @@ REGISTER_HUD_PANEL(SCOREBOARD,      Scoreboard_Draw,    scoreboard,     PANEL_CO
                        panel_bg_color = autocvar_hud_panel_bg_color;                                                           \
                } else {                                                                                                    \
                        if (panel_bg_color_str == "shirt") {                                                                    \
-                               panel_bg_color = colormapPaletteColor(floor(stof(getplayerkeyvalue(current_player, "colors")) / 16), 0); \
+                               panel_bg_color = colormapPaletteColor(floor(entcs_GetClientColors(current_player) / 16), 0); \
                        } else if (panel_bg_color_str == "pants") {                                                             \
-                               panel_bg_color = colormapPaletteColor(stof(getplayerkeyvalue(current_player, "colors")) % 16, 1); \
+                               panel_bg_color = colormapPaletteColor(entcs_GetClientColors(current_player) % 16, 1); \
                        } else {                                                                                                \
                                panel_bg_color = stov(panel_bg_color_str);                                                          \
                        }                                                                                                       \
diff --git a/qcsrc/client/hud/panel.qc b/qcsrc/client/hud/panel.qc
new file mode 100644 (file)
index 0000000..558f320
--- /dev/null
@@ -0,0 +1 @@
+#include "panel.qh"
index d495fdee7670c8874ee45388484abd996092624c..7a95752132c43f3764da1a067db10667ba87c4bd 100644 (file)
@@ -15,7 +15,7 @@
 #include <client/hud/panel/racetimer.qc>
 #include <client/hud/panel/radar.qc>
 #include <client/hud/panel/score.qc>
+#include <client/hud/panel/scoreboard.qc>
 #include <client/hud/panel/timer.qc>
 #include <client/hud/panel/vote.qc>
 #include <client/hud/panel/weapons.qc>
-#include <client/hud/panel/scoreboard.qc>
index fa9b755309da1b4e2b90810e32179230189bd5b9..c24b5c0002876d29d4beca731325ca828004c4e3 100644 (file)
@@ -15,7 +15,7 @@
 #include <client/hud/panel/racetimer.qh>
 #include <client/hud/panel/radar.qh>
 #include <client/hud/panel/score.qh>
+#include <client/hud/panel/scoreboard.qh>
 #include <client/hud/panel/timer.qh>
 #include <client/hud/panel/vote.qh>
 #include <client/hud/panel/weapons.qh>
-#include <client/hud/panel/scoreboard.qh>
index 6db88c68b39ee50fce1f8acce9c778465a3223ae..71919d2fb094d48f6c0967de3b4a53cd39ffc453 100644 (file)
@@ -1,2 +1,4 @@
 #pragma once
 #include "../panel.qh"
+
+void DrawNadeProgressBar(vector myPos, vector mySize, float progress, vector color);
index 6db88c68b39ee50fce1f8acce9c778465a3223ae..1bec93efa644c684b35340f4973280742b259925 100644 (file)
@@ -1,2 +1,4 @@
 #pragma once
 #include "../panel.qh"
+
+void reset_centerprint_messages();
index 7542e0a81efd9896be632f4162929836fb67a368..7c454f9f9001ff695115234408f7c571f8d93a25 100644 (file)
@@ -1,6 +1,6 @@
 #include "powerups.qh"
 
-#include <common/items/all.qc>
+#include <common/items/_mod.qh>
 
 // Powerups (#2)
 
index 6db88c68b39ee50fce1f8acce9c778465a3223ae..3235f8da674507aa494cf3e7e8c29aa132db6bc0 100644 (file)
@@ -1,2 +1,4 @@
 #pragma once
 #include "../panel.qh"
+
+void addPowerupItem(string name, string icon, vector color, float currentTime, float lifeTime);
index 69d57908788f10512a5bb3ee8d9de162ac65aca5..65997f46ebb0a9199ff8dde59756e88663b6d593 100644 (file)
@@ -1,7 +1,7 @@
 #include "quickmenu.qh"
 
 #include <common/ent_cs.qh>
-#include <client/hud/all.qh>
+#include <client/hud/_mod.qh>
 #include <client/mapvoting.qh>
 
 // QuickMenu (#23)
index 7e846849fd7ca28320c11df620bb288e1aae2ccc..b4a0680bf7ba8f113f08e680219ab16d0cc7714d 100644 (file)
@@ -607,7 +607,7 @@ string Scoreboard_GetField(entity pl, PlayerScoreField field)
                        }
                        else if(!teamplay)
                        {
-                               f = stof(getplayerkeyvalue(pl.sv_entnum, "colors"));
+                               f = entcs_GetClientColors(pl.sv_entnum);
                                {
                                        sbt_field_icon0 = "gfx/scoreboard/playercolor_base";
                                        sbt_field_icon1 = "gfx/scoreboard/playercolor_shirt";
@@ -788,10 +788,7 @@ vector Scoreboard_DrawHeader(vector pos, vector rgb)
                        if (sbt_highlight)
                                if (!(i % 2))
                                {
-                                       if (i == sbt_num_fields-1)
-                                               column_dim.x = sbt_field_size[i] + hud_fontsize.x * 0.5;
-                                       else
-                                               column_dim.x = sbt_field_size[i] + hud_fontsize.x;
+                                       column_dim.x = sbt_field_size[i] + hud_fontsize.x;
                                        drawfill(pos - eX * hud_fontsize.x * 0.5, column_dim, '0 0 0', sbt_highlight_alpha, DRAWFLAG_NORMAL);
                                }
 
@@ -811,8 +808,6 @@ void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, i
     TC(bool, is_self); TC(int, pl_number);
        string str;
        bool is_spec = (entcs_GetTeam(pl.sv_entnum) == NUM_SPECTATOR);
-       if(is_spec && !is_self)
-               rgb = '0 0 0';
 
        vector h_pos = item_pos;
        vector h_size = eX * panel_size.x + eY * hud_fontsize.y * 1.25;
@@ -1073,7 +1068,7 @@ vector Scoreboard_AccuracyStats_Draw(vector pos, vector rgb, vector bg_size)
 
                // row highlighting
                for (int i = 0; i < rows; ++i)
-                       drawfill(pos + eY * weapon_height + eY * height * i, eX * tmp.x + eY * fontsize, '1 1 1', sbt_highlight_alpha, DRAWFLAG_NORMAL);
+                       drawfill(pos + eY * weapon_height + eY * height * i, eX * tmp.x + eY * fontsize, rgb, sbt_highlight_alpha, DRAWFLAG_NORMAL);
        }
 
        average_accuracy = 0;
@@ -1430,7 +1425,7 @@ void Scoreboard_Draw()
                if(pl.team != NUM_SPECTATOR)
                        continue;
                pos.y += 1.25 * hud_fontsize.y;
-               Scoreboard_DrawItem(pos, panel_bg_color, pl, (pl.sv_entnum == player_localnum), specs);
+               Scoreboard_DrawItem(pos, '0 0 0', pl, (pl.sv_entnum == player_localnum), specs);
                ++specs;
        }
 
index c5e47237b17b995a16d29cf06a5d5c9964c769df..d49548084a3e04726242bff8bfafd36f63c42daf 100644 (file)
@@ -1,7 +1,7 @@
 #include "main.qh"
 
 #include <common/effects/qc/all.qh>
-#include "hud/all.qh"
+#include "hud/_mod.qh"
 #include "mapvoting.qh"
 #include "mutators/events.qh"
 #include "hud/panel/scoreboard.qh"
@@ -11,7 +11,7 @@
 #include "wall.qh"
 #include "weapons/projectile.qh"
 #include <common/deathtypes/all.qh>
-#include <common/items/all.qh>
+#include <common/items/_mod.qh>
 #include <common/mapinfo.qh>
 #include <common/minigames/cl_minigames.qh>
 #include <common/minigames/cl_minigames_hud.qh>
index afd0b5e38c96be69d22b400022a0be49429a786a..9da7547299dd013e27e8e93731fc7599b70948f3 100644 (file)
@@ -1,7 +1,7 @@
 #pragma once
 
 #include <common/constants.qh>
-#include <common/weapons/all.qh>
+#include <common/weapons/_all.qh>
 
 // --------------------------------------------------------------------------
 // MENU Functionality
@@ -126,7 +126,7 @@ const int HOOK_END =      2;
 
 float g_trueaim_minrange;
 
-float hud;
+int hud;
 float view_quality;
 
 int num_spectators;
index b2b5daa73dbf3b08065da65badc3f4f6487ee64b..72b60b5bd378097c74ed43b3b754328dc0b7d435 100644 (file)
@@ -1,6 +1,6 @@
 #include "mapvoting.qh"
 
-#include "hud/all.qh"
+#include "hud/_mod.qh"
 #include "hud/panel/scoreboard.qh"
 
 #include <common/mapinfo.qh>
index 01b0ee3cb440c09d4b00503500f9a2561d697fd7..33fd015cce8f8724a5403d6024b3ea7f79a1f379 100644 (file)
@@ -1,8 +1,8 @@
 #include "miscfunctions.qh"
 
-#include "hud/all.qh"
+#include "hud/_mod.qh"
 
-#include <common/command/generic.qh>
+#include <common/command/_mod.qh>
 
 #include <common/teams.qh>
 
index 98fb4815c1ce28cc699a429537ea75c2643b4487..3dfd4f78974b38371a435762abe7eaa35f611c85 100644 (file)
@@ -1 +1,2 @@
 // generated file; do not modify
+#include <client/mutators/events.qc>
index 98fb4815c1ce28cc699a429537ea75c2643b4487..b54ee489cf0909a46d34a92a313124cd27d80619 100644 (file)
@@ -1 +1,2 @@
 // generated file; do not modify
+#include <client/mutators/events.qh>
diff --git a/qcsrc/client/mutators/events.qc b/qcsrc/client/mutators/events.qc
new file mode 100644 (file)
index 0000000..c2dbb70
--- /dev/null
@@ -0,0 +1 @@
+#include "events.qh"
index b72f7abe1a3bdcb8cef50d10333d6f997259299a..a852fdbe472437e96c4ffbbf9a2f5bd498f2335a 100644 (file)
@@ -142,3 +142,6 @@ MUTATOR_HOOKABLE(DrawGrapplingHook, EV_DrawGrapplingHook);
        /** is new to client */ i(bool, MUTATOR_ARGV_1_bool) \
        /**/
 MUTATOR_HOOKABLE(Ent_Update, EV_Ent_Update);
+
+/** Return true to not draw crosshair */
+MUTATOR_HOOKABLE(DrawCrosshair, EV_NO_ARGS);
index 48579ecbb3018b131203cbe08ea5231a427f560f..327df77c25fd6583f6fe7365bf931f61cc52400d 100644 (file)
@@ -1,32 +1,11 @@
 #include <lib/_all.inc>
 
 #if XONOTIC
-
-#include "_all.qh"
-
-#include "../client/_mod.inc"
-#include "commands/_mod.inc"
-#include "hud/_mod.inc"
-#include "mutators/_mod.inc"
-#include "weapons/_mod.inc"
-
-#include <common/_all.inc>
-#include <common/effects/qc/all.qc>
-
-#include <lib/csqcmodel/cl_model.qc>
-#include <lib/csqcmodel/cl_player.qc>
-#include <lib/csqcmodel/interpolate.qc>
-
-#include <lib/warpzone/anglestransform.qc>
-#include <lib/warpzone/common.qc>
-#include <lib/warpzone/client.qc>
-#include <lib/warpzone/server.qc>
-#include <lib/warpzone/util_server.qc>
-
+#include <client/_all.inc>
 #endif
 
-#include <ecs/_lib.inc>
+#include <ecs/_mod.inc>
 
-#if BUILD_MOD
-#include "../../mod/client/progs.inc"
+#ifdef BUILD_MOD
+#include <mod/client/progs.inc>
 #endif
index 165b033fb3558c8197e6e758b4dd4b39f3156f4e..75ef40521ea443504048bb7669c161db0f671fda 100644 (file)
@@ -1,6 +1,6 @@
 #include "shownames.qh"
 
-#include "hud/all.qh"
+#include "hud/_mod.qh"
 
 #include <common/ent_cs.qh>
 #include <common/constants.qh>
index ab14cd3bf38d04a89d48ead845339bcbf582e271..9c4544bba08c0afce4ed04c14b8546d979da4d70 100644 (file)
@@ -1,6 +1,6 @@
 #include "teamradar.qh"
 
-#include "hud/all.qh"
+#include "hud/_mod.qh"
 
 #include <common/mutators/mutator/waypoints/all.qh>
 
index c13b4b5a5d1479f938f15c1f469e606b6d74cd9b..db05c4fe3ff1f2fcaf21b3b412b8a749374113f3 100644 (file)
@@ -1,7 +1,7 @@
 #include "view.qh"
 
 #include "announcer.qh"
-#include "hud/all.qh"
+#include "hud/_mod.qh"
 #include "mapvoting.qh"
 #include "shownames.qh"
 #include "hud/panel/scoreboard.qh"
 #include <common/constants.qh>
 #include <common/debug.qh>
 #include <common/mapinfo.qh>
-#include <common/gamemodes/all.qh>
+#include <common/gamemodes/_mod.qh>
 #include <common/physics/player.qh>
 #include <common/stats.qh>
 #include <common/triggers/target/music.qh>
 #include <common/teams.qh>
 
 #include <common/vehicles/all.qh>
-#include <common/weapons/all.qh>
+#include <common/weapons/_all.qh>
 #include <common/viewloc.qh>
 #include <common/minigames/cl_minigames.qh>
 #include <common/minigames/cl_minigames_hud.qh>
@@ -293,7 +293,7 @@ void viewmodel_draw(entity this)
        else if (wasinvehicle) a = 1;
        wasinvehicle = invehicle;
        Weapon wep = activeweapon;
-       int c = stof(getplayerkeyvalue(current_player, "colors"));
+       int c = entcs_GetClientColors(current_player);
        vector g = weaponentity_glowmod(wep, c);
        entity me = CSQCModel_server2csqc(player_localentnum - 1);
        int fx = ((me.csqcmodel_effects & EFMASK_CHEAP)
@@ -937,7 +937,7 @@ void HUD_Crosshair(entity this)
        float f, i, j;
        vector v;
        if(!scoreboard_active && !camera_active && intermission != 2 &&
-               spectatee_status != -1 && !csqcplayer.viewloc &&
+               spectatee_status != -1 && !csqcplayer.viewloc && !MUTATOR_CALLHOOK(DrawCrosshair) &&
                !HUD_MinigameMenu_IsOpened() )
        {
                if (!autocvar_crosshair_enabled) // main toggle for crosshair rendering
@@ -1337,6 +1337,11 @@ void HUD_Draw(entity this)
                DrawCircleClippedPic(eX * 0.5 * vid_conwidth + eY * 0.6 * vid_conheight, 0.1 * vid_conheight, "gfx/crosshair_ring.tga", STAT(NADE_TIMER), '0.25 0.90 1' + ('1 0 0' * STAT(NADE_TIMER)) - ('0 1 1' * STAT(NADE_TIMER)), autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE);
                drawstring_aspect(eY * 0.64 * vid_conheight, ((autocvar_cl_nade_timer == 2) ? _("Nade timer") : ""), eX * vid_conwidth + eY * 0.025 * vid_conheight, '1 1 1', 1, DRAWFLAG_NORMAL);
        }
+       else if(STAT(CAPTURE_PROGRESS))
+       {
+               DrawCircleClippedPic(eX * 0.5 * vid_conwidth + eY * 0.6 * vid_conheight, 0.1 * vid_conheight, "gfx/crosshair_ring.tga", STAT(CAPTURE_PROGRESS), '0.25 0.90 1', autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE);
+               drawstring_aspect(eY * 0.64 * vid_conheight, _("Capture progress"), eX * vid_conwidth + eY * 0.025 * vid_conheight, '1 1 1', 1, DRAWFLAG_NORMAL);
+       }
        else if(STAT(REVIVE_PROGRESS))
        {
                DrawCircleClippedPic(eX * 0.5 * vid_conwidth + eY * 0.6 * vid_conheight, 0.1 * vid_conheight, "gfx/crosshair_ring.tga", STAT(REVIVE_PROGRESS), '0.25 0.90 1', autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE);
@@ -1368,6 +1373,7 @@ float oldr_useportalculling;
 float oldr_useinfinitefarclip;
 
 void cl_notice_run();
+
 float prev_myteam;
 int lasthud;
 float vh_notice_time;
@@ -1828,8 +1834,7 @@ void CSQC_UpdateView(entity this, float w, float h)
        else if(csqcplayer.viewloc) { setproperty(VF_FOV, GetViewLocationFOV(110)); } // enforce 110 fov, so things dont look odd
        else { setproperty(VF_FOV, GetCurrentFov(fov)); }
 
-       // Camera for demo playback
-       if(camera_active)
+       if(camera_active) // Camera for demo playback
        {
                if(autocvar_camera_enable)
                        CSQC_Demo_Camera();
index b16c24fb47086179068f433c7b93a057f28836c0..f528eee6db46aab5a426d78d60739db50ae83f7d 100644 (file)
@@ -1,6 +1,6 @@
 float autocvar_net_connecttimeout = 30;
 
-#ifndef MENUQC
+#ifdef GAMEQC
 #include "anim.qc"
 #include "animdecide.qc"
 #include "ent_cs.qc"
@@ -19,19 +19,21 @@ float autocvar_net_connecttimeout = 30;
 #include "campaign_setup.qc"
 #endif
 
-#ifndef MENUQC
+#ifdef GAMEQC
 #include "physics/all.inc"
 #include "triggers/include.qc"
 #include "viewloc.qc"
 #endif
 
-#ifndef MENUQC
+#ifdef GAMEQC
 #include "minigames/minigames.qc"
 #endif
 
 #include "debug.qh"
 
-#ifndef MENUQC
+#include "command/_mod.inc"
+
+#ifdef GAMEQC
 #include "deathtypes/all.qc"
 #include "effects/all.qc"
 #include "impulses/all.qc"
@@ -40,7 +42,7 @@ float autocvar_net_connecttimeout = 30;
 #endif
 
 #include "items/_mod.inc"
-    #include "weapons/all.qc"
+    #include "weapons/_all.inc"
         #include "monsters/all.qc"
         #include "turrets/all.qc"
         #include "vehicles/all.qc"
index a8bbe8e856c430a7fdfaf85e9ab5a4988c96a13d..af81942a2001753c36e9fb1cebdadc6ae283b2bb 100644 (file)
@@ -1,3 +1,4 @@
+#include "campaign_file.qh"
 #if defined(CSQC)
 #elif defined(MENUQC)
 #elif defined(SVQC)
diff --git a/qcsrc/common/campaign_file.qh b/qcsrc/common/campaign_file.qh
new file mode 100644 (file)
index 0000000..6f70f09
--- /dev/null
@@ -0,0 +1 @@
+#pragma once
index 8c20c755c31a33881a6b37933d464b63ab5bb329..258d47f452bef14facee6dc58a693086b05caded 100644 (file)
@@ -1,3 +1,4 @@
+#include "campaign_setup.qh"
 #if defined(CSQC)
 #elif defined(MENUQC)
 #elif defined(SVQC)
diff --git a/qcsrc/common/campaign_setup.qh b/qcsrc/common/campaign_setup.qh
new file mode 100644 (file)
index 0000000..6f70f09
--- /dev/null
@@ -0,0 +1 @@
+#pragma once
index d2d24f03d901cb0775702698267551e80eabb7d9..e3099980edfca432898b372a6086463f04680b88 100644 (file)
@@ -1,5 +1,5 @@
 // generated file; do not modify
-#include <common/command/all.qc>
 #include <common/command/generic.qc>
 #include <common/command/markup.qc>
+#include <common/command/reg.qc>
 #include <common/command/rpn.qc>
index 440bdcb13460d5486a642803de0604d0a82ba58d..6ca293773c6c51b42551693bd54b1ad397db4d52 100644 (file)
@@ -1,5 +1,5 @@
 // generated file; do not modify
-#include <common/command/all.qh>
 #include <common/command/generic.qh>
 #include <common/command/markup.qh>
+#include <common/command/reg.qh>
 #include <common/command/rpn.qh>
diff --git a/qcsrc/common/command/all.qc b/qcsrc/common/command/all.qc
deleted file mode 100644 (file)
index dc1c044..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "generic.qc"
-#include "markup.qc"
-#include "rpn.qc"
diff --git a/qcsrc/common/command/all.qh b/qcsrc/common/command/all.qh
deleted file mode 100644 (file)
index 15285b9..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include "command.qh"
-REGISTRY(GENERIC_COMMANDS, BITS(7))
-#define GENERIC_COMMANDS_from(i) _GENERIC_COMMANDS_from(i, NULL)
-REGISTER_REGISTRY(GENERIC_COMMANDS)
-REGISTRY_SORT(GENERIC_COMMANDS)
-
-#define GENERIC_COMMAND(id, description) \
-       CLASS(genericcommand_##id, Command) \
-               ATTRIB(genericcommand_##id, m_name, string, #id); \
-       ATTRIB(genericcommand_##id, m_description, string, description); \
-       ENDCLASS(genericcommand_##id) \
-    REGISTER(GENERIC_COMMANDS, CMD_G, id, m_id, NEW(genericcommand_##id)); \
-       METHOD(genericcommand_##id, m_invokecmd, void(genericcommand_##id this, int request, entity caller, int arguments, string command))
-
-STATIC_INIT(GENERIC_COMMANDS_aliases) {
-       FOREACH(GENERIC_COMMANDS, true, localcmd(sprintf("alias %1$s \"%2$s %1$s ${* ?}\"\n", it.m_name, "qc_cmd_svmenu")));
-}
-
-#include "generic.qh"
-#include "markup.qh"
-#include "rpn.qh"
index 8f3449b3e16cfaef91bcc8b0b0bd47171deb8523..49a9d130989015125f171c6dedfa59561fd7ace2 100644 (file)
@@ -1,11 +1,13 @@
-#include "all.qh"
+#include "generic.qh"
+#include "_mod.qh"
+#include "reg.qh"
 
 #include "markup.qh"
 #include "rpn.qh"
 
 #include "../mapinfo.qh"
 
-#ifndef MENUQC
+#ifdef GAMEQC
        #include "../notifications/all.qh"
 #endif
 
 #endif
 
 #ifdef SVQC
-       #include <server/command/banning.qh>
-       #include <server/command/cmd.qh>
-       #include <server/command/common.qh>
-       #include <server/command/sv_cmd.qh>
+       #include <server/command/_mod.qh>
        #include <common/turrets/config.qh>
        #include <common/weapons/config.qh>
 #endif
@@ -374,7 +373,7 @@ void GenericCommand_restartnotifs(float request)
        {
                case CMD_REQUEST_COMMAND:
                {
-                       #ifndef MENUQC
+                       #ifdef GAMEQC
                        int NOTIF_ANNCE_COUNT   = 0; FOREACH(Notifications, it.nent_type == MSG_ANNCE,   { ++NOTIF_ANNCE_COUNT;  });
                        int NOTIF_INFO_COUNT    = 0; FOREACH(Notifications, it.nent_type == MSG_INFO,    { ++NOTIF_INFO_COUNT;   });
                        int NOTIF_CENTER_COUNT  = 0; FOREACH(Notifications, it.nent_type == MSG_CENTER,  { ++NOTIF_CENTER_COUNT; });
index 583c61e5517d89d046869c1d3ca3050714beeff0..95a3b53c54b9950b7b7dc525669c40b583f08895 100644 (file)
@@ -1,5 +1,5 @@
-#include "command.qh"
 #include "markup.qh"
+#include "command.qh"
 
 // =========================================================
 //  Markup chat characters command code, reworked by Samual
diff --git a/qcsrc/common/command/reg.qc b/qcsrc/common/command/reg.qc
new file mode 100644 (file)
index 0000000..c0af5b5
--- /dev/null
@@ -0,0 +1 @@
+#include "reg.qh"
diff --git a/qcsrc/common/command/reg.qh b/qcsrc/common/command/reg.qh
new file mode 100644 (file)
index 0000000..9868e24
--- /dev/null
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "command.qh"
+REGISTRY(GENERIC_COMMANDS, BITS(7))
+#define GENERIC_COMMANDS_from(i) _GENERIC_COMMANDS_from(i, NULL)
+REGISTER_REGISTRY(GENERIC_COMMANDS)
+REGISTRY_SORT(GENERIC_COMMANDS)
+
+#define GENERIC_COMMAND(id, description) \
+       CLASS(genericcommand_##id, Command) \
+               ATTRIB(genericcommand_##id, m_name, string, #id); \
+       ATTRIB(genericcommand_##id, m_description, string, description); \
+       ENDCLASS(genericcommand_##id) \
+    REGISTER(GENERIC_COMMANDS, CMD_G, id, m_id, NEW(genericcommand_##id)); \
+       METHOD(genericcommand_##id, m_invokecmd, void(genericcommand_##id this, int request, entity caller, int arguments, string command))
+
+STATIC_INIT(GENERIC_COMMANDS_aliases) {
+       FOREACH(GENERIC_COMMANDS, true, localcmd(sprintf("alias %1$s \"%2$s %1$s ${* ?}\"\n", it.m_name, "qc_cmd_svmenu")));
+}
index 12bb99d1d3e862b43904298c57627bb1e874b05c..f88bf635ee665b9628f0e69f0a6b1d1d58b430a8 100644 (file)
@@ -1,5 +1,5 @@
-#include "command.qh"
 #include "rpn.qh"
+#include "command.qh"
 
 
 // ========================================
index 6c775560394259816e14622b1584cb2843b34d59..80a3f5edddf0edc00831f13e54e22271a3a97bb2 100644 (file)
@@ -126,7 +126,7 @@ const int SFL_SORT_PRIO_MASK = 12;
  * Score indices
  */
 
-#ifndef MENUQC
+#ifdef GAMEQC
 
 #define IS_INCREASING(x) ( (x) & SFL_LOWER_IS_BETTER )
 #define IS_DECREASING(x) ( !((x) & SFL_LOWER_IS_BETTER) )
index 052e00f07c4df4e0548c5c3fdba01b02bceff18c..6d580bd2d69a8b65631a465d0adee730e6bca07d 100644 (file)
@@ -4,7 +4,7 @@
 .entity tag_entity;
 #endif
 
-#ifndef MENUQC
+#ifdef GAMEQC
 .bool debug;
 .int sv_entnum;
 REGISTER_NET_TEMP(net_debug)
@@ -47,7 +47,7 @@ REGISTER_NET_TEMP(net_debug)
        }
 #endif
 
-#ifndef MENUQC
+#ifdef GAMEQC
 /**
  * 0: off
  * 1: on
index 6975259c17783f683e86e5717d0198e1e0106f51..d5dab8cad27418e143cb9aa8bf63f962e061711e 100644 (file)
@@ -1,3 +1,5 @@
 // generated file; do not modify
 #include <common/effects/all.qc>
 #include <common/effects/effectinfo.qc>
+
+#include <common/effects/qc/_mod.inc>
index 3f5ed82198904e347d7ad9850c4fab8eb4e6c8a2..8d6e8ed18c98e59ad7e3943100732bcb6b862932 100644 (file)
@@ -1,3 +1,5 @@
 // generated file; do not modify
 #include <common/effects/all.qh>
 #include <common/effects/effectinfo.qh>
+
+#include <common/effects/qc/_mod.qh>
index cf6d5fca9395a29b8985a1e059522bd1a5f8206e..f662aee7b2a0e4b8d097537308cf96a98f6a1e41 100644 (file)
@@ -1,3 +1,4 @@
+#include "effectinfo.qh"
 #define EFFECTINFO_PARSER(on, MY) \
     on(type,                                        MY(type) \
     ,{ demand(n == 1 && "type");                    MY(type) = strzone(argv(1)); \
diff --git a/qcsrc/common/effects/effectinfo.qh b/qcsrc/common/effects/effectinfo.qh
new file mode 100644 (file)
index 0000000..6f70f09
--- /dev/null
@@ -0,0 +1 @@
+#pragma once
index f92df7cd0edba6770769114dba75f8a4d4970fd9..d0befbb7ed04705feb92bb01e63d291011003bed 100644 (file)
@@ -1,3 +1,4 @@
+#include "casings.qh"
 #ifdef SVQC
 void SpawnCasing(vector vel, float randomvel, vector ang, vector avel, float randomavel, int casingtype, entity casingowner, .entity weaponentity);
 #endif
diff --git a/qcsrc/common/effects/qc/casings.qh b/qcsrc/common/effects/qc/casings.qh
new file mode 100644 (file)
index 0000000..6f70f09
--- /dev/null
@@ -0,0 +1 @@
+#pragma once
index d17502e81ba99fcf0c11eb49c2182c0a0c4fce1d..71e1e2a7bcdd96dcf3f72629d7e147d4db03aab3 100644 (file)
@@ -1,15 +1,4 @@
-#ifndef DAMAGEEFFECTS_H
-#define DAMAGEEFFECTS_H
-
-#ifdef CSQC
-#include <common/deathtypes/all.qh>
-#include <common/physics/movetypes/movetypes.qh>
-#include <client/mutators/events.qh>
-#include <common/vehicles/all.qh>
-#include <common/weapons/all.qh>
-#endif
-
-#endif
+#include "damageeffects.qh"
 
 #ifdef IMPLEMENTATION
 
diff --git a/qcsrc/common/effects/qc/damageeffects.qh b/qcsrc/common/effects/qc/damageeffects.qh
new file mode 100644 (file)
index 0000000..2a1d587
--- /dev/null
@@ -0,0 +1,9 @@
+#pragma once
+
+#ifdef CSQC
+#include <common/deathtypes/all.qh>
+#include <common/physics/movetypes/movetypes.qh>
+#include <client/mutators/events.qh>
+#include <common/vehicles/all.qh>
+#include <common/weapons/_all.qh>
+#endif
index 573b52f22cc83986e0755f87b76ff44dabdda777..d60b2e8a65892bd33f4d0b285ce00328b2b095a0 100644 (file)
@@ -6,7 +6,7 @@
        #include <common/animdecide.qh>
 
        #ifdef SVQC
-               #include <server/cl_player.qh>
+               #include <server/player.qh>
        #endif
 
        REGISTER_NET_TEMP(globalsound)
index 2a7b3f80c485ef413e246028834d20ad38d8156b..41183d85b21d5c505b4becc57bba4f1df396971c 100644 (file)
        PROP(true, skin, \
        { WriteByte(chan, this.skin); }, \
        { this.skin = ReadByte(); }) \
+    \
+    PROP(true, clientcolors, \
+       { WriteByte(chan, this.clientcolors); }, \
+       { this.colormap = ReadByte(); }) \
+    \
+    PROP(true, frags, \
+       { WriteShort(chan, this.frags); }, \
+       { this.frags = ReadShort(); }) \
     \
        /**/
 
index fdaaab2d57c0f37be4345a824a3892a3fdd90e51..65cdd83d3a71f4f5df325a8e90b727d936cb1300 100644 (file)
@@ -58,10 +58,21 @@ REGISTER_NET_TEMP(CLIENT_ENTCS)
        /**
      * @param i zero indexed player
      */
+    .int frags;
        bool entcs_IsSpectating(int i)
        {
                bool unconnected = !playerslots[i].gotscores;
-               return unconnected || stof(getplayerkeyvalue(i, "frags")) == FRAGS_SPECTATOR;
+               entity e = entcs_receiver(i);
+               return unconnected || ((e) ? e.frags : stof(getplayerkeyvalue(i, "frags"))) == FRAGS_SPECTATOR;
+       }
+
+       /**
+     * @param i zero indexed player
+     */
+       int entcs_GetClientColors(int i)
+       {
+               entity e = entcs_receiver(i);
+               return e ? e.colormap : stof(getplayerkeyvalue(i, "colors"));
        }
 
        /**
@@ -70,7 +81,7 @@ REGISTER_NET_TEMP(CLIENT_ENTCS)
        */
        int entcs_GetTeamColor(int i)
        {
-               return (!teamplay) ? 0 : stof(getplayerkeyvalue(i, "colors")) & 15;
+               return (!teamplay) ? 0 : entcs_GetClientColors(i) & 15;
        }
 
        /**
@@ -97,7 +108,8 @@ REGISTER_NET_TEMP(CLIENT_ENTCS)
        */
        string entcs_GetName(int i)
        {
-               return ColorTranslateRGB(getplayerkeyvalue(i, "name"));
+               entity e = entcs_receiver(i);
+               return ColorTranslateRGB(e ? e.netname : getplayerkeyvalue(i, "name"));
        }
 
     /**
@@ -126,7 +138,7 @@ REGISTER_NET_TEMP(CLIENT_ENTCS)
                       ? '1 1 1'
                           : colormapPaletteColor(((e.colormap >= 1024)
                        ? e.colormap
-                       : stof(getplayerkeyvalue(e.colormap - 1, "colors"))) & 15, true)
+                       : entcs_GetClientColors(e.colormap - 1)) & 15, true)
                ;
        }
 
index 0b779498b186ad5a57ba3373155f79baa6969a22..c3cec69dc5268cddd04a9afb11e422e4bf3b3a71 100644 (file)
@@ -1,2 +1,3 @@
 // generated file; do not modify
-#include <common/gamemodes/all.qc>
+
+#include <common/gamemodes/gamemode/_mod.inc>
index a7b7a54af44b8c2777885d56b7d38a48911ba5e8..685c277b4e18bf7771f2852d40138ad39dc14063 100644 (file)
@@ -1,2 +1,3 @@
 // generated file; do not modify
-#include <common/gamemodes/all.qh>
+
+#include <common/gamemodes/gamemode/_mod.qh>
diff --git a/qcsrc/common/gamemodes/all.inc b/qcsrc/common/gamemodes/all.inc
deleted file mode 100644 (file)
index bcdcd7c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "gamemode/nexball/module.inc"
-#include "gamemode/onslaught/module.inc"
diff --git a/qcsrc/common/gamemodes/all.qc b/qcsrc/common/gamemodes/all.qc
deleted file mode 100644 (file)
index f0fc719..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "all.qh"
-
-#define IMPLEMENTATION
-#include "all.inc"
-#undef IMPLEMENTATION
diff --git a/qcsrc/common/gamemodes/all.qh b/qcsrc/common/gamemodes/all.qh
deleted file mode 100644 (file)
index 62ba616..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GAMEMODES_ALL_H
-#define GAMEMODES_ALL_H
-
-#include "all.inc"
-
-#endif
index 98fb4815c1ce28cc699a429537ea75c2643b4487..2fc2c404678883117dcd9205365e36317f5e997e 100644 (file)
@@ -1 +1,4 @@
 // generated file; do not modify
+
+#include <common/gamemodes/gamemode/nexball/_mod.inc>
+#include <common/gamemodes/gamemode/onslaught/_mod.inc>
index 98fb4815c1ce28cc699a429537ea75c2643b4487..d79957012609493478bdf9e0a03ea2116fec63c3 100644 (file)
@@ -1 +1,4 @@
 // generated file; do not modify
+
+#include <common/gamemodes/gamemode/nexball/_mod.qh>
+#include <common/gamemodes/gamemode/onslaught/_mod.qh>
diff --git a/qcsrc/common/gamemodes/gamemode/nexball/module.inc b/qcsrc/common/gamemodes/gamemode/nexball/module.inc
deleted file mode 100644 (file)
index 0d80962..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "nexball.qc"
-#include "weapon.qc"
index 0f0ecb471943ff4623627aa9cbcd9206676bf9d5..9c6c9f0803941379bb39e765980cd4bc6361b133 100644 (file)
@@ -1,6 +1,5 @@
 #include "nexball.qh"
 
-#ifdef IMPLEMENTATION
 #ifdef CSQC
 int autocvar_cl_eventchase_nexball = 1;
 
@@ -1157,4 +1156,3 @@ REGISTER_MUTATOR(nb, g_nexball)
 }
 
 #endif
-#endif
index 9dd8042be32ab87f369874e7718ca1e19feb2031..53797d2bc6d245dc7de9ee17abaa5143836a5e31 100644 (file)
@@ -1,5 +1,4 @@
-#ifndef GAMEMODE_NEXBALL_H
-#define GAMEMODE_NEXBALL_H
+#pragma once
 
 #ifdef SVQC
 //EF_BRIGHTFIELD|EF_BRIGHTLIGHT|EF_DIMLIGHT|EF_BLUE|EF_RED|EF_FLAME
@@ -35,4 +34,3 @@ float nb_teams;
 
 .float teamtime;
 #endif
-#endif
index c6aa4be215a21fca52c75cf00388f6a7de730af3..f207263535387422196ff99095a2c5d01e6c8d54 100644 (file)
@@ -1,12 +1 @@
-#ifndef GAMEMODE_NEXBALL_WEAPON_H
-#define GAMEMODE_NEXBALL_WEAPON_H
-
-CLASS(BallStealer, PortoLaunch)
-/* flags     */ ATTRIB(BallStealer, spawnflags, int, WEP_TYPE_OTHER | WEP_FLAG_HIDDEN | WEP_FLAG_MUTATORBLOCKED);
-/* impulse   */ ATTRIB(BallStealer, impulse, int, 0);
-/* refname   */ ATTRIB(BallStealer, netname, string, "ballstealer");
-/* wepname   */ ATTRIB(BallStealer, m_name, string, _("Ball Stealer"));
-ENDCLASS(BallStealer)
-REGISTER_WEAPON(NEXBALL, NEW(BallStealer));
-
-#endif
+#include "weapon.qh"
diff --git a/qcsrc/common/gamemodes/gamemode/nexball/weapon.qh b/qcsrc/common/gamemodes/gamemode/nexball/weapon.qh
new file mode 100644 (file)
index 0000000..73b8872
--- /dev/null
@@ -0,0 +1,9 @@
+#pragma once
+
+CLASS(BallStealer, PortoLaunch)
+/* flags     */ ATTRIB(BallStealer, spawnflags, int, WEP_TYPE_OTHER | WEP_FLAG_HIDDEN | WEP_FLAG_MUTATORBLOCKED);
+/* impulse   */ ATTRIB(BallStealer, impulse, int, 0);
+/* refname   */ ATTRIB(BallStealer, netname, string, "ballstealer");
+/* wepname   */ ATTRIB(BallStealer, m_name, string, _("Ball Stealer"));
+ENDCLASS(BallStealer)
+REGISTER_WEAPON(NEXBALL, NEW(BallStealer));
index 334eb561ee14fd816cfcd9113f7d9b5c1a9206af..ca8c83c19a08ecb0ba4ef9efb8203e2df13c55dd 100644 (file)
@@ -1,6 +1,19 @@
 // generated file; do not modify
-#include <common/gamemodes/gamemode/onslaught/cl_controlpoint.qc>
-#include <common/gamemodes/gamemode/onslaught/cl_generator.qc>
+#include <common/gamemodes/gamemode/onslaught/controlpoint.qc>
+#ifdef CSQC
+    #include <common/gamemodes/gamemode/onslaught/cl_controlpoint.qc>
+#endif
+#ifdef SVQC
+    #include <common/gamemodes/gamemode/onslaught/sv_controlpoint.qc>
+#endif
+#include <common/gamemodes/gamemode/onslaught/generator.qc>
+#ifdef CSQC
+    #include <common/gamemodes/gamemode/onslaught/cl_generator.qc>
+#endif
+#ifdef SVQC
+    #include <common/gamemodes/gamemode/onslaught/sv_generator.qc>
+#endif
 #include <common/gamemodes/gamemode/onslaught/onslaught.qc>
-#include <common/gamemodes/gamemode/onslaught/sv_controlpoint.qc>
-#include <common/gamemodes/gamemode/onslaught/sv_generator.qc>
+#ifdef SVQC
+    #include <common/gamemodes/gamemode/onslaught/sv_onslaught.qc>
+#endif
index e895495581e4e57bf8d7d4e97bc9b95008a13856..bb95416b310a2206e025398b432ebe699533cd4d 100644 (file)
@@ -1,6 +1,19 @@
 // generated file; do not modify
-#include <common/gamemodes/gamemode/onslaught/cl_controlpoint.qh>
-#include <common/gamemodes/gamemode/onslaught/cl_generator.qh>
+#include <common/gamemodes/gamemode/onslaught/controlpoint.qh>
+#ifdef CSQC
+    #include <common/gamemodes/gamemode/onslaught/cl_controlpoint.qh>
+#endif
+#ifdef SVQC
+    #include <common/gamemodes/gamemode/onslaught/sv_controlpoint.qh>
+#endif
+#include <common/gamemodes/gamemode/onslaught/generator.qh>
+#ifdef CSQC
+    #include <common/gamemodes/gamemode/onslaught/cl_generator.qh>
+#endif
+#ifdef SVQC
+    #include <common/gamemodes/gamemode/onslaught/sv_generator.qh>
+#endif
 #include <common/gamemodes/gamemode/onslaught/onslaught.qh>
-#include <common/gamemodes/gamemode/onslaught/sv_controlpoint.qh>
-#include <common/gamemodes/gamemode/onslaught/sv_generator.qh>
+#ifdef SVQC
+    #include <common/gamemodes/gamemode/onslaught/sv_onslaught.qh>
+#endif
index 15586ea5dcd923d6aab26966dc063d3f534fbc5b..d5437338e3fb47ac0432e6de3b027bd81a366eec 100644 (file)
@@ -1,10 +1,7 @@
-#ifndef CLIENT_CONTROLPOINT_H
-#define CLIENT_CONTROLPOINT_H
+#pragma once
 
 const vector CPICON_MIN = '-32 -32 -9';
 const vector CPICON_MAX = '32 32 25';
 
 const int CPSF_STATUS = 4;
 const int CPSF_SETUP = 8;
-
-#endif
index 3c0cf28697536f2ad234a24d6ab08c7830e7adec..49524687f42d48d7c13d150f048a1f4dc0767217 100644 (file)
@@ -1,9 +1,7 @@
-#ifndef CLIENT_GENERATOR_H
-#define CLIENT_GENERATOR_H
+#pragma once
+
 const vector GENERATOR_MIN = '-52 -52 -14';
 const vector GENERATOR_MAX = '52 52 75';
 
 const int GSF_STATUS = 4;
 const int GSF_SETUP = 8;
-
-#endif
diff --git a/qcsrc/common/gamemodes/gamemode/onslaught/controlpoint.qc b/qcsrc/common/gamemodes/gamemode/onslaught/controlpoint.qc
new file mode 100644 (file)
index 0000000..b21f5fd
--- /dev/null
@@ -0,0 +1 @@
+#include "controlpoint.qh"
diff --git a/qcsrc/common/gamemodes/gamemode/onslaught/controlpoint.qh b/qcsrc/common/gamemodes/gamemode/onslaught/controlpoint.qh
new file mode 100644 (file)
index 0000000..6f70f09
--- /dev/null
@@ -0,0 +1 @@
+#pragma once
diff --git a/qcsrc/common/gamemodes/gamemode/onslaught/generator.qc b/qcsrc/common/gamemodes/gamemode/onslaught/generator.qc
new file mode 100644 (file)
index 0000000..f9415f6
--- /dev/null
@@ -0,0 +1 @@
+#include "generator.qh"
diff --git a/qcsrc/common/gamemodes/gamemode/onslaught/generator.qh b/qcsrc/common/gamemodes/gamemode/onslaught/generator.qh
new file mode 100644 (file)
index 0000000..6f70f09
--- /dev/null
@@ -0,0 +1 @@
+#pragma once
diff --git a/qcsrc/common/gamemodes/gamemode/onslaught/module.inc b/qcsrc/common/gamemodes/gamemode/onslaught/module.inc
deleted file mode 100644 (file)
index fee33b1..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef ONS_CONSTANTS
-       #define ONS_CONSTANTS
-       REGISTER_NET_LINKED(ENT_CLIENT_GENERATOR)
-       REGISTER_NET_LINKED(ENT_CLIENT_CONTROLPOINT_ICON)
-#endif
-
-#if defined(SVQC)
-       #include "onslaught.qc"
-       #ifndef IMPLEMENTATION
-               #include "sv_controlpoint.qh"
-               #include "sv_generator.qh"
-       #else
-               #include "sv_controlpoint.qc"
-               #include "sv_generator.qc"
-       #endif
-#elif defined(CSQC)
-       #ifndef IMPLEMENTATION
-               #include "cl_controlpoint.qh"
-               #include "cl_generator.qh"
-       #else
-               #include "cl_controlpoint.qc"
-               #include "cl_generator.qc"
-       #endif
-#endif
index 713c5d7de06e3abf40c19b27f211d0759aef5a1e..36926b754b0bcb8f0c92b4f1c734d8391c3cafc6 100644 (file)
@@ -1,2258 +1 @@
-#ifndef GAMEMODE_ONSLAUGHT_H
-#define GAMEMODE_ONSLAUGHT_H
-
-float autocvar_g_onslaught_point_limit;
-void ons_Initialize();
-
-REGISTER_MUTATOR(ons, false)
-{
-       MUTATOR_ONADD
-       {
-               if (time > 1) // game loads at time 1
-                       error("This is a game type and it cannot be added at runtime.");
-               ons_Initialize();
-
-               ActivateTeamplay();
-               SetLimits(autocvar_g_onslaught_point_limit, autocvar_leadlimit_override, autocvar_timelimit_override, -1);
-               have_team_spawns = -1; // request team spawns
-       }
-
-       MUTATOR_ONROLLBACK_OR_REMOVE
-       {
-               // we actually cannot roll back ons_Initialize here
-               // BUT: we don't need to! If this gets called, adding always
-               // succeeds.
-       }
-
-       MUTATOR_ONREMOVE
-       {
-               LOG_INFO("This is a game type and it cannot be removed at runtime.");
-               return -1;
-       }
-
-       return false;
-}
-
-#ifdef SVQC
-
-.entity ons_toucher; // player who touched the control point
-
-// control point / generator constants
-const float ONS_CP_THINKRATE = 0.2;
-const float GEN_THINKRATE = 1;
-#define CPGEN_SPAWN_OFFSET ('0 0 1' * (PL_MAX_CONST.z - 13))
-const vector CPGEN_WAYPOINT_OFFSET = ('0 0 128');
-const vector CPICON_OFFSET = ('0 0 96');
-
-// list of generators on the map
-entity ons_worldgeneratorlist;
-.entity ons_worldgeneratornext;
-.entity ons_stalegeneratornext;
-
-// list of control points on the map
-entity ons_worldcplist;
-.entity ons_worldcpnext;
-.entity ons_stalecpnext;
-
-// list of links on the map
-entity ons_worldlinklist;
-.entity ons_worldlinknext;
-.entity ons_stalelinknext;
-
-// definitions
-.entity sprite;
-.string target2;
-.int iscaptured;
-.int islinked;
-.int isshielded;
-.float lasthealth;
-.int lastteam;
-.int lastshielded;
-.int lastcaptured;
-
-.bool waslinked;
-
-bool ons_stalemate;
-
-.float teleport_antispam;
-
-.bool ons_roundlost = _STAT(ROUNDLOST);
-
-// waypoint sprites
-.entity bot_basewaypoint; // generator waypointsprite
-
-.bool isgenneighbor[17];
-.bool iscpneighbor[17];
-float ons_notification_time[17];
-
-.float ons_overtime_damagedelay;
-
-.vector ons_deathloc;
-
-.entity ons_spawn_by;
-
-// declarations for functions used outside gamemode_onslaught.qc
-void ons_Generator_UpdateSprite(entity e);
-void ons_ControlPoint_UpdateSprite(entity e);
-bool ons_ControlPoint_Attackable(entity cp, int teamnumber);
-
-// CaptureShield: Prevent capturing or destroying control point/generator if it is not available yet
-float ons_captureshield_force; // push force of the shield
-
-// bot player logic
-const int HAVOCBOT_ONS_ROLE_NONE               = 0;
-const int HAVOCBOT_ONS_ROLE_DEFENSE    = 2;
-const int HAVOCBOT_ONS_ROLE_ASSISTANT  = 4;
-const int HAVOCBOT_ONS_ROLE_OFFENSE    = 8;
-
-.entity havocbot_ons_target;
-
-.int havocbot_role_flags;
-.float havocbot_attack_time;
-
-void havocbot_role_ons_defense(entity this);
-void havocbot_role_ons_offense(entity this);
-void havocbot_role_ons_assistant(entity this);
-
-void havocbot_ons_reset_role(entity this);
-void havocbot_goalrating_items(entity this, float ratingscale, vector org, float sradius);
-void havocbot_goalrating_enemyplayers(entity this, float ratingscale, vector org, float sradius);
-
-// score rule declarations
-const int ST_ONS_CAPS = 1;
-
-#endif
-#endif
-
-#ifdef IMPLEMENTATION
-
-#include "sv_controlpoint.qh"
-#include "sv_generator.qh"
-
-bool g_onslaught;
-
-float autocvar_g_onslaught_teleport_wait;
-bool autocvar_g_onslaught_spawn_at_controlpoints;
-bool autocvar_g_onslaught_spawn_at_generator;
-float autocvar_g_onslaught_cp_proxydecap;
-float autocvar_g_onslaught_cp_proxydecap_distance = 512;
-float autocvar_g_onslaught_cp_proxydecap_dps = 100;
-float autocvar_g_onslaught_spawn_at_controlpoints_chance = 0.5;
-float autocvar_g_onslaught_spawn_at_controlpoints_random;
-float autocvar_g_onslaught_spawn_at_generator_chance;
-float autocvar_g_onslaught_spawn_at_generator_random;
-float autocvar_g_onslaught_cp_buildhealth;
-float autocvar_g_onslaught_cp_buildtime;
-float autocvar_g_onslaught_cp_health;
-float autocvar_g_onslaught_cp_regen;
-float autocvar_g_onslaught_gen_health;
-float autocvar_g_onslaught_shield_force = 100;
-float autocvar_g_onslaught_allow_vehicle_touch;
-float autocvar_g_onslaught_round_timelimit;
-float autocvar_g_onslaught_warmup;
-float autocvar_g_onslaught_teleport_radius;
-float autocvar_g_onslaught_spawn_choose;
-float autocvar_g_onslaught_click_radius;
-
-void FixSize(entity e);
-
-// =======================
-// CaptureShield Functions
-// =======================
-
-bool ons_CaptureShield_Customize(entity this, entity client)
-{
-       entity e = WaypointSprite_getviewentity(client);
-
-       if(!this.enemy.isshielded && (ons_ControlPoint_Attackable(this.enemy, e.team) > 0 || this.enemy.classname != "onslaught_controlpoint")) { return false; }
-       if(SAME_TEAM(this, e)) { return false; }
-
-       return true;
-}
-
-void ons_CaptureShield_Touch(entity this, entity toucher)
-{
-       if(!this.enemy.isshielded && (ons_ControlPoint_Attackable(this.enemy, toucher.team) > 0 || this.enemy.classname != "onslaught_controlpoint")) { return; }
-       if(!IS_PLAYER(toucher)) { return; }
-       if(SAME_TEAM(toucher, this)) { return; }
-
-       vector mymid = (this.absmin + this.absmax) * 0.5;
-       vector theirmid = (toucher.absmin + toucher.absmax) * 0.5;
-
-       Damage(toucher, this, this, 0, DEATH_HURTTRIGGER.m_id, mymid, normalize(theirmid - mymid) * ons_captureshield_force);
-
-       if(IS_REAL_CLIENT(toucher))
-       {
-               play2(toucher, SND(ONS_DAMAGEBLOCKEDBYSHIELD));
-
-               if(this.enemy.classname == "onslaught_generator")
-                       Send_Notification(NOTIF_ONE, toucher, MSG_CENTER, CENTER_ONS_GENERATOR_SHIELDED);
-               else
-                       Send_Notification(NOTIF_ONE, toucher, MSG_CENTER, CENTER_ONS_CONTROLPOINT_SHIELDED);
-       }
-}
-
-void ons_CaptureShield_Reset(entity this)
-{
-       this.colormap = this.enemy.colormap;
-       this.team = this.enemy.team;
-}
-
-void ons_CaptureShield_Spawn(entity generator, bool is_generator)
-{
-       entity shield = new(ons_captureshield);
-
-       shield.enemy = generator;
-       shield.team = generator.team;
-       shield.colormap = generator.colormap;
-       shield.reset = ons_CaptureShield_Reset;
-       settouch(shield, ons_CaptureShield_Touch);
-       setcefc(shield, ons_CaptureShield_Customize);
-       shield.effects = EF_ADDITIVE;
-       set_movetype(shield, MOVETYPE_NOCLIP);
-       shield.solid = SOLID_TRIGGER;
-       shield.avelocity = '7 0 11';
-       shield.scale = 1;
-       shield.model = ((is_generator) ? "models/onslaught/generator_shield.md3" : "models/onslaught/controlpoint_shield.md3");
-
-       precache_model(shield.model);
-       setorigin(shield, generator.origin);
-       _setmodel(shield, shield.model);
-       setsize(shield, shield.scale * shield.mins, shield.scale * shield.maxs);
-}
-
-
-// ==========
-// Junk Pile
-// ==========
-
-void setmodel_fixsize(entity e, Model m)
-{
-       setmodel(e, m);
-       FixSize(e);
-}
-
-void onslaught_updatelinks()
-{
-       entity l;
-       // first check if the game has ended
-       LOG_DEBUG("--- updatelinks ---");
-       // mark generators as being shielded and networked
-       for(l = ons_worldgeneratorlist; l; l = l.ons_worldgeneratornext)
-       {
-               if (l.iscaptured)
-                       LOG_DEBUG(etos(l), " (generator) belongs to team ", ftos(l.team));
-               else
-                       LOG_DEBUG(etos(l), " (generator) is destroyed");
-               l.islinked = l.iscaptured;
-               l.isshielded = l.iscaptured;
-               l.sprite.SendFlags |= 16;
-       }
-       // mark points as shielded and not networked
-       for(l = ons_worldcplist; l; l = l.ons_worldcpnext)
-       {
-               l.islinked = false;
-               l.isshielded = true;
-               int i;
-               for(i = 0; i < 17; ++i) { l.isgenneighbor[i] = false; l.iscpneighbor[i] = false; }
-               LOG_DEBUG(etos(l), " (point) belongs to team ", ftos(l.team));
-               l.sprite.SendFlags |= 16;
-       }
-       // flow power outward from the generators through the network
-       bool stop = false;
-       while (!stop)
-       {
-               stop = true;
-               for(l = ons_worldlinklist; l; l = l.ons_worldlinknext)
-               {
-                       // if both points are captured by the same team, and only one of
-                       // them is powered, mark the other one as powered as well
-                       if (l.enemy.iscaptured && l.goalentity.iscaptured)
-                               if (l.enemy.islinked != l.goalentity.islinked)
-                                       if(SAME_TEAM(l.enemy, l.goalentity))
-                                       {
-                                               if (!l.goalentity.islinked)
-                                               {
-                                                       stop = false;
-                                                       l.goalentity.islinked = true;
-                                                       LOG_DEBUG(etos(l), " (link) is marking ", etos(l.goalentity), " (point) because its team matches ", etos(l.enemy), " (point)");
-                                               }
-                                               else if (!l.enemy.islinked)
-                                               {
-                                                       stop = false;
-                                                       l.enemy.islinked = true;
-                                                       LOG_DEBUG(etos(l), " (link) is marking ", etos(l.enemy), " (point) because its team matches ", etos(l.goalentity), " (point)");
-                                               }
-                                       }
-               }
-       }
-       // now that we know which points are powered we can mark their neighbors
-       // as unshielded if team differs
-       for(l = ons_worldlinklist; l; l = l.ons_worldlinknext)
-       {
-               if (l.goalentity.islinked)
-               {
-                       if(DIFF_TEAM(l.goalentity, l.enemy))
-                       {
-                               LOG_DEBUG(etos(l), " (link) is unshielding ", etos(l.enemy), " (point) because its team does not match ", etos(l.goalentity), " (point)");
-                               l.enemy.isshielded = false;
-                       }
-                       if(l.goalentity.classname == "onslaught_generator")
-                               l.enemy.isgenneighbor[l.goalentity.team] = true;
-                       else
-                               l.enemy.iscpneighbor[l.goalentity.team] = true;
-               }
-               if (l.enemy.islinked)
-               {
-                       if(DIFF_TEAM(l.goalentity, l.enemy))
-                       {
-                               LOG_DEBUG(etos(l), " (link) is unshielding ", etos(l.goalentity), " (point) because its team does not match ", etos(l.enemy), " (point)");
-                               l.goalentity.isshielded = false;
-                       }
-                       if(l.enemy.classname == "onslaught_generator")
-                               l.goalentity.isgenneighbor[l.enemy.team] = true;
-                       else
-                               l.goalentity.iscpneighbor[l.enemy.team] = true;
-               }
-       }
-       // now update the generators
-       for(l = ons_worldgeneratorlist; l; l = l.ons_worldgeneratornext)
-       {
-               if (l.isshielded)
-               {
-                       LOG_DEBUG(etos(l), " (generator) is shielded");
-                       l.takedamage = DAMAGE_NO;
-                       l.bot_attack = false;
-               }
-               else
-               {
-                       LOG_DEBUG(etos(l), " (generator) is not shielded");
-                       l.takedamage = DAMAGE_AIM;
-                       l.bot_attack = true;
-               }
-
-               ons_Generator_UpdateSprite(l);
-       }
-       // now update the takedamage and alpha variables on control point icons
-       for(l = ons_worldcplist; l; l = l.ons_worldcpnext)
-       {
-               if (l.isshielded)
-               {
-                       LOG_DEBUG(etos(l), " (point) is shielded");
-                       if (l.goalentity)
-                       {
-                               l.goalentity.takedamage = DAMAGE_NO;
-                               l.goalentity.bot_attack = false;
-                       }
-               }
-               else
-               {
-                       LOG_DEBUG(etos(l), " (point) is not shielded");
-                       if (l.goalentity)
-                       {
-                               l.goalentity.takedamage = DAMAGE_AIM;
-                               l.goalentity.bot_attack = true;
-                       }
-               }
-               ons_ControlPoint_UpdateSprite(l);
-       }
-       FOREACH_ENTITY_CLASS("ons_captureshield", true,
-       {
-               it.team = it.enemy.team;
-               it.colormap = it.enemy.colormap;
-       });
-}
-
-
-// ===================
-// Main Link Functions
-// ===================
-
-bool ons_Link_Send(entity this, entity to, int sendflags)
-{
-       WriteHeader(MSG_ENTITY, ENT_CLIENT_RADARLINK);
-       WriteByte(MSG_ENTITY, sendflags);
-       if(sendflags & 1)
-       {
-               WriteCoord(MSG_ENTITY, this.goalentity.origin_x);
-               WriteCoord(MSG_ENTITY, this.goalentity.origin_y);
-               WriteCoord(MSG_ENTITY, this.goalentity.origin_z);
-       }
-       if(sendflags & 2)
-       {
-               WriteCoord(MSG_ENTITY, this.enemy.origin_x);
-               WriteCoord(MSG_ENTITY, this.enemy.origin_y);
-               WriteCoord(MSG_ENTITY, this.enemy.origin_z);
-       }
-       if(sendflags & 4)
-       {
-               WriteByte(MSG_ENTITY, this.clientcolors); // which is goalentity's color + enemy's color * 16
-       }
-       return true;
-}
-
-void ons_Link_CheckUpdate(entity this)
-{
-       // TODO check if the two sides have moved (currently they won't move anyway)
-       float cc = 0, cc1 = 0, cc2 = 0;
-
-       if(this.goalentity.islinked || this.goalentity.iscaptured) { cc1 = (this.goalentity.team - 1) * 0x01; }
-       if(this.enemy.islinked || this.enemy.iscaptured) { cc2 = (this.enemy.team - 1) * 0x10; }
-
-       cc = cc1 + cc2;
-
-       if(cc != this.clientcolors)
-       {
-               this.clientcolors = cc;
-               this.SendFlags |= 4;
-       }
-
-       this.nextthink = time;
-}
-
-void ons_DelayedLinkSetup(entity this)
-{
-       this.goalentity = find(NULL, targetname, this.target);
-       this.enemy = find(NULL, targetname, this.target2);
-       if(!this.goalentity) { objerror(this, "can not find target\n"); }
-       if(!this.enemy) { objerror(this, "can not find target2\n"); }
-
-       LOG_DEBUG(etos(this.goalentity), " linked with ", etos(this.enemy));
-       this.SendFlags |= 3;
-       setthink(this, ons_Link_CheckUpdate);
-       this.nextthink = time;
-}
-
-
-// =============================
-// Main Control Point Functions
-// =============================
-
-int ons_ControlPoint_CanBeLinked(entity cp, int teamnumber)
-{
-       if(cp.isgenneighbor[teamnumber]) { return 2; }
-       if(cp.iscpneighbor[teamnumber]) { return 1; }
-
-       return 0;
-}
-
-int ons_ControlPoint_Attackable(entity cp, int teamnumber)
-       // -2: SAME TEAM, attackable by enemy!
-       // -1: SAME TEAM!
-       // 0: off limits
-       // 1: attack it
-       // 2: touch it
-       // 3: attack it (HIGH PRIO)
-       // 4: touch it (HIGH PRIO)
-{
-       int a;
-
-       if(cp.isshielded)
-       {
-               return 0;
-       }
-       else if(cp.goalentity)
-       {
-               // if there's already an icon built, nothing happens
-               if(cp.team == teamnumber)
-               {
-                       a = ons_ControlPoint_CanBeLinked(cp, teamnumber);
-                       if(a) // attackable by enemy?
-                               return -2; // EMERGENCY!
-                       return -1;
-               }
-               // we know it can be linked, so no need to check
-               // but...
-               a = ons_ControlPoint_CanBeLinked(cp, teamnumber);
-               if(a == 2) // near our generator?
-                       return 3; // EMERGENCY!
-               return 1;
-       }
-       else
-       {
-               // free point
-               if(ons_ControlPoint_CanBeLinked(cp, teamnumber))
-               {
-                       a = ons_ControlPoint_CanBeLinked(cp, teamnumber); // why was this here NUM_TEAM_1 + NUM_TEAM_2 - t
-                       if(a == 2)
-                               return 4; // GET THIS ONE NOW!
-                       else
-                               return 2; // TOUCH ME
-               }
-       }
-       return 0;
-}
-
-void ons_ControlPoint_Icon_Damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
-{
-       if(damage <= 0) { return; }
-
-       if (this.owner.isshielded)
-       {
-               // this is protected by a shield, so ignore the damage
-               if (time > this.pain_finished)
-                       if (IS_PLAYER(attacker))
-                       {
-                               play2(attacker, SND(ONS_DAMAGEBLOCKEDBYSHIELD));
-                               this.pain_finished = time + 1;
-                               attacker.typehitsound += 1; // play both sounds (shield is way too quiet)
-                       }
-
-               return;
-       }
-
-       if(IS_PLAYER(attacker))
-       if(time - ons_notification_time[this.team] > 10)
-       {
-               play2team(this.team, SND(ONS_CONTROLPOINT_UNDERATTACK));
-               ons_notification_time[this.team] = time;
-       }
-
-       this.health = this.health - damage;
-       if(this.owner.iscaptured)
-               WaypointSprite_UpdateHealth(this.owner.sprite, this.health);
-       else
-               WaypointSprite_UpdateBuildFinished(this.owner.sprite, time + (this.max_health - this.health) / (this.count / ONS_CP_THINKRATE));
-       this.pain_finished = time + 1;
-       // particles on every hit
-       pointparticles(EFFECT_SPARKS, hitloc, force*-1, 1);
-       //sound on every hit
-       if (random() < 0.5)
-               sound(this, CH_TRIGGER, SND_ONS_HIT1, VOL_BASE+0.3, ATTEN_NORM);
-       else
-               sound(this, CH_TRIGGER, SND_ONS_HIT2, VOL_BASE+0.3, ATTEN_NORM);
-
-       if (this.health < 0)
-       {
-               sound(this, CH_TRIGGER, SND_GRENADE_IMPACT, VOL_BASE, ATTEN_NORM);
-               pointparticles(EFFECT_ROCKET_EXPLODE, this.origin, '0 0 0', 1);
-               Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(this.team, INFO_ONSLAUGHT_CPDESTROYED), this.owner.message, attacker.netname);
-
-               PlayerScore_Add(attacker, SP_ONS_TAKES, 1);
-               PlayerScore_Add(attacker, SP_SCORE, 10);
-
-               this.owner.goalentity = NULL;
-               this.owner.islinked = false;
-               this.owner.iscaptured = false;
-               this.owner.team = 0;
-               this.owner.colormap = 1024;
-
-               WaypointSprite_UpdateMaxHealth(this.owner.sprite, 0);
-
-               onslaught_updatelinks();
-
-               // Use targets now (somebody make sure this is in the right place..)
-               SUB_UseTargets(this.owner, this, NULL);
-
-               this.owner.waslinked = this.owner.islinked;
-               if(this.owner.model != "models/onslaught/controlpoint_pad.md3")
-                       setmodel_fixsize(this.owner, MDL_ONS_CP_PAD1);
-               //setsize(this, '-32 -32 0', '32 32 8');
-
-               delete(this);
-       }
-
-       this.SendFlags |= CPSF_STATUS;
-}
-
-void ons_ControlPoint_Icon_Think(entity this)
-{
-       this.nextthink = time + ONS_CP_THINKRATE;
-
-       if(autocvar_g_onslaught_cp_proxydecap)
-       {
-               int _enemy_count = 0;
-               int _friendly_count = 0;
-
-               FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it), {
-                       if(vdist(it.origin - this.origin, <, autocvar_g_onslaught_cp_proxydecap_distance))
-                       {
-                               if(SAME_TEAM(it, this))
-                                       ++_friendly_count;
-                               else
-                                       ++_enemy_count;
-                       }
-               });
-
-               _friendly_count = _friendly_count * (autocvar_g_onslaught_cp_proxydecap_dps * ONS_CP_THINKRATE);
-               _enemy_count = _enemy_count * (autocvar_g_onslaught_cp_proxydecap_dps * ONS_CP_THINKRATE);
-
-               this.health = bound(0, this.health + (_friendly_count - _enemy_count), this.max_health);
-               this.SendFlags |= CPSF_STATUS;
-               if(this.health <= 0)
-               {
-                       ons_ControlPoint_Icon_Damage(this, this, this, 1, 0, this.origin, '0 0 0');
-                       return;
-               }
-       }
-
-       if (time > this.pain_finished + 5)
-       {
-               if(this.health < this.max_health)
-               {
-                       this.health = this.health + this.count;
-                       if (this.health >= this.max_health)
-                               this.health = this.max_health;
-                       WaypointSprite_UpdateHealth(this.owner.sprite, this.health);
-               }
-       }
-
-       if(this.owner.islinked != this.owner.waslinked)
-       {
-               // unteam the spawnpoint if needed
-               int t = this.owner.team;
-               if(!this.owner.islinked)
-                       this.owner.team = 0;
-
-               SUB_UseTargets(this.owner, this, NULL);
-
-               this.owner.team = t;
-
-               this.owner.waslinked = this.owner.islinked;
-       }
-
-       // damaged fx
-       if(random() < 0.6 - this.health / this.max_health)
-       {
-               Send_Effect(EFFECT_ELECTRIC_SPARKS, this.origin + randompos('-10 -10 -20', '10 10 20'), '0 0 0', 1);
-
-               if(random() > 0.8)
-                       sound(this, CH_PAIN, SND_ONS_SPARK1, VOL_BASE, ATTEN_NORM);
-               else if (random() > 0.5)
-                       sound(this, CH_PAIN, SND_ONS_SPARK2, VOL_BASE, ATTEN_NORM);
-       }
-}
-
-void ons_ControlPoint_Icon_BuildThink(entity this)
-{
-       int a;
-
-       this.nextthink = time + ONS_CP_THINKRATE;
-
-       // only do this if there is power
-       a = ons_ControlPoint_CanBeLinked(this.owner, this.owner.team);
-       if(!a)
-               return;
-
-       this.health = this.health + this.count;
-
-       this.SendFlags |= CPSF_STATUS;
-
-       if (this.health >= this.max_health)
-       {
-               this.health = this.max_health;
-               this.count = autocvar_g_onslaught_cp_regen * ONS_CP_THINKRATE; // slow repair rate from now on
-               setthink(this, ons_ControlPoint_Icon_Think);
-               sound(this, CH_TRIGGER, SND_ONS_CONTROLPOINT_BUILT, VOL_BASE, ATTEN_NORM);
-               this.owner.iscaptured = true;
-               this.solid = SOLID_BBOX;
-
-               Send_Effect(EFFECT_CAP(this.owner.team), this.owner.origin, '0 0 0', 1);
-
-               WaypointSprite_UpdateMaxHealth(this.owner.sprite, this.max_health);
-               WaypointSprite_UpdateHealth(this.owner.sprite, this.health);
-
-               if(IS_PLAYER(this.owner.ons_toucher))
-               {
-                       Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_ONSLAUGHT_CAPTURE, this.owner.ons_toucher.netname, this.owner.message);
-                       Send_Notification(NOTIF_ALL_EXCEPT, this.owner.ons_toucher, MSG_CENTER, APP_TEAM_NUM(this.owner.ons_toucher.team, CENTER_ONS_CAPTURE), this.owner.message);
-                       Send_Notification(NOTIF_ONE, this.owner.ons_toucher, MSG_CENTER, CENTER_ONS_CAPTURE, this.owner.message);
-                       PlayerScore_Add(this.owner.ons_toucher, SP_ONS_CAPS, 1);
-                       PlayerTeamScore_AddScore(this.owner.ons_toucher, 10);
-               }
-
-               this.owner.ons_toucher = NULL;
-
-               onslaught_updatelinks();
-
-               // Use targets now (somebody make sure this is in the right place..)
-               SUB_UseTargets(this.owner, this, NULL);
-
-               this.SendFlags |= CPSF_SETUP;
-       }
-       if(this.owner.model != MDL_ONS_CP_PAD2.model_str())
-               setmodel_fixsize(this.owner, MDL_ONS_CP_PAD2);
-
-       if(random() < 0.9 - this.health / this.max_health)
-               Send_Effect(EFFECT_RAGE, this.origin + 10 * randomvec(), '0 0 -1', 1);
-}
-
-void onslaught_controlpoint_icon_link(entity e, void(entity this) spawnproc);
-
-void ons_ControlPoint_Icon_Spawn(entity cp, entity player)
-{
-       entity e = new(onslaught_controlpoint_icon);
-
-       setsize(e, CPICON_MIN, CPICON_MAX);
-       setorigin(e, cp.origin + CPICON_OFFSET);
-
-       e.owner = cp;
-       e.max_health = autocvar_g_onslaught_cp_health;
-       e.health = autocvar_g_onslaught_cp_buildhealth;
-       e.solid = SOLID_NOT;
-       e.takedamage = DAMAGE_AIM;
-       e.bot_attack = true;
-       e.event_damage = ons_ControlPoint_Icon_Damage;
-       e.team = player.team;
-       e.colormap = 1024 + (e.team - 1) * 17;
-       e.count = (e.max_health - e.health) * ONS_CP_THINKRATE / autocvar_g_onslaught_cp_buildtime; // how long it takes to build
-
-       sound(e, CH_TRIGGER, SND_ONS_CONTROLPOINT_BUILD, VOL_BASE, ATTEN_NORM);
-
-       cp.goalentity = e;
-       cp.team = e.team;
-       cp.colormap = e.colormap;
-
-       Send_Effect(EFFECT_FLAG_TOUCH(player.team), e.origin, '0 0 0', 1);
-
-       WaypointSprite_UpdateBuildFinished(cp.sprite, time + (e.max_health - e.health) / (e.count / ONS_CP_THINKRATE));
-       WaypointSprite_UpdateRule(cp.sprite,cp.team,SPRITERULE_TEAMPLAY);
-       cp.sprite.SendFlags |= 16;
-
-       onslaught_controlpoint_icon_link(e, ons_ControlPoint_Icon_BuildThink);
-}
-
-entity ons_ControlPoint_Waypoint(entity e)
-{
-       if(e.team)
-       {
-               int a = ons_ControlPoint_Attackable(e, e.team);
-
-               if(a == -2) { return WP_OnsCPDefend; } // defend now
-               if(a == -1 || a == 1 || a == 2) { return WP_OnsCP; } // touch
-               if(a == 3 || a == 4) { return WP_OnsCPAttack; } // attack
-       }
-       else
-               return WP_OnsCP;
-
-       return WP_Null;
-}
-
-void ons_ControlPoint_UpdateSprite(entity e)
-{
-       entity s1 = ons_ControlPoint_Waypoint(e);
-       WaypointSprite_UpdateSprites(e.sprite, s1, s1, s1);
-
-       bool sh;
-       sh = !(ons_ControlPoint_CanBeLinked(e, NUM_TEAM_1) || ons_ControlPoint_CanBeLinked(e, NUM_TEAM_2) || ons_ControlPoint_CanBeLinked(e, NUM_TEAM_3) || ons_ControlPoint_CanBeLinked(e, NUM_TEAM_4));
-
-       if(e.lastteam != e.team + 2 || e.lastshielded != sh || e.iscaptured != e.lastcaptured)
-       {
-               if(e.iscaptured) // don't mess up build bars!
-               {
-                       if(sh)
-                       {
-                               WaypointSprite_UpdateMaxHealth(e.sprite, 0);
-                       }
-                       else
-                       {
-                               WaypointSprite_UpdateMaxHealth(e.sprite, e.goalentity.max_health);
-                               WaypointSprite_UpdateHealth(e.sprite, e.goalentity.health);
-                       }
-               }
-               if(e.lastshielded)
-               {
-                       if(e.team)
-                               WaypointSprite_UpdateTeamRadar(e.sprite, RADARICON_CONTROLPOINT, 0.5 * colormapPaletteColor(e.team - 1, false));
-                       else
-                               WaypointSprite_UpdateTeamRadar(e.sprite, RADARICON_CONTROLPOINT, '0.5 0.5 0.5');
-               }
-               else
-               {
-                       if(e.team)
-                               WaypointSprite_UpdateTeamRadar(e.sprite, RADARICON_CONTROLPOINT, colormapPaletteColor(e.team - 1, false));
-                       else
-                               WaypointSprite_UpdateTeamRadar(e.sprite, RADARICON_CONTROLPOINT, '0.75 0.75 0.75');
-               }
-               WaypointSprite_Ping(e.sprite);
-
-               e.lastteam = e.team + 2;
-               e.lastshielded = sh;
-               e.lastcaptured = e.iscaptured;
-       }
-}
-
-void ons_ControlPoint_Touch(entity this, entity toucher)
-{
-       int attackable;
-
-       if(IS_VEHICLE(toucher) && toucher.owner)
-       if(autocvar_g_onslaught_allow_vehicle_touch)
-               toucher = toucher.owner;
-       else
-               return;
-
-       if(!IS_PLAYER(toucher)) { return; }
-       if(STAT(FROZEN, toucher)) { return; }
-       if(IS_DEAD(toucher)) { return; }
-
-       if ( SAME_TEAM(this,toucher) )
-       if ( this.iscaptured )
-       {
-               if(time <= toucher.teleport_antispam)
-                       Send_Notification(NOTIF_ONE, toucher, MSG_CENTER, CENTER_ONS_TELEPORT_ANTISPAM, rint(toucher.teleport_antispam - time));
-               else
-                       Send_Notification(NOTIF_ONE, toucher, MSG_CENTER, CENTER_ONS_TELEPORT);
-       }
-
-       attackable = ons_ControlPoint_Attackable(this, toucher.team);
-       if(attackable != 2 && attackable != 4)
-               return;
-       // we've verified that this player has a legitimate claim to this point,
-       // so start building the captured point icon (which only captures this
-       // point if it successfully builds without being destroyed first)
-       ons_ControlPoint_Icon_Spawn(this, toucher);
-
-       this.ons_toucher = toucher;
-
-       onslaught_updatelinks();
-}
-
-void ons_ControlPoint_Think(entity this)
-{
-       this.nextthink = time + ONS_CP_THINKRATE;
-       CSQCMODEL_AUTOUPDATE(this);
-}
-
-void ons_ControlPoint_Reset(entity this)
-{
-       if(this.goalentity)
-               delete(this.goalentity);
-
-       this.goalentity = NULL;
-       this.team = 0;
-       this.colormap = 1024;
-       this.iscaptured = false;
-       this.islinked = false;
-       this.isshielded = true;
-       setthink(this, ons_ControlPoint_Think);
-       this.ons_toucher = NULL;
-       this.nextthink = time + ONS_CP_THINKRATE;
-       setmodel_fixsize(this, MDL_ONS_CP_PAD1);
-
-       WaypointSprite_UpdateMaxHealth(this.sprite, 0);
-       WaypointSprite_UpdateRule(this.sprite,this.team,SPRITERULE_TEAMPLAY);
-
-       onslaught_updatelinks();
-
-       SUB_UseTargets(this, this, NULL); // to reset the structures, playerspawns etc.
-
-       CSQCMODEL_AUTOUPDATE(this);
-}
-
-void ons_DelayedControlPoint_Setup(entity this)
-{
-       onslaught_updatelinks();
-
-       // captureshield setup
-       ons_CaptureShield_Spawn(this, false);
-
-       CSQCMODEL_AUTOINIT(this);
-}
-
-void ons_ControlPoint_Setup(entity cp)
-{
-       // main setup
-       cp.ons_worldcpnext = ons_worldcplist; // link control point into ons_worldcplist
-       ons_worldcplist = cp;
-
-       cp.netname = "Control point";
-       cp.team = 0;
-       cp.solid = SOLID_BBOX;
-       set_movetype(cp, MOVETYPE_NONE);
-       settouch(cp, ons_ControlPoint_Touch);
-       setthink(cp, ons_ControlPoint_Think);
-       cp.nextthink = time + ONS_CP_THINKRATE;
-       cp.reset = ons_ControlPoint_Reset;
-       cp.colormap = 1024;
-       cp.iscaptured = false;
-       cp.islinked = false;
-       cp.isshielded = true;
-
-       if(cp.message == "") { cp.message = "a"; }
-
-       // appearence
-       setmodel_fixsize(cp, MDL_ONS_CP_PAD1);
-
-       // control point placement
-       if((cp.spawnflags & 1) || cp.noalign) // don't drop to floor, just stay at fixed location
-       {
-               cp.noalign = true;
-               set_movetype(cp, MOVETYPE_NONE);
-       }
-       else // drop to floor, automatically find a platform and set that as spawn origin
-       {
-               setorigin(cp, cp.origin + '0 0 20');
-               cp.noalign = false;
-               droptofloor(cp);
-               set_movetype(cp, MOVETYPE_TOSS);
-       }
-
-       // waypointsprites
-       WaypointSprite_SpawnFixed(WP_Null, cp.origin + CPGEN_WAYPOINT_OFFSET, cp, sprite, RADARICON_NONE);
-       WaypointSprite_UpdateRule(cp.sprite, cp.team, SPRITERULE_TEAMPLAY);
-
-       InitializeEntity(cp, ons_DelayedControlPoint_Setup, INITPRIO_SETLOCATION);
-}
-
-
-// =========================
-// Main Generator Functions
-// =========================
-
-entity ons_Generator_Waypoint(entity e)
-{
-       if (e.isshielded)
-               return WP_OnsGenShielded;
-       return WP_OnsGen;
-}
-
-void ons_Generator_UpdateSprite(entity e)
-{
-       entity s1 = ons_Generator_Waypoint(e);
-       WaypointSprite_UpdateSprites(e.sprite, s1, s1, s1);
-
-       if(e.lastteam != e.team + 2 || e.lastshielded != e.isshielded)
-       {
-               e.lastteam = e.team + 2;
-               e.lastshielded = e.isshielded;
-               if(e.lastshielded)
-               {
-                       if(e.team)
-                               WaypointSprite_UpdateTeamRadar(e.sprite, RADARICON_GENERATOR, 0.5 * colormapPaletteColor(e.team - 1, false));
-                       else
-                               WaypointSprite_UpdateTeamRadar(e.sprite, RADARICON_GENERATOR, '0.5 0.5 0.5');
-               }
-               else
-               {
-                       if(e.team)
-                               WaypointSprite_UpdateTeamRadar(e.sprite, RADARICON_GENERATOR, colormapPaletteColor(e.team - 1, false));
-                       else
-                               WaypointSprite_UpdateTeamRadar(e.sprite, RADARICON_GENERATOR, '0.75 0.75 0.75');
-               }
-               WaypointSprite_Ping(e.sprite);
-       }
-}
-
-void ons_GeneratorDamage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
-{
-       if(damage <= 0) { return; }
-       if(warmup_stage || gameover) { return; }
-       if(!round_handler_IsRoundStarted()) { return; }
-
-       if (attacker != this)
-       {
-               if (this.isshielded)
-               {
-                       // this is protected by a shield, so ignore the damage
-                       if (time > this.pain_finished)
-                               if (IS_PLAYER(attacker))
-                               {
-                                       play2(attacker, SND(ONS_DAMAGEBLOCKEDBYSHIELD));
-                                       attacker.typehitsound += 1;
-                                       this.pain_finished = time + 1;
-                               }
-                       return;
-               }
-               if (time > this.pain_finished)
-               {
-                       this.pain_finished = time + 10;
-                       FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it) && SAME_TEAM(it, this), Send_Notification(NOTIF_ONE, it, MSG_CENTER, CENTER_GENERATOR_UNDERATTACK));
-                       play2team(this.team, SND(ONS_GENERATOR_UNDERATTACK));
-               }
-       }
-       this.health = this.health - damage;
-       WaypointSprite_UpdateHealth(this.sprite, this.health);
-       // choose an animation frame based on health
-       this.frame = 10 * bound(0, (1 - this.health / this.max_health), 1);
-       // see if the generator is still functional, or dying
-       if (this.health > 0)
-       {
-               this.lasthealth = this.health;
-       }
-       else
-       {
-               if (attacker == this)
-                       Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(this.team, INFO_ONSLAUGHT_GENDESTROYED_OVERTIME));
-               else
-               {
-                       Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(this.team, INFO_ONSLAUGHT_GENDESTROYED));
-                       PlayerScore_Add(attacker, SP_SCORE, 100);
-               }
-               this.iscaptured = false;
-               this.islinked = false;
-               this.isshielded = false;
-               this.takedamage = DAMAGE_NO; // can't be hurt anymore
-               this.event_damage = func_null; // won't do anything if hurt
-               this.count = 0; // reset counter
-               setthink(this, func_null);
-               this.nextthink = 0;
-               //this.think(); // do the first explosion now
-
-               WaypointSprite_UpdateMaxHealth(this.sprite, 0);
-               WaypointSprite_Ping(this.sprite);
-               //WaypointSprite_Kill(this.sprite); // can't do this yet, code too poor
-
-               onslaught_updatelinks();
-       }
-
-       // Throw some flaming gibs on damage, more damage = more chance for gib
-       if(random() < damage/220)
-       {
-               sound(this, CH_TRIGGER, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
-       }
-       else
-       {
-               // particles on every hit
-               Send_Effect(EFFECT_SPARKS, hitloc, force * -1, 1);
-
-               //sound on every hit
-               if (random() < 0.5)
-                       sound(this, CH_TRIGGER, SND_ONS_HIT1, VOL_BASE, ATTEN_NORM);
-               else
-                       sound(this, CH_TRIGGER, SND_ONS_HIT2, VOL_BASE, ATTEN_NORM);
-       }
-
-       this.SendFlags |= GSF_STATUS;
-}
-
-void ons_GeneratorThink(entity this)
-{
-       this.nextthink = time + GEN_THINKRATE;
-       if (!gameover)
-       {
-               if(!this.isshielded && this.wait < time)
-               {
-                       this.wait = time + 5;
-                       FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), {
-                               if(SAME_TEAM(it, this))
-                               {
-                                       Send_Notification(NOTIF_ONE, it, MSG_CENTER, CENTER_ONS_NOTSHIELDED_TEAM);
-                                       soundto(MSG_ONE, it, CHAN_AUTO, SND(KH_ALARM), VOL_BASE, ATTEN_NONE);    // FIXME: unique sound?
-                               }
-                               else
-                                       Send_Notification(NOTIF_ONE, it, MSG_CENTER, APP_TEAM_NUM(this.team, CENTER_ONS_NOTSHIELDED));
-                       });
-               }
-       }
-}
-
-void ons_GeneratorReset(entity this)
-{
-       this.team = this.team_saved;
-       this.lasthealth = this.max_health = this.health = autocvar_g_onslaught_gen_health;
-       this.takedamage = DAMAGE_AIM;
-       this.bot_attack = true;
-       this.iscaptured = true;
-       this.islinked = true;
-       this.isshielded = true;
-       this.event_damage = ons_GeneratorDamage;
-       setthink(this, ons_GeneratorThink);
-       this.nextthink = time + GEN_THINKRATE;
-
-       Net_LinkEntity(this, false, 0, generator_send);
-
-       this.SendFlags = GSF_SETUP; // just incase
-       this.SendFlags |= GSF_STATUS;
-
-       WaypointSprite_UpdateMaxHealth(this.sprite, this.max_health);
-       WaypointSprite_UpdateHealth(this.sprite, this.health);
-       WaypointSprite_UpdateRule(this.sprite,this.team,SPRITERULE_TEAMPLAY);
-
-       onslaught_updatelinks();
-}
-
-void ons_DelayedGeneratorSetup(entity this)
-{
-       // bot waypoints
-       waypoint_spawnforitem_force(this, this.origin);
-       this.nearestwaypointtimeout = 0; // activate waypointing again
-       this.bot_basewaypoint = this.nearestwaypoint;
-
-       // captureshield setup
-       ons_CaptureShield_Spawn(this, true);
-
-       onslaught_updatelinks();
-
-       Net_LinkEntity(this, false, 0, generator_send);
-}
-
-
-void onslaught_generator_touch(entity this, entity toucher)
-{
-       if ( IS_PLAYER(toucher) )
-       if ( SAME_TEAM(this,toucher) )
-       if ( this.iscaptured )
-       {
-               Send_Notification(NOTIF_ONE, toucher, MSG_CENTER, CENTER_ONS_TELEPORT);
-       }
-}
-
-void ons_GeneratorSetup(entity gen) // called when spawning a generator entity on the map as a spawnfunc
-{
-       // declarations
-       int teamnumber = gen.team;
-
-       // main setup
-       gen.ons_worldgeneratornext = ons_worldgeneratorlist; // link generator into ons_worldgeneratorlist
-       ons_worldgeneratorlist = gen;
-
-       gen.netname = sprintf("%s generator", Team_ColoredFullName(teamnumber));
-       gen.classname = "onslaught_generator";
-       gen.solid = SOLID_BBOX;
-       gen.team_saved = teamnumber;
-       set_movetype(gen, MOVETYPE_NONE);
-       gen.lasthealth = gen.max_health = gen.health = autocvar_g_onslaught_gen_health;
-       gen.takedamage = DAMAGE_AIM;
-       gen.bot_attack = true;
-       gen.event_damage = ons_GeneratorDamage;
-       gen.reset = ons_GeneratorReset;
-       setthink(gen, ons_GeneratorThink);
-       gen.nextthink = time + GEN_THINKRATE;
-       gen.iscaptured = true;
-       gen.islinked = true;
-       gen.isshielded = true;
-       settouch(gen, onslaught_generator_touch);
-
-       // appearence
-       // model handled by CSQC
-       setsize(gen, GENERATOR_MIN, GENERATOR_MAX);
-       setorigin(gen, (gen.origin + CPGEN_SPAWN_OFFSET));
-       gen.colormap = 1024 + (teamnumber - 1) * 17;
-
-       // generator placement
-       droptofloor(gen);
-
-       // waypointsprites
-       WaypointSprite_SpawnFixed(WP_Null, gen.origin + CPGEN_WAYPOINT_OFFSET, gen, sprite, RADARICON_NONE);
-       WaypointSprite_UpdateRule(gen.sprite, gen.team, SPRITERULE_TEAMPLAY);
-       WaypointSprite_UpdateMaxHealth(gen.sprite, gen.max_health);
-       WaypointSprite_UpdateHealth(gen.sprite, gen.health);
-
-       InitializeEntity(gen, ons_DelayedGeneratorSetup, INITPRIO_SETLOCATION);
-}
-
-
-// ===============
-//  Round Handler
-// ===============
-
-int total_generators;
-void Onslaught_count_generators()
-{
-       entity e;
-       total_generators = redowned = blueowned = yellowowned = pinkowned = 0;
-       for(e = ons_worldgeneratorlist; e; e = e.ons_worldgeneratornext)
-       {
-               ++total_generators;
-               redowned += (e.team == NUM_TEAM_1 && e.health > 0);
-               blueowned += (e.team == NUM_TEAM_2 && e.health > 0);
-               yellowowned += (e.team == NUM_TEAM_3 && e.health > 0);
-               pinkowned += (e.team == NUM_TEAM_4 && e.health > 0);
-       }
-}
-
-int Onslaught_GetWinnerTeam()
-{
-       int winner_team = 0;
-       if(redowned > 0)
-               winner_team = NUM_TEAM_1;
-       if(blueowned > 0)
-       {
-               if(winner_team) return 0;
-               winner_team = NUM_TEAM_2;
-       }
-       if(yellowowned > 0)
-       {
-               if(winner_team) return 0;
-               winner_team = NUM_TEAM_3;
-       }
-       if(pinkowned > 0)
-       {
-               if(winner_team) return 0;
-               winner_team = NUM_TEAM_4;
-       }
-       if(winner_team)
-               return winner_team;
-       return -1; // no generators left?
-}
-
-void nades_Clear(entity e);
-
-#define ONS_OWNED_GENERATORS() ((redowned > 0) + (blueowned > 0) + (yellowowned > 0) + (pinkowned > 0))
-#define ONS_OWNED_GENERATORS_OK() (ONS_OWNED_GENERATORS() > 1)
-bool Onslaught_CheckWinner()
-{
-       if ((autocvar_timelimit && time > game_starttime + autocvar_timelimit * 60) || (round_handler_GetEndTime() > 0 && round_handler_GetEndTime() - time <= 0))
-       {
-               ons_stalemate = true;
-
-               if (!wpforenemy_announced)
-               {
-                       Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_OVERTIME_CONTROLPOINT);
-                       sound(NULL, CH_INFO, SND_ONS_GENERATOR_DECAY, VOL_BASE, ATTEN_NONE);
-
-                       wpforenemy_announced = true;
-               }
-
-               entity tmp_entity; // temporary entity
-               float d;
-               for(tmp_entity = ons_worldgeneratorlist; tmp_entity; tmp_entity = tmp_entity.ons_worldgeneratornext) if(time >= tmp_entity.ons_overtime_damagedelay)
-               {
-                       // tmp_entity.max_health / 300 gives 5 minutes of overtime.
-                       // control points reduce the overtime duration.
-                       d = 1;
-                       entity e;
-                       for(e = ons_worldcplist; e; e = e.ons_worldcpnext)
-                       {
-                               if(DIFF_TEAM(e, tmp_entity))
-                               if(e.islinked)
-                                       d = d + 1;
-                       }
-
-                       if(autocvar_g_campaign && autocvar__campaign_testrun)
-                               d = d * tmp_entity.max_health;
-                       else
-                               d = d * tmp_entity.max_health / max(30, 60 * autocvar_timelimit_suddendeath);
-
-                       Damage(tmp_entity, tmp_entity, tmp_entity, d, DEATH_HURTTRIGGER.m_id, tmp_entity.origin, '0 0 0');
-
-                       tmp_entity.sprite.SendFlags |= 16;
-
-                       tmp_entity.ons_overtime_damagedelay = time + 1;
-               }
-       }
-       else { wpforenemy_announced = false; ons_stalemate = false; }
-
-       Onslaught_count_generators();
-
-       if(ONS_OWNED_GENERATORS_OK())
-               return 0;
-
-       int winner_team = Onslaught_GetWinnerTeam();
-
-       if(winner_team > 0)
-       {
-               Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, APP_TEAM_NUM(winner_team, CENTER_ROUND_TEAM_WIN));
-               Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(winner_team, INFO_ROUND_TEAM_WIN));
-               TeamScore_AddToTeam(winner_team, ST_ONS_CAPS, +1);
-       }
-       else if(winner_team == -1)
-       {
-               Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_ROUND_TIED);
-               Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_ROUND_TIED);
-       }
-
-       ons_stalemate = false;
-
-       play2all(SND(CTF_CAPTURE(winner_team)));
-
-       round_handler_Init(7, autocvar_g_onslaught_warmup, autocvar_g_onslaught_round_timelimit);
-
-       FOREACH_CLIENT(IS_PLAYER(it), {
-               it.ons_roundlost = true;
-               it.player_blocked = true;
-
-               nades_Clear(it);
-       });
-
-       return 1;
-}
-
-bool Onslaught_CheckPlayers()
-{
-       return 1;
-}
-
-void Onslaught_RoundStart()
-{
-       entity tmp_entity;
-       FOREACH_CLIENT(IS_PLAYER(it), it.player_blocked = false);
-
-       for(tmp_entity = ons_worldcplist; tmp_entity; tmp_entity = tmp_entity.ons_worldcpnext)
-               tmp_entity.sprite.SendFlags |= 16;
-
-       for(tmp_entity = ons_worldgeneratorlist; tmp_entity; tmp_entity = tmp_entity.ons_worldgeneratornext)
-               tmp_entity.sprite.SendFlags |= 16;
-}
-
-
-// ================
-// Bot player logic
-// ================
-
-// NOTE: LEGACY CODE, needs to be re-written!
-
-void havocbot_goalrating_ons_offenseitems(entity this, float ratingscale, vector org, float sradius)
-{
-       bool needarmor = false, needweapons = false;
-
-       // Needs armor/health?
-       if(this.health<100)
-               needarmor = true;
-
-       // Needs weapons?
-       int c = 0;
-       FOREACH(Weapons, it != WEP_Null, {
-               if(this.weapons & (it.m_wepset))
-               if(++c >= 4)
-                       break;
-       });
-
-       if(c<4)
-               needweapons = true;
-
-       if(!needweapons && !needarmor)
-               return;
-
-       LOG_DEBUG(this.netname, " needs weapons ", ftos(needweapons));
-       LOG_DEBUG(this.netname, " needs armor ", ftos(needarmor));
-
-       // See what is around
-       FOREACH_ENTITY_FLOAT(bot_pickup, true,
-       {
-               // gather health and armor only
-               if (it.solid)
-               if ( ((it.health || it.armorvalue) && needarmor) || (it.weapons && needweapons ) )
-               if (vdist(it.origin - org, <, sradius))
-               {
-                       int t = it.bot_pickupevalfunc(this, it);
-                       if (t > 0)
-                               navigation_routerating(this, it, t * ratingscale, 500);
-               }
-       });
-}
-
-void havocbot_role_ons_setrole(entity this, int role)
-{
-       LOG_DEBUG(this.netname," switched to ");
-       switch(role)
-       {
-               case HAVOCBOT_ONS_ROLE_DEFENSE:
-                       LOG_DEBUG("defense");
-                       this.havocbot_role = havocbot_role_ons_defense;
-                       this.havocbot_role_flags = HAVOCBOT_ONS_ROLE_DEFENSE;
-                       this.havocbot_role_timeout = 0;
-                       break;
-               case HAVOCBOT_ONS_ROLE_ASSISTANT:
-                       LOG_DEBUG("assistant");
-                       this.havocbot_role = havocbot_role_ons_assistant;
-                       this.havocbot_role_flags = HAVOCBOT_ONS_ROLE_ASSISTANT;
-                       this.havocbot_role_timeout = 0;
-                       break;
-               case HAVOCBOT_ONS_ROLE_OFFENSE:
-                       LOG_DEBUG("offense");
-                       this.havocbot_role = havocbot_role_ons_offense;
-                       this.havocbot_role_flags = HAVOCBOT_ONS_ROLE_OFFENSE;
-                       this.havocbot_role_timeout = 0;
-                       break;
-       }
-       LOG_DEBUG("");
-}
-
-void havocbot_goalrating_ons_controlpoints_attack(entity this, float ratingscale)
-{
-       entity cp, cp1, cp2, best, wp;
-       float radius, bestvalue;
-       int c;
-       bool found;
-
-       // Filter control points
-       for(cp2 = ons_worldcplist; cp2; cp2 = cp2.ons_worldcpnext)
-       {
-               cp2.wpcost = c = 0;
-               cp2.wpconsidered = false;
-
-               if(cp2.isshielded)
-                       continue;
-
-               // Ignore owned controlpoints
-               if(!(cp2.isgenneighbor[this.team] || cp2.iscpneighbor[this.team]))
-                       continue;
-
-               // Count team mates interested in this control point
-               // (easier and cleaner than keeping counters per cp and teams)
-               FOREACH_CLIENT(IS_PLAYER(it), {
-                       if(SAME_TEAM(it, this))
-                       if(it.havocbot_role_flags & HAVOCBOT_ONS_ROLE_OFFENSE)
-                       if(it.havocbot_ons_target == cp2)
-                               ++c;
-               });
-
-               // NOTE: probably decrease the cost of attackable control points
-               cp2.wpcost = c;
-               cp2.wpconsidered = true;
-       }
-
-       // We'll consider only the best case
-       bestvalue = 99999999999;
-       cp = NULL;
-       for(cp1 = ons_worldcplist; cp1; cp1 = cp1.ons_worldcpnext)
-       {
-               if (!cp1.wpconsidered)
-                       continue;
-
-               if(cp1.wpcost<bestvalue)
-               {
-                       bestvalue = cp1.wpcost;
-                       cp = cp1;
-                       this.havocbot_ons_target = cp1;
-               }
-       }
-
-       if (!cp)
-               return;
-
-       LOG_DEBUG(this.netname, " chose cp ranked ", ftos(bestvalue));
-
-       if(cp.goalentity)
-       {
-               // Should be attacked
-               // Rate waypoints near it
-               found = false;
-               best = NULL;
-               bestvalue = 99999999999;
-               for(radius=0; radius<1000 && !found; radius+=500)
-               {
-                       for(wp=findradius(cp.origin,radius); wp; wp=wp.chain)
-                       {
-                               if(!(wp.wpflags & WAYPOINTFLAG_GENERATED))
-                               if(wp.classname=="waypoint")
-                               if(checkpvs(wp.origin,cp))
-                               {
-                                       found = true;
-                                       if(wp.cnt<bestvalue)
-                                       {
-                                               best = wp;
-                                               bestvalue = wp.cnt;
-                                       }
-                               }
-                       }
-               }
-
-               if(best)
-               {
-                       navigation_routerating(this, best, ratingscale, 10000);
-                       best.cnt += 1;
-
-                       this.havocbot_attack_time = 0;
-                       if(checkpvs(this.view_ofs,cp))
-                       if(checkpvs(this.view_ofs,best))
-                               this.havocbot_attack_time = time + 2;
-               }
-               else
-               {
-                       navigation_routerating(this, cp, ratingscale, 10000);
-               }
-               LOG_DEBUG(this.netname, " found an attackable controlpoint at ", vtos(cp.origin));
-       }
-       else
-       {
-               // Should be touched
-               LOG_DEBUG(this.netname, " found a touchable controlpoint at ", vtos(cp.origin));
-               found = false;
-
-               // Look for auto generated waypoint
-               if (!bot_waypoints_for_items)
-               for (wp = findradius(cp.origin,100); wp; wp = wp.chain)
-               {
-                       if(wp.classname=="waypoint")
-                       {
-                               navigation_routerating(this, wp, ratingscale, 10000);
-                               found = true;
-                       }
-               }
-
-               // Nothing found, rate the controlpoint itself
-               if (!found)
-                       navigation_routerating(this, cp, ratingscale, 10000);
-       }
-}
-
-bool havocbot_goalrating_ons_generator_attack(entity this, float ratingscale)
-{
-       entity g, wp, bestwp;
-       bool found;
-       int best;
-
-       for(g = ons_worldgeneratorlist; g; g = g.ons_worldgeneratornext)
-       {
-               if(SAME_TEAM(g, this) || g.isshielded)
-                       continue;
-