Merge branch 'master' into upstream-merge-29940
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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--
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+129
-142
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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(..())
|
||||
|
||||
@@ -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"
|
||||
..()
|
||||
@@ -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
|
||||
|
||||
@@ -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(..())
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
@@ -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"
|
||||
..()
|
||||
@@ -50,7 +50,7 @@
|
||||
songs += T
|
||||
|
||||
/obj/machinery/disco/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
selection = songs[1]
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
var/list/affecting_areas
|
||||
|
||||
/obj/machinery/door/firedoor/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
CalculateAffectingAreas()
|
||||
|
||||
/obj/machinery/door/firedoor/examine(mob/user)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/obj/item/weapon/reagent_containers/glass)
|
||||
|
||||
/obj/machinery/iv_drip/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
update_icon()
|
||||
drip_containers = typecacheof(drip_containers)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
// luminosity = 1
|
||||
|
||||
/obj/machinery/light_switch/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
area = get_area(src)
|
||||
|
||||
if(otherarea)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
|
||||
req_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS)
|
||||
|
||||
/obj/machinery/navbeacon/New()
|
||||
..()
|
||||
/obj/machinery/navbeacon/Initialize()
|
||||
. = ..()
|
||||
|
||||
set_codes()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user