LambdaGeneration Community Join our new Community Platform — Share Half-Life news and community content. Built by fans, for fans.
We Are The Lambda Generation. LambdaGeneration is a website dedicated to the video game Half-Life. ( We're basically really passionate about crowbars, headcrabs and anyone who has goatee with a PhD in theoretical physics… )

Half-Life Code Found Inside Portal 2 SDK

News & Rumors Other

Apparently, Valve is turning this into some sort of tradition.

Half-Life Code Found Inside Portal 2 SDK

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”

// Inputs
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”

// Outputs
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!

About this Article


  1. There’s loads of left over shit in all the SDK releases hope this helps. Same goes for all the GCF files.

  2. very cool. the most credible evidence in a long while of work being done on whatever comes next in the HL universe

  3. They’re going to E3 just because of the free food.

  4. It’s coming soon at least! 😀

  5. If Valve doesn’t go to E3 this year, I will cry.

  6. Man E3 is gona be good this year. Battlefield 3, Mass Effect 3, Skyrim, possible Half-Life 3 *head explodes

    • The name you’re looking for is “Half-Life 2: Episode 3”, not “Half-Life 3”

      • Debatable, is it not? Surely Valve hasn’t put us through almost 4 years of total silence for a mere episode. Surely they wouldn’t go on record by saying they’ve given up on episodic releases, only to then release a mere episode.

        • Development time doesn’t entitle you to anything, you get what you pay for. They said there won’t be any MORE episodic games, but they’ve already announced Episode 3… and don’t call me Shirley

          • You’re forgetting that we haven’t paid for anything. Episode Three has never even been formally announced. Development time has nothing to do with entitlement. If Valve reveals Episode Three, and not Half-Life 3 after 4 years, they’re not going to look too good, and they know it. Valve has been crystal clear – they’re done with episodic releases and they are not coming back.

  7. They’re actually doing making a real attempt at something real? (Not to say Portal 2 wasn’t real, because it certainly was.) I’m hinting more so at the stuff VALVe needs to actually look at and fix.

Leave a reply

Sign in via Steam to skip spam and contact fields.