Updated That's Lit & Tweaked Configs
This commit is contained in:
parent
b9abacef3e
commit
b697b687a7
|
@ -1,4 +1,4 @@
|
|||
## Settings file was created by plugin That's Lit v1.3100.1
|
||||
## Settings file was created by plugin That's Lit v1.3100.3
|
||||
## Plugin GUID: bastudio.thatslit
|
||||
|
||||
[0. Readme]
|
||||
|
@ -32,6 +32,11 @@ Enable = true
|
|||
# Default value: true
|
||||
Enable = true
|
||||
|
||||
## When the ambience is bright, make the camera only run every some frames to reduce average fps impact.
|
||||
# Setting type: Boolean
|
||||
# Default value: false
|
||||
Throttle Camera = true
|
||||
|
||||
## Scale how AI noticing players slower due to darkness. If That's Lit change bot reaction from 1s to 3s, setting to 100% will makes it 5s (double from 50%). Be careful when increasing this as it could easily breaks the combat balance.
|
||||
# Setting type: Single
|
||||
# Default value: 0.5
|
||||
|
|
|
@ -0,0 +1,217 @@
|
|||
## Settings file was created by plugin Borkel's Realistic NVGs v1.5.9
|
||||
## Plugin GUID: com.borkel.nvgmasks
|
||||
|
||||
[0.Stuff]
|
||||
|
||||
## Sprinting will toggle tactical devices until you stop sprinting, this mitigates the IR lights being visible outside of the NVGs. I recommend enabling this feature.
|
||||
# Setting type: Boolean
|
||||
# Default value: false
|
||||
Sprint toggles tactical devices. DO NOT USE WITH FIKA. = false
|
||||
|
||||
## Will enable the input simulation to enable the ReShade, will use numpad keys. GPNVG-18 -> numpad 9. PVS-14 -> numpad 8. N-15 -> numpad 7. PNV-10T -> numpad 6. Off -> numpad 5. Only enable if you've installed the ReShade.
|
||||
# Setting type: Boolean
|
||||
# Default value: false
|
||||
Enable ReShade input simulation = false
|
||||
|
||||
## Is a bit wonky in the hideout, but works well in-raid.
|
||||
# Setting type: Boolean
|
||||
# Default value: true
|
||||
Disable ReShade when in menus = true
|
||||
|
||||
[00.Gating]
|
||||
|
||||
## Increases the gain by 1 step. There's 5 levels (-2...2), default level is the third level (0).
|
||||
# Setting type: KeyCode
|
||||
# Default value: None
|
||||
# Acceptable values: None, Backspace, Tab, Clear, Return, Pause, Escape, Space, Exclaim, DoubleQuote, Hash, Dollar, Percent, Ampersand, Quote, LeftParen, RightParen, Asterisk, Plus, Comma, Minus, Period, Slash, Alpha0, Alpha1, Alpha2, Alpha3, Alpha4, Alpha5, Alpha6, Alpha7, Alpha8, Alpha9, Colon, Semicolon, Less, Equals, Greater, Question, At, LeftBracket, Backslash, RightBracket, Caret, Underscore, BackQuote, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, LeftCurlyBracket, Pipe, RightCurlyBracket, Tilde, Delete, Keypad0, Keypad1, Keypad2, Keypad3, Keypad4, Keypad5, Keypad6, Keypad7, Keypad8, Keypad9, KeypadPeriod, KeypadDivide, KeypadMultiply, KeypadMinus, KeypadPlus, KeypadEnter, KeypadEquals, UpArrow, DownArrow, RightArrow, LeftArrow, Insert, Home, End, PageUp, PageDown, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, Numlock, CapsLock, ScrollLock, RightShift, LeftShift, RightControl, LeftControl, RightAlt, LeftAlt, RightCommand, RightApple, LeftCommand, LeftApple, LeftWindows, RightWindows, AltGr, Help, Print, SysReq, Break, Menu, Mouse0, Mouse1, Mouse2, Mouse3, Mouse4, Mouse5, Mouse6, JoystickButton0, JoystickButton1, JoystickButton2, JoystickButton3, JoystickButton4, JoystickButton5, JoystickButton6, JoystickButton7, JoystickButton8, JoystickButton9, JoystickButton10, JoystickButton11, JoystickButton12, JoystickButton13, JoystickButton14, JoystickButton15, JoystickButton16, JoystickButton17, JoystickButton18, JoystickButton19, Joystick1Button0, Joystick1Button1, Joystick1Button2, Joystick1Button3, Joystick1Button4, Joystick1Button5, Joystick1Button6, Joystick1Button7, Joystick1Button8, Joystick1Button9, Joystick1Button10, Joystick1Button11, Joystick1Button12, Joystick1Button13, Joystick1Button14, Joystick1Button15, Joystick1Button16, Joystick1Button17, Joystick1Button18, Joystick1Button19, Joystick2Button0, Joystick2Button1, Joystick2Button2, Joystick2Button3, Joystick2Button4, Joystick2Button5, Joystick2Button6, Joystick2Button7, Joystick2Button8, Joystick2Button9, Joystick2Button10, Joystick2Button11, Joystick2Button12, Joystick2Button13, Joystick2Button14, Joystick2Button15, Joystick2Button16, Joystick2Button17, Joystick2Button18, Joystick2Button19, Joystick3Button0, Joystick3Button1, Joystick3Button2, Joystick3Button3, Joystick3Button4, Joystick3Button5, Joystick3Button6, Joystick3Button7, Joystick3Button8, Joystick3Button9, Joystick3Button10, Joystick3Button11, Joystick3Button12, Joystick3Button13, Joystick3Button14, Joystick3Button15, Joystick3Button16, Joystick3Button17, Joystick3Button18, Joystick3Button19, Joystick4Button0, Joystick4Button1, Joystick4Button2, Joystick4Button3, Joystick4Button4, Joystick4Button5, Joystick4Button6, Joystick4Button7, Joystick4Button8, Joystick4Button9, Joystick4Button10, Joystick4Button11, Joystick4Button12, Joystick4Button13, Joystick4Button14, Joystick4Button15, Joystick4Button16, Joystick4Button17, Joystick4Button18, Joystick4Button19, Joystick5Button0, Joystick5Button1, Joystick5Button2, Joystick5Button3, Joystick5Button4, Joystick5Button5, Joystick5Button6, Joystick5Button7, Joystick5Button8, Joystick5Button9, Joystick5Button10, Joystick5Button11, Joystick5Button12, Joystick5Button13, Joystick5Button14, Joystick5Button15, Joystick5Button16, Joystick5Button17, Joystick5Button18, Joystick5Button19, Joystick6Button0, Joystick6Button1, Joystick6Button2, Joystick6Button3, Joystick6Button4, Joystick6Button5, Joystick6Button6, Joystick6Button7, Joystick6Button8, Joystick6Button9, Joystick6Button10, Joystick6Button11, Joystick6Button12, Joystick6Button13, Joystick6Button14, Joystick6Button15, Joystick6Button16, Joystick6Button17, Joystick6Button18, Joystick6Button19, Joystick7Button0, Joystick7Button1, Joystick7Button2, Joystick7Button3, Joystick7Button4, Joystick7Button5, Joystick7Button6, Joystick7Button7, Joystick7Button8, Joystick7Button9, Joystick7Button10, Joystick7Button11, Joystick7Button12, Joystick7Button13, Joystick7Button14, Joystick7Button15, Joystick7Button16, Joystick7Button17, Joystick7Button18, Joystick7Button19, Joystick8Button0, Joystick8Button1, Joystick8Button2, Joystick8Button3, Joystick8Button4, Joystick8Button5, Joystick8Button6, Joystick8Button7, Joystick8Button8, Joystick8Button9, Joystick8Button10, Joystick8Button11, Joystick8Button12, Joystick8Button13, Joystick8Button14, Joystick8Button15, Joystick8Button16, Joystick8Button17, Joystick8Button18, Joystick8Button19
|
||||
1.Manual gating increase = KeypadPlus
|
||||
|
||||
## Decreases the gain by 1 step. There's 5 levels (-2...2), default level is the third level (0).
|
||||
# Setting type: KeyCode
|
||||
# Default value: None
|
||||
# Acceptable values: None, Backspace, Tab, Clear, Return, Pause, Escape, Space, Exclaim, DoubleQuote, Hash, Dollar, Percent, Ampersand, Quote, LeftParen, RightParen, Asterisk, Plus, Comma, Minus, Period, Slash, Alpha0, Alpha1, Alpha2, Alpha3, Alpha4, Alpha5, Alpha6, Alpha7, Alpha8, Alpha9, Colon, Semicolon, Less, Equals, Greater, Question, At, LeftBracket, Backslash, RightBracket, Caret, Underscore, BackQuote, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, LeftCurlyBracket, Pipe, RightCurlyBracket, Tilde, Delete, Keypad0, Keypad1, Keypad2, Keypad3, Keypad4, Keypad5, Keypad6, Keypad7, Keypad8, Keypad9, KeypadPeriod, KeypadDivide, KeypadMultiply, KeypadMinus, KeypadPlus, KeypadEnter, KeypadEquals, UpArrow, DownArrow, RightArrow, LeftArrow, Insert, Home, End, PageUp, PageDown, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, Numlock, CapsLock, ScrollLock, RightShift, LeftShift, RightControl, LeftControl, RightAlt, LeftAlt, RightCommand, RightApple, LeftCommand, LeftApple, LeftWindows, RightWindows, AltGr, Help, Print, SysReq, Break, Menu, Mouse0, Mouse1, Mouse2, Mouse3, Mouse4, Mouse5, Mouse6, JoystickButton0, JoystickButton1, JoystickButton2, JoystickButton3, JoystickButton4, JoystickButton5, JoystickButton6, JoystickButton7, JoystickButton8, JoystickButton9, JoystickButton10, JoystickButton11, JoystickButton12, JoystickButton13, JoystickButton14, JoystickButton15, JoystickButton16, JoystickButton17, JoystickButton18, JoystickButton19, Joystick1Button0, Joystick1Button1, Joystick1Button2, Joystick1Button3, Joystick1Button4, Joystick1Button5, Joystick1Button6, Joystick1Button7, Joystick1Button8, Joystick1Button9, Joystick1Button10, Joystick1Button11, Joystick1Button12, Joystick1Button13, Joystick1Button14, Joystick1Button15, Joystick1Button16, Joystick1Button17, Joystick1Button18, Joystick1Button19, Joystick2Button0, Joystick2Button1, Joystick2Button2, Joystick2Button3, Joystick2Button4, Joystick2Button5, Joystick2Button6, Joystick2Button7, Joystick2Button8, Joystick2Button9, Joystick2Button10, Joystick2Button11, Joystick2Button12, Joystick2Button13, Joystick2Button14, Joystick2Button15, Joystick2Button16, Joystick2Button17, Joystick2Button18, Joystick2Button19, Joystick3Button0, Joystick3Button1, Joystick3Button2, Joystick3Button3, Joystick3Button4, Joystick3Button5, Joystick3Button6, Joystick3Button7, Joystick3Button8, Joystick3Button9, Joystick3Button10, Joystick3Button11, Joystick3Button12, Joystick3Button13, Joystick3Button14, Joystick3Button15, Joystick3Button16, Joystick3Button17, Joystick3Button18, Joystick3Button19, Joystick4Button0, Joystick4Button1, Joystick4Button2, Joystick4Button3, Joystick4Button4, Joystick4Button5, Joystick4Button6, Joystick4Button7, Joystick4Button8, Joystick4Button9, Joystick4Button10, Joystick4Button11, Joystick4Button12, Joystick4Button13, Joystick4Button14, Joystick4Button15, Joystick4Button16, Joystick4Button17, Joystick4Button18, Joystick4Button19, Joystick5Button0, Joystick5Button1, Joystick5Button2, Joystick5Button3, Joystick5Button4, Joystick5Button5, Joystick5Button6, Joystick5Button7, Joystick5Button8, Joystick5Button9, Joystick5Button10, Joystick5Button11, Joystick5Button12, Joystick5Button13, Joystick5Button14, Joystick5Button15, Joystick5Button16, Joystick5Button17, Joystick5Button18, Joystick5Button19, Joystick6Button0, Joystick6Button1, Joystick6Button2, Joystick6Button3, Joystick6Button4, Joystick6Button5, Joystick6Button6, Joystick6Button7, Joystick6Button8, Joystick6Button9, Joystick6Button10, Joystick6Button11, Joystick6Button12, Joystick6Button13, Joystick6Button14, Joystick6Button15, Joystick6Button16, Joystick6Button17, Joystick6Button18, Joystick6Button19, Joystick7Button0, Joystick7Button1, Joystick7Button2, Joystick7Button3, Joystick7Button4, Joystick7Button5, Joystick7Button6, Joystick7Button7, Joystick7Button8, Joystick7Button9, Joystick7Button10, Joystick7Button11, Joystick7Button12, Joystick7Button13, Joystick7Button14, Joystick7Button15, Joystick7Button16, Joystick7Button17, Joystick7Button18, Joystick7Button19, Joystick8Button0, Joystick8Button1, Joystick8Button2, Joystick8Button3, Joystick8Button4, Joystick8Button5, Joystick8Button6, Joystick8Button7, Joystick8Button8, Joystick8Button9, Joystick8Button10, Joystick8Button11, Joystick8Button12, Joystick8Button13, Joystick8Button14, Joystick8Button15, Joystick8Button16, Joystick8Button17, Joystick8Button18, Joystick8Button19
|
||||
2.Manual gating decrease = KeypadMinus
|
||||
|
||||
## Will reset when the game opens. You are supposed to use the gating increase/decrease keys to change the gating level, but you are free to change it manually if you want to make sure you are at a specific gating level.
|
||||
# Setting type: Int32
|
||||
# Default value: 0
|
||||
Gating level = 0
|
||||
|
||||
[1.Globals]
|
||||
|
||||
## Applies size multiplier to all masks
|
||||
# Setting type: Single
|
||||
# Default value: 1.07
|
||||
# Acceptable value range: From 0 to 2
|
||||
Mask size multiplier = 1.07
|
||||
|
||||
## Applies gain multiplier to all NVGs
|
||||
# Setting type: Single
|
||||
# Default value: 1
|
||||
# Acceptable value range: From 0 to 5
|
||||
Gain multiplier = 1
|
||||
|
||||
[2.GPNVG-18]
|
||||
|
||||
## Light amplification
|
||||
# Setting type: Single
|
||||
# Default value: 2.5
|
||||
# Acceptable value range: From 0 to 5
|
||||
1.Gain = 1.561033
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.2
|
||||
# Acceptable value range: From 0 to 1
|
||||
2.Noise intensity = 0.1530516
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.1
|
||||
# Acceptable value range: From 0.01 to 0.99
|
||||
3.Noise scable = 0.01258216
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.96
|
||||
# Acceptable value range: From 0.01 to 2
|
||||
4.Mask size = 1.081455
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 152
|
||||
# Acceptable value range: From 0 to 255
|
||||
5.Red = 152
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 214
|
||||
# Acceptable value range: From 0 to 255
|
||||
6.Green = 214
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 252
|
||||
# Acceptable value range: From 0 to 255
|
||||
7.Blue = 252
|
||||
|
||||
[3.PVS-14]
|
||||
|
||||
## Light amplification
|
||||
# Setting type: Single
|
||||
# Default value: 2.4
|
||||
# Acceptable value range: From 0 to 5
|
||||
1.Gain = 2.4
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.2
|
||||
# Acceptable value range: From 0 to 1
|
||||
2.Noise intensity = 0.2
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.1
|
||||
# Acceptable value range: From 0.01 to 0.99
|
||||
3.Noise scale = 0.1
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 1
|
||||
# Acceptable value range: From 0.01 to 2
|
||||
4.Mask size = 1
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 95
|
||||
# Acceptable value range: From 0 to 255
|
||||
5.Red = 95
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 210
|
||||
# Acceptable value range: From 0 to 255
|
||||
6.Green = 210
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 255
|
||||
# Acceptable value range: From 0 to 255
|
||||
7.Blue = 255
|
||||
|
||||
[4.N-15]
|
||||
|
||||
## Light amplification
|
||||
# Setting type: Single
|
||||
# Default value: 2.1
|
||||
# Acceptable value range: From 0 to 5
|
||||
1.Gain = 2.1
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.25
|
||||
# Acceptable value range: From 0 to 1
|
||||
2.Noise intensity = 0.25
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.15
|
||||
# Acceptable value range: From 0.01 to 0.99
|
||||
3.Noise scale = 0.15
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 1
|
||||
# Acceptable value range: From 0.01 to 2
|
||||
4.Mask size = 1
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 60
|
||||
# Acceptable value range: From 0 to 255
|
||||
5.Red = 60
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 235
|
||||
# Acceptable value range: From 0 to 255
|
||||
6.Green = 235
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 100
|
||||
# Acceptable value range: From 0 to 255
|
||||
7.Blue = 100
|
||||
|
||||
[5.PNV-10T]
|
||||
|
||||
## Light amplification
|
||||
# Setting type: Single
|
||||
# Default value: 1.8
|
||||
# Acceptable value range: From 0 to 5
|
||||
1.Gain = 1.8
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.3
|
||||
# Acceptable value range: From 0 to 1
|
||||
2.Noise intensity = 0.3
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 0.2
|
||||
# Acceptable value range: From 0.01 to 0.99
|
||||
3.Noise scale = 0.2
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 1
|
||||
# Acceptable value range: From 0.01 to 2
|
||||
4.Mask size = 1
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 60
|
||||
# Acceptable value range: From 0 to 255
|
||||
5.Red = 60
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 210
|
||||
# Acceptable value range: From 0 to 255
|
||||
6.Green = 210
|
||||
|
||||
# Setting type: Single
|
||||
# Default value: 60
|
||||
# Acceptable value range: From 0 to 255
|
||||
7.Blue = 60
|
||||
|
||||
[6.T-7]
|
||||
|
||||
## Requires restart. Pixelates the T-7, like a real digital screen
|
||||
# Setting type: Boolean
|
||||
# Default value: true
|
||||
1.Pixelation = true
|
||||
|
||||
## Requires restart. Locks the Hz of the T-7 to 60Hz, like a real digital screen
|
||||
# Setting type: Boolean
|
||||
# Default value: true
|
||||
1.Hz Lock = true
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
"PluginEnabled": true,
|
||||
"DespawnEnabledPMC": true,
|
||||
"DespawnEnabledSCAV": true,
|
||||
"HardCapEnabled": false,
|
||||
"HardCapEnabled": true,
|
||||
"coolDownTimer": 300.0,
|
||||
"pmcGroupChance": "Default",
|
||||
"scavGroupChance": "Default",
|
||||
|
@ -12,21 +12,21 @@
|
|||
"ShowRandomFolderChoice": true,
|
||||
"pmcFaction": "Default",
|
||||
"forceAllBotType": "Disabled",
|
||||
"useTimeBasedHardStop": true,
|
||||
"hardStopOptionPMC": false,
|
||||
"useTimeBasedHardStop": false,
|
||||
"hardStopOptionPMC": true,
|
||||
"hardStopTimePMC": 300,
|
||||
"hardStopPercentPMC": 50,
|
||||
"hardStopOptionSCAV": false,
|
||||
"hardStopPercentPMC": 70,
|
||||
"hardStopOptionSCAV": true,
|
||||
"hardStopTimeSCAV": 300,
|
||||
"hardStopPercentSCAV": 10,
|
||||
"hotspotBoostPMC": false,
|
||||
"hotspotBoostSCAV": false,
|
||||
"hotspotBoostSCAV": true,
|
||||
"hotspotIgnoreHardCapPMC": false,
|
||||
"hotspotIgnoreHardCapSCAV": false,
|
||||
"pmcFactionRatio": 50,
|
||||
"hotspotIgnoreHardCapSCAV": true,
|
||||
"pmcFactionRatio": 70,
|
||||
"battleStateCoolDown": 20.0,
|
||||
"maxRespawnsPMC": 0,
|
||||
"maxRespawnsSCAV": 0,
|
||||
"maxRespawnsPMC": 24,
|
||||
"maxRespawnsSCAV": 18,
|
||||
"globalMinSpawnDistanceFromPlayerBool": true,
|
||||
"globalMinSpawnDistanceFromPlayerFactory": 35.0,
|
||||
"globalMinSpawnDistanceFromPlayerCustoms": 60.0,
|
||||
|
|
Binary file not shown.
|
@ -1,11 +1,11 @@
|
|||
[General]
|
||||
gameName=spt
|
||||
modid=0
|
||||
version=d2024.12.31.0
|
||||
version=d2025.1.12.0
|
||||
newestVersion=
|
||||
category="1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=ThatsLit_1.3100.1.zip
|
||||
installationFile=ThatsLit_1.3100.3.zip
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
# That's Lit API Guide
|
||||
There are mainly 2 ways to access data in That's Lit:
|
||||
- Directly references and depends on That's Lit, then you just use the **ThatsLitAPI** class
|
||||
- Locate a method you want to call in **ThatsLitAPI** and call it through reflection (in optimized ways)
|
||||
|
||||
The first is simple and straight forward enough, anyone can do it with basic .NET development knowledge.
|
||||
|
||||
We are going to talk about the 2nd approach:
|
||||
|
||||
Let's say you want to call `float GetBrightnessScore(Player)` in **ThatsLitAPI**, so you can access a player's current Brightness.
|
||||
|
||||
First, in your code, declare a **delegate** that matches the method signature:
|
||||
|
||||
```csharp
|
||||
delegate float GetBrightnessScore (Player player);
|
||||
```
|
||||
|
||||
This defines the "shape" of such method, we then need to declare an instance of this type of delegate:
|
||||
|
||||
```csharp
|
||||
private GetBrightnessScore GetBrightnessScore { get; }
|
||||
```
|
||||
|
||||
This means a delegate named GetBrightnessScore of type GetBrightnessScore.
|
||||
|
||||
You can make it a bit more understandable if you want:
|
||||
|
||||
```csharp
|
||||
delegate float GetBrightnessScoreMethod (Player player);
|
||||
|
||||
private GetBrightnessScoreMethod GetBrightnessScore { get; set; }
|
||||
```
|
||||
|
||||
How do we use such delegate?
|
||||
|
||||
```csharp
|
||||
Player p;
|
||||
this.GetBrightnessScore(p)
|
||||
```
|
||||
|
||||
As you can see, it's exactly like using a normal method.
|
||||
|
||||
Now, the problem is, how do we use this to access our target: `ThatsLitAPI.GetBrightnessScore`?
|
||||
|
||||
Simple Reflection is known to be very slow, we need to use some technique to greatly reduce the overhead.
|
||||
|
||||
This is why we use delegate instead of just `MethodInfo`, we can just pay the cost once to create delegate from MethodInfo, assign it to the `GetBrightnessScore` property and then we can call it almost as cheap as calling a normal method.
|
||||
|
||||
```csharp
|
||||
// AccessTools is provided by HarmonyLib
|
||||
var methodInfo = AccessTools.Method(Type.GetType("ThatsLit.ThatsLitAPI, ThatsLit.Core"), "GetBrightnessScore", new Type[] { typeof(EFT.Player) }, null);
|
||||
GetBrightnessScore = (GetBrightnessScoreMethod) methodInfo.CreateDelegate(typeof(GetBrightnessScoreMethod));
|
||||
```
|
||||
|
||||
Personally I prefer to make it lazy and auto assign itself on get, like how I access players' active stim effects:
|
||||
|
||||
```csharp
|
||||
|
||||
internal CheckStimEffectProxy CheckEffectDelegate
|
||||
{
|
||||
get
|
||||
{
|
||||
if (checkEffectDelegate == null)
|
||||
{
|
||||
var methodInfo = ReflectionHelper.FindMethodByArgTypes(typeof(EFT.HealthSystem.ActiveHealthController), new Type[] { typeof(EFT.HealthSystem.EStimulatorBuffType) }, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
|
||||
checkEffectDelegate = (CheckStimEffectProxy) methodInfo.CreateDelegate(typeof(CheckStimEffectProxy), Player.ActiveHealthController);
|
||||
}
|
||||
return checkEffectDelegate;
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,73 @@
|
|||
# That's Lit Compat Guide
|
||||
|
||||
That's Lit Brightness module supports scopes/goggles/laser & flashlight by **\*.thatslitcompat.json** files.
|
||||
|
||||
Any **\*.thatslitcompat.json** file found anywhere inside the plugins folder will be loaded on game launch.
|
||||
|
||||
This means, you can easily make your own compatibility patch, and even distribute it or include it in your mods.
|
||||
|
||||
That's Lit compatibility is a template based system, the content of a **\*.thatslitcompat.json** file is quite simple:
|
||||
|
||||
```json
|
||||
{
|
||||
"protocol": 1, // required, don't need to change it
|
||||
"priority": 1, // required, the bigger the latter loaded (and overwrite smaller ones if there are duplicates)
|
||||
"scopeTemplates": [], // optional
|
||||
"scopes": [], // optional
|
||||
"goggleTemplates": [], // optional
|
||||
"goggles": [], // optional
|
||||
"deviceTemplates": [], // optional
|
||||
"devices": [], // optional
|
||||
"extraDevices": [] // optional
|
||||
}
|
||||
```
|
||||
|
||||
As you may have noticed, the file consist of mainly 2 types of data: template and objects.
|
||||
|
||||
A template defines the actual properties, while an object defines which template applies to which item type ingame.
|
||||
|
||||
For example, if you look at the **default.thatslitcompat.json**, you'll see the first scope template is `vanilla_general_nv_scopes`:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "vanilla_general_nv_scopes",
|
||||
"nightVision": {
|
||||
"nullification": 0.8,
|
||||
"nullificationDarker": 0.4,
|
||||
"nullificationExtremeDark": 0.3
|
||||
},
|
||||
"thermal": null,
|
||||
"_comment": null
|
||||
}
|
||||
```
|
||||
|
||||
This defines "a scope that makes darkness 80% less effective for bots using the scope, 40% when it's darker, 30% when it's extremely dark".
|
||||
|
||||
And you can see in `scopes`, the scope with Id `5b3b6e495acfc4330140bd88` (which is "Armasight Vulcan MG 3.5x Bravo night vision scope") use the `vanilla_general_nv_scopes`, so the scope makes darkness 80% less effective for bots using the scope, 40% when it's darker, 30% when it's extremely dark.
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "5b3b6e495acfc4330140bd88",
|
||||
"_comment": "scope_base_armasight_vulcan_gen3_bravo_mg_3",
|
||||
"template": "vanilla_general_nv_scopes"
|
||||
}
|
||||
```
|
||||
|
||||
the `_comment` value does not do anything, it's just there to help us identify the Id.
|
||||
|
||||
The pattern above also applies to goggles and devices (laser / flashlight).
|
||||
|
||||
Data for goggles are pretty similar to scopes, the only difference is you can configure the FOV range from the bot where the goggle being effective.
|
||||
|
||||
For devices, I suggest just go with 1.0 or 0.0. The numbers are multipliers to how the device affects the bot seeing you, values higher than 1 makes the player even more visible with the device activated.
|
||||
|
||||
Value between 0 and 1 is a bit meaningless.
|
||||
|
||||
> A laser is a laser, in night time, any visible laser is a very noticeable line in sight. And In daytime, visible lights and lasers don't really provides penalty because they only compensate the lit score to neutral range. It's correct to pay attention in daytime, just not because it increases brightness score, but because it impair your stealth like in foliage/grasses.
|
||||
|
||||
`extraDevices` is a bit more special. In Tarkov, there are mods that can function as laser or flashlight, even though they are not devices.
|
||||
|
||||
These type of mods have to be handled differently so they are separately recorded. But the data is identical to `devices`.
|
||||
|
||||
|
||||
|
Binary file not shown.
|
@ -0,0 +1,611 @@
|
|||
{
|
||||
"protocol": 1,
|
||||
"priority": 0,
|
||||
"scopeTemplates": [
|
||||
{
|
||||
"name": "vanilla_general_nv_scopes",
|
||||
"nightVision": {
|
||||
"nullification": 0.8,
|
||||
"nullificationDarker": 0.4,
|
||||
"nullificationExtremeDark": 0.3
|
||||
},
|
||||
"thermal": null,
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_general_thermal_scopes",
|
||||
"nightVision": null,
|
||||
"thermal": {
|
||||
"effectiveDistance": 230
|
||||
},
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_ultima_camera",
|
||||
"nightVision": null,
|
||||
"thermal": {
|
||||
"effectiveDistance": 10
|
||||
},
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_thermal_reflex_sights",
|
||||
"nightVision": null,
|
||||
"thermal": {
|
||||
"effectiveDistance": 50
|
||||
},
|
||||
"_comment": null
|
||||
}
|
||||
],
|
||||
"scopes": [
|
||||
{
|
||||
"id": "5b3b6e495acfc4330140bd88",
|
||||
"_comment": "scope_base_armasight_vulcan_gen3_bravo_mg_3",
|
||||
"template": "vanilla_general_nv_scopes"
|
||||
},
|
||||
{
|
||||
"id": "5a7c74b3e899ef0014332c29",
|
||||
"_comment": "scope_dovetail_npz_nspum_3",
|
||||
"template": "vanilla_general_nv_scopes"
|
||||
},
|
||||
{
|
||||
"id": "6478641c19d732620e045e17",
|
||||
"_comment": "scope_all_sig_sauer_echo1_thermal_reflex_sight_1_2x_30hz",
|
||||
"template": "vanilla_thermal_reflex_sights"
|
||||
},
|
||||
{
|
||||
"id": "606f2696f2cb2e02a42aceb1",
|
||||
"_comment": "tactical_mp155_kalashnikov_ultima_camera",
|
||||
"template": "vanilla_ultima_camera"
|
||||
},
|
||||
{
|
||||
"id": "63fc44e2429a8a166c7f61e6",
|
||||
"_comment": "scope_base_armasight_zeus_pro_640_2_16x50_30hz",
|
||||
"template": "vanilla_general_thermal_scopes"
|
||||
},
|
||||
{
|
||||
"id": "609bab8b455afd752b2e6138",
|
||||
"_comment": "scope_all_torrey_pines_logic_t12_w_30hz",
|
||||
"template": "vanilla_thermal_reflex_sights"
|
||||
},
|
||||
{
|
||||
"id": "5a1eaa87fcdbcb001865f75e",
|
||||
"_comment": "scope_base_trijicon_reap-ir",
|
||||
"template": "vanilla_general_thermal_scopes"
|
||||
},
|
||||
{
|
||||
"id": "5d1b5e94d7ad1a2b865a96b0",
|
||||
"_comment": "scope_all_flir_rs32_225_9x_35_60hz",
|
||||
"template": "vanilla_general_thermal_scopes"
|
||||
}
|
||||
],
|
||||
"goggleTemplates": [
|
||||
{
|
||||
"name": "vanilla_nv_goggles",
|
||||
"nightVision": {
|
||||
"horizontalFOV": 70,
|
||||
"verticalFOV": 70,
|
||||
"nullification": 0.8,
|
||||
"nullificationDarker": 0.4,
|
||||
"nullificationExtremeDark": 0.25
|
||||
},
|
||||
"thermal": null,
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_nv_monocular",
|
||||
"nightVision": {
|
||||
"horizontalFOV": 35,
|
||||
"verticalFOV": 70,
|
||||
"nullification": 0.8,
|
||||
"nullificationDarker": 0.4,
|
||||
"nullificationExtremeDark": 0.2
|
||||
},
|
||||
"thermal": null,
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_nv_gpnvg",
|
||||
"nightVision": {
|
||||
"horizontalFOV": 120,
|
||||
"verticalFOV": 90,
|
||||
"nullification": 0.8,
|
||||
"nullificationDarker": 0.4,
|
||||
"nullificationExtremeDark": 0.3
|
||||
},
|
||||
"thermal": null,
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_thermal_t7",
|
||||
"nightVision": null,
|
||||
"thermal": {
|
||||
"effectiveDistance": 250,
|
||||
"horizontalFOV": 60,
|
||||
"verticalFOV": 90
|
||||
},
|
||||
"_comment": null
|
||||
}
|
||||
],
|
||||
"goggles": [
|
||||
{
|
||||
"id": "5c110624d174af029e69734c",
|
||||
"template": "vanilla_thermal_t7",
|
||||
"_comment": "thermal_spi_t7"
|
||||
},
|
||||
{
|
||||
"id": "5c0558060db834001b735271",
|
||||
"template": "vanilla_nv_gpnvg",
|
||||
"_comment": "nvg_l3_gpnvg-18_anvis"
|
||||
},
|
||||
{
|
||||
"id": "57235b6f24597759bf5a30f1",
|
||||
"template": "vanilla_nv_monocular",
|
||||
"_comment": "nvg_pvs_14"
|
||||
},
|
||||
{
|
||||
"id": "5c066e3a0db834001b7353f0",
|
||||
"template": "vanilla_nv_goggles",
|
||||
"_comment": "nvg_armasight_n-15"
|
||||
},
|
||||
{
|
||||
"id": "5c0696830db834001d23f5da",
|
||||
"template": "vanilla_nv_goggles",
|
||||
"_comment": "nvg_alfa_pnv-10t"
|
||||
}
|
||||
],
|
||||
"deviceTemplates": [
|
||||
{
|
||||
"name": "vanilla_LS_ILS_IL_ILILS",
|
||||
"modes": [
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 1.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 1.0
|
||||
}
|
||||
],
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_X_LS_ILS_IL_ILILS",
|
||||
"modes": [
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.8,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.8
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.8
|
||||
}
|
||||
],
|
||||
"_comment": "tactical_all_wilcox_raptar_es"
|
||||
},
|
||||
{
|
||||
"name": "vanilla_L_LLS_LS",
|
||||
"modes": [
|
||||
{
|
||||
"light": 1.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 1.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
}
|
||||
],
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_IL_ILILS_ILS",
|
||||
"modes": [
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 1.0
|
||||
}
|
||||
],
|
||||
"_comment": "tactical_all_zenit_2irs_kleh_lam"
|
||||
},
|
||||
{
|
||||
"name": "vanilla_L",
|
||||
"modes": [
|
||||
{
|
||||
"light": 1.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
}
|
||||
],
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_L+",
|
||||
"modes": [
|
||||
{
|
||||
"light": 1.25,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
}
|
||||
],
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_L_L",
|
||||
"modes": [
|
||||
{
|
||||
"light": 1.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 1.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
}
|
||||
],
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_LS",
|
||||
"modes": [
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
}
|
||||
],
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "vanilla_X_LS_ILS_ILILS",
|
||||
"modes": [
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 1.0
|
||||
}
|
||||
],
|
||||
"_comment": "boss_xe (sight)"
|
||||
},
|
||||
{
|
||||
"name": "vanilla_ILS_ILILS",
|
||||
"modes": [
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 1.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 1.0
|
||||
}
|
||||
],
|
||||
"_comment": "tactical_all_insight_anpeq2"
|
||||
},
|
||||
{
|
||||
"name": "vanilla_L_LS_LLS_IL_ILS_ILILS",
|
||||
"modes": [
|
||||
{
|
||||
"light": 1.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 1.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 1.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 1.0
|
||||
}
|
||||
],
|
||||
"_comment": "tactical_all_steiner_9021_dbal_pl"
|
||||
},
|
||||
{
|
||||
"name": "vanilla_L_IL",
|
||||
"modes": [
|
||||
{
|
||||
"light": 1.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
}
|
||||
],
|
||||
"_comment": "tactical_all_steiner_9021_dbal_pl"
|
||||
},
|
||||
{
|
||||
"name": "vanilla_L_L-_IL_IL-_ILS_ILS-",
|
||||
"modes": [
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.8,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 1.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.8,
|
||||
"irLaser": 1.0
|
||||
}
|
||||
],
|
||||
"_comment": "MAWL-C1+"
|
||||
}
|
||||
],
|
||||
"devices": [
|
||||
{
|
||||
"id": "544909bb4bdc2d6f028b4577",
|
||||
"_comment": "tactical_all_insight_anpeq15",
|
||||
"template": "vanilla_LS_ILS_IL_ILILS"
|
||||
},
|
||||
{
|
||||
"id": "57fd23e32459772d0805bcf1",
|
||||
"_comment": "tactical_all_holosun_ls321",
|
||||
"template": "vanilla_LS_ILS_IL_ILILS"
|
||||
},
|
||||
{
|
||||
"id": "5c06595c0db834001a66af6c",
|
||||
"_comment": "tactical_all_insight_la5",
|
||||
"template": "vanilla_LS_ILS_IL_ILILS"
|
||||
},
|
||||
{
|
||||
"id": "5c5952732e2216398b5abda2",
|
||||
"_comment": "tactical_all_zenit_perst_3",
|
||||
"template": "vanilla_LS_ILS_IL_ILILS"
|
||||
},
|
||||
{
|
||||
"id": "61605d88ffa6e502ac5e7eeb",
|
||||
"_comment": "tactical_all_wilcox_raptar_es",
|
||||
"template": "vanilla_X_LS_ILS_IL_ILILS"
|
||||
},
|
||||
{
|
||||
"id": "560d657b4bdc2da74d8b4572",
|
||||
"_comment": "tactical_all_zenit_2p_kleh_vis_laser",
|
||||
"template": "vanilla_L_LLS_LS"
|
||||
},
|
||||
{
|
||||
"id": "56def37dd2720bec348b456a",
|
||||
"_comment": "tactical_all_surefire_x400_vis_laser",
|
||||
"template": "vanilla_L_LLS_LS"
|
||||
},
|
||||
{
|
||||
"id": "5a800961159bd4315e3a1657",
|
||||
"_comment": "tactical_all_glock_gl_21_vis_lam",
|
||||
"template": "vanilla_L_LLS_LS"
|
||||
},
|
||||
{
|
||||
"id": "6272379924e29f06af4d5ecb",
|
||||
"_comment": "tactical_all_olight_baldr_pro_tan",
|
||||
"template": "vanilla_L_LLS_LS"
|
||||
},
|
||||
{
|
||||
"id": "6272370ee4013c5d7e31f418",
|
||||
"_comment": "tactical_all_olight_baldr_pro",
|
||||
"template": "vanilla_L_LLS_LS"
|
||||
},
|
||||
{
|
||||
"id": "5a5f1ce64f39f90b401987bc",
|
||||
"_comment": "tactical_all_zenit_2irs_kleh_lam",
|
||||
"template": "vanilla_IL_ILILS_ILS"
|
||||
},
|
||||
{
|
||||
"id": "5a7b483fe899ef0016170d15",
|
||||
"_comment": "tactical_all_surefire_xc1",
|
||||
"template": "vanilla_L"
|
||||
},
|
||||
{
|
||||
"id": "5b3a337e5acfc4704b4a19a0",
|
||||
"_comment": "tactical_all_zenit_2u_kleh",
|
||||
"template": "vanilla_L+"
|
||||
},
|
||||
{
|
||||
"id": "59d790f486f77403cb06aec6",
|
||||
"_comment": "flashlight_armytek_predator_pro_v3_xhp35_hi",
|
||||
"template": "vanilla_L_L"
|
||||
},
|
||||
{
|
||||
"id": "57d17c5e2459775a5c57d17d",
|
||||
"_comment": "flashlight_ultrafire_WF",
|
||||
"template": "vanilla_L_L"
|
||||
},
|
||||
{
|
||||
"id": "5b07dd285acfc4001754240d",
|
||||
"_comment": "tactical_all_steiner_las_tac_2",
|
||||
"template": "vanilla_LS"
|
||||
},
|
||||
{
|
||||
"id": "5c079ed60db834001a66b372",
|
||||
"_comment": "tactical_tt_dlp_tactical_precision_laser_sight",
|
||||
"template": "vanilla_LS"
|
||||
},
|
||||
{
|
||||
"id": "5cc9c20cd7f00c001336c65d",
|
||||
"_comment": "tactical_all_ncstar_tactical_blue_laser",
|
||||
"template": "vanilla_LS"
|
||||
},
|
||||
{
|
||||
"id": "5b30b0dc5acfc400153b7124",
|
||||
"_comment": "scope_all_holosun_hs401g5",
|
||||
"template": "vanilla_LS"
|
||||
},
|
||||
{
|
||||
"id": "6284bd5f95250a29bc628a30",
|
||||
"_comment": "scope_all_milkor_m2a1_reflex_sight",
|
||||
"template": "vanilla_LS"
|
||||
},
|
||||
{
|
||||
"id": "5d10b49bd7ad1a1a560708b0",
|
||||
"_comment": "tactical_all_insight_anpeq2",
|
||||
"template": "vanilla_ILS_ILILS"
|
||||
},
|
||||
{
|
||||
"id": "5d2369418abbc306c62e0c80",
|
||||
"_comment": "tactical_all_steiner_9021_dbal_pl",
|
||||
"template": "vanilla_L_LS_LLS_IL_ILS_ILILS"
|
||||
},
|
||||
{
|
||||
"id": "626becf9582c3e319310b837",
|
||||
"_comment": "tactical_all_insight_wmx200",
|
||||
"template": "vanilla_L_IL"
|
||||
},
|
||||
{
|
||||
"id": "644a3df63b0b6f03e101e065",
|
||||
"_comment": "MAWL-C1+",
|
||||
"template": "vanilla_L_L-_IL_IL-_ILS_ILS-"
|
||||
}
|
||||
],
|
||||
"extraDevices": [
|
||||
{
|
||||
"id": "5bffcf7a0db83400232fea79",
|
||||
"_comment": "pistolgrip_tt_pm_laser_tt_206",
|
||||
"template": "vanilla_LS"
|
||||
},
|
||||
{
|
||||
"id": "655f13e0a246670fb0373245",
|
||||
"_comment": "scope_all_wilcox_boss_xe_hp",
|
||||
"template": "vanilla_X_LS_ILS_ILILS"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,108 @@
|
|||
{
|
||||
"protocol": 1,
|
||||
"priority": 1,
|
||||
"scopeTemplates": [
|
||||
{
|
||||
"name": "_example_nv_scope_template",
|
||||
"nightVision": {
|
||||
"nullification": 0.8,
|
||||
"nullificationDarker": 0.4,
|
||||
"nullificationExtremeDark": 0.25
|
||||
},
|
||||
"thermal": null,
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "_example_thermal_scope_template",
|
||||
"nightVision": null,
|
||||
"thermal": {
|
||||
"effectiveDistance": 230
|
||||
},
|
||||
"_comment": null
|
||||
}
|
||||
],
|
||||
"scopes": [
|
||||
{
|
||||
"id": "_example_scope",
|
||||
"_comment": "_example_scope",
|
||||
"template": "_example_nv_scope"
|
||||
}
|
||||
],
|
||||
"goggleTemplates": [
|
||||
{
|
||||
"name": "_example_nv_goggles",
|
||||
"nightVision": {
|
||||
"horizontalFOV": 70,
|
||||
"verticalFOV": 70,
|
||||
"nullification": 0.8,
|
||||
"nullificationDarker": 0.4,
|
||||
"nullificationExtremeDark": 0.25
|
||||
},
|
||||
"thermal": null,
|
||||
"_comment": null
|
||||
},
|
||||
{
|
||||
"name": "_example_thermal_t7",
|
||||
"nightVision": null,
|
||||
"thermal": {
|
||||
"effectiveDistance": 250,
|
||||
"horizontalFOV": 60,
|
||||
"verticalFOV": 90
|
||||
},
|
||||
"_comment": null
|
||||
}
|
||||
],
|
||||
"goggles": [
|
||||
{
|
||||
"id": "_example_thermal_goggles",
|
||||
"template": "_example_thermal_t7",
|
||||
"_comment": "_example_thermal_goggles"
|
||||
}
|
||||
],
|
||||
"deviceTemplates": [
|
||||
{
|
||||
"name": "_example_device_template",
|
||||
"modes": [
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 1.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 0.0,
|
||||
"irLaser": 1.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 0.0
|
||||
},
|
||||
{
|
||||
"light": 0.0,
|
||||
"laser": 0.0,
|
||||
"irLight": 1.0,
|
||||
"irLaser": 1.0
|
||||
}
|
||||
],
|
||||
"_comment": null
|
||||
}
|
||||
],
|
||||
"devices": [
|
||||
{
|
||||
"id": "_example_device",
|
||||
"_comment": "_example_device",
|
||||
"template": "_example_device_template"
|
||||
}
|
||||
],
|
||||
"extraDevices": [
|
||||
{
|
||||
"id": "_example_device",
|
||||
"_comment": "_example_device",
|
||||
"template": "_example_device_template"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
[General]
|
||||
gameName=spt
|
||||
modid=0
|
||||
version=d2024.12.31.0
|
||||
newestVersion=
|
||||
category="1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=ThatsLit_1.3100.1.zip
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-12-16T06:41:53Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
1\modid=0
|
||||
1\fileid=0
|
||||
size=1
|
|
@ -1,4 +1,3 @@
|
|||
# This file was automatically generated by Mod Organizer.
|
||||
+Unsorted_separator
|
||||
-Version 1.26.0_separator
|
||||
-Visceral Combat
|
||||
|
|
Loading…
Reference in New Issue