plugindiagmenu.c 59 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274
  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. }
  323. //---------------------------------------------------------------
  324. // LEVEL 1 - Script
  325. //---------------------------------------------------------------
  326. DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDING_MENU, "Bleeding", DiagMenuIDs.SCRIPTS_MENU);
  327. {
  328. //---------------------------------------------------------------
  329. // LEVEL 2 - Script > Bleeding
  330. //---------------------------------------------------------------
  331. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_SOURCES, "", "Show Bleeding Sources", DiagMenuIDs.BLEEDING_MENU);
  332. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_DISABLE_BLOOD_LOSS, "", "Disable Blood Loss", DiagMenuIDs.BLEEDING_MENU);
  333. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE, "", "Activate Source #", DiagMenuIDs.BLEEDING_MENU, "1, 32, 0, 1");
  334. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_ACTIVATE_ALL_SOURCES, "", "Activate All Sources", DiagMenuIDs.BLEEDING_MENU);
  335. DiagMenu.RegisterItem(DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE_LEVEL, "", "Activate Blsource Level", DiagMenuIDs.BLEEDING_MENU, "None, Low, Medium, High");
  336. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDING_RELOAD, "", "Client Reload", DiagMenuIDs.BLEEDING_MENU);
  337. DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDINGINDICATORS_MENU, "Bleeding Indication", DiagMenuIDs.BLEEDING_MENU);
  338. {
  339. //---------------------------------------------------------------
  340. // LEVEL 3 - Script > Bleeding > Bleeding Indication
  341. //---------------------------------------------------------------
  342. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS, "", "Enable BleedingIndicators", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
  343. DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS, true);
  344. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, "", "Enable Debug Overrides", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
  345. DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_USEVALUEOVERRIDES, false);
  346. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, "", "Enable Random Rotation", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
  347. DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_RANDOMROTATION, true);
  348. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_SEQUENCE_DURATION, "", "Sequence Duration", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.2, 5.0, " + BleedingIndicationConstants.SEQUENCE_DURATION_DEFAULT.ToString() + ", 0.01");
  349. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_BASEDURATION, "", "Drop Anim Duration", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 5.0, " + BleedingIndicationConstants.DROP_DURATION_LOW.ToString() + ", 0.05");
  350. 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");
  351. 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");
  352. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_PROGRESSTHRESHOLD, "", "Drop Progress Threshold", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_PROGRESS_THRESHOLD.ToString() + ", 0.05");
  353. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_STARTSIZE, "", "Drop Start Size", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_SIZE_START_LOW.ToString() + ", 0.01");
  354. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_ENDSIZE, "", "Drop End Size", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.1, 1.0, " + BleedingIndicationConstants.DROP_SIZE_END_LOW.ToString() + ", 0.01");
  355. 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");
  356. 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");
  357. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SCATTER, "", "Drop Scatter px", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 500.0, " + BleedingIndicationConstants.DROP_SCATTER_LOW.ToString() + ", 1.0");
  358. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_SLIDEDISTANCE, "", "Drop Slide Distance", DiagMenuIDs.BLEEDINGINDICATORS_MENU, "0.0, 500.0, 0, 0.1");
  359. DiagMenu.RegisterMenu(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "Color Debug", DiagMenuIDs.BLEEDINGINDICATORS_MENU);
  360. {
  361. //---------------------------------------------------------------
  362. // LEVEL 4 - Script > Bleeding > Bleeding Indication > Color Debug
  363. //---------------------------------------------------------------
  364. DiagMenu.RegisterBool(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, "", "Desaturate", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU);
  365. DiagMenu.SetValue(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION, true);
  366. 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");
  367. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_R, "", "Red", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_RED.ToString() + ", 1.0");
  368. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_G, "", "Green", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_GREEN.ToString() + ", 1.0");
  369. DiagMenu.RegisterRange(DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_B, "", "Blue", DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU, "0.0, 255.0, " + BleedingIndicationConstants.DROP_COLOR_BLUE.ToString() + ", 1.0");
  370. 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");
  371. 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");
  372. }
  373. }
  374. }
  375. //---------------------------------------------------------------
  376. // LEVEL 1 - Script
  377. //---------------------------------------------------------------
  378. DiagMenu.RegisterMenu(DiagMenuIDs.LOGS_MENU, "Logs", DiagMenuIDs.SCRIPTS_MENU);
  379. {
  380. //---------------------------------------------------------------
  381. // LEVEL 2 - Script > Logs
  382. //---------------------------------------------------------------
  383. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_ACTIONS, "", "Log Actions", DiagMenuIDs.LOGS_MENU);
  384. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_WEAPONS, "", "Log Weapons", DiagMenuIDs.LOGS_MENU);
  385. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_SYNC, "", "Log Sync", DiagMenuIDs.LOGS_MENU);
  386. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_BASEBUILDING, "", "Log Base building", DiagMenuIDs.LOGS_MENU);
  387. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_QUICKBAR, "", "Log Quickbar", DiagMenuIDs.LOGS_MENU);
  388. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_SYMPTOMS, "", "Log Symptoms", DiagMenuIDs.LOGS_MENU);
  389. DiagMenu.RegisterMenu(DiagMenuIDs.LOGS_INVENTORY_MENU, "Inventory Logs", DiagMenuIDs.LOGS_MENU);
  390. {
  391. //---------------------------------------------------------------
  392. // LEVEL 3 - Script > Logs > InventoryLogs
  393. //---------------------------------------------------------------
  394. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_MOVE, "", "Log Items move", DiagMenuIDs.LOGS_INVENTORY_MENU);
  395. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_RESERVATION, "", "Log Reservations", DiagMenuIDs.LOGS_INVENTORY_MENU);
  396. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_INVENTORY_HFSM, "", "Log HandFSM", DiagMenuIDs.LOGS_INVENTORY_MENU);
  397. }
  398. DiagMenu.RegisterBool(DiagMenuIDs.LOGS_BLEEDING_CHANCES, "", "Bleeding Chances Logs", DiagMenuIDs.LOGS_MENU);
  399. }
  400. //---------------------------------------------------------------
  401. // LEVEL 1 - Script
  402. //---------------------------------------------------------------
  403. DiagMenu.RegisterMenu(DiagMenuIDs.TRIGGER_MENU, "Triggers", DiagMenuIDs.SCRIPTS_MENU);
  404. {
  405. //---------------------------------------------------------------
  406. // LEVEL 2 - Script > Triggers
  407. //---------------------------------------------------------------
  408. DiagMenu.RegisterBool(DiagMenuIDs.TRIGGER_DEBUG, "", "Show Triggers", DiagMenuIDs.TRIGGER_MENU);
  409. DiagMenu.RegisterBool(DiagMenuIDs.TRIGGER_PLAYER_DEBUG, "", "Show Player Touch", DiagMenuIDs.TRIGGER_MENU);
  410. #ifdef TRIGGER_DEBUG_BASIC
  411. DiagMenu.SetValue(DiagMenuIDs.TRIGGER_DEBUG, true);
  412. DiagMenu.SetValue(DiagMenuIDs.TRIGGER_PLAYER_DEBUG, true);
  413. #endif
  414. }
  415. //---------------------------------------------------------------
  416. // LEVEL 1 - Script
  417. //---------------------------------------------------------------
  418. DiagMenu.RegisterMenu(DiagMenuIDs.BASEBUILDING_MENU, "Base Building", DiagMenuIDs.SCRIPTS_MENU);
  419. {
  420. //---------------------------------------------------------------
  421. // LEVEL 2 - Script > Base Building
  422. //---------------------------------------------------------------
  423. DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_WOOD, "", "Spawn uses wood/metal", DiagMenuIDs.BASEBUILDING_MENU);
  424. DiagMenu.RegisterBool(DiagMenuIDs.BASEBUILDING_GATE, "", "Spawn Fence makes gate", DiagMenuIDs.BASEBUILDING_MENU);
  425. }
  426. //---------------------------------------------------------------
  427. // LEVEL 1 - Script
  428. //---------------------------------------------------------------
  429. DiagMenu.RegisterMenu(DiagMenuIDs.UNDERGROUND_MENU, "Underground Areas", DiagMenuIDs.SCRIPTS_MENU);
  430. {
  431. //---------------------------------------------------------------
  432. // LEVEL 2 - Script > Underground Areas
  433. //---------------------------------------------------------------
  434. DiagMenu.RegisterBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB, "", "Show Breadcrumbs", DiagMenuIDs.UNDERGROUND_MENU);
  435. DiagMenu.RegisterBool(DiagMenuIDs.UNDERGROUND_DISABLE_DARKENING, "lctrl+f", "Disable Darkening", DiagMenuIDs.UNDERGROUND_MENU);
  436. }
  437. //---------------------------------------------------------------
  438. // LEVEL 1 - Script
  439. //---------------------------------------------------------------
  440. DiagMenu.RegisterMenu(DiagMenuIDs.FINISHERS_MENU, "Finishers", DiagMenuIDs.SCRIPTS_MENU);
  441. {
  442. //---------------------------------------------------------------
  443. // LEVEL 2 - Script > Finishers
  444. //---------------------------------------------------------------
  445. DiagMenu.RegisterItem(DiagMenuIDs.FINISHERS_FINISHER_FORCED, "", "Forced Finisher: ", DiagMenuIDs.FINISHERS_MENU, "None,Liver,Neck");
  446. }
  447. //---------------------------------------------------------------
  448. // LEVEL 1 - Script
  449. //---------------------------------------------------------------
  450. DiagMenu.RegisterMenu(DiagMenuIDs.SOUNDS_MENU, "Script Sounds", DiagMenuIDs.SCRIPTS_MENU);
  451. {
  452. //---------------------------------------------------------------
  453. // LEVEL 2 - Script > Script Sounds
  454. //---------------------------------------------------------------
  455. DiagMenu.RegisterBool(DiagMenuIDs.SOUNDS_ITEM_IMPACT_SOUNDS, "", "Item impact sounds", DiagMenuIDs.SOUNDS_MENU);
  456. DiagMenu.RegisterBool(DiagMenuIDs.SOUNDS_DYNAMIC_MUSIC_PLAYER_STATS, "", "Dynamic Music Player stats", DiagMenuIDs.SOUNDS_MENU);
  457. }
  458. //---------------------------------------------------------------
  459. // LEVEL 1 - Script
  460. //---------------------------------------------------------------
  461. DiagMenu.RegisterMenu(DiagMenuIDs.CAMERATOOLS_MENU, "Cinematic Camera Tools", DiagMenuIDs.SCRIPTS_MENU);
  462. {
  463. //---------------------------------------------------------------
  464. // LEVEL 2 - Script > Cinematic Camera Tools
  465. //---------------------------------------------------------------
  466. DiagMenu.RegisterBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA, "", "Show remote camera", DiagMenuIDs.CAMERATOOLS_MENU);
  467. DiagMenu.RegisterBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA_BROADCAST, "", "Broadcast camera", DiagMenuIDs.CAMERATOOLS_MENU);
  468. }
  469. //---------------------------------------------------------------
  470. // LEVEL 1 - Script
  471. //---------------------------------------------------------------
  472. DiagMenu.RegisterMenu(DiagMenuIDs.FEATURE_TIME_ACCEL_MENU, "Time Accel", DiagMenuIDs.SCRIPTS_MENU);
  473. {
  474. //---------------------------------------------------------------
  475. // LEVEL 2 - Script > Time Accel
  476. //---------------------------------------------------------------
  477. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL, "lalt+0", "Apply Time Accel", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  478. DiagMenu.RegisterRange(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1, "", "Accel Factor Big", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU,"0,100,1,1");
  479. DiagMenu.RegisterRange(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2, "", "Accel Factor Small", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU,"0,0.95 ,0,0.05");
  480. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_UG_ENTRANCES, "", "Underground Entrances", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  481. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_UG_RESERVOIR, "", "Underground Reservoir", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  482. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_ENERGY_CONSUME, "", "Energy Consumption", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  483. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_ENERGY_RECHARGE, "", "Energy Recharge", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  484. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_FOOD_DECAY, "", "Decay", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  485. DiagMenu.RegisterBool(DiagMenuIDs.FEATURE_TIME_ACCEL_DYNAMIC_MUSIC_PLAYER, "", "Dynamic Music Player", DiagMenuIDs.FEATURE_TIME_ACCEL_MENU);
  486. }
  487. //---------------------------------------------------------------
  488. // LEVEL 1 - Script
  489. //---------------------------------------------------------------
  490. DiagMenu.RegisterMenu(DiagMenuIDs.MATERIALDIAG_MENU, "Materials Diag", DiagMenuIDs.SCRIPTS_MENU);
  491. {
  492. //---------------------------------------------------------------
  493. // LEVEL 2 - Script > Material Diag
  494. //---------------------------------------------------------------
  495. DiagMenu.RegisterBool(DiagMenuIDs.MATERIALDIAG_GHOSTPP, "", "Ghost PP", DiagMenuIDs.MATERIALDIAG_MENU);
  496. }
  497. }
  498. }
  499. //---------------------------------------------
  500. protected int GetModdedDiagID()
  501. {
  502. return ++m_ModdedDiagID;
  503. }
  504. //---------------------------------------------
  505. protected int GetModdedRootMenu()
  506. {
  507. return DiagMenuIDs.MODDED_MENU;
  508. }
  509. //---------------------------------------------
  510. protected void RegisterModdedDiagsIDs();
  511. //---------------------------------------------
  512. protected void RegisterModdedDiags()
  513. {
  514. DiagMenu.RegisterMenu(DiagMenuIDs.MODDED_MENU, "Script - Modded", -1);
  515. }
  516. //---------------------------------------------
  517. void OnRPC(PlayerBase player, int rpc_type, ParamsReadContext ctx)
  518. {
  519. EntityAI parent;
  520. Class.CastTo(parent, player.GetParent());
  521. switch (rpc_type)
  522. {
  523. //---------------------------------------------------------------
  524. // Misc, multipurpose
  525. //---------------------------------------------------------------
  526. case ERPCs.DIAG_ITEM_DEBUG_ACTIONS:
  527. {
  528. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  529. ItemBase.SetDebugActionsMask(CachedObjectsParams.PARAM1_INT.param1);
  530. break;
  531. }
  532. //---------------------------------------------------------------
  533. // LEVEL 2 - Script > Player States
  534. //---------------------------------------------------------------
  535. case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_ON:
  536. case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_OFF:
  537. case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG:
  538. {
  539. if (player.GetSymptomManager())
  540. {
  541. player.GetSymptomManager().OnRPCDebug(rpc_type, ctx);
  542. }
  543. break;
  544. }
  545. //---------------------------------------------------------------
  546. // LEVEL 2 - Script > Crafting
  547. //---------------------------------------------------------------
  548. case ERPCs.DIAG_CRAFTING_INSTANT:
  549. {
  550. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  551. {
  552. PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
  553. pluginRecipesManager.SetEnableDebugCrafting(CachedObjectsParams.PARAM1_INT.param1);
  554. }
  555. break;
  556. }
  557. //---------------------------------------------------------------
  558. // LEVEL 2 - Script > Cheats
  559. //---------------------------------------------------------------
  560. case ERPCs.DIAG_CHEATS_MODIFIERS:
  561. {
  562. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  563. player.SetModifiers(CachedObjectsParams.PARAM1_INT.param1);
  564. break;
  565. }
  566. //---------------------------------------------------------------
  567. case ERPCs.DIAG_CHEATS_KILL_PLAYER:
  568. {
  569. player.SetHealth("","", -1);
  570. break;
  571. }
  572. //---------------------------------------------------------------
  573. case ERPCs.DIAG_CHEATS_INVINCIBILITY:
  574. {
  575. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  576. {
  577. switch (CachedObjectsParams.PARAM1_INT.param1)
  578. {
  579. case 0:
  580. {
  581. if (parent)
  582. {
  583. parent.SetAllowDamage(true);
  584. parent.SetCanBeDestroyed(true);
  585. }
  586. player.SetAllowDamage(true);
  587. player.SetCanBeDestroyed(true);
  588. break;
  589. }
  590. case 1:
  591. {
  592. if (parent)
  593. {
  594. parent.SetAllowDamage(true);
  595. parent.SetCanBeDestroyed(false);
  596. }
  597. player.SetAllowDamage(true);
  598. player.SetCanBeDestroyed(false);
  599. break;
  600. }
  601. case 2:
  602. {
  603. if (parent)
  604. {
  605. parent.SetAllowDamage(false);
  606. }
  607. player.SetAllowDamage(false);
  608. break;
  609. }
  610. }
  611. break;
  612. }
  613. }
  614. //---------------------------------------------------------------
  615. case ERPCs.DIAG_CHEATS_DISABLE_STAMINA:
  616. {
  617. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  618. player.SetStaminaDisabled(CachedObjectsParams.PARAM1_BOOL.param1);
  619. break;
  620. }
  621. //---------------------------------------------------------------
  622. case ERPCs.DIAG_CHEATS_RESET_PLAYER:
  623. {
  624. player.ResetPlayer(false);
  625. break;
  626. }
  627. //---------------------------------------------------------------
  628. case ERPCs.DIAG_CHEATS_RESET_PLAYER_MAX:
  629. {
  630. player.ResetPlayer(true);
  631. break;
  632. }
  633. //---------------------------------------------------------------
  634. case ERPCs.DIAG_CHEATS_INVENTORY_ACCESS:
  635. {
  636. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  637. player.DEBUG_INVENTORY_ACCESS = CachedObjectsParams.PARAM1_INT.param1;
  638. break;
  639. }
  640. //---------------------------------------------------------------
  641. case ERPCs.DIAG_CHEATS_ITEMS_FIX:
  642. {
  643. player.FixAllInventoryItems();
  644. break;
  645. }
  646. //---------------------------------------------------------------
  647. //---------------------------DAMAGE DEBUG------------------------
  648. // 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
  649. case ERPCs.DIAG_CHEATS_CREATE_HIT:
  650. {
  651. player.ProcessDirectDamage(DamageType.CUSTOM, player, "", "Dummy_Heavy", "0 0 0");
  652. break;
  653. }
  654. case ERPCs.DIAG_CHEATS_CREATE_HIT_LIGHT:
  655. {
  656. player.ProcessDirectDamage(DamageType.CUSTOM, player, "", "MeleeFist", "0 0 0");
  657. break;
  658. }
  659. //---------------------------------------------------------------
  660. // LEVEL 2 - Script > Soft Skills
  661. //---------------------------------------------------------------
  662. case ERPCs.DIAG_SOFT_SKILLS_SHOW_DEBUG:
  663. {
  664. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  665. {
  666. if (CachedObjectsParams.PARAM1_BOOL.param1)
  667. {
  668. player.GetSoftSkillsManager().StartSynchTimer();
  669. }
  670. else
  671. {
  672. player.GetSoftSkillsManager().StopSynchTimer();
  673. player.GetSoftSkillsManager().ResetDebugWindow();
  674. }
  675. }
  676. break;
  677. }
  678. //---------------------------------------------------------------
  679. case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_STATE:
  680. {
  681. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  682. player.GetSoftSkillsManager().SetSoftSkillsState(CachedObjectsParams.PARAM1_BOOL.param1);
  683. break;
  684. }
  685. //---------------------------------------------------------------
  686. case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_MODEL:
  687. {
  688. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  689. player.GetSoftSkillsManager().SetLinearState(CachedObjectsParams.PARAM1_BOOL.param1) ;
  690. break;
  691. }
  692. //---------------------------------------------------------------
  693. case ERPCs.DIAG_SOFT_SKILLS_SPECIALTY_VALUE:
  694. {
  695. if (ctx.Read(CachedObjectsParams.PARAM1_FLOAT))
  696. {
  697. SoftSkillsManager softSkillsMngr = player.GetSoftSkillsManager();
  698. softSkillsMngr.SetSpecialtyLevel(CachedObjectsParams.PARAM1_FLOAT.param1);
  699. softSkillsMngr.SynchSpecialtyLevel();
  700. player.GetStatSpecialty().Set(CachedObjectsParams.PARAM1_FLOAT.param1);
  701. }
  702. break;
  703. }
  704. //---------------------------------------------------------------
  705. // LEVEL 2 - Script > Lifespan
  706. //---------------------------------------------------------------
  707. case ERPCs.DIAG_LIFESPAN_BLOODY_HANDS:
  708. {
  709. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  710. {
  711. PluginLifespan pluginLifespan = PluginLifespan.Cast(GetPlugin(PluginLifespan));
  712. pluginLifespan.UpdateBloodyHandsVisibility(player, CachedObjectsParams.PARAM1_BOOL.param1);
  713. player.SetBloodyHandsPenaltyChancePerAgent(eAgents.SALMONELLA, 0.75);
  714. }
  715. else
  716. player.ClearBloodyHandsPenaltyChancePerAgent(eAgents.SALMONELLA);
  717. break;
  718. }
  719. //---------------------------------------------------------------
  720. case ERPCs.DIAG_LIFESPAN_PLAYTIME_UPDATE:
  721. {
  722. if (ctx.Read( CachedObjectsParams.PARAM1_FLOAT))
  723. {
  724. //reset playtime
  725. player.StatUpdate(AnalyticsManagerServer.STAT_PLAYTIME, player.StatGet(AnalyticsManagerServer.STAT_PLAYTIME) * -1);
  726. //set new playtime
  727. player.StatUpdate(AnalyticsManagerServer.STAT_PLAYTIME, CachedObjectsParams.PARAM1_FLOAT.param1 );
  728. player.SetLastShavedSeconds(0);
  729. //update lifespan
  730. PluginLifespan pluginLifespann = PluginLifespan.Cast(GetPlugin(PluginLifespan));
  731. pluginLifespann.ChangeFakePlaytime( player, CachedObjectsParams.PARAM1_FLOAT.param1 );
  732. pluginLifespann.UpdateLifespan(player, true);
  733. }
  734. break;
  735. }
  736. //---------------------------------------------------------------
  737. // LEVEL 2 - Script > Misc
  738. //---------------------------------------------------------------
  739. case ERPCs.DIAG_MISC_LOG_PLAYER_STATS:
  740. {
  741. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  742. player.GetPlayerStats().SetAllowLogs(CachedObjectsParams.PARAM1_BOOL.param1);
  743. break;
  744. }
  745. //---------------------------------------------------------------
  746. //---------------------------------------------------------------
  747. // LEVEL 2 - Script > Misc -> Environment
  748. //---------------------------------------------------------------
  749. case ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG:
  750. {
  751. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  752. {
  753. if (player.m_Environment)
  754. player.m_Environment.m_Debug = CachedObjectsParams.PARAM1_BOOL.param1;
  755. }
  756. break;
  757. }
  758. case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_DRYWET:
  759. {
  760. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  761. {
  762. if (player.m_Environment)
  763. player.m_Environment.m_DebugLogDryWet = CachedObjectsParams.PARAM1_BOOL.param1;
  764. }
  765. break;
  766. }
  767. case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_ITEMHEAT:
  768. {
  769. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  770. {
  771. if (player.m_Environment)
  772. player.m_Environment.m_DebugLogItemHeat = CachedObjectsParams.PARAM1_BOOL.param1;
  773. }
  774. break;
  775. }
  776. //---------------------------------------------------------------
  777. // LEVEL 2 - Script > Misc
  778. //---------------------------------------------------------------
  779. case ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG:
  780. {
  781. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  782. {
  783. if (player.GetFallDamage())
  784. player.GetFallDamage().m_Debug = CachedObjectsParams.PARAM1_BOOL.param1;
  785. }
  786. break;
  787. }
  788. //---------------------------------------------------------------
  789. case ERPCs.DIAG_MISC_GO_UNCONSCIOUS:
  790. {
  791. GoUnconscious(player);
  792. break;
  793. }
  794. //---------------------------------------------------------------
  795. case ERPCs.DIAG_MISC_GO_UNCONSCIOUS_DELAYED:
  796. {
  797. GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GoUnconscious, 10000, false, player);
  798. break;
  799. }
  800. //---------------------------------------------------------------
  801. case ERPCs.DIAG_MISC_QUICK_RESTRAIN:
  802. {
  803. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  804. player.SetQuickRestrain(CachedObjectsParams.PARAM1_BOOL.param1);
  805. break;
  806. }
  807. //---------------------------------------------------------------
  808. // LEVEL 3 - Script > Misc > Hair Hiding
  809. //---------------------------------------------------------------
  810. case ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE:
  811. {
  812. if (ctx.Read(CachedObjectsParams.PARAM2_INT_INT))
  813. {
  814. player.SetHairLevelToHide(CachedObjectsParams.PARAM2_INT_INT.param1, CachedObjectsParams.PARAM2_INT_INT.param2, true);
  815. player.UpdateHairSelectionVisibility(true);
  816. }
  817. break;
  818. }
  819. //---------------------------------------------------------------
  820. // LEVEL 2 - Script > Misc
  821. //---------------------------------------------------------------
  822. case ERPCs.DIAG_MISC_QUICK_FISHING:
  823. {
  824. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  825. player.SetQuickFishing(CachedObjectsParams.PARAM1_BOOL.param1);
  826. break;
  827. }
  828. //---------------------------------------------------------------
  829. case ERPCs.DIAG_MISC_TARGETABLE_BY_AI:
  830. {
  831. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  832. player.m_CanBeTargetedDebug = CachedObjectsParams.PARAM1_BOOL.param1;
  833. break;
  834. }
  835. //---------------------------------------------------------------
  836. case ERPCs.DIAG_MISC_DEBUG_MONITOR:
  837. {
  838. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  839. GetGame().SetDebugMonitorEnabled(CachedObjectsParams.PARAM1_BOOL.param1);
  840. break;
  841. }
  842. //---------------------------------------------------------------
  843. // LEVEL 2 - Script > Simulate script
  844. //---------------------------------------------------------------
  845. case ERPCs.DIAG_SIMULATE_INFINITE_LOOP:
  846. {
  847. while ( true )
  848. {
  849. Print("simulating infinite loop");
  850. }
  851. break;
  852. }
  853. //---------------------------------------------------------------
  854. case ERPCs.DIAG_SIMULATE_NULL_POINTER:
  855. {
  856. PlayerBase NULL_player = null;
  857. NULL_player.SetHealth("","", -1);
  858. break;
  859. }
  860. //---------------------------------------------------------------
  861. case ERPCs.DIAG_SIMULATE_DIVISION_BY_ZERO:
  862. {
  863. int zero = 0;
  864. int division_by_zero = 1/zero;
  865. break;
  866. }
  867. //---------------------------------------------------------------
  868. case ERPCs.DIAG_SIMULATE_ERROR_FUNCTION:
  869. {
  870. ErrorEx("Simulated error");
  871. break;
  872. }
  873. //---------------------------------------------------------------
  874. // LEVEL 2 - Script > Weapon
  875. //---------------------------------------------------------------
  876. case ERPCs.DIAG_WEAPON_PARTICLES:
  877. {
  878. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  879. PrtTest.m_GunParticlesState = CachedObjectsParams.PARAM1_BOOL.param1;
  880. break;
  881. }
  882. //---------------------------------------------------------------
  883. case ERPCs.DIAG_WEAPON_RECOIL:
  884. {
  885. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  886. player.GetAimingModel().SetProceduralRecoilEnabled(CachedObjectsParams.PARAM1_BOOL.param1);
  887. break;
  888. }
  889. //---------------------------------------------------------------
  890. case ERPCs.DIAG_WEAPON_BURST_VERSION:
  891. {
  892. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  893. player.GetWeaponManager().SetBurstOption(CachedObjectsParams.PARAM1_INT.param1);
  894. break;
  895. }
  896. //---------------------------------------------------------------
  897. // LEVEL 2 - Script > Bleeding
  898. //---------------------------------------------------------------
  899. case ERPCs.DIAG_BLEEDING_DISABLE_BLOOD_LOSS:
  900. {
  901. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  902. player.GetBleedingManagerServer().SetBloodLoss(CachedObjectsParams.PARAM1_BOOL.param1);
  903. break;
  904. }
  905. //---------------------------------------------------------------
  906. case ERPCs.DIAG_BLEEDING_ACTIVATE_SOURCE:
  907. {
  908. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  909. player.GetBleedingManagerServer().DebugActivateBleedingSource(CachedObjectsParams.PARAM1_INT.param1);
  910. break;
  911. }
  912. //---------------------------------------------------------------
  913. case ERPCs.DIAG_BLEEDING_ACTIVATE_ALL_SOURCES:
  914. {
  915. player.GetBleedingManagerServer().ActivateAllBS();
  916. break;
  917. }
  918. //---------------------------------------------------------------
  919. // LEVEL 2 - Script > Logs
  920. //---------------------------------------------------------------
  921. case ERPCs.DIAG_LOGS_ACTIONS:
  922. {
  923. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  924. LogManager.ActionLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  925. break;
  926. }
  927. //---------------------------------------------------------------
  928. case ERPCs.DIAG_LOGS_WEAPONS:
  929. {
  930. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  931. LogManager.WeaponLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  932. break;
  933. }
  934. //---------------------------------------------------------------
  935. case ERPCs.DIAG_LOGS_SYNC:
  936. {
  937. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  938. LogManager.SyncLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  939. break;
  940. }
  941. //---------------------------------------------------------------
  942. case ERPCs.DIAG_LOGS_BASEBUILDING:
  943. {
  944. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  945. LogManager.BaseBuildingLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  946. break;
  947. }
  948. //---------------------------------------------------------------
  949. case ERPCs.DIAG_LOGS_SYMPTOMS:
  950. {
  951. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  952. LogManager.SymptomLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  953. break;
  954. }
  955. //---------------------------------------------------------------
  956. case ERPCs.DIAG_LOGS_INVENTORY_MOVE:
  957. {
  958. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  959. LogManager.InventoryMoveLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  960. break;
  961. }
  962. //---------------------------------------------------------------
  963. case ERPCs.DIAG_LOGS_INVENTORY_RESERVATION:
  964. {
  965. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  966. LogManager.InventoryReservationLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  967. break;
  968. }
  969. //---------------------------------------------------------------
  970. case ERPCs.DIAG_LOGS_INVENTORY_HFSM:
  971. {
  972. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  973. LogManager.InventoryHFSMLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  974. break;
  975. }
  976. //---------------------------------------------------------------
  977. case ERPCs.DIAG_LOGS_QUICKBAR:
  978. {
  979. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  980. LogManager.QuickbarLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  981. break;
  982. }
  983. //---------------------------------------------------------------
  984. case ERPCs.DIAG_LOGS_BLEEDING_CHANCES:
  985. {
  986. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  987. LogManager.BleedingChancesLogEnable(CachedObjectsParams.PARAM1_BOOL.param1);
  988. break;
  989. }
  990. //---------------------------------------------------------------
  991. // LEVEL 2 - Script > Base Building
  992. //---------------------------------------------------------------
  993. case ERPCs.DIAG_BASEBUILDING_WOOD:
  994. {
  995. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL) && DiagMenu.GetBool(DiagMenuIDs.BASEBUILDING_WOOD) != CachedObjectsParams.PARAM1_BOOL.param1)
  996. DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_WOOD, CachedObjectsParams.PARAM1_BOOL.param1);
  997. break;
  998. }
  999. //---------------------------------------------------------------
  1000. case ERPCs.DIAG_BASEBUILDING_GATE:
  1001. {
  1002. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL) && DiagMenu.GetBool(DiagMenuIDs.BASEBUILDING_GATE) != CachedObjectsParams.PARAM1_BOOL.param1)
  1003. DiagMenu.SetValue(DiagMenuIDs.BASEBUILDING_GATE, CachedObjectsParams.PARAM1_BOOL.param1);
  1004. break;
  1005. }
  1006. //---------------------------------------------------------------
  1007. // LEVEL 2 - Script > Finishers
  1008. //---------------------------------------------------------------
  1009. case ERPCs.DIAG_FINISHERS_FORCE_FINISHER:
  1010. {
  1011. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  1012. player.GetMeleeCombat().DebugSetForcedFinisherType(CachedObjectsParams.PARAM1_INT.param1);
  1013. break;
  1014. }
  1015. //---------------------------------------------------------------
  1016. // LEVEL 2 - Script > Cinematic Camera Tools
  1017. //---------------------------------------------------------------
  1018. case ERPCs.DIAG_CAMERATOOLS_CAM_DATA:
  1019. {
  1020. if (!player.m_CameraToolsMenuClient)
  1021. {
  1022. player.m_CameraToolsMenuClient = new CameraToolsMenuClient();
  1023. }
  1024. player.m_CameraToolsMenuClient.OnRPC(ctx);
  1025. break;
  1026. }
  1027. //---------------------------------------------------------------
  1028. // LEVEL 2 - Script > Time Accel
  1029. //---------------------------------------------------------------
  1030. case ERPCs.DIAG_TIMEACCEL:
  1031. {
  1032. TimeAccelParam tap = new TimeAccelParam(false, 0, 0);
  1033. if (ctx.Read(tap))
  1034. {
  1035. FeatureTimeAccel.m_CurrentTimeAccel = tap;
  1036. //Print("received from " + player);
  1037. array<Man> players = new array<Man>();
  1038. GetGame().GetPlayers(players);
  1039. foreach (Man p : players)
  1040. {
  1041. if (p != player)// send to everyone except the one we receieved from
  1042. {
  1043. //Print("sending to " + p);
  1044. GetGame().RPCSingleParam( p, ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC, tap, true, p.GetIdentity());
  1045. }
  1046. }
  1047. /*
  1048. Print(" -------- TimeAccelParam -------");
  1049. Print(tap.param1);
  1050. Print(tap.param2);
  1051. Print(tap.param3);
  1052. Print(" -------------------------------");
  1053. Print(FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.UNDERGROUND_ENTRANCE));
  1054. Print(FeatureTimeAccel.GetFeatureTimeAccelValue());
  1055. Print(" ===============================");
  1056. */
  1057. }
  1058. break;
  1059. }
  1060. //---------------------------------------------------------------
  1061. case ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC:
  1062. {
  1063. TimeAccelParam tap2 = new TimeAccelParam(false, 0, 0);
  1064. if (ctx.Read(tap2))
  1065. {
  1066. int bigFactor = tap2.param2;
  1067. float smallFactor = tap2.param2 - bigFactor;
  1068. SetTimeAccelMenuState(tap2.param1, bigFactor, smallFactor, tap2.param3);
  1069. FeatureTimeAccel.m_CurrentTimeAccel = tap2;
  1070. }
  1071. break;
  1072. }
  1073. //---------------------------------------------------------------
  1074. // LEVEL 2 - Script > Vehicles
  1075. //---------------------------------------------------------------
  1076. case ERPCs.DIAG_VEHICLE_DEBUG_OUTPUT:
  1077. {
  1078. if (ctx.Read(CachedObjectsParams.PARAM1_INT))
  1079. CarScript.DEBUG_OUTPUT_TYPE = CachedObjectsParams.PARAM1_INT.param1;
  1080. break;
  1081. }
  1082. //---------------------------------------------------------------
  1083. case ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST:
  1084. {
  1085. if (ctx.Read(CachedObjectsParams.PARAM1_BOOL))
  1086. CrashDebugData.SendData(player);
  1087. break;
  1088. }
  1089. }
  1090. }
  1091. //---------------------------------------------
  1092. void GoUnconscious(PlayerBase player)
  1093. {
  1094. if (player.IsUnconscious())
  1095. {
  1096. player.SetHealth("", "Shock", 100);
  1097. }
  1098. else
  1099. {
  1100. player.m_UnconsciousEndTime = -60;
  1101. player.SetHealth("", "Shock", 0);
  1102. }
  1103. }
  1104. //---------------------------------------------
  1105. void InitTimeAccel()
  1106. {
  1107. FeatureTimeAccel.m_CurrentTimeAccel = GetTimeAccelMenuState();
  1108. string value;
  1109. if ( GetGame().CommandlineGetParam("timeAccel", value))
  1110. {
  1111. TStringArray params = new TStringArray();
  1112. value.Replace(" ","");
  1113. value.Split(",", params);
  1114. bool enable = params[0].ToInt();
  1115. int timeAccelBig = params[1].ToInt();
  1116. float timeAccelSmall = params[2].ToFloat();
  1117. int bitMask = params[3].ToInt();
  1118. SetTimeAccelMenuState(enable, timeAccelBig, timeAccelSmall, bitMask);
  1119. }
  1120. }
  1121. TimeAccelParam GetTimeAccelMenuState()
  1122. {
  1123. bool enable = DiagMenu.GetBool(DiagMenuIDs.FEATURE_TIME_ACCEL);
  1124. float timeAccelBig = DiagMenu.GetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1);
  1125. float timeAccelSmall = DiagMenu.GetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2);
  1126. float timeAccel = timeAccelBig + timeAccelSmall;
  1127. int bitMask = FeatureTimeAccel.GetTimeAccelBitmask();
  1128. TimeAccelParam param = new TimeAccelParam(enable, timeAccel, bitMask);
  1129. return param;
  1130. }
  1131. void SetTimeAccelMenuState(bool enable, int bigFactor, float smallFactor, int bitmask)
  1132. {
  1133. DiagMenu.SetValue(DiagMenuIDs.FEATURE_TIME_ACCEL, enable);
  1134. DiagMenu.SetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE1, bigFactor);
  1135. DiagMenu.SetRangeValue(DiagMenuIDs.FEATURE_TIME_ACCEL_VALUE2, smallFactor);
  1136. for (int i = 0; i < EnumTools.GetEnumSize(ETimeAccelCategories); ++i)
  1137. {
  1138. int bit = 1 << i;
  1139. bool on = (bit & bitmask);
  1140. DiagMenu.SetValue(FeatureTimeAccel.GetDiagIDByCategory(bit), on);
  1141. }
  1142. }
  1143. #endif
  1144. }