plugindiagmenu.c 58 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267
  1. // For modding, see PluginDiagMenuModding.c
  2. // !!! MODDING DISCLAIMER: These are debug functionality files, if you are thinking about modding the vanilla ones, do so at your own risk
  3. // These files will not be maintained with the thought of "what if a modder modded this" (Excluding the modding functionality of course)
  4. // Which is why the modding functionality was developed with the thought of the modded ones having their own isolated safe space
  5. enum DebugActionType
  6. {
  7. GENERIC_ACTIONS = 1,
  8. PLAYER_AGENTS = 2,
  9. UNLIMITED_AMMO = 4,
  10. };
  11. #ifdef DIAG_DEVELOPER
  12. enum ESubscriberSystems
  13. {
  14. TRIGGERS = 0x00000001,
  15. //SYSTEM2 = 0x00000002,
  16. //SYSTEM3 = 0x00000004,
  17. //SYSTEM4 = 0x00000008,
  18. }
  19. typedef Param1<int> SendDiagRPCSelfBasicParam;
  20. typedef Param2<int,Param> SendDiagRPCSelfParamParam;
  21. typedef Param2<int,bool> SendDiagRPCBasicParam;
  22. typedef Param3<int,bool,Param> SendDiagRPCParamParam;
  23. #endif
  24. class PluginDiagMenu : PluginBase
  25. {
  26. #ifdef DIAG_DEVELOPER
  27. int m_ModdedDiagID = DiagMenuIDs.MODDED_MENU;
  28. // LEVEL 3 - Script > Misc > Hair Hiding
  29. ref map<int,bool> m_HairHidingStateMap;
  30. ref TStringArray m_HairSelectionArray;
  31. int m_TotalHairLevelsAdjusted;
  32. override void OnInit()
  33. {
  34. //----------------------
  35. m_HairHidingStateMap = new map<int,bool>;
  36. m_HairSelectionArray = new TStringArray;
  37. g_Game.ConfigGetTextArray("cfgVehicles Head_Default simpleHiddenSelections", m_HairSelectionArray);
  38. m_TotalHairLevelsAdjusted = m_HairSelectionArray.Count() - 1;
  39. for (int i = 0; i < m_HairSelectionArray.Count(); ++i)
  40. {
  41. m_HairHidingStateMap.Insert(i, 1); //all considered "shown" on init
  42. }
  43. //----------------------
  44. DiagMenu.InitScriptDiags();
  45. RegisterDiags();
  46. }
  47. override void OnDestroy()
  48. {
  49. DiagMenu.ClearScriptDiags();
  50. }
  51. protected void RegisterDiags()
  52. {
  53. RegisterDeveloperDiags();
  54. RegisterModdedDiagsIDs();
  55. RegisterModdedDiags();
  56. if (m_ModdedDiagID == DiagMenuIDs.MODDED_MENU)
  57. {
  58. DiagMenu.Unregister(DiagMenuIDs.MODDED_MENU);
  59. }
  60. }
  61. private void RegisterDeveloperDiags()
  62. {
  63. //---------------------------------------------------------------
  64. // LEVEL 0
  65. //---------------------------------------------------------------
  66. DiagMenu.RegisterMenu(DiagMenuIDs.SCRIPTS_MENU, "Script", -1);
  67. {
  68. //---------------------------------------------------------------
  69. // LEVEL 1 - Script
  70. //---------------------------------------------------------------
  71. DiagMenu.RegisterMenu(DiagMenuIDs.VEHICLES, "Vehicles", DiagMenuIDs.SCRIPTS_MENU);
  72. {
  73. //---------------------------------------------------------------
  74. // LEVEL 2 - Script > Vehicles
  75. //---------------------------------------------------------------
  76. DiagMenu.RegisterItem(DiagMenuIDs.VEHICLE_DEBUG_OUTPUT, "", "Crash Log", DiagMenuIDs.VEHICLES, "None, Basic, Extended, Contact, Basic+Contact");
  77. DiagMenu.RegisterBool(DiagMenuIDs.VEHICLE_DUMP_CRASH_DATA, "lalt+7", "Dump Crash Data", DiagMenuIDs.VEHICLES);
  78. }
  79. //---------------------------------------------------------------
  80. // LEVEL 1 - Script
  81. //---------------------------------------------------------------
  82. DiagMenu.RegisterMenu(DiagMenuIDs.INVENTORY_MENU, "Inventory", DiagMenuIDs.SCRIPTS_MENU);
  83. {
  84. //---------------------------------------------------------------
  85. // LEVEL 2 - Script > Inventory
  86. //---------------------------------------------------------------
  87. DiagMenu.RegisterBool(DiagMenuIDs.INVENTORY_ENTITY_PLACEMENT_CALLBACK_DEBUG, "", "Placement Debug", DiagMenuIDs.INVENTORY_MENU);
  88. }
  89. //---------------------------------------------------------------
  90. // LEVEL 1 - Script
  91. //---------------------------------------------------------------
  92. DiagMenu.RegisterMenu(DiagMenuIDs.TRANSFER_VALUES_MENU, "TransferValues", DiagMenuIDs.SCRIPTS_MENU);
  93. {
  94. //---------------------------------------------------------------
  95. // LEVEL 2 - Script > TransferValues
  96. //---------------------------------------------------------------
  97. DiagMenu.RegisterBool(DiagMenuIDs.TRANSFER_VALUES_SHOW, "", "ShowValues", DiagMenuIDs.TRANSFER_VALUES_MENU);
  98. }
  99. //---------------------------------------------------------------
  100. // LEVEL 1 - Script
  101. //---------------------------------------------------------------
  102. DiagMenu.RegisterMenu(DiagMenuIDs.CRAFTING_MENU, "Crafting", DiagMenuIDs.SCRIPTS_MENU);
  103. {
  104. //---------------------------------------------------------------
  105. // LEVEL 2 - Script > Crafting
  106. //---------------------------------------------------------------
  107. DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_GENERATE, "", "Generate Cache", DiagMenuIDs.CRAFTING_MENU);
  108. DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_INSTANT, "", "Debug Insta Crafting", DiagMenuIDs.CRAFTING_MENU);
  109. DiagMenu.RegisterBool(DiagMenuIDs.CRAFTING_DUMP, "", "Dump recipes to file", DiagMenuIDs.CRAFTING_MENU);
  110. }
  111. //---------------------------------------------------------------
  112. // LEVEL 1 - Script
  113. //---------------------------------------------------------------
  114. DiagMenu.RegisterMenu(DiagMenuIDs.CHEATS_MENU, "Cheats", DiagMenuIDs.SCRIPTS_MENU);
  115. {
  116. //---------------------------------------------------------------
  117. // LEVEL 2 - Script > Cheats
  118. //---------------------------------------------------------------
  119. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_MODIFIERS, "lalt+2", "Tick Modifiers", DiagMenuIDs.CHEATS_MENU);
  120. DiagMenu.SetValue(DiagMenuIDs.CHEATS_MODIFIERS, true);
  121. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_KILL_PLAYER, "", "Kill Player", DiagMenuIDs.CHEATS_MENU);
  122. DiagMenu.RegisterItem(DiagMenuIDs.CHEATS_INVINCIBILITY, "lalt+1", "Invincibility (IDDQD)", DiagMenuIDs.CHEATS_MENU, "Disabled,Partial,Full");
  123. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_DISABLE_STAMINA, "", "Disable stamina", DiagMenuIDs.CHEATS_MENU);
  124. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_RESET_PLAYER, "", "Reset Player", DiagMenuIDs.CHEATS_MENU);
  125. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_RESET_PLAYER_MAX, "lalt+3", "Reset Player Max", DiagMenuIDs.CHEATS_MENU);
  126. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_INVENTORY_ACCESS, "", "Inventory Access", DiagMenuIDs.CHEATS_MENU);
  127. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_FIX_ITEMS, "", "Fix Inventory Items", DiagMenuIDs.CHEATS_MENU);
  128. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_CREATE_HIT, "lalt+5", "Create Hit Heavy", DiagMenuIDs.CHEATS_MENU);
  129. DiagMenu.RegisterBool(DiagMenuIDs.CHEATS_CREATE_HIT_LIGHT, "lalt+6", "Create Hit Light", DiagMenuIDs.CHEATS_MENU);
  130. }
  131. //---------------------------------------------------------------
  132. // LEVEL 1 - Script
  133. //---------------------------------------------------------------
  134. DiagMenu.RegisterMenu(DiagMenuIDs.PLAYER_AGENTS_MENU, "Player Agents", DiagMenuIDs.SCRIPTS_MENU);
  135. {
  136. //---------------------------------------------------------------
  137. // LEVEL 2 - Script > Player Agents
  138. //---------------------------------------------------------------
  139. DiagMenu.RegisterBool(DiagMenuIDs.PLAYER_AGENTS_INJECTS_SHOW, "", "Allow Inject Actions", DiagMenuIDs.PLAYER_AGENTS_MENU);
  140. }
  141. //---------------------------------------------------------------
  142. // LEVEL 1 - Script
  143. //---------------------------------------------------------------
  144. DiagMenu.RegisterMenu(DiagMenuIDs.SOFT_SKILLS_MENU, "Soft Skills", DiagMenuIDs.SCRIPTS_MENU);
  145. {
  146. //---------------------------------------------------------------
  147. // LEVEL 2 - Script > Soft Skills
  148. //---------------------------------------------------------------
  149. DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_SHOW_DEBUG, "", "Show Debug", DiagMenuIDs.SOFT_SKILLS_MENU);
  150. DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_TOGGLE_STATE, "", "Enable SoftSkills", DiagMenuIDs.SOFT_SKILLS_MENU);
  151. DiagMenu.RegisterBool(DiagMenuIDs.SOFT_SKILLS_TOGGLE_MODEL, "", "Enable linear model", DiagMenuIDs.SOFT_SKILLS_MENU);
  152. DiagMenu.RegisterRange(DiagMenuIDs.SOFT_SKILLS_SPECIALTY_VALUE, "", "Set specialty value", DiagMenuIDs.SOFT_SKILLS_MENU, "-1, 1, 0, 0.01");
  153. }
  154. //---------------------------------------------------------------
  155. // LEVEL 1 - Script
  156. //---------------------------------------------------------------
  157. DiagMenu.RegisterMenu(DiagMenuIDs.LIFESPAN_MENU, "Lifespan", DiagMenuIDs.SCRIPTS_MENU);
  158. {
  159. //---------------------------------------------------------------
  160. // LEVEL 2 - Script > Lifespan
  161. //---------------------------------------------------------------
  162. DiagMenu.RegisterBool(DiagMenuIDs.LIFESPAN_BLOODY_HANDS, "", "Bloody hands", DiagMenuIDs.LIFESPAN_MENU);
  163. DiagMenu.RegisterRange(DiagMenuIDs.LIFESPAN_PLAYTIME_UPDATE, "", "Playtime in minutes", DiagMenuIDs.LIFESPAN_MENU, "0, 600, 0, 10");
  164. }
  165. //---------------------------------------------------------------
  166. // LEVEL 1 - Script
  167. //---------------------------------------------------------------
  168. DiagMenu.RegisterMenu(DiagMenuIDs.MISC_MENU, "Misc", DiagMenuIDs.SCRIPTS_MENU);
  169. {
  170. //---------------------------------------------------------------
  171. // LEVEL 2 - Script > Misc
  172. //---------------------------------------------------------------
  173. DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_ON_CURSOR, "", "Perform Diag On Cursor", DiagMenuIDs.MISC_MENU);
  174. #ifdef DIAG_MISC_ACTION_ON_CURSOR
  175. DiagMenu.SetValue(DiagMenuIDs.MISC_ACTION_ON_CURSOR, true);
  176. #endif
  177. DiagMenu.RegisterBool(DiagMenuIDs.MISC_DISABLE_PERSONAL_LIGHT, "", "Disable Personal Light", DiagMenuIDs.MISC_MENU);
  178. DiagMenu.RegisterBool(DiagMenuIDs.MISC_ITEM_DEBUG_ACTIONS, "", "Item Debug Actions", DiagMenuIDs.MISC_MENU); // Is enabled by default now
  179. DiagMenu.RegisterBool(DiagMenuIDs.MISC_LOG_PLAYER_STATS, "", "Log Player Stats", DiagMenuIDs.MISC_MENU);
  180. DiagMenu.RegisterMenu(DiagMenuIDs.MISC_ACTION_TARGETS_MENU, "Action Targets", DiagMenuIDs.MISC_MENU);
  181. {
  182. //---------------------------------------------------------------
  183. // LEVEL 3 - Script > Misc > Action Targets
  184. //---------------------------------------------------------------
  185. DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_NEW, "", "New AT Selection", DiagMenuIDs.MISC_ACTION_TARGETS_MENU, true);
  186. DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_DEBUG, "", "Show Debug", DiagMenuIDs.MISC_ACTION_TARGETS_MENU);
  187. DiagMenu.RegisterBool(DiagMenuIDs.MISC_ACTION_TARGETS_SELPOS_DEBUG, "", "Show selection pos debug", DiagMenuIDs.MISC_ACTION_TARGETS_MENU);
  188. }
  189. //---------------------------------------------------------------
  190. // LEVEL 2 - Script > Misc
  191. //---------------------------------------------------------------
  192. DiagMenu.RegisterBool(DiagMenuIDs.MISC_PERMANENT_CROSSHAIR, "", "Enable permanent crosshair", DiagMenuIDs.MISC_MENU);
  193. DiagMenu.RegisterBool(DiagMenuIDs.MISC_TELEPORT_BREAKS_SYNC, "", "Teleport Breaks Sync", DiagMenuIDs.MISC_MENU);
  194. DiagMenu.RegisterBool(DiagMenuIDs.MISC_VEHICLE_GETOUT_BOX, "", "Debug transport freespace", DiagMenuIDs.MISC_MENU);
  195. DiagMenu.RegisterBool(DiagMenuIDs.MISC_VEHICLE_GETOUT_RAYCAST, "", "Debug transport get out raycast", DiagMenuIDs.MISC_MENU);
  196. DiagMenu.RegisterBool(DiagMenuIDs.MISC_TOGGLE_HUD, "", "Toggle HUD on/off", DiagMenuIDs.MISC_MENU);
  197. DiagMenu.RegisterMenu(DiagMenuIDs.MISC_ENVIRONMENT_MENU, "Environment", DiagMenuIDs.MISC_MENU);
  198. {
  199. //---------------------------------------------------------------
  200. // LEVEL 3 - Script > Misc > Environment
  201. //---------------------------------------------------------------
  202. DiagMenu.RegisterBool(DiagMenuIDs.MISC_ENVIRONMENT_DEBUG, "", "Show Environment stats", DiagMenuIDs.MISC_ENVIRONMENT_MENU);
  203. DiagMenu.RegisterBool(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_DRYWET, "", "Log Player Dry/Wetness", DiagMenuIDs.MISC_ENVIRONMENT_MENU, false);
  204. DiagMenu.RegisterBool(DiagMenuIDs.MISC_ENVIRONMENT_LOGGING_ITEMHEAT, "", "Log Player Item Heat", DiagMenuIDs.MISC_ENVIRONMENT_MENU, false);
  205. }
  206. DiagMenu.RegisterBool(DiagMenuIDs.MISC_FALLDAMAGE_DEBUG, "", "Show FallDamage stats", DiagMenuIDs.MISC_MENU);
  207. DiagMenu.RegisterRange(DiagMenuIDs.MISC_DISPLAY_PLAYER_INFO, "", "Display Player Info", DiagMenuIDs.MISC_MENU, "0,2,0,1");
  208. DiagMenu.RegisterBool(DiagMenuIDs.MISC_UNIVERSAL_TEMPERATURE_SOURCES, "lalt+u", "Universal Temp Sources", DiagMenuIDs.MISC_MENU);
  209. DiagMenu.RegisterBool(DiagMenuIDs.MISC_TARGET_TEMPERATURE, "", "Target Temperature", DiagMenuIDs.MISC_MENU);
  210. DiagMenu.RegisterBool(DiagMenuIDs.MISC_DRAW_CHECKERBOARD, "", "Draw Checkerboard on screen", DiagMenuIDs.MISC_MENU);
  211. DiagMenu.RegisterBool(DiagMenuIDs.MISC_BULLET_IMPACT, "", "BulletImpact", DiagMenuIDs.MISC_MENU);
  212. DiagMenu.RegisterBool(DiagMenuIDs.MISC_PRESENCE_NOTIFIER_DBG, "", "Show Presence to AI dbg", DiagMenuIDs.MISC_MENU);
  213. DiagMenu.RegisterBool(DiagMenuIDs.MISC_GO_UNCONSCIOUS, "lctrl+m", "Go Unconscious", DiagMenuIDs.MISC_MENU);
  214. DiagMenu.RegisterBool(DiagMenuIDs.MISC_GO_UNCONSCIOUS_DELAYED, "", "Uncons. in 10sec", DiagMenuIDs.MISC_MENU);
  215. DiagMenu.RegisterBool(DiagMenuIDs.MISC_QUICK_RESTRAIN, "", "Quick Restrain", DiagMenuIDs.MISC_MENU);
  216. DiagMenu.RegisterMenu(DiagMenuIDs.MISC_HAIR_MENU, "Hair Hiding", DiagMenuIDs.MISC_MENU);
  217. {
  218. //---------------------------------------------------------------
  219. // LEVEL 3 - Script > Misc > Hair Hiding
  220. //---------------------------------------------------------------
  221. DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_DISPLAY_DEBUG, "", "Display Debug", DiagMenuIDs.MISC_HAIR_MENU);
  222. DiagMenu.RegisterRange(DiagMenuIDs.MISC_HAIR_LEVEL, "", "Hair Level#", DiagMenuIDs.MISC_HAIR_MENU, string.Format("0,%1,0,1", m_TotalHairLevelsAdjusted));
  223. DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_LEVEL_HIDE, "", "Toggle Hair Level", DiagMenuIDs.MISC_HAIR_MENU);
  224. DiagMenu.RegisterBool(DiagMenuIDs.MISC_HAIR_HIDE_ALL, "", "Hide/Show All", DiagMenuIDs.MISC_HAIR_MENU);
  225. }
  226. //---------------------------------------------------------------
  227. // LEVEL 2 - Script > Misc
  228. //---------------------------------------------------------------
  229. DiagMenu.RegisterBool(DiagMenuIDs.MISC_CAM_SHAKE, "", "Simulate Cam Shake", DiagMenuIDs.MISC_MENU);
  230. DiagMenu.RegisterBool(DiagMenuIDs.MISC_QUICK_FISHING, "", "Quick Fishing", DiagMenuIDs.MISC_MENU);
  231. DiagMenu.RegisterBool(DiagMenuIDs.MISC_HOLOGRAM, "lctrl+h", "Hologram placing debug", DiagMenuIDs.MISC_MENU);
  232. DiagMenu.RegisterBool(DiagMenuIDs.MISC_SHOCK_IMPACT, "lalt+8", "ShockHitEffect", DiagMenuIDs.MISC_MENU);
  233. DiagMenu.RegisterBool(DiagMenuIDs.MISC_SHOW_PLUG_ARROWS, "", "Show Energy Manager Plug Arrows", DiagMenuIDs.MISC_MENU);
  234. DiagMenu.RegisterBool(DiagMenuIDs.MISC_BREATH_VAPOR_LVL, "", "Breath Vapor", DiagMenuIDs.MISC_MENU);
  235. DiagMenu.SetValue(DiagMenuIDs.MISC_BREATH_VAPOR_LVL, true);
  236. DiagMenu.RegisterBool(DiagMenuIDs.MISC_TARGETABLE_BY_AI, "lalt+t", "Toggle Targetable By AI", DiagMenuIDs.MISC_MENU);
  237. DiagMenu.SetValue(DiagMenuIDs.MISC_TARGETABLE_BY_AI, true);
  238. DiagMenu.RegisterMenu(DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Hit Indication", DiagMenuIDs.MISC_MENU);
  239. {
  240. //---------------------------------------------------------------
  241. // LEVEL 3 - Script > Misc > Hit Indication
  242. //---------------------------------------------------------------
  243. DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_DEBUG, "", "Enable Debug", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
  244. DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT, "", "Spawn Hit", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
  245. DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT_DIRECTION, "", "Spawn Hit Direction", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 359, 0, 1");
  246. DiagMenu.RegisterItem(DiagMenuIDs.MISC_HIT_INDICATION_MODE, "", "Mode", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Disabled,Static,Dynamic");
  247. DiagMenu.SetValue(DiagMenuIDs.MISC_HIT_INDICATION_MODE, 1);
  248. DiagMenu.RegisterItem(DiagMenuIDs.MISC_HIT_INDICATION_TYPE, "", "Type", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "Splash,Spike,Arrow");
  249. DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_DURATION, "", "Hit Duration Max", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.1, 5.0, 1.0, 0.1");
  250. DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_BREAKPOINT, "", "Hit Breakpoint", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.0, 1.0, 0.8, 0.05");
  251. DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_DISTANCE, "", "Distance Adjust", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0.0, 1.0, 0.0, 0.01");
  252. DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_ROTATION, "", "Rotation Override", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 360, 0, 15");
  253. DiagMenu.RegisterRange(DiagMenuIDs.MISC_HIT_INDICATION_SCATTER, "", "Direction Scatter", DiagMenuIDs.MISC_HIT_INDICATION_MENU, "0, 90, 0, 1");
  254. DiagMenu.RegisterBool(DiagMenuIDs.MISC_HIT_INDICATION_DISABLE_PPE, "", "Disable Hit PPE", DiagMenuIDs.MISC_HIT_INDICATION_MENU);
  255. }
  256. //---------------------------------------------------------------
  257. // LEVEL 2 - Script > Misc
  258. //---------------------------------------------------------------
  259. DiagMenu.RegisterBool(DiagMenuIDs.MISC_FREEZE_ENTITY, "lalt+x", "Freeze entity", DiagMenuIDs.MISC_MENU);
  260. DiagMenu.RegisterBool(DiagMenuIDs.MISC_CONNECTION_STATS, "lalt+4", "Show Connection Stats", DiagMenuIDs.MISC_MENU);
  261. DiagMenu.RegisterBool(DiagMenuIDs.MISC_PLAYER_SYMPTOMS_SHOW, "", "Show States", DiagMenuIDs.MISC_MENU);
  262. DiagMenu.RegisterRange(DiagMenuIDs.MISC_PLAYER_SYMPTOMS_TOGGLE_HMP, "", "Set HMP symptom", DiagMenuIDs.MISC_MENU, "-1, 1, -1, 1");
  263. DiagMenu.RegisterBool(DiagMenuIDs.MISC_SHOW_PRA_ALL, "lalt+n", "Show PRA - ALL", DiagMenuIDs.MISC_MENU);
  264. DiagMenu.RegisterBool(DiagMenuIDs.MISC_PRA_DETECT, "lalt+m", "PRA - detect", DiagMenuIDs.MISC_MENU);
  265. DiagMenu.RegisterBool(DiagMenuIDs.MISC_INPUT_DEVICE_DISCONNECT_DBG, "", "InputDevice states", DiagMenuIDs.MISC_MENU);
  266. DiagMenu.RegisterBool(DiagMenuIDs.MISC_DEBUG_MONITOR, "", "Debug Monitor", DiagMenuIDs.MISC_MENU);
  267. DiagMenu.RegisterRange(DiagMenuIDs.MISC_FORCE_HINT_INDEX, "", "Force Hint Index", DiagMenuIDs.MISC_MENU, "-1, 512, -1, 1");
  268. if (UiHintPanel.m_ForcedIndex != -1)
  269. DiagMenu.SetRangeValue(DiagMenuIDs.MISC_FORCE_HINT_INDEX,UiHintPanel.m_ForcedIndex);
  270. }
  271. //---------------------------------------------------------------
  272. // LEVEL 1 - Script
  273. //---------------------------------------------------------------
  274. DiagMenu.RegisterMenu(DiagMenuIDs.SIMULATE_MENU, "Simulate script", DiagMenuIDs.SCRIPTS_MENU);
  275. {
  276. //---------------------------------------------------------------
  277. // LEVEL 2 - Script > Simulate script
  278. //---------------------------------------------------------------
  279. DiagMenu.RegisterRange(DiagMenuIDs.SIMULATE_MODE, "", "Server/Client/Both", DiagMenuIDs.SIMULATE_MENU,"0,2,0,1");
  280. DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_INFINITE_LOOP, "", "Simulate infinite loop", DiagMenuIDs.SIMULATE_MENU);
  281. DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_NULL_POINTER, "", "Simulate null pointer", DiagMenuIDs.SIMULATE_MENU);
  282. DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_DIVISION_BY_ZERO, "", "Simulate division by 0", DiagMenuIDs.SIMULATE_MENU);
  283. DiagMenu.RegisterBool(DiagMenuIDs.SIMULATE_ERROR_FUNCTION, "", "Simulate Error() function", DiagMenuIDs.SIMULATE_MENU);
  284. }
  285. //---------------------------------------------------------------
  286. // LEVEL 1 - Script
  287. //---------------------------------------------------------------
  288. DiagMenu.RegisterMenu(DiagMenuIDs.MELEE_MENU, "Melee", DiagMenuIDs.SCRIPTS_MENU);
  289. {
  290. //---------------------------------------------------------------
  291. // LEVEL 2 - Script > Melee
  292. //---------------------------------------------------------------
  293. DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DEBUG, "", "Enable Melee Debug", DiagMenuIDs.MELEE_MENU);
  294. DiagMenu.RegisterBool(DiagMenuIDs.MELEE_CONTINUOUS, "", "Continuous update", DiagMenuIDs.MELEE_MENU);
  295. DiagMenu.RegisterBool(DiagMenuIDs.MELEE_SHOW_TARGETS, "", "Show targets", DiagMenuIDs.MELEE_MENU);
  296. DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_TARGETS, "", "Draw targets", DiagMenuIDs.MELEE_MENU);
  297. DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_RANGE, "", "Draw range", DiagMenuIDs.MELEE_MENU);
  298. DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_BLOCK_RANGE_AI, "", "Draw block range PVE", DiagMenuIDs.MELEE_MENU);
  299. DiagMenu.RegisterBool(DiagMenuIDs.MELEE_DRAW_BLOCK_RANGE_PVP, "", "Draw block range PVP", DiagMenuIDs.MELEE_MENU);
  300. }
  301. //---------------------------------------------------------------
  302. // LEVEL 1 - Script
  303. //---------------------------------------------------------------
  304. DiagMenu.RegisterMenu(DiagMenuIDs.WEAPON_MENU, "Weapon", DiagMenuIDs.SCRIPTS_MENU);
  305. {
  306. //---------------------------------------------------------------
  307. // LEVEL 2 - Script > Weapon
  308. //---------------------------------------------------------------
  309. DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_PARTICLES, "", "Enable gun particles", DiagMenuIDs.WEAPON_MENU);
  310. DiagMenu.SetValue(DiagMenuIDs.WEAPON_PARTICLES, true);
  311. DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_DEBUG, "", "Show Debug", DiagMenuIDs.WEAPON_MENU); // Doesn't do anything anymore currently
  312. DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_AIM_NOISE, "", "Weapon Sway", DiagMenuIDs.WEAPON_MENU);
  313. DiagMenu.SetValue(DiagMenuIDs.WEAPON_AIM_NOISE, true);
  314. DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_RECOIL, "", "Procedural Recoil", DiagMenuIDs.WEAPON_MENU);
  315. DiagMenu.SetValue(DiagMenuIDs.WEAPON_RECOIL, true);
  316. DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_UNLIMITED_AMMO, "lalt+9", "Unlimited Ammo", DiagMenuIDs.WEAPON_MENU);
  317. DiagMenu.RegisterItem(DiagMenuIDs.WEAPON_BURST_VERSION, "lctrl+0", "Burst Version", DiagMenuIDs.WEAPON_MENU, "Hold, Press");
  318. DiagMenu.RegisterBool(DiagMenuIDs.WEAPON_CLAYMORE_DEBUG, "", "Claymore debugs", DiagMenuIDs.WEAPON_MENU);
  319. DiagMenu.RegisterItem(DiagMenuIDs.WEAPON_LIFT_DEBUG, "", "Weapon Lift Debug", DiagMenuIDs.WEAPON_MENU, "false,true,extended");
  320. }
  321. //---------------------------------------------------------------
  322. // LEVEL 1 - Script
  323. //---------------------------------------------------------------
  324. DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDING_MENU, "Bleeding", DiagMenuIDs.SCRIPTS_MENU);
  325. {
  326. //---------------------------------------------------------------
  327. // LEVEL 2 - Script > Bleeding
  328. //---------------------------------------------------------------
  329. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_SOURCES, "", "Show Bleeding Sources", DiagMenuIDs.BLEEDING_MENU);
  330. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_DISABLE_BLOOD_LOSS, "", "Disable Blood Loss", DiagMenuIDs.BLEEDING_MENU);
  331. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE, "", "Activate Source #", DiagMenuIDs.BLEEDING_MENU, "1, 32, 0, 1");
  332. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_ACTIVATE_ALL_SOURCES, "", "Activate All Sources", DiagMenuIDs.BLEEDING_MENU);
  333. DiagMenu.RegisterItem(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE_LEVEL, "", "Activate Blsource Level", DiagMenuIDs.BLEEDING_MENU, "None, Low, Medium, High");
  334. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_RELOAD, "", "Client Reload", DiagMenuIDs.BLEEDING_MENU);
  335. DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDINGINDICATORS_MENU, "Bleeding Indication", DiagMenuIDs.BLEEDING_MENU);
  336. {
  337. //---------------------------------------------------------------
  338. // LEVEL 3 - Script > Bleeding > Bleeding Indication
  339. //---------------------------------------------------------------
  340. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS, "", "Enable BleedingIndicators", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
  341. DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS, true);
  342. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, "", "Enable Debug Overrides", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
  343. DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, false);
  344. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, "", "Enable Random Rotation", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
  345. DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, true);
  346. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_SEQUENCE_DURATION, "", "Sequence Duration", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.2, 5.0, " + BleedingIndicationConstants.SEQUENCE_DURATION_DEFAULT.ToString() + ", 0.01");
  347. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_BASEDURATION, "", "Drop Anim Duration", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 5.0, " + BleedingIndicationConstants.DROP_DURATION_LOW.ToString() + ", 0.05");
  348. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_MINDELAY, "", "Drop Min Delay", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 5.0, " + BleedingIndicationConstants.SEQUENCE_DROP_DELAY_MIN_LOW.ToString() + ", 0.05");
  349. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_MAXDELAY, "", "Drop Max Delay", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 5.0, " + BleedingIndicationConstants.SEQUENCE_DROP_DELAY_MAX_LOW.ToString() + ", 0.05");
  350. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_PROGRESSTHRESHOLD, "", "Drop Progress Threshold", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_PROGRESS_THRESHOLD.ToString() + ", 0.05");
  351. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_STARTSIZE, "", "Drop Start Size", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_SIZE_START_LOW.ToString() + ", 0.01");
  352. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_ENDSIZE, "", "Drop End Size", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_SIZE_END_LOW.ToString() + ", 0.01");
  353. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RNDSCALEMIN, "", "Drop Size Random Min", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 2.0, " + BleedingIndicationConstants.DROP_SIZE_VARIATION_MIN_LOW.ToString() + ", 0.01");
  354. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RNDSCALEMAX, "", "Drop Size Random Max", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 2.0, " + BleedingIndicationConstants.DROP_SIZE_VARIATION_MAX_LOW.ToString() + ", 0.01");
  355. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SCATTER, "", "Drop Scatter px", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 500.0, " + BleedingIndicationConstants.DROP_SCATTER_LOW.ToString() + ", 1.0");
  356. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SLIDEDISTANCE, "", "Drop Slide Distance", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 500.0, 0, 0.1");
  357. DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "Color Debug", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
  358. {
  359. //---------------------------------------------------------------
  360. // LEVEL 4 - Script > Bleeding > Bleeding Indication > Color Debug
  361. //---------------------------------------------------------------
  362. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, "", "Desaturate", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU);
  363. DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, true);
  364. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_DESATURATIONEND, "", "Saturation End Value", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 1.0, " + BleedingIndicationConstants.DROP_COLOR_DESATURATIONEND.ToString() + ", 0.05");
  365. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_R, "", "Red", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_RED.ToString() + ", 1.0");
  366. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_G, "", "Green", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_GREEN.ToString() + ", 1.0");
  367. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_B, "", "Blue", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_BLUE.ToString() + ", 1.0");
  368. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_A_START, "", "Alpha - Start", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_ALPHA_START.ToString() + ", 1.0");
  369. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_A_END, "", "Alpha - End", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_ALPHA_END.ToString() + ", 1.0");
  370. }
  371. }
  372. }
  373. //---------------------------------------------------------------
  374. // LEVEL 1 - Script
  375. //---------------------------------------------------------------
  376. DiagMenu.RegisterMenu(DiagMenuIDs.LOGS_MENU, "Logs", DiagMenuIDs.SCRIPTS_MENU);
  377. {
  378. //---------------------------------------------------------------
  379. // LEVEL 2 - Script > Logs
  380. //---------------------------------------------------------------
  381. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_ACTIONS, "", "Log Actions", DiagMenuIDs.LOGS_MENU);
  382. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_WEAPONS, "", "Log Weapons", DiagMenuIDs.LOGS_MENU);
  383. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_SYNC, "", "Log Sync", DiagMenuIDs.LOGS_MENU);
  384. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_BASEBUILDING, "", "Log Base building", DiagMenuIDs.LOGS_MENU);
  385. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_QUICKBAR, "", "Log Quickbar", DiagMenuIDs.LOGS_MENU);
  386. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_SYMPTOMS, "", "Log Symptoms", DiagMenuIDs.LOGS_MENU);
  387. DiagMenu.RegisterMenu(DiagMenuIDs.LOGS_INVENTORY_MENU, "Inventory Logs", DiagMenuIDs.LOGS_MENU);
  388. {
  389. //---------------------------------------------------------------
  390. // LEVEL 3 - Script > Logs > InventoryLogs
  391. //---------------------------------------------------------------
  392. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_MOVE, "", "Log Items move", DiagMenuIDs.LOGS_INVENTORY_MENU);
  393. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_RESERVATION, "", "Log Reservations", DiagMenuIDs.LOGS_INVENTORY_MENU);
  394. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_HFSM, "", "Log HandFSM", DiagMenuIDs.LOGS_INVENTORY_MENU);
  395. }
  396. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_BLEEDING_CHANCES, "", "Bleeding Chances Logs", DiagMenuIDs.LOGS_MENU);
  397. }
  398. //---------------------------------------------------------------
  399. // LEVEL 1 - Script
  400. //---------------------------------------------------------------
  401. DiagMenu.RegisterMenu(DiagMenuIDs.TRIGGER_MENU, "Triggers", DiagMenuIDs.SCRIPTS_MENU);
  402. {
  403. //---------------------------------------------------------------
  404. // LEVEL 2 - Script > Triggers
  405. //---------------------------------------------------------------
  406. DiagMenu.RegisterBool(DiagMenuIDs.TRIGGER_DEBUG, "", "Show Triggers", DiagMenuIDs.TRIGGER_MENU);
  407. DiagMenu.RegisterBool(DiagMenuIDs.TRIGGER_PLAYER_DEBUG, "", "Show Player Touch", DiagMenuIDs.TRIGGER_MENU);
  408. #ifdef TRIGGER_DEBUG_BASIC
  409. DiagMenu.SetValue(DiagMenuIDs.TRIGGER_DEBUG, true);
  410. DiagMenu.SetValue(DiagMenuIDs.TRIGGER_PLAYER_DEBUG, true);
  411. #endif
  412. }
  413. //---------------------------------------------------------------
  414. // LEVEL 1 - Script
  415. //---------------------------------------------------------------
  416. DiagMenu.RegisterMenu(DiagMenuIDs.BASEBUILDING_MENU, "Base Building", DiagMenuIDs.SCRIPTS_MENU);
  417. {
  418. //---------------------------------------------------------------
  419. // LEVEL 2 - Script > Base Building
  420. //---------------------------------------------------------------
  421. DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_WOOD, "", "Spawn uses wood/metal", DiagMenuIDs.BASEBUILDING_MENU);
  422. DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_GATE, "", "Spawn Fence makes gate", DiagMenuIDs.BASEBUILDING_MENU);
  423. }
  424. //---------------------------------------------------------------
  425. // LEVEL 1 - Script
  426. //---------------------------------------------------------------
  427. DiagMenu.RegisterMenu(DiagMenuIDs.UNDERGROUND_MENU, "Underground Areas", DiagMenuIDs.SCRIPTS_MENU);
  428. {
  429. //---------------------------------------------------------------
  430. // LEVEL 2 - Script > Underground Areas
  431. //---------------------------------------------------------------
  432. DiagMenu.RegisterBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB, "", "Show Breadcrumbs", DiagMenuIDs.UNDERGROUND_MENU);
  433. DiagMenu.RegisterBool(DiagMenuIDs.UNDERGROUND_DISABLE_DARKENING, "lctrl+f", "Disable Darkening", DiagMenuIDs.UNDERGROUND_MENU);
  434. }
  435. //---------------------------------------------------------------
  436. // LEVEL 1 - Script
  437. //---------------------------------------------------------------
  438. DiagMenu.RegisterMenu(DiagMenuIDs.FINISHERS_MENU, "Finishers", DiagMenuIDs.SCRIPTS_MENU);
  439. {
  440. //---------------------------------------------------------------
  441. // LEVEL 2 - Script > Finishers
  442. //---------------------------------------------------------------
  443. DiagMenu.RegisterItem(DiagMenuIDs.FINISHERS_FINISHER_FORCED, "", "Forced Finisher: ", DiagMenuIDs.FINISHERS_MENU, "None,Liver,Neck");
  444. }
  445. //---------------------------------------------------------------
  446. // LEVEL 1 - Script
  447. //---------------------------------------------------------------
  448. DiagMenu.RegisterMenu(DiagMenuIDs.SOUNDS_MENU, "Script Sounds", DiagMenuIDs.SCRIPTS_MENU);
  449. {
  450. //---------------------------------------------------------------
  451. // LEVEL 2 - Script > Script Sounds
  452. //---------------------------------------------------------------
  453. DiagMenu.RegisterBool(DiagMenuIDs.SOUNDS_ITEM_IMPACT_SOUNDS, "", "Item impact sounds", DiagMenuIDs.SOUNDS_MENU);
  454. DiagMenu.RegisterBool(DiagMenuIDs.SOUNDS_DYNAMIC_MUSIC_PLAYER_STATS, "", "Dynamic Music Player stats", DiagMenuIDs.SOUNDS_MENU);
  455. }
  456. //---------------------------------------------------------------
  457. // LEVEL 1 - Script
  458. //---------------------------------------------------------------
  459. DiagMenu.RegisterMenu(DiagMenuIDs.CAMERATOOLS_MENU, "Cinematic Camera Tools", DiagMenuIDs.SCRIPTS_MENU);
  460. {
  461. //---------------------------------------------------------------
  462. // LEVEL 2 - Script > Cinematic Camera Tools
  463. //---------------------------------------------------------------
  464. DiagMenu.RegisterBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA, "", "Show remote camera", DiagMenuIDs.CAMERATOOLS_MENU);
  465. DiagMenu.RegisterBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA_BROADCAST, "", "Broadcast camera", DiagMenuIDs.CAMERATOOLS_MENU);
  466. }
  467. //---------------------------------------------------------------
  468. // LEVEL 1 - Script
  469. //---------------------------------------------------------------
  470. DiagMenu.RegisterMenu(DiagMenuIDs.FEATURE_TIME_ACCEL_MENU, "Time Accel", DiagMenuIDs.SCRIPTS_MENU);
  471. {
  472. //---------------------------------------------------------------
  473. // LEVEL 2 - Script > Time Accel
  474. //---------------------------------------------------------------
  475. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL, "lalt+0", "Apply Time Accel", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  476. DiagMenu.RegisterRange(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1, "", "Accel Factor Big", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU,"0,100,1,1");
  477. DiagMenu.RegisterRange(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2, "", "Accel Factor Small", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU,"0,0.95 ,0,0.05");
  478. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_UG_ENTRANCES, "", "Underground Entrances", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  479. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_UG_RESERVOIR, "", "Underground Reservoir", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  480. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_ENERGY_CONSUME, "", "Energy Consumption", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  481. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_FOOD_DECAY, "", "Decay", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  482. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_DYNAMIC_MUSIC_PLAYER, "", "Dynamic Music Player", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  483. }
  484. //---------------------------------------------------------------
  485. // LEVEL 1 - Script
  486. //---------------------------------------------------------------
  487. DiagMenu.RegisterMenu(DiagMenuIDs.MATERIALDIAG_MENU, "Materials Diag", DiagMenuIDs.SCRIPTS_MENU);
  488. {
  489. //---------------------------------------------------------------
  490. // LEVEL 2 - Script > Material Diag
  491. //---------------------------------------------------------------
  492. DiagMenu.RegisterBool(DiagMenuIDs.MATERIALDIAG_GHOSTPP, "", "Ghost PP", DiagMenuIDs.MATERIALDIAG_MENU);
  493. }
  494. }
  495. }
  496. //---------------------------------------------
  497. protected int GetModdedDiagID()
  498. {
  499. return ++m_ModdedDiagID;
  500. }
  501. //---------------------------------------------
  502. protected int GetModdedRootMenu()
  503. {
  504. return DiagMenuIDs.MODDED_MENU;
  505. }
  506. //---------------------------------------------
  507. protected void RegisterModdedDiagsIDs();
  508. //---------------------------------------------
  509. protected void RegisterModdedDiags()
  510. {
  511. DiagMenu.RegisterMenu(DiagMenuIDs.MODDED_MENU, "Script - Modded", -1);
  512. }
  513. //---------------------------------------------
  514. void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
  515. {
  516. EntityAI parent;
  517. Class.CastTo(parent, player.GetParent());
  518. switch (rpc_type)
  519. {
  520. //---------------------------------------------------------------
  521. // Misc, multipurpose
  522. //---------------------------------------------------------------
  523. case ERPCs.DIAG_ITEM_DEBUG_ACTIONS:
  524. {
  525. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  526. ItemBase.SetDebugActionsMask(CachedObjectsParams.PARAM1_INT.param1);
  527. break;
  528. }
  529. //---------------------------------------------------------------
  530. // LEVEL 2 - Script > Player States
  531. //---------------------------------------------------------------
  532. case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_ON:
  533. case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_OFF:
  534. case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG:
  535. {
  536. if (player.GetSymptomManager())
  537. {
  538. player.GetSymptomManager().OnRPCDebug(rpc_type, ctx);
  539. }
  540. break;
  541. }
  542. //---------------------------------------------------------------
  543. // LEVEL 2 - Script > Crafting
  544. //---------------------------------------------------------------
  545. case ERPCs.DIAG_CRAFTING_INSTANT:
  546. {
  547. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  548. {
  549. PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
  550. pluginRecipesManager.SetEnableDebugCrafting(CachedObjectsParams.PARAM1_INT.param1);
  551. }
  552. break;
  553. }
  554. //---------------------------------------------------------------
  555. // LEVEL 2 - Script > Cheats
  556. //---------------------------------------------------------------
  557. case ERPCs.DIAG_CHEATS_MODIFIERS:
  558. {
  559. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  560. player.SetModifiers(CachedObjectsParams.PARAM1_INT.param1);
  561. break;
  562. }
  563. //---------------------------------------------------------------
  564. case ERPCs.DIAG_CHEATS_KILL_PLAYER:
  565. {
  566. player.SetHealth("","", -1);
  567. break;
  568. }
  569. //---------------------------------------------------------------
  570. case ERPCs.DIAG_CHEATS_INVINCIBILITY:
  571. {
  572. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  573. {
  574. switch (CachedObjectsParams.PARAM1_INT.param1)
  575. {
  576. case 0:
  577. {
  578. if (parent)
  579. {
  580. parent.SetAllowDamage(true);
  581. parent.SetCanBeDestroyed(true);
  582. }
  583. player.SetAllowDamage(true);
  584. player.SetCanBeDestroyed(true);
  585. break;
  586. }
  587. case 1:
  588. {
  589. if (parent)
  590. {
  591. parent.SetAllowDamage(true);
  592. parent.SetCanBeDestroyed(false);
  593. }
  594. player.SetAllowDamage(true);
  595. player.SetCanBeDestroyed(false);
  596. break;
  597. }
  598. case 2:
  599. {
  600. if (parent)
  601. {
  602. parent.SetAllowDamage(false);
  603. }
  604. player.SetAllowDamage(false);
  605. break;
  606. }
  607. }
  608. break;
  609. }
  610. }
  611. //---------------------------------------------------------------
  612. case ERPCs.DIAG_CHEATS_DISABLE_STAMINA:
  613. {
  614. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  615. player.SetStaminaDisabled(CachedObjectsParams.PARAM1_BOOL.param1);
  616. break;
  617. }
  618. //---------------------------------------------------------------
  619. case ERPCs.DIAG_CHEATS_RESET_PLAYER:
  620. {
  621. player.ResetPlayer(false);
  622. break;
  623. }
  624. //---------------------------------------------------------------
  625. case ERPCs.DIAG_CHEATS_RESET_PLAYER_MAX:
  626. {
  627. player.ResetPlayer(true);
  628. break;
  629. }
  630. //---------------------------------------------------------------
  631. case ERPCs.DIAG_CHEATS_INVENTORY_ACCESS:
  632. {
  633. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  634. player.DEBUG_INVENTORY_ACCESS = CachedObjectsParams.PARAM1_INT.param1;
  635. break;
  636. }
  637. //---------------------------------------------------------------
  638. case ERPCs.DIAG_CHEATS_ITEMS_FIX:
  639. {
  640. player.FixAllInventoryItems();
  641. break;
  642. }
  643. //---------------------------------------------------------------
  644. //---------------------------DAMAGE DEBUG------------------------
  645. // hardcoded for Heavy and Light, but Light can be converted to some sort of setup if we need to have even more times with more settings, ie. we could first set-up the hit params and then perform it
  646. case ERPCs.DIAG_CHEATS_CREATE_HIT:
  647. {
  648. player.ProcessDirectDamage(DamageType.CUSTOM, player, "", "Dummy_Heavy", "0 0 0");
  649. break;
  650. }
  651. case ERPCs.DIAG_CHEATS_CREATE_HIT_LIGHT:
  652. {
  653. player.ProcessDirectDamage(DamageType.CUSTOM, player, "", "MeleeFist", "0 0 0");
  654. break;
  655. }
  656. //---------------------------------------------------------------
  657. // LEVEL 2 - Script > Soft Skills
  658. //---------------------------------------------------------------
  659. case ERPCs.DIAG_SOFT_SKILLS_SHOW_DEBUG:
  660. {
  661. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  662. {
  663. if (CachedObjectsParams.PARAM1_BOOL.param1)
  664. {
  665. player.GetSoftSkillsManager().StartSynchTimer();
  666. }
  667. else
  668. {
  669. player.GetSoftSkillsManager().StopSynchTimer();
  670. player.GetSoftSkillsManager().ResetDebugWindow();
  671. }
  672. }
  673. break;
  674. }
  675. //---------------------------------------------------------------
  676. case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_STATE:
  677. {
  678. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  679. player.GetSoftSkillsManager().SetSoftSkillsState(CachedObjectsParams.PARAM1_BOOL.param1);
  680. break;
  681. }
  682. //---------------------------------------------------------------
  683. case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_MODEL:
  684. {
  685. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  686. player.GetSoftSkillsManager().SetLinearState(CachedObjectsParams.PARAM1_BOOL.param1) ;
  687. break;
  688. }
  689. //---------------------------------------------------------------
  690. case ERPCs.DIAG_SOFT_SKILLS_SPECIALTY_VALUE:
  691. {
  692. if (ctx.Read(CachedObjectsParams.PARAM1_FLOAT))
  693. {
  694. SoftSkillsManager softSkillsMngr = player.GetSoftSkillsManager();
  695. softSkillsMngr.SetSpecialtyLevel(CachedObjectsParams.PARAM1_FLOAT.param1);
  696. softSkillsMngr.SynchSpecialtyLevel();
  697. player.GetStatSpecialty().Set(CachedObjectsParams.PARAM1_FLOAT.param1);
  698. }
  699. break;
  700. }
  701. //---------------------------------------------------------------
  702. // LEVEL 2 - Script > Lifespan
  703. //---------------------------------------------------------------
  704. case ERPCs.DIAG_LIFESPAN_BLOODY_HANDS:
  705. {
  706. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  707. {
  708. PluginLifespan pluginLifespan = PluginLifespan.Cast(GetPlugin(PluginLifespan));
  709. pluginLifespan.UpdateBloodyHandsVisibility(player, CachedObjectsParams.PARAM1_BOOL.param1);
  710. }
  711. break;
  712. }
  713. //---------------------------------------------------------------
  714. case ERPCs.DIAG_LIFESPAN_PLAYTIME_UPDATE:
  715. {
  716. if (ctx.Read( CachedObjectsParams.PARAM1_FLOAT))
  717. {
  718. //reset playtime
  719. player.StatUpdate(AnalyticsManagerServer.STAT_PLAYTIME, player.StatGet(AnalyticsManagerServer.STAT_PLAYTIME) * -1);
  720. //set new playtime
  721. player.StatUpdate(AnalyticsManagerServer.STAT_PLAYTIME, CachedObjectsParams.PARAM1_FLOAT.param1 );
  722. player.SetLastShavedSeconds(0);
  723. //update lifespan
  724. PluginLifespan pluginLifespann = PluginLifespan.Cast(GetPlugin(PluginLifespan));
  725. pluginLifespann.ChangeFakePlaytime( player, CachedObjectsParams.PARAM1_FLOAT.param1 );
  726. pluginLifespann.UpdateLifespan(player, true);
  727. }
  728. break;
  729. }
  730. //---------------------------------------------------------------
  731. // LEVEL 2 - Script > Misc
  732. //---------------------------------------------------------------
  733. case ERPCs.DIAG_MISC_LOG_PLAYER_STATS:
  734. {
  735. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  736. player.GetPlayerStats().SetAllowLogs(CachedObjectsParams.PARAM1_BOOL.param1);
  737. break;
  738. }
  739. //---------------------------------------------------------------
  740. //---------------------------------------------------------------
  741. // LEVEL 2 - Script > Misc -> Environment
  742. //---------------------------------------------------------------
  743. case ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG:
  744. {
  745. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  746. {
  747. if (player.m_Environment)
  748. player.m_Environment.m_Debug = CachedObjectsParams.PARAM1_BOOL.param1;
  749. }
  750. break;
  751. }
  752. case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_DRYWET:
  753. {
  754. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  755. {
  756. if (player.m_Environment)
  757. player.m_Environment.m_DebugLogDryWet = CachedObjectsParams.PARAM1_BOOL.param1;
  758. }
  759. break;
  760. }
  761. case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_ITEMHEAT:
  762. {
  763. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  764. {
  765. if (player.m_Environment)
  766. player.m_Environment.m_DebugLogItemHeat = CachedObjectsParams.PARAM1_BOOL.param1;
  767. }
  768. break;
  769. }
  770. //---------------------------------------------------------------
  771. // LEVEL 2 - Script > Misc
  772. //---------------------------------------------------------------
  773. case ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG:
  774. {
  775. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  776. {
  777. if (player.GetFallDamage())
  778. player.GetFallDamage().m_Debug = CachedObjectsParams.PARAM1_BOOL.param1;
  779. }
  780. break;
  781. }
  782. //---------------------------------------------------------------
  783. case ERPCs.DIAG_MISC_GO_UNCONSCIOUS:
  784. {
  785. GoUnconscious(player);
  786. break;
  787. }
  788. //---------------------------------------------------------------
  789. case ERPCs.DIAG_MISC_GO_UNCONSCIOUS_DELAYED:
  790. {
  791. GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GoUnconscious, 10000, false, player);
  792. break;
  793. }
  794. //---------------------------------------------------------------
  795. case ERPCs.DIAG_MISC_QUICK_RESTRAIN:
  796. {
  797. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  798. player.SetQuickRestrain(CachedObjectsParams.PARAM1_BOOL.param1);
  799. break;
  800. }
  801. //---------------------------------------------------------------
  802. // LEVEL 3 - Script > Misc > Hair Hiding
  803. //---------------------------------------------------------------
  804. case ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE:
  805. {
  806. if (ctx.Read(CachedObjectsParams.PARAM2_INT_INT))
  807. {
  808. player.SetHairLevelToHide(CachedObjectsParams.PARAM2_INT_INT.param1, CachedObjectsParams.PARAM2_INT_INT.param2, true);
  809. player.UpdateHairSelectionVisibility(true);
  810. }
  811. break;
  812. }
  813. //---------------------------------------------------------------
  814. // LEVEL 2 - Script > Misc
  815. //---------------------------------------------------------------
  816. case ERPCs.DIAG_MISC_QUICK_FISHING:
  817. {
  818. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  819. player.SetQuickFishing(CachedObjectsParams.PARAM1_BOOL.param1);
  820. break;
  821. }
  822. //---------------------------------------------------------------
  823. case ERPCs.DIAG_MISC_TARGETABLE_BY_AI:
  824. {
  825. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  826. player.m_CanBeTargetedDebug = CachedObjectsParams.PARAM1_BOOL.param1;
  827. break;
  828. }
  829. //---------------------------------------------------------------
  830. case ERPCs.DIAG_MISC_DEBUG_MONITOR:
  831. {
  832. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  833. GetGame().SetDebugMonitorEnabled(CachedObjectsParams.PARAM1_BOOL.param1);
  834. break;
  835. }
  836. //---------------------------------------------------------------
  837. // LEVEL 2 - Script > Simulate script
  838. //---------------------------------------------------------------
  839. case ERPCs.DIAG_SIMULATE_INFINITE_LOOP:
  840. {
  841. while ( true )
  842. {
  843. Print("simulating infinite loop");
  844. }
  845. break;
  846. }
  847. //---------------------------------------------------------------
  848. case ERPCs.DIAG_SIMULATE_NULL_POINTER:
  849. {
  850. PlayerBase NULL_player = null;
  851. NULL_player.SetHealth("","", -1);
  852. break;
  853. }
  854. //---------------------------------------------------------------
  855. case ERPCs.DIAG_SIMULATE_DIVISION_BY_ZERO:
  856. {
  857. int zero = 0;
  858. int division_by_zero = 1/zero;
  859. break;
  860. }
  861. //---------------------------------------------------------------
  862. case ERPCs.DIAG_SIMULATE_ERROR_FUNCTION:
  863. {
  864. ErrorEx("Simulated error");
  865. break;
  866. }
  867. //---------------------------------------------------------------
  868. // LEVEL 2 - Script > Weapon
  869. //---------------------------------------------------------------
  870. case ERPCs.DIAG_WEAPON_PARTICLES:
  871. {
  872. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  873. PrtTest.m_GunParticlesState = CachedObjectsParams.PARAM1_BOOL.param1;
  874. break;
  875. }
  876. //---------------------------------------------------------------
  877. case ERPCs.DIAG_WEAPON_RECOIL:
  878. {
  879. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  880. player.GetAimingModel().SetProceduralRecoilEnabled(CachedObjectsParams.PARAM1_BOOL.param1);
  881. break;
  882. }
  883. //---------------------------------------------------------------
  884. case ERPCs.DIAG_WEAPON_BURST_VERSION:
  885. {
  886. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  887. player.GetWeaponManager().SetBurstOption(CachedObjectsParams.PARAM1_INT.param1);
  888. break;
  889. }
  890. //---------------------------------------------------------------
  891. // LEVEL 2 - Script > Bleeding
  892. //---------------------------------------------------------------
  893. case ERPCs.DIAG_BLEEDING_DISABLE_BLOOD_LOSS:
  894. {
  895. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  896. player.GetBleedingManagerServer().SetBloodLoss(CachedObjectsParams.PARAM1_BOOL.param1);
  897. break;
  898. }
  899. //---------------------------------------------------------------
  900. case ERPCs.DIAG_BLEEDING_ACTIVATE_SOURCE:
  901. {
  902. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  903. player.GetBleedingManagerServer().DebugActivateBleedingSource(CachedObjectsParams.PARAM1_INT.param1);
  904. break;
  905. }
  906. //---------------------------------------------------------------
  907. case ERPCs.DIAG_BLEEDING_ACTIVATE_ALL_SOURCES:
  908. {
  909. player.GetBleedingManagerServer().ActivateAllBS();
  910. break;
  911. }
  912. //---------------------------------------------------------------
  913. // LEVEL 2 - Script > Logs
  914. //---------------------------------------------------------------
  915. case ERPCs.DIAG_LOGS_ACTIONS:
  916. {
  917. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  918. LogManager.ActionLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  919. break;
  920. }
  921. //---------------------------------------------------------------
  922. case ERPCs.DIAG_LOGS_WEAPONS:
  923. {
  924. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  925. LogManager.WeaponLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  926. break;
  927. }
  928. //---------------------------------------------------------------
  929. case ERPCs.DIAG_LOGS_SYNC:
  930. {
  931. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  932. LogManager.SyncLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  933. break;
  934. }
  935. //---------------------------------------------------------------
  936. case ERPCs.DIAG_LOGS_BASEBUILDING:
  937. {
  938. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  939. LogManager.BaseBuildingLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  940. break;
  941. }
  942. //---------------------------------------------------------------
  943. case ERPCs.DIAG_LOGS_SYMPTOMS:
  944. {
  945. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  946. LogManager.SymptomLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  947. break;
  948. }
  949. //---------------------------------------------------------------
  950. case ERPCs.DIAG_LOGS_INVENTORY_MOVE:
  951. {
  952. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  953. LogManager.InventoryMoveLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  954. break;
  955. }
  956. //---------------------------------------------------------------
  957. case ERPCs.DIAG_LOGS_INVENTORY_RESERVATION:
  958. {
  959. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  960. LogManager.InventoryReservationLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  961. break;
  962. }
  963. //---------------------------------------------------------------
  964. case ERPCs.DIAG_LOGS_INVENTORY_HFSM:
  965. {
  966. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  967. LogManager.InventoryHFSMLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  968. break;
  969. }
  970. //---------------------------------------------------------------
  971. case ERPCs.DIAG_LOGS_QUICKBAR:
  972. {
  973. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  974. LogManager.QuickbarLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  975. break;
  976. }
  977. //---------------------------------------------------------------
  978. case ERPCs.DIAG_LOGS_BLEEDING_CHANCES:
  979. {
  980. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  981. LogManager.BleedingChancesLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  982. break;
  983. }
  984. //---------------------------------------------------------------
  985. // LEVEL 2 - Script > Base Building
  986. //---------------------------------------------------------------
  987. case ERPCs.DIAG_BASEBUILDING_WOOD:
  988. {
  989. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL) && DiagMenu.GetBool(DiagMenuIDs.BASEBUILDING_WOOD) != CachedObjectsParams.PARAM1_BOOL.param1)
  990. DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_WOOD, CachedObjectsParams.PARAM1_BOOL.param1);
  991. break;
  992. }
  993. //---------------------------------------------------------------
  994. case ERPCs.DIAG_BASEBUILDING_GATE:
  995. {
  996. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL) && DiagMenu.GetBool(DiagMenuIDs.BASEBUILDING_GATE) != CachedObjectsParams.PARAM1_BOOL.param1)
  997. DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_GATE, CachedObjectsParams.PARAM1_BOOL.param1);
  998. break;
  999. }
  1000. //---------------------------------------------------------------
  1001. // LEVEL 2 - Script > Finishers
  1002. //---------------------------------------------------------------
  1003. case ERPCs.DIAG_FINISHERS_FORCE_FINISHER:
  1004. {
  1005. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  1006. player.GetMeleeCombat().DebugSetForcedFinisherType(CachedObjectsParams.PARAM1_INT.param1);
  1007. break;
  1008. }
  1009. //---------------------------------------------------------------
  1010. // LEVEL 2 - Script > Cinematic Camera Tools
  1011. //---------------------------------------------------------------
  1012. case ERPCs.DIAG_CAMERATOOLS_CAM_DATA:
  1013. {
  1014. if (!player.m_CameraToolsMenuClient)
  1015. {
  1016. player.m_CameraToolsMenuClient = new CameraToolsMenuClient();
  1017. }
  1018. player.m_CameraToolsMenuClient.OnRPC(ctx);
  1019. break;
  1020. }
  1021. //---------------------------------------------------------------
  1022. // LEVEL 2 - Script > Time Accel
  1023. //---------------------------------------------------------------
  1024. case ERPCs.DIAG_TIMEACCEL:
  1025. {
  1026. TimeAccelParam tap = new TimeAccelParam(false, 0, 0);
  1027. if (ctx.Read(tap))
  1028. {
  1029. FeatureTimeAccel.m_CurrentTimeAccel = tap;
  1030. //Print("received from " + player);
  1031. array<Man> players = new array<Man>();
  1032. GetGame().GetPlayers(players);
  1033. foreach (Man p : players)
  1034. {
  1035. if (p != player)// send to everyone except the one we receieved from
  1036. {
  1037. //Print("sending to " + p);
  1038. GetGame().RPCSingleParam( p, ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC, tap, true, p.GetIdentity());
  1039. }
  1040. }
  1041. /*
  1042. Print(" -------- TimeAccelParam -------");
  1043. Print(tap.param1);
  1044. Print(tap.param2);
  1045. Print(tap.param3);
  1046. Print(" -------------------------------");
  1047. Print(FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.UNDERGROUND_ENTRANCE));
  1048. Print(FeatureTimeAccel.GetFeatureTimeAccelValue());
  1049. Print(" ===============================");
  1050. */
  1051. }
  1052. break;
  1053. }
  1054. //---------------------------------------------------------------
  1055. case ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC:
  1056. {
  1057. TimeAccelParam tap2 = new TimeAccelParam(false, 0, 0);
  1058. if (ctx.Read(tap2))
  1059. {
  1060. int bigFactor = tap2.param2;
  1061. float smallFactor = tap2.param2 - bigFactor;
  1062. SetTimeAccelMenuState(tap2.param1, bigFactor, smallFactor, tap2.param3);
  1063. FeatureTimeAccel.m_CurrentTimeAccel = tap2;
  1064. }
  1065. break;
  1066. }
  1067. //---------------------------------------------------------------
  1068. // LEVEL 2 - Script > Vehicles
  1069. //---------------------------------------------------------------
  1070. case ERPCs.DIAG_VEHICLE_DEBUG_OUTPUT:
  1071. {
  1072. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  1073. CarScript.DEBUG_OUTPUT_TYPE = CachedObjectsParams.PARAM1_INT.param1;
  1074. break;
  1075. }
  1076. //---------------------------------------------------------------
  1077. case ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST:
  1078. {
  1079. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  1080. CrashDebugData.SendData(player);
  1081. break;
  1082. }
  1083. }
  1084. }
  1085. //---------------------------------------------
  1086. void GoUnconscious(PlayerBase player)
  1087. {
  1088. if (player.IsUnconscious())
  1089. {
  1090. player.SetHealth("", "Shock", 100);
  1091. }
  1092. else
  1093. {
  1094. player.m_UnconsciousEndTime = -60;
  1095. player.SetHealth("", "Shock", 0);
  1096. }
  1097. }
  1098. //---------------------------------------------
  1099. void InitTimeAccel()
  1100. {
  1101. FeatureTimeAccel.m_CurrentTimeAccel = GetTimeAccelMenuState();
  1102. string value;
  1103. if ( GetGame().CommandlineGetParam("timeAccel", value))
  1104. {
  1105. TStringArray params = new TStringArray();
  1106. value.Replace(" ","");
  1107. value.Split(",", params);
  1108. bool enable = params[0].ToInt();
  1109. int timeAccelBig = params[1].ToInt();
  1110. float timeAccelSmall = params[2].ToFloat();
  1111. int bitMask = params[3].ToInt();
  1112. SetTimeAccelMenuState(enable, timeAccelBig, timeAccelSmall, bitMask);
  1113. }
  1114. }
  1115. TimeAccelParam GetTimeAccelMenuState()
  1116. {
  1117. bool enable = DiagMenu.GetBool(DiagMenuIDs.FEATURE_TIME_ACCEL);
  1118. float timeAccelBig = DiagMenu.GetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1);
  1119. float timeAccelSmall = DiagMenu.GetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2);
  1120. float timeAccel = timeAccelBig + timeAccelSmall;
  1121. int bitMask = FeatureTimeAccel.GetTimeAccelBitmask();
  1122. TimeAccelParam param = new TimeAccelParam(enable, timeAccel, bitMask);
  1123. return param;
  1124. }
  1125. void SetTimeAccelMenuState(bool enable, int bigFactor, float smallFactor, int bitmask)
  1126. {
  1127. DiagMenu.SetValue(DiagMenuIDs.FEATURE_TIME_ACCEL, enable);
  1128. DiagMenu.SetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1, bigFactor);
  1129. DiagMenu.SetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2, smallFactor);
  1130. for (int i = 0; i < EnumTools.GetEnumSize(ETimeAccelCategories); ++i)
  1131. {
  1132. int bit = 1 << i;
  1133. bool on = (bit & bitmask);
  1134. DiagMenu.SetValue(FeatureTimeAccel.GetDiagIDByCategory(bit), on);
  1135. }
  1136. }
  1137. #endif
  1138. }