Class Ability:Disguise
Content
The Spy's special ability opens the disguise menu.
Conditions
Spies attempting to disguise should:
- Not be carrying any goals (standard flags, keys etc) that prevent disguising from taking place. This should be LUA-controlled as some maps allow disuising while carrying flags.
Disguise Menu
From the disguise menu, players can choose the team colour and class to disguise as.
On maps featuring two teams, there are two options: Enemy or Friendly. Choosing one of these options then opens the class menu where the player can complete their selection.
E.g. Enemy->Spy. Friendly->Scout. Enemy->HWGuy.
On maps featuring more than two teams, there are n colour options, where n is the number of teams. After choosing a team colour, the class disguise menu opens allowing the player to choose their complete disguise.
E.g. Blue->Soldier. Red->Scout. Green->Spy. Yellow->Sniper
On regular maps, spies should not be allowed to disguise as civilians. We could add this functionality in for non-regular maps where the civilian class is used for something and spies are also permitted (for example, a assassination map where the prez has a decoy). If maps feature class restrictions (e.g. no demos), then the spy disguise options should reflect those restrictions as disguising as a class that is disabled is basically useless. This isn't hugely important, but it should be added at some point.
Needs Updated with the radial menu
Timing
- Changing from one team's colours to another team's colours takes 3 seconds.
- Changing from one class disguise to another also takes 3 seconds.
Stacking Disguise Commands
- Performing multiple simultaneous commands results in no time-savings. I.e. the commands' timing run consecutively as opposed to concurrently.
- Performing one command, waiting for a period and then performing a second command results in the commands overlapping, but again no time is saved. E.g. if a blue, undisguised spy chooses the blue soldier disguise, then two seconds later chooses to change colours to red, the last 1 second of the soldier disguise routine will be added to the new red disguise command. This means two things:
- A: The total time of the full disguise (blue spy -> red soldier) will be 6 seconds.
- B: The time to finish the disguise from issuing the red team disguise command will be 4 seconds as 2 seconds of the soldier disguise has already elapsed meaning 1 second remains, so this is added to the new red team disguise command, taking a further 3 seconds. 1 + 3 = 4.
Special Cases
- If the spy's class disguise is unchanged, changing back to the default team's colours is instant. E.g. A blue spy with red team colours can switch back to being a blue spy instantly.
- If the spy's team colour is unchanged, changing back to the default class disguise is instant. E.g. A blue spy with a blue soldier disguise can change back to being undisguised instantly.
The above conditions are in place because a spy could simply achieve the same effect (going back to the default colour and class) by attacking.
Friendly Indicators
When a spy is viewed by an allied teammate and the spy is disguised as one of the 'enemy' team, a visual indicator should be displayed. (I.e. this indicator only shows up when the friendly spy is disguised as a non-friendly. If the spy is undisguised or wearing the colours of an allied team the indicator is 'not' displayed). The indicator could simply be something like a team coloured "F" sprite being placed over the spy's head (so blue spies would have a blue F and so forth, regardless of the disguise currently employed). If a spy cumulatively receives 50 or more damage from a teammate, warning text and an audible "Ceasefire, I'm on your team!" sound effect should play to further reinforce the fact that the player is a teammate.
Disguise Fools Buildables
When disguised as a member or ally of the team to which a buildable belongs, the spy is ignored. Sentry guns do not track disguised spies. Dispensers cannot warn their owners of a disguised spy's presence even if the spy touches the dispenser.
Player Identification
When placed under an enemy's crosshair, the spy's name should show up as one the team members found on the team the spy is masquerading as. The name should preferably never correspond to that of the person who's looking at the spy and trying to identify him unless no other option is available (i.e. the disguise team has one member, so no other options exist). The health value should always be positive, and the armour value sensible. E.g. a scout with 10 health will generally always have 0 armour, as the scout's armour depletes faster than his health. Believable armour values could be calculated by applying the Armour absorption ratios relative to the class' remaining health values and associated armour type.
Class Identification and 3rd Person Weapons
When spies are disguised, they should display the relevant weapon in the third person view. TFC's spy was inflexible, as the spy could only equip one weapon in third person mode. This made spies very easy to spot in many instances.
The spy possesses four weapon slots (1,2,3 and 4), so there's enough choice to assign each slot a corresponding weapons slot with the disguised class (excluding the demoman's detpack and the engineer's buildables, as those are special cases).
For example, when disguised as the soldier:
Actual weapon / Weapon shown in 3rd person
- Slot1: Knife / Crowbar
- Slot2: Tranq / Single-barrelled Shotgun
- Slot3: Double-barrelled Shotgun / Double-barrelled Shotgun
- Slot4: Nailgun / RPG
This allows the spy to blend in more easily.
1st Person Weapons
When disguised, the spy's weapon viewmodel is unaffected by the disguise. Instead, the HUD shows an icon indicating what the 3rd person disguise weapon will appear to be.
E.g. If the spy is disguised as a soldier and is using slot 4, the nailgun viewmodel is held as normal and a HUD icon showing the RPG is displayed. This means the spy is, in reality, holding the nailgun but other players will see the spy as a soldier holding the RPG.
Speed Toggle
The player should be able to toggle between disguised speed and full speed using a bound key or a cvar. The HUD should indicate whether disguise speed or full speed is activated. Firing or losing disguise should obviously be a condition for the disguised speed to become reset to full speed regardless of the user's settings, as there is no advantage to running slowly when stripped of the disguise. If activated, the disguised speed should also be applied when disguised as a friendly class, as it is sometimes preferable to make the enemy think you're playing as another class. The disguised speed should obviously only apply when disguised as classes slower than the spy, as disguising as a scout shouldn't make you run faster than default.