From 1e5d8c9097c812008f2068f6fdee59c5f7cfddaf Mon Sep 17 00:00:00 2001
From: hexall90 <hexall90@gmail.com>
Date: Sun, 12 Nov 2017 11:52:40 +0100
Subject: [PATCH] fixed bad bug

---
 src/SecExp/SecExpBackwardCompatibility.tw |   1 +
 src/SecExp/secExpOptions.tw               |  45 ++++++++
 src/SecExp/widgets/miscSecExpWidgets.tw   | 124 ++++++++++++++++++++++
 src/js/utilJS.tw                          |  15 ++-
 4 files changed, 177 insertions(+), 8 deletions(-)

diff --git a/src/SecExp/SecExpBackwardCompatibility.tw b/src/SecExp/SecExpBackwardCompatibility.tw
index 6cd4232d65b..9797099c25b 100644
--- a/src/SecExp/SecExpBackwardCompatibility.tw
+++ b/src/SecExp/SecExpBackwardCompatibility.tw
@@ -840,6 +840,7 @@
 /* recalculation widgets */
 <<fixBrokenUnits>>
 <<fixBrokenStats>>
+<<fixBrokenFS>>
 <<recalcSecRestPoint>>
 <<recalcCrimeCap>>
 <<recalcReqHelots>>
diff --git a/src/SecExp/secExpOptions.tw b/src/SecExp/secExpOptions.tw
index d760e690f82..8a2218577af 100644
--- a/src/SecExp/secExpOptions.tw
+++ b/src/SecExp/secExpOptions.tw
@@ -287,6 +287,7 @@
 <br>
 
 __Debug/cheats:__
+<<silently>><<MenialPopCap>><</silently>>
 <br><<link "Stabilize average">>
 	<<for _i = 0; _i < $militiaUnits.length; _i++>>
 		<<set $militiaUnits[_i].loyalty = random(40,60)>>
@@ -352,4 +353,48 @@ __Debug/cheats:__
 <br><<link "Lower crime">>
 	<<set $crime = Math.clamp($crime - 5, 0, 100)>>
 	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Give menial slaves">>
+	<<set $helots = Math.clamp($helots + 30, 0, $PopCap)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove menial slaves">>
+	<<set $helots = Math.clamp($helots - 30, 0, $PopCap)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Give militia manpower">>
+	<<set $militiaFreeManpower += 30>>
+	<<recalcManpower>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove militia manpower">>
+	<<set $militiaFreeManpower = Math.clamp($militiaFreeManpower - 30, 0, $militiaFreeManpower)>>
+	<<recalcManpower>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Give mercs manpower">>
+	<<set $mercFreeManpower = 30>>
+	<<recalcManpower>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove mercs manpower">>
+	<<set $mercFreeManpower = Math.clamp($mercFreeManpower - 30, 0, $mercFreeManpower)>>
+	<<recalcManpower>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Add citizens">>
+	<<set $ACitizens = Math.clamp($ACitizens + 200, 0, $ACitizenLimit)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove citizens">>
+	<<set $ACitizens = Math.clamp($ACitizens - 200, 0, $ACitizenLimit)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Add slaves">>
+	<<set $ASlaves = Math.clamp($ASlaves + 200, 0, $ASlaveLimit)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove slaves">>
+	<<set $ASlaves = Math.clamp($ASlaves - 200, 0, $ASlaveLimit)>>
+	<<goto "secExpOptions">>
 <</link>>
\ No newline at end of file
diff --git a/src/SecExp/widgets/miscSecExpWidgets.tw b/src/SecExp/widgets/miscSecExpWidgets.tw
index e9e71edac01..dccc6ae5351 100644
--- a/src/SecExp/widgets/miscSecExpWidgets.tw
+++ b/src/SecExp/widgets/miscSecExpWidgets.tw
@@ -295,4 +295,128 @@
 	<<if !isInt($battlesCount)>>
 		<<set $battlesCount = 0>>
 	<</if>>
+<</widget>>
+
+<<widget "fixBrokenFS">>
+	<<if $arcologies[0].FSSubjugationist != "unset" && !isFloat($arcologies[0].FSSubjugationist)>>
+		<<set $arcologies[0].FSSubjugationist = 0>>
+		<<FSChange "Subjugationist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSGenderRadicalist != "unset" && !isFloat($arcologies[0].FSGenderRadicalist)>>
+		<br>Debug: FSGenderRadicalist = $arcologies[0].FSGenderRadicalist
+		<<set $arcologies[0].FSGenderRadicalist = 0>>
+		<<FSChange "GenderRadicalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSRestart != "unset" && !isFloat($arcologies[0].FSRestart)>>
+		<<set $arcologies[0].FSRestart = 0>>
+		<<FSChange "Eugenics" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSRepopulationFocus != "unset" && !isFloat($arcologies[0].FSRepopulationFocus)>>
+		<<set $arcologies[0].FSRepopulationFocus = 0>>
+		<<FSChange "Repopulationist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSSupremacist != "unset" && !isFloat($arcologies[0].FSSupremacist)>>
+		<<set $arcologies[0].FSSupremacist = 0>>
+		<<FSChange "Supremacist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSBodyPurist != "unset" && !isFloat($arcologies[0].FSBodyPurist)>>
+		<<set $arcologies[0].FSBodyPurist = 0>>
+		<<FSChange "BodyPurist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSPaternalist != "unset" && !isFloat($arcologies[0].FSPaternalist)>>
+		<<set $arcologies[0].FSPaternalist = 0>>
+		<<FSChange "Paternalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSSlimnessEnthusiast != "unset" && !isFloat($arcologies[0].FSSlimnessEnthusiast)>>
+		<<set $arcologies[0].FSSlimnessEnthusiast = 0>>
+		<<FSChange "SlimnessEnthusiast" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSGenderFundamentalist != "unset" && !isFloat($arcologies[0].FSGenderFundamentalist)>>
+		<<set $arcologies[0].FSGenderFundamentalist = 0>>
+		<<FSChange "GenderFundamentalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSMaturityPreferentialist != "unset" && !isFloat($arcologies[0].FSMaturityPreferentialist)>>
+		<<set $arcologies[0].FSMaturityPreferentialist = 0>>
+		<<FSChange "MaturityPreferentialist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSYouthPreferentialist != "unset" && !isFloat($arcologies[0].FSYouthPreferentialist)>>
+		<<set $arcologies[0].FSYouthPreferentialist = 0>>
+		<<FSChange "YouthPreferentialist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSTransformationFetishist != "unset" && !isFloat($arcologies[0].FSTransformationFetishist)>>
+		<<set $arcologies[0].FSTransformationFetishist = 0>>
+		<<FSChange "TransformationFetishist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSHedonisticDecadence != "unset" && !isFloat($arcologies[0].FSHedonisticDecadence)>>
+		<<set $arcologies[0].FSHedonisticDecadence = 0>>
+		<<FSChange "Hedonism" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSPhysicalIdealist != "unset" && !isFloat($arcologies[0].FSPhysicalIdealist)>>
+		<<set $arcologies[0].FSPhysicalIdealist = 0>>
+		<<FSChange "PhysicalIdealist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSPastoralist != "unset" && !isFloat($arcologies[0].FSPastoralist)>>
+		<<set $arcologies[0].FSPastoralist = 0>>
+		<<FSChange "Pastoralist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSAssetExpansionist != "unset" && !isFloat($arcologies[0].FSAssetExpansionist)>>
+		<<set $arcologies[0].FSAssetExpansionist = 0>>
+		<<FSChange "AssetExpansionist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSDegradationist != "unset" && !isFloat($arcologies[0].FSDegradationist)>>
+		<<set $arcologies[0].FSDegradationist = 0>>
+		<<FSChange "Degradationist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSRomanRevivalist != "unset" && !isFloat($arcologies[0].FSRomanRevivalist)>>
+		<<set $arcologies[0].FSRomanRevivalist = 0>>
+		<<FSChange "RomanRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSChattelReligionist != "unset" && !isFloat($arcologies[0].FSChattelReligionist)>>
+		<<set $arcologies[0].FSChattelReligionist = 0>>
+		<<FSChange "ChattelReligionist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSChineseRevivalist != "unset" && !isFloat($arcologies[0].FSChineseRevivalist)>>
+		<<set $arcologies[0].FSChineseRevivalist = 0>>
+		<<FSChange "ChineseRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSArabianRevivalist != "unset" && !isFloat($arcologies[0].FSArabianRevivalist)>>
+		<<set $arcologies[0].FSArabianRevivalist = 0>>
+		<<FSChange "ArabianRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSEdoRevivalist != "unset" && !isFloat($arcologies[0].FSEdoRevivalist)>>
+		<<set $arcologies[0].FSEdoRevivalist = 0>>
+		<<FSChange "EdoRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSEgyptianRevivalist != "unset" && !isFloat($arcologies[0].FSEgyptianRevivalist)>>
+		<<set $arcologies[0].FSEgyptianRevivalist = 0>>
+		<<FSChange "EgyptianRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSAztecRevivalist != "unset" && !isFloat($arcologies[0].FSAztecRevivalist)>>
+		<<set $arcologies[0].FSAztecRevivalist = 0>>
+		<<FSChange "AztecRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
 <</widget>>
\ No newline at end of file
diff --git a/src/js/utilJS.tw b/src/js/utilJS.tw
index 9a923d27edb..67681498a19 100644
--- a/src/js/utilJS.tw
+++ b/src/js/utilJS.tw
@@ -363,14 +363,13 @@ window.Categorizer.prototype.cat = function(val, def) {
 	return result;
 };
 
-window.isInt = function(value) {
-  var x;
-  if (isNaN(value)) {
-    return false;
-  }
-  x = parseFloat(value);
-  return (x | 0) === x;
-};
+window.isFloat = function(n){
+    return n === +n && n !== (n|0);
+}
+
+window.isInt = function(n) {
+    return n === +n && n === (n|0);
+}
 
 /*
 Make everything waiting for this execute. Usage:
-- 
GitLab