diff --git a/src/SecExp/securityReport.tw b/src/SecExp/securityReport.tw
index 9a8f36a9742ae47132b02cdeb9c5839d1939ce02..a1c906116d818a35461c71b87114bdbb3c0efab9 100644
--- a/src/SecExp/securityReport.tw
+++ b/src/SecExp/securityReport.tw
@@ -21,6 +21,12 @@
 <br>
 
 <strong>Security</strong>:
+<<if $terrain === "oceanic">>
+	Due to the @@.green;massive econimc and logisical infesability@@ of attacking a ocenic arcology, your security force(s) has
+<<else>>
+	The @@.red;econimc and logisical fesability@@ of attacking a $terrain arcology, ensures that your security force(s) do not
+<</if>>
+ the luxury of focusing excusively on internal matters.<br>
 <<if $secMenials > 0>>
 	<<print num($secMenials)>> slaves work to improve the security of your arcology,
 	<<if $mercenaries >= 1 && $arcologyUpgrade.drones == 1>>
diff --git a/src/SpecialForce/SpecialForce.js b/src/SpecialForce/SpecialForce.js
index 4b9c3d1d328e3ce72d9b024d6e2e042f5d99c6a7..dc2c50286c2f66f934617931c948c77bb82c7946 100644
--- a/src/SpecialForce/SpecialForce.js
+++ b/src/SpecialForce/SpecialForce.js
@@ -213,7 +213,7 @@ window.SFBC = function() {
 
 window.SFReport = function() {
 	"use strict"; const V = State.variables, T = State.temporary, S = V.SF.Squad;
-	let target = 50000, baseLine = 5000, profit = 0, upkeep = 0, income = 0;
+	const target = 50000, baseLine = 5000;let profit = 0, upkeep = 0, income = 0;
 	let Multiplier = {action:1, troop:1, unit:1, depravity:1};
 	let FNG = 10, unitCap = 2500, Trade = 0.025;
 	let cost = {a:0.01,b:2.5}, NO = 1+(V.SF.Size/5), N1 = 1+(V.SF.Size/5);
@@ -242,10 +242,11 @@ window.SFReport = function() {
 	}
 	S.Troops -= V.SF.UC.num;
 	if (S.Troops > 200) {
-		Trade += 0.05*(Math.ceil(S.Troops/100));
+		Trade += 0.05*(S.Troops/200);
 		Multiplier.troop += S.Troops/200; upkeep += (S.Troops*25)/cost.a;
 		if (V.secExp > 0) {
-			V.authority += 25*(Math.ceil(S.Troops/200)); V.authority = Math.clamp(V.authority, 0, 20000);
+			V.authority += 25*(Math.ceil(S.Troops/200)); V.authority += V.SF.Size*10;
+			V.authority = Math.clamp(V.authority, 0, 20000);
 		}
 	}
 
@@ -337,10 +338,11 @@ window.SFReport = function() {
 	if (SFD > -2) Trade *= 1+SFD/2;
 
 	if (V.SF.Target === "recruit") {
-		FNG += Math.ceil(FNG*0.95);
+		FNG += FNG*0.95;
 	} else {
-		FNG += Math.ceil(FNG*0.25);
+		FNG += FNG*0.25;
 	}
+	FNG = Math.ceil(FNG/2);
 
 	if (V.SF.Target === "secure") {
 		repX((Math.ceil(V.rep*((Trade/100)*0.95))), "specialForces");
@@ -349,13 +351,13 @@ window.SFReport = function() {
 		repX((Math.ceil(V.rep*(Trade/100)*0.25)), "specialForces");
 		V.arcologies[0].prosperity = Math.ceil(V.arcologies[0].prosperity+(Trade/10)*0.25);
 	}
-	if (V.secExp > 0) V.authority += V.SF.Size*10; V.authority = Math.clamp(V.authority, 0, 20000);
 
-	income += Math.ceil( ( (baseLine* (0.09+Multiplier.troop/NO).toFixed(2) * (0.09+Multiplier.unit/NO).toFixed(2) * (0.09+Multiplier.action/NO).toFixed(2) * (0.09+Multiplier.depravity/NO).toFixed(2) ) - (upkeep*N1).toFixed(2) )/((V.SF.Size/2+S.Troops/2)*5) );
-	S.Troops += Math.round(FNG/2);
+	income += ( (baseLine* (1+Multiplier.troop/NO).toFixed(2) * (1+Multiplier.unit/NO).toFixed(2) * (1+Multiplier.action/NO).toFixed(2) * (1+Multiplier.depravity/NO).toFixed(2) ) - (upkeep*N1).toFixed(2) )/( (V.SF.Size/2+S.Troops/2)*5 );
+	if (V.SF.Target === "raiding") income *= 1.25; else income *= 1.15;
+	if (V.economy < 100) if (V.SF.Target === "raiding") income *= 14.25; else income *= 14.15;//Remove line if hard mode ever gets fixed.
+	S.Troops += FNG; income = Math.ceil(income);
 	if (V.debugMode > 0) r += `<br>income:${num(income)}, troop:${num((0.09+Multiplier.troop/NO).toFixed(2))}, unit:${num((0.09+Multiplier.unit/NO).toFixed(2))}, action:${num((0.09+Multiplier.action/NO).toFixed(2))}, depravity:${num((0.09+Multiplier.depravity/NO).toFixed(2))}, upkeep:${num((upkeep*N1).toFixed(2))}`;
 
-	if (V.economy < 100) income *= 83; //Remove line if hard mode ever gets fixed.
 	if (income >= target) profit = 1; delete V.SF.Subsidy; cashX(income, "specialForces");
 	if (S.Troops > unitCap) S.Troops = unitCap;
 	if (V.arcologies[0].prosperity > V.ProsperityCap) V.arcologies[0].prosperity = V.ProsperityCap;
@@ -374,7 +376,7 @@ window.SFReport = function() {
 	if (V.SF.Upgrade !== undefined) V.SF.Upgrade = 0; V.SF.Gift = 0;
 	V.SF.Colonel.Talk = 0; V.SF.Colonel.Fun = 0;
 
-	r += `<br>__Week ${V.week} operational report for ${V.SF.Lower}__:`;
+	r += `<br>__Week ${V.week} (AO:${V.terrain}) operational report for ${V.SF.Lower}__:`;
 	r += `<br>${V.SF.Caps} focused their ${num(S.Troops)} troops on `;
 
 	if (V.SF.Target === "recruit") {
@@ -404,7 +406,7 @@ window.SFReport = function() {
 		r += ` Per the estimates that ${SFC()} provides, an additional <span class='yellowgreen'>${cashFormat(target-income)}</span> is required for sufficient cover.`;
 	}
 
-	r += ` ${V.SF.Caps} managed to recruit ${Math.round(FNG/2)} new soldiers this week, and your reputation has <span class='green'>increased through the improvement of trade security</span>.`;
+	r += ` ${V.SF.Caps} managed to recruit ${FNG} new soldiers this week, and your reputation has <span class='green'>increased through the improvement of trade security</span>.`;
 	r += `<br>//Your instructions to ${SFC()}://`;
 
 	r += `<br>&nbsp;Deployment focus: `; //The below lines are indented to increase readability.
@@ -502,7 +504,7 @@ window.SFNameCapsCheck = function() {
 };
 
 window.SFUpgradeCost = function(cost,unit) {
-	"use strict"; const V=State.variables,T = State.temporary,S=V.SF.Squad; let value = 0;
+	"use strict"; const V = State.variables,T = State.temporary,S = V.SF.Squad; let value = 0;
 	value = cost*T.Env*(1.15+(V.SF.Size/10))*(1.15+(unit/100));
 	if ([S.Sub,S.AircraftCarrier,S.MissileSilo,S.GiantRobot,S.Satellite.lv,S.GunS,S.SpacePlane,S.Drones].includes(unit)) value *= V.HackingSkillMultiplier;
 	return Math.ceil(value);