Numerous keyboard controls unresponsive

A refuge for those migrating from the fallen DXEditing.com and a place for general discussion relating to Deus Ex editing (coding, mapping, etc).
Cybernetic pig
Illuminati
Posts: 2284
Joined: Thu Mar 08, 2012 3:21 am

Numerous keyboard controls unresponsive

Post by Cybernetic pig »

I'm having a strange problem when testing the latest unreleased version of my mod. Keyboard controls lock up. Not all. Movement still works, esc, jump, and augmentations only work when bound to be activated by other keys (F7=M via in-game Keyboard/Mouse settings for example). Attempting to access the inventory, switching & using weapons as well as interaction inputs (left and right click) yield no response.

-Happens upon initialization/begin play, as controls are consistently locked up immediately.
-ONLY happens on the Vandenberg_Tunnels map, and ONLY during a full playthrough of the mod. Loading the map via unrealEd (with GMDX code/DeusEx.u and packages) does not replicate the bug.
-Going back up the ladder at the start and into Vandenberg_Cmd restores all functionality. Back down again into Vandenberg_Tunnels and the bug is back.
-I've tried switching the map to an earlier GMDX version of the map and then entering the level (before ever entering the map on that savefile of course) which produced the same result. However, as previously mentioned, loading the map via unrealEd does not produce the bug. This indicates a problem with the saveinfo, which could be corrupt, or some typical variable saved within causes a problem on that map.
-I cannot see anything in the log.
-Flags shouldn't be the problem as Mission12.uc has no special scripting on that map.
-The only thing I've observed that makes this map somewhat unique is that it uses a playerstart rather than a teleporter, but some other maps use this too such as battery park and most first maps of a mission.

The ambitious work I do on Deus Ex would ideally be the efforts of an experienced programmer, OR I'd have fucking team members watching my back. I fear my efforts will blow up in my face. I really don't want to scrap all these amazing features I've implemented since v7, nor have to redo them.

Anyway, any help will be greatly appreciated.

Log:
Init: *** DEUS EX VERSION Mon Mar 19 12:06:14 2001 v1.112fm ***
ScriptLog: MYCHK:: 3 :: -11
ScriptLog: Lean Keys UNDEFINED, disabling tiptoes
ScriptLog: Team 0
Log: Bound to otpUIfix.dll
Log: Loading: Package otpUIfix
Log: otpUIfix >> Function hooking complete, DetourTransactionCommit returned code 0
Log: Possessed PlayerPawn: JCDentonMale dx.JCDentonMale0
ScriptLog: All inventory from Player is accepted
Init: Input system initialized for WindowsViewport0
Log: Opened viewport
Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: Enter SetRes()
Init: Depth bits: 24
Log: 8 Texture Mapping Units found
Log: MaxAnisotropy = 16
Log: Trying to use S3TC extension.
Log: MinLogTextureSize = 2
Log: MaxLogTextureSize = 13
Log: Bound to Galaxy.dll
Init: Galaxy is using WinMM
Init: Galaxy initialized
DevAudio: Galaxy SetViewport: WindowsViewport0
Init: Game engine initialized
DevMusic: Load music: Music Title_Music.Title_Music
Log: Assigning Last Button Window to MenuUIMenuButtonWindow dx.JCDentonMale0.otpRootWindow0.MenuMain0.MenuUIClientWindow0.MenuUIMenuButtonWindow2
Log: Assigning Last Button Window to MenuUIActionButtonWindow dx.JCDentonMale0.otpRootWindow0.MenuScreenLoadGame0.MenuUIActionButtonBarWindow0.MenuUIActionButtonWindow1
Log: Tried to remove lastbuttonwindow descendant. MenuUIActionButtonWindow dx.JCDentonMale0.otpRootWindow0.MenuScreenLoadGame0.MenuUIActionButtonBarWindow0.MenuUIActionButtonWindow1
Log: URL: Adding default option Name=Player
Log: URL: Adding default option Class=DeusEx.JCDentonMale
Log: URL: Adding default option Team=0
Log: Browse: Index.dx?loadgame=-11?Name=Player?Class=DeusEx.JCDentonMale?Team=0
Log: Doing loadgame, not load
Log: Loading: Package saveInfo
Log: Unloading: Package dx
Log: URL: Adding default option Name=Player
Log: URL: Adding default option Class=DeusEx.JCDentonMale
Log: URL: Adding default option Team=0
Log: LoadMap: ..\Save\Current\12_Vandenberg_tunnels.dxs?load?loadonly?loadgame?Name=Player?Class=DeusEx.JCDentonMale?Team=0
DevAudio: Galaxy SetViewport: WindowsViewport0
Log: Loading: Package 12_Vandenberg_tunnels
Log: Loading: Package CoreTexMetal
Log: Loading: Package CoreTexDetail
Log: Loading: Package Rocket
Log: Loading: Package area51textures
Log: Loading: Package CoreTexMisc
Log: Loading: Package OceanLab
Log: Loading: Package CoreTexGlass
Log: Loading: Package CoreTexConcrete
Log: Loading: Package Cmd_tunnels
Log: Loading: Package V_Com_Center
Log: Loading: Package Models
Log: Loading: Package Tunnels_Music
Init: Shut down moving brush tracker for Level dx.MyLevel
Warning: Type mismatch in Region of GameReplicationInfo: file 10, class 2
Warning: Skipping 6 bytes of type 10
Log: Collecting garbage
Log: Purging garbage
Log: Unloading: Package saveInfo
Log: Garbage: objects: 38090->37850; refs: 545060
Log: Loading: Package DeusExConText
Log: Spawning new actor for Viewport WindowsViewport0
ScriptLog: Team 0
ScriptLog: Login: Player
Log: Possessed PlayerPawn: JCDentonMale 12_Vandenberg_tunnels.JCDentonMale1
ScriptLog: All inventory from Player is accepted
Init: Initialized moving brush tracker for Level 12_Vandenberg_tunnels.MyLevel
DevAudio: Galaxy SetViewport: WindowsViewport0
DevMusic: Unregister music: Music Title_Music.Title_Music
DevMusic: Load music: Music Tunnels_Music.Tunnels_Music
Log: Assigning Last Button Window to MenuUIMenuButtonWindow 12_Vandenberg_tunnels.JCDentonMale1.otpRootWindow0.MenuMain1.MenuUIClientWindow2.MenuUIMenuButtonWindow12
Log: Assigning Last Button Window to MenuUIListWindow 12_Vandenberg_tunnels.JCDentonMale1.otpRootWindow0.MenuScreenLoadGame1.MenuUIClientWindow3.MenuUIScrollAreaWindow1.ClipWindow1.MenuUIListWindow1
Log: Tried to remove lastbuttonwindow descendant. MenuUIListWindow 12_Vandenberg_tunnels.JCDentonMale1.otpRootWindow0.MenuScreenLoadGame1.MenuUIClientWindow3.MenuUIScrollAreaWindow1.ClipWindow1.MenuUIListWindow1
Log: URL: Adding default option Name=Player
Log: URL: Adding default option Class=DeusEx.JCDentonMale
Log: URL: Adding default option Team=0
Log: Browse: Index.dx?loadgame=-13?Name=Player?Class=DeusEx.JCDentonMale?Team=0
Log: Doing loadgame, not load
Log: Loading: Package saveInfo
Log: Unloading: Package 12_Vandenberg_tunnels
Log: URL: Adding default option Name=Player
Log: URL: Adding default option Class=DeusEx.JCDentonMale
Log: URL: Adding default option Team=0
Log: LoadMap: ..\Save\Current\12_Vandenberg_cmd.dxs?load?loadonly?loadgame?Name=Player?Class=DeusEx.JCDentonMale?Team=0
DevAudio: Galaxy SetViewport: WindowsViewport0
Log: Loading: Package 12_Vandenberg_cmd
Log: Loading: Package Constructor
Log: Loading: Package CoreTexWallObj
Log: Loading: Package G_Station
Log: Loading: Package CoreTexEarth
Log: Loading: Package Airfield
Log: Loading: Package CoreTexPaper
Log: Loading: Package CoreTexTiles
Log: Loading: Package CoreTexBrick
Log: Loading: Package HDTPBookOpen
Log: Loading: Package CoreTexSky
Log: Loading: Package HDTPPapers
Log: Loading: Package GMDX
Log: Loading: Package Vandenberg_Music
Log: Loading: Package HK_BuildingExt
Init: Shut down moving brush tracker for Level 12_Vandenberg_tunnels.MyLevel
Log: Collecting garbage
Log: Purging garbage
Log: Unloading: Package Tunnels_Music
Log: Unloading: Package OceanLab
Log: Unloading: Package DeusExConText
DevMusic: Unregister music: Music Tunnels_Music.Tunnels_Music
Log: Unloading: Package saveInfo
Log: Garbage: objects: 50176->41028; refs: 875202
Log: Loading: Package DeusExConText
Log: Spawning new actor for Viewport WindowsViewport0
ScriptLog: Team 0
ScriptLog: Login: Player
Log: Possessed PlayerPawn: JCDentonMale 12_Vandenberg_cmd.JCDentonMale4
ScriptLog: All inventory from Player is accepted
ScriptLog: DeusExLevelInfo - Spawned new mission script 'DeusEx.Mission12'
Init: Initialized moving brush tracker for Level 12_Vandenberg_cmd.MyLevel
DevAudio: Galaxy SetViewport: WindowsViewport0
DevMusic: Load music: Music Vandenberg_Music.Vandenberg_Music
ScriptLog: **** InitStateMachine() - 12_Vandenberg_cmd.JCDentonMale4 started mission state machine for 12_VANDENBERG_CMD
Log: Loading: Package InfoPortraits
Log: Loading: Package DeusExConAudioMission12
Log: RockchipXL96 fell out of the world!
Log: RockchipXL97 fell out of the world!
Log: Export travel for: Player
Log: Browse: 12_vandenberg_tunnels?Name=Player?Class=DeusEx.JCDentonMale?Team=0#start
Log: Doing load, not loadgame
Log: Current mission number is 12, next is 12
Log: Attempting to get player
Init: Shut down moving brush tracker for Level 12_Vandenberg_cmd.MyLevel
Log: Unloading: Package 12_Vandenberg_cmd
Log: Save=338.802677
Log: Moving '..\Save\Current\Save.tmp' to '..\Save\Current\12_Vandenberg_cmd.dxs'
Init: Initialized moving brush tracker for Level 12_Vandenberg_cmd.MyLevel
Log: LoadMap: 12_vandenberg_tunnels?Name=Player?Class=DeusEx.JCDentonMale?Team=0#start
DevAudio: Galaxy SetViewport: WindowsViewport0
Log: Loading: Package 12_vandenberg_tunnels
Log: Loading: Package OceanLab
Log: Loading: Package Tunnels_Music
Init: Shut down moving brush tracker for Level 12_Vandenberg_cmd.MyLevel
Log: Collecting garbage
Log: Purging garbage
Log: Unloading: Package DeusExConAudioMission12
Log: Unloading: Package Models
Log: Unloading: Package InfoPortraits
Log: Unloading: Package G_Station
Log: Unloading: Package CoreTexEarth
Log: Unloading: Package GMDX
Log: Unloading: Package HK_BuildingExt
Log: Unloading: Package HDTPBookOpen
Log: Unloading: Package Airfield
Log: Unloading: Package CoreTexTiles
Log: Unloading: Package Constructor
Log: Unloading: Package Vandenberg_Music
Log: Unloading: Package CoreTexSky
Log: Unloading: Package CoreTexPaper
Log: Unloading: Package HDTPPapers
Log: Unloading: Package CoreTexBrick
Log: Unloading: Package CoreTexWallObj
Log: Unloading: Package DeusExConText
DevMusic: Unregister music: Music Vandenberg_Music.Vandenberg_Music
Log: Garbage: objects: 49962->36859; refs: 563449
Log: Game class is 'DeusExGameInfo'
Log: Bringing Level 12_vandenberg_tunnels.MyLevel up for play (0)...
ScriptLog: InitGame: ?Name=Player?Class=DeusEx.JCDentonMale?Team=0
ScriptLog: Base Mutator is 12_vandenberg_tunnels.Mutator2
Log: Loading: Package DeusExConText
Log: Spawning new actor for Viewport WindowsViewport0
ScriptLog: Team 0
ScriptLog: Login: Player
ScriptLog: MYCHK:: 3 :: -11
ScriptLog: Lean Keys UNDEFINED, disabling tiptoes
ScriptLog: Team 0
Log: Possessed PlayerPawn: JCDentonMale 12_vandenberg_tunnels.JCDentonMale1
Log: Loading: Package Models
ScriptLog: All inventory from Player is accepted
Init: Initialized moving brush tracker for Level 12_vandenberg_tunnels.MyLevel
DevAudio: Galaxy SetViewport: WindowsViewport0
ScriptWarning: Karkian 12_vandenberg_tunnels.Karkian0 (Function DeusEx.ScriptedPawn.LoopAnimPivot:0045) LoopAnim: Sequence 'Swim' not found in Mesh 'HDTPkarkian'
ScriptWarning: KarkianBaby 12_vandenberg_tunnels.KarkianBaby0 (Function DeusEx.ScriptedPawn.LoopAnimPivot:0045) LoopAnim: Sequence 'Swim' not found in Mesh 'HDTPkarkian'
ScriptWarning: Karkian 12_vandenberg_tunnels.Karkian2 (Function DeusEx.ScriptedPawn.LoopAnimPivot:0045) LoopAnim: Sequence 'Swim' not found in Mesh 'HDTPkarkian'
DevMusic: Load music: Music Tunnels_Music.Tunnels_Music
Log: Loading: Package InfoPortraits
Log: Loading: Package DeusExConAudioMission12
Log: Assigning Last Button Window to MenuMain 12_vandenberg_tunnels.JCDentonMale1.otpRootWindow0.MenuMain3
Log: Tried to remove lastbuttonwindow descendant. MenuMain 12_vandenberg_tunnels.JCDentonMale1.otpRootWindow0.MenuMain3
ScriptWarning: JCDentonMale 12_vandenberg_tunnels.JCDentonMale1 (Function DeusEx.DeusExPlayer.SwitchAmmo:0009) Accessed None
Log: Assigning Last Button Window to MenuUIMenuButtonWindow 12_vandenberg_tunnels.JCDentonMale1.otpRootWindow0.MenuMain5.MenuUIClientWindow8.MenuUIMenuButtonWindow64
Log: Assigning Last Button Window to MenuUIActionButtonWindow 12_vandenberg_tunnels.JCDentonMale1.otpRootWindow0.MenuUIMessageBoxWindow0.MenuUIActionButtonBarWindow2.MenuUIActionButtonWindow7
Log: Tried to remove lastbuttonwindow descendant. MenuUIActionButtonWindow 12_vandenberg_tunnels.JCDentonMale1.otpRootWindow0.MenuUIMessageBoxWindow0.MenuUIActionButtonBarWindow2.MenuUIActionButtonWindow7
Log: appRequestExit(0)
Exit: Preparing to exit.
Log: Purging garbage
Log: Unbound to Window.dll
Log: Unbound to Core.dll
Log: Unbound to Engine.dll
Log: Unbound to DeusEx.dll
Log: Unbound to Extension.dll
Log: Unbound to ConSys.dll
Log: Unloading: Package DeusEx
Log: Unloading: Package Core
Log: Unloading: Package Engine
Log: Unloading: Package Extension
Log: Unloading: Package DeusExCharacters
Log: Unloading: Package DeusExUI
Log: Unloading: Package DeusExItems
Log: Unloading: Package Effects
Log: Unbound to Fire.dll
Log: Unloading: Package Fire
Log: Unloading: Package ConSys
Log: Unloading: Package DeusExSounds
Log: Unloading: Package HDTPItems
Log: Unloading: Package DeusExDeco
Log: Unloading: Package HDTPanim
Log: Unloading: Package HDTPDecos
Log: Unloading: Package GMDXSFX
Log: Unloading: Package HDTPCharacters
Log: Unloading: Package UBrowser
Log: Unloading: Package UWindow
Log: Unbound to IpDrv.dll
Log: Unloading: Package IpDrv
Log: Unbound to DeusExText.dll
Log: Unloading: Package DeusExText
Log: Unloading: Package Ambient
Log: Unloading: Package MoverSFX
Log: Unloading: Package GMDXUI
Log: Unloading: Package IpServer
Log: Unloading: Package ShifterEX
Log: Unloading: Package MPCharacters
Log: Unloading: Package Extras
Exit: Game engine shut down
Log: Unbound to WinDrv.dll
Log: DirectDraw End Mode
Log: Flushing cache
Exit: DirectDraw released
Exit: Windows client shut down
Log: Unbound to Render.dll
Exit: Lighting subsystem shut down
Exit: Rendering shut down
Log: Unloading: Package Entry
Log: Unloading: Package Title_Music
Log: Unbound to otpUIfix.dll
Log: Unloading: Package otpUIfix
Log: Unbound to D3D9Drv.dll
Log: Unbound to Galaxy.dll
DevAudio: Galaxy SetViewport: NULL
DevMusic: Unregister music: Music Tunnels_Music.Tunnels_Music
Exit: Galaxy shut down
Log: Unloading: Package Rocket
Log: Unloading: Package CoreTexConcrete
Log: Unloading: Package V_Com_Center
Log: Unloading: Package CoreTexMisc
Log: Unloading: Package CoreTexMetal
Log: Unloading: Package Cmd_tunnels
Log: Unloading: Package area51textures
Log: Unloading: Package CoreTexGlass
Log: Unloading: Package CoreTexDetail
Init: Shut down moving brush tracker for Level 12_vandenberg_tunnels.MyLevel
Log: Unloading: Package InfoPortraits
Log: Unloading: Package DeusExConAudioMission12
Log: Unloading: Package Models
Log: Unloading: Package 12_vandenberg_tunnels
Log: Unloading: Package Tunnels_Music
Log: Unloading: Package OceanLab
Log: Unloading: Package DeusExConText
Log: Garbage: objects: 45754->0; refs: 563449
Hanfling
MJ12
Posts: 406
Joined: Sun Oct 04, 2009 6:54 pm

Re: Numerous keyboard controls unresponsive

Post by Hanfling »

Try if the problem persists without the otpUIfix package and without a launcher who is dll hooking the input code.
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.
Cybernetic pig
Illuminati
Posts: 2284
Joined: Thu Mar 08, 2012 3:21 am

Re: Numerous keyboard controls unresponsive

Post by Cybernetic pig »

It is related to DeusEx.u. I swap that file out for an older GMDX version and the problem is gone. I honestly grow weary of DeusEx.u coding. It seems highly unstable at times. Simple var declaration freaks the game out sometimes.
User avatar
bjorn98009_91
Silhouette
Posts: 688
Joined: Thu May 08, 2008 8:17 am
Location: Hufvudstaden, Sweden
Contact:

Re: Numerous keyboard controls unresponsive

Post by bjorn98009_91 »

Yeah, double check that you haven't added vars to native classes, since that will make the binary layout differ from the C++ and the UC side of the class.
Producer and Quality Assurance Manager for Deus Ex: Revision.
Cybernetic pig
Illuminati
Posts: 2284
Joined: Thu Mar 08, 2012 3:21 am

Re: Numerous keyboard controls unresponsive

Post by Cybernetic pig »

Edit: wait, are you saying not to add global vars to DeusExPlayer.uc? Because Shifter has a warning about adding global vars to DeusExPlayer,uc. Way back when I first started this modding madness I showed that warning to my old partner, who was a programming wizard. He added global vars to DeusExPlayer.uc regardless of that warning, and I didn't judge because that dude really was talented. I think I asked him why he disregarded the warning, but he was often rather vague or too caught up in the coding madness to respond, and thus I don't remember getting an answer. Since then I have followed suit, adding a few global vars to DeusExPlayer. Perhaps it is the problem, perhaps not. My guess after further thought is he knew a thing or two about unreal's C++ libraries & how to avoid conflicts. Myself I know very little about engine-side code, which is unfortunate, but I had not run into any problems until now.

Anyway, not only am I having a mental breakdown, I've also come down with the flu, so I'm even more depressed than usual, and I feel it wise to have a little rest till this shit illness passes. Thankfully Grottz offered to do a little bug hunting, which is very kind of him (once again). Let us hope he turns up results.

I've narrowed it down to a specific time frame of feature implementation, and also suspect it to be something in DeusExPlayer, but other than that my attempts have failed thus far. I'm probably in over my head, but I was doing so well up until this point!
DDL
Traditional Evil Scientist
Traditional Evil Scientist
Posts: 3791
Joined: Mon Oct 17, 2005 10:03 am

Re: Numerous keyboard controls unresponsive

Post by DDL »

Vandenburg tunnels map is an odd one. I seem to recall encountering weird problems with that map too: I think it's a map issue rather than a playercode issue. It doesn't have a missionscript, I remember that much (though this shouldn't be a requirement).
One difference between entering a level in-game and just loading it up from the editor is that missionscript firstframe() calls happen in the former instance but not the latter, so I dunno if this is something you might look at.
Cybernetic pig
Illuminati
Posts: 2284
Joined: Thu Mar 08, 2012 3:21 am

Re: Numerous keyboard controls unresponsive

Post by Cybernetic pig »

Valuable information, thanks. Yeah, it is strange it only happens on that map, and very consistently. Likely a map problem in relation to some new coding I've done.
A tester had the same problem and had to cheat past it to complete the game, and that is the only map such a problem happens for him and I. So definitely a very strange relationship of DeusEx.u and/or saveInfo with that map.

Anyway, I'll check out firstframe and how a new feature may relate to it. I'm doped up on codeine atm so feeling temporarily much better and you've made me hopeful.
User avatar
bjorn98009_91
Silhouette
Posts: 688
Joined: Thu May 08, 2008 8:17 am
Location: Hufvudstaden, Sweden
Contact:

Re: Numerous keyboard controls unresponsive

Post by bjorn98009_91 »

Yeah, I've also found that launching from the editor gives weird results, especially from UED2. I thus only start from any editors when I'm on the hunt for BSP's and stuff like that and then launch the map from within the game to test stuff that's scripted.

And well it's possible to add variables to native classes one MUST do it at the end, but since it still creates a binary mismatch it's not really recommended. If you can move those variables to a non-native class that would be much better.
Producer and Quality Assurance Manager for Deus Ex: Revision.
Cybernetic pig
Illuminati
Posts: 2284
Joined: Thu Mar 08, 2012 3:21 am

Re: Numerous keyboard controls unresponsive

Post by Cybernetic pig »

bjorn98009_91 wrote: And well it's possible to add variables to native classes one MUST do it at the end, but since it still creates a binary mismatch it's not really recommended. If you can move those variables to a non-native class that would be much better.
GMDX dxPlayer global vars (down at the end):

Code: Select all

//=============================================================================
// DeusExPlayer.
//=============================================================================
class DeusExPlayer extends PlayerPawnExt
	native;

#exec OBJ LOAD FILE=Effects

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

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

// Augmentation system vars
var travel AugmentationManager AugmentationSystem;

// Skill system vars
var travel SkillManager SkillSystem;

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

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

// Energy the player has
var travel float Energy;
var travel float EnergyMax;
var travel float EnergyDrain;				// amount of energy left 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 RegenRate;         // the number of points healed per second in mp

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

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

// HUD Refresh Timer
var float LastRefreshTime;

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

// Inventory System Vars
var travel byte				invSlots[30];		// 5x6 grid of inventory slots
var int						maxInvRows;			// Maximum number of inventory rows
var int						maxInvCols;			// Maximum number of inventory columns
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		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 bool				bInHandTransition;	// The inHand is being swapped out
// DEUS_EX AMSD  Whether to ignore inv slots in multiplayer
var bool bBeltIsMPInventory;

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

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

// Data Vault Images
var travel DataVaultImage FirstImage;

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

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

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

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

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

// toggle walk
var bool bToggleWalk;

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

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

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

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

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

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

// bleeding variables
var     float       BleedRate;      // how profusely the player is bleeding; 0-1
var     float       DropCounter;    // internal; used in tick()
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.

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

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

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

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

// Buying skills for multiplayer
var bool		bBuySkills;

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

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

const			mpMsgDelay = 4.0;

var int		mpMsgFlags;
var int		mpMsgServerFlags;

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

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

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

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

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

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

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

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

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

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

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

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

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

var EShieldStatus ShieldStatus;

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

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

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

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

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

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

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

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

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

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

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

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 int bHDTP_ALL; //-1 = none, 0 = use other settings, 1 = all.
var string HDTPMeshName;
var string HDTPMeshTex[8];

//GMDX: CyberP & dasraiser
//SAVEOUT
var config int QuickSaveIndex; //out of some number
var config int QuickSaveTotal;//this number
var config bool bTogAutoSave;   //CyberP: enable/disable autosave
var config int iQuickSaveLast;//index to last saved file
var travel int QuickSaveLast;
var travel int QuickSaveCurrent;
var string     QuickSaveName;
//hardcore mode
var travel bool bHardCoreMode; //if set disable save game options.
var bool bPendingHardCoreSave; //set this to active quicksave
//misc
var globalconfig bool bSkipNewGameIntro; //CyberP: for GMDX option menu
var config bool bColorCodedAmmo;   // "" ""
var config bool bExtraHardcore;     // "" ""
var config bool bDecap;  // "" ""
var config bool bNoTranslucency;     // "" ""
var config bool bDblClickHolster;    // "" ""
var config bool bHalveAmmo;    // "" ""
var config bool bHardcoreUnlocked; //CyberP: unlock hardcore mode once completed the game
var bool bThisMission; //CyberP: getting terribly hacky in here. 
var travel int fullUp; //CyberP: eat/drink limit.
var string noUsing;  //CyberP: left click interaction
var bool bLeftClicked; //CyberP: left click interaction
var float bloodTime; //CyberP:
var travel bool bWasCrosshair;
var bool bFromCrosshair;
var transient bool bThrowDecoration;
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 bool bStunted; //CyberP:
var bool bRegenStamina; //CyberP: related to stamina system
var bool bCrouchRegen;  //CyberP: related to stamina systeml
//var bool bBoosty;  //CyberP: N/A
//Alias=LeanLeft,LeanRight
//Aliases[18]=(Command="Button bLeanRightHook",Alias=LeanRH)
//Aliases[19]=(Command="Button bLeanLeftHook",Alias=LeanLH)
var transient bool bLeanKeysDefined;

var bool bTiptoes; //based on left+right lean
var bool bCanTiptoes; //based on legs/crouch/can raise body
var bool bIsTiptoes;
var bool bPreTiptoes;
var bool bLeftToe,bRightToe;
var bool bRadarTran; //CyberP: radar trans effect
var bool bCloakEnabled; //player is cloaked was class'DeusExWeapon'.default.this=T/F wow :)
var transient bool bIsCloaked; //weapon is cloaked

var travel Actor RocketTarget; //GEPDummyTarget (basic actor)

var travel float RocketTargetMaxDistance;
var bool bGEPzoomActive;
var bool bGEPprojectileInflight;//is projectile flighing
var int GEPSkillLevel;
var float GEPSkillLevelValue;
var DeusExProjectile aGEPProjectile;//Fired projectile inflight
var transient float GEPsteeringX,GEPsteeringY; //used for mouse input control

var WeaponGEPGun GEPmounted;


//Recoil shockwave

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

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

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

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

// native Functions
native(1099) final function string GetDeusExVersion();
native(2100) final function ConBindEvents();
native(3001) final function name SetBoolFlagFromString(String flagNameString, bool bValue);
native(3002) final function ConHistory CreateHistoryObject();
native(3003) final function ConHistoryEvent CreateHistoryEvent();
native(3010) final function DeusExLog CreateLogObject();
native(3011) final function SaveGame(int saveIndex, optional String saveDesc);
native(3012) final function DeleteSaveGameFiles(optional String saveDirectory);
native(3013) final function GameDirectory CreateGameDirectoryObject();
native(3014) final function DataVaultImageNote CreateDataVaultImageNoteObject();
native(3015) final function DumpLocation CreateDumpLocationObject();
native(3016) final function UnloadTexture(Texture texture);
//native 3017 taken by particleiterator.
Perhaps I should look for alternate methods to global vars where possible, as there's quite a few new there. :/
Of course, I've only add new global vars when I felt I needed them (and there's a ton more local, naturally), such as the stamina system and GMDX options menu. Global vars are pretty much a requirement there, no? I could be wrong, I'm still a baby in programmer years.
Is Human.uc non-native, right? I could perhaps go to town as I please in there?
Then again, things like the stamina system modifies extensive existing functions in dxplayer so that's not really feasible, but perhaps something can be moved there.
User avatar
bjorn98009_91
Silhouette
Posts: 688
Joined: Thu May 08, 2008 8:17 am
Location: Hufvudstaden, Sweden
Contact:

Re: Numerous keyboard controls unresponsive

Post by bjorn98009_91 »

Yeah, Human is safe to use.
Producer and Quality Assurance Manager for Deus Ex: Revision.
Cybernetic pig
Illuminati
Posts: 2284
Joined: Thu Mar 08, 2012 3:21 am

Re: Numerous keyboard controls unresponsive

Post by Cybernetic pig »

Okay, thanks for your time. I should really know these things already, but hey, I'm not about to discredit the significant progress I've made.
Cybernetic pig
Illuminati
Posts: 2284
Joined: Thu Mar 08, 2012 3:21 am

Re: Numerous keyboard controls unresponsive

Post by Cybernetic pig »

..although I can just override any DeusExPlayer function I please in human anyways.
Hanfling
MJ12
Posts: 406
Joined: Sun Oct 04, 2009 6:54 pm

Re: Numerous keyboard controls unresponsive

Post by Hanfling »

Set/GetPropertyText() is also nice to deal with variables spread around different classes. Lets say you want to avoid adding variables to native ScriptedPawn class, you could just add them to all subclasses (Animal, Robot, Human{Civilian|Military|Thug}) and access them by Set/GetPropertyText(). However you can probably also just add sth. like ScriptedPawnExt between those.
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.
ggrotz
X-51
Posts: 780
Joined: Tue Nov 10, 2009 12:55 am

Re: Numerous keyboard controls unresponsive

Post by ggrotz »

bjorn98009_91 wrote: And well it's possible to add variables to native classes one MUST do it at the end, but since it still creates a binary mismatch it's not really recommended. If you can move those variables to a non-native class that would be much better.
Modifying the native classes to add variables causes a size mismatch anyway, which really is not only not recommended, but a bad idea in general. Adding to the end doesn't displace the other variables in how it expects things, but if you end up with a bigger size class than a non-modified caller is expecting, you might be stomping on variables that exist AFTER the class if they're defined and causing problems.

So basically a big-no. Modifying a descendant class is always the right/better move as Bjorn states.
Cybernetic pig
Illuminati
Posts: 2284
Joined: Thu Mar 08, 2012 3:21 am

Re: Numerous keyboard controls unresponsive

Post by Cybernetic pig »

I saw HDTP had done it as well as my old partner and assumed I was safe. Now that assumption seems to have come back and bit me on the ass. What a shame.
Last edited by Cybernetic pig on Fri Apr 10, 2015 2:40 pm, edited 1 time in total.
Post Reply