Replaces the Exosuit Materials 2 experiment with one about equipping mechs rather than destroying them. (#80267)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
Replaces "Exosuit Materials 2: Excessive Damage Test" with "Exosuit
Materials 2: Load Strain Test". Rather than building and then destroying
two exosuits, you now equip them with any two (compatible) main
equipment pieces. Once the experiment is done, you'll have two exosuits
still, so consider making exosuits that you can donate to other crew
afterwards.

Note that the exosuit *has* to be built by the crew. Round-start
exosuits (or those obtained through other means like the nuke ops'
uplink) will not work.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
The idea of creating and destroying a few rounds of mechs sounds like a
neat concept. But in practice, it burns through station resources for no
real good reason, and is somewhat antithetical to the idea of robotics
making mechs for other departments. With this change, you're still
required to make the two mechs if you want the discount, but now they'll
be available afterwards. If someone has requested a mech for their
department, for example, you can now accomplish that and part of this
experiment simultaneously.


<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
add: Adds a new discount experiment for unlocking the combat exosuit
nodes - complete it by scanning two exosuits with equipment in the left
and right hand slots. This replaces the prior discount experiment about
destroying exosuits.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
This commit is contained in:
zxaber
2023-12-14 19:29:53 +01:00
committed by GitHub
parent 47ed09b594
commit bb4f09cd92
6 changed files with 24 additions and 5 deletions
+3
View File
@@ -820,6 +820,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// Trait given to mechs that can have orebox functionality on movement
#define TRAIT_OREBOX_FUNCTIONAL "orebox_functional"
///A trait for mechs that were created through the normal construction process, and not spawned by map or other effects.
#define TRAIT_MECHA_CREATED_NORMALLY "trait_mecha_created_normally"
///fish traits
#define TRAIT_RESIST_EMULSIFY "resist_emulsify"
#define TRAIT_FISH_SELF_REPRODUCE "fish_self_reproduce"
+3
View File
@@ -555,6 +555,9 @@ GLOBAL_LIST_INIT(traits_by_type, list(
/obj/vehicle = list(
"TRAIT_OREBOX_FUNCTIONAL" = TRAIT_OREBOX_FUNCTIONAL,
),
/obj/vehicle/sealed/mecha = list(
"TRAIT_MECHA_CREATED_NORMALLY" = TRAIT_MECHA_CREATED_NORMALLY
),
/turf = list(
"TRAIT_CHASM_STOPPED" = TRAIT_CHASM_STOPPED,
"TRAIT_FIREDOOR_STOP" = TRAIT_FIREDOOR_STOP,
@@ -333,12 +333,22 @@
var/found_percent = round((target.get_integrity() / target.max_integrity) * 100)
return ..() && (found_percent <= (damage_percent + 2) && found_percent >= (damage_percent - 2))
/datum/experiment/scanning/random/mecha_destroyed_scan
name = "Exosuit Materials 2: Excessive Damage Test"
description = "As an extension of testing exosuit damage results, scanning examples of complete structural failure will accelerate our material stress simulations."
possible_types = list(/obj/structure/mecha_wreckage)
/datum/experiment/scanning/random/mecha_equipped_scan
name = "Exosuit Materials 2: Load Strain Test"
description = "Exosuit equipment places unique strain upon the structure of the vehicle. Scan exosuits you have assembled from your exosuit fabricator and fully equipped to accelerate our structural stress simulations."
possible_types = list(/obj/vehicle/sealed/mecha)
total_requirement = 2
/datum/experiment/scanning/random/mecha_equipped_scan/final_contributing_index_checks(atom/target, typepath)
var/obj/vehicle/sealed/mecha/stompy = target
if(!istype(stompy))
return FALSE //Not a mech
if(!HAS_TRAIT(stompy,TRAIT_MECHA_CREATED_NORMALLY))
return FALSE //Not hand-crafted
if(!(stompy.equip_by_category[MECHA_L_ARM] && stompy.equip_by_category[MECHA_R_ARM]))
return FALSE //Both arms need be filled
return ..()
/// Scan for organs you didn't start the round with
/datum/experiment/scanning/people/novel_organs
name = "Human Field Research: Divergent Biology"
+1 -1
View File
@@ -2011,7 +2011,7 @@
"mech_proj_armor",
)
required_experiments = list(/datum/experiment/scanning/random/mecha_damage_scan)
discount_experiments = list(/datum/experiment/scanning/random/mecha_destroyed_scan = 5000)
discount_experiments = list(/datum/experiment/scanning/random/mecha_equipped_scan = 5000)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
/datum/techweb_node/mech_scattershot
@@ -392,6 +392,8 @@
if(markone.name != initial(markone.name))
newmech.name = markone.name
markone.wreckage = FALSE
if(HAS_TRAIT(markone, TRAIT_MECHA_CREATED_NORMALLY))
ADD_TRAIT(newmech, TRAIT_MECHA_CREATED_NORMALLY, newmech)
qdel(markone)
playsound(get_turf(newmech),'sound/items/ratchet.ogg',50,TRUE)
@@ -33,6 +33,7 @@
var/obj/item/mecha_parts/chassis/parent_chassis = parent
mech.CheckParts(parent_chassis.contents)
SSblackbox.record_feedback("tally", "mechas_created", 1, mech.name)
ADD_TRAIT(mech, TRAIT_MECHA_CREATED_NORMALLY, mech)
QDEL_NULL(parent)
// Default proc to generate mech steps.