Merge branch 'master' into upstream-merge-29940

This commit is contained in:
LetterJay
2017-08-21 23:29:24 -05:00
committed by GitHub
364 changed files with 4317 additions and 3134 deletions
+5 -5
View File
@@ -7,7 +7,7 @@
icon = 'icons/turf/areas.dmi'
icon_state = "unknown"
layer = AREA_LAYER
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
invisibility = INVISIBILITY_LIGHTING
var/map_name // Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
@@ -242,7 +242,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
for(var/area/RA in related)
if (RA.fire)
RA.fire = 0
RA.mouse_opacity = 0
RA.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
RA.updateicon()
RA.ModifyFiredoors(TRUE)
for(var/obj/machinery/firealarm/F in RA)
@@ -293,7 +293,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
/area/proc/set_fire_alarm_effect()
fire = 1
updateicon()
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/area/proc/readyalert()
if(name == "Space")
@@ -313,12 +313,12 @@ GLOBAL_LIST_EMPTY(teleportlocs)
if (!( src.party ))
src.party = 1
src.updateicon()
src.mouse_opacity = 0
src.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/area/proc/partyreset()
if (src.party)
src.party = 0
src.mouse_opacity = 0
src.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
src.updateicon()
for(var/obj/machinery/door/firedoor/D in src)
if(!D.welded)
+1 -1
View File
@@ -4,7 +4,7 @@
desc = "The overmind. It controls the blob."
icon = 'icons/mob/blob.dmi'
icon_state = "marker"
mouse_opacity = 1
mouse_opacity = MOUSE_OPACITY_ICON
move_on_shuttle = 1
see_in_dark = 8
invisibility = INVISIBILITY_OBSERVER
+1 -1
View File
@@ -175,7 +175,7 @@
SEND_SOUND(blobber, sound('sound/effects/attackblob.ogg'))
to_chat(blobber, "<b>You are a blobbernaut!</b>")
to_chat(blobber, "You are powerful, hard to kill, and slowly regenerate near nodes and cores, but will slowly die if not near the blob or if the factory that made you is killed.")
to_chat(blobber, "You can communicate with other blobbernauts and GLOB.overminds via <b>:b</b>")
to_chat(blobber, "You can communicate with other blobbernauts and overminds via <b>:b</b>")
to_chat(blobber, "Your overmind's blob reagent is: <b><font color=\"[blob_reagent_datum.color]\">[blob_reagent_datum.name]</b></font>!")
to_chat(blobber, "The <b><font color=\"[blob_reagent_datum.color]\">[blob_reagent_datum.name]</b></font> reagent [blob_reagent_datum.shortdesc ? "[blob_reagent_datum.shortdesc]" : "[blob_reagent_datum.description]"]")
if(blobber)
+10
View File
@@ -0,0 +1,10 @@
diff a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm (rejected hunks)
@@ -175,7 +175,7 @@
SEND_SOUND(blobber, sound('sound/effects/attackblob.ogg'))
to_chat(blobber, "<b>You are a blobbernaut!</b>")
to_chat(blobber, "You are powerful, hard to kill, and slowly regenerate near nodes and cores, but will slowly die if not near the blob or if the factory that made you is killed.")
- to_chat(blobber, "You can communicate with other blobbernauts and GLOB.overminds via <b>:b</b>")
+ to_chat(blobber, "You can communicate with other blobbernauts and overminds via <b>:b</b>")
to_chat(blobber, "Your overmind's blob reagent is: <b><font color=\"[blob_reagent_datum.color]\">[blob_reagent_datum.name]</b></font>!")
to_chat(blobber, "The <b><font color=\"[blob_reagent_datum.color]\">[blob_reagent_datum.name]</b></font> reagent [blob_reagent_datum.shortdesc ? "[blob_reagent_datum.shortdesc]" : "[blob_reagent_datum.description]"]")
if(blobber)
+1
View File
@@ -24,6 +24,7 @@
M.changeNext_move(CLICK_CD_MELEE)
var/a = pick("gently stroke", "nuzzle", "affectionatly pet", "cuddle")
M.visible_message("<span class='notice'>[M] [a]s [src]!</span>", "<span class='notice'>You [a] [src]!</span>")
to_chat(overmind, "<span class='notice'>[M] [a]s you!</span>")
playsound(src, 'sound/effects/blobattack.ogg', 50, 1) //SQUISH SQUISH
@@ -1,6 +1,6 @@
//an "overlay" used by clockwork walls and floors to appear normal to mesons.
/obj/effect/clockwork/overlay
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/atom/linked
/obj/effect/clockwork/overlay/examine(mob/user)
@@ -130,13 +130,19 @@
playsound(src, 'sound/effects/empulse.ogg', 50, 1)
playsound(linked_gateway, 'sound/effects/empulse.ogg', 50, 1)
transform = matrix() * 1.5
animate(src, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW)
linked_gateway.transform = matrix() * 1.5
animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW)
A.forceMove(get_turf(linked_gateway))
if(!no_cost)
uses = max(0, uses - 1)
linked_gateway.uses = max(0, linked_gateway.uses - 1)
if(!uses)
animate(src, transform = matrix() * 0.1, time = 10, flags = ANIMATION_END_NOW)
animate(linked_gateway, transform = matrix() * 0.1, time = 10, flags = ANIMATION_END_NOW)
density = FALSE
linked_gateway.density = FALSE
else
animate(src, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW)
animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW)
addtimer(CALLBACK(src, .proc/check_uses), 10)
return TRUE
@@ -4,7 +4,7 @@
desc = "A massive, thrumming rip in spacetime."
clockwork_desc = "A portal to the Celestial Derelict. Massive and intimidating, it is the only thing that can both transport Ratvar and withstand the massive amount of energy he emits."
max_integrity = 500
mouse_opacity = 2
mouse_opacity = MOUSE_OPACITY_OPAQUE
icon = 'icons/effects/clockwork_effects.dmi'
icon_state = "nothing"
density = FALSE
@@ -68,7 +68,7 @@
if(!purpose_fulfilled)
var/area/gate_area = get_area(src)
hierophant_message("<span class='large_brass'><b>An Ark of the Clockwork Justicar has fallen at [gate_area.map_name]!</b></span>")
send_to_playing_players(sound(null, 0, channel = CHANNEL_JUSTICAR_ARK))
sound_to_playing_players(channel = CHANNEL_JUSTICAR_ARK, S = sound(null, 0))
var/was_stranded = SSshuttle.emergency.mode == SHUTTLE_STRANDED
SSshuttle.clearHostileEnvironment(src)
if(!was_stranded && !purpose_fulfilled)
@@ -87,7 +87,7 @@
resistance_flags |= INDESTRUCTIBLE
countdown.stop()
visible_message("<span class='userdanger'>[src] begins to pulse uncontrollably... you might want to run!</span>")
send_to_playing_players(sound('sound/effects/clockcult_gateway_disrupted.ogg', 0, channel = CHANNEL_JUSTICAR_ARK, volume = 50))
sound_to_playing_players(volume = 50, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_disrupted.ogg', 0))
make_glow()
glow.icon_state = "clockwork_gateway_disrupted"
resistance_flags |= INDESTRUCTIBLE
@@ -208,7 +208,7 @@
if(still_needs_components())
if(!first_sound_played)
priority_announce("Massive energy anomaly detected on short-range scanners. Attempting to triangulate location...", "Anomaly Alert")
send_to_playing_players(sound('sound/effects/clockcult_gateway_charging.ogg', 1, channel = CHANNEL_JUSTICAR_ARK, volume = 10))
sound_to_playing_players(volume = 10, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_charging.ogg', 1))
first_sound_played = TRUE
make_glow()
glow.icon_state = "clockwork_gateway_components"
@@ -228,7 +228,8 @@
switch(progress_in_seconds)
if(-INFINITY to GATEWAY_REEBE_FOUND)
if(!second_sound_played)
send_to_playing_players(sound('sound/effects/clockcult_gateway_charging.ogg', 1, channel = CHANNEL_JUSTICAR_ARK, volume = 30))
new /obj/effect/temp_visual/decoy/fading/threesecond(loc, glow)
sound_to_playing_players(volume = 30, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_charging.ogg', 1))
second_sound_played = TRUE
make_glow()
glow.icon_state = "clockwork_gateway_charging"
@@ -236,13 +237,15 @@
if(!third_sound_played)
var/area/gate_area = get_area(src)
priority_announce("Location of massive energy anomaly has been triangulated. Location: [gate_area.map_name].", "Anomaly Alert")
send_to_playing_players(sound('sound/effects/clockcult_gateway_active.ogg', 1, channel = CHANNEL_JUSTICAR_ARK, volume = 35))
new /obj/effect/temp_visual/decoy/fading/threesecond(loc, glow)
sound_to_playing_players(volume = 35, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_active.ogg', 1))
third_sound_played = TRUE
make_glow()
glow.icon_state = "clockwork_gateway_active"
if(GATEWAY_RATVAR_COMING to GATEWAY_RATVAR_ARRIVAL)
if(!fourth_sound_played)
send_to_playing_players(sound('sound/effects/clockcult_gateway_closing.ogg', 1, channel = CHANNEL_JUSTICAR_ARK, volume = 40))
new /obj/effect/temp_visual/decoy/fading/threesecond(loc, glow)
sound_to_playing_players(volume = 40, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_closing.ogg', 1))
fourth_sound_played = TRUE
make_glow()
glow.icon_state = "clockwork_gateway_closing"
@@ -252,20 +255,20 @@
resistance_flags |= INDESTRUCTIBLE
purpose_fulfilled = TRUE
make_glow()
animate(glow, transform = matrix() * 1.5, alpha = 255, time = 125)
send_to_playing_players(sound('sound/effects/ratvar_rises.ogg', 0, channel = CHANNEL_JUSTICAR_ARK)) //End the sounds
animate(glow, transform = matrix() * 3, time = 125)
sound_to_playing_players('sound/effects/ratvar_rises.ogg', channel = CHANNEL_JUSTICAR_ARK) //End the sounds
sleep(125)
make_glow()
animate(glow, transform = matrix() * 3, alpha = 0, time = 5)
var/turf/startpoint = get_turf(src)
QDEL_IN(src, 3)
sleep(3)
make_glow()
glow.transform = matrix() * 4.5
animate(glow, transform = matrix() * 0.1, time = 10)
QDEL_IN(src, 10)
GLOB.clockwork_gateway_activated = TRUE
new/obj/structure/destructible/clockwork/massive/ratvar(startpoint)
send_to_playing_players("<span class='inathneq_large'>\"[text2ratvar("See Engine's mercy")]!\"</span>\n\
<span class='sevtug_large'>\"[text2ratvar("Observe Engine's design skills")]!\"</span>\n<span class='nezbere_large'>\"[text2ratvar("Behold Engine's light")]!!\"</span>\n\
<span class='nzcrentr_large'>\"[text2ratvar("Gaze upon Engine's power")].\"</span>")
send_to_playing_players('sound/magic/clockwork/invoke_general.ogg')
sound_to_playing_players('sound/effects/empulse.ogg')
var/x0 = startpoint.x
var/y0 = startpoint.y
for(var/I in spiral_range_turfs(255, startpoint))
@@ -130,6 +130,6 @@
if(hex_combo) //YOU BUILT A HEXAGON
hex_combo.pixel_x = -16
hex_combo.pixel_y = -16
hex_combo.mouse_opacity = 0
hex_combo.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
hex_combo.plane = GAME_PLANE
new /obj/effect/temp_visual/ratvar/prolonging_prism(T, hex_combo)
@@ -23,12 +23,12 @@
for(var/obj/O in GLOB.all_clockwork_objects)
O.ratvar_act()
START_PROCESSING(SSobj, src)
INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 0, null, FALSE, 0)
send_to_playing_players("<span class='ratvar'>\"[text2ratvar("ONCE AGAIN MY LIGHT SHALL SHINE ACROSS THIS PATHETIC REALM")]!!\"</span>")
sound_to_playing_players('sound/effects/ratvar_reveal.ogg')
var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/clockwork_effects.dmi', "ratvar_alert")
var/area/A = get_area(src)
notify_ghosts("The Justiciar's light calls to you! Reach out to Ratvar in [A.name] to be granted a shell to spread his glory!", null, source = src, alert_overlay = alert_overlay)
INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 0, null, FALSE, 0)
/obj/structure/destructible/clockwork/massive/ratvar/Destroy()
GLOB.ratvar_awakens--
+1 -1
View File
@@ -476,7 +476,7 @@ structure_check() searches for nearby cultist structures required for the invoca
//BEGIN THE SUMMONING
used = TRUE
..()
send_to_playing_players('sound/effects/dimensional_rend.ogg')
sound_to_playing_players('sound/effects/dimensional_rend.ogg')
var/turf/T = get_turf(src)
sleep(40)
if(src)
@@ -13,8 +13,8 @@
//TODO : replace with presets or spectrum
return rgb(rand(0,255),rand(0,255),rand(0,255))
/obj/machinery/abductor/gland_dispenser/New()
..()
/obj/machinery/abductor/gland_dispenser/Initialize()
. = ..()
gland_types = subtypesof(/obj/item/organ/heart/gland)
gland_types = shuffle(gland_types)
gland_colors = new/list(gland_types.len)
+2 -3
View File
@@ -85,9 +85,8 @@
. = ..()
var/obj/machinery/nuclearbomb/existing = locate("syndienuke") in GLOB.nuke_list
if(existing)
qdel(src)
throw EXCEPTION("Attempted to spawn a syndicate nuke while one already exists at [existing.loc.x],[existing.loc.y],[existing.loc.z]")
return 0
stack_trace("Attempted to spawn a syndicate nuke while one already exists at [existing.loc.x],[existing.loc.y],[existing.loc.z]")
return INITIALIZE_HINT_QDEL
tag = "syndienuke"
/obj/machinery/nuclearbomb/attackby(obj/item/I, mob/user, params)
+3 -5
View File
@@ -11,8 +11,8 @@
idle_power_usage = 0
var/obj/item/device/radio/beacon/Beacon
/obj/machinery/bluespace_beacon/New()
..()
/obj/machinery/bluespace_beacon/Initialize()
. = ..()
var/turf/T = loc
Beacon = new /obj/item/device/radio/beacon
Beacon.invisibility = INVISIBILITY_MAXIMUM
@@ -21,9 +21,7 @@
hide(T.intact)
/obj/machinery/bluespace_beacon/Destroy()
if(Beacon)
qdel(Beacon)
Beacon = null
QDEL_NULL(Beacon)
return ..()
// update the invisibility and icon
+11 -9
View File
@@ -27,12 +27,16 @@
return
/obj/machinery/pdapainter/New()
..()
var/blocked = list(/obj/item/device/pda/ai/pai, /obj/item/device/pda/ai, /obj/item/device/pda/heads,
/obj/item/device/pda/clear, /obj/item/device/pda/syndicate)
for(var/P in typesof(/obj/item/device/pda)-blocked)
/obj/machinery/pdapainter/Initialize()
. = ..()
var/list/blocked = list(
/obj/item/device/pda/ai/pai,
/obj/item/device/pda/ai,
/obj/item/device/pda/heads,
/obj/item/device/pda/clear,
/obj/item/device/pda/syndicate)
for(var/P in typesof(/obj/item/device/pda) - blocked)
var/obj/item/device/pda/D = new P
//D.name = "PDA Style [colorlist.len+1]" //Gotta set the name, otherwise it all comes up as "PDA"
@@ -41,9 +45,7 @@
src.colorlist += D
/obj/machinery/pdapainter/Destroy()
if(storedpda)
qdel(storedpda)
storedpda = null
QDEL_NULL(storedpda)
return ..()
/obj/machinery/pdapainter/on_deconstruction()
+3 -15
View File
@@ -13,6 +13,7 @@
density = FALSE
anchored = TRUE
state_open = TRUE
circuit = /obj/item/weapon/circuitboard/machine/sleeper
var/efficiency = 1
var/min_health = -25
var/list/available_chems
@@ -26,24 +27,11 @@
var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: antitoxin -> morphine
var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning
/obj/machinery/sleeper/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/sleeper(null)
B.apply_default_parts(src)
/obj/machinery/sleeper/Initialize()
. = ..()
update_icon()
reset_chem_buttons()
/obj/item/weapon/circuitboard/machine/sleeper
name = "Sleeper (Machine Board)"
build_path = /obj/machinery/sleeper
origin_tech = "programming=3;biotech=2;engineering=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/sheet/glass = 1)
/obj/machinery/sleeper/RefreshParts()
var/E
for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
@@ -123,12 +123,18 @@ Class Procs:
var/interact_open = FALSE // Can the machine be interacted with when in maint/when the panel is open.
var/interact_offline = 0 // Can the machine be interacted with while de-powered.
var/speed_process = 0 // Process as fast as possible?
var/obj/item/weapon/circuitboard/circuit // Circuit to be created and inserted when the machinery is created
/obj/machinery/Initialize()
if(!armor)
armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70)
. = ..()
GLOB.machines += src
if(ispath(circuit, /obj/item/weapon/circuitboard))
circuit = new circuit
circuit.apply_default_parts(src)
if(!speed_process)
START_PROCESSING(SSmachines, src)
else
+5 -15
View File
@@ -7,7 +7,6 @@ GLOBAL_LIST_EMPTY(announcement_systems)
desc = "An automated announcement system that handles minor announcements over the radio."
icon = 'icons/obj/machines/telecomms.dmi'
icon_state = "AAS_On"
var/obj/item/device/radio/headset/radio
verb_say = "coldly states"
verb_ask = "queries"
@@ -16,6 +15,9 @@ GLOBAL_LIST_EMPTY(announcement_systems)
idle_power_usage = 20
active_power_usage = 50
circuit = /obj/item/weapon/circuitboard/machine/announcement_system
var/obj/item/device/radio/headset/radio
var/arrival = "%PERSON has signed up as %RANK"
var/arrivalToggle = 1
var/newhead = "%PERSON, %RANK, is the department head."
@@ -25,24 +27,12 @@ GLOBAL_LIST_EMPTY(announcement_systems)
var/pinklight = "Light_Pink"
var/errorlight = "Error_Red"
/obj/machinery/announcement_system/New()
..()
/obj/machinery/announcement_system/Initialize()
. = ..()
GLOB.announcement_systems += src
radio = new /obj/item/device/radio/headset/ai(src)
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/announcement_system(null)
B.apply_default_parts(src)
update_icon()
/obj/item/weapon/circuitboard/machine/announcement_system
name = "Announcement System (Machine Board)"
build_path = /obj/machinery/announcement_system
origin_tech = "programming=3;bluespace=3;magnets=2"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/machinery/announcement_system/update_icon()
if(is_operational())
icon_state = (panel_open ? "AAS_On_Open" : "AAS_On")
+10 -22
View File
@@ -7,9 +7,13 @@
desc = "It produces items using metal and glass."
icon_state = "autolathe"
density = TRUE
anchored = TRUE
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 100
circuit = /obj/item/weapon/circuitboard/machine/autolathe
var/operating = FALSE
anchored = TRUE
var/list/L = list()
var/list/LL = list()
var/hacked = FALSE
@@ -18,9 +22,7 @@
var/hack_wire
var/disable_wire
var/shock_wire
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 100
var/busy = FALSE
var/prod_coeff = 1
@@ -45,30 +47,16 @@
"Imported"
)
/obj/machinery/autolathe/New()
..()
/obj/machinery/autolathe/Initialize()
materials = new /datum/material_container(src, list(MAT_METAL, MAT_GLASS))
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/autolathe(null)
B.apply_default_parts(src)
wires = new /datum/wires/autolathe(src)
files = new /datum/research/autolathe(src)
matching_designs = list()
/obj/item/weapon/circuitboard/machine/autolathe
name = "Autolathe (Machine Board)"
build_path = /obj/machinery/autolathe
origin_tech = "engineering=2;programming=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 3,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
return ..()
/obj/machinery/autolathe/Destroy()
qdel(wires)
wires = null
qdel(materials)
materials = null
QDEL_NULL(wires)
QDEL_NULL(materials)
return ..()
/obj/machinery/autolathe/interact(mob/user)
+2 -2
View File
@@ -9,8 +9,8 @@
var/radio_channel = "Common"
var/minimum_time_between_warnings = 400
/obj/machinery/computer/bank_machine/Initialize(mapload)
..()
/obj/machinery/computer/bank_machine/Initialize()
. = ..()
radio = new(src)
radio.subspace_transmission = TRUE
radio.canhear_range = 0
+5 -20
View File
@@ -17,6 +17,8 @@
icon_state = "pod_0"
req_access = list(ACCESS_CLONING) //FOR PREMATURE UNLOCKING.
verb_say = "states"
circuit = /obj/item/weapon/circuitboard/machine/clonepod
var/heal_level //The clone is released once its health reaches this level.
var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine.
var/mess = FALSE //Need to clean out it if it's full of exploded clone.
@@ -46,8 +48,6 @@
/obj/machinery/clonepod/Initialize()
. = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonepod(null)
B.apply_default_parts(src)
countdown = new(src)
@@ -59,16 +59,11 @@
/obj/machinery/clonepod/Destroy()
go_out()
qdel(radio)
radio = null
qdel(countdown)
countdown = null
QDEL_NULL(radio)
QDEL_NULL(countdown)
if(connected)
connected.DetachCloner(src)
for(var/i in unattached_flesh)
qdel(i)
LAZYCLEARLIST(unattached_flesh)
unattached_flesh = null
QDEL_LIST(unattached_flesh)
. = ..()
/obj/machinery/clonepod/RefreshParts()
@@ -84,16 +79,6 @@
if(heal_level > 100)
heal_level = 100
/obj/item/weapon/circuitboard/machine/clonepod
name = "Clone Pod (Machine Board)"
build_path = /obj/machinery/clonepod
origin_tech = "programming=2;biotech=2"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/scanning_module = 2,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/sheet/glass = 1)
//The return of data disks?? Just for transferring between genetics machine/cloning machine.
//TO-DO: Make the genetics machine accept them.
/obj/item/weapon/disk/data
+2 -2
View File
@@ -4,8 +4,8 @@
icon_screen = "crew"
icon_keyboard = "med_key"
circuit = /obj/item/weapon/circuitboard/computer/operating
var/mob/living/carbon/human/patient = null
var/obj/structure/table/optable/table = null
var/mob/living/carbon/human/patient
var/obj/structure/table/optable/table
light_color = LIGHT_COLOR_BLUE
@@ -1,142 +1,129 @@
/obj/machinery/computer
name = "computer"
icon = 'icons/obj/computer.dmi'
icon_state = "computer"
density = TRUE
anchored = TRUE
use_power = IDLE_POWER_USE
idle_power_usage = 300
active_power_usage = 300
max_integrity = 200
integrity_failure = 100
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 40, acid = 20)
var/obj/item/weapon/circuitboard/computer/circuit = null // if circuit==null, computer can't disassembly
var/processing = FALSE
var/brightness_on = 2
var/icon_keyboard = "generic_key"
var/icon_screen = "generic"
var/clockwork = FALSE
/obj/machinery/computer/New(location, obj/item/weapon/circuitboard/C)
..(location)
if(C && istype(C))
circuit = C
//Some machines, oldcode arcades mostly, new themselves, so circuit
//can already be an instance of a type and trying to new that will
//cause a runtime
else if(ispath(circuit))
circuit = new circuit(null)
/obj/machinery/computer/Destroy()
if(circuit)
qdel(circuit)
circuit = null
return ..()
/obj/machinery/computer/Initialize()
. = ..()
power_change()
/obj/machinery/computer/process()
if(stat & (NOPOWER|BROKEN))
return 0
return 1
/obj/machinery/computer/ratvar_act()
if(!clockwork)
clockwork = TRUE
icon_screen = "ratvar[rand(1, 4)]"
icon_keyboard = "ratvar_key[rand(1, 6)]"
icon_state = "ratvarcomputer[rand(1, 4)]"
update_icon()
/obj/machinery/computer/narsie_act()
if(clockwork && clockwork != initial(clockwork)) //if it's clockwork but isn't normally clockwork
clockwork = FALSE
icon_screen = initial(icon_screen)
icon_keyboard = initial(icon_keyboard)
icon_state = initial(icon_state)
update_icon()
/obj/machinery/computer/update_icon()
cut_overlays()
if(stat & NOPOWER)
add_overlay("[icon_keyboard]_off")
return
add_overlay(icon_keyboard)
if(stat & BROKEN)
add_overlay("[icon_state]_broken")
else
add_overlay(icon_screen)
/obj/machinery/computer/power_change()
..()
if(stat & NOPOWER)
set_light(0)
else
set_light(brightness_on)
update_icon()
return
/obj/machinery/computer/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver) && circuit && !(flags&NODECONSTRUCT))
playsound(src.loc, I.usesound, 50, 1)
to_chat(user, "<span class='notice'> You start to disconnect the monitor...</span>")
if(do_after(user, 20*I.toolspeed, target = src))
deconstruct(TRUE, user)
else
return ..()
/obj/machinery/computer/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
if(stat & BROKEN)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
else
playsound(src.loc, 'sound/effects/glasshit.ogg', 75, 1)
if(BURN)
playsound(src.loc, 'sound/items/welder.ogg', 100, 1)
/obj/machinery/computer/obj_break(damage_flag)
if(circuit && !(flags & NODECONSTRUCT)) //no circuit, no breaking
if(!(stat & BROKEN))
playsound(loc, 'sound/effects/glassbr3.ogg', 100, 1)
stat |= BROKEN
update_icon()
/obj/machinery/computer/emp_act(severity)
switch(severity)
if(1)
if(prob(50))
obj_break("energy")
if(2)
if(prob(10))
obj_break("energy")
..()
/obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user)
on_deconstruction()
if(!(flags & NODECONSTRUCT))
if(circuit) //no circuit, no computer frame
var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc)
A.circuit = circuit
A.anchored = TRUE
if(stat & BROKEN)
if(user)
to_chat(user, "<span class='notice'>The broken glass falls out.</span>")
else
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
new /obj/item/weapon/shard(src.loc)
new /obj/item/weapon/shard(src.loc)
A.state = 3
A.icon_state = "3"
else
if(user)
to_chat(user, "<span class='notice'>You disconnect the monitor.</span>")
A.state = 4
A.icon_state = "4"
circuit = null
for(var/obj/C in src)
C.forceMove(loc)
qdel(src)
/obj/machinery/computer
name = "computer"
icon = 'icons/obj/computer.dmi'
icon_state = "computer"
density = TRUE
anchored = TRUE
use_power = IDLE_POWER_USE
idle_power_usage = 300
active_power_usage = 300
max_integrity = 200
integrity_failure = 100
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 40, acid = 20)
var/processing = FALSE
var/brightness_on = 2
var/icon_keyboard = "generic_key"
var/icon_screen = "generic"
var/clockwork = FALSE
/obj/machinery/computer/Initialize(mapload, obj/item/weapon/circuitboard/C)
. = ..()
power_change()
/obj/machinery/computer/Destroy()
QDEL_NULL(circuit)
return ..()
/obj/machinery/computer/process()
if(stat & (NOPOWER|BROKEN))
return 0
return 1
/obj/machinery/computer/ratvar_act()
if(!clockwork)
clockwork = TRUE
icon_screen = "ratvar[rand(1, 4)]"
icon_keyboard = "ratvar_key[rand(1, 6)]"
icon_state = "ratvarcomputer[rand(1, 4)]"
update_icon()
/obj/machinery/computer/narsie_act()
if(clockwork && clockwork != initial(clockwork)) //if it's clockwork but isn't normally clockwork
clockwork = FALSE
icon_screen = initial(icon_screen)
icon_keyboard = initial(icon_keyboard)
icon_state = initial(icon_state)
update_icon()
/obj/machinery/computer/update_icon()
cut_overlays()
if(stat & NOPOWER)
add_overlay("[icon_keyboard]_off")
return
add_overlay(icon_keyboard)
if(stat & BROKEN)
add_overlay("[icon_state]_broken")
else
add_overlay(icon_screen)
/obj/machinery/computer/power_change()
..()
if(stat & NOPOWER)
set_light(0)
else
set_light(brightness_on)
update_icon()
return
/obj/machinery/computer/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver) && circuit && !(flags&NODECONSTRUCT))
playsound(src.loc, I.usesound, 50, 1)
to_chat(user, "<span class='notice'> You start to disconnect the monitor...</span>")
if(do_after(user, 20*I.toolspeed, target = src))
deconstruct(TRUE, user)
else
return ..()
/obj/machinery/computer/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
if(BRUTE)
if(stat & BROKEN)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
else
playsound(src.loc, 'sound/effects/glasshit.ogg', 75, 1)
if(BURN)
playsound(src.loc, 'sound/items/welder.ogg', 100, 1)
/obj/machinery/computer/obj_break(damage_flag)
if(circuit && !(flags & NODECONSTRUCT)) //no circuit, no breaking
if(!(stat & BROKEN))
playsound(loc, 'sound/effects/glassbr3.ogg', 100, 1)
stat |= BROKEN
update_icon()
/obj/machinery/computer/emp_act(severity)
switch(severity)
if(1)
if(prob(50))
obj_break("energy")
if(2)
if(prob(10))
obj_break("energy")
..()
/obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user)
on_deconstruction()
if(!(flags & NODECONSTRUCT))
if(circuit) //no circuit, no computer frame
var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc)
A.circuit = circuit
A.anchored = TRUE
if(stat & BROKEN)
if(user)
to_chat(user, "<span class='notice'>The broken glass falls out.</span>")
else
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
new /obj/item/weapon/shard(src.loc)
new /obj/item/weapon/shard(src.loc)
A.state = 3
A.icon_state = "3"
else
if(user)
to_chat(user, "<span class='notice'>You disconnect the monitor.</span>")
A.state = 4
A.icon_state = "4"
circuit = null
for(var/obj/C in src)
C.forceMove(loc)
qdel(src)
+1 -1
View File
@@ -16,9 +16,9 @@
var/auth_id = "\[NULL\]"
/obj/machinery/computer/apc_control/Initialize()
. = ..()
apcs = list() //To avoid BYOND making the list run through a ton of procs
filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null)
..()
/obj/machinery/computer/apc_control/process()
apcs = list() //Clear the list every tick
+5 -12
View File
@@ -51,21 +51,17 @@
/obj/machinery/computer/arcade/proc/Reset()
return
/obj/machinery/computer/arcade/New()
..()
/obj/machinery/computer/arcade/Initialize()
. = ..()
// If it's a generic arcade machine, pick a random arcade
// circuit board for it and make the new machine
if(!circuit)
var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/computer/arcade))
var/obj/item/weapon/circuitboard/CB = new choice()
new CB.build_path(loc, CB)
qdel(src)
/obj/machinery/computer/arcade/Initialize()
. = ..()
return INITIALIZE_HINT_QDEL
Reset()
#define PULSE_MEDAL "Jackpot"
/obj/machinery/computer/arcade/proc/prizevend()
@@ -78,11 +74,9 @@
new prizeselect(src)
var/atom/movable/prize = pick(contents)
visible_message(
"<span class='notice'>[src] dispenses a [prize]!</span>",
"<span class='notice'>You hear a chime and a clunk.</span>")
visible_message("<span class='notice'>[src] dispenses a [prize]!</span>", "<span class='notice'>You hear a chime and a clunk.</span>")
prize.loc = loc
prize.forceMove(get_turf(src))
#undef PULSE_MEDAL
/obj/machinery/computer/arcade/emp_act(severity)
@@ -157,7 +151,6 @@
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.open()
return
/obj/machinery/computer/arcade/battle/Topic(href, href_list)
if(..())
+1 -317
View File
@@ -142,320 +142,4 @@
new /obj/item/weapon/shard(loc)
if(state >= 3)
new /obj/item/stack/cable_coil(loc , 5)
..()
/obj/item/weapon/circuitboard
name = "circuit board"
icon = 'icons/obj/module.dmi'
icon_state = "id_mod"
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
origin_tech = "programming=2"
materials = list(MAT_GLASS=1000)
w_class = WEIGHT_CLASS_SMALL
var/build_path = null
/obj/item/weapon/circuitboard/computer/turbine_computer
name = "Turbine Computer (Computer Board)"
build_path = /obj/machinery/computer/turbine_computer
origin_tech = "programming=4;engineering=4;powerstorage=4"
/obj/item/weapon/circuitboard/computer/launchpad_console
name = "Launchpad Control Console (Computer Board)"
build_path = /obj/machinery/computer/launchpad
origin_tech = "programming=3;bluespace=3;plasmatech=2"
/obj/item/weapon/circuitboard/computer/message_monitor
name = "Message Monitor (Computer Board)"
build_path = /obj/machinery/computer/message_monitor
origin_tech = "programming=2"
/obj/item/weapon/circuitboard/computer/security
name = "Security Cameras (Computer Board)"
build_path = /obj/machinery/computer/security
origin_tech = "programming=2;combat=2"
/obj/item/weapon/circuitboard/computer/xenobiology
name = "circuit board (Xenobiology Console)"
build_path = /obj/machinery/computer/camera_advanced/xenobio
origin_tech = "programming=3;biotech=3"
/obj/item/weapon/circuitboard/computer/base_construction
name = "circuit board (Aux Mining Base Construction Console)"
build_path = /obj/machinery/computer/camera_advanced/base_construction
origin_tech = "programming=3;engineering=3"
/obj/item/weapon/circuitboard/computer/aiupload
name = "AI Upload (Computer Board)"
build_path = /obj/machinery/computer/upload/ai
origin_tech = "programming=4;engineering=4"
/obj/item/weapon/circuitboard/computer/borgupload
name = "Cyborg Upload (Computer Board)"
build_path = /obj/machinery/computer/upload/borg
origin_tech = "programming=4;engineering=4"
/obj/item/weapon/circuitboard/computer/med_data
name = "Medical Records Console (Computer Board)"
build_path = /obj/machinery/computer/med_data
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/pandemic
name = "PanD.E.M.I.C. 2200 (Computer Board)"
build_path = /obj/machinery/computer/pandemic
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/scan_consolenew
name = "DNA Machine (Computer Board)"
build_path = /obj/machinery/computer/scan_consolenew
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/communications
name = "Communications (Computer Board)"
build_path = /obj/machinery/computer/communications
origin_tech = "programming=3;magnets=3"
var/lastTimeUsed = 0
/obj/item/weapon/circuitboard/computer/card
name = "ID Console (Computer Board)"
build_path = /obj/machinery/computer/card
origin_tech = "programming=3"
/obj/item/weapon/circuitboard/computer/card/centcom
name = "CentCom ID Console (Computer Board)"
build_path = /obj/machinery/computer/card/centcom
/obj/item/weapon/circuitboard/computer/card/minor
name = "Department Management Console (Computer Board)"
build_path = /obj/machinery/computer/card/minor
var/target_dept = 1
var/list/dept_list = list("General","Security","Medical","Science","Engineering")
/obj/item/weapon/circuitboard/computer/card/minor/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
target_dept = (target_dept == dept_list.len) ? 1 : (target_dept + 1)
to_chat(user, "<span class='notice'>You set the board to \"[dept_list[target_dept]]\".</span>")
else
return ..()
/obj/item/weapon/circuitboard/computer/card/minor/examine(user)
..()
to_chat(user, "Currently set to \"[dept_list[target_dept]]\".")
//obj/item/weapon/circuitboard/computer/shield
// name = "Shield Control (Computer Board)"
// build_path = /obj/machinery/computer/stationshield
/obj/item/weapon/circuitboard/computer/teleporter
name = "Teleporter (Computer Board)"
build_path = /obj/machinery/computer/teleporter
origin_tech = "programming=3;bluespace=3;plasmatech=3"
/obj/item/weapon/circuitboard/computer/secure_data
name = "Security Records Console (Computer Board)"
build_path = /obj/machinery/computer/secure_data
origin_tech = "programming=2;combat=2"
/obj/item/weapon/circuitboard/computer/stationalert
name = "Station Alerts (Computer Board)"
build_path = /obj/machinery/computer/station_alert
/*/obj/item/weapon/circuitboard/computer/atmospheresiphonswitch
name = "Atmosphere siphon control (Computer Board)"
build_path = /obj/machinery/computer/atmosphere/siphonswitch*/
/obj/item/weapon/circuitboard/computer/atmos_control
name = "Atmospheric Monitor (Computer Board)"
build_path = /obj/machinery/computer/atmos_control
/obj/item/weapon/circuitboard/computer/atmos_control/tank
name = "Tank Control (Computer Board)"
build_path = /obj/machinery/computer/atmos_control/tank
origin_tech = "programming=2;engineering=3;materials=2"
/obj/item/weapon/circuitboard/computer/atmos_alert
name = "Atmospheric Alert (Computer Board)"
build_path = /obj/machinery/computer/atmos_alert
/obj/item/weapon/circuitboard/computer/pod
name = "Massdriver control (Computer Board)"
build_path = /obj/machinery/computer/pod
/obj/item/weapon/circuitboard/computer/robotics
name = "Robotics Control (Computer Board)"
build_path = /obj/machinery/computer/robotics
origin_tech = "programming=3"
/obj/item/weapon/circuitboard/computer/cloning
name = "Cloning (Computer Board)"
build_path = /obj/machinery/computer/cloning
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/arcade/battle
name = "Arcade Battle (Computer Board)"
build_path = /obj/machinery/computer/arcade/battle
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/arcade/orion_trail
name = "Orion Trail (Computer Board)"
build_path = /obj/machinery/computer/arcade/orion_trail
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/turbine_control
name = "Turbine control (Computer Board)"
build_path = /obj/machinery/computer/turbine_computer
/obj/item/weapon/circuitboard/computer/solar_control
name = "Solar Control (Computer Board)" //name fixed 250810
build_path = /obj/machinery/power/solar_control
origin_tech = "programming=2;powerstorage=2"
/obj/item/weapon/circuitboard/computer/powermonitor
name = "Power Monitor (Computer Board)" //name fixed 250810
build_path = /obj/machinery/computer/monitor
origin_tech = "programming=2;powerstorage=2"
/obj/item/weapon/circuitboard/computer/olddoor
name = "DoorMex (Computer Board)"
build_path = /obj/machinery/computer/pod/old
/obj/item/weapon/circuitboard/computer/syndicatedoor
name = "ProComp Executive (Computer Board)"
build_path = /obj/machinery/computer/pod/old/syndicate
/obj/item/weapon/circuitboard/computer/swfdoor
name = "Magix (Computer Board)"
build_path = /obj/machinery/computer/pod/old/swf
/obj/item/weapon/circuitboard/computer/prisoner
name = "Prisoner Management Console (Computer Board)"
build_path = /obj/machinery/computer/prisoner
/obj/item/weapon/circuitboard/computer/gulag_teleporter_console
name = "Labor Camp teleporter console (Computer Board)"
build_path = /obj/machinery/computer/gulag_teleporter_computer
/obj/item/weapon/circuitboard/computer/rdconsole
name = "R&D Console (Computer Board)"
build_path = /obj/machinery/computer/rdconsole/core
/obj/item/weapon/circuitboard/computer/rdconsole/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
if(build_path == /obj/machinery/computer/rdconsole/core)
name = "R&D Console - Robotics (Computer Board)"
build_path = /obj/machinery/computer/rdconsole/robotics
to_chat(user, "<span class='notice'>Access protocols successfully updated.</span>")
else
name = "R&D Console (Computer Board)"
build_path = /obj/machinery/computer/rdconsole/core
to_chat(user, "<span class='notice'>Defaulting access protocols.</span>")
else
return ..()
/obj/item/weapon/circuitboard/computer/mecha_control
name = "Exosuit Control Console (Computer Board)"
build_path = /obj/machinery/computer/mecha
/obj/item/weapon/circuitboard/computer/rdservercontrol
name = "R&D Server Control (Computer Board)"
build_path = /obj/machinery/computer/rdservercontrol
/obj/item/weapon/circuitboard/computer/crew
name = "Crew Monitoring Console (Computer Board)"
build_path = /obj/machinery/computer/crew
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/mech_bay_power_console
name = "Mech Bay Power Control Console (Computer Board)"
build_path = /obj/machinery/computer/mech_bay_power_console
origin_tech = "programming=3;powerstorage=3"
/obj/item/weapon/circuitboard/computer/cargo
name = "Supply Console (Computer Board)"
build_path = /obj/machinery/computer/cargo
origin_tech = "programming=3"
var/contraband = FALSE
var/emagged = FALSE
/obj/item/weapon/circuitboard/computer/cargo/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/device/multitool))
if(!emagged)
contraband = !contraband
to_chat(user, "<span class='notice'>Receiver spectrum set to [contraband ? "Broad" : "Standard"].</span>")
else
to_chat(user, "<span class='notice'>The spectrum chip is unresponsive.</span>")
else if(istype(I, /obj/item/weapon/card/emag))
if(!emagged)
contraband = TRUE
emagged = TRUE
to_chat(user, "<span class='notice'>You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.</span>")
else
return ..()
/obj/item/weapon/circuitboard/computer/cargo/request
name = "Supply Request Console (Computer Board)"
build_path = /obj/machinery/computer/cargo/request
/obj/item/weapon/circuitboard/computer/stockexchange
name = "circuit board (Stock Exchange Console)"
build_path = /obj/machinery/computer/stockexchange
origin_tech = "programming=3"
/obj/item/weapon/circuitboard/computer/operating
name = "Operating Computer (Computer Board)"
build_path = /obj/machinery/computer/operating
origin_tech = "programming=2;biotech=3"
/obj/item/weapon/circuitboard/computer/mining
name = "Outpost Status Display (Computer Board)"
build_path = /obj/machinery/computer/security/mining
/obj/item/weapon/circuitboard/computer/comm_monitor
name = "Telecommunications Monitor (Computer Board)"
build_path = /obj/machinery/computer/telecomms/monitor
origin_tech = "programming=3;magnets=3;bluespace=2"
/obj/item/weapon/circuitboard/computer/comm_server
name = "Telecommunications Server Monitor (Computer Board)"
build_path = /obj/machinery/computer/telecomms/server
origin_tech = "programming=3;magnets=3;bluespace=2"
/obj/item/weapon/circuitboard/computer/shuttle
name = "Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle
var/shuttleId
var/possible_destinations = ""
/obj/item/weapon/circuitboard/computer/shuttle/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/device/multitool))
var/chosen_id = round(input(usr, "Choose an ID number (-1 for reset):", "Input an Integer", null) as num|null)
if(chosen_id >= 0)
shuttleId = chosen_id
else
shuttleId = initial(shuttleId)
else
return ..()
/obj/item/weapon/circuitboard/computer/labor_shuttle
name = "Labor Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/labor
/obj/item/weapon/circuitboard/computer/labor_shuttle/one_way
name = "Prisoner Shuttle Console (Computer Board)"
build_path = /obj/machinery/computer/shuttle/labor/one_way
/obj/item/weapon/circuitboard/computer/ferry
name = "Transport Ferry (Computer Board)"
build_path = /obj/machinery/computer/shuttle/ferry
/obj/item/weapon/circuitboard/computer/ferry/request
name = "Transport Ferry Console (Computer Board)"
build_path = /obj/machinery/computer/shuttle/ferry/request
/obj/item/weapon/circuitboard/computer/mining_shuttle
name = "Mining Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/mining
/obj/item/weapon/circuitboard/computer/white_ship
name = "White Ship (Computer Board)"
build_path = /obj/machinery/computer/shuttle/white_ship
/obj/item/weapon/circuitboard/computer/auxillary_base
name = "Auxillary Base Management Console (Computer Board)"
build_path = /obj/machinery/computer/auxillary_base
/obj/item/weapon/circuitboard/computer/holodeck// Not going to let people get this, but it's just here for future
name = "Holodeck Control (Computer Board)"
build_path = /obj/machinery/computer/holodeck
origin_tech = "programming=4"
/obj/item/weapon/circuitboard/computer/aifixer
name = "AI Integrity Restorer (Computer Board)"
build_path = /obj/machinery/computer/aifixer
origin_tech = "programming=2;biotech=2"
/*/obj/item/weapon/circuitboard/computer/prison_shuttle
name = "Prison Shuttle (Computer Board)"
build_path = /obj/machinery/computer/prison_shuttle*/
/obj/item/weapon/circuitboard/computer/slot_machine
name = "Slot Machine (Computer Board)"
build_path = /obj/machinery/computer/slot_machine
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/libraryconsole
name = "Library Visitor Console (Computer Board)"
build_path = /obj/machinery/computer/libraryconsole
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement)
name = "Library Visitor Console (Computer Board)"
build_path = /obj/machinery/computer/libraryconsole
to_chat(user, "<span class='notice'>Defaulting access protocols.</span>")
else
name = "Book Inventory Management Console (Computer Board)"
build_path = /obj/machinery/computer/libraryconsole/bookmanagement
to_chat(user, "<span class='notice'>Access protocols successfully updated.</span>")
else
return ..()
/obj/item/weapon/circuitboard/computer/apc_control
name = "\improper Power Flow Control Console (Computer Board)"
build_path = /obj/machinery/computer/apc_control
origin_tech = "programming=3;engineering=3;powerstorage=2"
..()
+2 -2
View File
@@ -571,8 +571,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
icon_screen = "idminor"
circuit = /obj/item/weapon/circuitboard/computer/card/minor
/obj/machinery/computer/card/minor/New()
..()
/obj/machinery/computer/card/minor/Initialize()
. = ..()
var/obj/item/weapon/circuitboard/computer/card/minor/typed_circuit = circuit
if(target_dept)
typed_circuit.target_dept = target_dept
+1 -1
View File
@@ -20,7 +20,7 @@
light_color = LIGHT_COLOR_BLUE
/obj/machinery/computer/cloning/Initialize()
..()
. = ..()
updatemodules(TRUE)
/obj/machinery/computer/cloning/Destroy()
@@ -41,9 +41,9 @@
return FALSE
return TRUE
/obj/machinery/computer/communications/New()
/obj/machinery/computer/communications/Initialize()
. = ..()
GLOB.shuttle_caller_list += src
..()
/obj/machinery/computer/communications/process()
if(..())
+7 -11
View File
@@ -53,17 +53,13 @@
else
return ..()
/obj/machinery/computer/scan_consolenew/New()
..()
spawn(5)
for(dir in list(NORTH,EAST,SOUTH,WEST))
connected = locate(/obj/machinery/dna_scannernew, get_step(src, dir))
if(!isnull(connected))
break
injectorready = world.time + INJECTOR_TIMEOUT
return
return
/obj/machinery/computer/scan_consolenew/Initialize()
. = ..()
for(dir in list(NORTH,EAST,SOUTH,WEST))
connected = locate(/obj/machinery/dna_scannernew, get_step(src, dir))
if(!isnull(connected))
break
injectorready = world.time + INJECTOR_TIMEOUT
/obj/machinery/computer/scan_consolenew/attack_hand(mob/user)
if(..())
@@ -15,9 +15,9 @@
light_color = LIGHT_COLOR_RED
/obj/machinery/computer/gulag_teleporter_computer/New()
..()
addtimer(CALLBACK(src, .proc/scan_machinery), 5)
/obj/machinery/computer/gulag_teleporter_computer/Initialize()
. = ..()
scan_machinery()
/obj/machinery/computer/gulag_teleporter_computer/Destroy()
if(id)
@@ -5,7 +5,3 @@
shuttleId = "pod1"
possible_destinations = "monastery_shuttle_asteroid;monastery_shuttle_station"
no_destination_swap = TRUE
/obj/item/weapon/circuitboard/computer/shuttle/monastery_shuttle
name = "Monastery Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/monastery_shuttle
+212
View File
@@ -0,0 +1,212 @@
/obj/machinery/computer/teleporter
name = "teleporter control console"
desc = "Used to control a linked teleportation Hub and Station."
icon_screen = "teleport"
icon_keyboard = "teleport_key"
light_color = LIGHT_COLOR_BLUE
circuit = /obj/item/weapon/circuitboard/computer/teleporter
var/obj/item/device/gps/locked
var/regime_set = "Teleporter"
var/id
var/obj/machinery/teleport/station/power_station
var/calibrating
var/turf/target //Used for one-time-use teleport cards (such as clown planet coordinates.)
//Setting this to 1 will set src.locked to null after a player enters the portal and will not allow hand-teles to open portals to that location.
/obj/machinery/computer/teleporter/Initialize()
. = ..()
id = "[rand(1000, 9999)]"
link_power_station()
/obj/machinery/computer/teleporter/Destroy()
if (power_station)
power_station.teleporter_console = null
power_station = null
return ..()
/obj/machinery/computer/teleporter/proc/link_power_station()
if(power_station)
return
for(dir in GLOB.cardinals)
power_station = locate(/obj/machinery/teleport/station, get_step(src, dir))
if(power_station)
break
return power_station
/obj/machinery/computer/teleporter/attackby(obj/I, mob/living/user, params)
if(istype(I, /obj/item/device/gps))
var/obj/item/device/gps/L = I
if(L.locked_location && !(stat & (NOPOWER|BROKEN)))
if(!user.transferItemToLoc(L, src))
to_chat(user, "<span class='warning'>\the [I] is stuck to your hand, you cannot put it in \the [src]!</span>")
return
locked = L
to_chat(user, "<span class='caution'>You insert the GPS device into the [name]'s slot.</span>")
else
return ..()
/obj/machinery/computer/teleporter/attack_ai(mob/user)
return attack_hand(user)
/obj/machinery/computer/teleporter/attack_hand(mob/user)
if(..())
return
interact(user)
/obj/machinery/computer/teleporter/interact(mob/user)
var/data = "<h3>Teleporter Status</h3>"
if(!power_station)
data += "<div class='statusDisplay'>No power station linked.</div>"
else if(!power_station.teleporter_hub)
data += "<div class='statusDisplay'>No hub linked.</div>"
else
data += "<div class='statusDisplay'>Current regime: [regime_set]<BR>"
data += "Current target: [(!target) ? "None" : "[get_area(target)] [(regime_set != "Gate") ? "" : "Teleporter"]"]<BR>"
if(calibrating)
data += "Calibration: <font color='yellow'>In Progress</font>"
else if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3)
data += "Calibration: <font color='green'>Optimal</font>"
else
data += "Calibration: <font color='red'>Sub-Optimal</font>"
data += "</div><BR>"
data += "<A href='?src=\ref[src];regimeset=1'>Change regime</A><BR>"
data += "<A href='?src=\ref[src];settarget=1'>Set target</A><BR>"
if(locked)
data += "<BR><A href='?src=\ref[src];locked=1'>Get target from memory</A><BR>"
data += "<A href='?src=\ref[src];eject=1'>Eject GPS device</A><BR>"
else
data += "<BR><span class='linkOff'>Get target from memory</span><BR>"
data += "<span class='linkOff'>Eject GPS device</span><BR>"
data += "<BR><A href='?src=\ref[src];calibrate=1'>Calibrate Hub</A>"
var/datum/browser/popup = new(user, "teleporter", name, 400, 400)
popup.set_content(data)
popup.open()
/obj/machinery/computer/teleporter/Topic(href, href_list)
if(..())
return
if(href_list["eject"])
eject()
updateDialog()
return
if(!check_hub_connection())
say("Error: Unable to detect hub.")
return
if(calibrating)
say("Error: Calibration in progress. Stand by.")
return
if(href_list["regimeset"])
power_station.engaged = 0
power_station.teleporter_hub.update_icon()
power_station.teleporter_hub.calibrated = 0
reset_regime()
if(href_list["settarget"])
power_station.engaged = 0
power_station.teleporter_hub.update_icon()
power_station.teleporter_hub.calibrated = 0
set_target(usr)
if(href_list["locked"])
power_station.engaged = 0
power_station.teleporter_hub.update_icon()
power_station.teleporter_hub.calibrated = 0
target = get_turf(locked.locked_location)
if(href_list["calibrate"])
if(!target)
say("Error: No target set to calibrate to.")
return
if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3)
say("Hub is already calibrated!")
return
say("Processing hub calibration to target...")
calibrating = 1
spawn(50 * (3 - power_station.teleporter_hub.accurate)) //Better parts mean faster calibration
calibrating = 0
if(check_hub_connection())
power_station.teleporter_hub.calibrated = 1
say("Calibration complete.")
else
say("Error: Unable to detect hub.")
updateDialog()
updateDialog()
/obj/machinery/computer/teleporter/proc/check_hub_connection()
if(!power_station)
return FALSE
if(!power_station.teleporter_hub)
return FALSE
return TRUE
/obj/machinery/computer/teleporter/proc/reset_regime()
target = null
if(regime_set == "Teleporter")
regime_set = "Gate"
else
regime_set = "Teleporter"
/obj/machinery/computer/teleporter/proc/eject()
if(locked)
locked.forceMove(get_turf(src))
locked = null
/obj/machinery/computer/teleporter/proc/set_target(mob/user)
var/list/L = list()
var/list/areaindex = list()
if(regime_set == "Teleporter")
for(var/obj/item/device/radio/beacon/R in GLOB.teleportbeacons)
var/turf/T = get_turf(R)
if(!T)
continue
if(T.z == ZLEVEL_CENTCOM || T.z > ZLEVEL_SPACEMAX)
continue
L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R
for(var/obj/item/weapon/implant/tracking/I in GLOB.tracked_implants)
if(!I.imp_in || !ismob(I.loc))
continue
else
var/mob/M = I.loc
if(M.stat == DEAD)
if(M.timeofdeath + 6000 < world.time)
continue
var/turf/T = get_turf(M)
if(!T)
continue
if(T.z == ZLEVEL_CENTCOM)
continue
L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I
var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L
target = L[desc]
else
var/list/S = power_station.linked_stations
if(!S.len)
to_chat(user, "<span class='alert'>No connected stations located.</span>")
return
for(var/obj/machinery/teleport/station/R in S)
var/turf/T = get_turf(R)
if(!T || !R.teleporter_hub || !R.teleporter_console)
continue
if(T.z == ZLEVEL_CENTCOM || T.z > ZLEVEL_SPACEMAX)
continue
L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R
var/desc = input("Please select a station to lock in.", "Locking Computer") as null|anything in L
target = L[desc]
if(target)
var/obj/machinery/teleport/station/trg = target
trg.linked_stations |= power_station
trg.stat &= ~NOPOWER
if(trg.teleporter_hub)
trg.teleporter_hub.stat &= ~NOPOWER
trg.teleporter_hub.update_icon()
if(trg.teleporter_console)
trg.teleporter_console.stat &= ~NOPOWER
trg.teleporter_console.update_icon()
+1 -49
View File
@@ -259,52 +259,4 @@
for(var/X in components)
var/obj/item/I = X
I.forceMove(loc)
..()
//Machine Frame Circuit Boards
/*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit,
micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells.
*/
/obj/item/weapon/circuitboard/machine
var/list/req_components = null
// Components required by the machine.
// Example: list(/obj/item/weapon/stock_parts/matter_bin = 5)
var/list/def_components = null
// Default replacements for req_components, to be used in apply_default_parts instead of req_components types
// Example: list(/obj/item/weapon/stock_parts/matter_bin = /obj/item/weapon/stock_parts/matter_bin/super)
/obj/item/weapon/circuitboard/machine/proc/apply_default_parts(obj/machinery/M)
if(!req_components)
return
M.component_parts = list(src) // List of components always contains a board
loc = null
for(var/comp_path in req_components)
var/comp_amt = req_components[comp_path]
if(!comp_amt)
continue
if(def_components && def_components[comp_path])
comp_path = def_components[comp_path]
if(ispath(comp_path, /obj/item/stack))
M.component_parts += new comp_path(null, comp_amt)
else
for(var/i in 1 to comp_amt)
M.component_parts += new comp_path(null)
M.RefreshParts()
/obj/item/weapon/circuitboard/machine/abductor
name = "alien board (Report This)"
icon_state = "abductor_mod"
origin_tech = "programming=5;abductor=3"
/obj/item/weapon/circuitboard/machine/clockwork
name = "clockwork board (Report This)"
icon_state = "clock_mod"
..()
+1 -1
View File
@@ -50,7 +50,7 @@
songs += T
/obj/machinery/disco/Initialize()
..()
. = ..()
selection = songs[1]
+2 -17
View File
@@ -4,32 +4,17 @@
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "scanner"
density = TRUE
var/locked = FALSE
anchored = TRUE
use_power = IDLE_POWER_USE
idle_power_usage = 50
active_power_usage = 300
occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/brain)
circuit = /obj/item/weapon/circuitboard/machine/clonescanner
var/locked = FALSE
var/damage_coeff
var/scan_level
var/precision_coeff
/obj/machinery/dna_scannernew/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonescanner(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/clonescanner
name = "Cloning Scanner (Machine Board)"
build_path = /obj/machinery/dna_scannernew
origin_tech = "programming=2;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/stack/sheet/glass = 1,
/obj/item/stack/cable_coil = 2)
/obj/machinery/dna_scannernew/RefreshParts()
scan_level = 0
damage_coeff = 0
+1 -1
View File
@@ -21,7 +21,7 @@
return ..()
/obj/machinery/door/airlock/alarmlock/Initialize()
..()
. = ..()
SSradio.remove_object(src, air_frequency)
air_connection = SSradio.add_object(src, air_frequency, GLOB.RADIO_TO_AIRALARM)
open()
+1 -1
View File
@@ -45,7 +45,7 @@
Radio.listening = 0
/obj/machinery/door_timer/Initialize()
..()
. = ..()
if(id != null)
for(var/obj/machinery/door/window/brigdoor/M in urange(20, src))
if (M.id == id)
+1 -1
View File
@@ -26,7 +26,7 @@
var/list/affecting_areas
/obj/machinery/door/firedoor/Initialize()
..()
. = ..()
CalculateAffectingAreas()
/obj/machinery/door/firedoor/examine(mob/user)
+2 -2
View File
@@ -11,8 +11,8 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
var/max_dist = 100
verb_say = "states coldly"
/obj/machinery/doppler_array/New()
..()
/obj/machinery/doppler_array/Initialize()
. = ..()
GLOB.doppler_arrays += src
/obj/machinery/doppler_array/Destroy()
+12 -21
View File
@@ -24,6 +24,7 @@
var/datum/material_container/materials
var/list/using_materials
var/starting_amount = 0
var/metal_cost = 1000
var/glass_cost = 1000
var/power_used = 1000
@@ -52,34 +53,27 @@
var/break_message = "lets out a tinny alarm before falling dark."
var/break_sound = 'sound/machines/warning-buzzer.ogg'
/obj/machinery/droneDispenser/New()
..()
obj_integrity = max_integrity
materials = new(src, list(MAT_METAL, MAT_GLASS),
MINERAL_MATERIAL_AMOUNT*MAX_STACK_SIZE*2)
/obj/machinery/droneDispenser/Initialize()
. = ..()
materials = new(src, list(MAT_METAL, MAT_GLASS), MINERAL_MATERIAL_AMOUNT*MAX_STACK_SIZE*2)
materials.insert_amount(starting_amount)
using_materials = list(MAT_METAL=metal_cost, MAT_GLASS=glass_cost)
/obj/machinery/droneDispenser/Destroy()
qdel(materials)
. = ..()
QDEL_NULL(materials)
return ..()
/obj/machinery/droneDispenser/preloaded/New()
..()
materials.insert_amount(5000)
/obj/machinery/droneDispenser/preloaded
starting_amount = 5000
/obj/machinery/droneDispenser/syndrone //Please forgive me
name = "syndrone shell dispenser"
desc = "A suspicious machine that will create Syndicate \
exterminator drones when supplied with metal and glass. Disgusting."
desc = "A suspicious machine that will create Syndicate exterminator drones when supplied with metal and glass. Disgusting."
dispense_type = /obj/item/drone_shell/syndrone
//If we're gonna be a jackass, go the full mile - 10 second recharge timer
cooldownTime = 100
end_create_message = "dispenses a suspicious drone shell."
/obj/machinery/droneDispenser/syndrone/New()
..()
materials.insert_amount(25000)
starting_amount = 25000
/obj/machinery/droneDispenser/syndrone/badass //Please forgive me
name = "badass syndrone shell dispenser"
@@ -101,10 +95,7 @@
metal_cost = 2000
glass_cost = 2000
power_used = 2000
/obj/machinery/droneDispenser/snowflake/preloaded/New()
..()
materials.insert_amount(10000)
starting_amount = 10000
// An example of a custom drone dispenser.
// This one requires no materials and creates basic hivebots
@@ -220,7 +220,7 @@
var/sanitize_external
/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload)
..()
. = ..()
if(!mapload)
return
@@ -77,7 +77,7 @@
return ..()
/obj/machinery/embedded_controller/radio/Initialize()
..()
. = ..()
set_frequency(frequency)
/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal)
@@ -52,8 +52,7 @@
var/airpump_tag
/obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload)
..()
. = ..()
if(!mapload)
return
var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new
+8 -10
View File
@@ -5,15 +5,15 @@
desc = "A wall-mounted flashbulb device."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "mflash1"
var/obj/item/device/assembly/flash/handheld/bulb = null
max_integrity = 250
integrity_failure = 100
anchored = TRUE
var/obj/item/device/assembly/flash/handheld/bulb
var/id = null
var/range = 2 //this is roughly the size of brig cell
var/last_flash = 0 //Don't want it getting spammed like regular flashes
var/strength = 100 //How knocked down targets are when flashed.
var/base_state = "mflash"
max_integrity = 250
integrity_failure = 100
anchored = TRUE
/obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored
name = "portable flasher"
@@ -24,19 +24,17 @@
base_state = "pflash"
density = TRUE
/obj/machinery/flasher/New(loc, ndir = 0, built = 0)
..() // ..() is EXTREMELY IMPORTANT, never forget to add it
/obj/machinery/flasher/Initialize(mapload, ndir = 0, built = 0)
. = ..() // ..() is EXTREMELY IMPORTANT, never forget to add it
if(built)
setDir(ndir)
pixel_x = (dir & 3)? 0 : (dir == 4 ? -28 : 28)
pixel_y = (dir & 3)? (dir ==1 ? -28 : 28) : 0
else
bulb = new /obj/item/device/assembly/flash/handheld(src)
bulb = new(src)
/obj/machinery/flasher/Destroy()
if(bulb)
qdel(bulb)
bulb = null
QDEL_NULL(bulb)
return ..()
/obj/machinery/flasher/power_change()
+14 -17
View File
@@ -17,25 +17,23 @@ The console is located at computer/gulag_teleporter.dm
use_power = IDLE_POWER_USE
idle_power_usage = 200
active_power_usage = 5000
circuit = /obj/item/weapon/circuitboard/machine/gulag_teleporter
var/locked = FALSE
var/jumpsuit_type = /obj/item/clothing/under/rank/prisoner
var/shoes_type = /obj/item/clothing/shoes/sneakers/orange
var/obj/machinery/gulag_item_reclaimer/linked_reclaimer = null
var/list/required_items
var/obj/machinery/gulag_item_reclaimer/linked_reclaimer
var/static/list/telegulag_required_items = typecacheof(list(
/obj/item/weapon/implant,
/obj/item/clothing/suit/space/eva/plasmaman,
/obj/item/clothing/under/plasmaman,
/obj/item/clothing/head/helmet/space/plasmaman,
/obj/item/weapon/tank/internals,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/gas))
/obj/machinery/gulag_teleporter/New()
..()
required_items = typecacheof(list(
/obj/item/weapon/implant,
/obj/item/clothing/suit/space/eva/plasmaman,
/obj/item/clothing/under/plasmaman,
/obj/item/clothing/head/helmet/space/plasmaman,
/obj/item/weapon/tank/internals,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/gas))
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/gulag_teleporter(null)
B.apply_default_parts(src)
addtimer(CALLBACK(src, .proc/locate_reclaimer), 5)
/obj/machinery/gulag_teleporter/Initialize()
. = ..()
locate_reclaimer()
/obj/machinery/gulag_teleporter/Destroy()
if(linked_reclaimer)
@@ -46,7 +44,6 @@ The console is located at computer/gulag_teleporter.dm
..()
update_icon()
/obj/machinery/gulag_teleporter/interact(mob/user)
if(locked)
to_chat(user, "[src] is locked.")
@@ -138,7 +135,7 @@ The console is located at computer/gulag_teleporter.dm
linked_reclaimer.stored_items[occupant] = list()
var/mob/living/mob_occupant = occupant
for(var/obj/item/W in mob_occupant)
if(!is_type_in_typecache(W, required_items) && mob_occupant.temporarilyRemoveItemFromInventory(W))
if(!is_type_in_typecache(W, telegulag_required_items) && mob_occupant.temporarilyRemoveItemFromInventory(W))
if(istype(W, /obj/item/weapon/restraints/handcuffs))
W.forceMove(get_turf(src))
continue
+2 -9
View File
@@ -40,6 +40,7 @@ Possible to do for anyone motivated enough:
active_power_usage = 100
max_integrity = 300
armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0)
circuit = /obj/item/weapon/circuitboard/machine/holopad
var/list/masters = list()//List of living mobs that use the holopad
var/last_request = 0 //to prevent request spam. ~Carn
var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating.
@@ -51,8 +52,6 @@ Possible to do for anyone motivated enough:
/obj/machinery/holopad/Initialize()
. = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/holopad(null)
B.apply_default_parts(src)
holopads += src
/obj/machinery/holopad/Destroy()
@@ -293,7 +292,7 @@ Possible to do for anyone motivated enough:
Hologram.Impersonation = user
Hologram.copy_known_languages_from(user,replace = TRUE)
Hologram.mouse_opacity = 0//So you can't click on it.
Hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it.
Hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them.
Hologram.anchored = TRUE//So space wind cannot drag it.
Hologram.name = "[user.name] (Hologram)"//If someone decides to right click.
@@ -384,11 +383,5 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
return Impersonation.examine(user)
return ..()
/obj/item/weapon/circuitboard/machine/holopad
name = "AI Holopad (Machine Board)"
build_path = /obj/machinery/holopad
origin_tech = "programming=1"
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
#undef HOLOPAD_PASSIVE_POWER_USAGE
#undef HOLOGRAM_POWER_USAGE
+5 -6
View File
@@ -36,8 +36,8 @@
location.hotspot_expose(1000,500,1)
return 1
/obj/machinery/igniter/New()
..()
/obj/machinery/igniter/Initialize()
. = ..()
icon_state = "igniter[on]"
/obj/machinery/igniter/power_change()
@@ -61,15 +61,14 @@
anchored = TRUE
resistance_flags = FIRE_PROOF
/obj/machinery/sparker/New()
..()
/obj/machinery/sparker/Initialize()
. = ..()
spark_system = new /datum/effect_system/spark_spread
spark_system.set_up(2, 1, src)
spark_system.attach(src)
/obj/machinery/sparker/Destroy()
qdel(spark_system)
spark_system = null
QDEL_NULL(spark_system)
return ..()
/obj/machinery/sparker/power_change()
+1 -1
View File
@@ -15,7 +15,7 @@
/obj/item/weapon/reagent_containers/glass)
/obj/machinery/iv_drip/Initialize()
..()
. = ..()
update_icon()
drip_containers = typecacheof(drip_containers)
+10
View File
@@ -0,0 +1,10 @@
diff a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm (rejected hunks)
@@ -15,7 +15,7 @@
/obj/item/weapon/reagent_containers/glass)
/obj/machinery/iv_drip/Initialize()
- ..()
+ . = ..()
update_icon()
drip_containers = typecacheof(drip_containers)
+2 -17
View File
@@ -8,6 +8,7 @@
use_power = TRUE
idle_power_usage = 200
active_power_usage = 2500
circuit = /obj/item/weapon/circuitboard/machine/launchpad
var/stationary = TRUE //to prevent briefcase pad deconstruction and such
var/display_name = "Launchpad"
var/teleport_speed = 35
@@ -17,20 +18,6 @@
var/x_offset = 0
var/y_offset = 0
/obj/machinery/launchpad/Initialize()
. = ..()
var/obj/item/weapon/circuitboard/machine/launchpad/B = new
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/launchpad
name = "Bluespace Launchpad (Machine Board)"
build_path = /obj/machinery/launchpad
origin_tech = "programming=3;engineering=3;plasmatech=2;bluespace=3"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial)
/obj/machinery/launchpad/RefreshParts()
var/E = -1 //to make default parts have the base value
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
@@ -171,9 +158,7 @@
qdel(src)
/obj/machinery/launchpad/briefcase/Destroy()
if(!QDELETED(briefcase))
qdel(briefcase)
briefcase = null
QDEL_NULL(briefcase)
return ..()
/obj/machinery/launchpad/briefcase/isAvailable()
+1 -1
View File
@@ -12,7 +12,7 @@
// luminosity = 1
/obj/machinery/light_switch/Initialize()
..()
. = ..()
area = get_area(src)
if(otherarea)
+6 -18
View File
@@ -11,21 +11,20 @@
icon_state = "limbgrower_idleoff"
density = TRUE
container_type = OPENCONTAINER
var/operating = FALSE
anchored = TRUE
use_power = IDLE_POWER_USE
var/disabled = 0
idle_power_usage = 10
active_power_usage = 100
circuit = /obj/item/weapon/circuitboard/machine/limbgrower
var/operating = FALSE
var/disabled = FALSE
var/busy = FALSE
var/prod_coeff = 1
var/datum/design/being_built
var/datum/research/files
var/selected_category
var/screen = 1
var/list/categories = list(
"human",
"lizard",
@@ -33,22 +32,11 @@
"special"
)
/obj/machinery/limbgrower/New()
..()
/obj/machinery/limbgrower/Initialize()
. = ..()
create_reagents(0)
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/limbgrower(null)
B.apply_default_parts(src)
files = new /datum/research/limbgrower(src)
/obj/item/weapon/circuitboard/machine/limbgrower
name = "Limb Grower (Machine Board)"
build_path = /obj/machinery/limbgrower
origin_tech = "programming=2;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/reagent_containers/glass/beaker = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/machinery/limbgrower/interact(mob/user)
if(!is_operational())
return
+9 -16
View File
@@ -5,7 +5,6 @@
// This was created for firing ranges, but I suppose this could have other applications - Doohl
/obj/machinery/magnetic_module
icon = 'icons/obj/objects.dmi'
icon_state = "floor_magnet-f"
name = "electromagnetic generator"
@@ -29,22 +28,21 @@
var/center_y = 0
var/max_dist = 20 // absolute value of center_x,y cannot exceed this integer
/obj/machinery/magnetic_module/New()
/obj/machinery/magnetic_module/Initialize()
..()
var/turf/T = loc
hide(T.intact)
center = T
SSradio.add_object(src, freq, GLOB.RADIO_MAGNETS)
return INITIALIZE_HINT_LATELOAD
spawn(10) // must wait for map loading to finish
SSradio.add_object(src, freq, GLOB.RADIO_MAGNETS)
spawn()
magnetic_process()
/obj/machinery/magnetic_module/LateInitialize()
magnetic_process()
/obj/machinery/magnetic_module/Destroy()
SSradio.remove_object(src, freq)
. = ..()
center = null
return ..()
// update the invisibility and icon
/obj/machinery/magnetic_module/hide(intact)
@@ -216,27 +214,22 @@
var/datum/radio_frequency/radio_connection
/obj/machinery/magnetic_controller/New()
/obj/machinery/magnetic_controller/Initialize()
..()
if(autolink)
for(var/obj/machinery/magnetic_module/M in GLOB.machines)
if(M.freq == frequency && M.code == code)
magnets.Add(M)
spawn(45) // must wait for map loading to finish
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_MAGNETS)
if(path) // check for default path
filter_path() // renders rpath
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_MAGNETS)
/obj/machinery/magnetic_controller/Destroy()
SSradio.remove_object(src, frequency)
magnets = null
rpath = null
. = ..()
return ..()
/obj/machinery/magnetic_controller/process()
if(magnets.len == 0 && autolink)
+2 -2
View File
@@ -22,8 +22,8 @@
req_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS)
/obj/machinery/navbeacon/New()
..()
/obj/machinery/navbeacon/Initialize()
. = ..()
set_codes()
+3 -4
View File
@@ -197,16 +197,15 @@ GLOBAL_LIST_EMPTY(allCasters)
name = "security newscaster"
securityCaster = 1
/obj/machinery/newscaster/New(loc, ndir, building)
..()
/obj/machinery/newscaster/Initialize(mapload, ndir, building)
. = ..()
if(building)
setDir(ndir)
pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32)
pixel_y = (dir & 3)? (dir ==1 ? -32 : 32) : 0
GLOB.allCasters += src
for(var/obj/machinery/newscaster/NEWSCASTER in GLOB.allCasters)
unit_no++
unit_no = GLOB.allCasters.len
update_icon()
/obj/machinery/newscaster/Destroy()
@@ -72,8 +72,8 @@
var/obj/machinery/turretid/cp = null
/obj/machinery/porta_turret/New(loc)
..()
/obj/machinery/porta_turret/Initialize()
. = ..()
if(!base)
base = src
update_icon()
@@ -143,18 +143,13 @@
/obj/machinery/porta_turret/Destroy()
//deletes its own cover with it
if(cover)
qdel(cover)
cover = null
QDEL_NULL(cover)
base = null
if(cp)
cp.turrets -= src
cp = null
if(stored_gun)
qdel(stored_gun)
stored_gun = null
qdel(spark_system)
spark_system = null
QDEL_NULL(stored_gun)
QDEL_NULL(spark_system)
return ..()
@@ -602,8 +597,8 @@
/obj/machinery/porta_turret/aux_base/interact(mob/user) //Controlled solely from the base console.
return
/obj/machinery/porta_turret/aux_base/New()
..()
/obj/machinery/porta_turret/aux_base/Initialize()
. = ..()
cover.name = name
cover.desc = desc
@@ -650,8 +645,8 @@
var/list/obj/machinery/porta_turret/turrets = list()
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
/obj/machinery/turretid/New(loc, ndir = 0, built = 0)
..()
/obj/machinery/turretid/Initialize(mapload, ndir = 0, built = 0)
. = ..()
if(built)
setDir(ndir)
locked = FALSE
@@ -664,7 +659,7 @@
return ..()
/obj/machinery/turretid/Initialize(mapload) //map-placed turrets autolink turrets
..()
. = ..()
if(!mapload)
return
if(control_area && istext(control_area))
@@ -682,7 +677,8 @@
T.cp = src
/obj/machinery/turretid/attackby(obj/item/I, mob/user, params)
if(stat & BROKEN) return
if(stat & BROKEN)
return
if (istype(I, /obj/item/device/multitool))
var/obj/item/device/multitool/M = I
@@ -0,0 +1,10 @@
diff a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm (rejected hunks)
@@ -664,7 +659,7 @@
return ..()
/obj/machinery/turretid/Initialize(mapload) //map-placed turrets autolink turrets
- ..()
+ . = ..()
if(!mapload)
return
+2 -17
View File
@@ -8,28 +8,13 @@
idle_power_usage = 200
active_power_usage = 5000
unique_rename = 1
circuit = /obj/item/weapon/circuitboard/machine/quantumpad
var/teleport_cooldown = 400 //30 seconds base due to base parts
var/teleport_speed = 50
var/last_teleport //to handle the cooldown
var/teleporting = 0 //if it's in the process of teleporting
var/power_efficiency = 1
var/obj/machinery/quantumpad/linked_pad = null
/obj/machinery/quantumpad/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/quantumpad(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/quantumpad
name = "Quantum Pad (Machine Board)"
build_path = /obj/machinery/quantumpad
origin_tech = "programming=3;engineering=3;plasmatech=3;bluespace=4"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 1,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/stack/cable_coil = 1)
def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial)
var/obj/machinery/quantumpad/linked_pad
/obj/machinery/quantumpad/RefreshParts()
var/E = 0
+6 -12
View File
@@ -7,20 +7,14 @@
use_power = IDLE_POWER_USE
idle_power_usage = 4
active_power_usage = 250
circuit = /obj/item/weapon/circuitboard/machine/recharger
var/obj/item/charging = null
var/static/list/allowed_devices = typecacheof(list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/ammo_box/magazine/recharge, /obj/item/device/modular_computer))
var/recharge_coeff = 1
/obj/machinery/recharger/Initialize()
. = ..()
var/obj/item/weapon/circuitboard/machine/recharger/B = new()
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/recharger
name = "Weapon Recharger (Machine Board)"
build_path = /obj/machinery/recharger
origin_tech = "powerstorage=4;engineering=3;materials=4"
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
var/static/list/allowed_devices = typecacheof(list(
/obj/item/weapon/gun/energy,
/obj/item/weapon/melee/baton,
/obj/item/ammo_box/magazine/recharge,
/obj/item/device/modular_computer))
/obj/machinery/recharger/RefreshParts()
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
+4 -16
View File
@@ -8,27 +8,15 @@
idle_power_usage = 5
active_power_usage = 1000
req_access = list(ACCESS_ROBOTICS)
state_open = TRUE
circuit = /obj/item/weapon/circuitboard/machine/cyborgrecharger
var/recharge_speed
var/repairs
state_open = TRUE
/obj/machinery/recharge_station/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/cyborgrecharger(null)
B.apply_default_parts(src)
/obj/machinery/recharge_station/Initialize()
. = ..()
update_icon()
/obj/item/weapon/circuitboard/machine/cyborgrecharger
name = "Cyborg Recharger (Machine Board)"
build_path = /obj/machinery/recharge_station
origin_tech = "powerstorage=3;engineering=3"
req_components = list(
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/cell = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
def_components = list(
/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high)
/obj/machinery/recharge_station/RefreshParts()
recharge_speed = 0
repairs = 0
+3 -12
View File
@@ -8,6 +8,7 @@
layer = ABOVE_ALL_MOB_LAYER // Overhead
anchored = TRUE
density = TRUE
circuit = /obj/item/weapon/circuitboard/machine/recycler
var/safety_mode = FALSE // Temporarily stops machine if it detects a mob
var/icon_name = "grinder-o"
var/blood = 0
@@ -18,20 +19,10 @@
var/eat_victim_items = TRUE
var/item_recycle_sound = 'sound/items/welder.ogg'
/obj/machinery/recycler/New()
..()
/obj/machinery/recycler/Initialize()
materials = new /datum/material_container(src, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM))
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/recycler(null)
B.apply_default_parts(src)
update_icon()
/obj/item/weapon/circuitboard/machine/recycler
name = "Recycler (Machine Board)"
build_path = /obj/machinery/recycler
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
return ..()
/obj/machinery/recycler/RefreshParts()
var/amt_made = 0
+1 -1
View File
@@ -88,7 +88,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
icon_state = "req_comp0"
/obj/machinery/requests_console/Initialize()
..()
. = ..()
name = "\improper [department] requests console"
GLOB.allConsoles += src
switch(departmentType)
+1 -1
View File
@@ -58,7 +58,7 @@
desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals"
color = "#FF0000"
max_integrity = 20
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/structure/emergency_shield/invoker/emp_act(severity)
return
+1 -1
View File
@@ -34,7 +34,7 @@
light_color = LIGHT_COLOR_BROWN
/obj/machinery/computer/slot_machine/Initialize()
..()
. = ..()
jackpots = rand(1, 4) //false hope
plays = rand(75, 200)
+3 -13
View File
@@ -12,6 +12,7 @@
desc = "Made by Space Amish using traditional space techniques, this heater/cooler is guaranteed not to set the station on fire."
max_integrity = 250
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 10)
circuit = /obj/item/weapon/circuitboard/machine/space_heater
var/obj/item/weapon/stock_parts/cell/cell
var/on = FALSE
var/mode = HEATER_MODE_STANDBY
@@ -26,22 +27,11 @@
/obj/machinery/space_heater/get_cell()
return cell
/obj/machinery/space_heater/New()
..()
/obj/machinery/space_heater/Initialize()
. = ..()
cell = new(src)
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/space_heater(null)
B.apply_default_parts(src)
update_icon()
/obj/item/weapon/circuitboard/machine/space_heater
name = "Space Heater (Machine Board)"
build_path = /obj/machinery/space_heater
origin_tech = "programming=2;engineering=2;plasmatech=2"
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/stack/cable_coil = 3)
/obj/machinery/space_heater/on_construction()
qdel(cell)
cell = null
+6 -14
View File
@@ -101,8 +101,8 @@
mask_type = /obj/item/clothing/mask/breath
storage_type = /obj/item/weapon/tank/internals/emergency_oxygen/double
/obj/machinery/suit_storage_unit/New()
..()
/obj/machinery/suit_storage_unit/Initialize()
. = ..()
wires = new /datum/wires/suit_storage_unit(src)
if(suit_type)
suit = new suit_type(src)
@@ -115,18 +115,10 @@
update_icon()
/obj/machinery/suit_storage_unit/Destroy()
if(suit)
qdel(suit)
suit = null
if(helmet)
qdel(helmet)
helmet = null
if(mask)
qdel(mask)
mask = null
if(storage)
qdel(storage)
storage = null
QDEL_NULL(suit)
QDEL_NULL(helmet)
QDEL_NULL(mask)
QDEL_NULL(storage)
return ..()
/obj/machinery/suit_storage_unit/update_icon()
+6 -9
View File
@@ -82,22 +82,19 @@
countdown.stop()
STOP_PROCESSING(SSfastprocess, src)
/obj/machinery/syndicatebomb/New()
/obj/machinery/syndicatebomb/Initialize()
. = ..()
wires = new /datum/wires/syndicatebomb(src)
if(src.payload)
if(payload)
payload = new payload(src)
update_icon()
countdown = new(src)
..()
/obj/machinery/syndicatebomb/Destroy()
qdel(wires)
wires = null
if(countdown)
qdel(countdown)
countdown = null
QDEL_NULL(wires)
QDEL_NULL(countdown)
STOP_PROCESSING(SSfastprocess, src)
. = ..()
return ..()
/obj/machinery/syndicatebomb/examine(mob/user)
..()
@@ -17,8 +17,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
use_power = IDLE_POWER_USE
idle_power_usage = 25
machinetype = 5
/*heatgen = 0
delay = 7*/
circuit = /obj/item/weapon/circuitboard/machine/telecomms/broadcaster
/obj/machinery/telecomms/broadcaster/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
// Don't broadcast rejected signals
@@ -82,22 +81,6 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
/* --- Do a snazzy animation! --- */
flick("broadcaster_send", src)
/obj/machinery/telecomms/broadcaster/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/broadcaster(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/telecomms/broadcaster
name = "Subspace Broadcaster (Machine Board)"
build_path = /obj/machinery/telecomms/broadcaster
origin_tech = "programming=2;engineering=2;bluespace=1"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/subspace/crystal = 1,
/obj/item/weapon/stock_parts/micro_laser = 2)
/obj/machinery/telecomms/broadcaster/Destroy()
// In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore.
if(GLOB.message_delay)
+3 -21
View File
@@ -17,8 +17,8 @@
use_power = IDLE_POWER_USE
idle_power_usage = 50
machinetype = 2
//heatgen = 20
netspeed = 40
circuit = /obj/item/weapon/circuitboard/machine/telecomms/bus
var/change_frequency = 0
/obj/machinery/telecomms/bus/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
@@ -49,24 +49,6 @@
if(can_send)
break
/obj/machinery/telecomms/bus/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/bus(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/telecomms/bus
name = "Bus Mainframe (Machine Board)"
build_path = /obj/machinery/telecomms/bus
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1)
//Preset Buses
/obj/machinery/telecomms/bus/preset_one
@@ -93,10 +75,10 @@
freq_listening = list(GLOB.ENG_FREQ)
autolinkers = list("processor4", "engineering", "common")
/obj/machinery/telecomms/bus/preset_four/New()
/obj/machinery/telecomms/bus/preset_four/Initialize()
. = ..()
for(var/i = 1441, i < 1489, i += 2)
freq_listening |= i
..()
/obj/machinery/telecomms/bus/preset_one/birdstation
name = "Bus"
+1 -19
View File
@@ -18,10 +18,9 @@
use_power = IDLE_POWER_USE
idle_power_usage = 80
machinetype = 7
//heatgen = 40
long_range_link = 1
netspeed = 40
circuit = /obj/item/weapon/circuitboard/machine/telecomms/hub
/obj/machinery/telecomms/hub/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(is_freq_listening(signal))
@@ -33,23 +32,6 @@
relay_information(signal, "/obj/machinery/telecomms/relay", 1)
relay_information(signal, "/obj/machinery/telecomms/broadcaster", 1) // Send it to a broadcaster.
/obj/machinery/telecomms/hub/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/hub(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/telecomms/hub
name = "Hub Mainframe (Machine Board)"
build_path = /obj/machinery/telecomms/hub
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/filter = 2)
//Preset HUB
/obj/machinery/telecomms/hub/preset
@@ -16,8 +16,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 30
machinetype = 3
//heatgen = 100
//delay = 5
circuit = /obj/item/weapon/circuitboard/machine/telecomms/processor
var/process_mode = 1 // 1 = Uncompress Signals, 0 = Compress Signals
/obj/machinery/telecomms/processor/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
@@ -35,24 +34,6 @@
signal.data["slow"] += rand(5, 10) // slow the signal down
relay_information(signal, "/obj/machinery/telecomms/server")
/obj/machinery/telecomms/processor/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/processor(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/telecomms/processor
name = "Processor Unit (Machine Board)"
build_path = /obj/machinery/telecomms/processor
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 3,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/subspace/treatment = 2,
/obj/item/weapon/stock_parts/subspace/analyzer = 1,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/amplifier = 1)
//Preset Processors
/obj/machinery/telecomms/processor/preset_one
@@ -16,7 +16,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 30
machinetype = 1
//heatgen = 0
circuit = /obj/item/weapon/circuitboard/machine/telecomms/receiver
/obj/machinery/telecomms/receiver/receive_signal(datum/signal/signal)
@@ -50,25 +50,6 @@
return 0
return 1
/obj/machinery/telecomms/receiver/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/receiver(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/telecomms/receiver
name = "Subspace Receiver (Machine Board)"
build_path = /obj/machinery/telecomms/receiver
origin_tech = "programming=2;engineering=2;bluespace=1"
req_components = list(
/obj/item/weapon/stock_parts/subspace/ansible = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/stock_parts/micro_laser = 1)
//Preset Receivers
//--PRESET LEFT--//
@@ -89,10 +70,10 @@
freq_listening = list(GLOB.COMM_FREQ, GLOB.ENG_FREQ, GLOB.SEC_FREQ) //command, engineering, security
//Common and other radio frequencies for people to freely use
/obj/machinery/telecomms/receiver/preset_right/New()
/obj/machinery/telecomms/receiver/preset_right/Initialize()
. = ..()
for(var/i = 1441, i < 1489, i += 2)
freq_listening |= i
..()
/obj/machinery/telecomms/receiver/preset_left/birdstation
name = "Receiver"
@@ -15,9 +15,9 @@
use_power = IDLE_POWER_USE
idle_power_usage = 30
machinetype = 8
//heatgen = 0
netspeed = 5
long_range_link = 1
circuit = /obj/item/weapon/circuitboard/machine/telecomms/relay
var/broadcasting = 1
var/receiving = 1
@@ -45,22 +45,6 @@
return FALSE
return receiving
/obj/machinery/telecomms/relay/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/relay(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/telecomms/relay
name = "Relay Mainframe (Machine Board)"
build_path = /obj/machinery/telecomms/relay
origin_tech = "programming=2;engineering=2;bluespace=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/filter = 2)
//Preset Relay
/obj/machinery/telecomms/relay/preset
@@ -16,7 +16,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 15
machinetype = 4
//heatgen = 50
circuit = /obj/item/weapon/circuitboard/machine/telecomms/server
var/list/log_entries = list()
var/list/stored_names = list()
var/list/TrafficActions = list()
@@ -32,20 +32,9 @@
var/obj/item/device/radio/headset/server_radio = null
var/last_signal = 0 // Last time it sent a signal
/obj/machinery/telecomms/server/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/telecomms/server(null)
B.apply_default_parts(src)
server_radio = new()
/obj/item/weapon/circuitboard/machine/telecomms/server
name = "Telecommunication Server (Machine Board)"
build_path = /obj/machinery/telecomms/server
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/machinery/telecomms/server/Initialize()
. = ..()
server_radio = new
/obj/machinery/telecomms/server/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(signal.data["message"])
@@ -135,8 +124,8 @@
/obj/machinery/telecomms/server/presets
network = "tcommsat"
/obj/machinery/telecomms/server/presets/New()
..()
/obj/machinery/telecomms/server/presets/Initialize()
. = ..()
name = id
@@ -167,10 +156,10 @@
//Common and other radio frequencies for people to freely use
// 1441 to 1489
/obj/machinery/telecomms/server/presets/common/New()
/obj/machinery/telecomms/server/presets/common/Initialize()
. = ..()
for(var/i = 1441, i < 1489, i += 2)
freq_listening |= i
..()
/obj/machinery/telecomms/server/presets/command
id = "Command Server"
@@ -187,6 +176,6 @@
freq_listening = list(GLOB.SEC_FREQ)
autolinkers = list("security")
/obj/machinery/telecomms/server/presets/common/birdstation/New()
..()
/obj/machinery/telecomms/server/presets/common/birdstation/Initialize()
. = ..()
freq_listening = list()
@@ -16,6 +16,7 @@ GLOBAL_LIST_EMPTY(telecomms_list)
/obj/machinery/telecomms
icon = 'icons/obj/machines/telecomms.dmi'
critical_machine = TRUE
var/list/links = list() // list of machines this machine is linked to
var/traffic = 0 // value increases as traffic increases
var/netspeed = 5 // how much traffic to lose per tick (50 gigabytes/second * netspeed)
@@ -31,7 +32,6 @@ GLOBAL_LIST_EMPTY(telecomms_list)
var/long_range_link = 0 // Can you link it across Z levels or on the otherside of the map? (Relay & Hub)
var/hide = 0 // Is it a hidden machine?
var/listening_level = 0 // 0 = auto set in New() - this is the z level that the machine is listening to.
critical_machine = TRUE
/obj/machinery/telecomms/proc/relay_information(datum/signal/signal, filter, copysig, amount = 20)
@@ -144,7 +144,7 @@ GLOBAL_LIST_EMPTY(telecomms_list)
listening_level = position.z
/obj/machinery/telecomms/Initialize(mapload)
..()
. = ..()
if(mapload && autolinkers.len)
// Links nearby machines
if(!long_range_link)
+8 -253
View File
@@ -1,221 +1,3 @@
/obj/machinery/computer/teleporter
name = "teleporter control console"
desc = "Used to control a linked teleportation Hub and Station."
icon_screen = "teleport"
icon_keyboard = "teleport_key"
circuit = /obj/item/weapon/circuitboard/computer/teleporter
var/obj/item/device/gps/locked = null
var/regime_set = "Teleporter"
var/id = null
var/obj/machinery/teleport/station/power_station
var/calibrating
var/turf/target //Used for one-time-use teleport cards (such as clown planet coordinates.)
//Setting this to 1 will set src.locked to null after a player enters the portal and will not allow hand-teles to open portals to that location.
light_color = LIGHT_COLOR_BLUE
/obj/machinery/computer/teleporter/New()
src.id = "[rand(1000, 9999)]"
..()
/obj/machinery/computer/teleporter/Initialize()
..()
link_power_station()
/obj/machinery/computer/teleporter/Destroy()
if (power_station)
power_station.teleporter_console = null
power_station = null
return ..()
/obj/machinery/computer/teleporter/proc/link_power_station()
if(power_station)
return
for(dir in list(NORTH,EAST,SOUTH,WEST))
power_station = locate(/obj/machinery/teleport/station, get_step(src, dir))
if(power_station)
break
return power_station
/obj/machinery/computer/teleporter/attackby(obj/I, mob/living/user, params)
if(istype(I, /obj/item/device/gps))
var/obj/item/device/gps/L = I
if(L.locked_location && !(stat & (NOPOWER|BROKEN)))
if(!user.transferItemToLoc(L, src))
to_chat(user, "<span class='warning'>\the [I] is stuck to your hand, you cannot put it in \the [src]!</span>")
return
locked = L
to_chat(user, "<span class='caution'>You insert the GPS device into the [name]'s slot.</span>")
else
return ..()
/obj/machinery/computer/teleporter/attack_ai(mob/user)
src.attack_hand(user)
/obj/machinery/computer/teleporter/attack_hand(mob/user)
if(..())
return
interact(user)
/obj/machinery/computer/teleporter/interact(mob/user)
var/data = "<h3>Teleporter Status</h3>"
if(!power_station)
data += "<div class='statusDisplay'>No power station linked.</div>"
else if(!power_station.teleporter_hub)
data += "<div class='statusDisplay'>No hub linked.</div>"
else
data += "<div class='statusDisplay'>Current regime: [regime_set]<BR>"
data += "Current target: [(!target) ? "None" : "[get_area(target)] [(regime_set != "Gate") ? "" : "Teleporter"]"]<BR>"
if(calibrating)
data += "Calibration: <font color='yellow'>In Progress</font>"
else if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3)
data += "Calibration: <font color='green'>Optimal</font>"
else
data += "Calibration: <font color='red'>Sub-Optimal</font>"
data += "</div><BR>"
data += "<A href='?src=\ref[src];regimeset=1'>Change regime</A><BR>"
data += "<A href='?src=\ref[src];settarget=1'>Set target</A><BR>"
if(locked)
data += "<BR><A href='?src=\ref[src];locked=1'>Get target from memory</A><BR>"
data += "<A href='?src=\ref[src];eject=1'>Eject GPS device</A><BR>"
else
data += "<BR><span class='linkOff'>Get target from memory</span><BR>"
data += "<span class='linkOff'>Eject GPS device</span><BR>"
data += "<BR><A href='?src=\ref[src];calibrate=1'>Calibrate Hub</A>"
var/datum/browser/popup = new(user, "teleporter", name, 400, 400)
popup.set_content(data)
popup.open()
return
/obj/machinery/computer/teleporter/Topic(href, href_list)
if(..())
return
if(href_list["eject"])
eject()
updateDialog()
return
if(!check_hub_connection())
say("Error: Unable to detect hub.")
return
if(calibrating)
say("Error: Calibration in progress. Stand by.")
return
if(href_list["regimeset"])
power_station.engaged = 0
power_station.teleporter_hub.update_icon()
power_station.teleporter_hub.calibrated = 0
reset_regime()
if(href_list["settarget"])
power_station.engaged = 0
power_station.teleporter_hub.update_icon()
power_station.teleporter_hub.calibrated = 0
set_target(usr)
if(href_list["locked"])
power_station.engaged = 0
power_station.teleporter_hub.update_icon()
power_station.teleporter_hub.calibrated = 0
target = get_turf(locked.locked_location)
if(href_list["calibrate"])
if(!target)
say("Error: No target set to calibrate to.")
return
if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3)
say("Hub is already calibrated!")
return
say("Processing hub calibration to target...")
calibrating = 1
spawn(50 * (3 - power_station.teleporter_hub.accurate)) //Better parts mean faster calibration
calibrating = 0
if(check_hub_connection())
power_station.teleporter_hub.calibrated = 1
say("Calibration complete.")
else
say("Error: Unable to detect hub.")
updateDialog()
updateDialog()
/obj/machinery/computer/teleporter/proc/check_hub_connection()
if(!power_station)
return
if(!power_station.teleporter_hub)
return
return 1
/obj/machinery/computer/teleporter/proc/reset_regime()
target = null
if(regime_set == "Teleporter")
regime_set = "Gate"
else
regime_set = "Teleporter"
/obj/machinery/computer/teleporter/proc/eject()
if(locked)
locked.loc = loc
locked = null
/obj/machinery/computer/teleporter/proc/set_target(mob/user)
var/list/L = list()
var/list/areaindex = list()
if(regime_set == "Teleporter")
for(var/obj/item/device/radio/beacon/R in GLOB.teleportbeacons)
var/turf/T = get_turf(R)
if(!T)
continue
if(T.z == ZLEVEL_CENTCOM || T.z > ZLEVEL_SPACEMAX)
continue
L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R
for(var/obj/item/weapon/implant/tracking/I in GLOB.tracked_implants)
if(!I.imp_in || !ismob(I.loc))
continue
else
var/mob/M = I.loc
if(M.stat == DEAD)
if(M.timeofdeath + 6000 < world.time)
continue
var/turf/T = get_turf(M)
if(!T)
continue
if(T.z == ZLEVEL_CENTCOM)
continue
L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I
var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L
target = L[desc]
else
var/list/S = power_station.linked_stations
if(!S.len)
to_chat(user, "<span class='alert'>No connected stations located.</span>")
return
for(var/obj/machinery/teleport/station/R in S)
var/turf/T = get_turf(R)
if(!T || !R.teleporter_hub || !R.teleporter_console)
continue
if(T.z == ZLEVEL_CENTCOM || T.z > ZLEVEL_SPACEMAX)
continue
L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R
var/desc = input("Please select a station to lock in.", "Locking Computer") as null|anything in L
target = L[desc]
if(target)
var/obj/machinery/teleport/station/trg = target
trg.linked_stations |= power_station
trg.stat &= ~NOPOWER
if(trg.teleporter_hub)
trg.teleporter_hub.stat &= ~NOPOWER
trg.teleporter_hub.update_icon()
if(trg.teleporter_console)
trg.teleporter_console.stat &= ~NOPOWER
trg.teleporter_console.update_icon()
/obj/machinery/teleport
name = "teleport"
icon = 'icons/obj/machines/teleporter.dmi'
@@ -226,29 +8,16 @@
name = "teleporter hub"
desc = "It's the hub of a teleporting machine."
icon_state = "tele0"
var/accurate = 0
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 2000
circuit = /obj/item/weapon/circuitboard/machine/teleporter_hub
var/accurate = FALSE
var/obj/machinery/teleport/station/power_station
var/calibrated //Calibration prevents mutation
/obj/machinery/teleport/hub/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/teleporter_hub(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/teleporter_hub
name = "Teleporter Hub (Machine Board)"
build_path = /obj/machinery/teleport/hub
origin_tech = "programming=3;engineering=4;bluespace=4;materials=4"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 3,
/obj/item/weapon/stock_parts/matter_bin = 1)
def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial)
/obj/machinery/teleport/hub/Initialize()
..()
. = ..()
link_power_station()
/obj/machinery/teleport/hub/Destroy()
@@ -327,8 +96,8 @@
/obj/machinery/teleport/hub/proc/is_ready()
. = !panel_open && !(stat & (BROKEN|NOPOWER)) && power_station && power_station.engaged && !(power_station.stat & (BROKEN|NOPOWER))
/obj/machinery/teleport/hub/syndicate/New()
..()
/obj/machinery/teleport/hub/syndicate/Initialize()
. = ..()
component_parts += new /obj/item/weapon/stock_parts/matter_bin/super(null)
RefreshParts()
@@ -337,32 +106,18 @@
name = "station"
desc = "The power control station for a bluespace teleporter. Used for toggling power, and can activate a test-fire to prevent malfunctions."
icon_state = "controller"
var/engaged = 0
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 2000
circuit = /obj/item/weapon/circuitboard/machine/teleporter_station
var/engaged = FALSE
var/obj/machinery/computer/teleporter/teleporter_console
var/obj/machinery/teleport/hub/teleporter_hub
var/list/linked_stations = list()
var/efficiency = 0
/obj/machinery/teleport/station/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/teleporter_station(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/teleporter_station
name = "Teleporter Station (Machine Board)"
build_path = /obj/machinery/teleport/station
origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 2,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial)
/obj/machinery/teleport/station/Initialize()
..()
. = ..()
link_console_and_hub()
/obj/machinery/teleport/station/RefreshParts()
+2 -4
View File
@@ -22,7 +22,7 @@
. = ..()
new /obj/machinery/conveyor/auto(locate(x - 1, y, z), WEST)
new /obj/machinery/conveyor/auto(loc, WEST)
new /obj/machinery/conveyor/auto(locate(x + 1, y, z), WEST)
new /obj/machinery/conveyor/auto(locate(x + 1, y, z), WEST)
countdown = new(src)
countdown.start()
@@ -33,9 +33,7 @@
to_chat(user, "It will be ready in [max(0, seconds_remaining)] seconds.")
/obj/machinery/transformer/Destroy()
if(countdown)
qdel(countdown)
countdown = null
QDEL_NULL(countdown)
. = ..()
/obj/machinery/transformer/power_change()
+9 -49
View File
@@ -24,6 +24,7 @@
max_integrity = 300
integrity_failure = 100
armor = list(melee = 20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70)
circuit = /obj/item/weapon/circuitboard/machine/vendor
var/active = 1 //No sales pitches if off!
var/vend_ready = 1 //Are we ready to vend?? Is it time??
@@ -60,12 +61,13 @@
var/refill_count = 3 //The number of canisters the vending machine uses
/obj/machinery/vending/Initialize()
. = ..()
var/build_inv = FALSE
if(!refill_canister)
circuit = null
build_inv = TRUE
. = ..()
wires = new /datum/wires/vending(src)
if(refill_canister) //constructable vending machine
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/vendor(null)
B.apply_default_parts(src)
else
if(build_inv) //non-constructable vending machine
build_inventory(products)
build_inventory(contraband, 1)
build_inventory(premium, 0, 1)
@@ -77,46 +79,6 @@
last_slogan = world.time + rand(0, slogan_delay)
power_change()
/obj/item/weapon/circuitboard/machine/vendor
name = "Booze-O-Mat Vendor (Machine Board)"
build_path = /obj/machinery/vending/boozeomat
origin_tech = "programming=1"
req_components = list(
/obj/item/weapon/vending_refill/boozeomat = 3)
var/list/names_paths = list(/obj/machinery/vending/boozeomat = "Booze-O-Mat",
/obj/machinery/vending/coffee = "Solar's Best Hot Drinks",
/obj/machinery/vending/snack = "Getmore Chocolate Corp",
/obj/machinery/vending/cola = "Robust Softdrinks",
/obj/machinery/vending/cigarette = "ShadyCigs Deluxe",
/obj/machinery/vending/autodrobe = "AutoDrobe",
/obj/machinery/vending/clothing = "ClothesMate",
/obj/machinery/vending/medical = "NanoMed Plus",
/obj/machinery/vending/wallmed = "NanoMed")
/obj/item/weapon/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
var/position = names_paths.Find(build_path)
position = (position == names_paths.len) ? 1 : (position + 1)
var/typepath = names_paths[position]
to_chat(user, "<span class='notice'>You set the board to \"[names_paths[typepath]]\".</span>")
set_type(typepath)
else
return ..()
/obj/item/weapon/circuitboard/machine/vendor/proc/set_type(var/obj/machinery/vending/typepath)
build_path = typepath
name = "[names_paths[build_path]] Vendor (Machine Board)"
req_components = list(initial(typepath.refill_canister) = initial(typepath.refill_count))
/obj/item/weapon/circuitboard/machine/vendor/apply_default_parts(obj/machinery/M)
for(var/typepath in names_paths)
if(istype(M, typepath))
set_type(typepath)
break
..()
/obj/machinery/vending/Destroy()
QDEL_NULL(wires)
QDEL_NULL(coin)
@@ -125,9 +87,7 @@
/obj/machinery/vending/snack/Destroy()
for(var/obj/item/weapon/reagent_containers/food/snacks/S in contents)
S.loc = get_turf(src)
qdel(wires)
wires = null
S.forceMove(get_turf(src))
return ..()
/obj/machinery/vending/RefreshParts() //Better would be to make constructable child
@@ -795,7 +755,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
desc = "Uh oh!"
/obj/machinery/vending/cola/random/Initialize()
..()
. = ..()
var/T = pick(subtypesof(/obj/machinery/vending/cola) - /obj/machinery/vending/cola/random)
new T(get_turf(src))
qdel(src)
+4 -13
View File
@@ -17,6 +17,7 @@
dir = EAST
icon = 'icons/mecha/mech_bay.dmi'
icon_state = "recharge_port"
circuit = /obj/item/weapon/circuitboard/machine/mech_recharger
var/obj/mecha/recharging_mech
var/obj/machinery/computer/mech_bay_power_console/recharge_console
var/max_charge = 50
@@ -24,20 +25,10 @@
var/repairability = 0
var/turf/recharging_turf = null
/obj/machinery/mech_bay_recharge_port/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mech_recharger(null)
B.apply_default_parts(src)
/obj/machinery/mech_bay_recharge_port/Initialize()
. = ..()
recharging_turf = get_step(loc, dir)
/obj/item/weapon/circuitboard/machine/mech_recharger
name = "Mechbay Recharger (Machine Board)"
build_path = /obj/machinery/mech_bay_recharge_port
origin_tech = "programming=3;powerstorage=3;engineering=3"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/capacitor = 5)
/obj/machinery/mech_bay_recharge_port/RefreshParts()
var/MC
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
@@ -149,5 +140,5 @@
add_overlay("recharge_comp_on")
/obj/machinery/computer/mech_bay_power_console/Initialize()
..()
. = ..()
reconnect()
+3 -14
View File
@@ -9,6 +9,7 @@
idle_power_usage = 20
active_power_usage = 5000
req_access = list(ACCESS_ROBOTICS)
circuit = /obj/item/weapon/circuitboard/machine/mechfab
var/time_coeff = 1
var/component_coeff = 1
var/datum/material_container/materials
@@ -34,22 +35,10 @@
"Misc"
)
/obj/machinery/mecha_part_fabricator/New()
..()
/obj/machinery/mecha_part_fabricator/Initialize()
files = new /datum/research(src) //Setup the research data holder.
materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE))
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mechfab(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/mechfab
name = "Exosuit Fabricator (Machine Board)"
build_path = /obj/machinery/mecha_part_fabricator
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
return ..()
/obj/machinery/mecha_part_fabricator/RefreshParts()
var/T = 0
+1 -1
View File
@@ -238,7 +238,7 @@
blueeffect.icon_state = "shieldsparkles"
blueeffect.layer = FLASH_LAYER
blueeffect.plane = FULLSCREEN_PLANE
blueeffect.mouse_opacity = 0
blueeffect.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
M.client.screen += blueeffect
sleep(20)
M.client.screen -= blueeffect
@@ -30,7 +30,7 @@
name = "dirt"
desc = "Someone should clean that up."
icon_state = "dirt"
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/effect/decal/cleanable/flour
name = "flour"
@@ -8,7 +8,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
/obj/effect/particle_effect
name = "particle effect"
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
pass_flags = PASSTABLE | PASSGRILLE
/obj/effect/particle_effect/New()
@@ -27,7 +27,7 @@
icon_state = "explosion"
opacity = 1
anchored = TRUE
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
pixel_x = -32
pixel_y = -32
@@ -12,7 +12,7 @@
anchored = TRUE
density = FALSE
layer = WALL_OBJ_LAYER
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/amount = 3
animate_movement = 0
var/metal = 0
@@ -11,7 +11,7 @@
opacity = 0
layer = FLY_LAYER
anchored = TRUE
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
animate_movement = 0
var/amount = 4
var/lifetime = 5
@@ -4,7 +4,7 @@
name = "water"
icon_state = "extinguish"
var/life = 15
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/effect/particle_effect/water/New()
@@ -46,7 +46,7 @@
/obj/item/trash/cheesie = 1,
/obj/item/trash/candy = 1,
/obj/item/trash/chips = 1,
/obj/item/trash/deadmouse = 1,
/obj/item/weapon/reagent_containers/food/snacks/deadmouse = 1,
/obj/item/trash/pistachios = 1,
/obj/item/trash/plate = 1,
/obj/item/trash/popcorn = 1,
@@ -188,12 +188,15 @@
name = mimiced_atom.name
appearance = mimiced_atom.appearance
setDir(mimiced_atom.dir)
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/effect/temp_visual/decoy/fading/Initialize(mapload, atom/mimiced_atom)
. = ..()
animate(src, alpha = 0, time = duration)
/obj/effect/temp_visual/decoy/fading/threesecond
duration = 40
/obj/effect/temp_visual/decoy/fading/fivesecond
duration = 50
@@ -394,7 +397,7 @@
if(warp_color)
color = list(warp_color, warp_color, warp_color, list(0,0,0))
set_light(1.4, 1, warp_color)
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/matrix/skew = transform
skew = skew.Turn(180)
skew = skew.Interpolate(transform, 0.5)
@@ -3,7 +3,7 @@
icon_state = "nothing"
anchored = TRUE
layer = ABOVE_MOB_LAYER
mouse_opacity = 0
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/duration = 10 //in deciseconds
var/randomdir = TRUE
var/timerid
@@ -77,7 +77,7 @@
layer = ABOVE_ALL_MOB_LAYER
anchored = TRUE
density = TRUE
mouse_opacity = 2
mouse_opacity = MOUSE_OPACITY_OPAQUE
resistance_flags = INDESTRUCTIBLE
CanAtmosPass = ATMOS_PASS_DENSITY
armor = list(melee = 0, bullet = 25, laser = 50, energy = 50, bomb = 25, bio = 100, rad = 100, fire = 100, acid = 100)
@@ -12,7 +12,7 @@
novariants = FALSE
GLOBAL_LIST_INIT(human_recipes, list( \
new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5, on_floor = 1), \
new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5), \
))
/obj/item/stack/sheet/animalhide/human/Initialize(mapload, new_amount, merge = TRUE)
@@ -33,7 +33,7 @@ GLOBAL_LIST_INIT(human_recipes, list( \
icon_state = "sheet-corgi"
GLOBAL_LIST_INIT(corgi_recipes, list ( \
new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3, on_floor = 1), \
new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3), \
))
/obj/item/stack/sheet/animalhide/corgi/Initialize(mapload, new_amount, merge = TRUE)
@@ -53,8 +53,8 @@ GLOBAL_LIST_INIT(corgi_recipes, list ( \
icon_state = "sheet-monkey"
GLOBAL_LIST_INIT(monkey_recipes, list ( \
new/datum/stack_recipe("monkey mask", /obj/item/clothing/mask/gas/monkeymask, 1, on_floor = 1), \
new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/monkeysuit, 2, on_floor = 1), \
new/datum/stack_recipe("monkey mask", /obj/item/clothing/mask/gas/monkeymask, 1), \
new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/monkeysuit, 2), \
))
/obj/item/stack/sheet/animalhide/monkey/Initialize(mapload, new_amount, merge = TRUE)
@@ -74,8 +74,8 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
icon_state = "sheet-xeno"
GLOBAL_LIST_INIT(xeno_recipes, list ( \
new/datum/stack_recipe("alien helmet", /obj/item/clothing/head/xenos, 1, on_floor = 1), \
new/datum/stack_recipe("alien suit", /obj/item/clothing/suit/xenos, 2, on_floor = 1), \
new/datum/stack_recipe("alien helmet", /obj/item/clothing/head/xenos, 1), \
new/datum/stack_recipe("alien suit", /obj/item/clothing/suit/xenos, 2), \
))
/obj/item/stack/sheet/animalhide/xeno/Initialize(mapload, new_amount, merge = TRUE)
@@ -161,7 +161,7 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \
GLOBAL_LIST_INIT(sinew_recipes, list ( \
new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1, on_floor = 1), \
new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1), \
))
/obj/item/stack/sheet/sinew/Initialize(mapload, new_amount, merge = TRUE)
@@ -0,0 +1,55 @@
//File with the circuitboard and circuitboard/machine class definitions and procs
// Circuitboard
/obj/item/weapon/circuitboard
name = "circuit board"
icon = 'icons/obj/module.dmi'
icon_state = "id_mod"
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
origin_tech = "programming=2"
materials = list(MAT_GLASS=1000)
w_class = WEIGHT_CLASS_SMALL
var/build_path = null
/obj/item/weapon/circuitboard/proc/apply_default_parts(obj/machinery/M)
return
// Circuitboard/machine
/*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit,
micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells.
*/
/obj/item/weapon/circuitboard/machine
var/list/req_components // Components required by the machine.
// Example: list(/obj/item/weapon/stock_parts/matter_bin = 5)
var/list/def_components // Default replacements for req_components, to be used in apply_default_parts instead of req_components types
// Example: list(/obj/item/weapon/stock_parts/matter_bin = /obj/item/weapon/stock_parts/matter_bin/super)
// Applies the default parts defined by the circuit board when the machine is created
/obj/item/weapon/circuitboard/machine/apply_default_parts(obj/machinery/M)
if(!req_components)
return
M.component_parts = list(src) // List of components always contains a board
loc = null
for(var/comp_path in req_components)
var/comp_amt = req_components[comp_path]
if(!comp_amt)
continue
if(def_components && def_components[comp_path])
comp_path = def_components[comp_path]
if(ispath(comp_path, /obj/item/stack))
M.component_parts += new comp_path(null, comp_amt)
else
for(var/i in 1 to comp_amt)
M.component_parts += new comp_path(null)
M.RefreshParts()
@@ -0,0 +1,369 @@
/obj/item/weapon/circuitboard/computer/turbine_computer
name = "Turbine Computer (Computer Board)"
build_path = /obj/machinery/computer/turbine_computer
origin_tech = "programming=4;engineering=4;powerstorage=4"
/obj/item/weapon/circuitboard/computer/launchpad_console
name = "Launchpad Control Console (Computer Board)"
build_path = /obj/machinery/computer/launchpad
origin_tech = "programming=3;bluespace=3;plasmatech=2"
/obj/item/weapon/circuitboard/computer/message_monitor
name = "Message Monitor (Computer Board)"
build_path = /obj/machinery/computer/message_monitor
origin_tech = "programming=2"
/obj/item/weapon/circuitboard/computer/security
name = "Security Cameras (Computer Board)"
build_path = /obj/machinery/computer/security
origin_tech = "programming=2;combat=2"
/obj/item/weapon/circuitboard/computer/xenobiology
name = "circuit board (Xenobiology Console)"
build_path = /obj/machinery/computer/camera_advanced/xenobio
origin_tech = "programming=3;biotech=3"
/obj/item/weapon/circuitboard/computer/base_construction
name = "circuit board (Aux Mining Base Construction Console)"
build_path = /obj/machinery/computer/camera_advanced/base_construction
origin_tech = "programming=3;engineering=3"
/obj/item/weapon/circuitboard/computer/aiupload
name = "AI Upload (Computer Board)"
build_path = /obj/machinery/computer/upload/ai
origin_tech = "programming=4;engineering=4"
/obj/item/weapon/circuitboard/computer/borgupload
name = "Cyborg Upload (Computer Board)"
build_path = /obj/machinery/computer/upload/borg
origin_tech = "programming=4;engineering=4"
/obj/item/weapon/circuitboard/computer/med_data
name = "Medical Records Console (Computer Board)"
build_path = /obj/machinery/computer/med_data
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/pandemic
name = "PanD.E.M.I.C. 2200 (Computer Board)"
build_path = /obj/machinery/computer/pandemic
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/scan_consolenew
name = "DNA Machine (Computer Board)"
build_path = /obj/machinery/computer/scan_consolenew
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/communications
name = "Communications (Computer Board)"
build_path = /obj/machinery/computer/communications
origin_tech = "programming=3;magnets=3"
var/lastTimeUsed = 0
/obj/item/weapon/circuitboard/computer/card
name = "ID Console (Computer Board)"
build_path = /obj/machinery/computer/card
origin_tech = "programming=3"
/obj/item/weapon/circuitboard/computer/card/centcom
name = "CentCom ID Console (Computer Board)"
build_path = /obj/machinery/computer/card/centcom
/obj/item/weapon/circuitboard/computer/card/minor
name = "Department Management Console (Computer Board)"
build_path = /obj/machinery/computer/card/minor
var/target_dept = 1
var/list/dept_list = list("General","Security","Medical","Science","Engineering")
/obj/item/weapon/circuitboard/computer/card/minor/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
target_dept = (target_dept == dept_list.len) ? 1 : (target_dept + 1)
to_chat(user, "<span class='notice'>You set the board to \"[dept_list[target_dept]]\".</span>")
else
return ..()
/obj/item/weapon/circuitboard/computer/card/minor/examine(user)
..()
to_chat(user, "Currently set to \"[dept_list[target_dept]]\".")
//obj/item/weapon/circuitboard/computer/shield
// name = "Shield Control (Computer Board)"
// build_path = /obj/machinery/computer/stationshield
/obj/item/weapon/circuitboard/computer/teleporter
name = "Teleporter (Computer Board)"
build_path = /obj/machinery/computer/teleporter
origin_tech = "programming=3;bluespace=3;plasmatech=3"
/obj/item/weapon/circuitboard/computer/secure_data
name = "Security Records Console (Computer Board)"
build_path = /obj/machinery/computer/secure_data
origin_tech = "programming=2;combat=2"
/obj/item/weapon/circuitboard/computer/stationalert
name = "Station Alerts (Computer Board)"
build_path = /obj/machinery/computer/station_alert
/obj/item/weapon/circuitboard/computer/atmos_control
name = "Atmospheric Monitor (Computer Board)"
build_path = /obj/machinery/computer/atmos_control
/obj/item/weapon/circuitboard/computer/atmos_control/tank
name = "Tank Control (Computer Board)"
build_path = /obj/machinery/computer/atmos_control/tank
origin_tech = "programming=2;engineering=3;materials=2"
/obj/item/weapon/circuitboard/computer/atmos_alert
name = "Atmospheric Alert (Computer Board)"
build_path = /obj/machinery/computer/atmos_alert
/obj/item/weapon/circuitboard/computer/pod
name = "Massdriver control (Computer Board)"
build_path = /obj/machinery/computer/pod
/obj/item/weapon/circuitboard/computer/robotics
name = "Robotics Control (Computer Board)"
build_path = /obj/machinery/computer/robotics
origin_tech = "programming=3"
/obj/item/weapon/circuitboard/computer/cloning
name = "Cloning (Computer Board)"
build_path = /obj/machinery/computer/cloning
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/arcade/battle
name = "Arcade Battle (Computer Board)"
build_path = /obj/machinery/computer/arcade/battle
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/arcade/orion_trail
name = "Orion Trail (Computer Board)"
build_path = /obj/machinery/computer/arcade/orion_trail
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/turbine_control
name = "Turbine control (Computer Board)"
build_path = /obj/machinery/computer/turbine_computer
/obj/item/weapon/circuitboard/computer/solar_control
name = "Solar Control (Computer Board)" //name fixed 250810
build_path = /obj/machinery/power/solar_control
origin_tech = "programming=2;powerstorage=2"
/obj/item/weapon/circuitboard/computer/powermonitor
name = "Power Monitor (Computer Board)" //name fixed 250810
build_path = /obj/machinery/computer/monitor
origin_tech = "programming=2;powerstorage=2"
/obj/item/weapon/circuitboard/computer/olddoor
name = "DoorMex (Computer Board)"
build_path = /obj/machinery/computer/pod/old
/obj/item/weapon/circuitboard/computer/syndicatedoor
name = "ProComp Executive (Computer Board)"
build_path = /obj/machinery/computer/pod/old/syndicate
/obj/item/weapon/circuitboard/computer/swfdoor
name = "Magix (Computer Board)"
build_path = /obj/machinery/computer/pod/old/swf
/obj/item/weapon/circuitboard/computer/prisoner
name = "Prisoner Management Console (Computer Board)"
build_path = /obj/machinery/computer/prisoner
/obj/item/weapon/circuitboard/computer/gulag_teleporter_console
name = "Labor Camp teleporter console (Computer Board)"
build_path = /obj/machinery/computer/gulag_teleporter_computer
/obj/item/weapon/circuitboard/computer/rdconsole
name = "R&D Console (Computer Board)"
build_path = /obj/machinery/computer/rdconsole/core
/obj/item/weapon/circuitboard/computer/rdconsole/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
if(build_path == /obj/machinery/computer/rdconsole/core)
name = "R&D Console - Robotics (Computer Board)"
build_path = /obj/machinery/computer/rdconsole/robotics
to_chat(user, "<span class='notice'>Access protocols successfully updated.</span>")
else
name = "R&D Console (Computer Board)"
build_path = /obj/machinery/computer/rdconsole/core
to_chat(user, "<span class='notice'>Defaulting access protocols.</span>")
else
return ..()
/obj/item/weapon/circuitboard/computer/mecha_control
name = "Exosuit Control Console (Computer Board)"
build_path = /obj/machinery/computer/mecha
/obj/item/weapon/circuitboard/computer/rdservercontrol
name = "R&D Server Control (Computer Board)"
build_path = /obj/machinery/computer/rdservercontrol
/obj/item/weapon/circuitboard/computer/crew
name = "Crew Monitoring Console (Computer Board)"
build_path = /obj/machinery/computer/crew
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/mech_bay_power_console
name = "Mech Bay Power Control Console (Computer Board)"
build_path = /obj/machinery/computer/mech_bay_power_console
origin_tech = "programming=3;powerstorage=3"
/obj/item/weapon/circuitboard/computer/cargo
name = "Supply Console (Computer Board)"
build_path = /obj/machinery/computer/cargo
origin_tech = "programming=3"
var/contraband = FALSE
var/emagged = FALSE
/obj/item/weapon/circuitboard/computer/cargo/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/device/multitool))
if(!emagged)
contraband = !contraband
to_chat(user, "<span class='notice'>Receiver spectrum set to [contraband ? "Broad" : "Standard"].</span>")
else
to_chat(user, "<span class='notice'>The spectrum chip is unresponsive.</span>")
else if(istype(I, /obj/item/weapon/card/emag))
if(!emagged)
contraband = TRUE
emagged = TRUE
to_chat(user, "<span class='notice'>You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.</span>")
else
return ..()
/obj/item/weapon/circuitboard/computer/cargo/request
name = "Supply Request Console (Computer Board)"
build_path = /obj/machinery/computer/cargo/request
/obj/item/weapon/circuitboard/computer/stockexchange
name = "circuit board (Stock Exchange Console)"
build_path = /obj/machinery/computer/stockexchange
origin_tech = "programming=3"
/obj/item/weapon/circuitboard/computer/operating
name = "Operating Computer (Computer Board)"
build_path = /obj/machinery/computer/operating
origin_tech = "programming=2;biotech=3"
/obj/item/weapon/circuitboard/computer/mining
name = "Outpost Status Display (Computer Board)"
build_path = /obj/machinery/computer/security/mining
/obj/item/weapon/circuitboard/computer/comm_monitor
name = "Telecommunications Monitor (Computer Board)"
build_path = /obj/machinery/computer/telecomms/monitor
origin_tech = "programming=3;magnets=3;bluespace=2"
/obj/item/weapon/circuitboard/computer/comm_server
name = "Telecommunications Server Monitor (Computer Board)"
build_path = /obj/machinery/computer/telecomms/server
origin_tech = "programming=3;magnets=3;bluespace=2"
/obj/item/weapon/circuitboard/computer/shuttle
name = "Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle
var/shuttleId
var/possible_destinations = ""
/obj/item/weapon/circuitboard/computer/shuttle/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/device/multitool))
var/chosen_id = round(input(usr, "Choose an ID number (-1 for reset):", "Input an Integer", null) as num|null)
if(chosen_id >= 0)
shuttleId = chosen_id
else
shuttleId = initial(shuttleId)
else
return ..()
/obj/item/weapon/circuitboard/computer/labor_shuttle
name = "Labor Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/labor
/obj/item/weapon/circuitboard/computer/labor_shuttle/one_way
name = "Prisoner Shuttle Console (Computer Board)"
build_path = /obj/machinery/computer/shuttle/labor/one_way
/obj/item/weapon/circuitboard/computer/ferry
name = "Transport Ferry (Computer Board)"
build_path = /obj/machinery/computer/shuttle/ferry
/obj/item/weapon/circuitboard/computer/ferry/request
name = "Transport Ferry Console (Computer Board)"
build_path = /obj/machinery/computer/shuttle/ferry/request
/obj/item/weapon/circuitboard/computer/mining_shuttle
name = "Mining Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/mining
/obj/item/weapon/circuitboard/computer/white_ship
name = "White Ship (Computer Board)"
build_path = /obj/machinery/computer/shuttle/white_ship
/obj/item/weapon/circuitboard/computer/auxillary_base
name = "Auxillary Base Management Console (Computer Board)"
build_path = /obj/machinery/computer/auxillary_base
/obj/item/weapon/circuitboard/computer/holodeck// Not going to let people get this, but it's just here for future
name = "Holodeck Control (Computer Board)"
build_path = /obj/machinery/computer/holodeck
origin_tech = "programming=4"
/obj/item/weapon/circuitboard/computer/aifixer
name = "AI Integrity Restorer (Computer Board)"
build_path = /obj/machinery/computer/aifixer
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/computer/slot_machine
name = "Slot Machine (Computer Board)"
build_path = /obj/machinery/computer/slot_machine
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/libraryconsole
name = "Library Visitor Console (Computer Board)"
build_path = /obj/machinery/computer/libraryconsole
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement)
name = "Library Visitor Console (Computer Board)"
build_path = /obj/machinery/computer/libraryconsole
to_chat(user, "<span class='notice'>Defaulting access protocols.</span>")
else
name = "Book Inventory Management Console (Computer Board)"
build_path = /obj/machinery/computer/libraryconsole/bookmanagement
to_chat(user, "<span class='notice'>Access protocols successfully updated.</span>")
else
return ..()
/obj/item/weapon/circuitboard/computer/apc_control
name = "\improper Power Flow Control Console (Computer Board)"
build_path = /obj/machinery/computer/apc_control
origin_tech = "programming=3;engineering=3;powerstorage=2"
/obj/item/weapon/circuitboard/computer/shuttle/monastery_shuttle
name = "Monastery Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/monastery_shuttle
/obj/item/weapon/circuitboard/computer/syndicate_shuttle
name = "Syndicate Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/syndicate
var/challenge = FALSE
var/moved = FALSE
/obj/item/weapon/circuitboard/computer/syndicate_shuttle/Initialize()
. = ..()
GLOB.syndicate_shuttle_boards += src
/obj/item/weapon/circuitboard/computer/syndicate_shuttle/Destroy()
GLOB.syndicate_shuttle_boards -= src
return ..()
/obj/item/weapon/circuitboard/computer/bsa_control
name = "Bluespace Artillery Controls (Computer Board)"
build_path = /obj/machinery/computer/bsa_control
origin_tech = "engineering=2;combat=2;bluespace=2"
/obj/item/weapon/circuitboard/computer/sat_control
name = "Satellite Network Control (Computer Board)"
build_path = /obj/machinery/computer/sat_control
origin_tech = "engineering=3"
@@ -0,0 +1,723 @@
/obj/item/weapon/circuitboard/machine/sleeper
name = "Sleeper (Machine Board)"
build_path = /obj/machinery/sleeper
origin_tech = "programming=3;biotech=2;engineering=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/sheet/glass = 1)
/obj/item/weapon/circuitboard/machine/announcement_system
name = "Announcement System (Machine Board)"
build_path = /obj/machinery/announcement_system
origin_tech = "programming=3;bluespace=3;magnets=2"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/autolathe
name = "Autolathe (Machine Board)"
build_path = /obj/machinery/autolathe
origin_tech = "engineering=2;programming=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 3,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/clonepod
name = "Clone Pod (Machine Board)"
build_path = /obj/machinery/clonepod
origin_tech = "programming=2;biotech=2"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/scanning_module = 2,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/sheet/glass = 1)
/obj/item/weapon/circuitboard/machine/abductor
name = "alien board (Report This)"
icon_state = "abductor_mod"
origin_tech = "programming=5;abductor=3"
/obj/item/weapon/circuitboard/machine/clockwork
name = "clockwork board (Report This)"
icon_state = "clock_mod"
/obj/item/weapon/circuitboard/machine/clonescanner
name = "Cloning Scanner (Machine Board)"
build_path = /obj/machinery/dna_scannernew
origin_tech = "programming=2;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/stack/sheet/glass = 1,
/obj/item/stack/cable_coil = 2)
/obj/item/weapon/circuitboard/machine/holopad
name = "AI Holopad (Machine Board)"
build_path = /obj/machinery/holopad
origin_tech = "programming=1"
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/machine/launchpad
name = "Bluespace Launchpad (Machine Board)"
build_path = /obj/machinery/launchpad
origin_tech = "programming=3;engineering=3;plasmatech=2;bluespace=3"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial)
/obj/item/weapon/circuitboard/machine/limbgrower
name = "Limb Grower (Machine Board)"
build_path = /obj/machinery/limbgrower
origin_tech = "programming=2;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/reagent_containers/glass/beaker = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/quantumpad
name = "Quantum Pad (Machine Board)"
build_path = /obj/machinery/quantumpad
origin_tech = "programming=3;engineering=3;plasmatech=3;bluespace=4"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 1,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/stack/cable_coil = 1)
def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial)
/obj/item/weapon/circuitboard/machine/recharger
name = "Weapon Recharger (Machine Board)"
build_path = /obj/machinery/recharger
origin_tech = "powerstorage=4;engineering=3;materials=4"
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/machine/cyborgrecharger
name = "Cyborg Recharger (Machine Board)"
build_path = /obj/machinery/recharge_station
origin_tech = "powerstorage=3;engineering=3"
req_components = list(
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/cell = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high)
/obj/item/weapon/circuitboard/machine/recycler
name = "Recycler (Machine Board)"
build_path = /obj/machinery/recycler
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
/obj/item/weapon/circuitboard/machine/space_heater
name = "Space Heater (Machine Board)"
build_path = /obj/machinery/space_heater
origin_tech = "programming=2;engineering=2;plasmatech=2"
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/stack/cable_coil = 3)
/obj/item/weapon/circuitboard/machine/telecomms/broadcaster
name = "Subspace Broadcaster (Machine Board)"
build_path = /obj/machinery/telecomms/broadcaster
origin_tech = "programming=2;engineering=2;bluespace=1"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/subspace/crystal = 1,
/obj/item/weapon/stock_parts/micro_laser = 2)
/obj/item/weapon/circuitboard/machine/telecomms/bus
name = "Bus Mainframe (Machine Board)"
build_path = /obj/machinery/telecomms/bus
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/item/weapon/circuitboard/machine/telecomms/hub
name = "Hub Mainframe (Machine Board)"
build_path = /obj/machinery/telecomms/hub
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/filter = 2)
/obj/item/weapon/circuitboard/machine/telecomms/processor
name = "Processor Unit (Machine Board)"
build_path = /obj/machinery/telecomms/processor
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 3,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/subspace/treatment = 2,
/obj/item/weapon/stock_parts/subspace/analyzer = 1,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/amplifier = 1)
/obj/item/weapon/circuitboard/machine/telecomms/receiver
name = "Subspace Receiver (Machine Board)"
build_path = /obj/machinery/telecomms/receiver
origin_tech = "programming=2;engineering=2;bluespace=1"
req_components = list(
/obj/item/weapon/stock_parts/subspace/ansible = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/machine/telecomms/relay
name = "Relay Mainframe (Machine Board)"
build_path = /obj/machinery/telecomms/relay
origin_tech = "programming=2;engineering=2;bluespace=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/filter = 2)
/obj/item/weapon/circuitboard/machine/telecomms/server
name = "Telecommunication Server (Machine Board)"
build_path = /obj/machinery/telecomms/server
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/item/weapon/circuitboard/machine/teleporter_hub
name = "Teleporter Hub (Machine Board)"
build_path = /obj/machinery/teleport/hub
origin_tech = "programming=3;engineering=4;bluespace=4;materials=4"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 3,
/obj/item/weapon/stock_parts/matter_bin = 1)
def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial)
/obj/item/weapon/circuitboard/machine/teleporter_station
name = "Teleporter Station (Machine Board)"
build_path = /obj/machinery/teleport/station
origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 2,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
def_components = list(/obj/item/weapon/ore/bluespace_crystal = /obj/item/weapon/ore/bluespace_crystal/artificial)
/obj/item/weapon/circuitboard/machine/vendor
name = "Booze-O-Mat Vendor (Machine Board)"
build_path = /obj/machinery/vending/boozeomat
origin_tech = "programming=1"
req_components = list(
/obj/item/weapon/vending_refill/boozeomat = 3)
var/static/list/vending_names_paths = list(/obj/machinery/vending/boozeomat = "Booze-O-Mat",
/obj/machinery/vending/coffee = "Solar's Best Hot Drinks",
/obj/machinery/vending/snack = "Getmore Chocolate Corp",
/obj/machinery/vending/cola = "Robust Softdrinks",
/obj/machinery/vending/cigarette = "ShadyCigs Deluxe",
/obj/machinery/vending/autodrobe = "AutoDrobe",
/obj/machinery/vending/clothing = "ClothesMate",
/obj/machinery/vending/medical = "NanoMed Plus",
/obj/machinery/vending/wallmed = "NanoMed")
/obj/item/weapon/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
var/position = vending_names_paths.Find(build_path)
position = (position == vending_names_paths.len) ? 1 : (position + 1)
var/typepath = vending_names_paths[position]
to_chat(user, "<span class='notice'>You set the board to \"[vending_names_paths[typepath]]\".</span>")
set_type(typepath)
else
return ..()
/obj/item/weapon/circuitboard/machine/vendor/proc/set_type(obj/machinery/vending/typepath)
build_path = typepath
name = "[vending_names_paths[build_path]] Vendor (Machine Board)"
req_components = list(initial(typepath.refill_canister) = initial(typepath.refill_count))
/obj/item/weapon/circuitboard/machine/vendor/apply_default_parts(obj/machinery/M)
for(var/typepath in vending_names_paths)
if(istype(M, typepath))
set_type(typepath)
break
return ..()
/obj/item/weapon/circuitboard/machine/mech_recharger
name = "Mechbay Recharger (Machine Board)"
build_path = /obj/machinery/mech_bay_recharge_port
origin_tech = "programming=3;powerstorage=3;engineering=3"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/capacitor = 5)
/obj/item/weapon/circuitboard/machine/mechfab
name = "Exosuit Fabricator (Machine Board)"
build_path = /obj/machinery/mecha_part_fabricator
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/cryo_tube
name = "Cryotube (Machine Board)"
build_path = /obj/machinery/atmospherics/components/unary/cryo_cell
origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/sheet/glass = 2)
/obj/item/weapon/circuitboard/machine/thermomachine
name = "Thermomachine (Machine Board)"
desc = "You can use a screwdriver to switch between heater and freezer."
origin_tech = "programming=3;plasmatech=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/micro_laser = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/thermomachine/Initialize()
. = ..()
if(prob(50))
name = "Freezer (Machine Board)"
build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer
else
name = "Heater (Machine Board)"
build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater
#define FREEZER /obj/item/weapon/circuitboard/machine/thermomachine/freezer
#define HEATER /obj/item/weapon/circuitboard/machine/thermomachine/heater
/obj/item/weapon/circuitboard/machine/thermomachine/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
var/obj/item/weapon/circuitboard/new_type
var/new_setting
switch(build_path)
if(FREEZER)
new_type = HEATER
new_setting = "Heater"
if(HEATER)
new_type = FREEZER
new_setting = "Freezer"
name = initial(new_type.name)
build_path = initial(new_type.build_path)
playsound(user, I.usesound, 50, 1)
to_chat(user, "<span class='notice'>You change the circuitboard setting to \"[new_setting]\".</span>")
else
return ..()
#undef FREEZER
#undef HEATER
/obj/item/weapon/circuitboard/machine/thermomachine/heater
name = "Heater (Machine Board)"
build_path = /obj/machinery/atmospherics/components/unary/thermomachine/heater
/obj/item/weapon/circuitboard/machine/thermomachine/freezer
name = "Freezer (Machine Board)"
build_path = /obj/machinery/atmospherics/components/unary/thermomachine/freezer
/obj/item/weapon/circuitboard/machine/deep_fryer
name = "circuit board (Deep Fryer)"
build_path = /obj/machinery/deepfryer
origin_tech = "programming=1"
req_components = list(/obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/machine/gibber
name = "Gibber (Machine Board)"
build_path = /obj/machinery/gibber
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
/obj/item/weapon/circuitboard/machine/monkey_recycler
name = "Monkey Recycler (Machine Board)"
build_path = /obj/machinery/monkey_recycler
origin_tech = "programming=1;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
/obj/item/weapon/circuitboard/machine/processor
name = "Food Processor (Machine Board)"
build_path = /obj/machinery/processor
origin_tech = "programming=1"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
/obj/item/weapon/circuitboard/machine/processor/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
if(build_path == /obj/machinery/processor)
name = "Slime Processor (Machine Board)"
build_path = /obj/machinery/processor/slime
to_chat(user, "<span class='notice'>Name protocols successfully updated.</span>")
else
name = "Food Processor (Machine Board)"
build_path = /obj/machinery/processor
to_chat(user, "<span class='notice'>Defaulting name protocols.</span>")
else
return ..()
/obj/item/weapon/circuitboard/machine/processor/slime
name = "Slime Processor (Machine Board)"
build_path = /obj/machinery/processor/slime
/obj/item/weapon/circuitboard/machine/smartfridge
name = "Smartfridge (Machine Board)"
build_path = /obj/machinery/smartfridge
origin_tech = "programming=1"
req_components = list(/obj/item/weapon/stock_parts/matter_bin = 1)
var/static/list/fridges_name_paths = list(/obj/machinery/smartfridge = "plant produce",
/obj/machinery/smartfridge/food = "food",
/obj/machinery/smartfridge/drinks = "drinks",
/obj/machinery/smartfridge/extract = "slimes",
/obj/machinery/smartfridge/chemistry = "chems",
/obj/machinery/smartfridge/chemistry/virology = "viruses",
/obj/machinery/smartfridge/disks = "disks")
/obj/item/weapon/circuitboard/machine/smartfridge/Initialize(mapload, new_type)
if(new_type)
build_path = new_type
return ..()
/obj/item/weapon/circuitboard/machine/smartfridge/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
var/position = fridges_name_paths.Find(build_path, fridges_name_paths)
position = (position == fridges_name_paths.len) ? 1 : (position + 1)
build_path = fridges_name_paths[position]
to_chat(user, "<span class='notice'>You set the board to [fridges_name_paths[build_path]].</span>")
else
return ..()
/obj/item/weapon/circuitboard/machine/smartfridge/examine(mob/user)
..()
to_chat(user, "<span class='info'>[src] is set to [fridges_name_paths[build_path]]. You can use a screwdriver to reconfigure it.</span>")
/obj/item/weapon/circuitboard/machine/biogenerator
name = "Biogenerator (Machine Board)"
build_path = /obj/machinery/biogenerator
origin_tech = "programming=2;biotech=3;materials=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/plantgenes
name = "Plant DNA Manipulator (Machine Board)"
build_path = /obj/machinery/plantgenes
origin_tech = "programming=3;biotech=3"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/scanning_module = 1)
/obj/item/weapon/circuitboard/machine/plantgenes/vault
name = "alien board (Plant DNA Manipulator)"
icon_state = "abductor_mod"
origin_tech = "programming=5;biotech=5"
// It wasn't made by actual abductors race, so no abductor tech here.
def_components = list(
/obj/item/weapon/stock_parts/manipulator = /obj/item/weapon/stock_parts/manipulator/femto,
/obj/item/weapon/stock_parts/micro_laser = /obj/item/weapon/stock_parts/micro_laser/quadultra,
/obj/item/weapon/stock_parts/scanning_module = /obj/item/weapon/stock_parts/scanning_module/triphasic)
/obj/item/weapon/circuitboard/machine/hydroponics
name = "Hydroponics Tray (Machine Board)"
build_path = /obj/machinery/hydroponics/constructable
origin_tech = "programming=1;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/seed_extractor
name = "Seed Extractor (Machine Board)"
build_path = /obj/machinery/seed_extractor
origin_tech = "programming=1"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
/obj/item/weapon/circuitboard/machine/ore_redemption
name = "Ore Redemption (Machine Board)"
build_path = /obj/machinery/mineral/ore_redemption
origin_tech = "programming=1;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/device/assembly/igniter = 1)
/obj/item/weapon/circuitboard/machine/mining_equipment_vendor
name = "Mining Equipment Vendor (Machine Board)"
build_path = /obj/machinery/mineral/equipment_vendor
origin_tech = "programming=1;engineering=3"
req_components = list(
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/matter_bin = 3)
/obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem
name = "Golem Ship Equipment Vendor (Machine Board)"
build_path = /obj/machinery/mineral/equipment_vendor/golem
/obj/item/weapon/circuitboard/machine/ntnet_relay
name = "NTNet Relay (Machine Board)"
build_path = /obj/machinery/ntnet_relay
origin_tech = "programming=3;bluespace=3;magnets=2"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/item/weapon/circuitboard/machine/pacman
name = "PACMAN-type Generator (Machine Board)"
build_path = /obj/machinery/power/port_gen/pacman
origin_tech = "programming=2;powerstorage=3;plasmatech=3;engineering=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/machine/pacman/super
name = "SUPERPACMAN-type Generator (Machine Board)"
build_path = /obj/machinery/power/port_gen/pacman/super
origin_tech = "programming=3;powerstorage=4;engineering=4"
/obj/item/weapon/circuitboard/machine/pacman/mrs
name = "MRSPACMAN-type Generator (Machine Board)"
build_path = /obj/machinery/power/port_gen/pacman/mrs
origin_tech = "programming=3;powerstorage=4;engineering=4;plasmatech=4"
/obj/item/weapon/circuitboard/machine/rtg
name = "RTG (Machine Board)"
build_path = /obj/machinery/power/rtg
origin_tech = "programming=2;materials=4;powerstorage=3;engineering=2"
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/stack/sheet/mineral/uranium = 10) // We have no Pu-238, and this is the closest thing to it.
/obj/item/weapon/circuitboard/machine/rtg/advanced
name = "Advanced RTG (Machine Board)"
build_path = /obj/machinery/power/rtg/advanced
origin_tech = "programming=3;materials=5;powerstorage=4;engineering=3;plasmatech=3"
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/stack/sheet/mineral/uranium = 10,
/obj/item/stack/sheet/mineral/plasma = 5)
/obj/item/weapon/circuitboard/machine/abductor/core
name = "alien board (Void Core)"
build_path = /obj/machinery/power/rtg/abductor
origin_tech = "programming=5;abductor=5;powerstorage=8;engineering=8"
req_components = list(
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/cell/infinite/abductor = 1)
def_components = list(
/obj/item/weapon/stock_parts/capacitor = /obj/item/weapon/stock_parts/capacitor/quadratic,
/obj/item/weapon/stock_parts/micro_laser = /obj/item/weapon/stock_parts/micro_laser/quadultra)
/obj/item/weapon/circuitboard/machine/emitter
name = "Emitter (Machine Board)"
build_path = /obj/machinery/power/emitter
origin_tech = "programming=3;powerstorage=4;engineering=4"
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
/obj/item/weapon/circuitboard/machine/smes
name = "SMES (Machine Board)"
build_path = /obj/machinery/power/smes
origin_tech = "programming=3;powerstorage=3;engineering=3"
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/cell = 5,
/obj/item/weapon/stock_parts/capacitor = 1)
def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high/empty)
/obj/item/weapon/circuitboard/machine/tesla_coil
name = "Tesla Coil (Machine Board)"
build_path = /obj/machinery/power/tesla_coil
origin_tech = "programming=3;magnets=3;powerstorage=3"
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/machine/grounding_rod
name = "Grounding Rod (Machine Board)"
build_path = /obj/machinery/power/grounding_rod
origin_tech = "programming=3;powerstorage=3;magnets=3;plasmatech=2"
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/machine/power_compressor
name = "Power Compressor (Machine Board)"
build_path = /obj/machinery/power/compressor
origin_tech = "programming=4;powerstorage=4;engineering=4"
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/manipulator = 6)
/obj/item/weapon/circuitboard/machine/power_turbine
name = "Power Turbine (Machine Board)"
build_path = /obj/machinery/power/turbine
origin_tech = "programming=4;powerstorage=4;engineering=4"
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/capacitor = 6)
/obj/item/weapon/circuitboard/machine/chem_dispenser
name = "Portable Chem Dispenser (Machine Board)"
build_path = /obj/machinery/chem_dispenser/constructable
origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/cell = 1)
def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high)
/obj/item/weapon/circuitboard/machine/chem_heater
name = "Chemical Heater (Machine Board)"
build_path = /obj/machinery/chem_heater
origin_tech = "programming=2;engineering=2;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/chem_master
name = "ChemMaster 3000 (Machine Board)"
build_path = /obj/machinery/chem_master
origin_tech = "materials=3;programming=2;biotech=3"
req_components = list(
/obj/item/weapon/reagent_containers/glass/beaker = 2,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/chem_master/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
var/new_name = "ChemMaster"
var/new_path = /obj/machinery/chem_master
if(build_path == /obj/machinery/chem_master)
new_name = "CondiMaster"
new_path = /obj/machinery/chem_master/condimaster
build_path = new_path
name = "[new_name] 3000 (Machine Board)"
to_chat(user, "<span class='notice'>You change the circuit board setting to \"[new_name]\".</span>")
else
return ..()
/obj/item/weapon/circuitboard/machine/chem_master/condi
name = "CondiMaster 3000 (Machine Board)"
build_path = /obj/machinery/chem_master/condimaster
/obj/item/weapon/circuitboard/machine/circuit_imprinter
name = "Circuit Imprinter (Machine Board)"
build_path = /obj/machinery/r_n_d/circuit_imprinter
origin_tech = "engineering=2;programming=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/reagent_containers/glass/beaker = 2)
/obj/item/weapon/circuitboard/machine/destructive_analyzer
name = "Destructive Analyzer (Machine Board)"
build_path = /obj/machinery/r_n_d/destructive_analyzer
origin_tech = "magnets=2;engineering=2;programming=2"
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/machine/experimentor
name = "E.X.P.E.R.I-MENTOR (Machine Board)"
build_path = /obj/machinery/r_n_d/experimentor
origin_tech = "magnets=1;engineering=1;programming=1;biotech=1;bluespace=2"
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/stock_parts/micro_laser = 2)
/obj/item/weapon/circuitboard/machine/protolathe
name = "Protolathe (Machine Board)"
build_path = /obj/machinery/r_n_d/protolathe
origin_tech = "engineering=2;programming=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/reagent_containers/glass/beaker = 2)
/obj/item/weapon/circuitboard/machine/rdserver
name = "R&D Server (Machine Board)"
build_path = /obj/machinery/r_n_d/server
origin_tech = "programming=3"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/scanning_module = 1)
/obj/item/weapon/circuitboard/machine/bsa/back
name = "Bluespace Artillery Generator (Machine Board)"
build_path = /obj/machinery/bsa/back
origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies!
req_components = list(
/obj/item/weapon/stock_parts/capacitor/quadratic = 5,
/obj/item/stack/cable_coil = 2)
/obj/item/weapon/circuitboard/machine/bsa/middle
name = "Bluespace Artillery Fusor (Machine Board)"
build_path = /obj/machinery/bsa/middle
origin_tech = "engineering=2;combat=2;bluespace=2"
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 20,
/obj/item/stack/cable_coil = 2)
/obj/item/weapon/circuitboard/machine/bsa/front
name = "Bluespace Artillery Bore (Machine Board)"
build_path = /obj/machinery/bsa/front
origin_tech = "engineering=2;combat=2;bluespace=2"
req_components = list(
/obj/item/weapon/stock_parts/manipulator/femto = 5,
/obj/item/stack/cable_coil = 2)
/obj/item/weapon/circuitboard/machine/dna_vault
name = "DNA Vault (Machine Board)"
build_path = /obj/machinery/dna_vault
origin_tech = "engineering=2;combat=2;bluespace=2" //No freebies!
req_components = list(
/obj/item/weapon/stock_parts/capacitor/super = 5,
/obj/item/weapon/stock_parts/manipulator/pico = 5,
/obj/item/stack/cable_coil = 2)
/obj/item/weapon/circuitboard/machine/microwave
name = "Microwave (Machine Board)"
build_path = /obj/machinery/microwave
origin_tech = "programming=2;magnets=2"
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/sheet/glass = 1)
@@ -547,7 +547,3 @@
beakers += B1
beakers += B2
#undef EMPTY
#undef WIRED
#undef READY
@@ -20,15 +20,13 @@
var/special = FALSE
var/special_name = "special function"
/obj/machinery/implantchair/New()
..()
/obj/machinery/implantchair/Initialize()
. = ..()
open_machine()
update_icon()
/obj/machinery/implantchair/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
/obj/machinery/implantchair/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "implantchair", name, 375, 280, master_ui, state)
@@ -377,5 +377,5 @@
max_combined_w_class = 200
w_class = WEIGHT_CLASS_TINY
preposition = "in"
can_hold = list(/obj/item/slime_extract, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/blood, /obj/item/weapon/reagent_containers/hypospray/medipen, /obj/item/trash/deadmouse, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)
can_hold = list(/obj/item/slime_extract, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/blood, /obj/item/weapon/reagent_containers/hypospray/medipen, /obj/item/weapon/reagent_containers/food/snacks/deadmouse, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)
resistance_flags = FLAMMABLE
@@ -196,7 +196,7 @@
if(display_contents_with_number)
for(var/datum/numbered_display/ND in display_contents)
ND.sample_object.mouse_opacity = 2
ND.sample_object.mouse_opacity = MOUSE_OPACITY_OPAQUE
ND.sample_object.screen_loc = "[cx]:16,[cy]:16"
ND.sample_object.maptext = "<font color='white'>[(ND.number > 1)? "[ND.number]" : ""]</font>"
ND.sample_object.layer = ABOVE_HUD_LAYER
@@ -207,7 +207,7 @@
cy--
else
for(var/obj/O in contents)
O.mouse_opacity = 2 //This is here so storage items that spawn with contents correctly have the "click around item to equip"
O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip"
O.screen_loc = "[cx]:16,[cy]:16"
O.maptext = ""
O.layer = ABOVE_HUD_LAYER
@@ -350,7 +350,7 @@
orient2hud(usr)
for(var/mob/M in can_see_contents())
show_to(M)
W.mouse_opacity = 2 //So you can click on the area around the item to equip it, instead of having to pixel hunt
W.mouse_opacity = MOUSE_OPACITY_OPAQUE //So you can click on the area around the item to equip it, instead of having to pixel hunt
update_icon()
return 1

Some files were not shown because too many files have changed in this diff Show More