38 int m_TotalHairLevelsAdjusted;
46 g_Game.ConfigGetTextArray(
"cfgVehicles Head_Default simpleHiddenSelections", m_HairSelectionArray);
47 m_TotalHairLevelsAdjusted = m_HairSelectionArray.Count() - 1;
48 for (
int i = 0; i < m_HairSelectionArray.Count(); ++i)
50 m_HairHidingStateMap.Insert(i, 1);
65 protected void RegisterDiags()
67 RegisterDeveloperDiags();
68 RegisterModdedDiagsIDs();
69 RegisterModdedDiags();
77 private void RegisterDeveloperDiags()
199#ifdef DIAG_MISC_ACTION_ON_CURSOR
248 DiagMenu.RegisterRange(
DiagMenuIDs.MISC_HAIR_LEVEL,
"",
"Hair Level#",
DiagMenuIDs.MISC_HAIR_MENU,
string.Format(
"0,%1,0,1", m_TotalHairLevelsAdjusted));
271 DiagMenu.RegisterRange(
DiagMenuIDs.MISC_HIT_INDICATION_SPAWN_HIT_DIRECTION,
"",
"Spawn Hit Direction",
DiagMenuIDs.MISC_HIT_INDICATION_MENU,
"0, 359, 0, 1");
275 DiagMenu.RegisterRange(
DiagMenuIDs.MISC_HIT_INDICATION_DURATION,
"",
"Hit Duration Max",
DiagMenuIDs.MISC_HIT_INDICATION_MENU,
"0.1, 5.0, 1.0, 0.1");
276 DiagMenu.RegisterRange(
DiagMenuIDs.MISC_HIT_INDICATION_BREAKPOINT,
"",
"Hit Breakpoint",
DiagMenuIDs.MISC_HIT_INDICATION_MENU,
"0.0, 1.0, 0.8, 0.05");
277 DiagMenu.RegisterRange(
DiagMenuIDs.MISC_HIT_INDICATION_DISTANCE,
"",
"Distance Adjust",
DiagMenuIDs.MISC_HIT_INDICATION_MENU,
"0.0, 1.0, 0.0, 0.01");
350 DiagMenu.RegisterItem(
DiagMenuIDs.WEAPON_FORCEALLOW_OBSTRUCTION,
"",
"Force Allow Obstruction",
DiagMenuIDs.WEAPON_MENU,
"off,conditional,always,alwaysDynamic,neverStatic,alwaysDynamicNeverStatic,neverEver");
366 DiagMenu.RegisterItem(
DiagMenuIDs.BLEEDING_ACTIVATE_SOURCE_LEVEL,
"",
"Activate Blsource Level",
DiagMenuIDs.BLEEDING_MENU,
"None, Low, Medium, High");
389 DiagMenu.RegisterRange(
DiagMenuIDs.BLEEDINGINDICATORS_DROP_SLIDEDISTANCE,
"",
"Drop Slide Distance",
DiagMenuIDs.BLEEDINGINDICATORS_MENU,
"0.0, 500.0, 0, 0.1");
395 DiagMenu.RegisterBool(
DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_ENABLEDESATURATION,
"",
"Desaturate",
DiagMenuIDs.BLEEDINGINDICATORS_DROP_COLOR_MENU);
443 #ifdef TRIGGER_DEBUG_BASIC
540 protected int GetModdedDiagID()
542 return ++m_ModdedDiagID;
546 protected int GetModdedRootMenu()
552 protected void RegisterModdedDiagsIDs();
555 protected void RegisterModdedDiags()
564 Class.CastTo(parent, player.GetParent());
571 case ERPCs.DIAG_ITEM_DEBUG_ACTIONS:
582 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_ON:
583 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG_OFF:
584 case ERPCs.DIAG_PLAYER_SYMPTOMS_DEBUG:
586 if (player.GetSymptomManager())
588 player.GetSymptomManager().OnRPCDebug(rpc_type, ctx);
598 case ERPCs.DIAG_CRAFTING_INSTANT:
602 PluginRecipesManager pluginRecipesManager = PluginRecipesManager.Cast(
GetPlugin(PluginRecipesManager));
612 case ERPCs.DIAG_CHEATS_MODIFIERS:
620 case ERPCs.DIAG_CHEATS_KILL_PLAYER:
622 player.SetHealth(
"",
"", -1);
627 case ERPCs.DIAG_CHEATS_INVINCIBILITY:
637 parent.SetAllowDamage(
true);
638 parent.SetCanBeDestroyed(
true);
641 player.SetAllowDamage(
true);
642 player.SetCanBeDestroyed(
true);
649 parent.SetAllowDamage(
true);
650 parent.SetCanBeDestroyed(
false);
653 player.SetAllowDamage(
true);
654 player.SetCanBeDestroyed(
false);
661 parent.SetAllowDamage(
false);
664 player.SetAllowDamage(
false);
673 case ERPCs.DIAG_CHEATS_DISABLE_STAMINA:
681 case ERPCs.DIAG_CHEATS_RESET_PLAYER:
683 player.ResetPlayer(
false);
688 case ERPCs.DIAG_CHEATS_RESET_PLAYER_MAX:
690 player.ResetPlayer(
true);
695 case ERPCs.DIAG_CHEATS_INVENTORY_ACCESS:
703 case ERPCs.DIAG_CHEATS_ITEMS_FIX:
705 player.FixAllInventoryItems();
711 case ERPCs.DIAG_CHEATS_CREATE_HIT:
713 player.ProcessDirectDamage(
DamageType.CUSTOM, player,
"",
"Dummy_Heavy",
"0 0 0");
717 case ERPCs.DIAG_CHEATS_CREATE_HIT_LIGHT:
719 player.ProcessDirectDamage(
DamageType.CUSTOM, player,
"",
"MeleeFist",
"0 0 0");
726 case ERPCs.DIAG_SOFT_SKILLS_SHOW_DEBUG:
732 player.GetSoftSkillsManager().StartSynchTimer();
736 player.GetSoftSkillsManager().StopSynchTimer();
737 player.GetSoftSkillsManager().ResetDebugWindow();
744 case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_STATE:
752 case ERPCs.DIAG_SOFT_SKILLS_TOGGLE_MODEL:
760 case ERPCs.DIAG_SOFT_SKILLS_SPECIALTY_VALUE:
775 case ERPCs.DIAG_LIFESPAN_BLOODY_HANDS:
780 pluginLifespan.UpdateBloodyHandsVisibility(player,
CachedObjectsParams.PARAM1_BOOL.param1);
781 player.SetBloodyHandsPenaltyChancePerAgent(
eAgents.SALMONELLA, 0.75);
784 player.ClearBloodyHandsPenaltyChancePerAgent(
eAgents.SALMONELLA);
790 case ERPCs.DIAG_LIFESPAN_PLAYTIME_UPDATE:
798 player.SetLastShavedSeconds(0);
802 pluginLifespann.UpdateLifespan(player,
true);
811 case ERPCs.DIAG_MISC_LOG_PLAYER_STATS:
823 case ERPCs.DIAG_MISC_ENVIRONMENT_DEBUG:
827 if (player.m_Environment)
833 #ifdef ENABLE_LOGGING
834 case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_DRYWET:
838 if (player.m_Environment)
844 case ERPCs.DIAG_MISC_ENVIRONMENT_LOGGING_ITEMHEAT:
848 if (player.m_Environment)
858 case ERPCs.DIAG_MISC_FALLDAMAGE_DEBUG:
862 if (player.GetFallDamage())
869 case ERPCs.DIAG_MISC_GO_UNCONSCIOUS:
871 GoUnconscious(player);
876 case ERPCs.DIAG_MISC_GO_UNCONSCIOUS_DELAYED:
883 case ERPCs.DIAG_MISC_QUICK_RESTRAIN:
893 case ERPCs.DIAG_MISC_HAIR_LEVEL_HIDE:
898 player.UpdateHairSelectionVisibility(
true);
906 case ERPCs.DIAG_MISC_QUICK_FISHING:
914 case ERPCs.DIAG_MISC_TARGETABLE_BY_AI:
922 case ERPCs.DIAG_MISC_DEBUG_MONITOR:
932 case ERPCs.DIAG_SIMULATE_INFINITE_LOOP:
936 Print(
"simulating infinite loop");
942 case ERPCs.DIAG_SIMULATE_NULL_POINTER:
945 NULL_player.SetHealth(
"",
"", -1);
950 case ERPCs.DIAG_SIMULATE_DIVISION_BY_ZERO:
953 int division_by_zero = 1/zero;
958 case ERPCs.DIAG_SIMULATE_ERROR_FUNCTION:
968 case ERPCs.DIAG_WEAPON_PARTICLES:
976 case ERPCs.DIAG_WEAPON_RECOIL:
979 player.GetAimingModel().SetProceduralRecoilEnabled(
CachedObjectsParams.PARAM1_BOOL.param1);
984 case ERPCs.DIAG_WEAPON_BURST_VERSION:
995 case ERPCs.DIAG_BLEEDING_DISABLE_BLOOD_LOSS:
1003 case ERPCs.DIAG_BLEEDING_ACTIVATE_SOURCE:
1006 player.GetBleedingManagerServer().DebugActivateBleedingSource(
CachedObjectsParams.PARAM1_INT.param1);
1011 case ERPCs.DIAG_BLEEDING_ACTIVATE_ALL_SOURCES:
1013 player.GetBleedingManagerServer().ActivateAllBS();
1021 case ERPCs.DIAG_LOGS_ACTIONS:
1029 case ERPCs.DIAG_LOGS_WEAPONS:
1037 case ERPCs.DIAG_LOGS_SYNC:
1045 case ERPCs.DIAG_LOGS_BASEBUILDING:
1053 case ERPCs.DIAG_LOGS_SYMPTOMS:
1061 case ERPCs.DIAG_LOGS_INVENTORY_MOVE:
1069 case ERPCs.DIAG_LOGS_INVENTORY_RESERVATION:
1077 case ERPCs.DIAG_LOGS_INVENTORY_HFSM:
1085 case ERPCs.DIAG_LOGS_QUICKBAR:
1093 case ERPCs.DIAG_LOGS_BLEEDING_CHANCES:
1103 case ERPCs.DIAG_BASEBUILDING_WOOD:
1111 case ERPCs.DIAG_BASEBUILDING_GATE:
1122 case ERPCs.DIAG_FINISHERS_FORCE_FINISHER:
1125 player.GetMeleeCombat().DebugSetForcedFinisherType(
CachedObjectsParams.PARAM1_INT.param1);
1133 case ERPCs.DIAG_CAMERATOOLS_CAM_DATA:
1135 if (!player.m_CameraToolsMenuClient)
1137 player.m_CameraToolsMenuClient =
new CameraToolsMenuClient();
1140 player.m_CameraToolsMenuClient.OnRPC(ctx);
1148 case ERPCs.DIAG_TIMEACCEL:
1150 TimeAccelParam tap =
new TimeAccelParam(
false, 0, 0);
1154 FeatureTimeAccel.m_CurrentTimeAccel = tap;
1157 GetGame().GetPlayers(players);
1158 foreach (Man p : players)
1163 GetGame().RPCSingleParam( p,
ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC, tap,
true, p.GetIdentity());
1182 case ERPCs.DIAG_TIMEACCEL_CLIENT_SYNC:
1184 TimeAccelParam tap2 =
new TimeAccelParam(
false, 0, 0);
1188 int bigFactor = tap2.param2;
1189 float smallFactor = tap2.param2 - bigFactor;
1190 SetTimeAccelMenuState(tap2.param1, bigFactor, smallFactor, tap2.param3);
1191 FeatureTimeAccel.m_CurrentTimeAccel = tap2;
1199 case ERPCs.DIAG_VEHICLE_DEBUG_OUTPUT:
1206 case ERPCs.DIAG_VEHICLES_DUMP_CRASH_DATA_REQUEST:
1209 CrashDebugData.SendData(player);
1218 if (player.IsUnconscious())
1220 player.SetHealth(
"",
"Shock", 100);
1224 player.m_UnconsciousEndTime = -60;
1225 player.SetHealth(
"",
"Shock", 0);
1230 void InitTimeAccel()
1232 FeatureTimeAccel.m_CurrentTimeAccel = GetTimeAccelMenuState();
1236 if (
GetGame().CommandlineGetParam(
"timeAccel", value))
1240 value.Replace(
" ",
"");
1241 value.Split(
",", params);
1243 bool enable = params[0].ToInt();
1244 int timeAccelBig = params[1].ToInt();
1245 float timeAccelSmall = params[2].ToFloat();
1246 int bitMask = params[3].ToInt();
1248 SetTimeAccelMenuState(enable, timeAccelBig, timeAccelSmall, bitMask);
1252 TimeAccelParam GetTimeAccelMenuState()
1257 float timeAccel = timeAccelBig + timeAccelSmall;
1258 int bitMask = FeatureTimeAccel.GetTimeAccelBitmask();
1260 TimeAccelParam param =
new TimeAccelParam(enable, timeAccel, bitMask);
1264 void SetTimeAccelMenuState(
bool enable,
int bigFactor,
float smallFactor,
int bitmask)
1270 for (
int i = 0; i <
EnumTools.GetEnumSize(ETimeAccelCategories); ++i)
1273 bool on = (bit & bitmask);
1274 DiagMenu.SetValue(FeatureTimeAccel.GetDiagIDByCategory(bit), on);