diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt index f80052c74c5de8763a02053c3dc7766b68ff4375..8ba014c97ab58bc7f43ebc14d512ff5e6267f333 100644 --- a/devNotes/twine JS.txt +++ b/devNotes/twine JS.txt @@ -2129,11 +2129,15 @@ window.getCost = function(array) { } } +if(State.variables.SF.Toggle && State.variables.SF.Active >= 1 && State.variables.SF.Subsidy) { + costs += Math.ceil((10000*(State.variables.SFUnit.Troops/10))*1+(State.variables.arcologies[0].prosperity/100)*1+(State.variables.SF.Units/100)); +} + // clean up if(costs < 0) { costs = 0; } else { - costs = Math.trunc(costs); + costs = Math.ceil(costs); } return costs; @@ -2391,7 +2395,7 @@ window.getSlaveCost = function(s) { cost += drugsCost * 5; break; case 'sag-B-gone': - cost += drugsCost * .1; + cost += Math.trunc(drugsCost * .1); break; case 'no drugs': case 'none': break; @@ -2403,16 +2407,16 @@ window.getSlaveCost = function(s) { cost += drugsCost * s.curatives; } if(s.aphrodisiacs !== 0) { - cost += drugsCost * Math.abs(s.aphrodisiacs); + cost += Math.trunc(drugsCost * Math.abs(s.aphrodisiacs)); } if(s.hormones !== 0) { - cost += (drugsCost * Math.abs(s.hormones) * 0.5); + cost += Math.trunc((drugsCost * Math.abs(s.hormones) * 0.5)); } if(s.bodySwap > 0) { - cost += (drugsCost * s.bodySwap * 10); + cost += Math.trunc((drugsCost * s.bodySwap * 10)); } if(s.preg === -1 && isFertile(s)) { - cost += (drugsCost * 0.5); + cost += Math.trunc((drugsCost * 0.5)); } // Promotion costs @@ -30678,3 +30682,445 @@ window.disabilityRoll = function disabilityRoll(slave) { } V.oneTimeDisableDisability = 0; }; + +/*SecForceEX JS*/ +window.SFC = function() { + const V = State.variables; + if (V.SFTradeShow.CanAttend === -1) {return `The Colonel`;} + else { + if (V.LieutenantColonel > 0) {return `Lieutenant Colonel <<= SlaveFullName($LieutenantColonel)>>`;} + else {return `a designated soldier`;}} +}; + +window.SFCR = function() { + const V = State.variables, C = V.SFColonel; + if (C.Status <= 19) {return `boss`;} + else if (C.Status <= 39) {return `friend`;} + else {return `fuckbuddy`;} +}; + +window.TroopDec = function() { + const V = State.variables, commom = "the <<print commaNum($SFUnit.Troops)>> members of $SF.Lower", S = V.SFUnit; + if (S.Troops < 100) {return `sparsely occupied, ${commom} residing within them concentrating together in a corner. The hundreds of empty beds and lockers visibly herald the future`;} + else if (S.Troops < 400) {return `lightly occupied, with ${commom} starting to spread out across them`;} + else if (S.Troops < 800) {return `moderately occupied, though ${commom} residing within have a considerable amount of extra room`;} + else if (S.Troops < 1500) {return `well-occupied, and ${commom} residing within have started to form small cliques based on section and row`;} + else {return `near capacity, and ${commom} often barter their personal loot, whether it be monetary or human, for the choicest bunks`;} +}; + +window.HSM = function() { + const V = State.variables; + if (V.PC.hacking <= -100) {return 1.5;} + else if (V.PC.hacking <= -75) {return 1.35;} + else if (V.PC.hacking <= -50) {return 1.25;} + else if (V.PC.hacking <= -25) {return 1.15;} + else if (V.PC.hacking < 0) {return 1.10;} + else if (V.PC.hacking === 0) {return 1;} + else if (V.PC.hacking <= 10) {return 0.97;} + else if (V.PC.hacking <= 25) {return 0.95;} + else if (V.PC.hacking <= 50) {return 0.90;} + else if (V.PC.hacking <= 75) {return 0.85;} + else if (V.PC.hacking <= 100) {return 0.80;} + else {return 0.75;} +}; + +window.Count = function() { + const V = State.variables, T = State.temporary, C = Math.clamp, S = V.SFUnit, E = V.economy; + T.FU = 10,S.Firebase = C(S.Firebase, 0, T.FU); + T.AU = 10,S.Armoury = C(S.Armoury, 0, T.AU); + T.DrugsU = 10,S.Drugs = C(S.Drugs, 0, T.DrugsU); + T.DU = 10,S.Drones = C(S.Drones, 0, T.DU); + T.AVU = 10,S.AV = C(S.AV, 0, T.AVU); + T.TVU = 10,S.TV = C(S.TV, 0, T.TVU); + T.AAU = 10,S.AA = C(S.AA, 0, T.AAU); + T.TAU = 10,S.TA = C(S.TA, 0, T.TAU); + if (V.PC.warfare >= 75) {T.PGTU = 10,T.SPU = 10,T.GunSU = 10,T.SatU = 10,T.GRU = 10,T.MSU = 10,T.ACU = 10,T.SubU = 10,T.HATU = 10;} + else if (V.PC.warfare >= 50) {T.PGTU = 9,T.SPU = 9,T.GunSU = 9,T.SatU = 9,T.GRU = 9,T.MSU = 9,T.ACU = 9,T.SubU = 9,T.HATU = 9;} + else {T.PGTU = 8,T.SPU = 8,T.GunSU = 8,T.SatU = 8,T.GRU = 8,T.MSU = 8,T.ACU = 8,T.SubU = 8,T.HATU = 8;} + S.PGT = C(S.PGT, 0, T.PGTU); + S.SpacePlane = C(S.SpacePlane, 0, T.SPU), S.GunS = C(S.GunS, 0, T.GunSU); + S.Satellite = C(S.Satellite, 0, T.SatU), S.GiantRobot = C(S.GiantRobot, 0, T.GRU), S.MissileSilo = C(S.MissileSilo, 0, T.MSU); + S.AircraftCarrier = C(S.AircraftCarrier, 0, T.ACU),S.Sub = C(S.Sub, 0, T.SubU),S.HAT = C(S.HAT, 0, T.HATU); + T.GU = T.AVU+T.TVU+T.PGTU, T.G = S.AV+S.TV+S.PGT; + T.H = S.AA+S.TA+S.SpacePlane+S.GunS, T.HU = T.AAU+T.TAU+T.SPU+T.GunSU; + T.LBU = T.SatU + T.MSU, T.LB = S.Satellite + S.MissileSilo; + T.Base = S.Firebase + S.Armoury + S.Drugs + S.Drones + T.H; + T.BaseU = T.FU + T.AU + T.DrugsU + T.DU + T.HU; + if (V.terrain !== "oceanic") T.LBU += T.GRU, T.LB += S.GiantRobot, T.Base += T.G, T.BaseU += T.GU; + T.max = T.BaseU + T.LBU, V.SF.Units = T.Base + T.LB; + if (V.terrain === "oceanic" || V.terrain === "marine") { + T.NY = S.AircraftCarrier + S.Sub + S.HAT, V.SF.Units += T.NY; + T.NYU = T.ACU + T.SubU + T.HATU, T.max += T.NYU;} + V.SF.Units = C(V.SF.Units, 0, T.max); + if (E < 1) {T.Env = 4;} + else if (E < 1.5) {T.Env = 3;} + else {T.Env = 2;} +}; + +window.Firebase = function() { + const V = State.variables, S = V.SFUnit; + var appear = `is currently constructed in a haphazard fashion.`, barracks = `Soldiers' cots are mixed in with weapons crates and ammunition.`, slave = `Cages for processing slaves lie off to one side,`, common = `and in the center is a common area with tables for soldiers to gather around for meals or rowdy conversations.`, garage = ``, drone = ``, hangar = ``, launch = ``, artillery = ``, comms = ``, training = ``; + + if (S.Firebase >= 1) {appear = `has had some organization put into it.`, barracks = `The majority of weapons, armor, and ammunition have been separated from the soldiers' cots into their own armory.`, garage = `A section near the outer wall of the arcology has been converted to a garage with an adjoining vehicle maintenance bay`, drone = `.`; + if (V.terrain === "oceanic") garage += ` for inter-arcology travel`;} + if (S.Firebase >= 2) barracks = `A barracks has been constructed near the armory, allowing soldiers a quieter place to sleep and store their personal spoils.`, drone = `, as well as a facility for the storage, maintenance, and deployment of armed combat drones.`; + if (S.Firebase >= 3) appear = `has become more permanent.`, barracks = `A command center has been constructed near the barracks and armory, allowing for additional support personnel.`; + if (S.Firebase >= 4) hangar = `Hangar space for storing and repairing aircraft has has been converted from unused space on the other side of the garage.`; + if (S.Firebase >= 5) { + appear = `is nearing the appearance of a military base.`, launch = `The rest of the firebase has been designated for special projects.`, artillery = `Artillery batteries are set around the base of the arcology.`; + if (V.terrain === "oceanic" || V.terrain === "marine") launch += ` A Naval Yard has been constructed in the waters near the arcology.`;} + if (S.Firebase >= 6) common = `and in the center is a common area for recreation, including a small movie theater and a mess hall.`; + if (S.Firebase >= 7) {slave = `A slave detention facility has been sectioned off to one side`; + if (V.SF.Depravity > 1.5) slave += ` emanating the sounds of rape and torture`; + slave += `,`;} + if (S.Firebase >= 8) appear = `has become a fully fledged military base.`, comms = `A Free City-wide communication network for $SF.Lower has been constructed to faciltate faster responses and efficent monitoring of the surrounding area.`; + if (S.Firebase >= 9) training = `A high-tech killhouse has been constructed to aid in soldier training.`; + if (S.Firebase >= 10) artillery = `Railgun artillery batteries are set around the base of the arcology, capable of accurately destroying enemies an absurd distance away.`; + + return `The firebase ${appear} ${barracks} ${comms} ${training} ${slave} ${common} ${garage}${drone} ${hangar} ${launch} ${artillery}`; +}; + +window.Armoury = function() { + const V = State.variables, S = V.SFUnit; + var weapons = `The weapons are mostly worn rifles that have already seen years of service before $SF.Lower aquired them.`, armor = `The body armor is enough to stop smaller calibers, but nothing serious.`, comms = ``, helmets = ``, ammo = ``, uniforms = ``, special = ``, exo = ``; + + if (S.Armoury >= 1) comms = `Radios have been wired into the soldiers helmets`, helmets = `.`; + if (S.Armoury >= 2) helmets = ` and a HUD has been integrated into the soldier's eyewear.`; + if (S.Armoury >= 3) ammo = `Tactical vests have been provided, allowing soldiers to carry additional ammo.`; + if (S.Armoury >= 4) armor = `The body armor is a newer variant, able to stop small arms fire and protect against shrapnel.`; + if (S.Armoury >= 5) weapons = `The weapons are modern rifles and sidearms, putting $SF.Lower on par with rival mercenary outfits.`; + if (S.Armoury >= 6) uniforms = `New uniforms have been distributed that are more comfortable and made of breatheable fabric to keep soldiers from overheating.`; + if (S.Armoury >= 7) special = `Specialized weaponry is available for various roles, allowing more flexibility in planning.`; + if (S.Armoury >= 8) helmets = `and a HUD and camera display have been integrated into soldiers' eyewear, enabling accurate aim around corners or from behind cover`; + if (S.Armoury >= 9) exo = `An exosuit has been developed to reduce the amount of weight soldiers carry, increase lifting strength, and move faster in combat.`; + if (S.Armoury >= 10) weapons = `Cutting-edge weaponry is available to $SF.Lower, far outpacing the ability of rival mercenary outfits.`; + + return `The armory holds soldiers' weapons and gear while not in training or combat. ${weapons} ${special} ${armor} ${comms}${helmets} ${ammo} ${uniforms} ${exo}`; +}; + +window.Drugs = function() { + const V = State.variables, S = V.SFUnit; + var amphet = ``, phen = ``, steroid = ``, downer = ``, concen = ``, stimpack = ``, stabilizer = ``; + + if (S.Drugs >= 1) amphet = `Amphetamines have been added to the cocktail at a low dosage to act as a stimulant, physical performance enhancer, cognition control enhancer. Some side-effects exist.`; + if (S.Drugs >= 2) phen = `Phencyclidine has been added to the cocktail at a low dosage as a dissociative psychotropic for soldiers in battle to introduce feelings of detachment, strength and invincibility, and aggression. Some side-effects reduce the tolerable dosage before soldiers go on uncontrollable violent outbreaks.`; + if (S.Drugs >= 3) steroid = `Testosterone is being produced for soldiers in training as a natural muscle growth stimulant and to invoke aggression.`; + if (S.Drugs >= 4) downer = `Zaleplon is being produced as a downer to counteract the battle cocktail and encourage rest before combat.`; + if (S.Drugs >= 5) concen = `Methylphenidate has been added to the cocktail as a stimulant and to improve soldier concentration.`; + if (S.Drugs >= 6) phen = `A phencyclidine-based drug has been added to the cocktail as a dissociative psychotropic for soldiers in battle to introduce controllable feelings of detachment, strength and invincibility, and aggression.`; + if (S.Drugs >= 7) steroid = `Low levels of anabolic steroids are being produced for soldiers in training to stimulate muscle growth and invoke aggression.`; + if (S.Drugs >= 8) amphet = `Diphenylmethylsulfinylacetamide has been added to the cocktail to counteract the effects of sleep deprivation and promote alertness.`; + if (S.Drugs >= 9) stimpack = `A stimpack of the battle cocktail is being given to soldiers in battle to take if the original dose wears off before the battle is over.`; + if (S.Drugs >= 10) stabilizer = `A stabilizer has been added to the battle cocktail that helps tie effects together while reducing side-effects, leading to an effectively safe supersoldier drug.`; + + return `A drug lab has been established to increase the effectiveness of $SF.Lower's soldiers. Many of these chemicals are mixed into a single 'battle cocktail' to be taken before combat. ${amphet} ${phen} ${concen} ${steroid} ${downer} ${stimpack} ${stabilizer}`; +}; + +window.LUAV = function() { + const V = State.variables, S = V.SFUnit; + var a = `have been recommissioned for use by $SF.Lower`, b = `.`, c = ``, d = ``, e = ``, f = ``, g = ``, h = ``, i = ``, j = ``, k = ``; + + if (S.Drones >= 2) a = `equipped with missiles are resting on one side of the drone bay`, b = `, as well as destroying the occasional target.`; + if (S.Drones >= 3) c = `A fleet of`, d = `large delivery quadcopters have been converted for military service to support ground forces as combat drones.`; + if (S.Drones >= 4) d = `combat drones take up the rest of the space in the drone bay. They have a`, e = `small automatic rifle`, f = `mounted to the underside.`; + if (S.Drones >= 5) g = `Armor has been added to protect vulnerable components from small arms fire.`; + if (S.Drones >= 6) h = `The fleet's batteries have been replaced with higher capacity models, increasing the functional time spent in combat.`; + if (S.Drones >= 7) i = `The propellers and motors have been upgraded, increasing maneuverability and speed.`; + if (S.Drones >= 8) j = `The drone control signal has been boosted and encrypted, giving the drones a greater range and protecting against electronic warfare.`; + if (S.Drones >= 9) e = `light machine gun`; + if (S.Drones >= 10) k = `A drone-to-drone network has been installed, allowing drones to swarm, maneuver, and attack targets autonomously.`; + + return `Surveillance drones ${a}. During combat, they supply aerial intel to commanders and act as the communications network for ground forces${b} ${c} ${d} ${e} ${f} ${g} ${h} ${i} ${j} ${k}`; +}; + +window.AV = function() { + const V = State.variables, S = V.SFUnit; + var b = `has been recommissioned for use by $SF.Lower. They`, c = `; mechanics are methodically checking the recent purchases for battle-readiness`, MG = `120 mm main gun is enough to handle the majority of opponents around the Free Cities.`, engine = ``, armor = ``, armor2 = ``, ammo = ``, mg = ``, fireC0 = ``, fireC1 = ``, fireC2 = ``, fireC3 = ``, turret = ``; + + if (S.AV >= 2) engine = `The engine has been overhauled, allowing much faster maneuvering around the battlefield.`, b = ``, c = ``; + if (S.AV >= 3) armor = `A composite ceramic armor has replaced the original, offering much greater protection from attacks.`; + if (S.AV >= 4) ammo = `The tanks have been outfitted with additional types of ammo for situational use.`; + if (S.AV >= 5) mg = `A remote-controlled .50 cal machine gun has been mounted on the turret to handle infantry and low-flying aircraft.`; + if (S.AV >= 6) fireC0 = `A fire-control system`, fireC3 = `been installed, guaranteeing`, fireC2 = `has`, fireC1 = `accurate fire.`; + if (S.AV >= 7) fireC2 = `and an autoloader have`, fireC1 = `rapid, accurate fire while separating the crew from the stored ammunition in the event the ammo cooks off.`; + if (S.AV >= 8) armor2 = `A reactive armor system has been added, giving the tank an additional, if temporary, layer of protection.`; + if (S.AV >= 9) turret = `The turret has been massively redesigned, lowering the tank profile and increasing the efficiency of the mechanisms within.`; + if (S.AV >= 10) MG = `140 mm main gun can quash anything even the greatest Old World nations could muster.`; + + return `A fleet of main battle tanks ${b} are parked in the garage${c}. ${turret} The ${MG} ${ammo} ${mg} ${fireC0} ${fireC2} ${fireC3} ${fireC1} ${engine} ${armor} ${armor2}`; +}; + +window.TV = function() { + const V = State.variables, S = V.SFUnit; + var B = `has been recommissioned for use by $SF.Lower. They`, C = `; mechanics are giving the new purchases a final tuneup`, squad = `a squad`, G1 = `20`, G2 = `in a firefight`, e0 = `The engine has been`, engine = ``, armor = ``, tires = ``, m1 = ``, m2 = ``, pod1 = ``, pod2 = ``; + + if (S.TV >= 2) engine = `${e0} overhauled, allowing for higher mobility.`, C = ``, B = ``; + if (S.TV >= 3) armor = `Composite armor has been bolted to the exterior, increasing the survivability of an explosive attack for the crew and passengers.`; + if (S.TV >= 4) tires = `The tires have been replaced with a much more durable version that can support a heavier vehicle.`; + if (S.TV >= 5) m1 = `An automatic missile defense system has been installed,`, m2 = `targeting any guided missiles with laser dazzlers and deploying a smokescreen.`; + if (S.TV >= 6) pod1 = `An anti-tank missle pod`, pod2 = `has been installed on the side of the turret.`; + if (S.TV >= 7) G1 = `25`, G2 = `by attacking enemies through cover and destroying light armor`; + if (S.TV >= 8) pod2 = `and an anti-aircraft missile pod have been installed on either side of the turret.`; + if (S.TV >= 9) squad = `two squads`, armor = ``, m2 = `destroying any incoming missiles with a high-powered laser. Some of the now redundant composite armor has been removed, and the reclaimed space allows for more passengers.`; + if (S.TV >= 10) engine = `${e0} replaced with the newest model, allowing the vehicle to get in and out of the conflict extremely quickly.`; + + return `A fleet of infantry fighting vehicles ${B} are parked in the garage${C}. The IFVs can carry ${squad} of 6 to a firezone. The ${G1} mm autocannon supports infantry ${G2}. ${pod1} ${pod2} ${engine} ${armor} ${tires} ${m1} ${m2}`; +}; + +window.PGT = function() { + const V = State.variables, S = V.SFUnit; + var b = `has been sold to $SF.Lower through back channels to support a failing Old World nation. The tank is so large it cannot fit inside the garage, and has`, c = ``, engines = `. Two engines power the left and right sides of the tank separately, leaving it underpowered and slow`, gun0 = ``, gun1 = ``, gun2 = `an undersized main gun and makeshift firing system from a standard battle tank`, armor1 = ``, armor0 = ``, cannon = ``, laser = ``, PGTframe = ``; + + if (S.PGT >= 2) c = `rests in`, b = ``, engines = ` and powered by their own engine, allowing the tank to travel with an unsettling speed for its massive bulk`; + if (S.PGT >= 3) gun0 = `a railgun capable of`, gun1 = `firing steel slugs`, gun2 = `through one tank and into another`; + if (S.PGT >= 4) armor0 = `reinforced, increasing survivability for the crew inside.`, armor1 = `The armor has been`; + if (S.PGT >= 5) cannon = `A coaxial 30mm autocannon has been installed in the turret, along with automated .50 cal machine guns mounted over the front treads.`; + if (S.PGT >= 6) laser = `Laser anti-missile countermeasures have been installed, destroying any subsonic ordinance fired at the Goliath.`; + if (S.PGT >= 7) PGTframe = `The frame has been reinforced, allowing the Goliath to carry more armor and gun.`; + if (S.PGT >= 8) armor0 = `redesigned with sloping and state-of-the-art materials, allowing the Goliath to shrug off even the most advanced armor-piercing tank rounds.`; + if (S.PGT >= 9) gun1 = `firing guided projectiles`; + if (S.PGT >= 10) gun0 = `a twin-barreled railgun capable of rapidly`; + + return `A prototype Goliath tank ${b}${c} its own garage housing built outside the arcology. The massive bulk is spread out over 8 tracks, two for each corner of the tank${engines}. The turret is equipped with ${gun0} ${gun1} ${gun2}. ${cannon} ${armor1} ${armor0} ${laser} ${PGTframe}`; +}; + +window.AA = function() { + const V = State.variables, S = V.SFUnit; + var W1 = `only armed`, W2 = `,`, W3 = `a poor weapon against flying targets, but enough to handle ground forces`, group = `A small group of attack VTOL have been recommissioned for use by $SF.Lower, enough to make up a squadron`, engines = ``, TAI = ``, lock = ``, support = ``, stealth = ``, scramble = ``, PAI = ``; + + if (S.AA >= 2) W1 = `armed`, W2 = ` and air-to-air missiles,`, W3 = `a combination that can defend the arcology from enemy aircraft, as well as`, support = ` support ground troops`; + if (S.AA >= 3) engines = `The engines have been tuned, allowing faster flight with greater acceleration.`; + if (S.AA >= 4) TAI = `An advanced targeting AI has been installed to handle all control of weapons, allowing much more efficent use of ammunition and anti-countermeasure targeting.`; + if (S.AA >= 5) lock = `Installed multispectrum countermeasures protect against all types of missile locks.`; + if (S.AA >= 6) group = `A respectable number of attack VTOL protect your arcology, split into a few squadrons`; + if (S.AA >= 7) support = ` attack ground targets`, W2 = `, rocket pods, and air-to-air missiles,`; + if (S.AA >= 8) stealth = `The old skin has been replaced with a radar-absorbent material, making the aircraft difficult to pick up on radar.`; + if (S.AA >= 9) scramble = `The VTOLs can scramble to react to any threat in under three minutes.`; + if (S.AA >= 10) PAI = `A piloting AI has been installed, allowing the VTOLs to perform impossible maneuvers that cannot be done by a human pilot. This removes the need for a human in the aircraft altogether.`; + + return `${group}. Several of the landing pads around $arcologies[0].name host groups of four fighters, ready to defend the arcology. ${scramble} The attack VTOL are currently ${W1} with a Gatling cannon${W2} ${W3}${support}. ${TAI} ${PAI} ${engines} ${lock} ${stealth}`; +}; + +window.TA = function() { + const V = State.variables, S = V.SFUnit; + var Num = `number`, type = `tiltrotor`, capacity = `small platoon or 15`, engines = ``, engines2 = ``, Radar = ``, Armor = ``, landing = ``, miniguns = ``, counter = ``; + + if (S.TA >= 2) engines = `The tiltrotor engines have been replaced with a more powerful engine, allowing faster travel times.`; + if (S.TA >= 3) counter = `Multispectrum countermeasures have been added to protect against guided missiles.`; + if (S.TA >= 4) miniguns = `Mounted miniguns have been installed to cover soldiers disembarking in dangerous areas.`; + if (S.TA >= 5) Num = `large number`; + if (S.TA >= 6) landing = `The landing equipment has been overhauled, protecting personel and cargo in the event of a hard landing or crash.`; + if (S.TA >= 7) Armor = `Armor has been added to protect passengers from small arms fire from below.`; + if (S.TA >= 8) capacity = `large platoon or 20`, engines2 = `Further tweaks to the engine allow for greater lifting capacity.`; + if (S.TA >= 9) Radar = `Radar-absorbent materials have replaced the old skin, making it difficult to pick up the VTOL on radar.`; + if (S.TA >= 10) type = `tiltjet`, engines2 = ``, engines = `The tiltrotors have been replaced with tiltjets, allowing for much greater airspeed and acceleration.`; + + return `A ${Num} of transport ${type} VTOL have been recommissioned for use by $SF.Lower. The VTOLs are resting on large pads near the base to load either a ${capacity} tons of materiel. ${engines} ${engines2} ${Armor} ${landing} ${counter} ${Radar} ${miniguns}`; +}; + +window.SP = function() { + const V = State.variables, S = V.SFUnit; + var engine = `ramjet engines in the atmosphere that can reach Mach 10`, b = `has been purchased from an insolvent Old World nation. It `, shield = ``, camera = ``, efficiency = ``, camera2 = ``, drag = ``, crew = ``, engine2 = ``, skin = ``; + + if (S.SpacePlane >= 2) b = ``, shield = `The current heat shielding has been upgraded, reducing the likelihood of heat damage during reentry.`; + if (S.SpacePlane >= 3) engine2 = ` and liquid rocket engines in orbit that can reach an equivalent Mach 18`; + if (S.SpacePlane >= 4) camera = `A state-of-the-art camera has been installed in the underbelly that takes incredibly high resolution photos, but requires the frictionless environment of space to focus.`; + if (S.SpacePlane >= 5) efficiency = `Tweaks to the engines have increased fuel efficency to the point where midflight refueling is no longer necessary.`; + if (S.SpacePlane >= 6) camera2 = `The camera sensor is capable of taking IR shots.`; + if (S.SpacePlane >= 7) drag = `Miraculous advances in aerodynamics and materials allow frictionless flight, even while in the atmosphere.`; + if (S.SpacePlane >= 8) crew = `Increased the crew comfort and life support systems to increase operational time.`; + if (S.SpacePlane >= 9) skin = `Replaced the underbelly skin with an chameleon kit, matching the color to the sky above it.`; + if (S.SpacePlane >= 10) engine = `experimental scramjet engines in the atmosphere that can reach Mach 15`, engine2 = ` and liquid rocket engines in orbit that can reach an equivalent Mach 25`; + + return `A prototype spaceplane ${b} rests in the hangar, its black fuselage gleaming. The craft is powered by ${engine}${engine2}. ${efficiency} ${shield} ${camera} ${camera2} ${drag} ${crew} ${skin}`; +}; + +window.GunS = function() { + const V = State.variables, S = V.SFUnit; + var a = `has been recommissioned for use by $SF.Lower. Currently, it `, b = ``, c = ``, d = ``, e = `Miniguns and Gatling cannons line`, f = `, though the distance to ground targets renders the smaller calibers somewhat less useful`, g = ``, h = ``, i = ``, j = ``, k = ``; + + if (S.GunS >= 2) b = `Infrared sensors have been added for the gunners to better pick targets.`, a = ``; + if (S.GunS >= 3) c = `The underside of the aircraft has been better armored against small-arms fire`, h = `.`; + if (S.GunS >= 4) d = `Larger fuel tanks have been installed in the wings and fuselage, allowing the gunship to provide aerial support for longer periods before refueling.`; + if (S.GunS >= 5) e = `25 mm Gatling cannons`, f = `, allowing the gunship to eliminate infantry`, j = ` and light vehicles from above`, k = ` and a 40 mm autocannon are mounted on`; + if (S.GunS >= 6) g = `The engines have been replaced, allowing both faster travel to a target, and slower travel around a target.`; + if (S.GunS >= 7) h = `, and multi-spectrum countermeasures have been installed to protect against guided missiles.`; + if (S.GunS >= 8) b = `Upgraded multi-spectrum sensors can clearly depict targets even with IR shielding.`; + if (S.GunS >= 9) i = `The ammunition storage has been increased, only slightly depriving loaders of a place to sit.`; + if (S.GunS >= 10) j = `, both light and heavy vehicles, and most enemy cover from above`, k = `, a 40 mm autocannon, and a 105 mm howitzer are mounted on`; + + return `A large gunship ${a} is being refueled in the hangar. ${e}${k} the port side of the fuselage${f}${j}. ${b} ${i} ${g} ${c}${h} ${d}`; +}; + +window.Sat = function() { + const V = State.variables, S = V.SFUnit; + var loc = `An unused science satellite has been purchased from an Old World nation. While currently useless, it holds potential to be a powerful tool.`, gyro = ``, telemetry = ``, thrusters = ``, solar = ``, surviv = ``, laser = ``, heat = ``, reactor = ``, lens = ``, kin = ``; + + if (S.Satellite >= 2) { + if (V.SatLaunched < 1) {loc = `The satellite is being worked on in the Launch Bay.`;} else {loc = `The satellite is in geosynchronous orbit, far above the arcology.`;} + gyro = `A suite of sensors have been installed to ensure the satellite can detect attitude and orbital altitude.`;} + if (S.Satellite >= 3) telemetry = `Telemetry systems have been installed to communicate with the satellite in orbit, with strong encryption measures.`; + if (S.Satellite >= 4) thrusters = `Thrusters have been installed to control satellite attitude and orbit.`; + if (S.Satellite >= 5) solar = `A massive folding solar panel array, combined with the latest in battery technology allow the satellite to store an enormous amount of energy relatively quickly.`, surviv = `Enough of the satellite has been finished that it can expect to survive for a significant period of time in space.`; + if (S.Satellite >= 6) laser = `A laser cannon has been mounted facing the earth, capable of cutting through steel in seconds`, heat = ` while generating a large amount of heat.`; + if (S.Satellite >= 7) heat = `. The installed heatsink allows the laser cannon to fire more frequently without damaging the satellite.`; + if (S.Satellite >= 8) reactor = `A small, efficient nuclear reactor has been installed to continue generating energy while in the Earth's shadow.`; + if (S.Satellite >= 9) lens = `A higher quality and adjustable lens has been installed on the laser, allowing scalpel precision on armor or wide-area blasts on unarmored targets.`; + if (S.Satellite >= 10) kin = `A magazine of directable tungsten rods have been mounted to the exterior of the satellite, allowing for kinetic bombardment roughly equal to a series of nuclear blasts.`; + + return `${loc} ${gyro} ${thrusters} ${telemetry} ${solar} ${reactor} ${surviv} ${laser}${heat} ${lens} ${kin}`; +}; + +window.GR = function() { + const V = State.variables, S = V.SFUnit; + var loc = `has been purchased from a crumbling Old World nation. It`, power = `Large batteries mounted in oversized shoulders power the robot for up to ten minutes of use, though they make for large targets.`, knife = `simply a 8.5 meter long knife, though additional weapons are under development.`, armor = ``, actuator = ``, cannon = ``, heatsink = ``, ammo = ``, missile = ``; + + if (S.GiantRobot >= 2) loc = ``, armor = `Armor plating has been mounted over the majority of the robot.`; + if (S.GiantRobot >= 3) power = `The robot is now powered by an umbilical cable system instead of bulky and short-lived batteries.`; + if (S.GiantRobot >= 4) knife = `a 25 meter plasma sword. The cutting edge uses plasma to melt and cut through targets, reducing the strain on the sword.`; + if (S.GiantRobot >= 5) actuator = `The limb actuators have been replaced with a faster and more powerful variant, granting the robot the same.`; + if (S.GiantRobot >= 6) cannon = `A custom 45 mm Gatling cannon rifle has been developed for ranged use`, ammo = `, though it lacks enough ammo storage for a main weapon.`; + if (S.GiantRobot >= 7) heatsink = `Large heatsinks have been installed out of the back to solve a massive overheating problem. These heatsinks resemble wings, and tend to glow red with heat when in heavy use.`; + if (S.GiantRobot >= 8) armor = ``, actuator = `Final actuator tweaks have allowed for the addition of exceptionally thick armor without any loss in speed or power.`; + if (S.GiantRobot >= 9) ammo = `, with spare ammunition drums kept along the robot's waist.`; + if (S.GiantRobot >= 10) missile = `Missile pods have been mounted on the shoulders.`; + + return `A prototype giant robot ${loc} rests in a gantry along the side of the arcology. The robot is as tall as a medium-sized office building, focusing on speed over other factors. ${power} ${armor} ${actuator} ${heatsink} The main armament is ${knife} ${cannon}${ammo} ${missile}`; +}; + +window.ms = function() { + const V = State.variables, S = V.SFUnit; + var a = `A cruise missile launch site has been constructed near the base of`, b = `outdated, something quickly rigged together to give the launch site something to fire in the case of an attack`, c = ``, d = ``, e = ``, f = ``, g = ``, h = ``; + + if (S.MissileSilo >= 2) b = `a modern missile`, c = `, tipped with a conventional warhead`; + if (S.MissileSilo >= 3) d = `The launch systems have been overhauled, allowing a launch within seconds of an attack order being given.`; + if (S.MissileSilo >= 4) e = `The missile engines have been tweaked, giving them a greater range.`; + if (S.MissileSilo >= 5) f = `A passive radar has been installed, allowing the missile to follow moving targets.`; + if (S.MissileSilo >= 6) a = `Several cruise missile launch sites have been constructed around`; + if (S.MissileSilo >= 7) e = `The engine has been replaced, giving the missiles greater range and supersonic speeds.`; + if (S.MissileSilo >= 8) g = `The ability to pick new targets should the original be lost has been added.`; + if (S.MissileSilo >= 9) h = `The missile now uses its remaining fuel to create a thermobaric explosion, massively increasing explosive power.`; + if (S.MissileSilo >= 10) c = ` that can be tipped with either a conventional or nuclear warhead`; + + return `${a} the arcology. The current missile armament is ${b}${c}. ${d} ${e} ${f} ${g} ${h}`; +}; + +window.AC = function() { + const V = State.variables, S = V.SFUnit; + var recom = `has been recommisioned from the Old World for $SF.Lower. It`, jets = `Formerly mothballed strike jets`, loc = ``, radar = ``, AA = ``, prop = ``, torp = ``, armor = ``, power = ``, scramble = ``; + + if (V.week % 6 === 0) { loc = `moored to the pier in the Naval Yard`; } else { loc = `patrolling the waters near $arcologies[0].name`; } + if (S.AircraftCarrier >= 2) radar = `The island's radar and comms have been improved.`, recom = ``; + if (S.AircraftCarrier >= 3) AA = `The antiair guns have been updated to automatically track and predict enemy aircraft movement.`; + if (S.AircraftCarrier >= 4) jets = `Modern strike jets with state-of-the-art armaments`; + if (S.AircraftCarrier >= 5) prop = `The propellers have been redesigned, granting greater speed with less noise.`; + if (S.AircraftCarrier >= 6) torp = `An anti-torpedo system detects and destroys incoming torpedoes.`; + if (S.AircraftCarrier >= 7) armor = `Additional armor has been added to the hull and deck.`; + if (S.AircraftCarrier >= 8) power = `The power plant has been converted to provide nuclear power.`; + if (S.AircraftCarrier >= 9) scramble = `The catapult has been converted to an electromagnetic launch system, halving the time it takes to scramble jets.`; + if (S.AircraftCarrier >= 10) jets = `Attack VTOL from the converted for carrier capability`; + + return `An aircraft carrier ${recom} is ${loc}. ${jets} serve as its airpower. ${scramble} ${power} ${radar} ${AA} ${torp} ${prop} ${armor}`; +}; + +window.Sub = function() { + const V = State.variables, S = V.SFUnit; + var recom = `has been recommissioned from the old world, and`, reactor = `Because diesel engines provide power and breathing oxygen is kept in pressurized canisters, the sub must frequently surface.`, reactor1 = ``, cal = ``, hull = ``, tubes = ``, torpedoes = ``, sonar = ``, control = ``, missiles = ``; + + if (S.Sub >= 2) recom = ``, reactor = `A nuclear reactor provides power`, reactor1 = `, but because oxygen is still kept in pressurized canisters the sub must frequently surface to replenish its oxygen stocks.`; + if (S.Sub >= 3) reactor1 = ` and an oxygen generator pulls Oâ‚‚ from the surrounding seawater, allowing the submarine to remain underwater for months if necessary.`; + if (S.Sub >= 4) cal = `Calibration of the propulsion systems has reduced the telltale hum of a moving sub to a whisper.`; + if (S.Sub >= 5) hull = `The outer hull has been redesigned for hydrodynamics and sonar absorption.`; + if (S.Sub >= 6) tubes = `The torpedo tubes have been redesigned for faster loading speeds`, torpedoes = `.`; + if (S.Sub >= 7) sonar = `The passive sonar has been finely tuned to detect mechanical noises miles away.`; + if (S.Sub >= 8) control = `The control room computers have been upgraded to automate many conn duties.`; + if (S.Sub >= 9) torpedoes = `and launch more agile torpedoes.`; + if (S.Sub >= 10) missiles = `The submarine has been outfitted with several cruise missiles to attack land or sea-based targets.`; + + return `An attack submarine ${recom} is moored to the pier of the Naval Yard. ${reactor}${reactor1} ${cal} ${hull} ${tubes}${torpedoes} ${sonar} ${control} ${missiles}`; +}; + +window.HAT = function() { + const V = State.variables, S = V.SFUnit; + var recom = `, has been recommissioned for use by $SF.Lower. It`, tons = `200`, skirt = ``, guns = ``, guns2 = ``, fans = ``, speed = ``, turbines = ``, armor = ``, ramps = ``, HATframe = ``, loadout = ``; + + if (S.HAT >= 2) skirt = `The skirt has been upgraded to increase durabilty and improve cushion when travelling over uneven terrain and waves.`, recom = `,`; + if (S.HAT >= 3) guns = `A minigun`, guns2 = `has been mounted on the front corners of the craft to defend against attackers.`; + if (S.HAT >= 4) fans = `The turbines powering the rear fans`, speed = `acceleration and speed.`, turbines = `have been replaced with a more powerful version, allowing greater`; + if (S.HAT >= 5) armor = `The armor protecting its cargo has been increased.`; + if (S.HAT >= 6) tons = `300`, fans = `The turbines powering the rear fans and impeller`, speed = `acceleration, speed, and carrying capacity.`; + if (S.HAT >= 7) guns = `A minigun and grenade launcher`; + if (S.HAT >= 8) ramps = `The loading ramps have been improved, allowing for faster unloading.`; + if (S.HAT >= 9) HATframe = `The frame has been widened and reinforced, allowing for more space on the deck.`; + if (S.HAT >= 10) loadout = `An experimental loadout sacrifices all carrying capacity to instead act as a floating gun platform by mounting several rotary autocannons the deck, should the need arise.`; + + return `An air cushion transport vehicle, or hovercraft${recom} is parked on the pier of the Naval Yard, ready to ferry ${tons} tons of soldiers and vehicles. ${guns} ${guns2} ${fans} ${turbines} ${speed} ${skirt} ${armor} ${ramps} ${HATframe} ${loadout}`; +}; + +window.Interactions = function() { + const V = State.variables, C = V.SFColonel, T = State.temporary; + var choice = ``, time = ``; + + if (V.SF.WG > 0){ + if (V.choice == 1){ + choice = `$SF.Caps is turning over spare capital in tribute this week. `; + if (V.SFTradeShow.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { + choice += `"I think I can find @@.yellowgreen;<<print cashFormat(Math.ceil($CashGift))>>@@ for you, boss."`;} + else { + choice += `"We can spare@@.yellowgreen;<<print cashFormat(Math.ceil($CashGift))>>@@ in tribute this week, `; + if (V.PC.title != 1){choice += `sir."`;}else{choice += `ma'am."`;}}} + else if (V.choice == 2){ + choice = `$SF.Caps will be throwing a military parade this week. `; + if (V.SFTradeShow.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { + choice += `"I expect the @@.green;public to enjoy@@ the parade, boss."`;} + else { + choice += `"I'll have plans for an @@.green;popular parade@@ on your desk, `; + if (V.PC.title != 1){choice += `sir."`;}else{choice += `ma'am."`;}}} + else if (V.choice == 3){ + choice = `$SF.Caps will be conducting corporate sabotage on rival arcologies' businesses. `; + if (V.SFTradeShow.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { + choice += `"Our interests should see a @@.yellowgreen;big boost@@, boss."`;} + else { + choice += `"Your @@.yellowgreen;arcology's business prospects should see an improvement@@ this week, `; + if (V.PC.title != 1){choice += `sir."`;}else{choice += `ma'am."`;}}}} + + if (C.Talk + C.Fun > 0) time = `The Colonel is busy for the rest of the week, so the Lieutenant Colonel will assist you.`; + + return `${time} <br>${choice}`; +}; + +window.ColonelQuarters = function() { + const V = State.variables, R = Math.ceil(Math.random()*100); + var out = ``; + if (R > 50){ + out = `raises a hand in greeting and nods. She is sprawled on a couch, wearing only her combat suit tank top and fingerless gloves. She's holding a near-empty bottle of strong liquor in her hand and you can see a naked slave girl kneeling on the floor between her legs. The Colonel has her legs wrapped tightly around the girl's head, forcing the girl to service her if she wants to breathe. The Colonel is close to her climax then suddenly tenses her lower body thus gripping the girl even tighter and throws her head back in ecstasy as she orgasms. She lets out a long breath finally releasing the girl, giving her a hard smack and shouting at her to fuck off.<br><br> The Colonel finishes off her bottle, tossing it over her shoulder then leaning back on the couch and spreading her legs wide. You look down briefly, falling into your habits of inspection. Her pussy is completely devoid of hair with heavy labia in with a very large and hard clit peaking out. Beads of moisture, the result of her excitation, are visible, and you can tell from long experience that she would be tight as a vise. You return your gaze to her face to find her smirking at you. "Like what you see, <<print SFCR()>>?" She waves her hand at the plaza around her, "So do they. But you're not here for pussy. You're here to talk business. So, what's up?"`; + }else if (R > 50){ + out = `is in no condition initially to greet you. She's naked except for one sock that gives you a very good view of her muscled, taut body while lunging with her feet on the table and the rest on her couch. She is face down in a drugged-out stupor in the middle of a wide variety of powders and pills. Perhaps sensing your approach, her head suddenly shoots up and looks at you with unfocused, bloodshot eyes. "Sorry, <<print SFCR()>>," she slurs, wiping her face and weakly holding up a hand. "Hold on a second, I need something to help me out here. Long fucking night." She struggles to sit on the couch and bending over the table, loudly snorts up some of the white powder on it. "Ahhh, fuck," she says, breathing heavily.<br><br> She shakes her head powerfully now looking at you, her eyes once again alert and piercing. "That's better," she says, leaning back on the couch and giving you another good view of her assets. "So, <<print SFCR()>>," she begins, "what brings you down here to our little clubhouse? I trust you're happy with how we've been handling things out there?" You nod. "Excellent", she laughs. "I have to say; it's nice to have a place like this while having some top-end gear and to be able to have fun out there without worrying about anyone coming back on us. Good fucking times." She laughs again. "So - I'm assuming you want something?"`; + }else if (R > 70 && V.SF.Depravity >= 1.5 && V.SFColonel.Core == "cruel"){ + out = `is relaxing on her couch stark naked, greeting you with a raised hand. Between her tightly clenched legs is a slave girl being forced to eat her out. "Hey, <<print SFCR()>>, what's -" she breaks off as a flash of pain crosses her features. "Fucking bitch!" she exclaims, pulling her legs away and punching the slave girl in the face. She pushes the girl to the ground, straddling her then begins hitting. You hear one crunch after another as The Colonel's powerful blows shatter the girl's face. She hisses from between clenched teeth, each word accompanied by a brutal punch. "How. Many. Fucking. Times. Have. I. Told. You. To. Watch. Your. Fucking. Teeth. On. My. Fucking. Clit!" She leans back, exhaling heavily. Before leaning back down to grip apply pressure onto the girl's neck with her powerful hands. Wordlessly, she increases the pressure and soon the girl begins to turn blue as she struggles to draw breath. Eventually her struggles weaken and then finally, end.<br><br> The Colonel relaxes her grip then wipes her brow, clearing away the sweat from her exertion. Finally rising from the girl's body, relaxing back on the couch and putting her feet back up on the table. "Sorry about that <<print SFCR()>>," she says, shrugging. "So many of these bitches we pick up from the outside don't understand that they have to behave." Shaking her head in frustration, "Now I need to find another one. But that's not your problem - you're here to talk business. So, what's up?"`; + }else{ + out = `is topless while reviewing the particulars of her unit on a tablet as you approach. She raises a hand in greeting. "Hey <<print SFCR()>>," she says, noticing you looking at her chest. She laughs. "Nice, aren't they? But they're not for you or them." She throws a thumb at the plaza around her. "You're down here for a reason, though. What can I do for you?"`;} + return `${out}`; +}; + +window.progress = function(x,max) { + var out = `â`, z, i; + if (max === undefined) { + Math.clamp(x,0,10); + if (State.variables.SF.Units < 30) { + z = 5 - x; + for (i=0;i<x;i++) out += `â–ˆâ`; + for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`; + for (i=0;i<5;i++) out += `â–‘â`;} + else { + z = 10 - x; + for (i=0;i<x;i++) out += `â–ˆâ`; + for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`;}} + else { + Math.clamp(x,0,max); + x = Math.floor(10*x/max); + z = 10 - x; + for (i=0;i<x;i++) out += `â–ˆâ`; + for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`;} + return `${out}`; +}; \ No newline at end of file diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw index 60a6cf02f1bdb2d92517dc6613f268eed54db199..87aec908e07684ebc60f238397d3df788c44486f 100644 --- a/src/init/storyInit.tw +++ b/src/init/storyInit.tw @@ -1328,70 +1328,7 @@ DairyRestraintsSetting($dairyRestraintsSetting) /* INCORPORATED MODS */ -/* Special Force Variables [SFVAR] */ - -/* Extra content enabling */ -<<set $SFMODToggle = 0>> /* Does the player want to see the SF module at all? */ - -/* Initial events and presentation logic */ -<<set $securityForceCreate = 0>> /* Has the player chosen to create the SF? Used for initial events */ -<<set $securityForceEventSeen = 0>> /* Has the player seen the SF event? Used to avoid re-event */ -<<set $securityForceName = "Special Force">> /* What is the SF called? */ -<<set $securityForceActive = 0>> /* SF is active - activates end of turn screen logic */ - -/* SF control panel and logic */ -<<set $securityForceSubsidyActive = 0>> /* Is the player having to subsidize the SF? */ -<<set $securityForceRecruit = 0>> /* How many recruits has the SF attracted this week? Used in recruitment calcs */ -<<set $securityForceTrade = 0>> /* How much trade has the SF encouraged this week? Used for rep calcs */ -<<set $securityForceBooty = 0>> /* How much money has the SF made this week? Used in money calcs */ -<<set $securityForceIncome = 0>> /* What was the final, adjusted take for the SF this week? Used for EOW text */ -<<set $securityForceProfitable = 0>> /* Is the SF profitable? Used for EOW text */ -<<set $securityForceFocus = "recruit">> /* What is the SF's assigned job? */ -<<set $securityForceRulesOfEngagement = "hold">> /* What are the SF's ROE outside the arcology? */ -<<set $securityForceAccountability = "strict">> /* Is the SF being held accountable for its actions outside the arcology? */ -<<set $securityForceDepravity = 0>> /* How depraved has the SF become? Used for flavor text injections. */ -<<set $securityForceUpgradeToken = 0>> /* Flag to keep track of single upgrade/week. */ -<<set $securityForceGiftToken = 0>> /* Flag to keep track of single gift/week. */ - -/* Personnel/Gear */ -<<set $securityForceArcologyUpgrades = 0>> /* How many militarized arcology upgrades has the player bought? */ -<<set $securityForcePersonnel = 40>> /* How big is the SF? Maxes out at battalion/regimental (~1500) strength */ -<<set $securityForceInfantryPower = 0>> /* How many infantry upgrades has the player bought? */ -<<set $securityForceStimulantPower = 0>> /* How many stimulant upgrades has the player bought? */ -<<set $securityForceVehiclePower = 0>> /* How many vehicle upgrades has the player bought? */ -<<set $securityForceHeavyBattleTank = 0>> /* Has the SF found a busted down heavy battle tank begging for work? */ -<<set $securityForceAircraftPower = 0>> /* How many aircraft upgrades has the player bought? */ -<<set $securityForceSpacePlanePower = 0>> /* Has the SF found a busted down spaceplane begging for work? */ -<<set $securityForceFortressZeppelin = 0>> /* Has the SF found a busted down fortress zeppelin begging for work? */ -<<set $securityForceAC130 = 0>> /* Has the SF found a busted down AC-130 begging for work? */ -<<set $securityForceHeavyTransport = 0>> /* Has the SF found a busted down heavy yransport begging for work? */ -<<set $securityForceDronePower = 0>> /* How many drone upgrades has the player bought? */ -<<set $securityForceSatellitePower = 0>> /* Has the SF commendeered a Satellite relay? */ -<<set $securityForceGiantRobot = 0>> /* Has the player assembled a makeshift giant robot */ -<<set $securityForceMissileSilo = 0>> /* Has the SF found a disused missile silo in need of reassignement?*/ -<<set $securityForceAircraftCarrier = 0>> /* Has the SF found a busted down aircraft carrier begging for work? */ -<<set $securityForceSubmarine = 0>> /* Has the SF found a busted down submarine begging for work? */ -<<set $securityForceHeavyAmphibiousTransport = 0>> /* Has the SF found a busted down heavy amphibious transport begging for work? */ -<<set $securityForceMissionEfficiency = 1>> /* How efficient is the SF at completing its assigned task? (Upgrades*Drug Multiplier) */ - -/* SupportFacility */ -<<set $SupportFacility = 0>> /* Is the support facility built ? */ - -/* Colonel */ -<<set $securityForceSexedColonelToken = 0>> /* Has the player sexed The Colonel this week? */ -<<set $ColonelCore = "">> /* What is the core of The Colonel? */ -<<set $securityForceColonelToken = 0>> /* Flag to keep track of talking to The Colonel. */ -<<set $securityForceColonelSexed = 0>> /* Has the player sexed The Colonel this week? */ - -/* TradeShow */ -<<set $TradeShowAttendanceGranted = 0>> /* Has The Colonel been allowed to go the TradeShow? */ -<<set $OverallTradeShowAttendance = 0>> /* how many times has The Colonel gone to the TradeShow */ -<<set $CurrentTradeShowAttendance = 0>> /* Has The Colonel attended the current TradeShow? */ -<<set $TradeShowIncome = 0>> /* How much was The Colonel able to make at the TradeShow selling generic scematics? */ -<<set $TotalTradeShowIncome = 0>> /* Total TradeShowIncome */ -<<set $TradeShowHelots = 0>> /* How many menail slaves were sent as a bonus from generic scematic sales during the current TradeShow? -<<set $TotalTradeShowHelots = 0>> /* Total number of menail slaves acquired via the Trade Show */ - +/*SFVAR*/ <<set $SF = Object.assign({}, $SF, {Toggle:0, Active: -1})>> /* Misc mod variables */ <<set $recruiterEugenics = 0>> diff --git a/src/js/SFJS.tw b/src/js/SFJS.tw deleted file mode 100644 index 088553bec9a31d3fb47f6ff7dedba1407f6394cc..0000000000000000000000000000000000000000 --- a/src/js/SFJS.tw +++ /dev/null @@ -1,51 +0,0 @@ -:: SFJS [script] - -window.simpleWorldEconomyCheck = function() { - var n1 = 4; - var n2 = 3; - var n3 = 2; - if(State.variables.economy === .5) { - return n1; - } else if(State.variables.economy === 1.5) { - return n3; - } else { - return n2; - } -} - -window.HSM = function() { - if (State.variables.PC.hacking <= -100) - return 1.5; - else if (State.variables.PC.hacking <= -75) - return 1.35; - else if (State.variables.PC.hacking <= -50) - return 1.25; - else if (State.variables.PC.hacking <= -25) - return 1.15; - else if (State.variables.PC.hacking < 0) - return 1.10; - else if (State.variables.PC.hacking === 0) - return 1; - else if (State.variables.PC.hacking <= 10) - return .97; - else if (State.variables.PC.hacking <= 25) - return .95; - else if (State.variables.PC.hacking <= 50) - return .90; - else if (State.variables.PC.hacking <= 75) - return .85; - else if (State.variables.PC.hacking < 100) - return .80; - else if (State.variables.PC.hacking >= 100) - return .75; - } - -window.TierTwoUnlockCalc = function() { - const V = State.variables; - if (V.securityForceInfantryPower > 5) V.securityForceInfantryPower = 5; - if (V.securityForceArcologyUpgrades > 5) V.securityForceArcologyUpgrades = 5; - if (V.securityForceVehiclePower > 5) V.securityForceVehiclePower = 5; - if (V.securityForceDronePower > 5) V.securityForceDronePower = 5; - if (V.securityForceStimulantPower > 5) V.securityForceStimulantPower = 5; - if (V.securityForceAircraftPower > 5) V.securityForceAircraftPower = 5; -} \ No newline at end of file diff --git a/src/pregmod/SecForceEX/Firebase.tw b/src/pregmod/SecForceEX/Firebase.tw new file mode 100644 index 0000000000000000000000000000000000000000..0575bb5f46c69553809f1e1e47ae4f9188a43383 --- /dev/null +++ b/src/pregmod/SecForceEX/Firebase.tw @@ -0,0 +1,141 @@ +:: Firebase [nobr] + + <<if ndef $Tour>> <<set $Tour = 0>> <</if>> + + <<if $Tour === 0>> + + <<= Count()>> <<if $SF.Lower != "the special force">> + + <<set $SF.Caps = $SF.Lower.replace("the ", "The ")>> <</if>> + + <<switch _Env>> <<case 4>> + + <<set _EnvCash2 = 450,_EnvCash3 = 200,_EnvCash4 = 100,_EnvProsp = 3>> + + <<case 3>> + + <<set _EnvCash2 = 500,_EnvCash3 = 250,_EnvCash4 = 150,_EnvProsp = 5>> + + <<case 2>> + + <<set _EnvCash2 = 550,_EnvCash3 = 300,_EnvCash4 = 200,_EnvProsp = 7>> + + <</switch>> <<set $nextButton = "Back to Main",$nextLink = "Main",$returnTo = "Firebase">> + + <<if $cheatMode > 0>> <<link "Cheat edit""CheatEdit">> <</link>> <br> <</if>> + + The firebase of $arcologies[0].name's <<textbox "$SF.Lower" $SF.Lower "Firebase">> is located in the lower levels, occupying unneeded warehouse space. It is not accessible to the general citizenry, but your personal elevator has express service to it. As you step off, two soldiers in combat armor manning the entry checkpoint tense before recognizing their Marshal and stepping aside with a sharp salute. + + <br><br><<if $SFTradeShow.CanAttend == 1 || ($SFColonel.Fun + $SFColonel.Talk >= 1)>> + + You make your way to the operations center. The Lieutenant Colonel is handling a minor issue. As you enter, he salutes. <<if $SFTradeShow.CanAttend == 1>> The Colonel is away at her merc meetup, so the Lieutenant Colonel will assist you.<</if>> + + <<elseif random(1,100) > 5>> + + You make your way to the operations center. The Colonel is + + <<if random(1,100) > 50>>glancing between her tablet and the large wallscreen, occasionally taking notes or barking orders. + + <<else>>examining a table with a map of the surrounding area, planning manuevers in the event of an attack.<</if>> + + She notices your entrance and turns her attention to you. + + <<if $SFColonel.Core == "brazen">> + + She gives a textbook salute. "<<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>, how can I help you?" + + <<else>> + + "Hey boss, what do you need?"<</if>> + + <<else>> + + You make your way to the operations center, finding it empty. A short walk takes you through the barracks to the Colonel's quarters. As you approach, the Colonel <<print ColonelQuarters()>> + + <</if>> + + <<if ndef $SFTradeShow.View && ($SFColonel.Fun + $SFColonel.Talk < 1)>> + + <br><br>Her expression changes as something jogs her memory. "Before we begin <<if $SFColonel.Core == "brazen">><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>><<else>>boss<</if>>, back when I was a merc me and a couple of my old friends would have a meetup every several months. Drinking, fucking, drugs... a little poker. It eventually grew into a whole thing, and now we bring our latest and greatest toys to show off, maybe make some money off selling the schematics. I'd like to continue going, for old times' sake." + + <br>[[Grant leave|Firebase][$SFTradeShow.CanAttend = 1,$SFTradeShow.View = 1]] + + <br>[[Request she remain on base|Firebase][$SFTradeShow.CanAttend = -2,$SFTradeShow.View = 0]]<br> + + <</if>> + + <<if $SFTradeShow.History >= 1 && (Math.trunc($week/24) === ($week/24)) && $SFTradeShow.CanAttend === -1>> + + <br><br>Her expression changes as something jogs her memory. "Before we begin <<if $SFColonel.Core == "brazen">><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>><<else>>boss<</if>>, that biannual merc meetup has come around again. You've already gave me leave to attend, but I just wanted to be sure I'm still clear to go." + + <br>[[Grant leave.|Firebase][$SFTradeShow.CanAttend = 1]] + + <br>[[Request she remain on site.|Firebase][$SFTradeShow.CanAttend = -1]]<br> + + <</if>> + + <<if $SFTradeShow.History >= 1 && ((Math.trunc(($week-1)/24) === ($week-1)/24) || (Math.trunc(($week-2)/24) === ($week-2)/24) || (Math.trunc(($week-3)/24) === ($week-3)/24))>> + + While at the recent merc meetup, the Colonel made @@.yellowgreen;<<print cashFormat(Math.ceil($SFTradeShow.Income))>>@@ selling generic schematics to her friends, <<print commaNum($SFTradeShow.Helots)>> menial slaves were won in a poker game, and <<print commaNum($SFTradeShow.TotalMercs)>> mercenaries were persuaded to join $SF.Lower. + + <br>Total earnings thus far: @@.yellowgreen;<<print cashFormat(Math.ceil($SFTradeShow.Revenue))>>@@ in income, <<print commaNum($SFTradeShow.TotalHelots)>> menial slaves and <<print commaNum($SFTradeShow.Mercs)>> mercenaries joined across $SFTradeShow.History meetups. + + <</if>> + + <<print Interactions()>> + + <<include "WC">> + + <br><<switch $SF.SpecOps>> + + <<case 0>> + + <br>No soldiers are working undercover. + + <br>[[Reassign soldiers|Firebase][$SF.SpecOps = -1]] + + <<case 1>> + + <br>A small section of soldiers are working undercover. + + <br>[[Reassign soldiers|Firebase][$SF.SpecOps = -1]] + + <<case 2>> + + <br>A large section of soldiers are working undercover. + + <br>[[Reassign soldiers|Firebase][$SF.SpecOps = -1]] + + <<default>> + + <br>Would you like to assign soldiers to undercover duty? + + <br>[[Do not assign soldiers to work undercover|Firebase][$SF.SpecOps = 0]] + + <br>[[Assign a small section of soldiers to work undercover|Firebase][$SF.SpecOps = 1]] + + <br>[[Assign a large section of soldiers to work undercover|Firebase][$SF.SpecOps = 2]] + + <</switch>> + + <<if $SFUnit.Firebase > 5 && $secExp > 0 && $SFSupportLevel >= 4 && $maxUnits === 16 && $readiness <= 10>> + + <br><br>[[Provide the security force with their own section.|Firebase][$maxUnits += 4,$readiness = 10,$cash -= Math.ceil((750000*(1.15+($SF.Units/1000))*(1.15+($SFUnit.Firebase/10)))*_Env)]] + + @@.yellowgreen;<<print cashFormat(Math.ceil((750000*(1.15+($SF.Units/1000))*(1.15+($SFUnit.Firebase/10)))*_Env))>>@@ + + <</if>> + + <<include "Upgrades">> + + <br><<link "Tour the firebase" "Firebase">><<set $Tour = 1>><</link>> + + <</if>> + + <<if $Tour === 1>> <<set $nextButton = " ">> + + <<=Count()>><<include "FlavourText">><br> + + [[Return to Operations|Firebase][$Tour = 0]] + + <</if>> \ No newline at end of file diff --git a/src/pregmod/SecForceEX/JS.js b/src/pregmod/SecForceEX/JS.js new file mode 100644 index 0000000000000000000000000000000000000000..68a7c265c0adcb0d3290a7a6c406f3520d45fb8c --- /dev/null +++ b/src/pregmod/SecForceEX/JS.js @@ -0,0 +1,441 @@ +/*SecForceEX JS*/ +window.SFC = function() { + const V = State.variables; + if (V.SFTradeShow.CanAttend === -1) {return `The Colonel`;} + else { + if (V.LieutenantColonel > 0) {return `Lieutenant Colonel <<= SlaveFullName($LieutenantColonel)>>`;} + else {return `a designated soldier`;}} +}; + +window.SFCR = function() { + const V = State.variables, C = V.SFColonel; + if (C.Status <= 19) {return `boss`;} + else if (C.Status <= 39) {return `friend`;} + else {return `fuckbuddy`;} +}; + +window.TroopDec = function() { + const V = State.variables, commom = "the <<print commaNum($SFUnit.Troops)>> members of $SF.Lower", S = V.SFUnit; + if (S.Troops < 100) {return `sparsely occupied, ${commom} residing within them concentrating together in a corner. The hundreds of empty beds and lockers visibly herald the future`;} + else if (S.Troops < 400) {return `lightly occupied, with ${commom} starting to spread out across them`;} + else if (S.Troops < 800) {return `moderately occupied, though ${commom} residing within have a considerable amount of extra room`;} + else if (S.Troops < 1500) {return `well-occupied, and ${commom} residing within have started to form small cliques based on section and row`;} + else {return `near capacity, and ${commom} often barter their personal loot, whether it be monetary or human, for the choicest bunks`;} +}; + +window.HSM = function() { + const V = State.variables; + if (V.PC.hacking <= -100) {return 1.5;} + else if (V.PC.hacking <= -75) {return 1.35;} + else if (V.PC.hacking <= -50) {return 1.25;} + else if (V.PC.hacking <= -25) {return 1.15;} + else if (V.PC.hacking < 0) {return 1.10;} + else if (V.PC.hacking === 0) {return 1;} + else if (V.PC.hacking <= 10) {return 0.97;} + else if (V.PC.hacking <= 25) {return 0.95;} + else if (V.PC.hacking <= 50) {return 0.90;} + else if (V.PC.hacking <= 75) {return 0.85;} + else if (V.PC.hacking <= 100) {return 0.80;} + else {return 0.75;} +}; + +window.Count = function() { + const V = State.variables, T = State.temporary, C = Math.clamp, S = V.SFUnit, E = V.economy; + T.FU = 10,S.Firebase = C(S.Firebase, 0, T.FU); + T.AU = 10,S.Armoury = C(S.Armoury, 0, T.AU); + T.DrugsU = 10,S.Drugs = C(S.Drugs, 0, T.DrugsU); + T.DU = 10,S.Drones = C(S.Drones, 0, T.DU); + T.AVU = 10,S.AV = C(S.AV, 0, T.AVU); + T.TVU = 10,S.TV = C(S.TV, 0, T.TVU); + T.AAU = 10,S.AA = C(S.AA, 0, T.AAU); + T.TAU = 10,S.TA = C(S.TA, 0, T.TAU); + if (V.PC.warfare >= 75) {T.PGTU = 10,T.SPU = 10,T.GunSU = 10,T.SatU = 10,T.GRU = 10,T.MSU = 10,T.ACU = 10,T.SubU = 10,T.HATU = 10;} + else if (V.PC.warfare >= 50) {T.PGTU = 9,T.SPU = 9,T.GunSU = 9,T.SatU = 9,T.GRU = 9,T.MSU = 9,T.ACU = 9,T.SubU = 9,T.HATU = 9;} + else {T.PGTU = 8,T.SPU = 8,T.GunSU = 8,T.SatU = 8,T.GRU = 8,T.MSU = 8,T.ACU = 8,T.SubU = 8,T.HATU = 8;} + S.PGT = C(S.PGT, 0, T.PGTU); + S.SpacePlane = C(S.SpacePlane, 0, T.SPU), S.GunS = C(S.GunS, 0, T.GunSU); + S.Satellite = C(S.Satellite, 0, T.SatU), S.GiantRobot = C(S.GiantRobot, 0, T.GRU), S.MissileSilo = C(S.MissileSilo, 0, T.MSU); + S.AircraftCarrier = C(S.AircraftCarrier, 0, T.ACU),S.Sub = C(S.Sub, 0, T.SubU),S.HAT = C(S.HAT, 0, T.HATU); + T.GU = T.AVU+T.TVU+T.PGTU, T.G = S.AV+S.TV+S.PGT; + T.H = S.AA+S.TA+S.SpacePlane+S.GunS, T.HU = T.AAU+T.TAU+T.SPU+T.GunSU; + T.LBU = T.SatU + T.MSU, T.LB = S.Satellite + S.MissileSilo; + T.Base = S.Firebase + S.Armoury + S.Drugs + S.Drones + T.H; + T.BaseU = T.FU + T.AU + T.DrugsU + T.DU + T.HU; + if (V.terrain !== "oceanic") T.LBU += T.GRU, T.LB += S.GiantRobot, T.Base += T.G, T.BaseU += T.GU; + T.max = T.BaseU + T.LBU, V.SF.Units = T.Base + T.LB; + if (V.terrain === "oceanic" || V.terrain === "marine") { + T.NY = S.AircraftCarrier + S.Sub + S.HAT, V.SF.Units += T.NY; + T.NYU = T.ACU + T.SubU + T.HATU, T.max += T.NYU;} + V.SF.Units = C(V.SF.Units, 0, T.max); + if (E < 1) {T.Env = 4;} + else if (E < 1.5) {T.Env = 3;} + else {T.Env = 2;} +}; + +window.Firebase = function() { + const V = State.variables, S = V.SFUnit; + var appear = `is currently constructed in a haphazard fashion.`, barracks = `Soldiers' cots are mixed in with weapons crates and ammunition.`, slave = `Cages for processing slaves lie off to one side,`, common = `and in the center is a common area with tables for soldiers to gather around for meals or rowdy conversations.`, garage = ``, drone = ``, hangar = ``, launch = ``, artillery = ``, comms = ``, training = ``; + + if (S.Firebase >= 1) {appear = `has had some organization put into it.`, barracks = `The majority of weapons, armor, and ammunition have been separated from the soldiers' cots into their own armory.`, garage = `A section near the outer wall of the arcology has been converted to a garage with an adjoining vehicle maintenance bay`, drone = `.`; + if (V.terrain === "oceanic") garage += ` for inter-arcology travel`;} + if (S.Firebase >= 2) barracks = `A barracks has been constructed near the armory, allowing soldiers a quieter place to sleep and store their personal spoils.`, drone = `, as well as a facility for the storage, maintenance, and deployment of armed combat drones.`; + if (S.Firebase >= 3) appear = `has become more permanent.`, barracks = `A command center has been constructed near the barracks and armory, allowing for additional support personnel.`; + if (S.Firebase >= 4) hangar = `Hangar space for storing and repairing aircraft has has been converted from unused space on the other side of the garage.`; + if (S.Firebase >= 5) { + appear = `is nearing the appearance of a military base.`, launch = `The rest of the firebase has been designated for special projects.`, artillery = `Artillery batteries are set around the base of the arcology.`; + if (V.terrain === "oceanic" || V.terrain === "marine") launch += ` A Naval Yard has been constructed in the waters near the arcology.`;} + if (S.Firebase >= 6) common = `and in the center is a common area for recreation, including a small movie theater and a mess hall.`; + if (S.Firebase >= 7) {slave = `A slave detention facility has been sectioned off to one side`; + if (V.SF.Depravity > 1.5) slave += ` emanating the sounds of rape and torture`; + slave += `,`;} + if (S.Firebase >= 8) appear = `has become a fully fledged military base.`, comms = `A Free City-wide communication network for $SF.Lower has been constructed to faciltate faster responses and efficent monitoring of the surrounding area.`; + if (S.Firebase >= 9) training = `A high-tech killhouse has been constructed to aid in soldier training.`; + if (S.Firebase >= 10) artillery = `Railgun artillery batteries are set around the base of the arcology, capable of accurately destroying enemies an absurd distance away.`; + + return `The firebase ${appear} ${barracks} ${comms} ${training} ${slave} ${common} ${garage}${drone} ${hangar} ${launch} ${artillery}`; +}; + +window.Armoury = function() { + const V = State.variables, S = V.SFUnit; + var weapons = `The weapons are mostly worn rifles that have already seen years of service before $SF.Lower aquired them.`, armor = `The body armor is enough to stop smaller calibers, but nothing serious.`, comms = ``, helmets = ``, ammo = ``, uniforms = ``, special = ``, exo = ``; + + if (S.Armoury >= 1) comms = `Radios have been wired into the soldiers helmets`, helmets = `.`; + if (S.Armoury >= 2) helmets = ` and a HUD has been integrated into the soldier's eyewear.`; + if (S.Armoury >= 3) ammo = `Tactical vests have been provided, allowing soldiers to carry additional ammo.`; + if (S.Armoury >= 4) armor = `The body armor is a newer variant, able to stop small arms fire and protect against shrapnel.`; + if (S.Armoury >= 5) weapons = `The weapons are modern rifles and sidearms, putting $SF.Lower on par with rival mercenary outfits.`; + if (S.Armoury >= 6) uniforms = `New uniforms have been distributed that are more comfortable and made of breatheable fabric to keep soldiers from overheating.`; + if (S.Armoury >= 7) special = `Specialized weaponry is available for various roles, allowing more flexibility in planning.`; + if (S.Armoury >= 8) helmets = `and a HUD and camera display have been integrated into soldiers' eyewear, enabling accurate aim around corners or from behind cover`; + if (S.Armoury >= 9) exo = `An exosuit has been developed to reduce the amount of weight soldiers carry, increase lifting strength, and move faster in combat.`; + if (S.Armoury >= 10) weapons = `Cutting-edge weaponry is available to $SF.Lower, far outpacing the ability of rival mercenary outfits.`; + + return `The armory holds soldiers' weapons and gear while not in training or combat. ${weapons} ${special} ${armor} ${comms}${helmets} ${ammo} ${uniforms} ${exo}`; +}; + +window.Drugs = function() { + const V = State.variables, S = V.SFUnit; + var amphet = ``, phen = ``, steroid = ``, downer = ``, concen = ``, stimpack = ``, stabilizer = ``; + + if (S.Drugs >= 1) amphet = `Amphetamines have been added to the cocktail at a low dosage to act as a stimulant, physical performance enhancer, cognition control enhancer. Some side-effects exist.`; + if (S.Drugs >= 2) phen = `Phencyclidine has been added to the cocktail at a low dosage as a dissociative psychotropic for soldiers in battle to introduce feelings of detachment, strength and invincibility, and aggression. Some side-effects reduce the tolerable dosage before soldiers go on uncontrollable violent outbreaks.`; + if (S.Drugs >= 3) steroid = `Testosterone is being produced for soldiers in training as a natural muscle growth stimulant and to invoke aggression.`; + if (S.Drugs >= 4) downer = `Zaleplon is being produced as a downer to counteract the battle cocktail and encourage rest before combat.`; + if (S.Drugs >= 5) concen = `Methylphenidate has been added to the cocktail as a stimulant and to improve soldier concentration.`; + if (S.Drugs >= 6) phen = `A phencyclidine-based drug has been added to the cocktail as a dissociative psychotropic for soldiers in battle to introduce controllable feelings of detachment, strength and invincibility, and aggression.`; + if (S.Drugs >= 7) steroid = `Low levels of anabolic steroids are being produced for soldiers in training to stimulate muscle growth and invoke aggression.`; + if (S.Drugs >= 8) amphet = `Diphenylmethylsulfinylacetamide has been added to the cocktail to counteract the effects of sleep deprivation and promote alertness.`; + if (S.Drugs >= 9) stimpack = `A stimpack of the battle cocktail is being given to soldiers in battle to take if the original dose wears off before the battle is over.`; + if (S.Drugs >= 10) stabilizer = `A stabilizer has been added to the battle cocktail that helps tie effects together while reducing side-effects, leading to an effectively safe supersoldier drug.`; + + return `A drug lab has been established to increase the effectiveness of $SF.Lower's soldiers. Many of these chemicals are mixed into a single 'battle cocktail' to be taken before combat. ${amphet} ${phen} ${concen} ${steroid} ${downer} ${stimpack} ${stabilizer}`; +}; + +window.LUAV = function() { + const V = State.variables, S = V.SFUnit; + var a = `have been recommissioned for use by $SF.Lower`, b = `.`, c = ``, d = ``, e = ``, f = ``, g = ``, h = ``, i = ``, j = ``, k = ``; + + if (S.Drones >= 2) a = `equipped with missiles are resting on one side of the drone bay`, b = `, as well as destroying the occasional target.`; + if (S.Drones >= 3) c = `A fleet of`, d = `large delivery quadcopters have been converted for military service to support ground forces as combat drones.`; + if (S.Drones >= 4) d = `combat drones take up the rest of the space in the drone bay. They have a`, e = `small automatic rifle`, f = `mounted to the underside.`; + if (S.Drones >= 5) g = `Armor has been added to protect vulnerable components from small arms fire.`; + if (S.Drones >= 6) h = `The fleet's batteries have been replaced with higher capacity models, increasing the functional time spent in combat.`; + if (S.Drones >= 7) i = `The propellers and motors have been upgraded, increasing maneuverability and speed.`; + if (S.Drones >= 8) j = `The drone control signal has been boosted and encrypted, giving the drones a greater range and protecting against electronic warfare.`; + if (S.Drones >= 9) e = `light machine gun`; + if (S.Drones >= 10) k = `A drone-to-drone network has been installed, allowing drones to swarm, maneuver, and attack targets autonomously.`; + + return `Surveillance drones ${a}. During combat, they supply aerial intel to commanders and act as the communications network for ground forces${b} ${c} ${d} ${e} ${f} ${g} ${h} ${i} ${j} ${k}`; +}; + +window.AV = function() { + const V = State.variables, S = V.SFUnit; + var b = `has been recommissioned for use by $SF.Lower. They`, c = `; mechanics are methodically checking the recent purchases for battle-readiness`, MG = `120 mm main gun is enough to handle the majority of opponents around the Free Cities.`, engine = ``, armor = ``, armor2 = ``, ammo = ``, mg = ``, fireC0 = ``, fireC1 = ``, fireC2 = ``, fireC3 = ``, turret = ``; + + if (S.AV >= 2) engine = `The engine has been overhauled, allowing much faster maneuvering around the battlefield.`, b = ``, c = ``; + if (S.AV >= 3) armor = `A composite ceramic armor has replaced the original, offering much greater protection from attacks.`; + if (S.AV >= 4) ammo = `The tanks have been outfitted with additional types of ammo for situational use.`; + if (S.AV >= 5) mg = `A remote-controlled .50 cal machine gun has been mounted on the turret to handle infantry and low-flying aircraft.`; + if (S.AV >= 6) fireC0 = `A fire-control system`, fireC3 = `been installed, guaranteeing`, fireC2 = `has`, fireC1 = `accurate fire.`; + if (S.AV >= 7) fireC2 = `and an autoloader have`, fireC1 = `rapid, accurate fire while separating the crew from the stored ammunition in the event the ammo cooks off.`; + if (S.AV >= 8) armor2 = `A reactive armor system has been added, giving the tank an additional, if temporary, layer of protection.`; + if (S.AV >= 9) turret = `The turret has been massively redesigned, lowering the tank profile and increasing the efficiency of the mechanisms within.`; + if (S.AV >= 10) MG = `140 mm main gun can quash anything even the greatest Old World nations could muster.`; + + return `A fleet of main battle tanks ${b} are parked in the garage${c}. ${turret} The ${MG} ${ammo} ${mg} ${fireC0} ${fireC2} ${fireC3} ${fireC1} ${engine} ${armor} ${armor2}`; +}; + +window.TV = function() { + const V = State.variables, S = V.SFUnit; + var B = `has been recommissioned for use by $SF.Lower. They`, C = `; mechanics are giving the new purchases a final tuneup`, squad = `a squad`, G1 = `20`, G2 = `in a firefight`, e0 = `The engine has been`, engine = ``, armor = ``, tires = ``, m1 = ``, m2 = ``, pod1 = ``, pod2 = ``; + + if (S.TV >= 2) engine = `${e0} overhauled, allowing for higher mobility.`, C = ``, B = ``; + if (S.TV >= 3) armor = `Composite armor has been bolted to the exterior, increasing the survivability of an explosive attack for the crew and passengers.`; + if (S.TV >= 4) tires = `The tires have been replaced with a much more durable version that can support a heavier vehicle.`; + if (S.TV >= 5) m1 = `An automatic missile defense system has been installed,`, m2 = `targeting any guided missiles with laser dazzlers and deploying a smokescreen.`; + if (S.TV >= 6) pod1 = `An anti-tank missle pod`, pod2 = `has been installed on the side of the turret.`; + if (S.TV >= 7) G1 = `25`, G2 = `by attacking enemies through cover and destroying light armor`; + if (S.TV >= 8) pod2 = `and an anti-aircraft missile pod have been installed on either side of the turret.`; + if (S.TV >= 9) squad = `two squads`, armor = ``, m2 = `destroying any incoming missiles with a high-powered laser. Some of the now redundant composite armor has been removed, and the reclaimed space allows for more passengers.`; + if (S.TV >= 10) engine = `${e0} replaced with the newest model, allowing the vehicle to get in and out of the conflict extremely quickly.`; + + return `A fleet of infantry fighting vehicles ${B} are parked in the garage${C}. The IFVs can carry ${squad} of 6 to a firezone. The ${G1} mm autocannon supports infantry ${G2}. ${pod1} ${pod2} ${engine} ${armor} ${tires} ${m1} ${m2}`; +}; + +window.PGT = function() { + const V = State.variables, S = V.SFUnit; + var b = `has been sold to $SF.Lower through back channels to support a failing Old World nation. The tank is so large it cannot fit inside the garage, and has`, c = ``, engines = `. Two engines power the left and right sides of the tank separately, leaving it underpowered and slow`, gun0 = ``, gun1 = ``, gun2 = `an undersized main gun and makeshift firing system from a standard battle tank`, armor1 = ``, armor0 = ``, cannon = ``, laser = ``, PGTframe = ``; + + if (S.PGT >= 2) c = `rests in`, b = ``, engines = ` and powered by their own engine, allowing the tank to travel with an unsettling speed for its massive bulk`; + if (S.PGT >= 3) gun0 = `a railgun capable of`, gun1 = `firing steel slugs`, gun2 = `through one tank and into another`; + if (S.PGT >= 4) armor0 = `reinforced, increasing survivability for the crew inside.`, armor1 = `The armor has been`; + if (S.PGT >= 5) cannon = `A coaxial 30mm autocannon has been installed in the turret, along with automated .50 cal machine guns mounted over the front treads.`; + if (S.PGT >= 6) laser = `Laser anti-missile countermeasures have been installed, destroying any subsonic ordinance fired at the Goliath.`; + if (S.PGT >= 7) PGTframe = `The frame has been reinforced, allowing the Goliath to carry more armor and gun.`; + if (S.PGT >= 8) armor0 = `redesigned with sloping and state-of-the-art materials, allowing the Goliath to shrug off even the most advanced armor-piercing tank rounds.`; + if (S.PGT >= 9) gun1 = `firing guided projectiles`; + if (S.PGT >= 10) gun0 = `a twin-barreled railgun capable of rapidly`; + + return `A prototype Goliath tank ${b}${c} its own garage housing built outside the arcology. The massive bulk is spread out over 8 tracks, two for each corner of the tank${engines}. The turret is equipped with ${gun0} ${gun1} ${gun2}. ${cannon} ${armor1} ${armor0} ${laser} ${PGTframe}`; +}; + +window.AA = function() { + const V = State.variables, S = V.SFUnit; + var W1 = `only armed`, W2 = `,`, W3 = `a poor weapon against flying targets, but enough to handle ground forces`, group = `A small group of attack VTOL have been recommissioned for use by $SF.Lower, enough to make up a squadron`, engines = ``, TAI = ``, lock = ``, support = ``, stealth = ``, scramble = ``, PAI = ``; + + if (S.AA >= 2) W1 = `armed`, W2 = ` and air-to-air missiles,`, W3 = `a combination that can defend the arcology from enemy aircraft, as well as`, support = ` support ground troops`; + if (S.AA >= 3) engines = `The engines have been tuned, allowing faster flight with greater acceleration.`; + if (S.AA >= 4) TAI = `An advanced targeting AI has been installed to handle all control of weapons, allowing much more efficent use of ammunition and anti-countermeasure targeting.`; + if (S.AA >= 5) lock = `Installed multispectrum countermeasures protect against all types of missile locks.`; + if (S.AA >= 6) group = `A respectable number of attack VTOL protect your arcology, split into a few squadrons`; + if (S.AA >= 7) support = ` attack ground targets`, W2 = `, rocket pods, and air-to-air missiles,`; + if (S.AA >= 8) stealth = `The old skin has been replaced with a radar-absorbent material, making the aircraft difficult to pick up on radar.`; + if (S.AA >= 9) scramble = `The VTOLs can scramble to react to any threat in under three minutes.`; + if (S.AA >= 10) PAI = `A piloting AI has been installed, allowing the VTOLs to perform impossible maneuvers that cannot be done by a human pilot. This removes the need for a human in the aircraft altogether.`; + + return `${group}. Several of the landing pads around $arcologies[0].name host groups of four fighters, ready to defend the arcology. ${scramble} The attack VTOL are currently ${W1} with a Gatling cannon${W2} ${W3}${support}. ${TAI} ${PAI} ${engines} ${lock} ${stealth}`; +}; + +window.TA = function() { + const V = State.variables, S = V.SFUnit; + var Num = `number`, type = `tiltrotor`, capacity = `small platoon or 15`, engines = ``, engines2 = ``, Radar = ``, Armor = ``, landing = ``, miniguns = ``, counter = ``; + + if (S.TA >= 2) engines = `The tiltrotor engines have been replaced with a more powerful engine, allowing faster travel times.`; + if (S.TA >= 3) counter = `Multispectrum countermeasures have been added to protect against guided missiles.`; + if (S.TA >= 4) miniguns = `Mounted miniguns have been installed to cover soldiers disembarking in dangerous areas.`; + if (S.TA >= 5) Num = `large number`; + if (S.TA >= 6) landing = `The landing equipment has been overhauled, protecting personel and cargo in the event of a hard landing or crash.`; + if (S.TA >= 7) Armor = `Armor has been added to protect passengers from small arms fire from below.`; + if (S.TA >= 8) capacity = `large platoon or 20`, engines2 = `Further tweaks to the engine allow for greater lifting capacity.`; + if (S.TA >= 9) Radar = `Radar-absorbent materials have replaced the old skin, making it difficult to pick up the VTOL on radar.`; + if (S.TA >= 10) type = `tiltjet`, engines2 = ``, engines = `The tiltrotors have been replaced with tiltjets, allowing for much greater airspeed and acceleration.`; + + return `A ${Num} of transport ${type} VTOL have been recommissioned for use by $SF.Lower. The VTOLs are resting on large pads near the base to load either a ${capacity} tons of materiel. ${engines} ${engines2} ${Armor} ${landing} ${counter} ${Radar} ${miniguns}`; +}; + +window.SP = function() { + const V = State.variables, S = V.SFUnit; + var engine = `ramjet engines in the atmosphere that can reach Mach 10`, b = `has been purchased from an insolvent Old World nation. It `, shield = ``, camera = ``, efficiency = ``, camera2 = ``, drag = ``, crew = ``, engine2 = ``, skin = ``; + + if (S.SpacePlane >= 2) b = ``, shield = `The current heat shielding has been upgraded, reducing the likelihood of heat damage during reentry.`; + if (S.SpacePlane >= 3) engine2 = ` and liquid rocket engines in orbit that can reach an equivalent Mach 18`; + if (S.SpacePlane >= 4) camera = `A state-of-the-art camera has been installed in the underbelly that takes incredibly high resolution photos, but requires the frictionless environment of space to focus.`; + if (S.SpacePlane >= 5) efficiency = `Tweaks to the engines have increased fuel efficency to the point where midflight refueling is no longer necessary.`; + if (S.SpacePlane >= 6) camera2 = `The camera sensor is capable of taking IR shots.`; + if (S.SpacePlane >= 7) drag = `Miraculous advances in aerodynamics and materials allow frictionless flight, even while in the atmosphere.`; + if (S.SpacePlane >= 8) crew = `Increased the crew comfort and life support systems to increase operational time.`; + if (S.SpacePlane >= 9) skin = `Replaced the underbelly skin with an chameleon kit, matching the color to the sky above it.`; + if (S.SpacePlane >= 10) engine = `experimental scramjet engines in the atmosphere that can reach Mach 15`, engine2 = ` and liquid rocket engines in orbit that can reach an equivalent Mach 25`; + + return `A prototype spaceplane ${b} rests in the hangar, its black fuselage gleaming. The craft is powered by ${engine}${engine2}. ${efficiency} ${shield} ${camera} ${camera2} ${drag} ${crew} ${skin}`; +}; + +window.GunS = function() { + const V = State.variables, S = V.SFUnit; + var a = `has been recommissioned for use by $SF.Lower. Currently, it `, b = ``, c = ``, d = ``, e = `Miniguns and Gatling cannons line`, f = `, though the distance to ground targets renders the smaller calibers somewhat less useful`, g = ``, h = ``, i = ``, j = ``, k = ``; + + if (S.GunS >= 2) b = `Infrared sensors have been added for the gunners to better pick targets.`, a = ``; + if (S.GunS >= 3) c = `The underside of the aircraft has been better armored against small-arms fire`, h = `.`; + if (S.GunS >= 4) d = `Larger fuel tanks have been installed in the wings and fuselage, allowing the gunship to provide aerial support for longer periods before refueling.`; + if (S.GunS >= 5) e = `25 mm Gatling cannons`, f = `, allowing the gunship to eliminate infantry`, j = ` and light vehicles from above`, k = ` and a 40 mm autocannon are mounted on`; + if (S.GunS >= 6) g = `The engines have been replaced, allowing both faster travel to a target, and slower travel around a target.`; + if (S.GunS >= 7) h = `, and multi-spectrum countermeasures have been installed to protect against guided missiles.`; + if (S.GunS >= 8) b = `Upgraded multi-spectrum sensors can clearly depict targets even with IR shielding.`; + if (S.GunS >= 9) i = `The ammunition storage has been increased, only slightly depriving loaders of a place to sit.`; + if (S.GunS >= 10) j = `, both light and heavy vehicles, and most enemy cover from above`, k = `, a 40 mm autocannon, and a 105 mm howitzer are mounted on`; + + return `A large gunship ${a} is being refueled in the hangar. ${e}${k} the port side of the fuselage${f}${j}. ${b} ${i} ${g} ${c}${h} ${d}`; +}; + +window.Sat = function() { + const V = State.variables, S = V.SFUnit; + var loc = `An unused science satellite has been purchased from an Old World nation. While currently useless, it holds potential to be a powerful tool.`, gyro = ``, telemetry = ``, thrusters = ``, solar = ``, surviv = ``, laser = ``, heat = ``, reactor = ``, lens = ``, kin = ``; + + if (S.Satellite >= 2) { + if (V.SatLaunched < 1) {loc = `The satellite is being worked on in the Launch Bay.`;} else {loc = `The satellite is in geosynchronous orbit, far above the arcology.`;} + gyro = `A suite of sensors have been installed to ensure the satellite can detect attitude and orbital altitude.`;} + if (S.Satellite >= 3) telemetry = `Telemetry systems have been installed to communicate with the satellite in orbit, with strong encryption measures.`; + if (S.Satellite >= 4) thrusters = `Thrusters have been installed to control satellite attitude and orbit.`; + if (S.Satellite >= 5) solar = `A massive folding solar panel array, combined with the latest in battery technology allow the satellite to store an enormous amount of energy relatively quickly.`, surviv = `Enough of the satellite has been finished that it can expect to survive for a significant period of time in space.`; + if (S.Satellite >= 6) laser = `A laser cannon has been mounted facing the earth, capable of cutting through steel in seconds`, heat = ` while generating a large amount of heat.`; + if (S.Satellite >= 7) heat = `. The installed heatsink allows the laser cannon to fire more frequently without damaging the satellite.`; + if (S.Satellite >= 8) reactor = `A small, efficient nuclear reactor has been installed to continue generating energy while in the Earth's shadow.`; + if (S.Satellite >= 9) lens = `A higher quality and adjustable lens has been installed on the laser, allowing scalpel precision on armor or wide-area blasts on unarmored targets.`; + if (S.Satellite >= 10) kin = `A magazine of directable tungsten rods have been mounted to the exterior of the satellite, allowing for kinetic bombardment roughly equal to a series of nuclear blasts.`; + + return `${loc} ${gyro} ${thrusters} ${telemetry} ${solar} ${reactor} ${surviv} ${laser}${heat} ${lens} ${kin}`; +}; + +window.GR = function() { + const V = State.variables, S = V.SFUnit; + var loc = `has been purchased from a crumbling Old World nation. It`, power = `Large batteries mounted in oversized shoulders power the robot for up to ten minutes of use, though they make for large targets.`, knife = `simply a 8.5 meter long knife, though additional weapons are under development.`, armor = ``, actuator = ``, cannon = ``, heatsink = ``, ammo = ``, missile = ``; + + if (S.GiantRobot >= 2) loc = ``, armor = `Armor plating has been mounted over the majority of the robot.`; + if (S.GiantRobot >= 3) power = `The robot is now powered by an umbilical cable system instead of bulky and short-lived batteries.`; + if (S.GiantRobot >= 4) knife = `a 25 meter plasma sword. The cutting edge uses plasma to melt and cut through targets, reducing the strain on the sword.`; + if (S.GiantRobot >= 5) actuator = `The limb actuators have been replaced with a faster and more powerful variant, granting the robot the same.`; + if (S.GiantRobot >= 6) cannon = `A custom 45 mm Gatling cannon rifle has been developed for ranged use`, ammo = `, though it lacks enough ammo storage for a main weapon.`; + if (S.GiantRobot >= 7) heatsink = `Large heatsinks have been installed out of the back to solve a massive overheating problem. These heatsinks resemble wings, and tend to glow red with heat when in heavy use.`; + if (S.GiantRobot >= 8) armor = ``, actuator = `Final actuator tweaks have allowed for the addition of exceptionally thick armor without any loss in speed or power.`; + if (S.GiantRobot >= 9) ammo = `, with spare ammunition drums kept along the robot's waist.`; + if (S.GiantRobot >= 10) missile = `Missile pods have been mounted on the shoulders.`; + + return `A prototype giant robot ${loc} rests in a gantry along the side of the arcology. The robot is as tall as a medium-sized office building, focusing on speed over other factors. ${power} ${armor} ${actuator} ${heatsink} The main armament is ${knife} ${cannon}${ammo} ${missile}`; +}; + +window.ms = function() { + const V = State.variables, S = V.SFUnit; + var a = `A cruise missile launch site has been constructed near the base of`, b = `outdated, something quickly rigged together to give the launch site something to fire in the case of an attack`, c = ``, d = ``, e = ``, f = ``, g = ``, h = ``; + + if (S.MissileSilo >= 2) b = `a modern missile`, c = `, tipped with a conventional warhead`; + if (S.MissileSilo >= 3) d = `The launch systems have been overhauled, allowing a launch within seconds of an attack order being given.`; + if (S.MissileSilo >= 4) e = `The missile engines have been tweaked, giving them a greater range.`; + if (S.MissileSilo >= 5) f = `A passive radar has been installed, allowing the missile to follow moving targets.`; + if (S.MissileSilo >= 6) a = `Several cruise missile launch sites have been constructed around`; + if (S.MissileSilo >= 7) e = `The engine has been replaced, giving the missiles greater range and supersonic speeds.`; + if (S.MissileSilo >= 8) g = `The ability to pick new targets should the original be lost has been added.`; + if (S.MissileSilo >= 9) h = `The missile now uses its remaining fuel to create a thermobaric explosion, massively increasing explosive power.`; + if (S.MissileSilo >= 10) c = ` that can be tipped with either a conventional or nuclear warhead`; + + return `${a} the arcology. The current missile armament is ${b}${c}. ${d} ${e} ${f} ${g} ${h}`; +}; + +window.AC = function() { + const V = State.variables, S = V.SFUnit; + var recom = `has been recommisioned from the Old World for $SF.Lower. It`, jets = `Formerly mothballed strike jets`, loc = ``, radar = ``, AA = ``, prop = ``, torp = ``, armor = ``, power = ``, scramble = ``; + + if (V.week % 6 === 0) { loc = `moored to the pier in the Naval Yard`; } else { loc = `patrolling the waters near $arcologies[0].name`; } + if (S.AircraftCarrier >= 2) radar = `The island's radar and comms have been improved.`, recom = ``; + if (S.AircraftCarrier >= 3) AA = `The antiair guns have been updated to automatically track and predict enemy aircraft movement.`; + if (S.AircraftCarrier >= 4) jets = `Modern strike jets with state-of-the-art armaments`; + if (S.AircraftCarrier >= 5) prop = `The propellers have been redesigned, granting greater speed with less noise.`; + if (S.AircraftCarrier >= 6) torp = `An anti-torpedo system detects and destroys incoming torpedoes.`; + if (S.AircraftCarrier >= 7) armor = `Additional armor has been added to the hull and deck.`; + if (S.AircraftCarrier >= 8) power = `The power plant has been converted to provide nuclear power.`; + if (S.AircraftCarrier >= 9) scramble = `The catapult has been converted to an electromagnetic launch system, halving the time it takes to scramble jets.`; + if (S.AircraftCarrier >= 10) jets = `Attack VTOL from the converted for carrier capability`; + + return `An aircraft carrier ${recom} is ${loc}. ${jets} serve as its airpower. ${scramble} ${power} ${radar} ${AA} ${torp} ${prop} ${armor}`; +}; + +window.Sub = function() { + const V = State.variables, S = V.SFUnit; + var recom = `has been recommissioned from the old world, and`, reactor = `Because diesel engines provide power and breathing oxygen is kept in pressurized canisters, the sub must frequently surface.`, reactor1 = ``, cal = ``, hull = ``, tubes = ``, torpedoes = ``, sonar = ``, control = ``, missiles = ``; + + if (S.Sub >= 2) recom = ``, reactor = `A nuclear reactor provides power`, reactor1 = `, but because oxygen is still kept in pressurized canisters the sub must frequently surface to replenish its oxygen stocks.`; + if (S.Sub >= 3) reactor1 = ` and an oxygen generator pulls Oâ‚‚ from the surrounding seawater, allowing the submarine to remain underwater for months if necessary.`; + if (S.Sub >= 4) cal = `Calibration of the propulsion systems has reduced the telltale hum of a moving sub to a whisper.`; + if (S.Sub >= 5) hull = `The outer hull has been redesigned for hydrodynamics and sonar absorption.`; + if (S.Sub >= 6) tubes = `The torpedo tubes have been redesigned for faster loading speeds`, torpedoes = `.`; + if (S.Sub >= 7) sonar = `The passive sonar has been finely tuned to detect mechanical noises miles away.`; + if (S.Sub >= 8) control = `The control room computers have been upgraded to automate many conn duties.`; + if (S.Sub >= 9) torpedoes = `and launch more agile torpedoes.`; + if (S.Sub >= 10) missiles = `The submarine has been outfitted with several cruise missiles to attack land or sea-based targets.`; + + return `An attack submarine ${recom} is moored to the pier of the Naval Yard. ${reactor}${reactor1} ${cal} ${hull} ${tubes}${torpedoes} ${sonar} ${control} ${missiles}`; +}; + +window.HAT = function() { + const V = State.variables, S = V.SFUnit; + var recom = `, has been recommissioned for use by $SF.Lower. It`, tons = `200`, skirt = ``, guns = ``, guns2 = ``, fans = ``, speed = ``, turbines = ``, armor = ``, ramps = ``, HATframe = ``, loadout = ``; + + if (S.HAT >= 2) skirt = `The skirt has been upgraded to increase durabilty and improve cushion when travelling over uneven terrain and waves.`, recom = `,`; + if (S.HAT >= 3) guns = `A minigun`, guns2 = `has been mounted on the front corners of the craft to defend against attackers.`; + if (S.HAT >= 4) fans = `The turbines powering the rear fans`, speed = `acceleration and speed.`, turbines = `have been replaced with a more powerful version, allowing greater`; + if (S.HAT >= 5) armor = `The armor protecting its cargo has been increased.`; + if (S.HAT >= 6) tons = `300`, fans = `The turbines powering the rear fans and impeller`, speed = `acceleration, speed, and carrying capacity.`; + if (S.HAT >= 7) guns = `A minigun and grenade launcher`; + if (S.HAT >= 8) ramps = `The loading ramps have been improved, allowing for faster unloading.`; + if (S.HAT >= 9) HATframe = `The frame has been widened and reinforced, allowing for more space on the deck.`; + if (S.HAT >= 10) loadout = `An experimental loadout sacrifices all carrying capacity to instead act as a floating gun platform by mounting several rotary autocannons the deck, should the need arise.`; + + return `An air cushion transport vehicle, or hovercraft${recom} is parked on the pier of the Naval Yard, ready to ferry ${tons} tons of soldiers and vehicles. ${guns} ${guns2} ${fans} ${turbines} ${speed} ${skirt} ${armor} ${ramps} ${HATframe} ${loadout}`; +}; + +window.Interactions = function() { + const V = State.variables, C = V.SFColonel, T = State.temporary; + var choice = ``, time = ``; + + if (V.SF.WG > 0){ + if (V.choice == 1){ + choice = `$SF.Caps is turning over spare capital in tribute this week. `; + if (V.SFTradeShow.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { + choice += `"I think I can find @@.yellowgreen;<<print cashFormat(Math.ceil($CashGift))>>@@ for you, boss."`;} + else { + choice += `"We can spare@@.yellowgreen;<<print cashFormat(Math.ceil($CashGift))>>@@ in tribute this week, `; + if (V.PC.title != 1){choice += `sir."`;}else{choice += `ma'am."`;}}} + else if (V.choice == 2){ + choice = `$SF.Caps will be throwing a military parade this week. `; + if (V.SFTradeShow.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { + choice += `"I expect the @@.green;public to enjoy@@ the parade, boss."`;} + else { + choice += `"I'll have plans for an @@.green;popular parade@@ on your desk, `; + if (V.PC.title != 1){choice += `sir."`;}else{choice += `ma'am."`;}}} + else if (V.choice == 3){ + choice = `$SF.Caps will be conducting corporate sabotage on rival arcologies' businesses. `; + if (V.SFTradeShow.CanAttend === -1 && (C.Talk + C.Fun !== 1)) { + choice += `"Our interests should see a @@.yellowgreen;big boost@@, boss."`;} + else { + choice += `"Your @@.yellowgreen;arcology's business prospects should see an improvement@@ this week, `; + if (V.PC.title != 1){choice += `sir."`;}else{choice += `ma'am."`;}}}} + + if (C.Talk + C.Fun > 0) time = `The Colonel is busy for the rest of the week, so the Lieutenant Colonel will assist you.`; + + return `${time} <br>${choice}`; +}; + +window.ColonelQuarters = function() { + const V = State.variables, R = Math.ceil(Math.random()*100); + var out = ``; + if (R > 50){ + out = `raises a hand in greeting and nods. She is sprawled on a couch, wearing only her combat suit tank top and fingerless gloves. She's holding a near-empty bottle of strong liquor in her hand and you can see a naked slave girl kneeling on the floor between her legs. The Colonel has her legs wrapped tightly around the girl's head, forcing the girl to service her if she wants to breathe. The Colonel is close to her climax then suddenly tenses her lower body thus gripping the girl even tighter and throws her head back in ecstasy as she orgasms. She lets out a long breath finally releasing the girl, giving her a hard smack and shouting at her to fuck off.<br><br> The Colonel finishes off her bottle, tossing it over her shoulder then leaning back on the couch and spreading her legs wide. You look down briefly, falling into your habits of inspection. Her pussy is completely devoid of hair with heavy labia in with a very large and hard clit peaking out. Beads of moisture, the result of her excitation, are visible, and you can tell from long experience that she would be tight as a vise. You return your gaze to her face to find her smirking at you. "Like what you see, <<print SFCR()>>?" She waves her hand at the plaza around her, "So do they. But you're not here for pussy. You're here to talk business. So, what's up?"`; + }else if (R > 50){ + out = `is in no condition initially to greet you. She's naked except for one sock that gives you a very good view of her muscled, taut body while lunging with her feet on the table and the rest on her couch. She is face down in a drugged-out stupor in the middle of a wide variety of powders and pills. Perhaps sensing your approach, her head suddenly shoots up and looks at you with unfocused, bloodshot eyes. "Sorry, <<print SFCR()>>," she slurs, wiping her face and weakly holding up a hand. "Hold on a second, I need something to help me out here. Long fucking night." She struggles to sit on the couch and bending over the table, loudly snorts up some of the white powder on it. "Ahhh, fuck," she says, breathing heavily.<br><br> She shakes her head powerfully now looking at you, her eyes once again alert and piercing. "That's better," she says, leaning back on the couch and giving you another good view of her assets. "So, <<print SFCR()>>," she begins, "what brings you down here to our little clubhouse? I trust you're happy with how we've been handling things out there?" You nod. "Excellent", she laughs. "I have to say; it's nice to have a place like this while having some top-end gear and to be able to have fun out there without worrying about anyone coming back on us. Good fucking times." She laughs again. "So - I'm assuming you want something?"`; + }else if (R > 70 && V.SF.Depravity >= 1.5 && V.SFColonel.Core == "cruel"){ + out = `is relaxing on her couch stark naked, greeting you with a raised hand. Between her tightly clenched legs is a slave girl being forced to eat her out. "Hey, <<print SFCR()>>, what's -" she breaks off as a flash of pain crosses her features. "Fucking bitch!" she exclaims, pulling her legs away and punching the slave girl in the face. She pushes the girl to the ground, straddling her then begins hitting. You hear one crunch after another as The Colonel's powerful blows shatter the girl's face. She hisses from between clenched teeth, each word accompanied by a brutal punch. "How. Many. Fucking. Times. Have. I. Told. You. To. Watch. Your. Fucking. Teeth. On. My. Fucking. Clit!" She leans back, exhaling heavily. Before leaning back down to grip apply pressure onto the girl's neck with her powerful hands. Wordlessly, she increases the pressure and soon the girl begins to turn blue as she struggles to draw breath. Eventually her struggles weaken and then finally, end.<br><br> The Colonel relaxes her grip then wipes her brow, clearing away the sweat from her exertion. Finally rising from the girl's body, relaxing back on the couch and putting her feet back up on the table. "Sorry about that <<print SFCR()>>," she says, shrugging. "So many of these bitches we pick up from the outside don't understand that they have to behave." Shaking her head in frustration, "Now I need to find another one. But that's not your problem - you're here to talk business. So, what's up?"`; + }else{ + out = `is topless while reviewing the particulars of her unit on a tablet as you approach. She raises a hand in greeting. "Hey <<print SFCR()>>," she says, noticing you looking at her chest. She laughs. "Nice, aren't they? But they're not for you or them." She throws a thumb at the plaza around her. "You're down here for a reason, though. What can I do for you?"`;} + return `${out}`; +}; + +window.progress = function(x,max) { + var out = `â`, z, i; + if (max === undefined) { + Math.clamp(x,0,10); + if (State.variables.SF.Units < 30) { + z = 5 - x; + for (i=0;i<x;i++) out += `â–ˆâ`; + for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`; + for (i=0;i<5;i++) out += `â–‘â`;} + else { + z = 10 - x; + for (i=0;i<x;i++) out += `â–ˆâ`; + for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`;}} + else { + Math.clamp(x,0,max); + x = Math.floor(10*x/max); + z = 10 - x; + for (i=0;i<x;i++) out += `â–ˆâ`; + for (i=0;i<z;i++) out += `<span style=\"opacity: 0;\">â–ˆ</span>â`;} + return `${out}`; +}; \ No newline at end of file diff --git a/src/pregmod/SecForceEX/Proposal.tw b/src/pregmod/SecForceEX/Proposal.tw new file mode 100644 index 0000000000000000000000000000000000000000..741fb89491788f09589c74c3f07e05a53f8186e4 --- /dev/null +++ b/src/pregmod/SecForceEX/Proposal.tw @@ -0,0 +1,43 @@ +:: Security Force Proposal [nobr] +<<if $SF.Active === -1>> + <span id="result"> + + The Free Cities were founded on the principles of unrestrained anarcho-capitalism. To those with such beliefs, the very idea of possessing an armed force, a key tool of government control, or weapons at all, was anathema. + + <br><br>In the period since, however, your citizens have seen the value in weaponry. They watched on their news-feed as some Free Cities were sacked by the armies and mobs of the Old World, driven by their hatred of the citizens' luxurious lifestyles. They've seen other Cities toppled from within, by slave conspiracies or infighting among citizen groupings with differing beliefs. They've witnessed the distressingly rapid rise of fanatical anti-slavery organizations, who would like nothing more than to see them slowly bled by their own chattel. They are learned people, and they know what happens to slaveowners who lose their power. + + <br><br>They've also seen the results of your policies. Your actions towards the arming of both yourself and the arcology proved critical, and ensured their safety when the Old World came for them. And your victory over the Daughters of Liberty, who the citizens know would have executed every single one of them, has created an opportunity. If you insisted upon the creation of a standing 'special' force for the arcology, many would support you and, more importantly, nobody of note would object. + + <br><br>Such a force would solve many problems. More soldiers would mean more control, which is very good for you. More soldiers would mean more security for the arcology and the approaches to it, which is very good for business. More soldiers would mean more obedience from rebellious slaves who can see how powerless they truly are, which is very good for everybody. The force would be tiny compared to the Old World militaries that still exist, but money and technology can, of course, overcome massive numerical inferiority. This being the Free Cities, they would have other uses besides security. Perhaps, in time, you could exert some manner of influence on the Old World itself. + + <br><br>''This is a unique and very important opportunity'', and is possible only because of your recent victory over the Daughters. If you do not seize it, the memories and fears of your citizens will fade,and you will not be able to raise the matter again. + + <<set _price = 20000>> <<if $PC.warfare >= 100>> <<set _price = _price/2>> + <<elseif $PC.warfare >= 50||$PC.career === "arcology owner">> + <<set _price = _price/1.5>> <</if>> + <br><<link "Prepare for an announcement.""Security Force Proposal">> <<replace "#result">> + + You instruct $assistantName to announce to the arcology's citizenry that you will be making an important announcement in the near future regarding the security situation. Given the damage still present from the Daughters' attack, everyone will be tuning in. You also instruct your assistant to begin quietly investigating potential leadership figures for the force itself. + + <<run Object.assign($SF, {Active:1, Depravity:0, Units:0, MWU:0, U:0, WG:0, SpecOps:0, SpecOpsLock:0, + ROE:"hold", Target:"recruit", Regs:"strict", Caps:"The Special Force", + Lower:"the special force", Subsidy:1})>> <<set $cash -= _price>> + <<set $SFUnit = Object.assign({}, $SFUnit, {Troops:40, Armoury:0, Firebase:0, AV:0, TV:0, Drones:0, + Drugs:0, PGT:0, AA:0, AT:0, SpacePlane:0, GunS:0, Satellite:0, GiantRobot:0, MissileSilo:0, + AircraftCarrier:0, Sub:0, HAT:0})>> <<set $arcologies[0].SFRaid = 1,$arcologies[0].SFRaidTarget = -1>> + <<set $SFColonel = Object.assign({}, $SFColonel, {Core:"", Talk:0, Fun:0, Status:0})>> + <<set $SFTradeShow = Object.assign({}, $SFTradeShow, {History:0, CanAttend:0, + Income:0, Revenue:0, Helots:0, TotalHelots:0, Mercs:0, TotalMercs:0})>> + <<set $SatLaunched = 0>> + <</replace>> <</link>><br>//Initial costs are @@.yellowgreen;<<print cashFormat(_price)>>@@ and upon establishment the force will have significant support costs until it is self-sufficient.// + + <br><<link "The current measures are enough.""Next Week">> <<replace "#result">> <<run Object.assign(, $SF, {Active:0})>> <</replace>> <</link>> </span> +<<elseif $SF.Active === 1>> + <<include "Security Force Naming-Colonel">> +<<elseif $SF.Active >= 1 && passage() === "New Game Plus">> + <<run Object.assign($SF, {Active:-1, Depravity:0, Units:0, MWU:0, U:0, WG:0, SpecOps:0, SpecOpsLock:0, ROE:"hold", Target:"recruit", Regs:"strict", Caps:"The Special Force", Lower:"the special force", Subsidy:1})>> + <<set $SFUnit = Object.assign({}, $SFUnit, {Troops:40, Armoury:0, Firebase:0, AV:0, TV:0, Drones:0, Drugs:0, PGT:0, AA:0, TA:0, SpacePlane:0, GunS:0, Satellite:0, GiantRobot:0, MissileSilo:0, AircraftCarrier:0, Sub:0, HAT:0})>> + <<set $SatLaunched = 0>> + <<set $arcologies[0].SFRaid = 1,$arcologies[0].SFRaidTarget = -1>> <<set $SFColonel = Object.assign({}, $SFColonel, {Core:"", Talk:0, Fun:0, Status:0})>> + <<set $SFTradeShow = Object.assign({}, $SFTradeShow, {History:0, CanAttend:0, Income:0, Revenue:0, Helots:0, TotalHelots:0, Mercs:0, TotalMercs:0})>> +<</if>> \ No newline at end of file diff --git a/src/pregmod/SecForceEX/Report.tw b/src/pregmod/SecForceEX/Report.tw new file mode 100644 index 0000000000000000000000000000000000000000..49899d18fb3e97f8105dbdabcb4c62181d663eea --- /dev/null +++ b/src/pregmod/SecForceEX/Report.tw @@ -0,0 +1,407 @@ +:: SF_Report [nobr] + + <<silently>> <<= Count()>> + + <<if $SFUnit.Troops > 2000>> <<set $SFUnit.Troops = random(1955,1999)>> <</if>> + + <<if $SFUnit.Troops < 100>> <<set $SFUnit.Troops += Math.ceil(random(2,5))>> + + <<elseif $SFUnit.Troops < 2000>> + + <<if $SF.Target == "recruit">> + + <<set $SFUnit.Troops += Math.ceil(random(-1*$SFUnit.Troops/100,0))>> + + <<elseif $SF.Target == "raiding">> + + <<set $SFUnit.Troops += Math.ceil(random(-3*$SFUnit.Troops/100,-4*$SFUnit.Troops/100))>> + + <<else>> + + <<set $SFUnit.Troops += Math.ceil(random(-2*$SFUnit.Troops/100,-3*$SFUnit.Troops/100))>> + + <</if>> + + <</if>> + + <<set _Income = 50000,_Profit = 0,_ME = 1,_FNGs = 10,_Trade = 0.025>> + + <<if $SF.SpecOps > 0>> + + <<if $SF.SpecOps === 1>> <<set $SFUC = Math.ceil($SFUnit.Troops*.1),$SFUnit.Troops-$SFUC>> + + <<else>> <<set $SFUC = Math.ceil($SFUnit.Troops*.25),$SFUnit.Troops-$SFUC>> <</if>> + + <</if>> + + <<if $SFUnit.Troops > 200>> <<set _Trade += 0.05*(Math.ceil($SFUnit.Troops/100))>> + + <<set _Income += 5000*(Math.ceil($SFUnit.Troops/100))>> + + <<if $secExp > 0>> + + <<set $authority += 500*(Math.ceil($SFUnit.Troops/100)),$authority = Math.clamp($authority, 0, 20000)>> + + <</if>> + + <</if>> + + + + <<if $SFUnit.Firebase > 0>> + + <<set _FNGs += $SFUnit.Firebase,_Trade += 0.5*$SFUnit.Firebase,_ME *= 1+($SFUnit.Firebase)>> + + <</if>> + + <<if $SFUnit.Armoury > 0>> + + <<set _FNGs += ($SFUnit.Armoury*2),_Trade += 0.25*$SFUnit.Armoury,_ME *= 1+($SFUnit.Armoury)>> + + <</if>> + + <<if $SFUnit.Drugs > 0>> + + <<set _FNGs += $SFUnit.Drugs,_Trade += 0.25*$SFUnit.Drugs,_ME *= 1+($SFUnit.Drugs)>> + + <</if>> + + <<if $SFUnit.Firebase >= 1>> + + <<if $SFUnit.AV > 0>> + + <<set _FNGs += $SFUnit.AV,_Trade += 0.25*$SFUnit.AV,_ME *= 1+($SFUnit.AV)>> + + <</if>> + + <<if $SFUnit.TV > 0>> + + <<set _FNGs += $SFUnit.TV,_Trade += 0.25*$SFUnit.TV,_ME *= 1+($SFUnit.TV)>> + + <</if>> + + <<if $SFUnit.PGT > 0>> + + <<set _Trade += 0.25*($SFUnit.PGT),_ME *= 1+($SFUnit.PGT)>> + + <</if>> + + <</if>> + + <<if $SFUnit.Firebase >= 2 && $SFUnit.Drones > 0>> + + <<set _FNGs += $SFUnit.Drones,_Trade += 0.5*$SFUnit.Drones,_ME *= 1+($SFUnit.Drones)>> + + <</if>> + + + + <<if $SFUnit.Firebase >= 4>> + + <<if $SFUnit.AA > 0>> + + <<set _FNGs += $SFUnit.AA,_Trade += 0.25*$SFUnit.AA,_ME *= 1+($SFUnit.AA)>> + + <</if>> + + <<if $SFUnit.TA > 0>> + + <<set _FNGs += $SFUnit.TA,_Trade += 0.25*$SFUnit.TA,_ME *= 1+($SFUnit.TA)>> + + <</if>> + + <<if $SFUnit.SpacePlane > 0>> + + <<set _FNGs += $SFUnit.SpacePlane,_Trade += 0.25*$SFUnit.SpacePlane,_ME *= 1+($SFUnit.SpacePlane)>> + + <</if>> + + <<if $SFUnit.GunS > 0>> + + <<set _FNGs += $SFUnit.GunS,_Trade += 0.25*$SFUnit.GunS,_ME *= 1+($SFUnit.GunS)>> + + <</if>> + + <<if $SFUnit.Satellite > 0>> + + <<set _FNGs += $SFUnit.Satellite,_Trade += 0.25*$SFUnit.Satellite,_ME *= 1+($SFUnit.Satellite)>> + + <</if>> + + <<if $SFUnit.GiantRobot > 0>> + + <<set _FNGs += SF.GiantRobot,_Trade += 0.25*$SFUnit.GiantRobot,_ME *= 1+($SFUnit.GiantRobot)>> + + <</if>> + + <<if $SFUnit.MissileSilo > 0>> + + <<set _Trade += 0.25*$SFUnit.MissileSilo,_ME *= 1+($SFUnit.MissileSilo)>> + + <</if>> + + <</if>> + + + + <<if $SFUnit.AircraftCarrier > 0>> + + <<set _FNGs += $SFUnit.AircraftCarrier,_Trade += 0.25*$SFUnit.AircraftCarrier,_ME *= 1+($SFUnit.AircraftCarrier)>> + + <</if>> + + <<if $SFUnit.Sub > 0>> + + <<set _FNGs += $SFUnit.Sub,_Trade += 0.25*$SFUnit.Sub,_ME *= 1+($SFUnit.Sub)>> + + <</if>> + + <<if $SFUnit.HAT > 0>> + + <<set _Trade += 0.25*$SFUnit.HAT,_ME *= 1+($SFUnit.HAT)>> + + <</if>> + + + + <<if $SFColonel.Fun > 0>> <<set _ME *= 1+($SFColonel.Fun)>> <</if>> + + <<if $SFTradeShow.History > 0>> <<set _ME *= 1+($SFTradeShow.History)>> <</if>> + + <<if $LieutenantColonel == 1>> <<set _ME *= 1+($LieutenantColonel)>> <</if>> + + + + <<set _SFD = $SF.Depravity>> + + <<switch $SFColonel.Core>> <<case "kind" "collected.">> + + <<set _FNGs += 10,_Trade += 0.15,_SFD -= 0.15>> + + <<case "warmonger" "cruel" "psychopathic">> + + <<set _ME *= 1.15,_Trade -= 0.15,_SFD += 0.15>> + + <</switch>> + + <<if $SF.Target == "raiding">> <<set _SFD += 0.05>> + + <<elseif $SF.Target == "secure">> <<set _SFD -= 0.05>> <</if>> + + <<if $SF.ROE == "free">> <<set _ME *= .95,_SFD += 0.05,_Trade += _Trade*.95>> + + <<elseif $SF.ROE == "hold">> <<set _ME *= 1.05,_SFD -= 0.05,_Trade += _Trade*1.05>> <</if>> + + <<if $SF.Regs == "none">> <<set _ME *= .95,_SFD += 0.05,_Trade += _Trade*.95>> + + <<elseif $SF.Regs == "strict">> <<set _ME *= 1.05,_SFD -= 0.05,_Trade += _Trade*1.05>> <</if>> + + <<if _SFD != 0>> + + <<if _SFD < 0>> <<set _ef0 = _SFD*10,_ef1 = 1-(_SFD/10)>> + + <<elseif _SFD > 0>> <<set _ef0 = 1-(_SFD/10),_ef1 = _SFD*10>> <</if>> + + <<set _Trade += _Trade*(_ef0),_Income += _Income*(_ef1)>> <</if>> + + + + <<if $SF.Target == "recruit">> <<set _FNGs += Math.ceil((_FNGs)*.95)>> + + <<else>> <<set _FNGs += Math.ceil((_FNGs)*.25)>> <</if>> + + <<if $SF.Target == "secure">> <<set $rep += Math.ceil($rep*((_Trade/100)*.95))>> + + <<set $arcologies[0].prosperity = Math.ceil(($arcologies[0].prosperity+(_Trade/10)*.95))>> + + <<else>> <<set $rep += Math.ceil($rep*((_Trade/100)*.25))>> + + <<set $arcologies[0].prosperity = Math.ceil(($arcologies[0].prosperity+(_Trade/10)*.25))>> + + <</if>> + + <<if $secExp > 0>> <<set $authority += $SF.Units*10,$authority = Math.clamp($authority, 0, 20000)>> <</if>> + + + + <<set _Income += _ME*(1+($week/10)),$SFUnit.Troops += Math.round(_FNGs/2)>> + + <<if $SFUnit.Troops > 2000>> <<set $SFUnit.Troops = random(1955,1999)>> <</if>> + + <<if $rep > 20000>> <<set $rep = 20000>> <</if>> + + <<if $arcologies[0].prosperity > $AProsperityCap>> + + <<set $arcologies[0].prosperity = $AProsperityCap>> <</if>> + + <<if _Income >= 90000>> <<set _Profitable = 1,$SF.Subsidy = 0>> + + <<if $SF.Target == "raiding">> <<set _Profit = Math.ceil(_Income*1.95)>> <<else>> + + <<set _Profit = Math.ceil(_Income*1.25)>> <</if>> + + <<set $cash += _Profit>> + + <<else>> <<set _Profitable = 0>> <</if>> + + + + <<if $SFUnit.Drugs >= 8 || $SFUnit.Drugs >= 10>> <<set _Deaths = 0,_SurvivalChance = 50>> + + <<if $SFUnit.Drugs >= 8>> <<set _SurvivalChance -= 5>> <<elseif $SFUnit.Drugs >= 10>> + + <<set _SurvivalChance += 5>> <</if>> + + <<if random(0,100) > _SurvivalChance>> + + <<set _Deaths = random(0,(($SFUnit.Drugs*2)+4))>> <</if>> + + <<if _Deaths > 0>> <<set $SFUnit.Troops -= _Deaths>> <</if>> + + <</if>> <</silently>>__Status and Activities of $SF.Lower __: + + <br>This week, $SF.Lower, <<print commaNum($SFUnit.Troops)>> strong, focused on + + <<if $SF.Target == "recruit">> + + recruiting and training more personnel. Smaller parties ventured out to protect the arcology's trade routes and strike targets of opportunity. + + <<elseif $SF.Target == "secure">> + + securing the trade routes between the arcology and the surrounding area. Smaller parties ventured out to strike targets of opportunity and process new recruits. + + <<elseif $SF.Target == "raiding">> + + locating and striking targets of opportunity, capturing both material loot and new slaves. Smaller parties secured the most important of the arcology's trade routes and processed new recruits. + + <</if>> + + <<if $SF.SpecOps > 0>> <br>A <<if $SF.SpecOps <2>>small<<else>>large<</if>> portion of the force was assigned as <<if $SF.SpecOps <2>>part<<else>>full<</if>> time undercover officers.<</if>> + + + + <<if _Deaths > 0>> + + <<print (_Deaths)>> soldiers fatally overdosed on the drug cocktail + + <<if $SFTradeShow.CanAttend === -1>> + + , The Colonel's much heavier than average drug use saves her from this side effect + + <</if>>. + + <</if>> + + These activities have, overall, @@.green;improved@@ your arcology's prosperity. + + The goods procured by the $SF.Lower this week, after accounting for the spoils retained by individual soldiers were + + <<if _Profitable>> + + , @@.green;more than sufficient@@ to cover expenses. Excess material and human asets totaling @@.yellowgreen;<<print cashFormat(_Profit)>>@@ (after liquidation) were transferred to your accounts. + + <<else>> + + , @@.red;barely enough@@ to cover expenses. More growth will be needed to ensure profitability. + + <</if>> + + $SF.Caps managed to recruit <<print Math.round(_FNGs/2)>> new soldiers this week, and your reputation has @@.green;increased@@ through the improvement of trade security. + + + + <br> //Your instructions to <<print SFC()>>:// + + <br> Deployment focus: + + <span id="focus"> <<if $SF.Target == "recruit">> ''Recruiting and Training'' + + <<elseif $SF.Target == "secure">> ''Securing Trade Routes'' + + <<else>> ''Raiding and Slaving'' <</if>> </span> . + + <<link "Recruit and Train">> <<set $SF.Target = "recruit">> + + <<replace "#focus">> ''Recruiting and Training'' <</replace>> <</link>> + + | <<link "Secure Trade Routes">> <<set $SF.Target = "secure">> + + <<replace "#focus">> ''Securing Trade Routes'' <</replace>> <</link>> + + | <<link "Raiding and Slaving">> <<set $SF.Target = "raiding">> + + <<replace "#focus">> ''Raiding and Slaving'' <</replace>> <</link>> + + <br> Rules of Engagement: + + <span id="roe"> <<if $SF.ROE === "hold">> ''Hold Fire'' + + <<elseif $SF.ROE === "limited">> ''Limited Fire'' <<else>> ''Free Fire'' <</if>> + + </span>. + + <<link "Hold Fire">> <<set $SF.ROE = "hold">> <<replace "#roe">> ''Hold Fire'' + + <</replace>> <</link>> + + | <<link "Limited Fire">> <<set $SF.ROE = "limited">> <<replace "#roe">> + + 'Limited Fire'' <</replace>> <</link>> + + | <<link "Free Fire">> <<set $SF.ROE = "free">> <<replace "#roe">> ''Free Fire'' + + <</replace>> <</link>> + + <br> Accountability: + + <span id="accountability"> <<if $SF.Regs === "strict">> ''Strict Accountability'' + + <<elseif $SF.Regs === "some">> ''Some Accountability'' <<else>> + + ''No Accountability'' <</if>> </span>. + + <<link "Strict Accountability">> <<set $SF.Regs = "strict">> + + <<replace "#accountability">> ''Strict Accountability'' <</replace>> <</link>> + + | <<link "Some Accountability">> <<set $SF.Regs = "some">> + + <<replace "#accountability">> ''Some Accountability'' <</replace>> <</link>> + + | <<link "No Accountability">> <<set $SF.Regs = "none">> + + <<replace "#accountability">> ''No Accountability'' <</replace>> <</link>> + + <<if $SFTradeShow.View > 0 && $SFTradeShow.CanAttend === 1>> <br>''Merc Meetup'': + + <<set $SFTradeShow.Income = 0,$SFTradeShow.Helots = 0>> + + <<set _TradeShowAttendes = 200,_MenialSlavesPerAttendee = 5>> + + <<set _MenialSlaves = Math.ceil(random(1,((_TradeShowAttendes*_MenialSlavesPerAttendee)/10)))>> + + <<set _TSProfit = Math.ceil(500000*(1+($SF.Units/1000))*(1+($arcologies[0].prosperity/1000))*_Env)>> + + The Colonel managed to sell some of your more minor schematics to the _TradeShowAttendes attendees. She even managed to win some menial slaves in the big poker game.<br> + + <<set $helots = $helots+_MenialSlaves>> + + <<set $SFTradeShow.Helots += _MenialSlaves,$SFTradeShow.TotalHelots += _MenialSlaves>> + + <<set $cash = $cash+_TSProfit,$SFTradeShow.Income += _TSProfit>> + + <<set $SFTradeShow.Revenue += _TSProfit>> + + <<if $secExp > 0 && $mercenaries > 0>> <<set $SFTradeShow.Mercs = 0>> + + <<set _NewMercs = random(1,(_TradeShowAttendes/10))>> + + <<set $mercFreeManpower += _NewMercs,$SFTradeShow.TotalMercs += _NewMercs>> + + <<set $SFTradeShow.Mercs += _NewMercs>> + + <</if>> <<set $SFTradeShow.History += 1>> + + <</if>> <<include "FlavourText">> <<if $SF.SpecOps === 1 && !$SF.SpecOpsLock>> <<set $SF.SpecOps = 0>> <</if>> + + <<set $SF.U = 0,$SF.WG = 0,$SFColonel.Talk = 0,$SFColonel.Fun = 0>> \ No newline at end of file diff --git a/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw b/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw deleted file mode 100644 index d120d7aa0a0a8d6cfe1f1176f611704b75a6eb54..0000000000000000000000000000000000000000 --- a/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw +++ /dev/null @@ -1,602 +0,0 @@ -:: SpecialForceUpgradeOptions [nobr] -<<set _costDebuff = 1>> -<<set $HackingSkillMultiplier = HSM()>> -<<if ($SFAO < _max) && $securityForceUpgradeToken == 0>> -<span id="resultX"> - <br>Which facility or equipment do you wish _Name to upgrade this week? - <<if _Barracks < 1 || _Barracks < 2 || _Barracks < 4>><br> More barracks upgrades are required to unlock further options.<</if>> - - <<if $securityForceUpgradeToken == 0 && _Barracks < 5>> - <br><<link "Barracks">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "Expanding the facilities here should help us support more cool shit." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceArcologyUpgrades++, $cash -= 100000*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(100000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceArcologyUpgrades < _BarracksMax && $TierTwoUnlock == 1>> - <<switch _Barracks>> - <<case 5>> - <<set _arcCost = 1500000>> - <<case 6>> - <<set _arcCost = 2000000>> - <<case 7>> - <<set _arcCost = 3500000>> - <<case 8>> - <<set _arcCost = 5500000>> - <<case 9>> - <<set _arcCost = 1250000>> - <<case 10>> - <<set _arcCost = 3500000>> - <<case 11>> - <<set _arcCost = 6000000>> - <<case 12>> - <<set _arcCost = 25000000>> - <<case 13>> - <<set _arcCost = 50000000>> - <<case 14>> - <<set _arcCost = 60000000>> - <<case 15>> - <<set _arcCost = 95000000>> - <</switch>> - <br><<link "Barracks">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "Expanding the facilities here should help us support more cool shit." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceArcologyUpgrades++, $cash -= _arcCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_arcCost*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceArcologyUpgrades == 12 && _Armoury >= 11 && _StimulantLab >= 7 && $securityForceVehiclePower >= 7 && $securityForceAircraftPower >= 8 && $securityForceSpacePlanePower >= 11 && $securityForceFortressZeppelin >= 3 && $securityForceAC130 >= 5 && _DroneBay >= 6 && $securityForceSatellitePower >= 16>> - <br><<link "Barracks">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "Expanding the facilities here should help us support more cool shit." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceArcologyUpgrades++, $cash -= _arcCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_arcCost*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceArcologyUpgrades == 13>> - <br><<link "Barracks">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "Expanding the facilities here should help us support more cool shit." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceArcologyUpgrades++, $cash -= _arcCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_arcCost*$Env*_costDebuff)>> // - <</if>> - <<if _Barracks == _BarracksMax>> - <br>//$securityForceName has fully upgraded the barracks to support its activities// - <</if>> - - /* - <<if $securityForceUpgradeToken == 0 && $TierTwoUnlock == 1 && $SupportFacility == 0>> - <br><<link "Support Facility">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "Creating a specialised area for any slaves you send to assist us will benefical to everyone." - <<set $securityForceUpgradeToken = 1, $SupportFacility++, $cash -= Math.trunc(15000000*(Math.max(0.99,$SFAO)/10)*$Env*_costDebuff)>> - <<set $SFIDs = [], $SupportFacilityDecoration = "standard", $SupportFacilityName = "The Support Facility", $SupportFacilityEfficiency = 0>> - <<set $SupportFacility = 5, $SupportFacilitySlaves = 0, $LieutenantColonel = 0>> - <</replace>> - <</link>> // Costs <<print cashFormat(Math.trunc(15000000*(Math.max(0.99,$SFAO)/10)*$Env)*_costDebuff)>> // - <</if>> - */ - - <<if $securityForceUpgradeToken == 0 && _Armoury < 5>> - <br><<link "Armoury">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "The boys'll like having some new guns and armour to help them out there." She laughs. "Don't think the poor bastards they'll be shooting will thank you though." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceInfantryPower++, $cash -= 40000*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(40000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && _Armoury < _ArmouryMax && $TierTwoUnlock == 1>> - <br><<link "Armoury">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "The boys'll like having some new guns and armour to help them out there." She laughs. "Don't think the poor bastards they'll be shooting will thank you though." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceInfantryPower++, $cash -= 450000*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(450000*$Env*_costDebuff)>> // - <</if>> - <<if _Armoury == _ArmouryMax>> - <br>//$securityForceName has fully upgraded the armoury to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && _StimulantLab < 5>> - <br><<link "Stimulant Lab">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "The boys are going to like hearing that they'll be getting new stims. Some of them can't get enough." She laughs, sweeping her arm at a corner of the throne, where dozens of empty stimulant injectors are piled. "I might be one of them. Either way, the fucks out there aren't going to like us once we're on the new juice." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceStimulantPower++, $cash -= 40000*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(40000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && _StimulantLab < _StimulantLabMax && $TierTwoUnlock == 1>> - <<switch _StimulantLab>> - <<case 5>> - <<set _drugCost = 126500>> - <<case 6>> - <<set _drugCost = 226500>> - <<case 7>> - <<set _drugCost = 20000000>> - <<case 8>> - <<set _drugCost = 25000000>> - <<case 9>> - <<set _drugCost = 35000000>> - <</switch>> - <br><<link "Stimulant Lab">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "The boys are going to like hearing that they'll be getting new stims. Some of them can't get enough." She laughs, sweeping her arm at a corner of the throne, where dozens of empty stimulant injectors are piled. "I might be one of them. Either way, the fucks out there aren't going to like us once we're on the new juice." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceStimulantPower++, $cash -= _drugCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_drugCost*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && _StimulantLab == 7 && _Armoury >= 11 && $securityForceVehiclePower >= 7 && $securityForceAircraftPower >= 8 && $securityForceSpacePlanePower >= 11 && $securityForceFortressZeppelin >= 3 && $securityForceAC130 >= 5 && _DroneBay >= 6 && $securityForceSatellitePower >= 16 && _Barracks >= 13>> - <br><<link "Stimulant Lab">> - <<replace "#resultX">><br> - "Sure, boss." she says, nodding. "The boys are going to like hearing that they'll be getting new stims. Some of them can't get enough." She laughs, sweeping her arm at a corner of the throne, where dozens of empty stimulant injectors are piled. "I might be one of them. Either way, the fucks out there aren't going to like us once we're on the new juice." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceStimulantPower++, $cash -= _drugCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_drugCost*$Env*_costDebuff)>> // - <</if>> - <<if _StimulantLab == _StimulantLabMax>> - <br>//$securityForceName has fully upgraded the stimulant lab to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && _Barracks >= 1 && _Garage < _GarageMax && (_T1FullUpgradesGarage != "True" || $TierTwoUnlock == 1)>> - <br><<link "Garage">> - <<replace "#resultX">> - <span id="resultB"> - <br>"Which unit do you wish to upgrade or 'borrow'?" - <<link "Go back">> - <<goto "SFM Barracks">> - <</link>> - - <<if $securityForceUpgradeToken == 0 && $securityForceVehiclePower < 5>> - <br><<link "Light and medium vehicles">> - <<replace "#resultB">><br> - "Sure, boss." she says, nodding. "Some new wheels should help a lot." She laughs. "The scum out there don't seem to like it when we roll up on them in something better than their piece of shit junkers." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceVehiclePower++, $cash -= 60000*$Env*_costDebuff>> - <</replace>> - <</link>>// Costs <<print cashFormat(60000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceVehiclePower < _LightAndMediumVehiclesMax && $TierTwoUnlock == 1>> - <<if $securityForceVehiclePower < 6>> - <<set _vehCost = 250000>> - <<elseif $securityForceVehiclePower == 6>> - <<set _vehCost = 300000>> - <<elseif $securityForceVehiclePower == 7>> - <<set _vehCost = 490000>> - <</if>> - <br><<link "Light and medium vehicles">> - <<replace "#resultB">><br> - "Sure, boss." she says, nodding. "Some new wheels should help a lot." She laughs. "The scum out there don't seem to like it when we roll up on them in something better than their piece of shit junkers." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceVehiclePower++, $cash -= _vehCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_vehCost*$Env*_costDebuff)>> // - <</if>> - <<if $securityForceVehiclePower == _LightAndMediumVehiclesMax>> - <br>//$securityForceName has fully upgraded the vehicle fleet to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && $securityForceHeavyBattleTank < 1 && $TierTwoUnlock == 1>> - <br><<link "A heavy battle tank">> - <<replace "#resultB">><br> - "Sure, boss." she says, nodding. "A heavy battle tank should help a lot." She laughs. "The scum out there don't seem to like it when we roll up on them in something better than their piece of shit junkers." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceHeavyBattleTank++, $cash -= 6000000*$Env*_costDebuff>> - <</replace>> - <</link>>// Costs <<print cashFormat(6000000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceHeavyBattleTank >= 1 && $securityForceHeavyBattleTank < _HeavyBattleTankMax>> - <<if $securityForceHeavyBattleTank < 2>> - <<set _hbtCost = 7500000>> - <<elseif $securityForceHeavyBattleTank == 2>> - <<set _hbtCost = 850000>> - <</if>> - <br><<link "heavy battle tank">> - <<replace "#resultB">><br> - "Sure, boss." she says, nodding. "Upgrading the heavy battle tank should help a lot." She laughs. "The scum out there don't seem to like it when we roll up on them in something better than their piece of shit junkers." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceHeavyBattleTank++, $cash -= _hbtCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_hbtCost*$Env*_costDebuff)>> // - <</if>> - <<if $securityForceHeavyBattleTank == _HeavyBattleTankMax>> - <br>//$securityForceName has fully upgraded the heavy battle tank to support its activities.// - <</if>> - - </span> - <</replace>> - <</link>> - <</if>> - <<if _Garage >= _GarageMax>>//<br>$securityForceName has fully upgraded the garage to support its activities.//<</if>> - - <<if $securityForceUpgradeToken == 0 && _Barracks >= 4 && _Hangar < _HangarMax && (_T1FullUpgradesAirforce != "True" || $TierTwoUnlock == 1)>> - <br><<link "Hangar">> - <<replace "#resultX">> - <span id="resultY"> - <br>"Which unit do you wish to upgrade or 'borrow'?" - <<link "Go back">> - <<goto "SFM Barracks">> - <</link>> - - <<if $securityForceUpgradeToken == 0 && $securityForceAircraftPower < 5>> - <br><<link "Light and medium aircraft">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "Some new VTOLs would be great." She laughs. "They're the real multiplier over the scum out there. Not much a looter gang can do against air support." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceAircraftPower++, $cash -= 70000*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(70000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceAircraftPower < _AircraftMax && $TierTwoUnlock == 1>> - <<switch $securityForceAircraftPower>> - <<case 5>> - <<set _airCost = 275000>> - <<case 6>> - <<set _airCost = 325000>> - <<case 7>> - <<set _airCost = 575000>> - <<case 8>> - <<set _airCost = 675000>> - <<case 9>> - <<set _airCost = 775000>> - <</switch>> - <br><<link "Light and medium aircraft">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "Some new VTOLs would be great." She laughs. "They're the real multiplier over the scum out there. Not much a looter gang can do against air support." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceAircraftPower++, $cash -= _airCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_airCost*$Env*_costDebuff)>> // - <</if>> - <<if $securityForceAircraftPower == _AircraftMax>> - <br>//$securityForceName has fully upgraded the air fleet to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && $TierTwoUnlock == 1 && $securityForceSpacePlanePower < 1>> - <br><<link "A space plane">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "A orbital plane should help a lot." She laughs. "The scum out there don't seem to like it when we have eyes they can't hit." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceSpacePlanePower++, $cash -= 475000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(475000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceSpacePlanePower >= 1 && $securityForceSpacePlanePower < _SpacePlaneMax>> - <<if $securityForceSpacePlanePower < 4>> - <<set _spCost = 5000000>> - <<elseif $securityForceSpacePlanePower == 4>> - <<set _spCost = 7500000>> - <<elseif $securityForceSpacePlanePower == 5>> - <<set _spCost = 8500000>> - <<elseif $securityForceSpacePlanePower == 6>> - <<set _spCost = 9500000>> - <<elseif $securityForceSpacePlanePower == 7>> - <<set _spCost = 1250000>> - <<elseif $securityForceSpacePlanePower == 8>> - <<set _spCost = 1750000>> - <<elseif $securityForceSpacePlanePower == 9 && $securityForceInfantryPower >= 10>> - <<set _spCost = 2500000>> - <<elseif $securityForceSpacePlanePower == 10>> - <<set _spCost = 3500000>> - <<elseif $securityForceSpacePlanePower == 10>> - <<set _spCost = 6500000>> - <<elseif $securityForceSpacePlanePower == 11>> - <<set _spCost = 9500000>> - <</if>> - <br><<link "Space plane">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "Upgrading the orbital plane should help a lot." She laughs. "The scum out there don't seem to like it when we have eyes they can't hit." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceSpacePlanePower++, $cash -= _spCost*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_spCost*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <</if>> - <<if $securityForceSpacePlanePower == _SpacePlaneMax>> - <br>//$securityForceName has fully upgraded the space plane to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && $TierTwoUnlock == 1 && $securityForceFortressZeppelin < 1>> - <br><<link "A fortress zeppelin">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "A fortress zeppelin would help a lot." She laughs. "The scum out there don't seem to like it when we have things that their shit equipment can't damage." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceFortressZeppelin++, $cash -= 3000000*$Env*_costDebuff>> - <</replace>><</link>> // Costs <<print cashFormat(3000000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceFortressZeppelin >= 1 && $securityForceFortressZeppelin < _FortressZeppelinMax>> - <br><<link "Fortress zeppelin">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "Upgrading the Fortress Zeppelin, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceFortressZeppelin++, $cash -= 2000000*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat( 2000000*$Env*_costDebuff)>> // - <</if>> - <<if $securityForceFortressZeppelin == _FortressZeppelinMax>> - <br>//$securityForceName has fully upgraded the fortress zeppelin to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && $TierTwoUnlock == 1 && $securityForceAC130 < 1>> - <br><<link "An AC-130">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "An AC-130 would help a lot." She laughs. "The scum out there don't seem to like it when we have things that their shit equipment can't damage." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceAC130++, $cash -= 3500000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(3500000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceAC130 >= 1 && $securityForceAC130 < _AC130Max>> - <br><<link "AC-130">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "Upgrading the AC-130, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceAC130++, $cash -= 2500000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(2500000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <</if>> - <<if $securityForceAC130 == _AC130Max>> - <br>//$securityForceName has fully upgraded the AC-130 to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && $TierTwoUnlock == 1 && $securityForceHeavyTransport < 1>> - <br><<link "A heavy transport">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "A heavy transport would help a lot." She laughs. "The scum out there don't seem to like it when we have things that their shit equipment can't damage." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceHeavyTransport++, $cash -= 4000000*$Env*_costDebuff>> - <</replace>><</link>> // Costs <<print cashFormat(4000000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceHeavyTransport >= 1 && $securityForceHeavyTransport < _heavyTransportMax>> - <br><<link "Heavy transport">> - <<replace "#resultY">><br> - "Sure, boss." she says, nodding. "Upgrading the heavy transport, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceHeavyTransport++, $cash -= 3000000*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat( 3000000*$Env*_costDebuff)>> // - <</if>> - <<if $securityForceHeavyTransport == _heavyTransportMax>> - <br>//$securityForceName has fully upgraded the heavy transport to support its activities.// - <</if>> - - </span> - <</replace>> - <</link>> - <</if>> - <<if _Hangar >= _HangarMax>>//<br>$securityForceName has fully upgraded the hangar to support its activities.//<</if>> - - <<if $securityForceUpgradeToken == 0 && _DroneBay < 5 && _Barracks >= 2>> - <br><<link "Drone bay">> - <<replace "#resultX">> - "Sure, boss." she says, nodding. "Some new drones would be nice." She laughs. "The poor bastards out there shit themselves when they see combat drones fly over the horizon." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceDronePower++, $cash -= 45000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(45000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && _DroneBay < _DroneBayMax && $TierTwoUnlock == 1>> - <br><<link "Drone bay">> - <<replace "#resultX">> - "Sure, boss." she says, nodding. "Some new drones would be nice." She laughs. "The poor bastards out there shit themselves when they see combat drones fly over the horizon." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceDronePower++, $cash -= 2000000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(2000000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <</if>> - <<if _DroneBay == _DroneBayMax>> - <br>//$securityForceName has fully upgraded the drone bay to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && (_LaunchBayNO < _LaunchBayNOMax || _LaunchBayO < _LaunchBayOMax) && $TierTwoUnlock == 1>> - <br><<link "Launch Bay">> - <<replace "#resultX">> - <span id="resultZ"> - <br>"Which unit do you wish to upgrade or 'borrow'?" - <<link "Go back">> - <<goto "SFM Barracks">> - <</link>> - - <<if $securityForceUpgradeToken == 0 && $securityForceSatellitePower < 1>> - <br><<link "A Satellite">> - <<replace "#resultZ">><br> - "Sure, boss." she says, nodding. "A Satellite should help a lot." She laughs. "The scum out there don't seem to like it when we have eyes they can't hit." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceSatellitePower++, $cash -= 3750000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(3750000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceSatellitePower >= 1 && $securityForceSatellitePower < _SatelliteMax>> - <<switch $securityForceSatellitePower>> - <<case 11>> - <<set _satCost = 1500000>> - <<case 12>> - <<set _satCost = 1600000>> - <<case 13>> - <<set _satCost = 1700000>> - <<case 14>> - <<set _satCost = 1800000>> - <<case 15>> - <<set _satCost = 1900000>> - <<case 16>> - <<set _satCost = 25000000>> - <<case 17>> - <<set _satCost = 25000000>> - <<case 18>> - <<set _satCost = 30000000>> - <<case 19>> - <<set _satCost = 45000000>> - <<case 20 && $PC.hacking >= 75>> - <<set _satCost = 55000000>> - <<default>> - <<set _satCost = 2350000>> - <</switch>> - <br><<link "Satellite">> - <<replace "#resultZ">><br> - "Sure, boss." she says, nodding. "Upgrading the Satellite should help a lot." She laughs. "The scum out there don't seem to like it when we have eyes they can't hit." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceSatellitePower++, $cash -= _satCost*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_satCost*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceSatellitePower == 20 && $PC.hacking >= 75>> - <br><<link "Satellite">> - <<replace "#resultZ">><br> - "Sure, boss." she says, nodding. "Upgrading the Satellite should help a lot." She laughs. "The scum out there don't seem to like it when we have eyes they can't hit." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceSatellitePower++, $cash -= _satCost*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_satCost*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <</if>> - <<if $securityForceSatellitePower == _SatelliteMax>> - <br>//$securityForceName has fully upgraded the Satellite to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && $securityForceGiantRobot < 1 && ($terrain != "oceanic" && $terrain != "marine")>> - <br><<link "A giant robot">> - <<replace "#resultZ">><br> - "Sure, boss." she says, nodding. "A giant robot would help a lot." She laughs. "The scum out there don't seem to like it when we have things that their shit equipment can't damage." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceGiantRobot++, $cash -= 50000000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(50000000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceGiantRobot >= 1 && $securityForceGiantRobot < _GiantRobotMax>> - <<if $securityForceGiantRobot < 3>> - <<set _robCost = 25000000>> - <</if>> - <<switch $securityForceGiantRobot>> - <<case 3>> - <<set _robCost = 4500000>> - <<case 4>> - <<set _robCost = 4500000>> - <<case 5>> - <<set _robCost = 6500000>> - <<case 6>> - <<set _robCost = 8500000>> - <<case 7>> - <<set _robCost = 9500000>> - <<case 8>> - <<set _robCost = 1050000>> - <<case 9 && $securityForceInfantryPower >= 10>> - <<set _robCost = 27500000>> - <<case 10>> - <<set _robCost = 3150000>> - <<case 11>> - <<set _robCost = 3200000>> - <<case 12>> - <<set _robCost = 4550000>> - <<case 13>> - <<set _robCost = 6550000>> - <<case 14>> - <<set _robCost = 8550000>> - <<case 15 $PC.hacking >= 75>> - <<set _robCost = 9550000>> - <</switch>> - <br><<link "Giant robot">> - <<replace "#resultZ">><br> - "Sure, boss." she says, nodding. "Upgrading the giant robot, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceGiantRobot++, $cash -= _robCost*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_robCost*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceGiantRobot == 15 && $PC.hacking >= 75>> - <br><<link "Giant robot">> - <<replace "#resultZ">><br> - "Sure, boss." she says, nodding. "Upgrading the giant robot, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceGiantRobot++, $cash -= _robCost*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_robCost*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <</if>> - <<if $securityForceGiantRobot == _GiantRobotMax && ($terrain != "oceanic" && $terrain != "marine")>> - <br>//$securityForceName has fully upgraded the giant robot to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && $securityForceMissileSilo < 1 && ($terrain != "oceanic" && $terrain != "marine")>> - <br><<link "A missile silo">> - <<replace "#resultZ">><br> - "Sure, boss." she says, nodding. "A missile silo would help a lot." She laughs. "The scum out there don't seem to like it when we have things that their shit equipment can't damage." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceMissileSilo++, $cash -= 20000000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(20000000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceMissileSilo >= 1 && $securityForceMissileSilo < _MissileSiloMax>> - <<if $securityForceMissileSilo == 1>> - <<set _msCost = 2500000>> - <<elseif $securityForceMissileSilo == 2>> - <<set _msCost = 2950000>> - <</if>> - <br><<link "Missile silo">> - <<replace "#resultZ">><br> - "Sure, boss." she says, nodding. "Upgrading the missile silo, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceMissileSilo++, $cash -= _msCost*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_msCost*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <</if>> - <<if $securityForceMissileSilo == _MissileSiloMax && ($terrain != "oceanic" && $terrain != "marine")>><br>//$securityForceName has fully upgraded the missile silo to support its activities.//<</if>> - - </span> - <</replace>> - <</link>> - <</if>> - <<if _LaunchBayNO >= _LaunchBayNOMax || _LaunchBayO >= _LaunchBayNOMax>>//<br>$securityForceName has fully upgraded the launch bay to support its activities.//<</if>> - - <<if $securityForceUpgradeToken == 0 && ($terrain == "oceanic" || $terrain == "marine") && (_NavalYard < _NavalYardMax) && $TierTwoUnlock == 1>> - <br><<link "Naval Yard">> - <<replace "#resultX">> - <span id="resultA"> - <br>"Which unit do you wish to upgrade or 'borrow'?" - <<link "Go back">> - <<goto "SFM Barracks">> - <</link>> - - <<if $securityForceUpgradeToken == 0 && $securityForceAircraftCarrier < 1>> - <br><<link "An aircraft carrier">> - <<replace "#resultA">><br> - "Sure, boss." she says, nodding. "An aircraft carrier would help a lot." She laughs. "The scum out there don't seem to like it when we have things that their shit equipment can't damage." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceAircraftCarrier++, $cash -= 1500000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(1500000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceAircraftCarrier >= 1 && $securityForceAircraftCarrier < _AircraftCarrierMax>> - <br><<link "Aircraft carrier">> - <<replace "#resultA">><br> - "Sure, boss." she says, nodding. "Upgrading the aircraft carrier should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceAircraftCarrier++, $cash -= 25000000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(25000000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <</if>> - <<if $securityForceAircraftCarrier == _AircraftCarrierMax && ($terrain == "oceanic" || $terrain == "marine")>> - <br>//$securityForceName has fully upgraded the aircraft carrier to support its activities.// - <</if>> - - <<if $securityForceUpgradeToken == 0 && $securityForceSubmarine < 1>> - <br><<link "A submarine">> - <<replace "#resultA">><br> - "Sure, boss." she says, nodding. "A submarine would help a lot." She laughs. "The scum out there don't seem to like it when we have things that their shit equipment can't damage." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceSubmarine++, $cash -= 1500000*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(1500000*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceSubmarine >= 1 && $securityForceSubmarine < _SubmarineMax>> - <<if $securityForceSubmarine < 4>> - <<set _subCost = 2500000>> - <<elseif $securityForceSubmarine == 4>> - <<set _subCost = 8500000>> - <<elseif $securityForceSubmarine == 5>> - <<set _subCost = 8650000>> - <<elseif $securityForceSubmarine == 6 && $PC.hacking >= 75>> - <<set _subCost = 8780000>> - <</if>> - <br><<link "Submarine">> - <<replace "#resultA">><br> - "Sure, boss." she says, nodding. "Upgrading the submarine, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceSubmarine++, $cash -= _subCost*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_subCost*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0 && $securityForceSubmarine == 6 && $PC.hacking >= 75>> - <br><<link "Submarine">> - <<replace "#resultA">><br> - "Sure, boss." she says, nodding. "Upgrading the submarine, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceSubmarine++, $cash -= _subCost*$Env*$HackingSkillMultiplier*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_subCost*$Env*$HackingSkillMultiplier*_costDebuff)>> // - <</if>> - <<if $securityForceSubmarine == _SubmarineMax && ($terrain == "oceanic" || $terrain == "marine")>><br>//$securityForceName has fully upgraded the submarine to support its activities.//<</if>> - - <<if $securityForceUpgradeToken == 0 && $securityForceHeavyAmphibiousTransport < 1>> - <br><<link "A heavy amphibious transport">> - <<replace "#resultA">><br> - "Sure, boss." she says, nodding. "A heavy amphibious transport would help a lot." She laughs. "The scum out there don't seem to like it when we have things that their shit equipment can't damage." She picks up a tablet and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceHeavyAmphibiousTransport++, $cash -= 1500000*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(1500000*$Env*_costDebuff)>> // - <<elseif $securityForceUpgradeToken == 0&& $securityForceHeavyAmphibiousTransport >= 1 && $securityForceHeavyAmphibiousTransport < _HeavyAmphibiousTransportMax>> - <<switch $securityForceHeavyAmphibiousTransport>> - <<case 1>> - <<set _hatCost = 1500000>> - <<case 2>> - <<set _hatCost = 2500000>> - <<case 3>> - <<set _hatCost = 3000000>> - <<case 4>> - <<set _hatCost = 3500000>> - <<case 5>> - <<set _hatCost = 4000000>> - <</switch>> - <br><<link "Heavy amphibious transport">> - <<replace "#resultA">><br> - "Sure, boss." she says, nodding. "Upgrading the heavy amphibious transport, should help us gain a massive advantage." She laughs, picks up a tablet, and taps a few commands on it. "I'll get right on it." - <<set $securityForceUpgradeToken = 1, $securityForceHeavyAmphibiousTransport++, $cash -= _hatCost*$Env*_costDebuff>> - <</replace>> - <</link>> // Costs <<print cashFormat(_hatCost*$Env*_costDebuff)>> // - <</if>> - <<if $securityForceHeavyAmphibiousTransport == _HeavyAmphibiousTransportMax && ($terrain == "oceanic" || $terrain == "marine")>><br>//$securityForceName has fully upgraded the heavy amphibious transport to support its activities.//<</if>> - - </span> - <</replace>> - <</link>> - <</if>> - <<if ($terrain == "oceanic" || $terrain == "marine") && (_NavalYard >= _NavalYardMax)>><br>$securityForceName has fully upgraded the naval yard to support its activities.//<</if>> - -</span> -<</if>> diff --git a/src/pregmod/SecForceEX/Upgrades.tw b/src/pregmod/SecForceEX/Upgrades.tw new file mode 100644 index 0000000000000000000000000000000000000000..f1b5a49979a6d405cc193de328b264d3ed105bc8 --- /dev/null +++ b/src/pregmod/SecForceEX/Upgrades.tw @@ -0,0 +1,355 @@ +:: Upgrades [nobr] + + <br><br>Total upgrade progress: <<print progress($SF.Units,_max)>> + + <<if $SF.MWU >= 1>> <br>Total multi week $SF.Lower upgrades: $SF.MWU <</if>> + + <<if $SF.U > 0 && $SF.MWU >= 0 && ($SF.Units !== _max)>> + + <br>[[Re-unlock upgrading.|Firebase][$SF.U = 0,$SF.MWU += 1,$cash -= Math.ceil(Math.abs($cash*.05*(1.25+($SF.Units/1000))))]] @@.yellowgreen;<<print cashFormat(Math.ceil(Math.abs($cash*.05*(1.25+($SF.Units/1000)))))>><</if>> + + <<if ($SF.Units < 30 || $SF.Units !== _max) && $SF.U < 1>> <<set _T1 = $SF.Units >= 30>> + + <br>Which facility or equipment do you wish to upgrade this week? <br><br> + + + + <<if $SFUnit.Firebase < 5||_T1 && $SFUnit.Firebase < _FU>> + + <<set _cF = Math.ceil(100000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.Firebase/100)))>> + + <<if $cash >= _cF>> + + <<link "Upgrade Firebase">> <<set $SF.U = 1, $SFUnit.Firebase++, $cash -= _cF>><<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade the Firebase.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cF)>>@@ // + + <<elseif $SFUnit.Firebase == _FU>>//The Firebase has been fully upgraded.// + + <<else>>//More upgrades are required to unlock the next tier.// + + <</if>> <span style="float:right;"> <<print progress($SFUnit.Firebase)>> </span><br> + + + + <<if $SFUnit.Armoury < 5||_T1 && $SFUnit.Armoury < _AU>> + + <<set _cA = Math.ceil(40000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.Armoury/100)))>> + + <<if $cash >= _cA>> + + <<link "Upgrade Armory">> <<set $SF.U = 1, $SFUnit.Armoury++, $cash -= _cA>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade the Armory.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cA)>>@@ // + + <<elseif $SFUnit.Armoury == _AU>>//The Armory has been fully upgraded.// + + <<else>>//More upgrades are required to unlock the next tier.// + + <</if>> <span style="float:right;"> <<print progress($SFUnit.Armoury)>> </span><br> + + + + <<if $SFUnit.Drugs < 5||_T1 && $SFUnit.Drugs < _DrugsU>> + + <<set _cDrugs = Math.ceil(40000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.Drugs/100)))>> + + <<if $cash >= _cDrugs>> + + <<link "Upgrade Drug Lab">><<set $SF.U = 1, $SFUnit.Drugs++, $cash -= _cDrugs>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade the Drug Lab.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cDrugs)>>@@ // + + <<elseif $SFUnit.Drugs == _DrugsU>>//The Drug Lab has been fully upgraded.// + + <<else>>//More upgrades are required to unlock the next tier.// + + <</if>> <span style="float:right;"> <<print progress($SFUnit.Drugs)>> </span><br> + + + + <<if $SFUnit.Firebase >= 2 && ($SFUnit.Drones < 5 ||_T1 && $SFUnit.Drones < _DU)>> + + <<set _cDrones = Math.ceil(45000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.Drones/100))*HSM())>> + + <<if $cash >= _cDrones>> + + <<link "Upgrade Drone Bay">><<set $SF.U = 1, $SFUnit.Drones++, $cash -= _cDrones>> <<goto "Firebase">> <</link>> + + <<else>>//Cannot afford to upgrade the Drone Bay.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(Math.ceil(45000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.Drones/100))*HSM()))>>@@ // <span style="float:right;"> <<print progress($SFUnit.Drones)>> </span> + + <<elseif $SFUnit.Drones == _DU>>//The Drone Bay has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.Drones)>> </span> + + <<elseif _T1 && $SFUnit.Drones == 5>>//More upgrades are required to unlock the next tier.//<span style="float:right;"> <<print progress($SFUnit.Drones)>> </span><</if>> + + + + <<if $SFUnit.Firebase >= 1 && $terrain !== "oceanic">><br>''Garage'' + + <div style="margin-left:2em"><<if ($SFUnit.AV < 5||_T1 && $SFUnit.AV < _AVU)>> + + <<set _cAV = Math.ceil(60000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.AV/100)))>> + + <<if $cash >= _cAV>> + + <<link "Upgrade Attack Vehicle Fleet">><<set $SF.U = 1, $SFUnit.AV++, $cash -= _cAV>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade the Attack Vehicle Fleet.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cAV)>>@@//<span style="float:right;"><<print progress($SFUnit.AV)>></span> + + <<elseif $SFUnit.AV == _AVU>>//The Attack Vehicle Fleet has been fully upgraded.//<span style="float:right;"><<print progress($SFUnit.AV)>></span> + + <<else>>//More upgrades are required to unlock the next tier.//<span style="float:right;"><<print progress($SFUnit.AV)>></span> + + <</if>></div> + + + + <div style="margin-left:2em"><<if ($SFUnit.TV < 5||_T1 && $SFUnit.TV < _TVU)>> + + <<set _cTV = Math.ceil(60000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.TV/100)))>> + + <<if $cash >= _cTV>> + + <<link "Upgrade Transport Vehicle Fleet">><<set $SF.U = 1, $SFUnit.TV++, $cash -= _cAV)>><<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Transport Vehicle Fleet.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cTV)>>@@//<span style="float:right;"><<print progress($SFUnit.TV)>> </span> + + <<elseif $SFUnit.TV == _TVU>>//The Transport Vehicle Fleet has been fully upgraded.//<span style="float:right;"><<print progress($SFUnit.TV)>></span> + + <<else>>//More upgrades are required to unlock the next tier.//<span style="float:right;"> <<print progress($SFUnit.TV)>> </span><</if>></div> + + + + <div style="margin-left:2em"><<if _T1 && $SFUnit.PGT < _PGTU>> + + <<set _cPGT = Math.ceil(735000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.PGT/100)))>> + + <<if $cash >= _cPGT>> + + <<link "Upgrade Prototype Goliath tank">><<set $SF.U = 1, $SFUnit.PGT++, $cash -= _cPGT>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Prototype Goliath Tank.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cPGT)>>@@ //<span style="float:right;"> <<print progress($SFUnit.PGT)>> </span> + + <<elseif $SFUnit.PGT == _PGTU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.PGT)>> </span> + + <<elseif $SFUnit.PGT == _PGTU>>//The Prototype Goliath Tank has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.PGT)>> </span><</if>></div><</if>> + + + + <<if $SFUnit.Firebase >= 4>><br>''Hangar'' + + <div style="margin-left:2em"><<if $SFUnit.AA < 5||_T1 && $SFUnit.AA < _AAU>> + + <<set _cAA = Math.ceil(70000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.AA/100)))>> + + <<if $cash >= _cAA>> + + <<link "Upgrade Attack Aircraft Fleet">><<set $SF.U = 1, $SFUnit.AA++, $cash -= _cAA>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Attack Aircraft Fleet.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cAA)>>@@ //<span style="float:right;"> <<print progress($SFUnit.AA)>> </span> + + <<elseif $SFUnit.AA == _AAU>>//The Attack Aircraft Fleet has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.AA)>> </span> + + <<else>>//More upgrades are required to unlock the next tier.//<span style="float:right;"> <<print progress($SFUnit.AA)>> </span><</if>></div> + + + + <div style="margin-left:2em"><<if $SFUnit.TA < 5||_T1 && $SFUnit.TA < _TAU>> + + <<set _cTA = Math.ceil(70000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.TA/100)))>> + + <<if $cash >= _cTA>> + + <<link "Upgrade Transport Aircraft Fleet">><<set $SF.U = 1, $SFUnit.TA++, $cash -= _cTA>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade the Transport Aircraft Fleet.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cTA)>>@@ //<span style="float:right;"> <<print progress($SFUnit.TA)>> </span> + + <<elseif $SFUnit.TA == _TAU>>//The Transport Aircraft Fleet has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.TA)>> </span> + + <<else>>//More upgrades are required to unlock the next tier.//<span style="float:right;"> <<print progress($SFUnit.TA)>> </span><</if>></div> + + + + <div style="margin-left:2em"><<if _T1 && $SFUnit.SpacePlane < _SPU>> + + <<set _cSP = Math.ceil(250000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.SpacePlane/100))*HSM())>> + + <<if $cash >= _cSP>> + + <<link "Upgrade Spaceplane">><<set $SF.U = 1, $SFUnit.SpacePlane++, $cash -= _cSP>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade the Spaceplane.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cSP)>>@@//<span style="float:right;"><<print progress($SFUnit.SpacePlane)>> </span> + + <<elseif $SFUnit.SpacePlane == _SPU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.SpacePlane)>> </span> + + <<elseif $SFUnit.SpacePlane == _SPU>>//The Spaceplane has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.SpacePlane)>> </span><</if>></div> + + + + <div style="margin-left:2em"><<if _T1 && $SFUnit.GunS < _GunSU>> + + <<set _cGunS = Math.ceil(350000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.GunS/100))*HSM())>> + + <<if $cash >= _cGunS>> + + <<link "Upgrade Gunship">><<set $SF.U = 1, $SFUnit.GunS++, $cash -= _cGunS>><<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Gunship.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cGunS)>>@@ //<span style="float:right;"> <<print progress($SFUnit.GunS)>> </span> + + <<elseif $SFUnit.GunS == _GunSU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.GunS)>> </span> + + <<elseif $SFUnit.GunS == _GunSU>>//The Gunship has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.GunS)>> </span><</if>></div><</if>> + + + + <<if _T1>>''Launch Bay'' + + <div style="margin-left:2em"><<if $SFUnit.Satellite < _SatU && $SatLaunched < 1>> + + <<set _cSat = Math.ceil(525000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.Satellite/100))*HSM())>> + + <<if $cash >= _cSat>> + + <<link "Upgrade Satellite">><<set $SF.U = 1, $SFUnit.Satellite++, $cash -= _cSat>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Satellite.//>><</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cSat)>>@@//<span style="float:right;"><<print progress($SFUnit.Satellite)>> </span> + + <<elseif $SFUnit.Satellite == _SatU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.Satellite)>> </span> + + <<else>>//The Satellite has been fully upgraded.//<span style="float:right;"><<print progress($SFUnit.Satellite)>></span><</if>></div> + + + + <<if $terrain !== "oceanic">> + + <div style="margin-left:2em"><<if $SFUnit.GiantRobot < _GRU>> + + <<set _cGR = Math.ceil(550000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.GiantRobot/100))*HSM())>> + + <<if $cash >= _cGR>> + + <<link "Upgrade Giant Robot">><<set $SF.U = 1, $SFUnit.GiantRobot++, $cash -= _cGR>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade the Giant Robot.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cGR)>>@@//<span style="float:right;"><<print progress($SFUnit.GiantRobot)>></span> + + <<elseif $SFUnit.GiantRobot == _GRU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.GiantRobot)>> </span> + + <<else>>//The Giant Robot has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.GiantRobot)>> </span><</if>></div><</if>> + + + + <div style="margin-left:2em"><<if $SFUnit.MissileSilo < _MSU>> + + <<set _cMS = Math.ceil(565000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.MissileSilo/100))*HSM())>> + + <<if $cash >= _cMS>> + + <<link "Upgrade Cruise Missile">><<set $SF.U = 1, $SFUnit.MissileSilo++, $cash -= _cMS>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Cruise Missile.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cMS)>>@@ //<span style="float:right;"><<print progress($SFUnit.MissileSilo)>></span> + + <<elseif $SFUnit.MissileSilo == _MSU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.MissileSilo)>> </span> + + <<else>>//The Cruise Missile has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.MissileSilo)>> </span><</if>></div><</if>> + + + + <<if _T1 && ($terrain == "oceanic" || $terrain == "marine")>>''Naval Yard'' + + <div style="margin-left:2em"><<if $SFUnit.AircraftCarrier < _ACU>> + + <<set _cAC = Math.ceil(650000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.AircraftCarrier/100))*HSM())>> + + <<if $cash >= _cAC>> + + <<link "Upgrade Aircraft Carrier">><<set $SF.U = 1, $SFUnit.AircraftCarrier++, $cash -= _cAC>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Aircraft Carrier.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(Math.ceil(650000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.AircraftCarrier/100))*HSM()))>>@@ //<span style="float:right;"> <<print progress($SFUnit.AircraftCarrier)>> </span> + + <<elseif $SFUnit.AircraftCarrier == _ACU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.AircraftCarrier)>> </span> + + <<else>>//The Aircraft Carrier has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.AircraftCarrier)>> </span><</if>></div> + + + + <div style="margin-left:2em"><<if $SFUnit.Sub < _SubU>> + + <<set _cSub = Math.ceil(700000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.Sub/100))*HSM())>> + + <<if $cash >= _cSub>> + + <<link "Upgrade Submarine">><<set $SF.U = 1, $SFUnit.Sub++, $cash -= _cSub>> <<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Submarine//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cSub)>>@@ //<span style="float:right;"> <<print progress($SFUnit.Sub)>> </span> + + <<elseif $SFUnit.Sub == _SubU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.Sub)>> </span> + + <<else>>//The Submarine has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.Sub)>> </span><</if>></div> + + + + <div style="margin-left:2em"><<if $SFUnit.HAT < _HATU>> + + <<set _cHAT = Math.ceil(665000*_Env*(1.15+($SF.Units/10))*(1.15+($SFUnit.HAT/100)))>> + + <<if $cash >= _cHAT>> + + <<link "Upgrade Amphibious Transport">><<set $SF.U = 1, $SFUnit.HAT++, $cash -= _cHAT>><<goto "Firebase">><</link>> + + <<else>>//Cannot afford to upgrade Amphibious Transport.//<</if>> + + //Costs @@.yellowgreen;<<print cashFormat(_cHAT)>>@@ //<span style="float:right;"> <<print progress($SFUnit.HAT)>> </span> + + <<elseif $SFUnit.HAT == _HATU && $PC.warfare < 75>>//Your warfare skill is not high enough unlock the next upgrade.//<span style="float:right;"> <<print progress($SFUnit.HAT)>> </span> + + <<else>>//The Amphibious Transport has been fully upgraded.//<span style="float:right;"> <<print progress($SFUnit.HAT)>> </span><</if>></div> + + <</if>> + + <<if _T1 < 1>>//More firebase upgrades are required to unlock further upgrades.//<</if>> + + <</if>> + + /* @@.green;<<link "Support Facility">> <<replace "#resultX">> + + <<set $SF.U = 1, $cash -= Math.ceil( (($C*(1.15+(($SFA0/1000))*($U+.15))*_Env )>> + + <<set $SFIDs = [], $SupportFacilityDecoration = "standard", $SupportFacilityNameCount = "The Support Facility", $SupportFacilityEfficiency = 0>> + + <<set $SupportFacility = 5, $SupportFacilitySlaves = 0, $LieutenantColonel = 0>> + + <<set $FacilitySupportSpeedUpgrades = 0, $FacilitySupportTrainingUpgrade = 0>> + + <</replace>> <</link>>@@ // @@.yellowgreen;<<print cashFormat(Math.ceil(Math.ceil($C*(1.15+(($SFA0/1000)*($U+.15)*_Env)))>>@@ //*/ \ No newline at end of file diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 11dc01a4d4ab529033830b25c56bd0ff58f44c7e..13d43444de548218071f2f0f4d166aee4356ef09 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -942,7 +942,6 @@ /*SFVAR*/ <<if def $SF && $SFSaveRepair === 1>> <<set $SFMODToggle = $SF.Toggle>> - <<set $SF.Toggle = undefined>> <<if $SF.Active >= 1>> <<set $securityForceActive = 1,$securityForceCreate = 1,$securityForceEventSeen = 1>> <<else>> @@ -980,93 +979,89 @@ <<if $securityForceStimulantPower > 5>> <<set $securityForceStimulantPower = 5>> <</if>> <<if $securityForceAircraftPower > 5>> <<set $securityForceAircraftPower = 5>> <</if>> <</if>> - <<unset $SF>> -<</if>> - -<<if $SFMODToggle == 1 && $securityForceCreate == 1>> - /* SF anon additional Special Force Variables [SFVAR] */ - - /* Personnel/Gear */ - <<if ndef $securityForceHeavyBattleTank>> - <<set $securityForceHeavyBattleTank = 0>> - <</if>> - <<if ndef $securityForceSpacePlanePower>> - <<set $securityForceSpacePlanePower = 0>> - <</if>> - <<if ndef $securityForceFortressZeppelin>> - <<set $securityForceFortressZeppelin = 0>> - <</if>> - <<if ndef $securityForceAC130>> - <<set $securityForceAC130 = 0>> - <</if>> - <<if ndef $securityForceHeavyTransport>> - <<set $securityForceHeavyTransport = 0>> - <</if>> - <<if ndef $securityForceSatellitePower>> - <<set $securityForceSatellitePower = 0>> - <</if>> - <<if $terrain != "oceanic" && $terrain != "marine">> - <<if ndef $securityForceGiantRobot>> - <<set $securityForceGiantRobot = 0>> - <</if>> - <<if ndef $securityForceMissileSilo>> - <<set $securityForceMissileSilo = 0>> - <</if>> - <</if>> - <<if $terrain == "oceanic" || $terrain == "marine">> - <<if ndef $HeavyAmphibiousTransport>> - <<set $HeavyAmphibiousTransport = 0>> + <<unset $SF, $SFColonel, $SFTradeShow, $SFUnit>> + <<set $SFSaveRepair = 0>> +<<elseif $SFSaveRepair === 0>> + <<if $securityForceEventSeen === 0>> <<set $securityForceActive = -1>> <<else>> <<set $securityForceActive = 2>> <</if>> + <<set $SF = Object.assign({}, $SF, {Toggle:$SFMODToggle, Active:$securityForceActive})>> + <<unset $SFMODToggle, $securityForceActive, $securityForceCreate, $securityForceEventSeen>> + <</if>> + + <<if $SF.Toggle === 1 && $SF.Active >= 1>> + <<run Object.assign($SF, {Depravity:$securityForceDepravity, + Units:$SFAO, MWU:$securityForceUpgradeTokenReset, U:$securityForceUpgradeToken, + WG:$securityForceGiftToken, SpecOps:0, SpecOpsLock:0, ROE:$securityForceRulesOfEngagement, + Target:$securityForceFocus, Regs:$securityForceAccountability, + Caps:"The Special Force", Lower:$securityForceName, Subsidy:$SubsidyActive})>> + <<unset $securityForceActive, $securityForceRecruit, $securityForceTrade, + $securityForceBooty, $securityForceIncome, $securityForceMissionEfficiency, + $securityForceProfitable, $TierTwoUnlock, $securityForceDepravity, $SFAO, + $securityForceUpgradeTokenReset, $securityForceUpgradeToken, + $securityForceGiftToken, $securityForceRulesOfEngagement, $securityForceFocus, + $securityForceAccountability, $securityForceName, $SubsidyActive>> + <<if $SF.Lower != "the special force">> + <<set $SF.Caps = $SF.Lower.replace("the ", "The ")>> <</if>> - <<if ndef $securityForceAircraftCarrier>> - <<set $securityForceAircraftCarrier = 0>> - <</if>> - <<if ndef $securityForceSubmarine>> - <<set $securityForceSubmarine = 0>> - <</if>> - <</if>> - - /* FacilitySupport */ - <<if ndef $SupportFacility>> - <<set $SupportFacility = 0>> - <</if>> - - /* Colonel /* - <<if ndef $ColonelCore>> - <<set $ColonelCore = "">> - <</if>> - <<if ndef $securityForceColonelToken>> - <<set $securityForceColonelToken = 0>> - <</if>> - <<if ndef $securityForceSexedColonelToken>> - <<set $securityForceSexedColonelToken = 0>> - <</if>> - <<if ndef $securityForceColonelSexed>> - <<set $securityForceColonelSexed = 0>> - <</if>> - - /* TradeShow */ - <<if ndef $TradeShowAttendanceGranted>> - <<set $TradeShowAttendanceGranted = 0>> - <</if>> - <<if ndef $OverallTradeShowAttendance>> - <<set $OverallTradeShowAttendance = 0>> - <</if>> - <<if ndef $CurrentTradeShowAttendance>> - <<set $CurrentTradeShowAttendance = 0>> - <</if>> - <<if ndef $TradeShowIncome>> - <<set $TradeShowIncome = 0>> - <</if>> - <<if ndef $TotalTradeShowIncome>> - <<set $TotalTradeShowIncome = 0>> - <</if>> - <<if ndef $TradeShowHelots>> - <<set $TradeShowHelots = 0>> - <</if>> - <<if ndef $TotalTradeShowHelots>> - <<set $TotalTradeShowHelots = 0>> - <</if>> + <<if ndef $ColonelCore>> <<set $ColonelCore = "">> <</if>> + <<if ndef $ColonelDiscussion>> <<set $ColonelDiscussion = 0>> <</if>> + <<if ndef $ColonelSexed>> <<set $ColonelSexed = 0>> <</if>> + <<set $SFColonel = Object.assign({}, $SFColonel = {Core:$ColonelCore, Talk:$securityForceColonelToken, + Fun:$securityForceColonelSexed, Status:$ColonelRelationship})>> + <<unset $ColonelCore, $securityForceColonelToken, securityForceColonelSexed, + ColonelRelationship>> + + <<if ndef $TradeShowIncome>> <<set $TradeShowIncome = 0>> <</if>> + <<if ndef $TotalTradeShowIncome>> <<set $TotalTradeShowIncome = 0>> <</if>> + <<if ndef $TradeShowHelots>> <<set $TradeShowHelots = 0>> <</if>> + <<if ndef $TotalTradeShowHelots>> <<set $TotalTradeShowHelots = 0>> <</if>> + <<set $SFTradeShow = Object.assign({}, $SFTradeShow, {History:$OverallTradeShowAttendance, + CanAttend:$CurrentTradeShowAttendance, Income:$TradeShowIncome, + Revenue:$TotalTradeShowIncome, Helots:$TradeShowHelots, + TotalHelots:$TotalTradeShowHelots, Mercs:0, TotalMercs:0})>> + <<unset $OverallTradeShowAttendance, $CurrentTradeShowAttendance, + $TradeShowIncome, $TotalTradeShowIncome, $TradeShowHelots, + $TotalTradeShowHelots>> + <<if $SFTradeShow.History > 0>> <<set $SFTradeShow.View = 1>> <</if>> + + <<if ndef $securityForceHeavyBattleTank>> + <<set $securityForceHeavyBattleTank = 0>> <</if>> + <<if ndef $securityForceSpacePlanePower>> + <<set $securityForceSpacePlanePower = 0>> <</if>> + <<if ndef $securityForceAC130>> <<set $securityForceAC130 = 0>> <</if>> + <<if ndef $securityForceSatellitePower>> + <<set $securityForceSatellitePower = 0>> <</if>> + <<if ndef $securityForceGiantRobot>> + <<set $securityForceGiantRobot = 0>> <</if>> + <<if ndef $securityForceMissileSilo>> + <<set $securityForceMissileSilo = 0>> <</if>> + <<if ndef $securityForceAircraftCarrier>> + <<set $securityForceAircraftCarrier = 0>> <</if>> + <<if ndef $securityForceSubmarine>> + <<set $securityForceSubmarine = 0>> <</if>> + <<if ndef $securityForceHeavyAmphibiousTransport>> + <<set $securityForceHeavyAmphibiousTransport = 0>> <</if>> + <<set $SFUnit = Object.assign({}, $SFUnit, {Troops:$securityForcePersonnel, + Armoury:$securityForceInfantryPower, Firebase:$securityForceArcologyUpgrades, + AV:$securityForceVehiclePower, TV:$securityForceVehiclePower, + Drones:$securityForceDronePower, Drugs:$securityForceStimulantPower, + PGT:$securityForceHeavyBattleTank,AA:$securityForceAircraftPower, + TA:$securityForceAircraftPower, SpacePlane:$securityForceSpacePlanePower, + GunS:$securityForceAC130, Satellite:$securityForceSatellitePower, + GiantRobot:$securityForceGiantRobot, MissileSilo:$securityForceMissileSilo, + AircraftCarrier:$securityForceAircraftCarrier, Sub:$securityForceSubmarine, + HAT:$securityForceHeavyAmphibiousTransport})>> <<set $SatLaunched = 0>> + <<unset $securityForcePersonnel, $securityForceInfantryPower, + $securityForceArcologyUpgrades, $securityForceVehiclePower, + $securityForceDronePower, $securityForceStimulantPower, + $securityForceHeavyBattleTank, $securityForceAircraftPower, + $securityForceSpacePlanePower,$securityForceAC130, $securityForceSatellitePower, + $securityForceGiantRobot, $securityForceMissileSilo, + $securityForceAircraftCarrier, $securityForceSubmarine, $securityForceHeavyAmphibiousTransport>> + <<set $SFSaveRepair = -1>> +<</if>> +<<if def $SF>> + <<if $SF.Active >= 1 && passage() === "New Game Plus">> <<silently>> <<include "Security Force Proposal">> <</silently>> <</if>> <</if>> <<if ndef $useSlaveSummaryTabs>> diff --git a/src/uncategorized/SFMBarracks.tw b/src/uncategorized/SFMBarracks.tw deleted file mode 100644 index 579927ed7ab0b7da2b63f72e76d5cfbee3d058ee..0000000000000000000000000000000000000000 --- a/src/uncategorized/SFMBarracks.tw +++ /dev/null @@ -1,168 +0,0 @@ -:: SFM Barracks [nobr] - -<<set _Name = "<<if $CurrentTradeShowAttendance == 1 && $LieutenantColonel == 2>>Lieutenant Colonel <<= SlaveFullName($LieutenantColonel)>> <<elseif $CurrentTradeShowAttendance == 1 && $LieutenantColonel != 2>> a soldier <<elseif $CurrentTradeShowAttendance == 0>> The Colonel<</if>>">> - -<<if ndef $ColonelRelationship>> - <<set $ColonelRelationship = 0>> /* 0 - Employee and boss, 10 - Friend, 25 - Close friend, 45 - Girlfriend, 65 - Lover */ -<</if>> -<<if $ColonelRelationship == 0>> - <<set _RelationshipTitle = "boss">> -<<elseif $ColonelRelationship >= 10>> - <<set _RelationshipTitle = "friend">> -<<elseif $ColonelRelationship >= 25>> - <<set _RelationshipTitle = "close friend">> -<<elseif $ColonelRelationship >= 45>> - <<if $PC.title == 1>> - <<set _RelationshipTitle = "boyfriend">> - <<else>> - <<set _RelationshipTitle = "girlfriend">> - <</if>> -<<elseif $ColonelRelationship >= 65>> - <<set _RelationshipTitle = "lover">> -<</if>> -<<set $Env = simpleWorldEconomyCheck()>> -<<switch $Env>> - <<case 4>> - <<set $EnvCash2 = 450, $EnvCash3 = 200, $EnvCash4 = 100, $EnvProsp = 3, _BaseDiscount = _BaseDiscount-.005>> - <<case 3>> - <<set $EnvCash2 = 500, $EnvCash3 = 250, $EnvCash4 = 150, $EnvProsp = 5, _BaseDiscount = _BaseDiscount>> - <<case 2>> - <<set $EnvCash2 = 550, $EnvCash3 = 300, $EnvCash4 = 200, $EnvProsp = 7, _BaseDiscount = _BaseDiscount+.005>> -<</switch>> - -<<if ndef $TierTwoUnlock>> <<set $TierTwoUnlock = 0>> <</if>> -<<include "SpecialForceUpgradeTree">> - -<<if $SFNO > 0>> - <<set $SFAO = $SFNO>> -<<elseif $SFO > 0>> - <<set $SFAO = $SFO>> -<<else>> - <<set $SFAO = 0>> -<</if>> - -<<if ndef $FacilitySupport>> - <<set $FacilitySupport = 0>> -<</if>> - -<<if ndef $securityForceUpgradeTokenReset || $SFAO == 0>> - <<set $securityForceUpgradeTokenReset = 0>> -<</if>> - -<<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Barracks">> - -<<if $cheatMode == 1>> - <<link "Cheat edit vars">> - <<goto "SpecialForceBarracksCheatEdit">> - <</link>> - <br> -<</if>> - -//The barracks of <<textbox "$securityForceName" $securityForceName "SFM Barracks">> is located in the lower levels of $arcologies[0].name, occupying unneeded warehouse space. It is not accessible to the general citizenry, but your personal elevator has express service to it. As you step off, two soldiers in combat armour manning the entry checkpoint tense and raise their weapons, before nodding respectfully and stepping aside, allowing their patron entry. The barracks is cavernous, containing areas for the soldiers to sleep and keep their belongings, areas for the storage and maintenance of their weapons and equipment, and common areas for them to amuse themselves, since they rarely mix with your citizens on the upper levels. You survey the facilities.// - -<br><br> -<<include "SpecialForceUpgradeDec">> -<br><br> - -<<include "SpecialForceBarracksFlavourText">> - -<<if $securityForceGiftToken == 0>> -<br> - <span id="result"> - <<link "Ask _Name for some extra cash">> - <<replace "#result">> - /*<<set $CashGift = ((Math.ceil((Math.abs($cash)*0.05)*(Math.max(0.99,$SFAO))))*($arcologies[0].prosperity/100))*$Env>> OLD*/ - <<set $CashGift = 25000*(Math.max(0.99,$SFAO/10))*$Env>> - <<if random(1,100) > 50>> - <<if random(1,100) > 50>> - _Name nods. "Sure boss," she says, "we had a bit of a haul this week. One of my sergeants convinced a woman to tell us where she had hidden her shit. Cut her up pretty bad, but she told us. Bunch of nice jewelry, I kept a nice piece for myself." She picks up a tablet on the table, tapping a few commands on it. "@@.yellowgreen;There's your cut,@@ <<print cashFormat(Math.ceil($CashGift))>>." - <<else>> - _Name smiles widely. "Sure boss," she says, "we pulled in some good shit this week. One of the boys found a real nice family hiding in a basement. 18-year old triplets. Brought in a good bit of cash." She picks up a tablet on the table, tapping a few commands on it. "@@.yellowgreen;There's your cut,@@ <<print cashFormat(Math.ceil($CashGift))>>." - <</if>> - <<else>> - _Name picks up a tablet. "Sure boss," she says, "we had a nice score this week. Looters fucked up and left a bunch of nice shit behind." She taps a few commands on the tablet. "@@.yellowgreen;There's your cut,@@ <<print cashFormat(Math.ceil($CashGift))>>." - <</if>> - <<set $securityForceGiftToken = 1>> - <<set $cash += $CashGift>> - <br> - <</replace>> - <</link>> - <<if $rep < 20000 && $CurrentTradeShowAttendance == 0>> - <br><<link "Ask The Colonel to put in a good word for you with her contacts">> - <<replace "#result">> - <<set $GoodWords1 += 250+(Math.ceil(Math.max(0.99,$SFAO))*$Env)>> - <<set $GoodWords1 = (Number($GoodWords1) ? $GoodWords1 : 500)>> - <<if random(1,100) > 50>> - <<if random(1,100) > 50>> - The Colonel nods. "Sure boss," she says, "I still know a lot of people out there and they know my word means something. I'll tell them that yours does as well." She picks up a tablet on the table, tapping a few commands on it. "I just put the word out, boss. Your @@.green;reputation should be a bit better@@ now." - <<else>> - The Colonel smiles widely. "Sure boss," she says, "I can put in a good word for you with some of my contacts out there. A lot of them know other big shots in the Cities." She picks up a tablet on the table, tapping a few commands on it. "I just put the word out, boss. Your @@.green;reputation should be a bit better@@ now." - <</if>> - <<else>> - The Colonel picks up a tablet. "Sure boss," she says, "I can talk you up a bit. This new gig has impressed a lot of people; they'll definitely listen when I speak." She taps a few commands on the tablet. "I just put the word out, boss. Your @@.green;reputation should be a bit better@@ now." - <</if>> - <<set $securityForceGiftToken = 1>> - <<set $rep += $GoodWords1>> - <br> - <</replace>> - <</link>> - <</if>> - <<if $arcologies[0].prosperity < $AProsperityCap && $CurrentTradeShowAttendance == 0>> - <br><<link "Ask The Colonel to use her contacts to help the arcology's business community">> - <<replace "#result">> - <<set $GoodWords2 = $EnvProsp+(Math.max(0.99,$SFAO)/100)*$Env>> - <<if random(1,100) > 50>> - <<if random(1,100) > 50>> - The Colonel nods. "Sure boss," she says, "I can convince some of my contacts to run their business through the markets here rather than another City." She picks up a tablet on the table, tapping a few commands on it. "@@.green;There should be a small increase in prosperity,@@ boss." - <<else>> - The Colonel smiles widely. "Sure boss," she says, "I can make sure that our suppliers only run their goods through the markets here, rather than one of the markets out there." She picks up a tablet on the table, tapping a few commands on it. "@@.green;There should be a small increase in prosperity,@@ boss." - <</if>> - <<else>> - The Colonel picks up a tablet. "Sure boss," she says, "I can ensure that the soldiers only use the escrow services here for their business." She taps a few commands on the tablet. "@@.green;There should be a small increase in prosperity,@@ boss." - <</if>> - <<set $securityForceGiftToken = 1>> - <<set $arcologies[0].prosperity += $GoodWords2>> - <br> - <<if $arcologies[0].prosperity + $GoodWords2 > $AProsperityCap>> - <<set $arcologies[0].prosperity = $AProsperityCap>> - <</if>> - <</replace>> - <</link>> - <</if>> - </span> -<</if>> - -<<if $securityForceUpgradeToken == 1 && ($SFAO < _max)>> - <br>//_Name is working to improve $securityForceName this week.// -<<elseif $TierTwoUnlock == 1 && $TradeShowAttendanceGranted == 0>> - <br>//You receive a message from The Colonel "There is a trade show coming up soon with exotic upgrades but I'll get laughed out unless we bring the best gear we can get now."// -<<elseif $SFAO >= _max>> - <br>//$securityForceName is fully equipped and upgraded - nothing else can be done.// -<</if>> - -<<if $TierTwoUnlock == 0>> <<= TierTwoUnlockCalc()>> - <br>You have <<print (30-$SFAO)>> upgrades left before you can move unlock the next tier. ''StimulantLab:'' $securityForceStimulantPower/5 ''Barracks:'' $securityForceArcologyUpgrades/5 ''Garage:'' $securityForceVehiclePower/5 ''Armoury:'' $securityForceInfantryPower/5 ''DroneBay:'' $securityForceDronePower/5 ''Airforce:'' $securityForceAircraftPower/5 - <<if $securityForceVehiclePower == 5>> <<set _T1FullUpgradesGarage = "True">> <</if>> <<if $securityForceAircraftPower == 5>> <<set _T1FullUpgradesAirforce = "True">> <</if>> <<if 30-$SFAO == 0>> <<set $TierTwoUnlock = 1>> <</if>> -<</if>> -<<if $securityForceGiftToken == 1>> - <br>//_Name has already provided you with extra tribute this week.// -<</if>> -<<if $CurrentTradeShowAttendance == 0 && ($securityForceColonelToken == 1 || $securityForceSexedColonelToken == 1)>> - <br>//The Colonel has already spent time with you this week or is unable able to find time in her busy week to <<if $securityForceSexedColonelToken == 1>>'relax'<<elseif $securityForceColonelToken == 1>>relax<</if>> with you.// -<</if>> - -<<set _securityForceUpgradeResetTokenCurrentCost = Math.abs($cash)*.05>> -<<if $securityForceUpgradeToken == 1 && $securityForceUpgradeTokenReset >= 0 && $SFAO > 0>> - <br><br>_Name "says certainly <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>sir<<else>>ma'am<</if>>, it is possible to upgrade $securityForceName more than once per week, however, it will cost you." - <br> - <<link "Would you like to discus upgrading $securityForceName again?">> - <<set $securityForceUpgradeToken = 0, $securityForceUpgradeTokenReset += 1, $cash -= _securityForceUpgradeResetTokenCurrentCost>> - <<goto "SFM Barracks">> - <</link>> <br>It will cost 5% of your currently displayed cash, which is <<print cashFormat(Math.trunc(_securityForceUpgradeResetTokenCurrentCost))>>. -<</if>> -<<if $securityForceUpgradeTokenReset >= 1>> - <br>Total multi week $securityForceName upgrades: $securityForceUpgradeTokenReset <br> -<</if>> - -<<include "SpecialForceUpgradeOptions">> -<<include "SpecialForceBarracksAdditionalColonelInteractions">> diff --git a/src/uncategorized/securityForceEOWReport.tw b/src/uncategorized/securityForceEOWReport.tw deleted file mode 100644 index bd757372e21b01f45158bd07bee5b9e5fc75089f..0000000000000000000000000000000000000000 --- a/src/uncategorized/securityForceEOWReport.tw +++ /dev/null @@ -1,425 +0,0 @@ -:: Security Force EOW Report - -<<silently>> - -<<include "SpecialForceUpgradeTree">> -<<set _SFNOPercentage = _maxNO*_RaidingEfficiency>> -<<set _SFOPercentage = _maxO*_RaidingEfficiency>> - -/* Manpower Fluctuation Calculations - loss from attrition, random casualties, etc. Baseline is ~3%/week. Heavier for raiding/slaving, reduced for securing trade. Maxes out between 1000-1500, though never exactly that. If over 1500 for some reason, set to 1455-1495. If under 100, cannot fluctuate further negatively. */ - - /* Check for too many troopers, set to mid 1400s if so */ - <<if $securityForcePersonnel > 1500>> - <<set $securityForcePersonnel = random(1455,1495)>> - <</if>> - - /* Force attrition, scales with size of force, increases when raiding and decreases when training. Securing trade is the 'neutral state', though attrition still of course happens */ - <<if $securityForcePersonnel < 100>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(2,5)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(2,5)>> <<else>> <<set $securityForcePersonnel += random(2,5)>> - <</if>> - <<elseif $securityForcePersonnel < 200>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-4,0)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-8,-4)>> <<else>> <<set $securityForcePersonnel += random(-6,-2)>> - <</if>> - <<elseif $securityForcePersonnel < 300>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-6,-2)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-10,-6)>> <<else>> <<set $securityForcePersonnel += random(-8,-4)>> - <</if>> - <<elseif $securityForcePersonnel < 400>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-8,-4)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-12,-8)>> <<else>> <<set $securityForcePersonnel += random(-10,-6)>> - <</if>> - <<elseif $securityForcePersonnel < 500>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-12,-8)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-16,-12)>> <<else>> <<set $securityForcePersonnel += random(-14,-10)>> - <</if>> - <<elseif $securityForcePersonnel < 600>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-14,-12)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-18,-16)>> <<else>> <<set $securityForcePersonnel += random(-16,-14)>> - <</if>> - <<elseif $securityForcePersonnel < 700>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-16,-14)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-20,-18)>> <<else>> <<set $securityForcePersonnel += random(-18,-16)>> - <</if>> - <<elseif $securityForcePersonnel < 800>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-20,-16)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-24,-20)>> <<else>> <<set $securityForcePersonnel += random(-22,-18)>> - <</if>> - <<elseif $securityForcePersonnel < 900>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-24,-20)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-28,-24)>> <<else>> <<set $securityForcePersonnel += random(-26,-22)>> - <</if>> - <<elseif $securityForcePersonnel < 1000>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-28,-24)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-30,-28)>> <<else>> <<set $securityForcePersonnel += random(-30,-26)>> - <</if>> - <<elseif $securityForcePersonnel < 1100>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-30,-28)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-32,-32)>> <<else>> <<set $securityForcePersonnel += random(-34,-28)>> - <</if>> - <<elseif $securityForcePersonnel < 1200>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-32,-34)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-34,-36)>> <<else>> <<set $securityForcePersonnel += random(-38,-30)>> - <</if>> - <<elseif $securityForcePersonnel < 1300>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-34,-38)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-36,-40)>> <<else>> <<set $securityForcePersonnel += random(-42,-32)>> - <</if>> - <<elseif $securityForcePersonnel < 1400>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-36,-42)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-38,-44)>> <<else>> <<set $securityForcePersonnel += random(-46,-34)>> - <</if>> - <<elseif $securityForcePersonnel < 1500>> - <<if $securityForceFocus == "recruit">> <<set $securityForcePersonnel += random(-48,-46)>> <<elseif $securityForceFocus == "raiding">> <<set $securityForcePersonnel += random(-40,-48)>> <<else>> <<set $securityForcePersonnel += random(-50,-36)>> - <</if>> - <<else>> - <<set $securityForcePersonnel += random(-1,1)>> - <</if>> - -/* Recruitment Calculations. Base of 10/week, so can get to about 250 personnel without upgrades/rep changes. Increases with reputation, either positive (I get to work for a solid private force!) or negative (I get to shoot people and take their shit with nobody caring!). Increases with cumulative upgrade sum (a better equipped force is more attractive for recruits). Infantry upgrades are worth twice as much (I get crazy combat armor, for free?). */ - - /* Universal recruitment base */ - <<set $securityForceRecruit = 10>> - - /* Extra recruitment from upgrades, up to an extra 5 per upgrade track (10 for infantry), to a sum of an extra 35/week at full upgrades. */ - <<if $securityForceArcologyUpgrades > 0>> - <<set $securityForceRecruit += ($securityForceArcologyUpgrades)>> <</if>> - <<if $securityForceInfantryPower > 0>> - <<set $securityForceRecruit += ($securityForceInfantryPower*2)>> <</if>> - <<if $securityForceStimulantPower > 0>> - <<set $securityForceRecruit += ($securityForceStimulantPower)>> <</if>> - - <<if $securityForceArcologyUpgrades >= 1>> - <<if $securityForceVehiclePower > 0>> - <<set $securityForceRecruit += ($securityForceVehiclePower)>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 4>> - <<if $securityForceAircraftPower > 0>> - <<set $securityForceRecruit += ($securityForceAircraftPower)>> <</if>> - <<if $securityForceSpacePlanePower > 0>> - <<set $securityForceRecruit += ($securityForceSpacePlanePower)>> <</if>> - <<if $securityForceFortressZeppelin > 0>> - <<set $securityForceRecruit += ($securityForceFortressZeppelin)>> <</if>> - <<if $securityForceAC130 > 0>> - <<set $securityForceRecruit += ($securityForceAC130)>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 2>> - <<if $securityForceDronePower > 0>> - <<set $securityForceRecruit += ($securityForceDronePower)>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 4>> - <<if $securityForceSatellitePower > 0>> - <<set $securityForceRecruit += ($securityForceSatellitePower)>> <</if>> - <<if $securityForceGiantRobot > 0 && ($terrain != "oceanic" && $terrain != "marine")>> - <<set $securityForceRecruit += ($securityForceGiantRobot)>> <</if>> - <</if>> - - <<if $terrain == "oceanic" || $terrain == "marine">> - <<if $securityForceAircraftCarrier > 0>> - <<set $securityForceRecruit += ($securityForceAircraftCarrier)>> <</if>> - <<if $securityForceSubmarine > 0>> - <<set $securityForceRecruit += ($securityForceSubmarine)>> <</if>> - <</if>> - - <<switch $ColonelCore>> - <<case "kind" "collected">> - <<set $securityForceRecruit += 2>> - <</switch>> - - /* If focus is recruit/train, 95% of the above is added to the personnel total of the SF. Else, 25% (which will, at medium/high personnel levels, not wholly counteract attrition, needing some recruitment every so often to keep the total high). */ - <<if $securityForceFocus == "recruit">> - <<set $securityForceRecruit += (Math.trunc($securityForceRecruit*0.95))>> - <<elseif $securityForceFocus == "secure">> - <<set $securityForceRecruit += (Math.trunc($securityForceRecruit*0.25))>> - <<elseif $securityForceFocus == "raiding">> - <<set $securityForceRecruit += (Math.trunc($securityForceRecruit*0.25))>> - <</if>> - - /* Final addition of recruits to force personnel pool */ - <<set $securityForcePersonnel += ($securityForceRecruit)>> - - /* Final Check to ensure not over 1500 members. If so, set it to the mid/high 1400s. Recruitment will be wasteful at this point. */ - <<if $securityForcePersonnel > 1500>> - <<set $securityForcePersonnel = random(1455,1495)>> - <</if>> - -/* Trade Protection Calculations. Protecting trade is a reputation/prosperity builder and provides a few event triggers. Base rep build of 2.5%/week. Each upgrade adds 0.25%, drones and barracks are twice as powerful (swarms to patrol smaller routes while the troops secure the major ones and improved coordination, etc.), to reach a theoretical max of 5% rep boost per week from that (before subsequent modifiers and calculations at EOW). Personnel gates apply a further 0.5% modifier per gate. Prosperity builds at the same rate (adds an extra 5% prosperity per week along the same guidelines as rep using the same logic), and is then applied to the prosperity if the result would be less than/equal to the current prosperity cap. Positive reputation applies a significant positive multiplier (lets go trade with the nice people!), negative reputation applies a significant negative multiplier (trade routes are safe, yeah, but you know, they, uh, murder people for their jewelry and then enslave their children). */ - - /* Base rep/prosperity gain */ - <<set $securityForceTrade = 0.025>> - - /* Extra rep/prosperity from upgrades, an extra 0.25% per upgrade. ArcologyUpgrades and drones are worth double. */ - <<if $securityForceArcologyUpgrades > 0>> - <<set $securityForceTrade += (0.5*($securityForceArcologyUpgrades))>> <</if>> - <<if $securityForceInfantryPower > 0>> - <<set $securityForceTrade += (0.25*($securityForceInfantryPower))>> <</if>> - <<if $securityForceStimulantPower > 0>> - <<set $securityForceTrade += (0.25*($securityForceStimulantPower))>> <</if>> - - <<if $securityForceArcologyUpgrades >= 1>> - <<if $securityForceVehiclePower > 0>> - <<set $securityForceTrade += (0.25*($securityForceVehiclePower))>> <</if>> - <<if $securityForceHeavyBattleTank > 0>> - <<set $securityForceTrade += (0.25*($securityForceHeavyBattleTank))>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 4>> - <<if $securityForceAircraftPower > 0>> - <<set $securityForceTrade += (0.25*($securityForceAircraftPower))>> <</if>> - <<if $securityForceSpacePlanePower > 0>> - <<set $securityForceTrade += (0.25*($securityForceSpacePlanePower))>> <</if>> - <<if $securityForceFortressZeppelin > 0>> - <<set $securityForceTrade += (0.25*($securityForceFortressZeppelin))>> <</if>> - <<if $securityForceAC130 > 0>> - <<set $securityForceTrade += (0.25*($securityForceAC130))>> <</if>> - <<if $securityForceHeavyTransport > 0>> - <<set $securityForceTrade += (0.25*($securityForceHeavyTransport))>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 2>> - <<if $securityForceDronePower > 0>> - <<set $securityForceTrade += (0.5*($securityForceDronePower))>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 4>> - <<if $securityForceSatellitePower > 0>> - <<set $securityForceTrade += (0.25*($securityForceSatellitePower))>> <</if>> - <<if $securityForceGiantRobot > 0 && $terrain != "oceanic" && $terrain != "marine">> - <<set $securityForceTrade += (0.25*($securityForceGiantRobot))>> <</if>> - <<if $securityForceMissileSilo > 0 && $terrain != "oceanic" && $terrain != "marine">> - <<set $securityForceTrade += (0.25*($securityForceMissileSilo))>> <</if>> - <</if>> - - <<if $terrain == "oceanic" || $terrain == "marine">> - <<if $securityForceAircraftCarrier > 0>> - <<set $securityForceTrade += (0.25*($securityForceAircraftCarrier))>> <</if>> - <<if $securityForceSubmarine > 0>> - <<set $securityForceTrade += (0.25*($securityForceSubmarine))>> <</if>> - <<if $securityForceHeavyAmphibiousTransport > 0>> - <<set $securityForceTrade += (0.25*($securityForceHeavyAmphibiousTransport))>> <</if>> - <</if>> - - <<switch $ColonelCore>> - <<case "kind" "collected">> - <<set $securityForceTrade += 0.15>> - <</switch>> - - /* Manpower effects - extra 0.5% per 100-gate in terms of manpower. Kicks in at over 200, since some of the SF is on overhead, logistics, repairs, rest, etc. */ - <<if $securityForcePersonnel > 200>> - <<set $securityForceTrade += (0.005*Math.trunc($securityForcePersonnel/100))>> - <</if>> - - /* If focus is secure trade, 95% of the above is added to the players rep/prosperity. Else, 25%. */ - <<if $securityForceFocus == "secure">> - <<set $rep += (Math.trunc($rep*($securityForceTrade*0.95)))>> - <<set $arcologies[0].prosperity = (Math.trunc($arcologies[0].prosperity+($securityForceTrade*0.95)))>> - <<elseif $securityForceFocus == "recruit">> - <<set $rep += (Math.trunc($rep*($securityForceTrade*0.25)))>> - <<set $arcologies[0].prosperity = (Math.trunc($arcologies[0].prosperity+($securityForceTrade*0.25)))>> - <<elseif $securityForceFocus == "raiding">> - <<set $rep += (Math.trunc($rep*($securityForceTrade*0.25)))>> - <<set $arcologies[0].prosperity = (Math.trunc($arcologies[0].prosperity+($securityForceTrade*0.25)))>> - <</if>> - - /* If the rep or prosperity is now above the cap, set it to the cap. */ - <<if $rep > 20000>> - <<set $rep = 20000>> - <</if>> - <<if $arcologies[0].prosperity > $AProsperityCap>> - <<set $arcologies[0].prosperity = $AProsperityCap>> - <</if>> - -/* Raiding/Slaving Calculations. This brings in cash and activates event triggers. Base raiding brings in 75000/week, but this scales significantly with personnel and upgrades. */ - - /* Base raiding take, zero the summative variables */ - <<set $securityForceBooty = 75000>> - <<set $securityForceIncome = 0>> - <<set $securityForceMissionEfficiency = 1>> - - /* Impact of manpower on raiding. An extra 3500/100-gate, kicking in at over 200 personnel */ - <<if $securityForcePersonnel > 200>> - <<set $securityForceBooty += 3500*Math.trunc($securityForcePersonnel/100)>> - <</if>> - - <<set _RaidingEfficiency = .1>> - - /* Raiding Efficiency Modifier Calculations - /* Drugs make them better at everything, but especially much better at raiding - much easier to murder and pillage when you're fucked out of your mind on a mix of meth, pcp, and lsd. Having an effective; CIC (Combat Information Center) at the barracks, air force, Satellite, AC-130, major and more efficient facility support massively improves raiding efficiency. If we are dealing with an oceanic arcology the sub and carrier massively improve efficiency. */ - - /* Facilities */ - - <<if $securityForceArcologyUpgrades > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceArcologyUpgrades*_RaidingEfficiency)>> <</if>> - <<if $securityForceInfantryPower > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceInfantryPower*_RaidingEfficiency)>> <</if>> - <<if $securityForceStimulantPower > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceStimulantPower*_RaidingEfficiency)>> <</if>> - - <<if $securityForceArcologyUpgrades >= 1>> - <<if $securityForceVehiclePower > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceVehiclePower*_RaidingEfficiency)>> <</if>> - <<if $securityForceHeavyBattleTank > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceHeavyBattleTank*_RaidingEfficiency)>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 4>> - <<if $securityForceAircraftPower > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceAircraftPower*_RaidingEfficiency)>> <</if>> - <<if $securityForceSpacePlanePower > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceSpacePlanePower*_RaidingEfficiency)>> <</if>> - <<if $securityForceFortressZeppelin > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceFortressZeppelin*_RaidingEfficiency)>> <</if>> - <<if $securityForceAC130 > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceAC130*_RaidingEfficiency)>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 2>> - <<if $securityForceDronePower > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceDronePower*_RaidingEfficiency)>> <</if>> - <</if>> - - <<if $securityForceArcologyUpgrades >= 4>> - <<if $securityForceSatellitePower > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceSatellitePower*_RaidingEfficiency)>> <</if>> - <<if $securityForceGiantRobot > 0 && ($terrain != "oceanic" && $terrain != "marine")>> - <<set $securityForceMissionEfficiency *= 1+($securityForceGiantRobot*_RaidingEfficiency)>> <</if>> - <<if $securityForceMissileSilo > 0 && ($terrain != "oceanic" && $terrain != "marine")>> - <<set $securityForceMissionEfficiency *= 1+($securityForceMissileSilo*_RaidingEfficiency)>> <</if>> - <</if>> - - <<if $terrain == "oceanic" || $terrain == "marine">> - <<if $securityForceAircraftCarrier > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceAircraftCarrier*_RaidingEfficiency)>> <</if>> - <<if $securityForceSubmarine > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceSubmarine*_RaidingEfficiency)>> <</if>> - <<if $securityForceHeavyAmphibiousTransport > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceHeavyAmphibiousTransport*_RaidingEfficiency)>> <</if>> - <</if>> - - /* Colonel */ - <<switch $ColonelCore>> - <<case "warmonger" "cruel" "psychopathic">> - <<set $securityForceMissionEfficiency *= 1+(_RaidingEfficiency)>> - <</switch>> - <<if $securityForceSexedColonel > 0>> - <<set $securityForceMissionEfficiency *= 1+($securityForceSexedColonel*_RaidingEfficiency)>> - <</if>> - <<if $OverallTradeShowAttendance > 0>> - <<set $securityForceMissionEfficiency *= 1+($OverallTradeShowAttendance*_RaidingEfficiency)>> - <</if>> - - LieutenantColonel and Facility Support - <<if $LieutenantColonel == 2>> - <<set $securityForceMissionEfficiency *= 1+($LieutenantColonel*_RaidingEfficiency)>> - <</if>> - <<if $FacilitySupportEfficiency > 1>> - <<set $securityForceMissionEfficiency *= 1+($FacilitySupportEfficiency*_RaidingEfficiency)>> - <</if>> - - /* Apply the efficiency boost to the booty. Let's hope that meth made them better at ripping out some poor bastard's gold teeth */ - <<set $securityForceBooty = ($securityForceBooty*$securityForceMissionEfficiency)>> - - /* Check to see if total booty is over 15k. This is the 'profitability point' of the SF. It has no upkeep, but unless you get over 15k, The Colonel uses the entire take to keep the force together. Still very profitable at higher levels though (Who thought having a 1000-man private military dedicated to slamming meth and pillaging the world would be profitable? It's quite crazy tbh). Technically the booty calcs should be affected if the force is recruiting/securing (less income from raids), but that would be frustrating for the player at high levels of development - we still want them to feel like they're getting the cash. Uses a flag for the eventual description. */ - <<if $securityForceBooty > 15000>> - <<set $securityForceProfitable = 1>> - - /* Finally, add dat cash to the bank. C.R.E.A.M. */ - <<if $securityForceFocus == "raiding">> - <<set $securityForceIncome = Math.trunc(($securityForceBooty*0.95))>> - <<set $cash = ($cash+$securityForceIncome)>> - <<elseif $securityForceFocus == "recruit">> - <<set $securityForceIncome = Math.trunc(($securityForceBooty*0.25))>> - <<set $cash = ($cash+$securityForceIncome)>> - <<elseif $securityForceFocus == "secure">> - <<set $securityForceIncome = Math.trunc(($securityForceBooty*0.25))>> - <<set $cash = ($cash+$securityForceIncome)>> - <</if>> - <<else>> - <<set $securityForceProfitable = 0>> - <</if>> - -/* Depravity calculations - hidden stat representing how violent/hedonistic/etc the SF is. Rises with raiding/free fire/low accountability, The Colonel personality choice and lowers with reduced settings (though much slower since it's easier to go criminal then it is to go straight afterward, etc. Middle options have no effect. Each setting is independent of the others. */ - - <<if $securityForceFocus == "raiding">> - <<set $securityForceDepravity += 0.05>> - <<elseif $securityForceFocus == "secure">> - <<set $securityForceDepravity -= 0.02>> - <</if>> - - <<if $securityForceRulesOfEngagement == "free">> - <<set $securityForceDepravity += 0.05>> - <<elseif $securityForceRulesOfEngagement == "hold">> - <<set $securityForceDepravity -= 0.02>> - <</if>> - - <<if $securityForceAccountability == "none">> - <<set $securityForceDepravity += 0.05>> - <<elseif $securityForceAccountability == "strict">> - <<set $securityForceDepravity -= 0.02>> - <</if>> - - <<switch $ColonelCore>> - <<case "kind">> - <<set $securityForceDepravity -= 0.02>> - <<case "collected">> - <<set $securityForceDepravity -= 0.015>> - <<set $securityForceDepravity += 0.015>> - - <<case "cruel">> - <<set $securityForceDepravity += 0.05>> - <<case "psychopathic">> - <<set $securityForceDepravity += 0.10>> - <<case "sociopathic">> - <<set $securityForceDepravity += 0.15>> - - <<case "brazen">> - <<set $securityForceDepravity += 1.05>> - <<set $securityForceDepravity -= 1.05>> - <</switch>> - -/* Reset the token counters for speaking or such to The Colonel in the barracks */ - <<set $securityForceUpgradeToken = 0>> - <<set $securityForceGiftToken = 0>> - <<set $securityForceColonelToken = 0>> - <<set $securityForceSexedColonelToken = 0>> - -/* securityForceTradeShow */ -<<if $CurrentTradeShowAttendance == 1>> - <<set $CurrentTradeShowAttendance = 0>> - <<set $TradeShowIncome = 0>> - <<set $TradeShowHelots = 0>> -<</if>> - -<<if $securityForceStimulantPower == 8 || $securityForceStimulantPower == 10>> - <<set _OverdoseSurvivalChance = 5, _OverdoseDeaths = 0>> - <<if _Env == _N1>> - <<set _OverdoseSurvivalChance = _OverdoseSurvivalChance-.5>> - <<elseif _Env == _N2>> - <<set _OverdoseSurvivalChance = _OverdoseSurvivalChance>> - <<elseif _Env == _N3>> - <<set _OverdoseSurvivalChance = _OverdoseSurvivalChance+.5>> - <</if>> - - <<if $securityForceStimulantPower == 8 && random(0,100) > _OverdoseSurvivalChance>> - <<set _OverdoseDeaths = random(0,10)>> - <<elseif $securityForceStimulantPower == 10 && random(0,100) > _OverdoseSurvivalChance>> - <<set _OverdoseDeaths = random(0,20)>> - <</if>> - - <<if _OverdoseDeaths > 0>> - <<set $securityForcePersonnel -= _OverdoseDeaths>> - <</if>> - -<</if>> - -/* Take all the above and display the EOW text and control panel. */ -<</silently>> -<<nobr>> - __Status and Activities of the $securityForceName __: - <br>This week, $securityForceName, <<print commaNum($securityForcePersonnel)>> strong, focused on <<if $securityForceFocus == "recruit">>recruiting and training more personnel. Smaller parties ventured out to protect the arcology's trade routes and strike targets of opportunity.<<elseif $securityForceFocus == "secure">>securing the trade routes between the arcology and the surrounding area. Smaller parties ventured out to strike targets of opportunity and process new recruits. - <<elseif $securityForceFocus == "raiding">>locating and striking targets of opportunity, capturing both material loot and new slaves. Smaller parties secured the most important of the arcology's trade routes and processed new recruits.<</if>> <<if $securityForceStimulantPower == 8 || $securityForceStimulantPower == 10 && _OverdoseDeaths > 0>> <<print (_OverdoseDeaths)>> soldiers fatally overdosed on the drug cocktail, The Colonel's much heavier than average drug use saves her from this side effect.<</if>> These activities have, overall, @@.green;improved@@ your arcology's prosperity. <<if $securityForceProfitable == 1>>The goods procured by the $securityForceName this week, after accounting for the spoils retained by individual soldiers, were @@.green;more than sufficient@@ to cover expenses. Excess material and human assets totaling @@.yellowgreen;<<print cashFormat($securityForceIncome)>>@@ (after liquidation) were transferred to your accounts. <<elseif $securityForceProfitable == 0>>The goods procured by the special force were, after accounting for the spoils retained by individual soldiers, @@.red;barely enough@@ to cover expenses. More growth will be needed to ensure profitability.<</if>> $securityForceName managed to recruit $securityForceRecruit new soldiers this week, and your reputation has @@.green;improved@@ through the improvement of trade security. - -<</nobr>> - <br> //Your instructions to <<if $CurrentTradeShowAttendance == 1>>Lieutenant Colonel <<= SlaveFullName($LieutenantColonel)>><<else>>The Colonel<</if>>:// - Deployment focus: <span id="focus"><<if $securityForceFocus == "recruit">>''Recruiting and Training''<<elseif $securityForceFocus == "secure">>''Securing Trade Routes''<<else>>''Raiding and Slaving''<</if>></span>. <<link "Recruit and Train">><<set $securityForceFocus = "recruit">><<replace "#focus">>''Recruiting and Training''<</replace>><</link>> | <<link "Secure Trade Routes">><<set $securityForceFocus = "secure">><<replace "#focus">>''Securing Trade Routes''<</replace>><</link>> | <<link "Raiding and Slaving">><<set $securityForceFocus = "raiding">><<replace "#focus">>''Raiding and Slaving''<</replace>><</link>> - Rules of Engagement: <span id="roe"><<if $securityForceRulesOfEngagement == "hold">>''Hold Fire''<<elseif $securityForceRulesOfEngagement == "limited">>''Limited Fire''<<else>>''Free Fire''<</if>></span>. <<link "Hold Fire">><<set $securityForceRulesOfEngagement = "hold">><<replace "#roe">>''Hold Fire''<</replace>><</link>> | <<link "Limited Fire">><<set $securityForceRulesOfEngagement = "limited">><<replace "#roe">>''Limited Fire''<</replace>><</link>> | <<link "Free Fire">><<set $securityForceRulesOfEngagement = "free">><<replace "#roe">>''Free Fire''<</replace>><</link>> - Accountability: <span id="accountability"><<if $securityForceAccountability == "strict">>''Strict Accountability''<<elseif $securityForceAccountability == "some">>''Some Accountability''<<else>>''No Accountability''<</if>></span>. <<link "Strict Accountability">><<set $securityForceAccountability = "strict">><<replace "#accountability">>''Strict Accountability''<</replace>><</link>> | <<link "Some Accountability">><<set $securityForceAccountability = "some">><<replace "#accountability">>''Some Accountability''<</replace>><</link>> | <<link "No Accountability">><<set $securityForceAccountability = "none">><<replace "#accountability">>''No Accountability''<</replace>><</link>> - <<if $OverallTradeShowAttendance == 1>> - <br>Thank you <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>sir<<else>>ma'am<</if>> for letting me to go back to it, hopefully <<if $LieutenantColonel == 2>>Lieutenant Colonel <<= SlaveFullName($LieutenantColonel)>> has been doing her job <<else>> that nothing serious happened while I was away.<</if>> There was some interest in our developments, I could probably sell generic schematics next time I go if you want? - <<elseif $OverallTradeShowAttendance >= 2>> - <br>Thank you <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>sir<<else>>ma'am<</if>> for letting me to go back to it, hopefully <<if $LieutenantColonel == 2>>Lieutenant Colonel <<= SlaveFullName($LieutenantColonel)>> has been doing her job <<else>> that nothing serious happened while I was away.<</if>> - <br>While at the recent TradeShow, <<print cashFormat($TradeShowIncome)>> was made selling generic schematics and $TradeShowHelots menial slaves were sent as a bonus. - Overall <<print cashFormat($TotalTradeShowIncome)>> has been made and <<print commaNum($TotalTradeShowHelots)>> menial slaves have been acquired during the $OverallTradeShowAttendance TradeShow's I have attended. - <</if>> - //Current facilities status:// -<<include "SpecialForceUpgradeDec">> diff --git a/src/uncategorized/securityForceProposal.tw b/src/uncategorized/securityForceProposal.tw deleted file mode 100644 index 2e79b89018d02e7507db6edc557fed2527a4bcfd..0000000000000000000000000000000000000000 --- a/src/uncategorized/securityForceProposal.tw +++ /dev/null @@ -1,40 +0,0 @@ -:: Security Force Proposal [nobr] - -<<set $nextLink = "Next Week">> -<<set $nextButton = "Continue">> - -The Free Cities were founded on the principles of unrestrained anarcho-capitalism. To those with such beliefs, the very idea of possessing an armed force, a key tool of government control, or weapons at all, was anathema. - -In the period since, however, your citizens have seen the value in weaponry. They watched on their news-feed as some Free Cities were sacked by the armies and mobs of the Old World, driven by their hatred of the citizens' luxurious lifestyles. They've seen other Cities toppled from within, by slave conspiracies or infighting among citizen groupings with differing beliefs. They've witnessed the distressingly rapid rise of fanatical anti-slavery organizations, who would like nothing more than to see them slowly bled by their own chattel. They are learned people, and they know what happens to slaveowners who lose their power. - -They've also seen the results of your policies. Your actions towards the arming of both yourself and the arcology proved critical, and ensured their safety when the Old World came for them. And your victory over the Daughters of Liberty, who the citizens know would have executed every single one of them, has created an opportunity. If you insisted upon the creation of a standing 'special' force for the arcology, many would support you and, more importantly, nobody of note would object. - -Such a force would solve many problems. More soldiers would mean more control, which is very good for you. More soldiers would mean more security for the arcology and the approaches to it, which is very good for business. More soldiers would mean more obedience from rebellious slaves who can see how powerless they truly are, which is very good for everybody. The force would be tiny compared to the Old World militaries that still exist, but money and technology can, of course, overcome massive numerical inferiority. This being the Free Cities, they would have other uses besides security. Perhaps, in time, you could exert some manner of influence on the Old World itself. - -''This is a unique and very important opportunity'', and is possible only because of your recent victory over the Daughters. If you do not seize it, the memories and fears of your citizens will fade, and you will not be able to raise the matter again. --------------------- -<<set $securityForceEventSeen = 1>> -<<if ($PC.warfare >= 100)>> - <<set _price = 10000>> -<<elseif ($PC.warfare >= 50) || ($PC.career == "arcology owner")>> - <<set _price = 15000>> -<<else>> - <<set _price = 20000>> -<</if>> - -<span id="result"> -<<link "Prepare for an announcement">> - <<replace "#result">> - You instruct $assistantName to announce to the arcology's citizenry that you will be making an important announcement in the near future regarding the security situation. Given the damage still present from the Daughters' attack, everyone will be turning in. You also instruct your assistant to begin quietly investigating potential leadership figures for the force itself. - <<set $securityForceCreate = 1>> - <<set $cash -= _price>> - <<set $nextButton = "Continue">> - <</replace>> -<</link>> //Initial costs are <<print cashFormat(_price)>>, and upon establishment the force will have significant support costs until it is self-sufficient.// -<br><<link "The mercenaries are enough">> - <<replace "#result">> - On second thought, such a force is not needed. Your methods have served well so far - why should there be any change going forward? - <<set $nextButton = "Continue">> - <</replace>> -<</link>> -</span>