Skip to content
This repository was archived by the owner on Oct 19, 2022. It is now read-only.

tor 4.1.5 #91

Open
wants to merge 62 commits into
base: 1.2.0-tor
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
7d30ebd
Version 3.4.5
dwd0tcom Apr 9, 2022
70139e3
Merge pull request #333 from Eisbison/v-3-4-5
dwd0tcom Apr 9, 2022
b75ad7b
Version 4.0.0
dwd0tcom Apr 29, 2022
a5de718
Merge pull request #338 from Eisbison/v-4-0-0
dwd0tcom Apr 29, 2022
32f2e08
version 4.1.0
May 1, 2022
6ccba0f
Update README.md
Mallaris May 1, 2022
322de56
Merge pull request #342 from Eisbison/Version_4.1.0
Mallaris May 1, 2022
93121a9
Update to version 4.1.1
May 2, 2022
3d06deb
Update README.md
Mallaris May 2, 2022
c623255
Merge pull request #344 from Eisbison/4.1.1
Mallaris May 2, 2022
0b47cc8
Version 4.1.2
dwd0tcom May 17, 2022
a8b6a74
Merge pull request #351 from Eisbison/v-4-1-2
dwd0tcom May 17, 2022
c8eda67
Update to v4.1.3
May 18, 2022
18114eb
Update README.md
Mallaris May 18, 2022
1f8c2f3
update
May 24, 2022
a40b895
Merge pull request #356 from Eisbison/update
Mallaris May 24, 2022
5b89ee0
update
Jun 23, 2022
598aa73
Update README.md
Mallaris Jun 23, 2022
f87e7b8
Merge pull request #376 from Eisbison/v4.1.5
Mallaris Jun 23, 2022
5829cb3
Update 4.1.6
Jul 11, 2022
d6c5c2f
Update FUNDING.yml
dwd0tcom Aug 1, 2022
af4b339
List 7.12 as compatible in the readme
miniduikboot Aug 8, 2022
639cca8
Merge pull request #395 from miniduikboot/fix/7.12
Mallaris Aug 8, 2022
1814a69
Update v4.1.7
Aug 25, 2022
8243ded
Update to v4.2.0
Oct 26, 2022
625d192
Update README.md
Mallaris Oct 26, 2022
2fc4d59
Update README.md
Mallaris Oct 26, 2022
aa8f436
update to v4.2.1
Jan 8, 2023
a57e132
Update v4.2.1 (with fixed merge issues)
gendelo3 Jan 9, 2023
fe30e14
Update 4.3.0
Mallaris Mar 3, 2023
373cee9
Fix merge issues. v4.3.0
gendelo3 Mar 4, 2023
cf99a88
Update build.yml
gendelo3 Mar 4, 2023
d693bbc
Fix typos and errors in Readme
gendelo3 Mar 11, 2023
af353e8
Update 4.3.1
gendelo3 Mar 31, 2023
7f76a00
Update v4.3.2
gendelo3 May 20, 2023
d253174
Update v4.3.2
gendelo3 May 20, 2023
6206f94
Update v4.3.2
gendelo3 May 20, 2023
a77e6bd
.
Mallaris May 21, 2023
607b4c3
Update v4.3.3
gendelo3 Jul 16, 2023
6f1489b
update
Mallaris Jul 16, 2023
cdb5ed5
Update nuget.config / fix build for 4.3.3
gendelo3 Jul 16, 2023
2bd94e2
Update to v4.3.4
gendelo3 Aug 19, 2023
f6cfa07
Update to v4.4.0
gendelo3 Sep 20, 2023
4565333
Update to v4.4.1
gendelo3 Sep 21, 2023
39c3e3d
Update to v4.4.2
gendelo3 Sep 29, 2023
b0fef3b
Update v4.5.0
gendelo3 Dec 15, 2023
9d65875
Update v4.5.1
gendelo3 Dec 17, 2023
8c55511
Preparation for update v4.5.2
gendelo3 Mar 11, 2024
9c36355
Preparation vor Update v4.5.3
gendelo3 May 15, 2024
834b891
Update build.yml
gendelo3 Aug 1, 2024
8e63bff
Update v4.6.0
gendelo3 Aug 1, 2024
d811d0b
Update README.md
K3ndoo Jan 16, 2025
4fdae9b
files for Update V4.7.0
gendelo3 Jan 18, 2025
21f54f9
Merge branch 'main' of github.com:TheOtherRolesAU/TheOtherRoles
gendelo3 Jan 18, 2025
ce449e0
Deleting unused files from resources
gendelo3 Jan 18, 2025
ac00d01
Update README.md
K3ndoo Jan 21, 2025
1b0868f
Update README.md
K3ndoo Jan 21, 2025
a5126c5
Update README.md
K3ndoo Jan 21, 2025
5443351
Update README.md
K3ndoo Feb 18, 2025
61a70ef
Update to v4.8.0
gendelo3 Feb 23, 2025
bc45a3a
Update README.md
gendelo3 Mar 5, 2025
b782da4
Update README.md
gendelo3 Mar 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Update 4.3.1
  • Loading branch information
gendelo3 committed Mar 31, 2023
commit af353e83daa87a552aaa6dce5ff30b9f0d4b99f4
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ jobs:
with:
name: TheOtherRoles.dll
path: TheOtherRoles/bin/Release/net6.0/TheOtherRoles.dll

19 changes: 18 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ The [Role Assignment](#role-assignment) sections explains how the roles are bein
# Releases
| Among Us - Version| Mod Version | Link |
|----------|-------------|-----------------|
| 2023.2.28s| v4.3.0| [Download](https://github.com/Eisbison/TheOtherRoles/releases/download/v4.3.0/TheOtherRoles.zip)
| 2023.03.28s| v4.3.1| [Download](https://github.com/Eisbison/TheOtherRoles/releases/download/v4.3.1/TheOtherRoles.zip)
| 2023.02.28s| v4.3.0| [Download](https://github.com/Eisbison/TheOtherRoles/releases/download/v4.3.0/TheOtherRoles.zip)
| 2022.12.14s| v4.2.1| [Download](https://github.com/Eisbison/TheOtherRoles/releases/download/v4.2.1/TheOtherRoles.zip)
<details>
<summary>Click to show older versions</summary>
Expand Down Expand Up @@ -121,6 +122,20 @@ The [Role Assignment](#role-assignment) sections explains how the roles are bein
<details>
<summary>Click to show the Changelog</summary>

**Version 4.3.1**
- Update to Among Us 2023.3.28
- Added new options (Information mode - Chat/Map/Both, Roles - Evil Killing / Evil) to the snitch and fixed bugs affecting the snitch
- Changed the maximum amount per modifier to 15 (where applicable)
- Changed the colorblind text and player name to be behind certain objects again (rock on Polus etc.)
- Fixed a bug where a sidekicked bomber would not lose the bomber role
- Fixed a bug where enabled vanilla roles would be assigned even if "block vanilla roles" was turned on
- Fixed several Bugs in both Hide N Seek modes (should be playable again)
- Fixed a bug where Trickster JackInTheBoxes could sometimes not be used if they were placed behind objects
- Fixed a bug where the cosmetics of an invisible Ninja became visible when the camouflage ended
- Fixed a bug where the mini would show a "jump" in age at the end of a meeting due to the time spent in cutscenes
- Fixed a bug where the mayor would always have the mobile emergency button, no matter which setting was selected


**Version 4.3.0**
- Updated to Among Us version 2023.2.28
- Added a new role: [Bomber](#bomber)
Expand Down Expand Up @@ -1597,6 +1612,8 @@ When the Snitch only has a configurable amount of tasks left, it will be reveale
|----------|:-------------:|
| Snitch Spawn Chance | -
| Task Count Where The Snitch Will Be Revealed | -
| Information Mode | Whether the snitch will get info on the map and/or in the chat
| Targets | Snitch Will See All Evil Players or Killing Evil Players
-----------------------

## Spy
Expand Down
67 changes: 38 additions & 29 deletions TheOtherRoles/Buttons.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ static class HudManagerStartPatch
private static CustomButton huntedShieldButton;

public static Dictionary<byte, List<CustomButton>> deputyHandcuffedButtons = null;
public static PoolablePlayer morphTargetDisplay;
public static PoolablePlayer targetDisplay;

public static TMPro.TMP_Text securityGuardButtonScrewsText;
public static TMPro.TMP_Text securityGuardChargesText;
Expand Down Expand Up @@ -236,6 +236,30 @@ public static void setAllButtonsHandcuffedStatus(bool handcuffed, bool reset = f
}
}

private static void setButtonTargetDisplay(PlayerControl target, CustomButton button = null, Vector3? offset=null) {
if (target == null || button == null) {
if (targetDisplay != null) { // Reset the poolable player
targetDisplay.gameObject.SetActive(false);
GameObject.Destroy(targetDisplay.gameObject);
targetDisplay = null;
}
return;
}
// Add poolable player to the button so that the target outfit is shown
button.actionButton.cooldownTimerText.transform.localPosition = new Vector3(0, 0, -1f); // Before the poolable player
targetDisplay = UnityEngine.Object.Instantiate<PoolablePlayer>(Patches.IntroCutsceneOnDestroyPatch.playerPrefab, button.actionButton.transform);
GameData.PlayerInfo data = target.Data;
target.SetPlayerMaterialColors(targetDisplay.cosmetics.currentBodySprite.BodySprite);
targetDisplay.SetSkin(data.DefaultOutfit.SkinId, data.DefaultOutfit.ColorId);
targetDisplay.SetHat(data.DefaultOutfit.HatId, data.DefaultOutfit.ColorId);
targetDisplay.cosmetics.nameText.text = ""; // Hide the name!
targetDisplay.transform.localPosition = new Vector3(0f, 0.22f, -0.01f);
if (offset != null) targetDisplay.transform.localPosition += (Vector3)offset;
targetDisplay.transform.localScale = Vector3.one * 0.33f;
targetDisplay.setSemiTransparent(false);
targetDisplay.gameObject.SetActive(true);
}

public static void Postfix(HudManager __instance) {
initialized = false;

Expand Down Expand Up @@ -470,7 +494,7 @@ public static void createButtonsPostfix(HudManager __instance) {
RPCProcedure.setFutureShifted(Shifter.currentTarget.PlayerId);
SoundEffectsManager.play("shifterShift");
},
() => { return Shifter.shifter != null && Shifter.shifter == CachedPlayer.LocalPlayer.PlayerControl && !CachedPlayer.LocalPlayer.Data.IsDead; },
() => { return Shifter.shifter != null && Shifter.shifter == CachedPlayer.LocalPlayer.PlayerControl && Shifter.futureShift == null && !CachedPlayer.LocalPlayer.Data.IsDead; },
() => { return Shifter.currentTarget && Shifter.futureShift == null && CachedPlayer.LocalPlayer.PlayerControl.CanMove; },
() => { },
Shifter.getButtonSprite(),
Expand Down Expand Up @@ -499,18 +523,7 @@ public static void createButtonsPostfix(HudManager __instance) {
SoundEffectsManager.play("morphlingSample");

// Add poolable player to the button so that the target outfit is shown
morphlingButton.actionButton.cooldownTimerText.transform.localPosition = new Vector3(0, 0, -1f); // Before the poolable player
morphTargetDisplay = UnityEngine.Object.Instantiate<PoolablePlayer>(Patches.IntroCutsceneOnDestroyPatch.playerPrefab, morphlingButton.actionButton.transform);
GameData.PlayerInfo data = Morphling.sampledTarget.Data;
Morphling.sampledTarget.SetPlayerMaterialColors(morphTargetDisplay.cosmetics.currentBodySprite.BodySprite);
morphTargetDisplay.SetSkin(data.DefaultOutfit.SkinId, data.DefaultOutfit.ColorId);
morphTargetDisplay.SetHat(data.DefaultOutfit.HatId, data.DefaultOutfit.ColorId);
// PlayerControl.SetPetImage(data.DefaultOutfit.PetId, data.DefaultOutfit.ColorId, morphTargetDisplay.PetSlot);
morphTargetDisplay.cosmetics.nameText.text = ""; // Hide the name!
morphTargetDisplay.transform.localPosition = new Vector3(0f, 0.22f, -0.01f);
morphTargetDisplay.transform.localScale = Vector3.one * 0.33f;
morphTargetDisplay.setSemiTransparent(false);
morphTargetDisplay.gameObject.SetActive(true);
setButtonTargetDisplay(Morphling.sampledTarget, morphlingButton);
}
},
() => { return Morphling.morphling != null && Morphling.morphling == CachedPlayer.LocalPlayer.PlayerControl && !CachedPlayer.LocalPlayer.Data.IsDead; },
Expand All @@ -521,11 +534,7 @@ public static void createButtonsPostfix(HudManager __instance) {
morphlingButton.isEffectActive = false;
morphlingButton.actionButton.cooldownTimerText.color = Palette.EnabledColor;
Morphling.sampledTarget = null;
if (morphTargetDisplay != null) { // Reset the poolable player
morphTargetDisplay.gameObject.SetActive(false);
GameObject.Destroy(morphTargetDisplay.gameObject);
morphTargetDisplay = null;
}
setButtonTargetDisplay(null);
},
Morphling.getSampleSprite(),
CustomButton.ButtonPositions.upperRowLeft,
Expand All @@ -540,9 +549,7 @@ public static void createButtonsPostfix(HudManager __instance) {
SoundEffectsManager.play("morphlingMorph");

// Reset the poolable player
morphTargetDisplay.gameObject.SetActive(false);
GameObject.Destroy(morphTargetDisplay.gameObject);
morphTargetDisplay = null;
setButtonTargetDisplay(null);
}
}
);
Expand Down Expand Up @@ -1680,7 +1687,7 @@ public static void createButtonsPostfix(HudManager __instance) {
AmongUsClient.Instance.FinishRpcImmediately(writer);
mayorMeetingButton.Timer = 1f;
},
() => { return Mayor.mayor != null && Mayor.mayor == CachedPlayer.LocalPlayer.PlayerControl && !CachedPlayer.LocalPlayer.Data.IsDead; },
() => { return Mayor.mayor != null && Mayor.mayor == CachedPlayer.LocalPlayer.PlayerControl && !CachedPlayer.LocalPlayer.Data.IsDead && Mayor.meetingButton; },
() => {
mayorMeetingButton.actionButton.OverrideText("Emergency ("+ Mayor.remoteMeetingsLeft + ")");
bool sabotageActive = false;
Expand Down Expand Up @@ -1772,7 +1779,12 @@ public static void createButtonsPostfix(HudManager __instance) {
() => {
defuseButton.HasEffect = true;
},
() => { return Bomber.bomb != null && Bomb.canDefuse && !CachedPlayer.LocalPlayer.Data.IsDead; },
() => {
if (shifterShiftButton.HasButton())
defuseButton.PositionOffset = new Vector3(0f, 2f, 0f);
else
defuseButton.PositionOffset = new Vector3(0f, 1f, 0f);
return Bomber.bomb != null && Bomb.canDefuse && !CachedPlayer.LocalPlayer.Data.IsDead; },
() => {
if (defuseButton.isEffectActive && !Bomb.canDefuse) {
defuseButton.Timer = 0f;
Expand All @@ -1785,7 +1797,7 @@ public static void createButtonsPostfix(HudManager __instance) {
defuseButton.isEffectActive = false;
},
Bomb.getDefuseSprite(),
new Vector3(1f, 1f, 0),
new Vector3(0f, 1f, 0),
__instance,
null,
true,
Expand Down Expand Up @@ -1838,9 +1850,6 @@ public static void createButtonsPostfix(HudManager __instance) {
AmongUsClient.Instance.FinishRpcImmediately(writer);
RPCProcedure.uncheckedMurderPlayer(thief.PlayerId, target.PlayerId, byte.MaxValue);
}



},
() => { return Thief.thief != null && CachedPlayer.LocalPlayer.PlayerControl == Thief.thief && !CachedPlayer.LocalPlayer.Data.IsDead; },
() => { return Thief.currentTarget != null && CachedPlayer.LocalPlayer.PlayerControl.CanMove; },
Expand Down Expand Up @@ -1894,7 +1903,7 @@ public static void createButtonsPostfix(HudManager __instance) {
hunterLighterButton.actionButton.graphic.color = Palette.EnabledColor;
},
Hunter.getLightSprite(),
CustomButton.ButtonPositions.upperRowCenter,
CustomButton.ButtonPositions.upperRowFarLeft,
__instance,
KeyCode.F,
true,
Expand Down
15 changes: 8 additions & 7 deletions TheOtherRoles/CustomGameModes/HideNSeekGM.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,22 +75,23 @@ public static class Hunter {
public static float ArrowCooldown = 30f;
public static float ArrowDuration = 5f;
public static float ArrowPunish = 5f;
private static Sprite buttonSprite;
private static Sprite buttonSpriteLight;
private static Sprite buttonSpriteArrow;

public static bool isLightActive (byte playerId) {
return lightActive.Contains(playerId);
}

public static Sprite getArrowSprite() {
if (buttonSprite) return buttonSprite;
buttonSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.HideNSeekArrowButton.png", 115f);
return buttonSprite;
if (buttonSpriteArrow) return buttonSpriteArrow;
buttonSpriteArrow = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.HideNSeekArrowButton.png", 115f);
return buttonSpriteArrow;
}

public static Sprite getLightSprite() {
if (buttonSprite) return buttonSprite;
buttonSprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.LighterButton.png", 115f);
return buttonSprite;
if (buttonSpriteLight) return buttonSpriteLight;
buttonSpriteLight = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.LighterButton.png", 115f);
return buttonSpriteLight;
}

public static void clearAndReload() {
Expand Down
10 changes: 8 additions & 2 deletions TheOtherRoles/CustomOptionHolder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
namespace TheOtherRoles {
public class CustomOptionHolder {
public static string[] rates = new string[]{"0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"};
public static string[] ratesModifier = new string[]{"1", "2", "3"};
public static string[] ratesModifier = new string[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" };
public static string[] presets = new string[]{"Preset 1", "Preset 2", "Random Preset Skeld", "Random Preset Mira HQ", "Random Preset Polus", "Random Preset Airship", "Random Preset Submerged" };

public static CustomOption presetSelection;
Expand All @@ -22,6 +22,7 @@ public class CustomOptionHolder {
public static CustomOption modifiersCountMax;

public static CustomOption enableCodenameHorsemode;
public static CustomOption enableCodenameDisableHorses;

public static CustomOption mafiaSpawnRate;
public static CustomOption janitorCooldown;
Expand Down Expand Up @@ -176,6 +177,8 @@ public class CustomOptionHolder {

public static CustomOption snitchSpawnRate;
public static CustomOption snitchLeftTasksForReveal;
public static CustomOption snitchMode;
public static CustomOption snitchTargets;

public static CustomOption spySpawnRate;
public static CustomOption spyCanDieToSheriff;
Expand Down Expand Up @@ -376,7 +379,8 @@ public static void Load() {
presetSelection = CustomOption.Create(0, Types.General, cs(new Color(204f / 255f, 204f / 255f, 0, 1f), "Preset"), presets, null, true);
activateRoles = CustomOption.Create(1, Types.General, cs(new Color(204f / 255f, 204f / 255f, 0, 1f), "Enable Mod Roles And Block Vanilla Roles"), true, null, true);

if (Utilities.EventUtility.canBeEnabled) enableCodenameHorsemode = CustomOption.Create(10423, Types.General, cs(Color.green, "Enable Codename Horse"), false, null, true);
if (Utilities.EventUtility.canBeEnabled) enableCodenameHorsemode = CustomOption.Create(10423, Types.General, cs(Color.green, "Enable Codename Horsemode"), true, null, true);
if (Utilities.EventUtility.canBeEnabled) enableCodenameDisableHorses = CustomOption.Create(10424, Types.General, cs(Color.green, "Disable Horses"), false, enableCodenameHorsemode, false);

// Using new id's for the options to not break compatibilty with older versions
crewmateRolesCountMin = CustomOption.Create(300, Types.General, cs(new Color(204f / 255f, 204f / 255f, 0, 1f), "Minimum Crewmate Roles"), 15f, 0f, 15f, 1f, null, true);
Expand Down Expand Up @@ -572,6 +576,8 @@ public static void Load() {

snitchSpawnRate = CustomOption.Create(210, Types.Crewmate, cs(Snitch.color, "Snitch"), rates, null, true);
snitchLeftTasksForReveal = CustomOption.Create(219, Types.Crewmate, "Task Count Where The Snitch Will Be Revealed", 5f, 0f, 25f, 1f, snitchSpawnRate);
snitchMode = CustomOption.Create(211, Types.Crewmate, "Information Mode", new string[] { "Chat", "Map", "Chat & Map" }, snitchSpawnRate);
snitchTargets = CustomOption.Create(212, Types.Crewmate, "Targets", new string[] { "All Evil Players", "Killing Players" }, snitchSpawnRate);

spySpawnRate = CustomOption.Create(240, Types.Crewmate, cs(Spy.color, "Spy"), rates, null, true);
spyCanDieToSheriff = CustomOption.Create(241, Types.Crewmate, "Spy Can Die To Sheriff", false, spySpawnRate);
Expand Down
20 changes: 18 additions & 2 deletions TheOtherRoles/Helpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,20 @@ public static bool isNeutral(PlayerControl player) {
return false;
}

public static bool isKiller(PlayerControl player) {
return player.Data.Role.IsImpostor ||
(isNeutral(player) &&
player != Jester.jester &&
player != Arsonist.arsonist &&
player != Vulture.vulture &&
player != Lawyer.lawyer &&
player != Pursuer.pursuer);

}

public static bool isEvil(PlayerControl player) {
return player.Data.Role.IsImpostor || isNeutral(player);
}

public static bool zoomOutStatus = false;
public static void toggleZoom(bool reset=false) {
Expand All @@ -493,8 +507,10 @@ public static void toggleZoom(bool reset=false) {
if (cam != null && cam.gameObject.name == "UI Camera") cam.orthographicSize = orthographicSize; // The UI is scaled too, else we cant click the buttons. Downside: map is super small.
}

HudManagerStartPatch.zoomOutButton.Sprite = zoomOutStatus ? Helpers.loadSpriteFromResources("TheOtherRoles.Resources.PlusButton.png", 75f) : Helpers.loadSpriteFromResources("TheOtherRoles.Resources.MinusButton.png", 150f);
HudManagerStartPatch.zoomOutButton.PositionOffset = zoomOutStatus ? new Vector3(0f, 3f, 0) : new Vector3(0.4f, 2.8f, 0);
if (HudManagerStartPatch.zoomOutButton != null) {
HudManagerStartPatch.zoomOutButton.Sprite = zoomOutStatus ? Helpers.loadSpriteFromResources("TheOtherRoles.Resources.PlusButton.png", 75f) : Helpers.loadSpriteFromResources("TheOtherRoles.Resources.MinusButton.png", 150f);
HudManagerStartPatch.zoomOutButton.PositionOffset = zoomOutStatus ? new Vector3(0f, 3f, 0) : new Vector3(0.4f, 2.8f, 0);
}
ResolutionManager.ResolutionChanged.Invoke((float)Screen.width / Screen.height); // This will move button positions to the correct position.
}

Expand Down
2 changes: 1 addition & 1 deletion TheOtherRoles/Main.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ namespace TheOtherRoles
public class TheOtherRolesPlugin : BasePlugin
{
public const string Id = "me.eisbison.theotherroles";
public const string VersionString = "4.3.0";
public const string VersionString = "4.3.1";
public static uint betaDays = 0; // amount of days for the build to be usable (0 for infinite!)

public static Version Version = Version.Parse(VersionString);
Expand Down
Loading