mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* Fixes a ton of typos, inaccuracies, poor grammar, and confusing weirdnesses from the descriptions of almost every integrated circuit. For example, the reagent filter: Before: "This is a filter which will move liquids from the source to the target. It will move all reagents, except those in the unwanted list, given the fourth pin if amount value is positive, or it will move only desired reagents if amount is negative. The third pin determines how much reagent is moved per pulse, between 0 and 50. Amount is given for each separate reagent." After: This is a filter which will move liquids from the source to its target. If the amount in the fourth pin is positive, it will move all reagents except those in the unwanted list. If the amount in the fourth pin is negative, it will only move the reagents in the wanted list. The third pin determines how many reagents are moved per pulse, between 0 and 50. Amount is given for each separate reagent." * fixed, ready * Actually fixed and ready. * Reverts the name of the coordinate pathfinder circuit back to "coordinte" * Fixes a few missed, or poorly rewritten parts. * Update smart.dm
140 lines
5.0 KiB
Plaintext
140 lines
5.0 KiB
Plaintext
|
|
/obj/item/integrated_circuit/passive/power
|
|
name = "power thingy"
|
|
desc = "Does power stuff."
|
|
complexity = 5
|
|
category_text = "Power - Passive"
|
|
|
|
/obj/item/integrated_circuit/passive/power/proc/make_energy()
|
|
return
|
|
|
|
// For calculators.
|
|
/obj/item/integrated_circuit/passive/power/solar_cell
|
|
name = "tiny photovoltaic cell"
|
|
desc = "It's a very tiny solar cell, generally used in calculators."
|
|
extended_desc = "This cell generates 1 W of power in optimal lighting conditions. Less light will result in less power being generated."
|
|
icon_state = "solar_cell"
|
|
complexity = 8
|
|
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
|
|
var/max_power = 30
|
|
|
|
/obj/item/integrated_circuit/passive/power/solar_cell/make_energy()
|
|
var/turf/T = get_turf(src)
|
|
var/light_amount = T ? T.get_lumcount() : 0
|
|
var/adjusted_power = max(max_power * light_amount, 0)
|
|
adjusted_power = round(adjusted_power, 0.1)
|
|
if(adjusted_power)
|
|
if(assembly)
|
|
assembly.give_power(adjusted_power)
|
|
|
|
/obj/item/integrated_circuit/passive/power/starter
|
|
name = "starter"
|
|
desc = "This tiny circuit will send a pulse right after the device is turned on, or when power is restored to it."
|
|
icon_state = "led"
|
|
complexity = 1
|
|
activators = list("pulse out" = IC_PINTYPE_PULSE_OUT)
|
|
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
|
|
var/is_charge = FALSE
|
|
|
|
/obj/item/integrated_circuit/passive/power/starter/make_energy()
|
|
if(assembly.battery)
|
|
if(assembly.battery.charge)
|
|
if(!is_charge)
|
|
activate_pin(1)
|
|
is_charge = TRUE
|
|
else
|
|
is_charge = FALSE
|
|
else
|
|
is_charge=FALSE
|
|
return FALSE
|
|
|
|
// For fat machines that need fat power, like drones.
|
|
/obj/item/integrated_circuit/passive/power/relay
|
|
name = "tesla power relay"
|
|
desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them."
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
extended_desc = "The siphon drains 50 W of power from an APC in the same room as it as long as it has charge remaining. It will always drain \
|
|
from the 'equipment' power channel."
|
|
icon_state = "power_relay"
|
|
complexity = 7
|
|
spawn_flags = IC_SPAWN_RESEARCH
|
|
var/power_amount = 50
|
|
|
|
|
|
/obj/item/integrated_circuit/passive/power/relay/make_energy()
|
|
if(!assembly)
|
|
return
|
|
var/area/A = get_area(src)
|
|
if(A && A.powered(EQUIP) && assembly.give_power(power_amount))
|
|
A.use_power(power_amount, EQUIP)
|
|
// give_power() handles CELLRATE on its own.
|
|
|
|
|
|
// For really fat machines.
|
|
/obj/item/integrated_circuit/passive/power/relay/large
|
|
name = "large tesla power relay"
|
|
desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them, now in industrial size!"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
extended_desc = "The siphon drains 2 kW of power from an APC in the same room as it as long as it has charge remaining. It will always drain \
|
|
from the 'equipment' power channel."
|
|
icon_state = "power_relay"
|
|
complexity = 15
|
|
spawn_flags = IC_SPAWN_RESEARCH
|
|
power_amount = 1000
|
|
|
|
|
|
//fuel cell
|
|
/obj/item/integrated_circuit/passive/power/chemical_cell
|
|
name = "fuel cell"
|
|
desc = "Produces electricity from chemicals."
|
|
icon_state = "chemical_cell"
|
|
extended_desc = "This is effectively an internal beaker. It will consume and produce power from plasma, slime jelly, welding fuel, carbon,\
|
|
ethanol, nutriment, and blood in order of decreasing efficiency. It will consume fuel only if the battery can take more energy."
|
|
container_type = OPENCONTAINER
|
|
complexity = 4
|
|
inputs = list()
|
|
outputs = list("volume used" = IC_PINTYPE_NUMBER, "self reference" = IC_PINTYPE_REF)
|
|
activators = list("push ref" = IC_PINTYPE_PULSE_IN)
|
|
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
|
|
var/volume = 60
|
|
var/list/fuel = list("plasma" = 50000, "welding_fuel" = 15000, "carbon" = 10000, "ethanol" = 10000, "nutriment" = 8000)
|
|
var/multi = 1
|
|
var/lfwb =TRUE
|
|
|
|
/obj/item/integrated_circuit/passive/power/chemical_cell/New()
|
|
..()
|
|
create_reagents(volume)
|
|
extended_desc +="But no fuel can be compared with blood of living human."
|
|
|
|
|
|
/obj/item/integrated_circuit/passive/power/chemical_cell/interact(mob/user)
|
|
set_pin_data(IC_OUTPUT, 2, WEAKREF(src))
|
|
push_data()
|
|
..()
|
|
|
|
/obj/item/integrated_circuit/passive/power/chemical_cell/on_reagent_change(changetype)
|
|
set_pin_data(IC_OUTPUT, 1, reagents.total_volume)
|
|
push_data()
|
|
|
|
/obj/item/integrated_circuit/passive/power/chemical_cell/make_energy()
|
|
if(assembly)
|
|
if(assembly.battery)
|
|
var/bp = 5000
|
|
if(reagents.get_reagent_amount("blood")) //only blood is powerful enough to power the station(c)
|
|
var/datum/reagent/blood/B = locate() in reagents.reagent_list
|
|
if(lfwb)
|
|
if(B && B.data["cloneable"])
|
|
var/mob/M = B.data["donor"]
|
|
if(M && (M.stat != DEAD) && (M.client))
|
|
bp = 500000
|
|
if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > bp)
|
|
if(reagents.remove_reagent("blood", 1))
|
|
assembly.give_power(bp)
|
|
for(var/I in fuel)
|
|
if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > fuel[I])
|
|
if(reagents.remove_reagent(I, 1))
|
|
assembly.give_power(fuel[I]*multi)
|
|
|
|
/obj/item/integrated_circuit/passive/power/chemical_cell/do_work()
|
|
set_pin_data(IC_OUTPUT, 2, WEAKREF(src))
|
|
push_data() |