From 6b05b28e2aece482c3fbe1e3fedafa46856615d1 Mon Sep 17 00:00:00 2001
From: hexall90 <hexall90@gmail.com>
Date: Sun, 26 Nov 2017 11:22:19 +0100
Subject: [PATCH] cyber enhacements

---
 TODO.txt                                | 11 +---
 src/SecExp/attackHandler.tw             | 22 +++----
 src/SecExp/rebellionHandler.tw          | 40 ++++++-------
 src/SecExp/secBarracks.tw               |  6 ++
 src/SecExp/seeUnit.tw                   | 80 +++++++++++++++++++++----
 src/SecExp/widgets/miscSecExpWidgets.tw | 14 ++++-
 src/SecExp/widgets/unitsWidgets.tw      |  9 +++
 7 files changed, 128 insertions(+), 54 deletions(-)

diff --git a/TODO.txt b/TODO.txt
index 4ffbc51e5bd..1c5ac00915c 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,10 +1,6 @@
-Rebellions:
--citizens mini events
-
 further development:
 -specialized slave schools
 -fortifications
--security based careers should have discount on secHQ upgrades
 -celebrity on propHub
 -more levels for militia edict (further militarize society)
 -conquering other arcologies?
@@ -12,11 +8,6 @@ further development:
 Events:
 -famous criminal escapes to the arcology, followed by another arcology police force
 
-Edicts:
--cyber enhancements for slave units
-
 Bugs:
 -sometimes troop counts breaks
--sometimes rebel numbers have fractionary parts
--growth stimulants can give height with fractionary parts
--weap manufacturing is a mess as always
\ No newline at end of file
+-sometimes rebel numbers have fractionary parts
\ No newline at end of file
diff --git a/src/SecExp/attackHandler.tw b/src/SecExp/attackHandler.tw
index b0a8abf0c9c..e0805d6edd2 100644
--- a/src/SecExp/attackHandler.tw
+++ b/src/SecExp/attackHandler.tw
@@ -883,9 +883,9 @@
 		<<else>>
 			<<set _loyaltyBonus = 0.30>>
 		<</if>>
-		<<set _attack += ($militiaBaseAttack + $militiaBaseAttack * $militiaUnits[_i].equip * $equipMod + $militiaBaseAttack * _expBonus + $militiaBaseAttack * _loyaltyBonus + $militiaBaseAttack * $militiaUnits[_i].SF * 0.20) * _atkMod>>
-		<<set _defense += ($militiaBaseDefense + $militiaBaseDefense * $militiaUnits[_i].equip * $equipMod + $militiaBaseDefense * _expBonus + $militiaBaseDefense * _loyaltyBonus + $militiaBaseDefense * $militiaUnits[_i].SF * 0.20) * _defMod>>
-		<<set _hp += ($militiaBaseHp + $militiaBaseHp * $militiaUnits[_i].medics * $equipMod) * $militiaUnits[_i].troops>>
+		<<set _attack += ($militiaBaseAttack + $militiaBaseAttack * $militiaUnits[_i].equip * $equipMod + $militiaBaseAttack * _expBonus + $militiaBaseAttack * _loyaltyBonus + $militiaBaseAttack * $militiaUnits[_i].SF * 0.20 + $militiaUnits[_i].cyber) * _atkMod>>
+		<<set _defense += ($militiaBaseDefense + $militiaBaseDefense * $militiaUnits[_i].equip * $equipMod + $militiaBaseDefense * _expBonus + $militiaBaseDefense * _loyaltyBonus + $militiaBaseDefense * $militiaUnits[_i].SF * 0.20 + $militiaUnits[_i].cyber) * _defMod>>
+		<<set _hp += ($militiaBaseHp + $militiaUnits[_i].cyber + $militiaBaseHp * $militiaUnits[_i].medics * 0.25) * $militiaUnits[_i].troops>>
 	<</if>>
 <</for>>
 <<for _i = 0; _i < $slaveUnits.length; _i++>>
@@ -906,9 +906,9 @@
 		<<else>>
 			<<set _loyaltyBonus = 0.30>>
 		<</if>>
-		<<set _attack += ($slaveBaseAttack + $slaveBaseAttack * $slaveUnits[_i].equip * $equipMod + $slaveBaseAttack * _expBonus + $slaveBaseAttack * _loyaltyBonus + $slaveBaseAttack * $slaveUnits[_i].SF * 0.20) * _atkMod>>
-		<<set _defense += ($slaveBaseDefense + $slaveBaseDefense * $slaveUnits[_i].equip * $equipMod + $slaveBaseDefense * _expBonus + $slaveBaseDefense * _loyaltyBonus + $slaveBaseDefense * $slaveUnits[_i].SF * 0.20) * _defMod>>
-		<<set _hp += ($slaveBaseHp + $slaveBaseHp * $slaveUnits[_i].medics * 0.25) * $slaveUnits[_i].troops>>
+		<<set _attack += ($slaveBaseAttack + $slaveBaseAttack * $slaveUnits[_i].equip * $equipMod + $slaveBaseAttack * _expBonus + $slaveBaseAttack * _loyaltyBonus + $slaveBaseAttack * $slaveUnits[_i].SF * 0.20 + $slaveUnits[_i].cyber) * _atkMod>>
+		<<set _defense += ($slaveBaseDefense + $slaveBaseDefense * $slaveUnits[_i].equip * $equipMod + $slaveBaseDefense * _expBonus + $slaveBaseDefense * _loyaltyBonus + $slaveBaseDefense * $slaveUnits[_i].SF * 0.20 + $slaveUnits[_i].cyber) * _defMod>>
+		<<set _hp += ($slaveBaseHp + $slaveUnits[_i].cyber + $slaveBaseHp * $slaveUnits[_i].medics * 0.25) * $slaveUnits[_i].troops>>
 	<</if>>
 <</for>>
 <<for _i = 0; _i < $mercUnits.length; _i++>>
@@ -929,9 +929,9 @@
 		<<else>>
 			<<set _loyaltyBonus = 0.30>>
 		<</if>>
-		<<set _attack += ($mercBaseAttack + $mercBaseAttack * $mercUnits[_i].equip * $equipMod + $mercBaseAttack * _expBonus + $mercBaseAttack * _loyaltyBonus + $mercBaseAttack * $mercUnits[_i].SF * 0.20) * _atkMod>>
-		<<set _defense += ($mercBaseDefense + $mercBaseDefense * $mercUnits[_i].equip * $equipMod + $mercBaseDefense * _expBonus + $mercBaseDefense * _loyaltyBonus + $mercBaseDefense * $mercUnits[_i].SF * 0.20) * _defMod>>
-		<<set _hp += ($mercBaseHp + $mercBaseHp * $mercUnits[_i].medics * 0.25) * $mercUnits[_i].troops>>
+		<<set _attack += ($mercBaseAttack + $mercBaseAttack * $mercUnits[_i].equip * $equipMod + $mercBaseAttack * _expBonus + $mercBaseAttack * _loyaltyBonus + $mercBaseAttack * $mercUnits[_i].SF * 0.20 + $mercUnits[_i].cyber) * _atkMod>>
+		<<set _defense += ($mercBaseDefense + $mercBaseDefense * $mercUnits[_i].equip * $equipMod + $mercBaseDefense * _expBonus + $mercBaseDefense * _loyaltyBonus + $mercBaseDefense * $mercUnits[_i].SF * 0.20 + $mercUnits[_i].cyber) * _defMod>>
+		<<set _hp += ($mercBaseHp + $mercUnits[_i].cyber + $mercBaseHp * $mercUnits[_i].medics * 0.25) * $mercUnits[_i].troops>>
 	<</if>>
 <</for>>
 
@@ -970,7 +970,7 @@
 
 <<set $troopCount = 0>>
 <<calcTroopCount>>
-<<set _moraleTroopMod = Math.clamp($troopCount / 200,1,10)>>
+<<set _moraleTroopMod = Math.clamp($troopCount / 100,1,10)>>
 
 <<set _morale = ($secBotsMorale * $deployingBots + $militiaBaseMorale * _militiaMod * $deployingMilitia + $slaveBaseMorale * _slaveMod * $deployingSlaves + $mercBaseMorale * _mercMod * $deployingMercs + $SFBaseMorale * $SFIntervention * _SFMod) / ($deployingBots + $deployingMilitia +$deployingSlaves + $deployingMercs + $SFIntervention)>>
 <<set _morale = _morale + _morale * $secBarracksUpgrades.luxury * 0.05>>	/* barracks bonus */
@@ -997,7 +997,7 @@
 	<<set _armyMod = 1>>
 <</if>>
 
-<<set _enemyMoraleTroopMod = Math.clamp($attackTroops / 400,1,5)>>
+<<set _enemyMoraleTroopMod = Math.clamp($attackTroops / 200,1,5)>>
 
 <<if $attackType == "raiders">>
 	<<set _enemyAttack = ($raBaseAttack + $weapManu * $sellTo.raiders + $raBaseAttack * $attackEquip * $equipMod) * _armyMod>>
diff --git a/src/SecExp/rebellionHandler.tw b/src/SecExp/rebellionHandler.tw
index 81fb290a138..c33b93b649d 100644
--- a/src/SecExp/rebellionHandler.tw
+++ b/src/SecExp/rebellionHandler.tw
@@ -80,9 +80,9 @@
 		<<else>>
 			<<set _loyaltyBonus = 0.30>>
 		<</if>>
-		<<set _attack += ($militiaBaseAttack + $militiaBaseAttack * $militiaUnits[_i].equip * $equipMod + $militiaBaseAttack * _expBonus + $militiaBaseAttack * _loyaltyBonus + $militiaBaseAttack * $militiaUnits[_i].SF * 0.20)>>
-		<<set _defense += ($militiaBaseDefense + $militiaBaseDefense * $militiaUnits[_i].equip * $equipMod + $militiaBaseDefense * _expBonus + $militiaBaseDefense * _loyaltyBonus + $militiaBaseDefense * $militiaUnits[_i].SF * 0.20)>>
-		<<set _hp += ($militiaBaseHp + $militiaBaseHp * $militiaUnits[_i].medics * $equipMod) * $militiaUnits[_i].troops>>
+		<<set _attack += ($militiaBaseAttack + $militiaBaseAttack * $militiaUnits[_i].equip * $equipMod + $militiaBaseAttack * _expBonus + $militiaBaseAttack * _loyaltyBonus + $militiaBaseAttack * $militiaUnits[_i].SF * 0.20 + $militiaUnits[_i].cyber)>>
+		<<set _defense += ($militiaBaseDefense + $militiaBaseDefense * $militiaUnits[_i].equip * $equipMod + $militiaBaseDefense * _expBonus + $militiaBaseDefense * _loyaltyBonus + $militiaBaseDefense * $militiaUnits[_i].SF * 0.20 + $militiaUnits[_i].cyber)>>
+		<<set _hp += ($militiaBaseHp + $militiaUnits[_i].cyber + $militiaBaseHp * $militiaUnits[_i].medics * 0.25) * $militiaUnits[_i].troops>>
 	<</if>>
 <</for>>
 <<for _i = 0; _i < $slaveUnits.length; _i++>>
@@ -105,9 +105,9 @@
 		<<else>>
 			<<set _loyaltyBonus = 0.30>>
 		<</if>>
-		<<set _attack += ($slaveBaseAttack + $slaveBaseAttack * $slaveUnits[_i].equip * $equipMod + $slaveBaseAttack * _expBonus + $slaveBaseAttack * _loyaltyBonus + $slaveBaseAttack * $slaveUnits[_i].SF * 0.20)>>
-		<<set _defense += ($slaveBaseDefense + $slaveBaseDefense * $slaveUnits[_i].equip * $equipMod + $slaveBaseDefense * _expBonus + $slaveBaseDefense * _loyaltyBonus + $slaveBaseDefense * $slaveUnits[_i].SF * 0.20)>>
-		<<set _hp += ($slaveBaseHp + $slaveBaseHp * $slaveUnits[_i].medics * 0.25) * $slaveUnits[_i].troops>>
+		<<set _attack += ($slaveBaseAttack + $slaveBaseAttack * $slaveUnits[_i].equip * $equipMod + $slaveBaseAttack * _expBonus + $slaveBaseAttack * _loyaltyBonus + $slaveBaseAttack * $slaveUnits[_i].SF * 0.20 + $slaveUnits[_i].cyber)>>
+		<<set _defense += ($slaveBaseDefense + $slaveBaseDefense * $slaveUnits[_i].equip * $equipMod + $slaveBaseDefense * _expBonus + $slaveBaseDefense * _loyaltyBonus + $slaveBaseDefense * $slaveUnits[_i].SF * 0.20 + $slaveUnits[_i].cyber)>>
+		<<set _hp += ($slaveBaseHp + $slaveUnits[_i].cyber + $slaveBaseHp * $slaveUnits[_i].medics * 0.25) * $slaveUnits[_i].troops>>
 	<</if>>
 <</for>>
 <<for _i = 0; _i < $mercUnits.length; _i++>>
@@ -130,9 +130,9 @@
 		<<else>>
 			<<set _loyaltyBonus = 0.30>>
 		<</if>>
-		<<set _attack += ($mercBaseAttack + $mercBaseAttack * $mercUnits[_i].equip * $equipMod + $mercBaseAttack * _expBonus + $mercBaseAttack * _loyaltyBonus + $mercBaseAttack * $mercUnits[_i].SF * 0.20)>>
-		<<set _defense += ($mercBaseDefense + $mercBaseDefense * $mercUnits[_i].equip * $equipMod + $mercBaseDefense * _expBonus + $mercBaseDefense * _loyaltyBonus + $mercBaseDefense * $mercUnits[_i].SF * 0.20)>>
-		<<set _hp += ($mercBaseHp + $mercBaseHp * $mercUnits[_i].medics * 0.25) * $mercUnits[_i].troops>>
+		<<set _attack += ($mercBaseAttack + $mercBaseAttack * $mercUnits[_i].equip * $equipMod + $mercBaseAttack * _expBonus + $mercBaseAttack * _loyaltyBonus + $mercBaseAttack * $mercUnits[_i].SF * 0.20 + $mercUnits[_i].cyber)>>
+		<<set _defense += ($mercBaseDefense + $mercBaseDefense * $mercUnits[_i].equip * $equipMod + $mercBaseDefense * _expBonus + $mercBaseDefense * _loyaltyBonus + $mercBaseDefense * $mercUnits[_i].SF * 0.20 + $mercUnits[_i].cyber)>>
+		<<set _hp += ($mercBaseHp + $mercUnits[_i].cyber + $mercBaseHp * $mercUnits[_i].medics * 0.25) * $mercUnits[_i].troops>>
 	<</if>>
 <</for>>
 
@@ -174,7 +174,7 @@
 
 <<set $troopCount = 0>>
 <<calcTroopCount>>
-<<set _moraleTroopMod = Math.clamp($troopCount / 200,1,10)>>
+<<set _moraleTroopMod = Math.clamp($troopCount / 100,1,10)>>
 
 /* morale and baseHp calculation */
 <<set _morale = ($secBotsMorale * $secBots.active + $militiaBaseMorale * $deployingMilitia + $slaveBaseMorale * $deployingSlaves + $mercBaseMorale * $deployingMercs + $SFBaseMorale * $securityForceCreate) / ($secBots.active + $deployingMilitia +$deployingSlaves + $deployingMercs + $securityForceCreate)>>
@@ -221,9 +221,9 @@
 		<<else>>
 			<<set _expBonus = 0.50>>
 		<</if>>
-		<<set _enemyAttack += ($militiaBaseAttack + $militiaBaseAttack * $militiaUnits[_i].equip * $equipMod + $militiaBaseAttack * _expBonus + $militiaUnits[_i].SF)>>
-		<<set _enemyDefense += ($militiaBaseDefense + $militiaBaseDefense * $militiaUnits[_i].equip * $equipMod + $militiaBaseDefense * _expBonus + $militiaUnits[_i].SF)>>
-		<<set _enemyHp += ($militiaBaseHp + $militiaBaseHp * $militiaUnits[_i].medics * $equipMod) * $militiaUnits[_i].troops>>
+		<<set _enemyAttack += ($militiaBaseAttack + $militiaBaseAttack * $militiaUnits[_i].equip * $equipMod + $militiaBaseAttack * _expBonus + $militiaBaseAttack * $militiaUnits[_i].SF * 0.20 + $militiaUnits[_i].cyber)>>
+		<<set _enemyDefense += ($militiaBaseDefense + $militiaBaseDefense * $militiaUnits[_i].equip * $equipMod + $militiaBaseDefense * _expBonus + $militiaBaseDefense * $militiaUnits[_i].SF * 0.20 + $militiaUnits[_i].cyber)>>
+		<<set _enemyHp += ($militiaBaseHp + $militiaUnits[_i].cyber + $militiaBaseHp * $militiaUnits[_i].medics * $equipMod) * $militiaUnits[_i].troops>>
 	<</if>>
 <</for>>
 <<for _i = 0; _i < $slaveUnits.length; _i++>>
@@ -237,9 +237,9 @@
 		<<else>>
 			<<set _expBonus = 0.50>>
 		<</if>>
-		<<set _enemyAttack += ($slaveBaseAttack + $slaveBaseAttack * $slaveUnits[_i].equip * $equipMod + $slaveBaseAttack * _expBonus + $slaveUnits[_i].SF)>>
-		<<set _enemyDefense += ($slaveBaseDefense + $slaveBaseDefense * $slaveUnits[_i].equip * $equipMod + $slaveBaseDefense * _expBonus + $slaveUnits[_i].SF)>>
-		<<set _enemyHp += ($slaveBaseHp + $slaveBaseHp * $slaveUnits[_i].medics * 0.25) * $slaveUnits[_i].troops>>
+		<<set _enemyAttack += ($slaveBaseAttack + $slaveBaseAttack * $slaveUnits[_i].equip * $equipMod + $slaveBaseAttack * _expBonus + $slaveBaseAttack * $slaveUnits[_i].SF * 0.20 + $slaveUnits[_i].cyber)>>
+		<<set _enemyDefense += ($slaveBaseDefense + $slaveBaseDefense * $slaveUnits[_i].equip * $equipMod + $slaveBaseDefense * _expBonus + $slaveBaseDefense * $slaveUnits[_i].SF * 0.20 + $slaveUnits[_i].cyber)>>
+		<<set _enemyHp += ($slaveBaseHp + $slaveUnits[_i].cyber + $slaveBaseHp * $slaveUnits[_i].medics * 0.25) * $slaveUnits[_i].troops>>
 	<</if>>
 <</for>>
 <<for _i = 0; _i < $mercUnits.length; _i++>>
@@ -253,13 +253,13 @@
 		<<else>>
 			<<set _expBonus = 0.50>>
 		<</if>>
-		<<set _enemyAttack += ($mercBaseAttack + $mercBaseAttack * $mercUnits[_i].equip * $equipMod + $mercBaseAttack * _expBonus + $mercUnits[_i].SF)>>
-		<<set _enemyDefense += ($mercBaseDefense + $mercBaseDefense * $mercUnits[_i].equip * $equipMod + $mercBaseDefense * _expBonus + $mercUnits[_i].SF)>>
-		<<set _enemyHp += ($mercBaseHp + $mercBaseHp * $mercUnits[_i].medics * 0.25) * $mercUnits[_i].troops>>
+		<<set _enemyAttack += ($mercBaseAttack + $mercBaseAttack * $mercUnits[_i].equip * $equipMod + $mercBaseAttack * _expBonus + $mercBaseAttack * $mercUnits[_i].SF * 0.20 + $mercUnits[_i].cyber)>>
+		<<set _enemyDefense += ($mercBaseDefense + $mercBaseDefense * $mercUnits[_i].equip * $equipMod + $mercBaseDefense * _expBonus + $mercBaseDefense * $mercUnits[_i].SF * 0.20 + $mercUnits[_i].cyber)>>
+		<<set _enemyHp += ($mercBaseHp + $mercUnits[_i].cyber + $mercBaseHp * $mercUnits[_i].medics * 0.25) * $mercUnits[_i].troops>>
 	<</if>>
 <</for>>
 
-<<set _enemyMoraleTroopMod = Math.clamp($attackTroops / 300,1,10)>>
+<<set _enemyMoraleTroopMod = Math.clamp($attackTroops / 200,1,10)>>
 
 <<set _enemyMorale = 1.5 * ($militiaBaseMorale * $rebellingMilitia + $slaveBaseMorale * $rebellingSlaves + $mercBaseMorale * $rebellingMercs) / ($rebellingMilitia + $rebellingSlaves + $rebellingMercs)>>
 <<set _enemyMorale *= _enemyMoraleTroopMod>>
diff --git a/src/SecExp/secBarracks.tw b/src/SecExp/secBarracks.tw
index d9bd64ce6dd..8f8be1e1883 100644
--- a/src/SecExp/secBarracks.tw
+++ b/src/SecExp/secBarracks.tw
@@ -219,6 +219,7 @@ You are free to organize your menial slaves into fighting units. Currently you h
 			equip: 0,
 			training: 0,
 			loyalty: random(40,60),
+			cyber: 0,
 			medics: 0,
 			SF: 0,
 			commissars: 0,
@@ -239,6 +240,7 @@ You are free to organize your menial slaves into fighting units. Currently you h
 			equip: 0,
 			training: 0,
 			loyalty: random(40,60),
+			cyber: 0,
 			medics: 0,
 			SF: 0,
 			commissars: 0,
@@ -382,6 +384,7 @@ __Militia__
 				equip: 0,
 				training: 0,
 				loyalty: random(40,60),
+				cyber: 0,
 				medics: 0,
 				SF: 0,
 				commissars: 0,
@@ -402,6 +405,7 @@ __Militia__
 				equip: 0,
 				training: 0,
 				loyalty: random(40,60),
+				cyber: 0,
 				medics: 0,
 				SF: 0,
 				commissars: 0,
@@ -545,6 +549,7 @@ __Mercenaries__
 				equip: 0,
 				training: 0,
 				loyalty: random(40,60),
+				cyber: 0,
 				medics: 0,
 				SF: 0,
 				commissars: 0,
@@ -565,6 +570,7 @@ __Mercenaries__
 				equip: 0,
 				training: 0,
 				loyalty: random(40,60),
+				cyber: 0,
 				medics: 0,
 				SF: 0,
 				commissars: 0,
diff --git a/src/SecExp/seeUnit.tw b/src/SecExp/seeUnit.tw
index ff5202f440f..274ee5bfb57 100644
--- a/src/SecExp/seeUnit.tw
+++ b/src/SecExp/seeUnit.tw
@@ -134,6 +134,20 @@
 	<<else>>
 		<br>The unit has a perfectly trained and loyal commissar detachment, keeping under control the ambitions of the unit's officers.
 	<</if>>
+	<<if $prostheticsUpgrade >= 2 || $researchLab.advCombatPLimb == 1>>
+		<<if $militiaUnits[$targetIndex].cyber == 0>>
+			<br>
+			<<link "Provide enhanced cybernetic enhancements">>
+				<<set $militiaUnits[$targetIndex].cyber += 1>>
+				<<set $cash -= $equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 2000>>
+				<<goto "seeUnit">>
+			<</link>>
+			Will augment all soldiers of the unit with high tech cyber enhacements.
+			<br>//Costs <<print ($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 2000>> and will increase attack, defense and base hp values of the unit.//
+		<<else>>
+			<br>The unit is equipped with advanced cybernetic enhancements.
+		<</if>>	
+	<</if>>
 	<<if $militiaUnits[$targetIndex].medics == 0>>
 		<br>
 		<<link "Attach trained medics to the unit">>
@@ -181,9 +195,14 @@
 			<<set _loyaltyBonus = 30>>
 		<</if>>
 		<br>
-		<br>Militia base attack: $militiaBaseAttack <<if $humanUpgrade.attack > 0>> + $humanUpgrade.attack <</if>>(<<print Math.round($militiaBaseAttack + $militiaBaseAttack * $militiaUnits[$targetIndex].equip * $equipMod + $militiaBaseAttack * _expBonus * 0.01 + $militiaBaseAttack * _loyaltyBonus * 0.01 + $militiaBaseAttack * $militiaUnits[$targetIndex].SF * 0.20)>>)
-		<br>Militia base defense: $militiaBaseDefense <<if $humanUpgrade.defense > 0>> + $humanUpgrade.defense <</if>>(<<print Math.round($militiaBaseDefense + $militiaBaseDefense * $militiaUnits[$targetIndex].equip * $equipMod + $militiaBaseDefense * _expBonus * 0.01 + $militiaBaseDefense * _loyaltyBonus * 0.01 + $militiaBaseDefense * $militiaUnits[$targetIndex].SF * 0.20)>>)
-		<br>Equipment bonus: + <<print $militiaUnits[$targetIndex].equip * 15>>%
+		<br>Militia base attack: $militiaBaseAttack <<if $humanUpgrade.attack > 0>> + $humanUpgrade.attack <</if>>(<<print Math.round($militiaBaseAttack + $militiaUnits[$targetIndex].cyber + $militiaBaseAttack * $militiaUnits[$targetIndex].equip * $equipMod + $militiaBaseAttack * _expBonus * 0.01 + $militiaBaseAttack * _loyaltyBonus * 0.01 + $militiaBaseAttack * $militiaUnits[$targetIndex].SF * 0.20)>>)
+		<br>Militia base defense: $militiaBaseDefense <<if $humanUpgrade.defense > 0>> + $humanUpgrade.defense <</if>>(<<print Math.round($militiaBaseDefense + $militiaUnits[$targetIndex].cyber + $militiaBaseDefense * $militiaUnits[$targetIndex].equip * $equipMod + $militiaBaseDefense * _expBonus * 0.01 + $militiaBaseDefense * _loyaltyBonus * 0.01 + $militiaBaseDefense * $militiaUnits[$targetIndex].SF * 0.20)>>)
+		<<if $militiaUnits[$targetIndex].equip > 0>>
+			<br>Equipment bonus: + <<print $militiaUnits[$targetIndex].equip * 15>>%
+		<</if>>
+		<<if $militiaUnits[$targetIndex].cyber > 0>>
+			<br>Cyber ehnacements bonus: + 1
+		<</if>>
 		<<if _expBonus > 0>>
 			<br>Experience bonus: +<<print _expBonus>>%
 		<</if>>
@@ -197,7 +216,7 @@
 		<<if $secBarracksUpgrades.luxury > 0>>
 			<br>Barracks bonus: + <<print $secBarracksUpgrades.luxury * 5>>%
 		<</if>>
-		<br>Militia base hp: $militiaBaseHp <<if $humanUpgrade.hp > 0>> + $humanUpgrade.hp <</if>>(<<print Math.round($militiaBaseHp + $militiaBaseHp * $militiaUnits[$targetIndex].medics * 0.25)>>)
+		<br>Militia base hp: $militiaBaseHp <<if $humanUpgrade.hp > 0>> + $humanUpgrade.hp <</if>>(<<print Math.round($militiaBaseHp + $militiaUnits[$targetIndex].cyber + $militiaBaseHp * $militiaUnits[$targetIndex].medics * 0.25)>>)
 		<<if $militiaUnits[$targetIndex].medics > 0>>
 			<br>Medics detachment bonus: +25%
 		<</if>>
@@ -273,6 +292,20 @@
 	<<else>>
 		<br>The unit has a perfectly trained and loyal commissar detachment, keeping under control the ambitions of the unit's officers.
 	<</if>>
+	<<if $prostheticsUpgrade >= 2 || $researchLab.advCombatPLimb == 1>>
+		<<if $slaveUnits[$targetIndex].cyber == 0>>
+			<br>
+			<<link "Provide enhanced cybernetic enhancements">>
+				<<set $slaveUnits[$targetIndex].cyber += 1>>
+				<<set $cash -= $equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 2000>>
+				<<goto "seeUnit">>
+			<</link>>
+			Will augment all soldiers of the unit with high tech cyber enhacements.
+			<br>//Costs <<print ($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 2000>> and will increase attack, defense and base hp values of the unit.//
+		<<else>>
+			<br>The unit is equipped with advanced cybernetic enhancements.
+		<</if>>	
+	<</if>>
 	<<if $slaveUnits[$targetIndex].medics == 0>>
 		<br>
 		<<link "Attach trained medics to the unit">>
@@ -319,9 +352,14 @@
 			<<set _loyaltyBonus = 30>>
 		<</if>>
 		<br>
-		<br>Slaves base attack: $slaveBaseAttack <<if $humanUpgrade.attack > 0>> + $humanUpgrade.attack <</if>>(<<print Math.round($slaveBaseAttack + $slaveBaseAttack * $slaveUnits[$targetIndex].equip * $equipMod + $slaveBaseAttack * _expBonus * 0.01 + $slaveBaseAttack * _loyaltyBonus * 0.01 + $slaveBaseAttack * $slaveUnits[$targetIndex].SF * 0.20)>>)
-		<br>Slaves base defense: $slaveBaseDefense <<if $humanUpgrade.defense > 0>> + $humanUpgrade.defense <</if>>(<<print Math.round($slaveBaseDefense + $slaveBaseDefense * $slaveUnits[$targetIndex].equip * $equipMod + $slaveBaseDefense * _expBonus * 0.01 + $slaveBaseDefense * _loyaltyBonus * 0.01 + $slaveBaseDefense * $slaveUnits[$targetIndex].SF * 0.20)>>)
-		<br>Equipment bonus: + <<print $slaveUnits[$targetIndex].equip * 15>>%
+		<br>Slaves base attack: $slaveBaseAttack <<if $humanUpgrade.attack > 0>> + $humanUpgrade.attack <</if>>(<<print Math.round($slaveBaseAttack + $slaveUnits[$targetIndex].cyber + $slaveBaseAttack * $slaveUnits[$targetIndex].equip * $equipMod + $slaveBaseAttack * _expBonus * 0.01 + $slaveBaseAttack * _loyaltyBonus * 0.01 + $slaveBaseAttack * $slaveUnits[$targetIndex].SF * 0.20)>>)
+		<br>Slaves base defense: $slaveBaseDefense <<if $humanUpgrade.defense > 0>> + $humanUpgrade.defense <</if>>(<<print Math.round($slaveBaseDefense + $slaveUnits[$targetIndex].cyber + $slaveBaseDefense * $slaveUnits[$targetIndex].equip * $equipMod + $slaveBaseDefense * _expBonus * 0.01 + $slaveBaseDefense * _loyaltyBonus * 0.01 + $slaveBaseDefense * $slaveUnits[$targetIndex].SF * 0.20)>>)
+		<<if $slaveUnits[$targetIndex].equip > 0>>
+			<br>Equipment bonus: + <<print $slaveUnits[$targetIndex].equip * 15>>%
+		<</if>>
+		<<if $slaveUnits[$targetIndex].cyber > 0>>
+			<br>Cyber ehnacements bonus: + 1
+		<</if>>
 		<<if _expBonus > 0>>
 			<br>Experience bonus: +<<print _expBonus>>%
 		<</if>>
@@ -335,7 +373,7 @@
 		<<if $secBarracksUpgrades.luxury > 0>>
 			<br>Barracks bonus: + <<print $secBarracksUpgrades.luxury * 5>>%
 		<</if>>
-		<br>Slaves base hp: $slaveBaseHp <<if $humanUpgrade.hp > 0>> + $humanUpgrade.hp <</if>>(<<print Math.round($slaveBaseHp + $slaveBaseHp * $slaveUnits[$targetIndex].medics * 0.25)>>)
+		<br>Slaves base hp: $slaveBaseHp <<if $humanUpgrade.hp > 0>> + $humanUpgrade.hp <</if>>(<<print Math.round($slaveBaseHp + $slaveUnits[$targetIndex].cyber + $slaveBaseHp * $slaveUnits[$targetIndex].medics * 0.25)>>)
 		<<if $slaveUnits[$targetIndex].medics > 0>>
 			<br>Medics detachment bonus: +25%
 		<</if>>
@@ -411,6 +449,19 @@
 	<<else>>
 		<br>The unit has a perfectly trained and loyal commissar detachment, keeping under control the ambitions of the unit's officers.
 	<</if>>
+	<<if $prostheticsUpgrade >= 2 || $researchLab.advCombatPLimb == 1>>
+		<<if $mercUnits[$targetIndex].cyber == 0>>
+			<br>
+			<<link "Provide enhanced cybernetic enhancements">>
+				<<set $mercUnits[$targetIndex].cyber += 1>>
+				<<set $cash -= $equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 2000>>
+				<<goto "seeUnit">>
+			<</link>>Will augment all soldiers of the unit with high tech cyber enhacements.
+			<br>//Costs <<print ($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 2000>> and will increase attack, defense and base hp values of the unit.//
+		<<else>>
+			<br>The unit is equipped with advanced cybernetic enhancements.
+		<</if>>	
+	<</if>>
 	<<if $mercUnits[$targetIndex].medics == 0>>
 		<br>
 		<<link "Attach trained medics to the unit">>
@@ -457,9 +508,14 @@
 			<<set _loyaltyBonus = 30>>
 		<</if>>
 		<br>
-		<br>Mercenaries base attack: $mercBaseAttack <<if $humanUpgrade.attack > 0>> + $humanUpgrade.attack <</if>>(<<print Math.round($mercBaseAttack + $mercBaseAttack * $mercUnits[$targetIndex].equip * $equipMod + $mercBaseAttack * _expBonus * 0.01 + $mercBaseAttack * _loyaltyBonus * 0.01 + $mercBaseAttack * $mercUnits[$targetIndex].SF * 0.20)>>)
-		<br>Mercenaries base defense: $mercBaseDefense <<if $humanUpgrade.defense > 0>> + $humanUpgrade.defense <</if>>(<<print Math.round($mercBaseDefense + $mercBaseDefense * $mercUnits[$targetIndex].equip * $equipMod + $mercBaseDefense * _expBonus * 0.01 + $mercBaseDefense * _loyaltyBonus * 0.01 + $mercBaseDefense * $mercUnits[$targetIndex].SF * 0.20)>>)
-		<br>Equipment bonus: + <<print $mercUnits[$targetIndex].equip * 15>>%
+		<br>Mercenaries base attack: $mercBaseAttack <<if $humanUpgrade.attack > 0>> + $humanUpgrade.attack <</if>>(<<print Math.round($mercBaseAttack + $mercBaseAttack * $mercUnits[$targetIndex].equip * $equipMod + $mercBaseAttack * _expBonus * 0.01 + $mercBaseAttack * _loyaltyBonus * 0.01 + $mercBaseAttack * $mercUnits[$targetIndex].SF * 0.20 + $mercUnits[$targetIndex].cyber)>>)
+		<br>Mercenaries base defense: $mercBaseDefense <<if $humanUpgrade.defense > 0>> + $humanUpgrade.defense <</if>>(<<print Math.round($mercBaseDefense + $mercBaseDefense * $mercUnits[$targetIndex].equip * $equipMod + $mercBaseDefense * _expBonus * 0.01 + $mercBaseDefense * _loyaltyBonus * 0.01 + $mercBaseDefense * $mercUnits[$targetIndex].SF * 0.20 + $mercUnits[$targetIndex].cyber)>>)
+		<<if $mercUnits[$targetIndex].equip > 0>>
+			<br>Equipment bonus: + <<print $mercUnits[$targetIndex].equip * 15>>%
+		<</if>>
+		<<if $mercUnits[$targetIndex].cyber > 0>>
+			<br>Cyber ehnacements bonus: + 1
+		<</if>>
 		<<if _expBonus > 0>>
 			<br>Experience bonus: +<<print _expBonus>>%
 		<</if>>
@@ -473,7 +529,7 @@
 		<<if $secBarracksUpgrades.luxury > 0>>
 			<br>Barracks bonus: + <<print $secBarracksUpgrades.luxury * 5>>%
 		<</if>>
-		<br>Mercenaries base hp: $mercBaseHp <<if $humanUpgrade.hp > 0>> + $humanUpgrade.hp <</if>>(<<print Math.round($mercBaseHp + $mercBaseHp * $mercUnits[$targetIndex].medics * 0.25)>>)
+		<br>Mercenaries base hp: $mercBaseHp <<if $humanUpgrade.hp > 0>> + $humanUpgrade.hp <</if>>(<<print Math.round($mercBaseHp + $mercBaseHp * $mercUnits[$targetIndex].medics * 0.25 + $mercUnits[$targetIndex].cyber)>>)
 		<<if $mercUnits[$targetIndex].medics > 0>>
 			<br>Medics detachment bonus: +25%
 		<</if>>
diff --git a/src/SecExp/widgets/miscSecExpWidgets.tw b/src/SecExp/widgets/miscSecExpWidgets.tw
index 38828140e79..e93bcbf5451 100644
--- a/src/SecExp/widgets/miscSecExpWidgets.tw
+++ b/src/SecExp/widgets/miscSecExpWidgets.tw
@@ -248,6 +248,10 @@
 			<br>Set militia missing ID
 			<<generateUnitID $militiaUnits[_i]>>
 		<</if>>
+		<<if ndef $militiaUnits[_i].cyber>>
+			<br>Set militia missing flag
+			<<set $militiaUnits[_i].cyber = 0>>
+		<</if>>
 		<<if ndef $militiaUnits[_i].commissars>>
 			<br>Set militia missing flag
 			<<set $militiaUnits[_i].commissars = 0>>
@@ -275,6 +279,10 @@
 			<br>Set slave missing ID
 			<<generateUnitID $slaveUnits[_i]>>
 		<</if>>
+		<<if ndef $slaveUnits[_i].cyber>>
+			<br>Set slave missing flag
+			<<set $slaveUnits[_i].cyber = 0>>
+		<</if>>
 		<<if ndef $slaveUnits[_i].commissars>>
 			<br>Set slave missing flag
 			<<set $slaveUnits[_i].commissars = 0>>
@@ -299,9 +307,13 @@
 			<<set $mercUnits[_i].SF = 0>>
 		<</if>>
 		<<if ndef $mercUnits[_i].ID>>
-			<br>Set slave missing ID
+			<br>Set merc missing ID
 			<<generateUnitID $mercUnits[_i]>>
 		<</if>>
+		<<if ndef $mercUnits[_i].cyber>>
+			<br>Set merc missing flag
+			<<set $mercUnits[_i].cyber = 0>>
+		<</if>>
 		<<if ndef $mercUnits[_i].commissars>>
 			<br>Set merc missing flag
 			<<set $mercUnits[_i].commissars = 0>>
diff --git a/src/SecExp/widgets/unitsWidgets.tw b/src/SecExp/widgets/unitsWidgets.tw
index 96de0c3a899..afe8d944129 100644
--- a/src/SecExp/widgets/unitsWidgets.tw
+++ b/src/SecExp/widgets/unitsWidgets.tw
@@ -32,6 +32,9 @@
 		<<else>>
 			The unit is fanatically loyal. They would prefer death over betrayal.
 		<</if>>
+		<<if $args[0].cyber == 1>>
+			The soldiers of the unit have been enhanced with numerous cyberaugmentations which greatly increase their raw power.
+		<</if>>
 		<<if $args[0].medics == 1>>
 			The unit has a dedicated squad of medics that will follow them in battle.
 		<</if>>
@@ -75,6 +78,9 @@
 		<<else>>
 			The unit is fanatically loyal. They would prefer death over betrayal.
 		<</if>>
+		<<if $args[0].cyber == 1>>
+			The soldiers of the unit have been enhanced with numerous cyberaugmentations which greatly increase their raw power.
+		<</if>>
 		<<if $args[0].medics == 1>>
 			The unit has a dedicated squad of medics that will follow them in battle.
 		<</if>>
@@ -118,6 +124,9 @@
 		<<else>>
 			The unit is fanatically loyal. They would prefer death over betrayal.
 		<</if>>
+		<<if $args[0].cyber == 1>>
+			The soldiers of the unit have been enhanced with numerous cyberaugmentations which greatly increase their raw power.
+		<</if>>
 		<<if $args[0].medics == 1>>
 			The unit has a dedicated squad of medics that will follow them in battle.
 		<</if>>
-- 
GitLab