-
Notifications
You must be signed in to change notification settings - Fork 8
/
ModSettings.cs
197 lines (154 loc) · 6.16 KB
/
ModSettings.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
using Newtonsoft.Json;
using PeterHan.PLib.Options;
using UnityEngine;
namespace RomenH.GermicideLamp
{
[PeterHan.PLib.Options.RestartRequired]
[JsonObject(MemberSerialization.OptIn)]
[PeterHan.PLib.Options.ModInfo("Germicidal UV Lamps", "https://github.com/romen-h/ONI-Mods")]
public class ModSettings : SingletonOptions<ModSettings>
{
#region General
internal Color LightColor
{ get; private set; }
[JsonProperty]
[Option("Liquid UV Attenuation", "A factor that determines how effective UV light is in liquid cells.", category: "General", Format = "F3")]
public float LiquidUVAttenuation
{ get; set; }
#endregion
#region Kill Rates
[JsonProperty]
[Option("Food Poisoning Half-Life", "Determines how many seconds it takes for UV light to kill half of the germs.", category: "Disease Resistances", Format = "F3")]
public float FoodPoisoningHalfLife
{ get; set; }
[JsonProperty]
[Option("Pollen Half-Life", "Determines how many seconds it takes for UV light to kill half of the germs.", category: "Disease Resistances", Format = "F3")]
public float PollenHalfLife
{ get; set; }
[JsonProperty]
[Option("Slimelung Half-Life", "Determines how many seconds it takes for UV light to kill half of the germs.", category: "Disease Resistances", Format = "F3")]
public float SlimelungHalfLife
{ get; set; }
[JsonProperty]
[Option("Zombie Spore Half-Life", "Determines how many seconds it takes for UV light to kill half of the germs.", category: "Disease Resistances", Format = "F3")]
public float ZombieSporeHalfLife
{ get; set; }
[JsonProperty]
[Option("Modded Germ Half-Life (Fallback)", "Determines how many seconds it takes for UV light to kill half of the germs.", category: "Disease Resistances", Format = "F3")]
public float DefaultModdedGermsHalfLife
{ get; set; }
#endregion
#region Big Lamp
[JsonProperty]
[Option("Gives Dupes Sunburn", "Determines whether dupes that go near the lamp will receive sunburn.", category: "Germicidal UV Lamp (Big)")]
public bool BigLampGivesSunburn
{ get; set; }
[JsonProperty]
[Option("Power Consumption", "The amount of power consumed by the lamp in Watts.", category: "Germicidal UV Lamp (Big)", Format = "F0")]
public float BigLampPowerCost
{ get; set; }
[JsonProperty]
[Option("Strength", "A coefficient that determines how powerful the UV light is. (1.0 = 100%)", category: "Germicidal UV Lamp (Big)", Format = "F2")]
[Limit(0f, 5f)]
public float BigLampGermicidalStrength
{ get; set; }
[JsonProperty]
[Option("Range", "The range of the light from the lamp.", category: "Germicidal UV Lamp")]
public int BigLampRange
{ get; set; }
[JsonProperty]
[Option("Heat Output", "The amount of heat produced by the lamp in kDTU/s.", category: "Germicidal UV Lamp (Big)", Format = "F3")]
public float BigLampHeat
{ get; set; }
#endregion
#region Ceiling Light
[JsonProperty]
[Option("Gives Dupes Sunburn", "Determines whether dupes that go near the lamp will receive sunburn.", category: "Germicidal Ceiling Light")]
public bool CeilingLampGivesSunburn
{ get; set; }
[JsonProperty]
[Option("Power Consumption", "The amount of power consumed by the light in Watts.", category: "Germicidal Ceiling Light", Format = "F0")]
public float CeilingLampPowerCost
{ get; set; }
[JsonProperty]
[Option("Strength", "A coefficient that determines how powerful the UV light is. (1.0 = 100%)", category: "Germicidal Ceiling Light", Format = "F2")]
[Limit(0f, 5f)]
public float CeilingLampGermicidalStrength
{ get; set; }
[JsonProperty]
[Option("Horiztonal Range", "The horiztonal range of the tiles affected by the lamp.", category: "Germicidal Ceiling Light")]
public int CeilingLampRangeWidth
{ get; set; }
[JsonProperty]
[Option("Vertical Range", "The vertical range of the tiles affected by the lamp.", category: "Germicidal Ceiling Light")]
public int CeilingLampRangeHeight
{ get; set; }
[JsonProperty]
[Option("Lux", "The power of the light in lux.", category: "Germicidal Ceiling Light")]
public int CeilingLampLux
{ get; set; }
[JsonProperty]
[Option("Heat Output", "The amount of heat produced by the light in kDTU/s.", category: "Germicidal Ceiling Light", Format = "F3")]
public float CeilingLampHeat
{ get; set; }
#endregion
#region ShineBugs
[JsonProperty]
[Option("Enable UV Sun Bugs", "Determines whether Sun Bugs will emit UVC light.", "Shine Bugs")]
public bool EnableUVSunBugs
{ get; set; }
[JsonProperty]
[Option("Sun Bug Strength", "A coefficient that determines how powerful the UV light is. (1.0 = 100%)", category: "Shine Bugs", Format = "F2")]
[Limit(0f, 5f)]
public float SunBugStrength
{ get; set; }
[JsonProperty]
[Option("Sun Bug Range", "The range of UV light from Sun Bugs.", category: "Shine Bugs")]
[Limit(1, 5)]
public int SunBugRange
{ get; set; }
[JsonProperty]
[Option("Enable UV Royal Bugs", "Determines whether Royal Bugs will emit UVC light.", "Shine Bugs")]
public bool EnableUVRoyalBugs
{ get; set; }
[JsonProperty]
[Option("Royal Bug Strength", "A coefficient that determines how powerful the UV light is. (1.0 = 100%)", category: "Shine Bugs", Format = "F2")]
[Limit(0f, 5f)]
public float RoyalBugStrength
{ get; set; }
[JsonProperty]
[Option("Royal Bug Range", "The range of UV light from Royal Bugs.", category: "Shine Bugs")]
[Limit(1, 5)]
public int RoyalBugRange
{ get; set; }
#endregion
public ModSettings()
{
LightColor = new Color(0, 2f, 2f);
LiquidUVAttenuation = 0.2f;
FoodPoisoningHalfLife = 10.0f;
PollenHalfLife = 60.0f;
SlimelungHalfLife = 30.0f;
ZombieSporeHalfLife = 60.0f;
DefaultModdedGermsHalfLife = 0.0f;
BigLampGivesSunburn = true;
BigLampPowerCost = 1000f;
BigLampGermicidalStrength = 1.0f;
BigLampRange = 2;
BigLampHeat = 1f;
CeilingLampGivesSunburn = false;
CeilingLampPowerCost = 50f;
CeilingLampGermicidalStrength = 0.05f;
CeilingLampRangeWidth = 4;
CeilingLampRangeHeight = 4;
CeilingLampLux = 600;
CeilingLampHeat = 0.1f;
EnableUVSunBugs = true;
SunBugStrength = 0.1f;
SunBugRange = 2;
EnableUVRoyalBugs = true;
RoyalBugStrength = 0.5f;
RoyalBugRange = 3;
}
}
}