Teamwork

Coherency, the first two minutes of callouts, and what to say when a pug has not learned each other yet.

In Havoc, the team that stays together survives, and it is not only a feeling. The director’s code actively punishes splitting up.

The director hunts the player who is alone

  • Loner prevention. A player out of coherency for 6-10 seconds at Havoc R5 gets a hound, mutant or trapper sent at them, on top of the normal specials.
  • Rush prevention. The player at the front or the back who is 40 m (R5) or 35 m (R6) from the next player gets a hound or mutant.
  • Hounds pick lonely targets. Their target choice puts a weight of 5 on being far from your team.
  • Sandwich and push-from-behind strikes check for low coherency before they fire.
Loner preventionmanagers/pacing/specials_pacing/specials_pacing.lua:1401
SpecialsPacing._update_loner_prevention = function (self, target_side_id, template, t)
  local loner_prevention_breeds = template.loner_prevention_breeds

  if not loner_prevention_breeds or t < self._loner_prevention_cooldown then
    return
  end

  if self._num_spawned_specials >= self._effective_max_alive_specials then
    return
  end

  local side_system = Managers.state.extension:system("side_system")
  local side = side_system:get_side(target_side_id)
  local target_units = side.valid_player_units
  local num_target_units = #target_units
  local num_non_disabled_players = 0

  table.clear(ALONE_TARGETS)

  for i = 1, num_target_units do
    local player_unit = target_units[i]
    local unit_data_extension = ScriptUnit.extension(player_unit, "unit_data_system")
    local character_state_component = unit_data_extension:read_component("character_state")
    local requires_help = PlayerUnitStatus.requires_help(character_state_component)

    if not requires_help then
      num_non_disabled_players = num_non_disabled_players + 1
    end

    local coherency_extension = ScriptUnit.has_extension(player_unit, "coherency_system")
    local num_units_in_coherency = coherency_extension and coherency_extension:num_units_in_coherency()

    if num_units_in_coherency == 1 then
      ALONE_TARGETS[#ALONE_TARGETS + 1] = player_unit
Open managers/pacing/specials_pacing/specials_pacing.lua at line 1401 on GitHub
Hounds prefer players outside coherencysettings/minion_target_selection/minion_target_selection_weights.lua:26
minion_target_selection_weights.chaos_hound = {
  disabled = -5,
  distance_to_target = 3,
  inverse_coherency_weight = 5,
  max_distance = 50,
  occupied_slots = -1,
  threat_multiplier = 1.5,
}
minion_target_selection_weights.chaos_newly_infected = {
  disabled = -1,
Open settings/minion_target_selection/minion_target_selection_weights.lua at line 26 on GitHub

Coherency is 8 metres

Coherency links players within 8 m. It gives toughness regeneration and powers a lot of talents, and once a link is made it holds a little further while you move. 8 m is closer than most people think: about two doorways’ width, or the length of a corridor bend.

Coherency radiussettings/player_character/player_character_constants.lua:891
    radius = 8,
    stickiness_limit = 20,
    stickiness_time = 2,
    buff_template_names = {
      "coherency_toughness_regen",
    },
Open settings/player_character/player_character_constants.lua at line 891 on GitHub

Rule of thumb: if you cannot see the Ogryn’s back, you are too far away.

The first two minutes in a pug

Strangers do not know each other’s habits yet, so say everything out loud in the first stretch. The team stops needing it once people have seen each other play.

  1. Roles in the lobby. “I’ll tank and taunt.” “Hordes and back, dome for objectives.” “Gunners, armour, shout.” “Book and flamer.” One line each.
  2. Ability plan. “Shout on cooldown, taunt when someone is under pressure, dome for objectives and moves, book for the oh-no moment.” Saying it once means nobody burns the book or dome by accident.
  3. First horde. Someone calls where the team holds. Everyone else confirms by moving there.
  4. First special. Tag it and say what it is and where: “Trapper, left balcony.” Tagging is not enough, because a tag does not say who is shooting it.
  5. First down. Say who is picking up (“I’ve got him”) so two people do not run in, or none.

What to call, in priority order

  1. Disablers: trappers, hounds, mutants. They end runs.
  2. Ranged elites: snipers, gunners, plasma gunners. They shred toughness from far away.
  3. Bombers and flamers. They break a hold position.
  4. Monsters and captains. Usually visible anyway, but say where you are fighting them.
  5. Ammo, health, ults. “Ammo low”, “Med here”, “Book ready”.

Revives

  • Disabled before downed. A netted or pounced teammate is still alive. Free them first.
  • Clear, then pick up. Reviving in the middle of a ring gets two players down. Taunt or shout first.
  • Last special again. If the specials are almost dead, consider letting the last one live for a moment while you stabilise. At rank 30+, killing it has a 50% chance to start a coordinated strike.