plugindiagmenu.c 59 KB

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