Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit ea38b6a

Browse files
authored
Limit research points generating atmos reactions to station zlevels only (#21492)
* fix inf research * fixes this * use get_turf * holder
1 parent 17a8d92 commit ea38b6a

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

code/modules/atmospherics/gasmixtures/reactions.dm

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@
429429
GAS_PLASMA = 10,
430430
)
431431

432-
/datum/gas_reaction/bzformation/react(datum/gas_mixture/air)
432+
/datum/gas_reaction/bzformation/react(datum/gas_mixture/air, datum/holder)
433433
var/pressure = air.return_pressure()
434434
var/old_thermal_energy = air.thermal_energy()
435435

@@ -448,7 +448,9 @@
448448
air.adjust_moles(GAS_PLASMA, -2*reaction_efficency)
449449

450450
//clamps by a minimum amount in the event of an underflow.
451-
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, clamp((reaction_efficency**2)*BZ_RESEARCH_AMOUNT,0.01,BZ_RESEARCH_MAX_AMOUNT))
451+
var/turf/holder_turf = get_holder_turf(holder)
452+
if(holder_turf && SSmapping.level_trait(holder_turf.z, ZTRAIT_STATION))
453+
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, clamp((reaction_efficency**2)*BZ_RESEARCH_AMOUNT,0.01,BZ_RESEARCH_MAX_AMOUNT))
452454

453455
if(energy_released > 0)
454456
var/new_heat_capacity = air.heat_capacity()
@@ -467,7 +469,7 @@
467469
GAS_TRITIUM = 10,
468470
"TEMP" = 5000000)
469471

470-
/datum/gas_reaction/nobliumformation/react(datum/gas_mixture/air)
472+
/datum/gas_reaction/nobliumformation/react(datum/gas_mixture/air, datum/holder)
471473
var/initial_trit = air.get_moles(GAS_TRITIUM)
472474
var/initial_n2 = air.get_moles(GAS_N2)
473475
var/initial_bz = air.get_moles(GAS_BZ)
@@ -480,7 +482,11 @@
480482
air.adjust_moles(GAS_TRITIUM, -10*nob_formed)
481483
air.adjust_moles(GAS_N2, -20*nob_formed)
482484
air.adjust_moles(GAS_HYPERNOB, nob_formed)
483-
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, clamp(nob_formed*NOBLIUM_RESEARCH_AMOUNT, 0.01, NOBLIUM_RESEARCH_MAX_AMOUNT))
485+
486+
var/turf/holder_turf = get_holder_turf(holder)
487+
if(holder_turf && SSmapping.level_trait(holder_turf.z, ZTRAIT_STATION))
488+
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, clamp(nob_formed*NOBLIUM_RESEARCH_AMOUNT, 0.01, NOBLIUM_RESEARCH_MAX_AMOUNT))
489+
484490
var/new_heat_capacity = air.heat_capacity()
485491
if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
486492
air.set_temperature(max(((old_thermal_energy - energy_taken)/new_heat_capacity),TCMB))
@@ -510,7 +516,10 @@
510516

511517
//Possibly burning a bit of organic matter through maillard reaction, so a *tiny* bit more heat would be understandable
512518
air.set_temperature(air.return_temperature() + cleaned_air * 0.002)
513-
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, clamp(cleaned_air*MIASMA_RESEARCH_AMOUNT,0.01, MIASMA_RESEARCH_MAX_AMOUNT))//Turns out the burning of miasma is kinda interesting to scientists
519+
520+
var/turf/holder_turf = get_holder_turf(holder)
521+
if(holder_turf && SSmapping.level_trait(holder_turf.z, ZTRAIT_STATION))
522+
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, clamp(cleaned_air*MIASMA_RESEARCH_AMOUNT,0.01, MIASMA_RESEARCH_MAX_AMOUNT))//Turns out the burning of miasma is kinda interesting to scientists
514523
return REACTING
515524

516525
/datum/gas_reaction/nitro_ball
@@ -730,7 +739,9 @@
730739
if (prob(25 * increase_factor))
731740
air.adjust_moles(GAS_H2, -(heat_efficency * 10))
732741
new /obj/item/stack/sheet/mineral/metal_hydrogen(location)
733-
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min((heat_efficency * increase_factor * 0.5), METAL_HYDROGEN_RESEARCH_MAX_AMOUNT))
742+
var/turf/holder_turf = get_holder_turf(holder)
743+
if(holder_turf && SSmapping.level_trait(holder_turf.z, ZTRAIT_STATION))
744+
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min((heat_efficency * increase_factor * 0.5), METAL_HYDROGEN_RESEARCH_MAX_AMOUNT))
734745

735746
if(energy_used > 0)
736747
var/new_heat_capacity = air.heat_capacity()

0 commit comments

Comments
 (0)