Inside the recently released Portal 2 mod tools/SDK, users have stumbled upon code relating to an NPC named “Combine Advisor - Roaming”. Half-Life fans will recognize this immediately – the Advisors are the grub-like creatures that control the Combine, the master species that may have first created this inter-dimensional enterprise. They appear in HL2 and Episode One, with a much more central role in Episode Two.
However, do not dismiss this as outdated code originating from Episode Two itself! This NPC entity is not in Episode Two’s SDK, and this is the first time anyone has seen it. In addition, this entity was just removed from the Portal 2 SDK by Valve, along with some other unused code.
So, let’s take a look at the code itself, shall we?
@NPCClass base(BaseHelicopter) studio(“models/advisor.mdl” ) = npc_combine_advisor_roaming : “Combine Advisor Roaming”
input OmniscientOn(void) : "Advisor knows target's location even when target is out of sight or behind cover"
input OmniscientOff(void) : "Advisor relies on normal sight functions to locate target"
input BlindfireOn(void ) : "Advisor will fire at an unseen target, attempting to punch through to them"
input BlindfireOff(void ) : "Advisor only fires at viusible target"
input SetPenetrationDepth( float ) : "Set penetration depth of bullets"
input SetDockingBBox( void ) : "Shrink Bounding Box"
input SetNormalBBox( void ) : "Set Bounding Box to normal size"
input EnableGroundAttack( void ) : "Allow the advisor to use its ground attack"
input DisableGroundAttack( void ) : "Don't allow the advisor to use its ground attack"
input DoGroundAttack( string ) : "Causes the advisor to execute its ground attack"
input BecomeInvulnerable( void ): "Stops the advisor from taking damage, but still makes sounds effects"
input BecomeVulnerable( void ): "Makes the advisor act normally to damage"
input EnableRotorSound(void) : "Turns on rotor sounds"
input DisableRotorSound(void) : "Turns off rotor sounds"
input DoAvalancheBlast(void) : "Performs an avalanche blast"
input DoSpitAttack(void) : "Performs a spit attack"
input SetMaxSpeed( float ) : "Adjusts max speed for the advisor"
input DropShield( float ) : "Drops advisor shield for x seconds (0 sec will use default)"
input SetRetreatTrack( string ) : "Sets a retreat track for advisor to fly to when receiving too much damage"
output OnFireCannon(void) : "Fires when the advisor fires a cannon round"
output OnFirstDamage( void ) : "Fired when the first damage is done to the advisor."
output OnSecondDamage( void ) : "Fired when the second damage is done to the advisor."
output OnThirdDamage( void ) : "Fired when the third damage is done to the advisor."
output OnFourthDamage( void ) : "Fired when the fourth damage is done to the advisor."
output OnEnoughPhysAmmo( void ) : "Fired when advisor got enough phys ammo."
output OnLowPhysAmmo( void ) : "Fired when advisor is low on phys ammo."
output OnOutOfPhysAmmo( void ) : "Fired when advisor has no phys ammo."
output OnDmgReached( void ) : "Fires when advisor received too much damage exceeding threshold within a short time span."
Very, very interesting! There’s also code for an ”Advisor – Roaming - Crash Target”:
@PointClass base(Targetname, Parentname) iconsprite(“editor/info_target.vmt”) = info_target_advisor_roaming_crash : “Advisor Crash Target”
input Enable(void) : "Enable the crash target."
input Disable(void) : "Disable the crash target."
Well, at least now we have reason to believe that Valve has been tinkering with some HL-related stuff, in some capacity! Here’s to E3 2011? Maybe?
Thanks to Chemical Alia for letting us use her great art as a feature image!