namespace HLWanted_Annie { enum BodyGroup { BODYGROUP_BODY = 0, BODYGROUP_GUN } enum WeaponSubModel { GUN_HOLSTER = 0, GUN_DRAWN, GUN_NONE } class monster_annie : ScriptBaseMonsterEntity { array g_Sounds = { "wanted/annie/aimbetter.wav", "wanted/annie/aimsbetter.wav", "wanted/annie/an_attack0.wav", "wanted/annie/an_attack1.wav", "wanted/annie/an_attack2.wav", "wanted/annie/an_die0.wav", "wanted/annie/an_die2.wav", "wanted/annie/an_die3.wav", "wanted/annie/an_pain0.wav", "wanted/annie/an_pain1.wav", "wanted/annie/an_pain2.wav", "wanted/annie/an_pain3.wav", "wanted/annie/askyesterday.wav", "wanted/annie/beadhead.wav", "wanted/annie/beenhit.wav", "wanted/annie/beenpractise.wav", "wanted/annie/bigbutt.wav", "wanted/annie/binpractise.wav", "wanted/annie/bitleft.wav", "wanted/annie/brother.wav", "wanted/annie/cantfigure.wav", "wanted/annie/cantgetworse.wav", "wanted/annie/chorestodo.wav", "wanted/annie/coffee.wav", "wanted/annie/corsets.wav", "wanted/annie/countmein.wav", "wanted/annie/cutitout.wav", "wanted/annie/deadbird.wav", "wanted/annie/diddntthink.wav", "wanted/annie/dontaskme.wav", "wanted/annie/dontbeleive.wav", "wanted/annie/dontforget.wav", "wanted/annie/dontworry.wav", "wanted/annie/dothatfor.wav", "wanted/annie/eggsiseggs.wav", "wanted/annie/enoughis.wav", "wanted/annie/fiveminutes.wav", "wanted/annie/giveup.wav", "wanted/annie/gladpractise.wav", "wanted/annie/gladtohelp.wav", "wanted/annie/goget.wav", "wanted/annie/goshseethat.wav", "wanted/annie/gotochurch.wav", "wanted/annie/gunstraight.wav", "wanted/annie/hardone.wav", "wanted/annie/harmonica.wav", "wanted/annie/hearanoise.wav", "wanted/annie/hearsomethin.wav", "wanted/annie/hearthat.wav", "wanted/annie/hello.wav", "wanted/annie/hellothere.wav", "wanted/annie/hey.wav", "wanted/annie/hisheriff.wav", "wanted/annie/hithere.wav", "wanted/annie/hogwash.wav", "wanted/annie/holesock.wav", "wanted/annie/hopeaccident.wav", "wanted/annie/hosslike.wav", "wanted/annie/hosslikeme.wav", "wanted/annie/hotbath.wav", "wanted/annie/howdy.wav", "wanted/annie/howdysheriff.wav", "wanted/annie/idontknow.wav", "wanted/annie/idontthinkso.wav", "wanted/annie/iguesso.wav", "wanted/annie/illwaithere.wav", "wanted/annie/intuition.wav", "wanted/annie/ishotzeke.wav", "wanted/annie/lemonade.wav", "wanted/annie/letsgo.wav", "wanted/annie/liedown.wav", "wanted/annie/littlebusy.wav", "wanted/annie/lookcloud.wav", "wanted/annie/maybee.wav", "wanted/annie/missinteeth.wav", "wanted/annie/moveout.wav", "wanted/annie/needrest.wav", "wanted/annie/neverletme.wav", "wanted/annie/newbeans.wav", "wanted/annie/nope.wav", "wanted/annie/nosiree.wav", "wanted/annie/notelling.wav", "wanted/annie/notmakeit.wav", "wanted/annie/notscaredyou.wav", "wanted/annie/okillhide.wav", "wanted/annie/onebullet.wav", "wanted/annie/oneshot.wav", "wanted/annie/outhouse.wav", "wanted/annie/owww.wav", "wanted/annie/prayimiss.wav", "wanted/annie/putmoneyonit.wav", "wanted/annie/reckonso.wav", "wanted/annie/rudestare.wav", "wanted/annie/script1.wav", "wanted/annie/script2.wav", "wanted/annie/seemoveing.wav", "wanted/annie/seemyaim.wav", "wanted/annie/shootem.wav", "wanted/annie/shootwoman.wav", "wanted/annie/sightsout.wav", "wanted/annie/sixgotaway.wav", "wanted/annie/slowyoudown.wav", "wanted/annie/smell.wav", "wanted/annie/soundsbad.wav", "wanted/annie/soundsright.wav", "wanted/annie/stopitonce.wav", "wanted/annie/sunhotoday.wav", "wanted/annie/sureidmissed.wav", "wanted/annie/surething.wav", "wanted/annie/swellday.wav", "wanted/annie/takenomore.wav", "wanted/annie/tattle.wav", "wanted/annie/tellpractice.wav", "wanted/annie/thatdoesit.wav", "wanted/annie/thinkexcite.wav", "wanted/annie/thinking.wav", "wanted/annie/tincans.wav", "wanted/annie/toohardforme.wav", "wanted/annie/turnonme.wav", "wanted/annie/visitouthouse.wav", "wanted/annie/wanthelp.wav", "wanted/annie/wayyouwantit.wav", "wanted/annie/whatareyou.wav", "wanted/annie/whatmetodo.wav", "wanted/annie/whatnow.wav", "wanted/annie/whatsgoingon.wav", "wanted/annie/whatsmatter.wav", "wanted/annie/whatswrong.wav", "wanted/annie/whatthe.wav", "wanted/annie/wingsoff.wav", "wanted/annie/workwell.wav", "wanted/annie/woundclean.wav", "wanted/annie/woundpain.wav", "wanted/annie/yes.wav", "wanted/annie/youbeenhit.wav", "wanted/annie/youdontsay.wav", "wanted/annie/_comma.wav" }; void Precache() { g_Game.PrecacheModel( "models/wanted/annie.mdl" ); for( uint uiIndex = 0; uiIndex < g_Sounds.length(); ++uiIndex ) { g_SoundSystem.PrecacheSound( g_Sounds[uiIndex] ); // cache g_Game.PrecacheGeneric( "sound/" + g_Sounds[uiIndex] ); // client has to download } } void Spawn( void ) { Precache(); pev.solid = SOLID_NOT; dictionary keyvalues = { { "model", "models/wanted/annie.mdl" }, { "soundlist", "../wanted/annie/annie.txt" }, { "displayname", "Annie" } }; CBaseEntity@ pEntity = g_EntityFuncs.CreateEntity( "monster_barney", keyvalues, false ); CBaseMonster@ pBa = pEntity.MyMonsterPointer(); pBa.pev.origin = pev.origin; pBa.pev.angles = pev.angles; pBa.pev.health = pev.health; pBa.pev.targetname = pev.targetname; pBa.pev.netname = pev.netname; pBa.pev.weapons = pev.weapons; pBa.pev.body = pev.body; pBa.pev.skin = pev.skin; pBa.pev.mins = pev.mins; pBa.pev.maxs = pev.maxs; pBa.pev.scale = pev.scale; pBa.pev.rendermode = pev.rendermode; pBa.pev.renderamt = pev.renderamt; pBa.pev.rendercolor = pev.rendercolor; pBa.pev.renderfx = pev.renderfx; pBa.pev.spawnflags = pev.spawnflags; g_EntityFuncs.DispatchSpawn( pBa.edict() ); pBa.m_iTriggerCondition = self.m_iTriggerCondition; pBa.m_iszTriggerTarget = self.m_iszTriggerTarget; g_EntityFuncs.Remove( self ); } } class monster_annie_dead : ScriptBaseMonsterEntity { int m_iPose = 0; private arraym_szPoses = { "lying_on_back", "lying_on_side", "lying_on_stomach" }; bool KeyValue( const string& in szKey, const string& in szValue ) { if( szKey == "pose" ) { m_iPose = atoi( szValue ); return true; } else return BaseClass.KeyValue( szKey, szValue ); } void Precache() { if( string( self.pev.model ).IsEmpty() ) g_Game.PrecacheModel( self, "models/wanted/annie.mdl" ); else g_Game.PrecacheModel( self, self.pev.model ); } void Spawn() { Precache(); if( string( self.pev.model ).IsEmpty() ) g_EntityFuncs.SetModel( self, "models/wanted/annie.mdl" ); else g_EntityFuncs.SetModel( self, self.pev.model ); const float flHealth = self.pev.health; self.MonsterInitDead(); self.pev.health = flHealth; if( self.pev.health == 0 ) self.pev.health = 8; self.m_bloodColor = BLOOD_COLOR_RED; self.pev.solid = SOLID_SLIDEBOX; self.pev.movetype = MOVETYPE_STEP; self.pev.takedamage = DAMAGE_YES; self.SetClassification( CLASS_PLAYER_ALLY ); self.m_FormattedName = "Dead Annie"; self.SetBodygroup( BODYGROUP_GUN, GUN_NONE ); self.pev.sequence = self.LookupSequence( m_szPoses[m_iPose] ); if ( self.pev.sequence == -1 ) { g_Game.AlertMessage( at_console, "Dead annie with bad pose\n" ); } } } void Register() { g_CustomEntityFuncs.RegisterCustomEntity( "HLWanted_Annie::monster_annie", "monster_annie" ); g_CustomEntityFuncs.RegisterCustomEntity( "HLWanted_Annie::monster_annie_dead", "monster_annie_dead" ); } } // end of HLWanted_Annie namespace