Untitled diff

Created Diff never expires
//=============================================================================
//=============================================================================
// DeusExPlayer.
// DeusExPlayer.
//=============================================================================
//=============================================================================
class DeusExPlayer extends PlayerPawnExt
class DeusExPlayer extends PlayerPawnExt
native;
native;


#exec OBJ LOAD FILE=Effects
#exec OBJ LOAD FILE=Effects


// Name and skin assigned to PC by player on the Character Generation screen
// Name and skin assigned to PC by player on the Character Generation screen
var travel String TruePlayerName;
var travel String TruePlayerName;
var travel int PlayerSkin;
var travel int PlayerSkin;


// Combat Difficulty, set only at new game time
// Combat Difficulty, set only at new game time
var travel Float CombatDifficulty;
var travel Float CombatDifficulty;


// Augmentation system vars
// Augmentation system vars
var travel AugmentationManager AugmentationSystem;
var travel AugmentationManager AugmentationSystem;


// Skill system vars
// Skill system vars
var travel SkillManager SkillSystem;
var travel SkillManager SkillSystem;


var() travel int SkillPointsTotal;
var() travel int SkillPointsTotal;
var() travel int SkillPointsAvail;
var() travel int SkillPointsAvail;


// Credits (money) the player has
// Credits (money) the player has
var travel int Credits;
var travel int Credits;


// Energy the player has
// Energy the player has
var travel float Energy;
var travel float Energy;
var travel float EnergyMax;
var travel float EnergyMax;
var travel float EnergyDrain; // amount of energy left to drain
var travel float EnergyDrain; // amount of energy left to drain
var travel float EnergyDrainTotal; // total amount of energy to drain
var travel float EnergyDrainTotal; // total amount of energy to drain
var float MaxRegenPoint; // in multiplayer, the highest that auto regen will take you
var float MaxRegenPoint; // in multiplayer, the highest that auto regen will take you
var float RegenRate; // the number of points healed per second in mp
var float RegenRate; // the number of points healed per second in mp


// Keyring, used to store any keys the player picks up
// Keyring, used to store any keys the player picks up
var travel NanoKeyRing KeyRing; // Inventory Item
var travel NanoKeyRing KeyRing; // Inventory Item
var travel NanoKeyInfo KeyList; // List of Keys
var travel NanoKeyInfo KeyList; // List of Keys


// frob vars
// frob vars
var() float MaxFrobDistance;
var() float MaxFrobDistance;
var Actor FrobTarget;
var Actor FrobTarget;
var float FrobTime;
var float FrobTime;


// HUD Refresh Timer
// HUD Refresh Timer
var float LastRefreshTime;
var float LastRefreshTime;


// Conversation System Vars
// Conversation System Vars
var ConPlay conPlay; // Conversation
var ConPlay conPlay; // Conversation
var DataLinkPlay dataLinkPlay; // Used for DataLinks
var DataLinkPlay dataLinkPlay; // Used for DataLinks
var travel ConHistory conHistory; // Conversation History
var travel ConHistory conHistory; // Conversation History


// Inventory System Vars
// Inventory System Vars
var travel byte invSlots[30]; // 5x6 grid of inventory slots
var travel byte invSlots[30]; // 5x6 grid of inventory slots
var int maxInvRows; // Maximum number of inventory rows
var int maxInvRows; // Maximum number of inventory rows
var int maxInvCols; // Maximum number of inventory columns
var int maxInvCols; // Maximum number of inventory columns
var travel Inventory inHand; // The current object in hand
var travel Inventory inHand; // The current object in hand
var travel Inventory inHandPending; // The pending item waiting to be put in hand
var travel Inventory inHandPending; // The pending item waiting to be put in hand
var travel Inventory ClientinHandPending; // Client temporary inhand pending, for mousewheel use.
var travel Inventory ClientinHandPending; // Client temporary inhand pending, for mousewheel use.
var travel Inventory LastinHand; // Last object inhand, so we can detect inhand changes on the client.
var travel Inventory LastinHand; // Last object inhand, so we can detect inhand changes on the client.
var travel bool bInHandTransition; // The inHand is being swapped out
var travel bool bInHandTransition; // The inHand is being swapped out
// DEUS_EX AMSD Whether to ignore inv slots in multiplayer
// DEUS_EX AMSD Whether to ignore inv slots in multiplayer
var bool bBeltIsMPInventory;
var bool bBeltIsMPInventory;


// Goal Tracking
// Goal Tracking
var travel DeusExGoal FirstGoal;
var travel DeusExGoal FirstGoal;
var travel DeusExGoal LastGoal;
var travel DeusExGoal LastGoal;


// Note Tracking
// Note Tracking
var travel DeusExNote FirstNote;
var travel DeusExNote FirstNote;
var travel DeusExNote LastNote;
var travel DeusExNote LastNote;


// Data Vault Images
// Data Vault Images
var travel DataVaultImage FirstImage;
var travel DataVaultImage FirstImage;


// Log Messages
// Log Messages
var DeusExLog FirstLog;
var DeusExLog FirstLog;
var DeusExLog LastLog;
var DeusExLog LastLog;


// used by ViewModel
// used by ViewModel
var Actor ViewModelActor[8];
var Actor ViewModelActor[8];


// DEUS_EX AMSD For multiplayer option propagation UGH!
// DEUS_EX AMSD For multiplayer option propagation UGH!
// In most cases options will sync on their own. But for
// In most cases options will sync on their own. But for
// initial loadout based on options, we need to send them to the
// initial loadout based on options, we need to send them to the
// server. Easiest thing to do is have a function at startup
// server. Easiest thing to do is have a function at startup
// that sends that info.
// that sends that info.
var bool bFirstOptionsSynced;
var bool bFirstOptionsSynced;
var bool bSecondOptionsSynced;
var bool bSecondOptionsSynced;


// used while crouching
// used while crouching
var travel bool bForceDuck;
var travel bool bForceDuck;
var travel bool bCrouchOn; // used by toggle crouch
var travel bool bCrouchOn; // used by toggle crouch
var travel bool bWasCrouchOn; // used by toggle crouch
var travel bool bWasCrouchOn; // used by toggle crouch
var travel byte lastbDuck; // used by toggle crouch
var travel byte lastbDuck; // used by toggle crouch


// leaning vars
// leaning vars
var bool bCanLean;
var bool bCanLean;
var float curLeanDist;
var float curLeanDist;
var float prevLeanDist;
var float prevLeanDist;


// toggle walk
// toggle walk
var bool bToggleWalk;
var bool bToggleWalk;


// communicate run silent value in multiplayer
// communicate run silent value in multiplayer
var float RunSilentValue;
var float RunSilentValue;


// cheats
// cheats
var bool bWarrenEMPField;
var bool bWarrenEMPField;
var float WarrenTimer;
var float WarrenTimer;
var int WarrenSlot;
var int WarrenSlot;


// used by lots of stuff
// used by lots of stuff
var name FloorMaterial;
var name FloorMaterial;
var name WallMaterial;
var name WallMaterial;
var Vector WallNormal;
var Vector WallNormal;


// drug effects on the player
// drug effects on the player
var travel float drugEffectTimer;
var travel float drugEffectTimer;


// shake variables
// shake variables
var float JoltMagnitude; // magnitude of bounce imposed by heavy footsteps
var float JoltMagnitude; // magnitude of bounce imposed by heavy footsteps


// poison dart effects on the player
// poison dart effects on the player
var float poisonTimer; // time remaining before next poison TakeDamage
var float poisonTimer; // time remaining before next poison TakeDamage
var int poisonCounter; // number of poison TakeDamages remaining
var int poisonCounter; // number of poison TakeDamages remaining
var int poisonDamage; // damage taken from poison effect
var int poisonDamage; // damage taken from poison effect


// bleeding variables
// bleeding variables
var float BleedRate; // how profusely the player is bleeding; 0-1
var float BleedRate; // how profusely the player is bleeding; 0-1
var float DropCounter; // internal; used in tick()
var float DropCounter; // internal; used in tick()
var() float ClotPeriod; // seconds it takes bleedRate to go from 1 to 0
var() float ClotPeriod; // seconds it takes bleedRate to go from 1 to 0


var float FlashTimer; // How long it should take the current flash to fade.
var float FlashTimer; // How long it should take the current flash to fade.


// length of time player can stay underwater
// length of time player can stay underwater
// modified by SkillSwimming, AugAqualung, and Rebreather
// modified by SkillSwimming, AugAqualung, and Rebreather
var float swimDuration;
var float swimDuration;
var travel float swimTimer;
var travel float swimTimer;
var float swimBubbleTimer;
var float swimBubbleTimer;


// conversation info
// conversation info
var Actor ConversationActor;
var Actor ConversationActor;
var Actor lastThirdPersonConvoActor;
var Actor lastThirdPersonConvoActor;
var float lastThirdPersonConvoTime;
var float lastThirdPersonConvoTime;
var Actor lastFirstPersonConvoActor;
var Actor lastFirstPersonConvoActor;
var float lastFirstPersonConvoTime;
var float lastFirstPersonConvoTime;


var Bool bStartingNewGame; // Set to True when we're starting a new game.
var Bool bStartingNewGame; // Set to True when we're starting a new game.
var Bool bSavingSkillsAugs;
var Bool bSavingSkillsAugs;


// Put spy drone here instead of HUD
// Put spy drone here instead of HUD
var bool bSpyDroneActive;
var bool bSpyDroneActive;
var int spyDroneLevel;
var int spyDroneLevel;
var float spyDroneLevelValue;
var float spyDroneLevelValue;
var SpyDrone aDrone;
var SpyDrone aDrone;


// Buying skills for multiplayer
// Buying skills for multiplayer
var bool bBuySkills;
var bool bBuySkills;


// If player wants to see a profile of the killer in multiplayer
// If player wants to see a profile of the killer in multiplayer
var bool bKillerProfile;
var bool bKillerProfile;


// Multiplayer notification messages
// Multiplayer notification messages
const MPFLAG_FirstSpot = 0x01;
const MPFLAG_FirstSpot = 0x01;
const MPSERVERFLAG_FirstPoison = 0x01;
const MPSERVERFLAG_FirstPoison = 0x01;
const MPSERVERFLAG_FirstBurn = 0x02;
const MPSERVERFLAG_FirstBurn = 0x02;
const MPSERVERFLAG_TurretInv = 0x04;
const MPSERVERFLAG_TurretInv = 0x04;
const MPSERVERFLAG_CameraInv = 0x08;
const MPSERVERFLAG_CameraInv = 0x08;
const MPSERVERFLAG_LostLegs = 0x10;
const MPSERVERFLAG_LostLegs = 0x10;
const MPSERVERFLAG_DropItem = 0x20;
const MPSERVERFLAG_DropItem = 0x20;
const MPSERVERFLAG_NoCloakWeapon = 0x40;
const MPSERVERFLAG_NoCloakWeapon = 0x40;


const mpMsgDelay = 4.0;
const mpMsgDelay = 4.0;


var int mpMsgFlags;
var int mpMsgFlags;
var int mpMsgServerFlags;
var int mpMsgServerFlags;


const MPMSG_TeamUnatco =0;
const MPMSG_TeamUnatco =0;
const MPMSG_TeamNsf =1;
const MPMSG_TeamNsf =1;
const MPMSG_TeamHit =2;
const MPMSG_TeamHit =2;
const MPMSG_TeamSpot =3;
const MPMSG_TeamSpot =3;
const MPMSG_FirstPoison =4;
const MPMSG_FirstPoison =4;
const MPMSG_FirstBurn =5;
const MPMSG_FirstBurn =5;
const MPMSG_TurretInv =6;
const MPMSG_TurretInv =6;
const MPMSG_CameraInv =7;
const MPMSG_CameraInv =7;
const MPMSG_CloseKills =8;
const MPMSG_CloseKills =8;
const MPMSG_TimeNearEnd =9;
const MPMSG_TimeNearEnd =9;
const MPMSG_LostLegs =10;
const MPMSG_LostLegs =10;
const MPMSG_DropItem =11;
const MPMSG_DropItem =11;
const MPMSG_KilledTeammate =12;
const MPMSG_KilledTeammate =12;
const MPMSG_TeamLAM =13;
const MPMSG_TeamLAM =13;
const MPMSG_TeamComputer =14;
const MPMSG_TeamComputer =14;
const MPMSG_NoCloakWeapon =15;
const MPMSG_NoCloakWeapon =15;
const MPMSG_TeamHackTurret =16;
const MPMSG_TeamHackTurret =16;


var int mpMsgCode;
var int mpMsgCode;
var float mpMsgTime;
var float mpMsgTime;
var int mpMsgOptionalParam;
var int mpMsgOptionalParam;
var String mpMsgOptionalString;
var String mpMsgOptionalString;


// Variables used when starting new game to show the intro first.
// Variables used when starting new game to show the intro first.
var String strStartMap;
var String strStartMap;
var travel Bool bStartNewGameAfterIntro;
var travel Bool bStartNewGameAfterIntro;
var travel Bool bIgnoreNextShowMenu;
var travel Bool bIgnoreNextShowMenu;


// map that we're about to travel to after we finish interpolating
// map that we're about to travel to after we finish interpolating
var String NextMap;
var String NextMap;


// Configuration Variables
// Configuration Variables
var globalconfig bool bObjectNames; // Object names on/off
var globalconfig bool bObjectNames; // Object names on/off
var globalconfig bool bNPCHighlighting; // NPC highlighting when new convos
var globalconfig bool bNPCHighlighting; // NPC highlighting when new convos
var globalconfig bool bSubtitles; // True if Conversation Subtitles are on
var globalconfig bool bSubtitles; // True if Conversation Subtitles are on
var globalconfig bool bAlwaysRun; // True to default to running
var globalconfig bool bAlwaysRun; // True to default to running
var globalconfig bool bToggleCrouch; // True to let key toggle crouch
var globalconfig bool bToggleCrouch; // True to let key toggle crouch
var globalconfig float logTimeout; // Log Timeout Value
var globalconfig float logTimeout; // Log Timeout Value
var globalconfig byte maxLogLines; // Maximum number of log lines visible
var globalconfig byte maxLogLines; // Maximum number of log lines visible
var globalconfig bool bHelpMessages; // Multiplayer help messages
var globalconfig bool bHelpMessages; // Multiplayer help messages


// Overlay Options (TODO: Move to DeusExHUD.uc when serializable)
// Overlay Options (TODO: Move to DeusExHUD.uc when serializable)
var globalconfig byte translucencyLevel; // 0 - 10?
var globalconfig byte translucencyLevel; // 0 - 10?
var globalconfig bool bObjectBeltVisible;
var globalconfig bool bObjectBeltVisible;
var globalconfig bool bHitDisplayVisible;
var globalconfig bool bHitDisplayVisible;
var globalconfig bool bAmmoDisplayVisible;
var globalconfig bool bAmmoDisplayVisible;
var globalconfig bool bAugDisplayVisible;
var globalconfig bool bAugDisplayVisible;
var globalconfig bool bDisplayAmmoByClip;
var globalconfig bool bDisplayAmmoByClip;
var globalconfig bool bCompassVisible;
var globalconfig bool bCompassVisible;
var globalconfig bool bCrosshairVisible;
var globalconfig bool bCrosshairVisible;
var globalconfig bool bAutoReload;
var globalconfig bool bAutoReload;
var globalconfig bool bDisplayAllGoals;
var globalconfig bool bDisplayAllGoals;
var globalconfig bool bHUDShowAllAugs; // TRUE = Always show Augs on HUD
var globalconfig bool bHUDShowAllAugs; // TRUE = Always show Augs on HUD
var globalconfig int UIBackground; // 0 = Render 3D, 1 = Snapshot, 2 = Black
var globalconfig int UIBackground; // 0 = Render 3D, 1 = Snapshot, 2 = Black
var globalconfig bool bDisplayCompletedGoals;
var globalconfig bool bDisplayCompletedGoals;
var globalconfig bool bShowAmmoDescriptions;
var globalconfig bool bShowAmmoDescriptions;
var globalconfig bool bConfirmSaveDeletes;
var globalconfig bool bConfirmSaveDeletes;
var globalconfig bool bConfirmNoteDeletes;
var globalconfig bool bConfirmNoteDeletes;
var globalconfig bool bAskedToTrain;
var globalconfig bool bAskedToTrain;


// Multiplayer Playerspecific options
// Multiplayer Playerspecific options
var() globalconfig Name AugPrefs[9]; //List of aug preferences.
var() globalconfig Name AugPrefs[9]; //List of aug preferences.


// Used to manage NPC Barks
// Used to manage NPC Barks
var travel BarkManager barkManager;
var travel BarkManager barkManager;


// Color Theme Manager, used to manage all the pretty
// Color Theme Manager, used to manage all the pretty
// colors the player gets to play with for the Menus
// colors the player gets to play with for the Menus
// and HUD windows.
// and HUD windows.


var travel ColorThemeManager ThemeManager;
var travel ColorThemeManager ThemeManager;
var globalconfig String MenuThemeName;
var globalconfig String MenuThemeName;
var globalconfig String HUDThemeName;
var globalconfig String HUDThemeName;


// Translucency settings for various UI Elements
// Translucency settings for various UI Elements
var globalconfig Bool bHUDBordersVisible;
var globalconfig Bool bHUDBordersVisible;
var globalconfig Bool bHUDBordersTranslucent;
var globalconfig Bool bHUDBordersTranslucent;
var globalconfig Bool bHUDBackgroundTranslucent;
var globalconfig Bool bHUDBackgroundTranslucent;
var globalconfig Bool bMenusTranslucent;
var globalconfig Bool bMenusTranslucent;


var localized String InventoryFull;
var localized String InventoryFull;
var localized String TooMuchAmmo;
var localized String TooMuchAmmo;
var localized String TooHeavyToLift;
var localized String TooHeavyToLift;
var localized String CannotLift;
var localized String CannotLift;
var localized String NoRoomToLift;
var localized String NoRoomToLift;
var localized String CanCarryOnlyOne;
var localized String CanCarryOnlyOne;
var localized String CannotDropHere;
var localized String CannotDropHere;
var localized String HandsFull;
var localized String HandsFull;
var localized String NoteAdded;
var localized String NoteAdded;
var localized String GoalAdded;
var localized String GoalAdded;
var localized String PrimaryGoalCompleted;
var localized String PrimaryGoalCompleted;
var localized String SecondaryGoalCompleted;
var localized String SecondaryGoalCompleted;
var localized String EnergyDepleted;
var localized String EnergyDepleted;
var localized String AddedNanoKey;
var localized String AddedNanoKey;
var localized String HealedPointsLabel;
var localized String HealedPointsLabel;
var localized String HealedPointLabel;
var localized String HealedPointLabel;
var localized String SkillPointsAward;
var localized String SkillPointsAward;
var localized String QuickSaveGameTitle;
var localized String QuickSaveGameTitle;
var localized String WeaponUnCloak;
var localized String WeaponUnCloak;
var localized String TakenOverString;
var localized String TakenOverString;
var localized String HeadString;
var localized String HeadString;
var localized String TorsoString;
var localized String TorsoString;
var localized String LegsString;
var localized String LegsString;
var localized String WithTheString;
var localized String WithTheString;
var localized String WithString;
var localized String WithString;
var localized String PoisonString;
var localized String PoisonString;
var localized String BurnString;
var localized String BurnString;
var localized String NoneString;
var localized String NoneString;


var ShieldEffect DamageShield; //visual damage effect for multiplayer feedback
var ShieldEffect DamageShield; //visual damage effect for multiplayer feedback
var float ShieldTimer; //for turning shield to fade.
var float ShieldTimer; //for turning shield to fade.
enum EShieldStatus
enum EShieldStatus
{
{
SS_Off,
SS_Off,
SS_Fade,
SS_Fade,
SS_Strong
SS_Strong
};
};


var EShieldStatus ShieldStatus;
var EShieldStatus ShieldStatus;


var Pawn myBurner;
var Pawn myBurner;
var Pawn myPoisoner;
var Pawn myPoisoner;
var Actor myProjKiller;
var Actor myProjKiller;
var Actor myTurretKiller;
var Actor myTurretKiller;
var Actor myKiller;
var Actor myKiller;
var KillerProfile killProfile;
var KillerProfile killProfile;
var InvulnSphere invulnSph;
var InvulnSphere invulnSph;


// Conversation Invocation Methods
// Conversation Invocation Methods
enum EInvokeMethod
enum EInvokeMethod
{
{
IM_Bump,
IM_Bump,
IM_Frob,
IM_Frob,
IM_Sight,
IM_Sight,
IM_Radius,
IM_Radius,
IM_Named,
IM_Named,
IM_Other
IM_Other
};
};


enum EMusicMode
enum EMusicMode
{
{
MUS_Ambient,
MUS_Ambient,
MUS_Combat,
MUS_Combat,
MUS_Conversation,
MUS_Conversation,
MUS_Outro,
MUS_Outro,
MUS_Dying
MUS_Dying
};
};


var EMusicMode musicMode;
var EMusicMode musicMode;
var byte savedSection; // last section playing before interrupt
var byte savedSection; // last section playing before interrupt
var float musicCheckTimer;
var float musicCheckTimer;
var float musicChangeTimer;
var float musicChangeTimer;


// Used to keep track of # of saves
// Used to keep track of # of saves
var travel int saveCount;
var travel int saveCount;
var travel Float saveTime;
var travel Float saveTime;


// for getting at the debug system
// for getting at the debug system
var DebugInfo GlobalDebugObj;
var DebugInfo GlobalDebugObj;


// Set to TRUE if the player can see the quotes. :)
// Set to TRUE if the player can see the quotes. :)
var globalconfig bool bQuotesEnabled;
var globalconfig bool bQuotesEnabled;


// DEUS_EX AMSD For propagating gametype
// DEUS_EX AMSD For propagating gametype
var GameInfo DXGame;
var GameInfo DXGame;
var float ServerTimeDiff;
var float ServerTimeDiff;
var float ServerTimeLastRefresh;
var float ServerTimeLastRefresh;


// DEUS_EX AMSD For trying higher damage games
// DEUS_EX AMSD For trying higher damage games
var float MPDamageMult;
var float MPDamageMult;


// Nintendo immunity
// Nintendo immunity
var float NintendoImmunityTime;
var float NintendoImmunityTime;
var float NintendoImmunityTimeLeft;
var float NintendoImmunityTimeLeft;
var bool bNintendoImmunity;
var bool bNintendoImmunity;
const NintendoDelay = 6.0;
const NintendoDelay = 6.0;


// For closing comptuers if the server quits
// For closing comptuers if the server quits
var Computers ActiveComputer;
var Computers ActiveComputer;


var globalconfig bool bHDTP_JC;
var globalconfig bool bHDTP_JC;
var globalconfig bool bHDTP_Walton, bHDTP_Anna, bHDTP_UNATCO, bHDTP_MJ12, bHDTP_NSF, bHDTP_RiotCop, bHDTP_Gunther, bHDTP_Paul, bHDTP_Nico;
var globalconfig bool bHDTP_Walton, bHDTP_Anna, bHDTP_UNATCO, bHDTP_MJ12, bHDTP_NSF, bHDTP_RiotCop, bHDTP_Gunther, bHDTP_Paul, bHDTP_Nico;
var globalconfig int bHDTP_ALL; //-1 = none, 0 = use other settings, 1 = all.
var globalconfig int bHDTP_ALL; //-1 = none, 0 = use other settings, 1 = all.
var string HDTPMeshName;
var string HDTPMeshName;
var string HDTPMeshTex[8];
var string HDTPMeshTex[8];


//GMDX: CyberP & dasraiser
//GMDX: CyberP & dasraiser
//SAVEOUT
//SAVEOUT
var config int QuickSaveIndex; //out of some number
var config int QuickSaveIndex; //out of some number
var config int QuickSaveTotal;//this number
var config int QuickSaveTotal;//this number
var config bool bTogAutoSave; //CyberP: enable/disable autosave
var config bool bTogAutoSave; //CyberP: enable/disable autosave
var config int iQuickSaveLast;//index to last saved file
var config int iQuickSaveLast;//index to last saved file
var travel int QuickSaveLast;
var travel int QuickSaveLast;
var travel int QuickSaveCurrent;
var travel int QuickSaveCurrent;
var string QuickSaveName;
var string QuickSaveName;
//hardcore mode
//hardcore mode
var travel bool bHardCoreMode; //if set disable save game options.
var travel bool bHardCoreMode; //if set disable save game options.
var bool bPendingHardCoreSave; //set this to active quicksave
var bool bPendingHardCoreSave; //set this to active quicksave
//misc
//misc
var globalconfig bool bSkipNewGameIntro; //CyberP: for GMDX option menu
var globalconfig bool bSkipNewGameIntro; //CyberP: for GMDX option menu
var config bool bColorCodedAmmo;
var config bool bColorCodedAmmo;
var config bool bExtraHardcore;
var config bool bExtraHardcore;
var config bool bDecap;
var config bool bDecap;
var config bool bNoTranslucency;
var config bool bNoTranslucency;
var config bool bDblClickHolster;
var config bool bDblClickHolster;
var config bool bHalveAmmo;
var config bool bHalveAmmo;
var config bool bHardcoreUnlocked; //CyberP: unlock options once completed the game
var config bool bHardcoreUnlocked; //CyberP: unlock options once completed the game
var config bool bAutoHolster; //CyberP:auto-down weapon if right click deco
var config bool bAutoHolster; //CyberP:auto-down weapon if right click deco
var config bool bRealUI;
var config bool bRealUI;
var config bool bNoConsole;
var config bool bNoConsole;
var config bool bHardcoreAI1;
var config bool bHardcoreAI1;
var config bool bHardcoreAI2;
var config bool bHardcoreAI2;
var config bool bHardcoreAI3;
var config bool bHardcoreAI3;
var config bool bAlternateToolbelt;
var config bool bAlternateToolbelt;
var config bool bAnimBar1;
var config bool bAnimBar1;
var config bool bAnimBar2;
var config bool bAnimBar2;
var config bool bExtraObjectDetails;
var config bool bExtraObjectDetails;
var config bool bA51Camera;
var config bool bA51Camera;
var config bool bCameraSensors;
var config bool bCameraSensors;
var config bool bHardcoreFilterOption;
var config bool bHardcoreFilterOption;
var config bool bRealisticCarc;
var config bool bRealisticCarc;
var config bool bLaserRifle;
var config bool bLaserRifle;
var config bool bRemoveVanillaDeath;
var config bool bRemoveVanillaDeath;
var config bool bHitmarkerOn;
var config bool bHitmarkerOn;
var config bool bMantleOption;
var config bool bMantleOption;
var config bool bUSP;
var config bool bUSP;
var bool bThisMission; //CyberP: getting hacky in here.
var bool bThisMission; //CyberP: getting hacky in here.
var travel int fullUp; //CyberP: eat/drink limit.
var travel int fullUp; //CyberP: eat/drink limit.
var string fatty; //CyberP: eat/drink limit.
var string fatty; //CyberP: eat/drink limit.
var string noUsing; //CyberP: left click interaction
var string noUsing; //CyberP: left click interaction
var bool bLeftClicked; //CyberP: left click interaction
var bool bLeftClicked; //CyberP: left click interaction
var bool bDrainAlert; //CyberP: alert if energy low
var bool bDrainAlert; //CyberP: alert if energy low
var float bloodTime; //CyberP:
var float bloodTime; //CyberP:
var float hitmarkerTime;
var float hitmarkerTime;
var float camInterpol;
var float camInterpol;
var travel bool bWasCrosshair;
var travel bool bWasCrosshair;
var bool bFromCrosshair;
var bool bFromCrosshair;
var transient bool bThrowDecoration;
var transient bool bThrowDecoration;
var int SlotMem; //CyberP: for belt/weapon switching, so the code remembers what weapon we had before holstering
var int SlotMem; //CyberP: for belt/weapon switching, so the code remembers what weapon we had before holstering
var int clickCountCyber; //CyberP: for double clicking to unequip
var int clickCountCyber; //CyberP: for double clicking to unequip
var bool bStunted; //CyberP: for slowing player under various conditions
var bool bStunted; //CyberP: for slowing player under various conditions
var bool bRegenStamina; //CyberP: regen when in water but head above water
var bool bRegenStamina; //CyberP: regen when in water but head above water
var bool bCrouchRegen; //CyberP: regen when crouched and has skill
var bool bCrouchRegen; //CyberP: regen when crouched and has skill
var bool bDoubleClickCheck; //CyberP: to return from double clicking.
var bool bDoubleClickCheck; //CyberP: to return from double clicking.
var travel Inventory assignedWeapon;
var travel Inventory assignedWeapon;
var Inventory primaryWeapon;
var Inventory primaryWeapon;
var float augEffectTime;
var float augEffectTime;
var vector vecta;
var vector vecta;
var rotator rota;
var rotator rota;
//var bool bBoosty; //CyberP: low-tech speed boost
//var bool bBoosty; //CyberP: low-tech speed boost
//Alias=LeanLeft,LeanRight
//Alias=LeanLeft,LeanRight
//Aliases[18]=(Command="Button bLeanRightHook",Alias=LeanRH)
//Aliases[18]=(Command="Button bLeanRightHook",Alias=LeanRH)
//Aliases[19]=(Command="Button bLeanLeftHook",Alias=LeanLH)
//Aliases[19]=(Command="Button bLeanLeftHook",Alias=LeanLH)
var transient bool bLeanKeysDefined;
var transient bool bLeanKeysDefined;
var travel int PerkNamesArray[34]; //CyberP: perk names
var travel int PerkNamesArray[34]; //CyberP: perk names
var travel string BoughtPerks[34];
var travel string BoughtPerks[34];
var config color customColorsMenu[14]; //CyberP: custom color theme
var config color customColorsMenu[14]; //CyberP: custom color theme
var config color customColorsHUD[14];
var config color customColorsHUD[14];
var bool bTiptoes; //based on left+right lean
var bool bTiptoes; //based on left+right lean
var bool bCanTiptoes; //based on legs/crouch/can raise body
var bool bCanTiptoes; //based on legs/crouch/can raise body
var bool bIsTiptoes;
var bool bIsTiptoes;
var bool bPreTiptoes;
var bool bPreTiptoes;
var bool bLeftToe,bRightToe;
var bool bLeftToe,bRightToe;
var bool bRadarTran; //CyberP: radar trans effect
var bool bRadarTran; //CyberP: radar trans effect
var bool bCloakEnabled; //player is cloaked was class'DeusExWeapon'.default.this=T/F wow :)
var bool bCloakEnabled; //player is cloaked was class'DeusExWeapon'.default.this=T/F wow :)
var transient bool bIsCloaked; //weapon is cloaked
var transient bool bIsCloaked; //weapon is cloaked
var int LightLevelDisplay; //CyberP: augIFF light value
var int LightLevelDisplay; //CyberP: augIFF light value
var travel Actor RocketTarget; //GEPDummyTarget (basic actor)
var travel Actor RocketTarget; //GEPDummyTarget (basic actor)
var travel int advBelt;
var travel int advBelt;
var travel float RocketTargetMaxDistance;
var travel float RocketTargetMaxDistance;
var bool bGEPzoomActive;
var bool bGEPzoomActive;
var bool bGEPprojectileInflight;//is projectile flighing
var bool bGEPprojectileInflight;//is projectile flighing
var int GEPSkillLevel;
var int GEPSkillLevel;
var float GEPSkillLevelValue;
var float GEPSkillLevelValue;
var DeusExProjectile aGEPProjectile;//Fired projectile inflight
var DeusExProjectile aGEPProjectile;//Fired projectile inflight
var transient float GEPsteeringX,GEPsteeringY; //used for mouse input control
var transient float GEPsteeringX,GEPsteeringY; //used for mouse input control
var WeaponGEPGun GEPmounted;
var WeaponGEPGun GEPmounted;




//Recoil shockwave
//Recoil shockwave


var() vector RecoilSimLimit; //plus/minus
var() vector RecoilSimLimit; //plus/minus
var() float RecoilDrain;
var() float RecoilDrain;
var vector RecoilShake;
var vector RecoilShake;


var vector RecoilDesired;//lerp to this
var vector RecoilDesired;//lerp to this
var float RecoilTime; //amount of lerp shake before desired set to 0
var float RecoilTime; //amount of lerp shake before desired set to 0


var rotator SAVErotation;
var rotator SAVErotation;
var vector SAVElocation;
var vector SAVElocation;
var bool bStaticFreeze;
var bool bStaticFreeze;


//////////END GMDX
//////////END GMDX


// native Functions
// native Functions
native(1099) final function string GetDeusExVersion();
native(1099) final function string GetDeusExVersion();
native(2100) final function ConBindEvents();
native(2100) final function ConBindEvents();
native(3001) final function name SetBoolFlagFromString(String flagNameString, bool bValue);
native(3001) final function name SetBoolFlagFromString(String flagNameString, bool bValue);
native(3002) final function ConHistory CreateHistoryObject();
native(3002) final function ConHistory CreateHistoryObject();
native(3003) final function ConHistoryEvent CreateHistoryEvent();
native(3003) final function ConHistoryEvent CreateHistoryEvent();
native(3010) final function DeusExLog CreateLogObject();
native(3010) final function DeusExLog CreateLogObject();
native(3011) final function SaveGame(int saveIndex, optional String saveDesc);
native(3011) final function SaveGame(int saveIndex, optional String saveDesc);
native(3012) final function DeleteSaveGameFiles(optional String saveDirectory);
native(3012) final function DeleteSaveGameFiles(optional String saveDirectory);
native(3013) final function GameDirectory CreateGameDirectoryObject();
native(3013) final function GameDirectory CreateGameDirectoryObject();
native(3014) final function DataVaultImageNote CreateDataVaultImageNoteObject();
native(3014) final function DataVaultImageNote CreateDataVaultImageNoteObject();
native(3015) final function DumpLocation CreateDumpLocationObject();
native(3015) final function DumpLocation CreateDumpLocationObject();
native(3016) final function UnloadTexture(Texture texture);
native(3016) final function UnloadTexture(Texture texture);
//native 3017 taken by particleiterator.
//native 3017 taken by particleiterator.


//
//
// network replication
// network replication
//
//
replication
replication
{
{
// server to client
// server to client
reliable if ((Role == ROLE_Authority) && (bNetOwner))
reliable if ((Role == ROLE_Authority) && (bNetOwner))
AugmentationSystem, SkillSystem, SkillPointsTotal, SkillPointsAvail, inHand, inHandPending, KeyRing, Energy,
AugmentationSystem, SkillSystem, SkillPointsTotal, SkillPointsAvail, inHand, inHandPending, KeyRing, Energy,
bSpyDroneActive, DXGame, bBuySkills, drugEffectTimer, killProfile;
bSpyDroneActive, DXGame, bBuySkills, drugEffectTimer, killProfile;


reliable if (Role == ROLE_Authority)
reliable if (Role == ROLE_Authority)
ShieldStatus, RunSilentValue, aDrone, NintendoImmunityTimeLeft;
ShieldStatus, RunSilentValue, aDrone, NintendoImmunityTimeLeft;


// client to server
// client to server
reliable if (Role < ROLE_Authority)
reliable if (Role < ROLE_Authority)
BarkManager, FrobTarget, AugPrefs, bCanLean, curLeanDist, prevLeanDist,
BarkManager, FrobTarget, AugPrefs, bCanLean, curLeanDist, prevLeanDist,
bInHandTransition, bForceDuck, FloorMaterial, WallMaterial, WallNormal, swimTimer, swimDuration;
bInHandTransition, bForceDuck, FloorMaterial, WallMaterial, WallNormal, swimTimer, swimDuration;


// Functions the client can call
// Functions the client can call
reliable if (Role < ROLE_Authority)
reliable if (Role < ROLE_Authority)
DoFrob, ParseLeftClick, ParseRightClick, ReloadWeapon, PlaceItemInSlot, RemoveItemFromSlot, ClearInventorySlots,
DoFrob, ParseLeftClick, ParseRightClick, ReloadWeapon, PlaceItemInSlot, RemoveItemFromSlot, ClearInventorySlots,
SetInvSlots, FindInventorySlot, ActivateBelt, DropItem, SetInHand, AugAdd, ExtinguishFire, CatchFire,
SetInvSlots, FindInventorySlot, ActivateBelt, DropItem, SetInHand, AugAdd, ExtinguishFire, CatchFire,
AllEnergy, ClearPosition, ClearBelt, AddObjectToBelt, RemoveObjectFromBelt, TeamSay,
AllEnergy, ClearPosition, ClearBelt, AddObjectToBelt, RemoveObjectFromBelt, TeamSay,
KeypadRunUntriggers, KeypadRunEvents, KeypadToggleLocks, ReceiveFirstOptionSync, ReceiveSecondOptionSync,CreateDrone, MoveDrone,
KeypadRunUntriggers, KeypadRunEvents, KeypadToggleLocks, ReceiveFirstOptionSync, ReceiveSecondOptionSync,CreateDrone, MoveDrone,
CloseComputerScreen, SetComputerHackTime, UpdateCameraRotation, ToggleCameraState,
CloseComputerScreen, SetComputerHackTime, UpdateCameraRotation, ToggleCameraState,
SetTurretTrackMode, SetTurretState, NewMultiplayerMatch, PopHealth, ServerUpdateLean, BuySkills, PutInHand,
SetTurretTrackMode, SetTurretState, NewMultiplayerMatch, PopHealth, ServerUpdateLean, BuySkills, PutInHand,
MakeCameraAlly, PunishDetection, ServerSetAutoReload, FailRootWindowCheck, FailConsoleCheck, ClientPossessed;
MakeCameraAlly, PunishDetection, ServerSetAutoReload, FailRootWindowCheck, FailConsoleCheck, ClientPossessed;


// Unreliable functions the client can call
// Unreliable functions the client can call
unreliable if (Role < ROLE_Authority)
unreliable if (Role < ROLE_Authority)
MaintainEnergy, UpdateTranslucency;
MaintainEnergy, UpdateTranslucency;


// Functions the server calls in client
// Functions the server calls in client
reliable if ((Role == ROLE_Authority) && (bNetOwner))
reliable if ((Role == ROLE_Authority) && (bNetOwner))
UpdateAugmentationDisplayStatus, AddAugmentationDisplay, RemoveAugmentationDisplay, ClearAugmentationDisplay, ShowHud,
UpdateAugmentationDisplayStatus, AddAugmentationDisplay, RemoveAugmentationDisplay, ClearAugmentationDisplay, ShowHud,
ActivateKeyPadWindow, SetDamagePercent, SetServerTimeDiff, ClientTurnOffScores;
ActivateKeyPadWindow, SetDamagePercent, SetServerTimeDiff, ClientTurnOffScores;


reliable if (Role == ROLE_Authority)
reliable if (Role == ROLE_Authority)
InvokeComputerScreen, ClientDeath, AddChargedDisplay, RemoveChargedDisplay, MultiplayerDeathMsg, MultiplayerNotifyMsg,
InvokeComputerScreen, ClientDeath, AddChargedDisplay, RemoveChargedDisplay, MultiplayerDeathMsg, MultiplayerNotifyMsg,
BuySkillSound, ShowMultiplayerWin, ForceDroneOff ,AddDamageDisplay, ClientSpawnHits, CloseThisComputer, ClientPlayAnimation, ClientSpawnProjectile, LocalLog,
BuySkillSound, ShowMultiplayerWin, ForceDroneOff ,AddDamageDisplay, ClientSpawnHits, CloseThisComputer, ClientPlayAnimation, ClientSpawnProjectile, LocalLog,
VerifyRootWindow, VerifyConsole, ForceDisconnect;
VerifyRootWindow, VerifyConsole, ForceDisconnect;


}
}


exec function cheat()
exec function cheat()
{
{
if (bHardCoreMode) bCheatsEnabled = false;
if (bHardCoreMode) bCheatsEnabled = false;
else bCheatsEnabled = !bCheatsEnabled;
else bCheatsEnabled = !bCheatsEnabled;


}
}


function UpdateHDTPsettings()
function UpdateHDTPsettings()
{
{
local mesh tempmesh;
local mesh tempmesh;
local texture temptex;
local texture temptex;
local int i;
local int i;


if(GetHDTPSettings(self)) //lol recursive
if(GetHDTPSettings(self)) //lol recursive
{
{
if(HDTPMeshname != "")
if(HDTPMeshname != "")
{
{
tempmesh = lodmesh(dynamicloadobject(HDTPMeshname,class'mesh',true));
tempmesh = lodmesh(dynamicloadobject(HDTPMeshname,class'mesh',true));
if(tempmesh != none)
if(tempmesh != none)
{
{
mesh = tempmesh;
mesh = tempmesh;
for(i=0;i<=7;i++)
for(i=0;i<=7;i++)
{
{
if(HDTPMeshtex[i] != "")
if(HDTPMeshtex[i] != "")
{
{
temptex = texture(dynamicloadobject(HDTPMeshtex[i],class'texture',true));
temptex = texture(dynamicloadobject(HDTPMeshtex[i],class'texture',true));
if(temptex != none)
if(temptex != none)
multiskins[i] = temptex;
multiskins[i] = temptex;
}
}
}
}
}
}
}
}
}
}
else
else
{
{
mesh = default.mesh;
mesh = default.mesh;
for(i=0; i<=7;i++)
for(i=0; i<=7;i++)
{
{
multiskins[i]=default.multiskins[i];
multiskins[i]=default.multiskins[i];
}
}
}
}
}
}


function bool GetHDTPSettings(actor Other)
function bool GetHDTPSettings(actor Other)
{
{
if(bHDTP_ALL > 0)
if(bHDTP_ALL > 0)
return true;
return true;
else if(bHDTP_All < 0)
else if(bHDTP_All < 0)
return false;
return false;
else
else
{
{
if((Other.IsA('JCDentonMaleCarcass') || Other.IsA('JCDouble') || Other.IsA('JCDentonMale')) && bHDTP_JC) //changed self to JCdentonmale for hopefully better mod compatibility
if((Other.IsA('JCDentonMaleCarcass') || Other.IsA('JCDouble') || Other.IsA('JCDentonMale')) && bHDTP_JC) //changed self to JCdentonmale for hopefully better mod compatibility
return true;
return true;
//if((Other.IsA('MJ12Troop') || Other.IsA('MJ12TroopCarcass')) && bHDTP_MJ12)
//if((Other.IsA('MJ12Troop') || Other.IsA('MJ12TroopCarcass')) && bHDTP_MJ12)
// return true;
// return true;
else if((Other.IsA('UNATCOTroop') || Other.IsA('UNATCOTroopCarcass')) && bHDTP_UNATCO)
else if((Other.IsA('UNATCOTroop') || Other.IsA('UNATCOTroopCarcass')) && bHDTP_UNATCO)
return true;
return true;
else if((Other.IsA('WaltonSimons') || Other.IsA('WaltonSimonsCarcass')) && bHDTP_WALTON)
else if((Other.IsA('WaltonSimons') || Other.IsA('WaltonSimonsCarcass')) && bHDTP_WALTON)
return true;
return true;
else if((Other.IsA('AnnaNavarre') || Other.IsA('AnnaNavarreCarcass')) && bHDTP_Anna)
else if((Other.IsA('AnnaNavarre') || Other.IsA('AnnaNavarreCarcass')) && bHDTP_Anna)
return true;
return true;
else if((Other.IsA('GuntherHermann') || Other.IsA('GuntherHermannCarcass')) && bHDTP_Gunther)
else if((Other.IsA('GuntherHermann') || Other.IsA('GuntherHermannCarcass')) && bHDTP_Gunther)
return true;
return true;
else if((Other.IsA('RiotCop') || Other.IsA('RiotCopCarcass')) && bHDTP_RiotCop)
else if((Other.IsA('RiotCop') || Other.IsA('RiotCopCarcass')) && bHDTP_RiotCop)
return true;
return true;
else if((Other.IsA('Terrorist') || Other.IsA('TerroristCarcass')) && bHDTP_NSF)
else if((Other.IsA('Terrorist') || Other.IsA('TerroristCarcass')) && bHDTP_NSF)
return true;
return true;
else if((Other.IsA('PaulDenton') || Other.IsA('PaulDentonCarcass')) && bHDTP_Paul)
else if((Other.IsA('PaulDenton') || Other.IsA('PaulDentonCarcass')) && bHDTP_Paul)
return true;
return true;
else if((Other.IsA('NicoletteDuClare') || Other.IsA('NicoletteDuClareCarcass')) && bHDTP_Nico)
else if((Other.IsA('NicoletteDuClare') || Other.IsA('NicoletteDuClareCarcass')) && bHDTP_Nico)
return true;
return true;
else
else
return false;
return false;
}
}
return false;
return false;
}
}


function setupDifficultyMod() //CyberP: Lazy scale based on difficulty. To find all things modified by difficulty level in
function setupDifficultyMod() //CyberP: Lazy scale based on difficulty. To find all things modified by difficulty level in
{ //CyberP: GMDX, search CombatDifficulty & bHardCoreMode.
{ //CyberP: GMDX, search CombatDifficulty & bHardCoreMode.
local ScriptedPawn P; //CyberP: WARNING: is called every login. TODO: call only once per map.
local ScriptedPawn P; //CyberP: WARNING: is called every login. TODO: call only once per map.
local ThrownProjectile TP;
local ThrownProjectile TP;
local AutoTurret T;
local AutoTurret T;
local SecurityCamera SC;
local SecurityCamera SC;
local DeusExWeapon WP;
local DeusExWeapon WP;
local DeusExAmmo AM;
local DeusExAmmo AM;
local DeusExMover MV;
local DeusExMover MV;
local Keypad KP;
local Keypad KP;


log("bHardCoreMode =" @bHardCoreMode);
log("bHardCoreMode =" @bHardCoreMode);
log("CombatDifficulty =" @CombatDifficulty);
log("CombatDifficulty =" @CombatDifficulty);


if (bHDTP_All != -1)
if (bHDTP_All != -1)
bHDTP_All=-1;
bHDTP_All=-1;


bStunted = False; //CyberP: failsafe
bStunted = False; //CyberP: failsafe


ForEach AllActors(class'ScriptedPawn', P)
ForEach AllActors(class'ScriptedPawn', P)
{
{
if (P.bHardcoreOnly == True && bHardCoreMode == False && bHardcoreFilterOption == False) //CyberP: remove this pawn if we are not hardcore
if (P.bHardcoreOnly == True && bHardCoreMode == False && bHardcoreFilterOption == False) //CyberP: remove this pawn if we are not hardcore
P.Destroy();
P.Destroy();
if (P.IsA('HumanMilitary') || P.IsA('HumanThug'))
if (P.IsA('HumanMilitary') || P.IsA('HumanThug'))
{
{
if (!bHardCoreMode && CombatDifficulty > 1)
if (!bHardCoreMode && CombatDifficulty > 1)
{
{
if (P.HearingThreshold < 0.135000)
if (P.HearingThreshold < 0.135000)
P.HearingThreshold = 0.135000;
P.HearingThreshold = 0.135000;
if (P.SurprisePeriod < 1.250000)
if (P.SurprisePeriod < 1.250000)
P.SurprisePeriod = 1.250000;
P.SurprisePeriod = 1.250000;
if (P.VisibilityThreshold < 0.005500)
if (P.VisibilityThreshold < 0.005500)
P.VisibilityThreshold = 0.005500;
P.VisibilityThreshold = 0.005500;
if (P.EnemyTimeout > 10.000000)
if (P.EnemyTimeout > 10.000000)
P.EnemyTimeout = 10.000000;
P.EnemyTimeout = 10.000000;
}
}
else if (CombatDifficulty <= 1)
else if (CombatDifficulty <= 1)
{
{
if (P.VisibilityThreshold < 0.010000)
if (P.VisibilityThreshold < 0.010000)
P.VisibilityThreshold = 0.010000;
P.VisibilityThreshold = 0.010000;
if (P.HearingThreshold < 0.150000)
if (P.HearingThreshold < 0.150000)
P.HearingThreshold = 0.150000;
P.HearingThreshold = 0.150000;
if (P.EnemyTimeout > 8.000000)
if (P.EnemyTimeout > 8.000000)
P.EnemyTimeout = 8.000000;
P.EnemyTimeout = 8.000000;
if (P.SurprisePeriod < 2.000000)
if (P.SurprisePeriod < 2.000000)
P.SurprisePeriod = 2.0;
P.SurprisePeriod = 2.0;
}
}
else if (bHardCoreMode)
else if (bHardCoreMode)
{
{
if (P.BaseAccuracy != 0.000000 && P.BaseAccuracy > 0.050000) //CyberP: all Human Military are more accurate on hardcore mode.
if (P.BaseAccuracy != 0.000000 && P.BaseAccuracy > 0.050000) //CyberP: all Human Military are more accurate on hardcore mode.
P.BaseAccuracy=0.050000;
P.BaseAccuracy=0.050000;
if (P.bDefendHome && P.HomeExtent < 64)
if (P.bDefendHome && P.HomeExtent < 64)
P.EnemyTimeOut = 22.000000; //CyberP: camp for longer
P.EnemyTimeOut = 22.000000; //CyberP: camp for longer
if (P.SurprisePeriod > 0.75)
if (P.SurprisePeriod > 0.75)
P.SurprisePeriod = 0.75;
P.SurprisePeriod = 0.75;
}
}
}
}
else if (P.IsA('Robot'))
else if (P.IsA('Robot'))
{
{
if (bHardCoreMode)
if (bHardCoreMode)
P.EnemyTimeout = 16.000000;
P.EnemyTimeout = 16.000000;
else
else
P.EnemyTimeout = 10.000000;
P.EnemyTimeout = 10.000000;
}
}
if ((P.IsA('MJ12Troop') || P.IsA('MJ12Elite')) && (P.bHasCloak || P.UnfamiliarName == "MJ12 Elite" ))
if ((P.IsA('MJ12Troop') || P.IsA('MJ12Elite')) && (P.bHasCloak || P.UnfamiliarName == "MJ12 Elite" ))
{
{
if (bHardCoreMode)
if (bHardCoreMode)
{
{
P.default.Health=350;
P.default.Health=350;
P.default.HealthHead=350;
P.default.HealthHead=350;
P.default.HealthTorso=350;
P.default.HealthTorso=350;
P.default.HealthLegLeft=350;
P.default.HealthLegLeft=350;
P.default.HealthLegRight=350;
P.default.HealthLegRight=350;
P.default.HealthArmLeft=350;
P.default.HealthArmLeft=350;
P.default.HealthArmRight=350;
P.default.HealthArmRight=350;
P.Health=350;
P.Health=350;
P.HealthHead=350;
P.HealthHead=350;
P.HealthTorso=350;
P.HealthTorso=350;
P.HealthLegLeft=350;
P.HealthLegLeft=350;
P.HealthLegRight=350;
P.HealthLegRight=350;
P.HealthArmLeft=350;
P.HealthArmLeft=350;
P.HealthArmRight=350;
P.HealthArmRight=350;
P.CloakThreshold=140;
P.CloakThreshold=140;
P.GroundSpeed=260.000000;
P.GroundSpeed=260.000000;
}
}
else
else
{
{
P.default.Health=200;
P.default.Health=200;
P.default.HealthHead=200;
P.default.HealthHead=200;
P.default.HealthTorso=200;
P.default.HealthTorso=200;
P.default.HealthLegLeft=200;
P.default.HealthLegLeft=200;
P.default.HealthLegRight=200;
P.default.HealthLegRight=200;
P.default.HealthArmLeft=200;
P.default.HealthArmLeft=200;
P.default.HealthArmRight=200;
P.default.HealthArmRight=200;
P.Health=200;
P.Health=200;
P.HealthHead=200;
P.HealthHead=200;
P.HealthTorso=200;
P.HealthTorso=200;
P.HealthLegLeft=200;
P.HealthLegLeft=200;
P.HealthLegRight=200;
P.HealthLegRight=200;
P.HealthArmLeft=200;
P.HealthArmLeft=200;
P.HealthArmRight=200;
P.HealthArmRight=200;
P.CloakThreshold=100;
P.CloakThreshold=100;
P.GroundSpeed=240.000000;
P.GroundSpeed=240.000000;
P.SurprisePeriod=1.000000;
P.SurprisePeriod=1.000000;
}
}
}
}
else if (P.IsA('MJ12Commando'))
else if (P.IsA('MJ12Commando'))
{
{
if (bHardCoreMode)
if (bHardCoreMode)
{
{
P.default.Health=450;
P.default.Health=450;
P.default.HealthHead=450;
P.default.HealthHead=450;
P.default.HealthTorso=450;
P.default.HealthTorso=450;
P.default.HealthLegLeft=450;
P.default.HealthLegLeft=450;
P.default.HealthLegRight=450;
P.default.HealthLegRight=450;
P.default.HealthArmLeft=450;
P.default.HealthArmLeft=450;
P.default.HealthArmRight=450;
P.default.HealthArmRight=450;
P.Health=450;
P.Health=450;
P.HealthHead=450;
P.HealthHead=450;
P.HealthTorso=450;
P.HealthTorso=450;
P.HealthLegLeft=450;
P.HealthLegLeft=450;
P.HealthLegRight=450;
P.HealthLegRight=450;
P.HealthArmLeft=450;
P.HealthArmLeft=450;
P.HealthArmRight=450;
P.HealthArmRight=450;
P.VisibilityThreshold=0.001000;
P.VisibilityThreshold=0.001000;
}
}
else
else
{
{
P.default.Health=300;
P.default.Health=300;
P.default.HealthHead=300;
P.default.HealthHead=300;
P.default.HealthTorso=300;
P.default.HealthTorso=300;
P.default.HealthLegLeft=300;
P.default.HealthLegLeft=300;
P.default.HealthLegRight=300;
P.default.HealthLegRight=300;
P.default.Hea
P.default.Hea