# Miscellanous This page describes every change in Phobos that wasn't categorized into a proper category yet. ## Blowfish Dependency `BLOWFISH.DLL` is no longer required to start the game. ## Developer tools ### Additional sync logging - Phobos writes additional information to the `SYNC#.txt` log files when a desynchronization occurs such as calls to random number generator functions, facing / target / destination changes etc. ### Display Damage Numbers - There's a [new hotkey](User-Interface.md#display-damage-numbers) to show exact numbers of damage dealt on units & buildings. The numbers are shown in red (blue against shields) for damage, and for healing damage in green (cyan against shields). They are shown on the affected units and will move upwards after appearing. Available only if `DebugKeysEnabled` under `[GlobalControls]` is set to true in `rulesmd.ini`. ### Dump Object Info  *Object info dump from [CnC: Reloaded](https://www.moddb.com/mods/cncreloaded/)* - There's a [new hotkey](User-Interface.md#dump-object-info) to dump selected/hovered object info on press. Available only if `DebugKeysEnabled` under `[GlobalControls]` is set to true in `rulesmd.ini`. ### Frame Step In - There's a [new hotkey](User-Interface.md#toggle-frame-by-frame-mode) to execute the game frame by frame for development usage. - You can switch to frame by frame mode and then use frame step in command to forward 1, 5, 10, 15, 30 or 60 frames by one hit. ### Save variables to file - There's a [new hotkey](User-Interface.md#save-variables) to write all local variables to `locals.ini` and all global variables to `globals.ini`. Available only if `DebugKeysEnabled` under `[GlobalControls]` is set to true in `rulesmd.ini`. - Variables will be also automatically saved to file on scenario end if `[General] -> SaveVariablesOnScenarioEnd=true` is set in `rulesmd.ini`. - Variable section will use the same name as the mission file name in capital letters, i.e. `[MYCAMPAIGN.MAP]`. - Variables will be written as key-value pairs, i.e. `MyVariable=1`. - If an INI file with the same name (`locals.ini`/`globals.ini`) doesn't exist, it will be created. If it exists, all sections will be preserved. In `rulesmd.ini`: ```ini [General] SaveVariablesOnScenarioEnd=false ; boolean ``` ### Semantic locomotor aliases - It's now possible to write locomotor aliases instead of their CLSIDs in the `Locomotor` tag value. Use the table below to find the needed alias for a locomotor. | *Alias* | *CLSID* | |--------:|:----------------------------------------:| |Drive | `{4A582741-9839-11d1-B709-00A024DDAFD1}` | |Hover | `{4A582742-9839-11d1-B709-00A024DDAFD1}` | |Tunnel | `{4A582743-9839-11d1-B709-00A024DDAFD1}` | |Walk | `{4A582744-9839-11d1-B709-00A024DDAFD1}` | |DropPod | `{4A582745-9839-11d1-B709-00A024DDAFD1}` | |Fly | `{4A582746-9839-11d1-B709-00A024DDAFD1}` | |Teleport | `{4A582747-9839-11d1-B709-00A024DDAFD1}` | |Mech | `{55D141B8-DB94-11d1-AC98-006008055BB5}` | |Ship | `{2BEA74E1-7CCA-11d3-BE14-00104B62A16C}` | |Jumpjet | `{92612C46-F71F-11d1-AC9F-006008055BB5}` | |Rocket | `{B7B49766-E576-11d3-9BD9-00104B972FE8}` | ```{note} `Chrono` is not a standard Alias, but since the default behavior of using `Teleport` will be triggered when the value of `Locomotor` is incorrect, the result of the operation will appear as if `Chrono` has taken effect. ``` ### Insignia Type - It is now possible to define the properties of insignia in an entity, so that all properties in it will be used once it's applied to a techno. In `rulesmd.ini`: ```ini [InsigniaTypes] 0=SOMEINSIGNIATYPE [SOMEINSIGNIATYPE] ; InsigniaType Insignia= ; filename - excluding the .shp extension Insignia.Rookie= ; filename - excluding the .shp extension Insignia.Veteran= ; filename - excluding the .shp extension Insignia.Elite= ; filename - excluding the .shp extension InsigniaFrame=-1 ; int, frame of insignia shp (zero-based) or -1 for default InsigniaFrame.Rookie=-1 ; int, frame of insignia shp (zero-based) or -1 for default InsigniaFrame.Veteran=-1 ; int, frame of insignia shp (zero-based) or -1 for default InsigniaFrame.Elite=-1 ; int, frame of insignia shp (zero-based) or -1 for default [SOMETECHNO] ; TechnoType InsigniaType= ; InsigniaType InsigniaType.WeaponN= ; InsigniaType InsigniaType.PassengersN= ; InsigniaType ``` ## Game Speed ### Single player game speed - It is now possible to change the default (GS4/Fast/30FPS) campaign game speed with `CampaignDefaultGameSpeed`. - It is now possible to change the *values* of single player game speed, by inputing a pair of values. This feature must be enabled with `CustomGS=true`. **Only values between 10 and 60 FPS can be consistently achieved.** - Custom game speed is achieved by periodically manipulating the delay between game frames, thus increasing or decreasing FPS. - `CustomGSN.ChangeInterval` describes the frame interval between applying the effect. A value of 2 means "every other frame", 3 means "every 3 frames" etc. Increase of speedup/slowdown is approximately logarithmic. - `CustomGSN.ChangeDelay` sets the delay (game speed number) to use every `CustomGSN.ChangeInterval` frames. - `CustomGSN.DefaultDelay` sets the delay (game speed number) to use on other frames. - Using game speed 6 (Fastest) in either `CustomGSN.ChangeDelay` or `CustomGSN.DefaultDelay` allows to set FPS above 60. - **However, the resulting FPS may vary on different machines.** In `rulesmd.ini`: ```ini [General] CustomGS=false ; boolean CustomGSN.ChangeInterval=-1 ; integer >= 1 CustomGSN.ChangeDelay=N ; integer between 0 and 6 CustomGSN.DefaultDelay=N ; integer between 0 and 6 ; where N = 0, 1, 2, 3, 4, 5, 6 ``` In `RA2MD.INI`: ```ini [Phobos] CampaignDefaultGameSpeed=4 ; integer ``` ```{note} Currently there is no way to set desired FPS directly. Use the generator below to get required values. The generator supports values from 10 to 60. ``` ```{dropdown} Click to show the generator Enter desired FPS