From 044e3dfe7ec5a1d55e8c82a96e2aba553b118833 Mon Sep 17 00:00:00 2001 From: Trilby Date: Fri, 18 Oct 2024 00:39:45 -0400 Subject: [PATCH 1/4] Toxins Troubles --- code/game/objects/structures/noticeboard.dm | 27 +++- code/modules/paperwork/paper_premade.dm | 21 +++ code/modules/research/experiment.dm | 55 ------- code/modules/research/experiment_toxins.dm | 145 ++++++++++++++++++ .../map/_Nadezhda_Deep_Tunnels.dmm | 54 +++++++ sojourn-station.dme | 1 + 6 files changed, 247 insertions(+), 56 deletions(-) create mode 100644 code/modules/research/experiment_toxins.dm diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 56ff319941c..d78c9adca52 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -241,7 +241,7 @@ name = "Research bulletin board" desc = "A board containing vital notices and official memos for the Soteria research" icon_state = "nboard00" - notices = 1 + notices = 2 /obj/structure/noticeboard/research/New() var/obj/item/paper/P = new() @@ -261,6 +261,31 @@ src.contents += P update_icon() + P = new() + P.name = "Memo RE: Toxins Testing Value Index" + P.info = "Index Contents:
    \ +
  1. Shooting Targets: 5.\ +
  2. Machine Frames: 15 (17 If frame has wires or a cruitboard).\ +
  3. Any Flora (Not produce/trays): 2.\ +
  4. Compressed Cubes: 7.\ +
  5. Salvageable Machines: 60.\ +
  6. Filingcabinets: 30.\ +
  7. Metal Grilles: 2.\ +
  8. Barricades: 3.\ +
  9. Bookcases: 15.\ +
  10. Catwalks: 2.\ +
  11. Tables: 2.\ +
  12. Railing: 2 (5 if reinforced).\ +
  13. Beds and Chairs: 2.\ +
  14. Windows: Normal 2. Reinforced 3. Plasma 5 .Reinforced Plasma 10\ +
  15. Reagent Dispensers (Such as: Watercoolers, Welder Fuel Tanks, Beer Kegs): 25.\ +
  16. Lockers and Closets: 10.\ +
  17. Damaged Floors: -2 (Reduces Value)
" + P.add_overlay(list("paper_stamp-dots")) + P.stamped &= STAMP_FACTION + src.contents += P + update_icon() + /obj/structure/noticeboard/guild name = "Artificers Guild bulletin board" desc = "A board containing vital notices and official memos for the colonies resident Guild" diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 9311d89a924..89d2c07be1b 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -40,6 +40,27 @@
\n\t\t\tThe effect are cumulative.
\n\t\tWARNING: It is a crime to use this without authorization"} +/obj/item/paper/toxin_index + name = "Memo RE: Toxins Testing Value Index" + info = {"Index Contents:
    \ +
  1. Shooting Targets: 5.\ +
  2. Machine Frames: 15 (17 If frame has wires or a cruitboard).\ +
  3. Any Flora (Not produce/trays): 2.\ +
  4. Compressed Cubes: 7.\ +
  5. Salvageable Machines: 60.\ +
  6. Filingcabinets: 30.\ +
  7. Metal Grilles: 2.\ +
  8. Barricades: 3.\ +
  9. Bookcases: 15.\ +
  10. Catwalks: 2.\ +
  11. Tables: 2.\ +
  12. Railing: 2 (5 if reinforced).\ +
  13. Beds and Chairs: 2.\ +
  14. Windows: Normal 2. Reinforced 3. Plasma 5 .Reinforced Plasma 10\ +
  15. Reagent Dispensers (Such as: Watercoolers, Welder Fuel Tanks, Beer Kegs): 25.\ +
  16. Lockers and Closets: 10.\ +
  17. Damaged Floors: -2 (Reduces Value)
"} + /obj/item/paper/courtroom name = "A Crash Course in Legal SOP on the colony." info = {"Roles: diff --git a/code/modules/research/experiment.dm b/code/modules/research/experiment.dm index c2b8a366720..42cd14d31f2 100644 --- a/code/modules/research/experiment.dm +++ b/code/modules/research/experiment.dm @@ -247,61 +247,6 @@ GLOBAL_LIST_EMPTY(explosion_watcher_list) saved_best_explosion = max(saved_best_explosion, O.saved_best_explosion) - -// Grants research points when explosion happens nearby -/obj/item/device/radio/beacon/explosion_watcher - name = "Kinetic Energy Scanner" - desc = "Scans the level of kinetic energy from explosions. This beacon, is in fact bomb proof and to use it properly you must use the bomb within 10 tiles of this scanner." - - channels = list("Science" = 1) - var/targetBoom - var/stored_points //This is how many points we hve stored, we use them up when successfull - -/obj/item/device/radio/beacon/explosion_watcher/examine() - ..() - to_chat(usr, "EXPECTED EXPLOSION - [targetBoom]") - to_chat(usr, "Points Left - [stored_points]") - return - -/obj/item/device/radio/beacon/explosion_watcher/ex_act(severity) - return - -/obj/item/device/radio/beacon/explosion_watcher/Initialize() - . = ..() - GLOB.explosion_watcher_list += src - targetBoom = rand(10,35) - stored_points = 250000 //6.1 perfect bombs - -/obj/item/device/radio/beacon/explosion_watcher/Destroy() - GLOB.explosion_watcher_list -= src - return ..() - -/obj/item/device/radio/beacon/explosion_watcher/proc/react_explosion(turf/epicenter, power) - power = round(power) - var/calculated_research_points = -1 - for(var/obj/machinery/computer/rdconsole/RD in GLOB.computer_list) - if(RD.id == 1) // only core gets the science - var missed - - missed = abs(power-targetBoom) * 8000 // each step away from the target will result in 8,000 points less, this is a range of 11. - if(stored_points >= 40000) - calculated_research_points = max(0,40000 - missed) - else - calculated_research_points = max(0,stored_points - missed) - - - stored_points -= calculated_research_points - RD.files.adjust_research_points(calculated_research_points) - - if(calculated_research_points > 0 && stored_points) - autosay("Detected explosion with power level [power]. Expected explosion was [targetBoom]. Received [calculated_research_points] Research Points", name ,"Science") - if(0 >= stored_points) - autosay("Detected explosion with power level [power]. Expected explosion was [targetBoom]. No Additional Data Points Able To Gather", name ,"Science") - if(0 >= calculated_research_points) - autosay("Detected explosion with power level [power], Expected explosion was [targetBoom]. Test Results Outside Expected Range", name ,"Science") - targetBoom = rand(10,35) - autosay("Next expected power level is [targetBoom]", name ,"Science") - // Universal tool to get research points from autopsy reports, virus info reports, archeology reports, slime cores /obj/item/device/science_tool name = "science tool" diff --git a/code/modules/research/experiment_toxins.dm b/code/modules/research/experiment_toxins.dm new file mode 100644 index 00000000000..958c7b1fa6e --- /dev/null +++ b/code/modules/research/experiment_toxins.dm @@ -0,0 +1,145 @@ + +// Grants research points when explosion happens nearby +/obj/item/device/radio/beacon/explosion_watcher + name = "Kinetic Energy Scanner" + desc = "Scans the level of kinetic energy from explosions. \ + This beacon, is in fact bomb proof and to use it properly you must use the bomb within 10 tiles of this scanner." + + channels = list("Science" = 1) + var/targetBoom + var/stored_points = 250000 //This is how many points we hve stored, we use them up when successfull + //6.1 perfect bombs + var/target_wealth = 0 //Used for how much stuff is worth around. + var/over_value_punishment = 1.5 + +/obj/item/device/radio/beacon/explosion_watcher/examine() + ..() + to_chat(usr, "EXPECTED EXPLOSION - [targetBoom]") + to_chat(usr, "Points Left - [stored_points]") + to_chat(usr, "Required Asset Value - [target_wealth] to [target_wealth*over_value_punishment]") + to_chat(usr, "Assets in view worth - [asset_wealth(give_value=TRUE)]") + return + +/obj/item/device/radio/beacon/explosion_watcher/ex_act(severity) + return + +/obj/item/device/radio/beacon/explosion_watcher/Initialize() + . = ..() + GLOB.explosion_watcher_list += src + targetBoom = rand(10,35) + target_wealth = rand(100, 200) + +/obj/item/device/radio/beacon/explosion_watcher/Destroy() + GLOB.explosion_watcher_list -= src + return ..() + +/obj/item/device/radio/beacon/explosion_watcher/proc/asset_wealth(give_value = FALSE) + var/gathered_value = 0 + for(var/obj/structure/S in oview(src,8)) + if(istype(S, /obj/structure/closet)) + gathered_value += 10 + + if(istype(S, /obj/structure/railing)) + gathered_value += 2 + var/obj/structure/railing/R = S + if(R.reinforced) //If we add a few extra bits of reinforcement then we add a small amount + gathered_value += 3 + + if(istype(S, /obj/structure/low_wall)) + gathered_value += 5 + + if(istype(S, /obj/structure/window)) + gathered_value += 2 + if(istype(S, /obj/structure/window/reinforced)) + gathered_value += 1 + if(istype(S, /obj/structure/window/reinforced/plasma)) + gathered_value += 8 + if(istype(S, /obj/structure/window/plasmabasic)) + gathered_value += 3 + + if(istype(S, /obj/structure/table)) + gathered_value += 5 + if(istype(S, /obj/structure/bed)) + gathered_value += 2 + if(istype(S, /obj/structure/catwalk)) + gathered_value += 1 + if(istype(S, /obj/structure/bookcase)) + gathered_value += 15 + if(istype(S, /obj/structure/barricade)) + gathered_value += 3 + if(istype(S, /obj/structure/grille)) + gathered_value += 2 + if(istype(S, /obj/structure/filingcabinet)) + gathered_value += 30 + //Bringind trash down or going to a trash ritch area should be rewarded + if(istype(S, /obj/structure/salvageable)) + gathered_value += 60 + if(istype(S, /obj/structure/scrap_cube)) + gathered_value += 7 + if(istype(S, /obj/structure/flora)) + gathered_value += 2 + if(istype(S, /obj/structure/reagent_dispensers)) + gathered_value += 25 //Rare-ish + + for(var/obj/item/target/T in oview(8)) + if(T) + gathered_value += 5 //Targets are worth 5 as you can buy and stack like 400 in a single tile! + + for(var/obj/machinery/constructable_frame/machine_frame/CF in oview(8)) + if(CF) + gathered_value += 15 + if(CF.state > 1) + gathered_value += 2 + + for(var/turf/simulated/floor/F in oview(8)) + if(F.health != F.maxHealth) + gathered_value -= 2 // Repair the floors you smucks! + + if(give_value) + return gathered_value + + if(gathered_value > (target_wealth * over_value_punishment)) + return FALSE + if(gathered_value < target_wealth) + return FALSE + return TRUE + +/obj/item/device/radio/beacon/explosion_watcher/proc/react_explosion(turf/epicenter, power) + power = round(power) + var/calculated_research_points = -1 + var/target_wealth_achived = asset_wealth() + for(var/obj/machinery/computer/rdconsole/RD in GLOB.computer_list) + if(RD.id == 1) // only core gets the science + var missed + autosay("Notice: target_wealth_achived [target_wealth_achived] [asset_wealth(TRUE)].", name ,"Science") + + if(target_wealth_achived) + missed = abs(power-targetBoom) * 8000 // each step away from the target will result in 8,000 points less, this is a range of 11. + if(stored_points >= 40000) + calculated_research_points = max(0,40000 - missed) + else + calculated_research_points = max(0,stored_points - missed) + stored_points -= calculated_research_points + RD.files.adjust_research_points(calculated_research_points) + else + autosay("Notice: Explosion environment not correctly fielded. No Points generated.", name ,"Science") + + if(target_wealth_achived) + if(calculated_research_points > 0 && stored_points) + autosay("Detected explosion with power level [power]. Expected explosion was [targetBoom]. Received [calculated_research_points] Research Points", name ,"Science") + if(0 >= stored_points) + autosay("Detected explosion with power level [power]. Expected explosion was [targetBoom]. No Additional Data Points Able To Gather", name ,"Science") + if(0 >= calculated_research_points) + autosay("Detected explosion with power level [power], Expected explosion was [targetBoom]. Test Results Outside Expected Range", name ,"Science") + targetBoom = rand(10,35) + if(target_wealth == initial(target_wealth)) + target_wealth = rand(100, 200) + + else + if(calculated_research_points) + var/wealth_mult = initial(calculated_research_points)/(calculated_research_points + 1) + target_wealth = target_wealth = rand(125, 150) * wealth_mult + target_wealth = round(target_wealth) + autosay("Next expected power level is [targetBoom]; Asset Value Range: [target_wealth] to [target_wealth*over_value_punishment].", name ,"Science") + + diff --git a/maps/__DeepTunnels/map/_Nadezhda_Deep_Tunnels.dmm b/maps/__DeepTunnels/map/_Nadezhda_Deep_Tunnels.dmm index f8b4f4f3d9b..9ba07a72e50 100644 --- a/maps/__DeepTunnels/map/_Nadezhda_Deep_Tunnels.dmm +++ b/maps/__DeepTunnels/map/_Nadezhda_Deep_Tunnels.dmm @@ -7984,6 +7984,7 @@ "uJ" = ( /obj/structure/table/reinforced, /obj/item/device/radio/beacon/explosion_watcher, +/obj/item/paper/toxin_index, /turf/simulated/floor/tiled/white/gray_perforated, /area/nadezhda/rnd/mixing) "uK" = ( @@ -8408,6 +8409,53 @@ /obj/machinery/atmospherics/unary/vent_pump{ dir = 8 }, +/obj/structure/closet/crate, +/obj/item/target, +/obj/item/target, +/obj/item/target, +/obj/item/target, +/obj/item/target, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/stack/material/wood/full, +/obj/item/stack/material/wood/full, +/obj/item/stack/rods/random, +/obj/item/stack/rods/random, +/obj/item/stack/rods/random, +/obj/item/stack/material/glass/plasmaglass/random, +/obj/item/stack/material/glass/plasmaglass/random, +/obj/item/stack/material/glass/plasmaglass/random, +/obj/item/stack/material/glass/plasmaglass/random, +/obj/item/stack/material/glass/random, +/obj/item/stack/material/glass/random, +/obj/item/stack/material/glass/random, +/obj/item/stack/material/glass/random, +/obj/item/stack/material/steel/random, +/obj/item/stack/material/steel/random, +/obj/item/stack/material/steel/random, +/obj/item/stack/material/steel/random, +/obj/item/stack/material/steel/random, +/obj/item/stack/material/steel/random, /turf/simulated/floor/tiled/white, /area/nadezhda/rnd/mixing) "BR" = ( @@ -9191,6 +9239,9 @@ name = "Toxins mass driver" }, /obj/effect/floor_decal/industrial/warningred/full, +/obj/structure/noticeboard/research{ + pixel_y = 32 + }, /turf/simulated/floor/reinforced, /area/nadezhda/rnd/mixing) "Uf" = ( @@ -9347,6 +9398,9 @@ id = "Toxins_Pad"; name = "Launch-pad door-control" }, +/obj/structure/noticeboard/research{ + pixel_y = 32 + }, /turf/simulated/floor/tiled/white, /area/nadezhda/rnd/mixing) "XP" = ( diff --git a/sojourn-station.dme b/sojourn-station.dme index 3ea97e7ae07..2b111510af5 100644 --- a/sojourn-station.dme +++ b/sojourn-station.dme @@ -3158,6 +3158,7 @@ #include "code\modules\research\designs.dm" #include "code\modules\research\destructive_analyzer.dm" #include "code\modules\research\experiment.dm" +#include "code\modules\research\experiment_toxins.dm" #include "code\modules\research\message_server.dm" #include "code\modules\research\rd-readme.dm" #include "code\modules\research\rdconsole.dm" From 21d923837275baabec187ef4680875fd20c54d1a Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Fri, 18 Oct 2024 00:59:05 -0400 Subject: [PATCH 2/4] debug line --- code/modules/research/experiment_toxins.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/research/experiment_toxins.dm b/code/modules/research/experiment_toxins.dm index 958c7b1fa6e..54245cb11ba 100644 --- a/code/modules/research/experiment_toxins.dm +++ b/code/modules/research/experiment_toxins.dm @@ -111,7 +111,6 @@ for(var/obj/machinery/computer/rdconsole/RD in GLOB.computer_list) if(RD.id == 1) // only core gets the science var missed - autosay("Notice: target_wealth_achived [target_wealth_achived] [asset_wealth(TRUE)].", name ,"Science") if(target_wealth_achived) missed = abs(power-targetBoom) * 8000 // each step away from the target will result in 8,000 points less, this is a range of 11. From 5b577ecf56bad3e261f6e81fc47f91b9f05ef439 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 19 Oct 2024 03:24:50 -0400 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: Smokingsquirrel <62299539+Smokingsquirrel@users.noreply.github.com> --- code/game/objects/structures/noticeboard.dm | 2 +- code/modules/paperwork/paper_premade.dm | 2 +- code/modules/research/experiment_toxins.dm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index d78c9adca52..a3d4bcefa13 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -265,7 +265,7 @@ P.name = "Memo RE: Toxins Testing Value Index" P.info = "Index Contents:
    \
  1. Shooting Targets: 5.\ -
  2. Machine Frames: 15 (17 If frame has wires or a cruitboard).\ +
  3. Machine Frames: 15 (17 If frame has wires or a circuitboard).\
  4. Any Flora (Not produce/trays): 2.\
  5. Compressed Cubes: 7.\
  6. Salvageable Machines: 60.\ diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 89d2c07be1b..d560e403d25 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -44,7 +44,7 @@ name = "Memo RE: Toxins Testing Value Index" info = {"Index Contents:
      \
    1. Shooting Targets: 5.\ -
    2. Machine Frames: 15 (17 If frame has wires or a cruitboard).\ +
    3. Machine Frames: 15 (17 If frame has wires or a circuitboard).\
    4. Any Flora (Not produce/trays): 2.\
    5. Compressed Cubes: 7.\
    6. Salvageable Machines: 60.\ diff --git a/code/modules/research/experiment_toxins.dm b/code/modules/research/experiment_toxins.dm index 54245cb11ba..6b39ba096e0 100644 --- a/code/modules/research/experiment_toxins.dm +++ b/code/modules/research/experiment_toxins.dm @@ -3,7 +3,7 @@ /obj/item/device/radio/beacon/explosion_watcher name = "Kinetic Energy Scanner" desc = "Scans the level of kinetic energy from explosions. \ - This beacon, is in fact bomb proof and to use it properly you must use the bomb within 10 tiles of this scanner." + This beacon is, in fact, bombproof and to use it properly you must use the bomb within 10 tiles of this scanner." channels = list("Science" = 1) var/targetBoom From 3d9f4fb75ce19551e438984e0db8903a35eb4d89 Mon Sep 17 00:00:00 2001 From: Trilby Date: Thu, 24 Oct 2024 12:05:11 -0400 Subject: [PATCH 4/4] trashy way to give people a list of buildables --- code/modules/research/experiment_toxins.dm | 74 ++++++++++++++++++++-- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/code/modules/research/experiment_toxins.dm b/code/modules/research/experiment_toxins.dm index 6b39ba096e0..df083a44c71 100644 --- a/code/modules/research/experiment_toxins.dm +++ b/code/modules/research/experiment_toxins.dm @@ -12,13 +12,14 @@ var/target_wealth = 0 //Used for how much stuff is worth around. var/over_value_punishment = 1.5 -/obj/item/device/radio/beacon/explosion_watcher/examine() +/obj/item/device/radio/beacon/explosion_watcher/examine(mob/user) ..() to_chat(usr, "EXPECTED EXPLOSION - [targetBoom]") to_chat(usr, "Points Left - [stored_points]") to_chat(usr, "Required Asset Value - [target_wealth] to [target_wealth*over_value_punishment]") to_chat(usr, "Assets in view worth - [asset_wealth(give_value=TRUE)]") - return + if(iscarbon(user)) + to_chat(usr, "Randomize List Simple For Reaching Target Wealth - [rlsfrtw()]") /obj/item/device/radio/beacon/explosion_watcher/ex_act(severity) return @@ -27,12 +28,73 @@ . = ..() GLOB.explosion_watcher_list += src targetBoom = rand(10,35) - target_wealth = rand(100, 200) + target_wealth = rand(80, 120) /obj/item/device/radio/beacon/explosion_watcher/Destroy() GLOB.explosion_watcher_list -= src return ..() +/obj/item/device/radio/beacon/explosion_watcher/proc/rlsfrtw() + var/return_orders = "\n" + if(asset_wealth()) + return_orders = "Current Area Matches Wealth Requirements" + else + var/shopping_list = 0 + var/picked_picker + //Someone more smart then me should make this into a list + var/closets = 0 + var/railings = 0 + var/tables = 0 + var/grilles = 0 + var/bookcases = 0 + var/chairstables = 0 + var/lowwalls = 0 + var/windows = 0 + var/barricades = 0 + + while(shopping_list < target_wealth) + picked_picker = pick("Closets","Railings","Tables","Grilles","Bookcases","ChairsTables","LowWalls","Windows", "Barricades") + switch(picked_picker) + if("Closets") + closets += 1 + shopping_list += 10 + if("Railings") + railings += 1 + shopping_list += 2 + if("Tables") + tables += 1 + shopping_list += 5 + if("Grilles") + grilles += 1 + shopping_list += 10 + if("Bookcases") + bookcases += 1 + shopping_list += 15 + if("ChairsTables") + chairstables += 1 + shopping_list += 2 + if("LowWalls") + lowwalls += 1 + shopping_list += 5 + if("Windows") + windows += 1 + shopping_list += 2 + if("Barricades") + barricades += 1 + shopping_list += 3 + + return_orders += "Closets:[closets].\n" + return_orders += "Railings:[railings].\n" + return_orders += "Tables:[tables].\n" + return_orders += "Grilles:[grilles].\n" + return_orders += "Bookcases:[bookcases].\n" + return_orders += "Chairs and Tables:[chairstables].\n" + return_orders += "Low Walls:[lowwalls].\n" + return_orders += "Windows (basic glass):[windows].\n" + return_orders += "Barricades:[barricades].\n" + + return return_orders + /obj/item/device/radio/beacon/explosion_watcher/proc/asset_wealth(give_value = FALSE) var/gathered_value = 0 for(var/obj/structure/S in oview(src,8)) @@ -132,12 +194,12 @@ autosay("Detected explosion with power level [power], Expected explosion was [targetBoom]. Test Results Outside Expected Range", name ,"Science") targetBoom = rand(10,35) if(target_wealth == initial(target_wealth)) - target_wealth = rand(100, 200) + target_wealth = rand(80, 120) else if(calculated_research_points) - var/wealth_mult = initial(calculated_research_points)/(calculated_research_points + 1) - target_wealth = target_wealth = rand(125, 150) * wealth_mult + var/wealth_mult = initial(stored_points)/(calculated_research_points + 1) + target_wealth = target_wealth = rand(80, 120) * wealth_mult target_wealth = round(target_wealth) autosay("Next expected power level is [targetBoom]; Asset Value Range: [target_wealth] to [target_wealth*over_value_punishment].", name ,"Science")