diff --git a/cl_dll/ammo.cpp b/cl_dll/ammo.cpp index 7be34e23..f48e4258 100644 --- a/cl_dll/ammo.cpp +++ b/cl_dll/ammo.cpp @@ -866,7 +866,11 @@ int CHudAmmo::Draw( float flTime ) if( m_fFade > 0 ) m_fFade -= ( (float)gHUD.m_flTimeDelta * 20.0f ); +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS ScaleColors( r, g, b, a ); @@ -894,7 +898,11 @@ int CHudAmmo::Draw( float flTime ) x += AmmoWidth / 2; - UnpackRGB( r,g,b, RGB_YELLOWISH ); +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS + UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS // draw the | bar FillRGBA( x, y, iBarWidth, gHUD.m_iFontHeight, r, g, b, a ); @@ -964,7 +972,11 @@ int DrawBar( int x, int y, int width, int height, float f ) width -= w; } +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS FillRGBA( x, y, width, height, r, g, b, 128 ); @@ -1032,7 +1044,11 @@ int CHudAmmo::DrawWList( float flTime ) { int iWidth; +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS if( iActiveSlot == i ) a = 255; @@ -1083,7 +1099,11 @@ int CHudAmmo::DrawWList( float flTime ) if( !p || !p->iId ) continue; +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS // if active, then we must have ammo. if( gpActiveSel == p ) @@ -1120,7 +1140,11 @@ int CHudAmmo::DrawWList( float flTime ) else { // Draw Row of weapons. +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS for( int iPos = 0; iPos < MAX_WEAPON_POSITIONS; iPos++ ) { @@ -1131,7 +1155,11 @@ int CHudAmmo::DrawWList( float flTime ) if( gWR.HasAmmo( p ) ) { +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS a = 128; } else diff --git a/cl_dll/ammo_secondary.cpp b/cl_dll/ammo_secondary.cpp index 4034c86f..88e0055f 100644 --- a/cl_dll/ammo_secondary.cpp +++ b/cl_dll/ammo_secondary.cpp @@ -60,7 +60,11 @@ int CHudAmmoSecondary::Draw( float flTime ) // draw secondary ammo icons above normal ammo readout int a, x, y, r, g, b, AmmoWidth; +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS a = (int)Q_max( MIN_ALPHA, m_fFade ); if( m_fFade > 0 ) m_fFade -= ( (float)gHUD.m_flTimeDelta * 20.0f ); // slowly lower alpha to fade out icons diff --git a/cl_dll/ammohistory.cpp b/cl_dll/ammohistory.cpp index a3961da7..c095faa4 100644 --- a/cl_dll/ammohistory.cpp +++ b/cl_dll/ammohistory.cpp @@ -125,7 +125,11 @@ int HistoryResource::DrawAmmoHistory( float flTime ) HSPRITE *spr = gWR.GetAmmoPicFromWeapon( rgAmmoHistory[i].iId, rcPic ); int r, g, b; +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS float scale = ( rgAmmoHistory[i].DisplayTime - flTime ) * 80; ScaleColors( r, g, b, Q_min( scale, 255 ) ); @@ -152,7 +156,11 @@ int HistoryResource::DrawAmmoHistory( float flTime ) return 1; // we don't know about the weapon yet, so don't draw anything int r, g, b; - UnpackRGB( r,g,b, RGB_YELLOWISH ); +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS + UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS if( !gWR.HasAmmo( weap ) ) UnpackRGB( r, g, b, RGB_REDISH ); // if the weapon doesn't have ammo, display it as red @@ -174,7 +182,11 @@ int HistoryResource::DrawAmmoHistory( float flTime ) wrect_t rect = gHUD.GetSpriteRect( rgAmmoHistory[i].iId ); +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS float scale = ( rgAmmoHistory[i].DisplayTime - flTime ) * 80; ScaleColors( r, g, b, Q_min( scale, 255 ) ); diff --git a/cl_dll/battery.cpp b/cl_dll/battery.cpp index b6cd9e0b..e8aa37af 100644 --- a/cl_dll/battery.cpp +++ b/cl_dll/battery.cpp @@ -80,7 +80,11 @@ int CHudBattery::Draw( float flTime ) rc = *m_prc2; rc.top += m_iHeight * ( (float)( 100 - ( Q_min( 100, m_iBat ) ) ) * 0.01f ); // battery can go from 0 to 100 so * 0.01 goes from 0 to 1 +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS if( !( gHUD.m_iWeaponBits & ( 1 << ( WEAPON_SUIT ) ) ) ) return 1; diff --git a/cl_dll/cl_util.h b/cl_dll/cl_util.h index 7ba3bc7e..0f824283 100644 --- a/cl_dll/cl_util.h +++ b/cl_dll/cl_util.h @@ -19,6 +19,7 @@ #define CL_UTIL_H #include "exportdef.h" #include "cvardef.h" +#include "moddef.h" #ifndef TRUE #define TRUE 1 diff --git a/cl_dll/flashlight.cpp b/cl_dll/flashlight.cpp index 8cdd45b2..57bf87cb 100644 --- a/cl_dll/flashlight.cpp +++ b/cl_dll/flashlight.cpp @@ -112,7 +112,8 @@ int CHudFlashlight::Draw( float flTime ) return 1; #ifdef MOBILE_HACKS - if( !( gHUD.m_iWeaponBits & ( 1 << ( WEAPON_FLASHLIGHT ) ) ) ) + if( !( gHUD.m_iWeaponBits & ( 1 << ( WEAPON_SUIT ) ) ) + || ( g_iModType == MOD_INDUCTION && !( gHUD.m_iWeaponBits & ( 1 << ( WEAPON_FLASHLIGHT ) ) ) ) ) #else // MOBILE_HACKS if( !( gHUD.m_iWeaponBits & ( 1 << ( WEAPON_SUIT ) ) ) ) #endif // MOBILE_HACKS @@ -126,7 +127,11 @@ int CHudFlashlight::Draw( float flTime ) if( m_flBat < 0.20f ) UnpackRGB( r,g,b, RGB_REDISH ); else - UnpackRGB( r,g,b, RGB_YELLOWISH ); +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS + UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS ScaleColors( r, g, b, a ); diff --git a/cl_dll/health.cpp b/cl_dll/health.cpp index e14182b8..2c3191ec 100644 --- a/cl_dll/health.cpp +++ b/cl_dll/health.cpp @@ -166,7 +166,11 @@ void CHudHealth::GetPainColor( int &r, int &g, int &b ) #else if( m_iHealth > 25 ) { - UnpackRGB( r, g, b, RGB_YELLOWISH ); +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS + UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS } else { @@ -232,7 +236,11 @@ int CHudHealth::Draw( float flTime ) int iHeight = gHUD.m_iFontHeight; int iWidth = HealthWidth / 10; +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS FillRGBA( x, y, iWidth, iHeight, r, g, b, a ); } @@ -381,7 +389,11 @@ int CHudHealth::DrawDamage( float flTime ) if( !m_bitsDamage ) return 1; +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS a = (int)( fabs( sin( flTime * 2.0f ) ) * 256.0f ); diff --git a/cl_dll/hud.cpp b/cl_dll/hud.cpp index 9652770d..e6621000 100644 --- a/cl_dll/hud.cpp +++ b/cl_dll/hud.cpp @@ -28,6 +28,11 @@ #include "demo.h" #include "demo_api.h" +#ifdef MOBILE_HACKS +int g_iModType; +int g_iHudColor; +#endif // MOBILE_HACKS + cvar_t *hud_textmode; float g_hud_text_color[3]; @@ -200,6 +205,34 @@ void CHud::Init( void ) m_pSpriteList = NULL; +#ifdef MOBILE_HACKS + if( HUD_IsGame( "biglolly" ) ) + { + g_iModType = MOD_BIGLOLLY; + g_iHudColor = PINKISH; + } + else if( HUD_IsGame( "bshift" ) ) + { + g_iModType = MOD_BSHIFT; + g_iHudColor = BLUISH; + } + else if( HUD_IsGame( "halfsecret" ) ) + { + g_iModType = MOD_HALFSECRET; + g_iHudColor = YELLOWISH; + } + else if( HUD_IsGame( "sewerbeta" ) ) + { + g_iModType = MOD_SEWERBETA; + g_iHudColor = WHITISH; + } + else + { + g_iModType = MOD_VALVE; + g_iHudColor = YELLOWISH; + } +#endif // MOBILE_HACKS + // Clear any old HUD list if( m_pHudList ) { diff --git a/cl_dll/hud.h b/cl_dll/hud.h index 53f1db6e..63fa78cf 100644 --- a/cl_dll/hud.h +++ b/cl_dll/hud.h @@ -684,4 +684,6 @@ extern int g_iTeamNumber; extern int g_iUser1; extern int g_iUser2; extern int g_iUser3; + +extern int g_iHudColor; #endif diff --git a/cl_dll/hud_msg.cpp b/cl_dll/hud_msg.cpp index 7cc2fbad..b6d80bba 100644 --- a/cl_dll/hud_msg.cpp +++ b/cl_dll/hud_msg.cpp @@ -120,7 +120,11 @@ int CHud::MsgFunc_Concuss( const char *pszName, int iSize, void *pbuf ) m_iConcussionEffect = READ_BYTE(); if( m_iConcussionEffect ) { +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); // Vit_amiN: fixed +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); // Vit_amiN: fixed +#endif // MOBILE_HACKS this->m_StatusIcons.EnableIcon( "dmg_concuss", r, g, b ); } else diff --git a/cl_dll/hud_spectator.cpp b/cl_dll/hud_spectator.cpp index f666b5e6..21702278 100644 --- a/cl_dll/hud_spectator.cpp +++ b/cl_dll/hud_spectator.cpp @@ -1113,7 +1113,11 @@ void CHudSpectator::DrawOverviewEntities() z = m_OverviewData.layersHeights[0] * zScale; // get yellow/brown HUD color +#ifdef MOBILE_HACKS + UnpackRGB( ir, ig, ib, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( ir, ig, ib, RGB_YELLOWISH ); +#endif // MOBILE_HACKS r = (float)ir / 255.0f; g = (float)ig / 255.0f; b = (float)ib / 255.0f; diff --git a/cl_dll/train.cpp b/cl_dll/train.cpp index de480ec2..40ae68fb 100644 --- a/cl_dll/train.cpp +++ b/cl_dll/train.cpp @@ -53,7 +53,11 @@ int CHudTrain::Draw( float fTime ) { int r, g, b, x, y; +#ifdef MOBILE_HACKS + UnpackRGB( r, g, b, g_iHudColor ); +#else // MOBILE_HACKS UnpackRGB( r, g, b, RGB_YELLOWISH ); +#endif // MOBILE_HACKS SPR_Set( m_hSprite, r, g, b ); // This should show up to the right and part way up the armor number diff --git a/dlls/agrunt.cpp b/dlls/agrunt.cpp index 28374a6b..a298b7fd 100644 --- a/dlls/agrunt.cpp +++ b/dlls/agrunt.cpp @@ -909,6 +909,11 @@ BOOL CAGrunt::FCanCheckAttacks( void ) //========================================================= BOOL CAGrunt::CheckMeleeAttack1( float flDot, float flDist ) { +#ifdef MOBILE_HACKS + if( g_iModType == MOD_AOM ) + return FALSE; +#endif // MOBILE_HACKS + if( HasConditions( bits_COND_SEE_ENEMY ) && flDist <= AGRUNT_MELEE_DIST && flDot >= 0.6f && m_hEnemy != 0 ) { return TRUE; @@ -1108,7 +1113,11 @@ Schedule_t *CAGrunt::GetSchedule( void ) return GetScheduleOfType( SCHED_RANGE_ATTACK1 ); } +#ifdef MOBILE_HACKS + if( g_iModType != MOD_AOM && OccupySlot ( bits_SLOT_AGRUNT_CHASE ) ) +#else if( OccupySlot ( bits_SLOT_AGRUNT_CHASE ) ) +#endif { return GetScheduleOfType( SCHED_CHASE_ENEMY ); } diff --git a/dlls/buttons.cpp b/dlls/buttons.cpp index 528d18e7..ee523f50 100644 --- a/dlls/buttons.cpp +++ b/dlls/buttons.cpp @@ -1022,7 +1022,7 @@ void CMomentaryRotButton::KeyValue( KeyValueData *pkvd ) { m_returnSpeed = atof( pkvd->szValue ); #ifdef MOBILE_HACKS - if( m_returnSpeed > 45.0f ) + if( g_iModType == MOD_REDEMPT && m_returnSpeed > 45.0f ) m_returnSpeed = 45.0f; #endif // MOBILE_HACKS pkvd->fHandled = TRUE; diff --git a/dlls/combat.cpp b/dlls/combat.cpp index df079af7..bb37caf0 100644 --- a/dlls/combat.cpp +++ b/dlls/combat.cpp @@ -522,6 +522,11 @@ void CBaseMonster::BecomeDead( void ) BOOL CBaseMonster::ShouldGibMonster( int iGib ) { +#ifdef MOBILE_HACKS + if( g_iModType == MOD_AOM ) + return FALSE; +#endif // MOBILE_HACKS + if( ( iGib == GIB_NORMAL && pev->health < GIB_HEALTH_VALUE ) || ( iGib == GIB_ALWAYS ) ) return TRUE; diff --git a/dlls/effects.cpp b/dlls/effects.cpp index d676ec3f..ad25a7bb 100644 --- a/dlls/effects.cpp +++ b/dlls/effects.cpp @@ -2287,7 +2287,12 @@ public: // BOOL m_fBeamsCleared; }; -LINK_ENTITY_TO_CLASS( env_warpball, CWarpBall ) +// LINK_ENTITY_TO_CLASS( env_warpball, CWarpBall ) +extern "C" EXPORT void env_warpball( entvars_t *pev ) +{ + if( g_iModType == MOD_BSHIFT ) + GetClassPtr( (CWarpBall *)pev ); +} TYPEDESCRIPTION CWarpBall::m_SaveData[] = { diff --git a/dlls/extdll.h b/dlls/extdll.h index eb8c37ec..c6854ae6 100644 --- a/dlls/extdll.h +++ b/dlls/extdll.h @@ -95,6 +95,10 @@ typedef float vec_t; // needed before including progdefs.h // Shared header describing protocol between engine and DLLs #include "eiface.h" +#ifdef MOBILE_HACKS +#include "moddef.h" +#endif // MOBILE_HACKS + // Shared header between the client DLL and the game DLLs #include "cdll_dll.h" #ifndef Q_min diff --git a/dlls/game.cpp b/dlls/game.cpp index 08f137df..7ab56bc1 100644 --- a/dlls/game.cpp +++ b/dlls/game.cpp @@ -668,11 +668,14 @@ void GameDLLInit( void ) #ifdef MOBILE_HACKS // Absolute Redemption - // Roy - CVAR_REGISTER( &sk_roy_health1 );// {"sk_roy_health1","0"}; - CVAR_REGISTER( &sk_roy_health2 );// {"sk_roy_health2","0"}; - CVAR_REGISTER( &sk_roy_health3 );// {"sk_roy_health3","0"}; -#endif + if( g_iModType == MOD_REDEMPT ) + { + // Roy + CVAR_REGISTER( &sk_roy_health1 );// {"sk_roy_health1","0"}; + CVAR_REGISTER( &sk_roy_health2 );// {"sk_roy_health2","0"}; + CVAR_REGISTER( &sk_roy_health3 );// {"sk_roy_health3","0"}; + } +#endif // MOBILE_HACKS // Scientist CVAR_REGISTER( &sk_scientist_health1 );// {"sk_scientist_health1","0"}; diff --git a/dlls/gamerules.cpp b/dlls/gamerules.cpp index d9937530..4c7547b9 100644 --- a/dlls/gamerules.cpp +++ b/dlls/gamerules.cpp @@ -202,8 +202,11 @@ void CGameRules::RefreshSkillData ( void ) #ifdef MOBILE_HACKS // Absolute Redeption - // Roy - gSkillData.royHealth = GetSkillCvar( "sk_roy_health" ); + if( g_iModType == MOD_REDEMPT ) + { + // Roy + gSkillData.royHealth = GetSkillCvar( "sk_roy_health" ); + } #endif // MOBILE_HACKS // Scientist diff --git a/dlls/h_export.cpp b/dlls/h_export.cpp index a3f4f35e..c10f0d0f 100644 --- a/dlls/h_export.cpp +++ b/dlls/h_export.cpp @@ -29,6 +29,9 @@ enginefuncs_t g_engfuncs; globalvars_t *gpGlobals; server_physics_api_t g_physfuncs; +#ifdef MOBILE_HACKS +int g_iModType; +#endif // MOBILE_HACKS #ifdef _WIN32 @@ -54,4 +57,52 @@ extern "C" void DLLEXPORT EXPORT2 GiveFnptrsToDll( enginefuncs_t *pengfuncsFromE { memcpy( &g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t) ); gpGlobals = pGlobals; +#ifdef MOBILE_HACKS + char szGameFolder[64]; + + (*g_engfuncs.pfnGetGameDir)( szGameFolder ); + + if( FStrEq( szGameFolder, "aom" ) ) + { + g_iModType = MOD_AOM; + } + else if( FStrEq( szGameFolder, "biglolly" ) ) + { + g_iModType = MOD_BIGLOLLY; + } + else if( FStrEq( szGameFolder, "bshift" ) ) + { + g_iModType = MOD_BSHIFT; + } + else if( FStrEq( szGameFolder, "halfsecret" ) ) + { + g_iModType = MOD_HALFSECRET; + } + else if( FStrEq( szGameFolder, "borderlands" ) + || if( FStrEq( szGameFolder, "caseclosed" ) + || if( FStrEq( szGameFolder, "vendetta" ) ) + { + g_ModType = MOD_HEVSUIT; + } + else if( FStrEq( szGameFolder, "induction" ) ) + { + g_iModType = MOD_INDUCTION; + } + else if( FStrEq( szGameFolder, "redempt" ) ) + { + g_iModType = MOD_REDEMPT; + } + else if( FStrEq( szGameFolder, "sewerbeta" ) ) + { + g_iModType = MOD_SEWERBETA; + } + else if( FStrEq( szGameFolder, "tot" ) ) + { + g_iModType = MOD_TOT; + } + else + { + g_iModType = MOD_VALVE; + } +#endif // MOBILE_HACKS } diff --git a/dlls/items.cpp b/dlls/items.cpp index 436b301a..9996cef5 100644 --- a/dlls/items.cpp +++ b/dlls/items.cpp @@ -238,7 +238,13 @@ class CItemArmorVest : public CItem } }; -LINK_ENTITY_TO_CLASS( item_armorvest, CItemArmorVest ) +// LINK_ENTITY_TO_CLASS( item_armorvest, CItemArmorVest ) +extern "C" EXPORT void item_armorvest( entvars_t *pev ) +{ + if( g_iModType == MOD_BSHIFT ) + GetClassPtr( (CItemArmorVest *)pev ); +} + class CItemHelmet : public CItem { @@ -272,7 +278,12 @@ class CItemHelmet : public CItem } }; -LINK_ENTITY_TO_CLASS( item_helmet, CItemHelmet ) +// LINK_ENTITY_TO_CLASS( item_helmet, CItemHelmet ) +extern "C" EXPORT void item_helmet( entvars_t *pev ) +{ + if( g_iModType == MOD_BSHIFT ) + GetClassPtr( (CItemHelmet *)pev ); +} #endif // MOBILE_HACKS class CItemBattery : public CItem @@ -286,7 +297,12 @@ class CItemBattery : public CItem void Precache( void ) { PRECACHE_MODEL( "models/w_battery.mdl" ); - PRECACHE_SOUND( "items/gunpickup2.wav" ); +#ifdef MOBILE_HACKS + if( g_iModType == MOD_BIGLOLLY ) + PRECACHE_SOUND( "items/smallmedkit1.wav" ); + else +#endif // MOBILE_HACKS + PRECACHE_SOUND( "items/gunpickup2.wav" ); } BOOL MyTouch( CBasePlayer *pPlayer ) { @@ -304,7 +320,13 @@ class CItemBattery : public CItem pPlayer->pev->armorvalue += gSkillData.batteryCapacity; pPlayer->pev->armorvalue = Q_min( pPlayer->pev->armorvalue, MAX_NORMAL_BATTERY ); - EMIT_SOUND( pPlayer->edict(), CHAN_ITEM, "items/gunpickup2.wav", 1, ATTN_NORM ); +#ifdef MOBILE_HACKS + if( g_iModType == MOD_BIGLOLLY ) + EMIT_SOUND( pPlayer->edict(), CHAN_ITEM, "items/smallmedkit1.wav", 1, ATTN_NORM ); + else +#endif // MOBILE_HACKS + EMIT_SOUND( pPlayer->edict(), CHAN_ITEM, "items/gunpickup2.wav", 1, ATTN_NORM ); + MESSAGE_BEGIN( MSG_ONE, gmsgItemPickup, NULL, pPlayer->pev ); WRITE_STRING( STRING( pev->classname ) ); @@ -399,7 +421,12 @@ class CItemFlashlight : public CItem } }; -LINK_ENTITY_TO_CLASS( item_flashlight, CItemFlashlight ) +// LINK_ENTITY_TO_CLASS( item_flashlight, CItemFlashlight ) +extern "C" EXPORT void item_flashlight( entvars_t *pev ) +{ + if( g_iModType == MOD_INDUCTION ) + GetClassPtr( (CItemFlashlight *)pev ); +} #endif // MOBILE_HACKS class CItemLongJump : public CItem diff --git a/dlls/moddef.h b/dlls/moddef.h index 505c7963..2a2cebb1 100644 --- a/dlls/moddef.h +++ b/dlls/moddef.h @@ -2,6 +2,8 @@ #ifndef MODDEF #define MODDEF +extern int g_iModType; + enum { MOD_VALVE, // Half-Life @@ -11,7 +13,6 @@ enum MOD_HALFSECRET, // Half-Secret MOD_HEVSUIT, // Case Closed, Bloody Pizza: Vendetta, Borderlands MOD_INDUCTION, // Half-Life: Induction - MOD_KLEINER // Kleiner's Adventures Demo MOD_REDEMPT, // Redemption/Absolute Redemption MOD_SEWER_BETA, // Sewer Beta MOD_TOT // Times of Troubles diff --git a/dlls/player.cpp b/dlls/player.cpp index cf1cb023..e0d60e34 100644 --- a/dlls/player.cpp +++ b/dlls/player.cpp @@ -3296,7 +3296,7 @@ void CBasePlayer::FlashlightTurnOn( void ) } #ifdef MOBILE_HACKS - if( (pev->weapons & ( 1 << WEAPON_FLASHLIGHT ) ) ) + if( (pev->weapons & ( 1 << WEAPON_SUIT ) ) || ( g_iModType == MOD_INDUCTION && (pev->weapons & ( 1 << WEAPON_FLASHLIGHT ) ) ) ) #else // MOBILE_HACKS if( (pev->weapons & ( 1 << WEAPON_SUIT ) ) ) #endif // MOBILE_HACKS @@ -3463,9 +3463,13 @@ void CBasePlayer::CheatImpulseCommands( int iImpulse ) gEvilImpulse101 = TRUE; GiveNamedItem( "item_suit" ); #ifdef MOBILE_HACKS - GiveNamedItem( "item_armorvest" ); - GiveNamedItem( "item_helmet" ); - GiveNamedItem( "item_battery" ); + if( g_iModType == BSHIFT ) + { + GiveNamedItem( "item_armorvest" ); + GiveNamedItem( "item_helmet" ); + } + else + GiveNamedItem( "item_battery" ); #else // MOBILE_HACKS GiveNamedItem( "item_battery" ); #endif // MOBILE_HACKS diff --git a/dlls/redempt/roy.cpp b/dlls/redempt/roy.cpp index 3054ffb6..cee27460 100644 --- a/dlls/redempt/roy.cpp +++ b/dlls/redempt/roy.cpp @@ -58,7 +58,12 @@ public: void TalkInit( void ); }; -LINK_ENTITY_TO_CLASS( monster_roy, CRoy ) +// LINK_ENTITY_TO_CLASS( monster_roy, CRoy ) +extern "C" EXPORT void monster_roy( entvars_t *pev ) +{ + if( g_iModType == MOD_REDEMPT ) + GetClassPtr( (CRoy *)pev ); +} //========================================================= // ALertSound - barney says "Freeze!" @@ -446,7 +451,12 @@ void CDeadRoy::KeyValue( KeyValueData *pkvd ) CBaseMonster::KeyValue( pkvd ); } -LINK_ENTITY_TO_CLASS( monster_roy_dead, CDeadRoy ) +// LINK_ENTITY_TO_CLASS( monster_roy_dead, CDeadRoy ) +extern "C" EXPORT void monster_roy_dead( entvars_t *pev ) +{ + if( g_iModType == MOD_REDEMPT ) + GetClassPtr( (CDeadRoy *)pev ); +} //========================================================= // ********** DeadRoy SPAWN ********** diff --git a/dlls/scientist.cpp b/dlls/scientist.cpp index 853969b2..00e5d1ba 100644 --- a/dlls/scientist.cpp +++ b/dlls/scientist.cpp @@ -62,6 +62,11 @@ enum LINK_ENTITY_TO_CLASS( monster_scientist, CScientist ) #ifdef MOBILE_HACKS LINK_ENTITY_TO_CLASS( monster_rosenberg, CScientist ) +extern "C" EXPORT void monster_rosenberg( entvars_t *pev ) +{ + if( g_iModType == MOD_BSHIFT ) + GetClassPtr( (CScientist *)pev ); +} #endif // MOBILE_HACKS TYPEDESCRIPTION CScientist::m_SaveData[] = diff --git a/dlls/scripted.cpp b/dlls/scripted.cpp index 60258b4e..f48bba51 100644 --- a/dlls/scripted.cpp +++ b/dlls/scripted.cpp @@ -374,6 +374,9 @@ void CCineMonster::PossessEntity( void ) } #ifdef MOBILE_HACKS + if( g_iModType != MOD_TOT ) + return; + // // Fix a bug where barney would not run to the osprey on map 7. // diff --git a/dlls/singleplay_gamerules.cpp b/dlls/singleplay_gamerules.cpp index 15f74621..15e235d2 100644 --- a/dlls/singleplay_gamerules.cpp +++ b/dlls/singleplay_gamerules.cpp @@ -127,7 +127,9 @@ float CHalfLifeRules::FlPlayerFallDamage( CBasePlayer *pPlayer ) void CHalfLifeRules::PlayerSpawn( CBasePlayer *pPlayer ) { #ifdef MOBILE_HACKS - pPlayer->GiveNamedItem( "item_suit" ); + if( g_iModType == HEVSUIT + || g_iModType == SEWERBETA ) + pPlayer->GiveNamedItem( "item_suit" ); #endif // MOBILE_HACKS } diff --git a/dlls/tot/civ.cpp b/dlls/tot/civ.cpp index c9e1d6fe..ffd78fac 100644 --- a/dlls/tot/civ.cpp +++ b/dlls/tot/civ.cpp @@ -35,8 +35,12 @@ public: BOOL CanHeal(void); }; -LINK_ENTITY_TO_CLASS(monster_civ, CCivScientist); - +// LINK_ENTITY_TO_CLASS(monster_civ, CCivScientist); +extern "C" EXPORT void monster_civ( entvars_t *pev ) +{ + if( g_iModType == MOD_TOT ) + GetClassPtr( (CCivScientist *)pev ); +} //========================================================= // Spawn diff --git a/dlls/triggers.cpp b/dlls/triggers.cpp index 4d682a46..98bdf404 100644 --- a/dlls/triggers.cpp +++ b/dlls/triggers.cpp @@ -2047,7 +2047,12 @@ public: int ObjectCaps( void ) { return CBaseDelay::ObjectCaps() & ~FCAP_ACROSS_TRANSITION; } }; -LINK_ENTITY_TO_CLASS( trigger_playerfreeze, CTriggerPlayerFreeze ) +// LINK_ENTITY_TO_CLASS( trigger_playerfreeze, CTriggerPlayerFreeze ) +extern "C" EXPORT void trigger_playerfreeze( entvars_t *pev ) +{ + if( g_iModType == MOD_BSHIFT || g_iModType == MOD_INDUCTION ) + GetClassPtr( (CTriggerPlayerFreeze *)pev ); +} void CTriggerPlayerFreeze::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) {