Merge remote-tracking branch 'citadel/master' into the-p-o-o-l
This commit is contained in:
@@ -408,7 +408,7 @@
|
||||
var/obj/item/organ/tail/cat/tail = new
|
||||
ears.Insert(H, drop_if_replaced=FALSE)
|
||||
tail.Insert(H, drop_if_replaced=FALSE)
|
||||
var/list/honorifics = list("[MALE]" = list("kun"), "[FEMALE]" = list("chan","tan"), "[NEUTER]" = list("san")) //John Robust -> Robust-kun
|
||||
var/list/honorifics = list("[MALE]" = list("kun"), "[FEMALE]" = list("chan","tan"), "[NEUTER]" = list("san"), "[PLURAL]" = list("san")) //John Robust -> Robust-kun
|
||||
var/list/names = splittext(H.real_name," ")
|
||||
var/forename = names.len > 1 ? names[2] : names[1]
|
||||
var/newname = "[forename]-[pick(honorifics["[H.gender]"])]"
|
||||
|
||||
@@ -845,7 +845,11 @@
|
||||
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_LAVALAND];jobban4=[REF(M)]'><font color=red>Lavaland</font></a></td>"
|
||||
else
|
||||
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_LAVALAND];jobban4=[REF(M)]'>Lavaland</a></td>"
|
||||
|
||||
// Ghost cafe
|
||||
if(jobban_isbanned(M,ROLE_GHOSTCAFE))
|
||||
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_GHOSTCAFE];jobban4=[REF(M)]'><font color=red>Lavaland</font></a></td>"
|
||||
else
|
||||
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=[ROLE_GHOSTCAFE];jobban4=[REF(M)]'>Lavaland</a></td>"
|
||||
dat += "</tr></table>"
|
||||
|
||||
//Antagonist (Orange)
|
||||
@@ -2878,6 +2882,8 @@
|
||||
return
|
||||
if(SSdbcore.Connect())
|
||||
var/datum/DBQuery/query_get_mentor = SSdbcore.NewQuery("SELECT id FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'")
|
||||
if(!query_get_mentor.warn_execute())
|
||||
return
|
||||
if(query_get_mentor.NextRow())
|
||||
to_chat(usr, "<span class='danger'>[ckey] is already a mentor.</span>")
|
||||
return
|
||||
|
||||
@@ -419,7 +419,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
if(record_found)//If they have a record we can determine a few things.
|
||||
new_character.real_name = record_found.fields["name"]
|
||||
new_character.gender = record_found.fields["sex"]
|
||||
new_character.gender = record_found.fields["gender"]
|
||||
new_character.age = record_found.fields["age"]
|
||||
new_character.hardset_dna(record_found.fields["identity"], record_found.fields["enzymes"], record_found.fields["name"], record_found.fields["blood_type"], new record_found.fields["species"], record_found.fields["features"])
|
||||
else
|
||||
|
||||
@@ -629,15 +629,12 @@
|
||||
icon_state = "abductor_headset"
|
||||
item_state = "abductor_headset"
|
||||
keyslot2 = new /obj/item/encryptionkey/heads/captain
|
||||
bowman = TRUE
|
||||
|
||||
/obj/item/radio/headset/abductor/Initialize(mapload)
|
||||
. = ..()
|
||||
make_syndie()
|
||||
|
||||
/obj/item/radio/headset/abductor/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
|
||||
/obj/item/radio/headset/abductor/attackby(obj/item/W, mob/user, params)
|
||||
if(W.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
return // Stops humans from disassembling abductor headsets.
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
if(!GlandTest)
|
||||
say("Experimental dissection not detected!")
|
||||
return "<span class='bad'>No glands detected!</span>"
|
||||
if(H.mind != null && H.ckey != null)
|
||||
if(H.mind != null && (H.voluntary_ghosted || (H.ckey != null)))
|
||||
LAZYINITLIST(abductee_minds)
|
||||
LAZYADD(history, H)
|
||||
LAZYADD(abductee_minds, H.mind)
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/mmi/posibrain/soul_vessel, /obj/item/reagent_containers/food/drinks/bottle/holyoil)
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC
|
||||
|
||||
/obj/item/clothing/suit/armor/clockwork/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -22,7 +22,7 @@ Runes can either be invoked by one's self or with many different cultists. Each
|
||||
icon = 'icons/obj/rune.dmi'
|
||||
icon_state = "1"
|
||||
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
layer = LOW_OBJ_LAYER
|
||||
layer = SIGIL_LAYER
|
||||
color = RUNE_COLOR_RED
|
||||
|
||||
var/invocation = "Aiy ele-mayo." //This is said by cultists when the rune is invoked.
|
||||
|
||||
@@ -22,11 +22,19 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
desc = "You aren't entirely sure what this does, but it's very beepy and boopy."
|
||||
background_icon_state = "bg_tech_blue"
|
||||
icon_icon = 'icons/mob/actions/actions_AI.dmi'
|
||||
check_flags = AB_CHECK_CONSCIOUS //can't doomsday if dead.
|
||||
var/mob/living/silicon/ai/owner_AI //The owner AI, so we don't have to typecast every time
|
||||
var/uses //If we have multiple uses of the same power
|
||||
var/auto_use_uses = TRUE //If we automatically use up uses on each activation
|
||||
var/cooldown_period //If applicable, the time in deciseconds we have to wait before using any more modules
|
||||
|
||||
|
||||
/datum/action/innate/ai/New()
|
||||
..()
|
||||
if(uses > 1)
|
||||
desc = "[desc] It has [uses] use\s remaining."
|
||||
button.desc = desc
|
||||
|
||||
/datum/action/innate/ai/Grant(mob/living/L)
|
||||
. = ..()
|
||||
if(!isAI(owner))
|
||||
@@ -38,7 +46,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
/datum/action/innate/ai/IsAvailable()
|
||||
. = ..()
|
||||
if(owner_AI && owner_AI.malf_cooldown > world.time)
|
||||
return
|
||||
return FALSE
|
||||
|
||||
/datum/action/innate/ai/Trigger()
|
||||
. = ..()
|
||||
@@ -49,12 +57,16 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
|
||||
/datum/action/innate/ai/proc/adjust_uses(amt, silent)
|
||||
uses += amt
|
||||
if(!silent && uses)
|
||||
to_chat(owner, "<span class='notice'>[name] now has <b>[uses]</b> use[uses > 1 ? "s" : ""] remaining.</span>")
|
||||
if(!uses)
|
||||
if(initial(uses) > 1) //no need to tell 'em if it was one-use anyway!
|
||||
to_chat(owner, "<span class='warning'>[name] has run out of uses!</span>")
|
||||
qdel(src)
|
||||
if(uses)
|
||||
if(!silent)
|
||||
to_chat(owner, "<span class='notice'>[name] now has <b>[uses]</b> use[uses > 1 ? "s" : ""] remaining.</span>")
|
||||
desc = "[initial(desc)] It has [uses] use\s remaining."
|
||||
UpdateButtonIcon()
|
||||
return
|
||||
if(initial(uses) > 1) //no need to tell 'em if it was one-use anyway!
|
||||
to_chat(owner, "<span class='warning'>[name] has run out of uses!</span>")
|
||||
qdel(src)
|
||||
|
||||
|
||||
//Framework for ranged abilities that can have different effects by left-clicking stuff.
|
||||
/datum/action/innate/ai/ranged
|
||||
@@ -74,13 +86,16 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
|
||||
/datum/action/innate/ai/ranged/adjust_uses(amt, silent)
|
||||
uses += amt
|
||||
if(!silent && uses)
|
||||
to_chat(owner, "<span class='notice'>[name] now has <b>[uses]</b> use[uses > 1 ? "s" : ""] remaining.</span>")
|
||||
if(!uses)
|
||||
if(initial(uses) > 1) //no need to tell 'em if it was one-use anyway!
|
||||
to_chat(owner, "<span class='warning'>[name] has run out of uses!</span>")
|
||||
Remove(owner)
|
||||
QDEL_IN(src, 100) //let any active timers on us finish up
|
||||
if(uses)
|
||||
if(!silent)
|
||||
to_chat(owner, "<span class='notice'>[name] now has <b>[uses]</b> use[uses > 1 ? "s" : ""] remaining.</span>")
|
||||
desc = "[initial(desc)] It has [uses] use\s remaining."
|
||||
UpdateButtonIcon()
|
||||
return
|
||||
if(initial(uses) > 1) //no need to tell 'em if it was one-use anyway!
|
||||
to_chat(owner, "<span class='warning'>[name] has run out of uses!</span>")
|
||||
Remove(owner)
|
||||
QDEL_IN(src, 100) //let any active timers on us finish up
|
||||
|
||||
/datum/action/innate/ai/ranged/Destroy()
|
||||
QDEL_NULL(linked_ability)
|
||||
@@ -97,7 +112,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
var/datum/action/innate/ai/ranged/attached_action
|
||||
|
||||
/obj/effect/proc_holder/ranged_ai/Destroy()
|
||||
QDEL_NULL(attached_action)
|
||||
attached_action = null
|
||||
return ..()
|
||||
|
||||
/obj/effect/proc_holder/ranged_ai/proc/toggle(mob/user)
|
||||
@@ -185,6 +200,8 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
A.playsound_local(A, AM.unlock_sound, 50, 0)
|
||||
else //Adding uses to an existing module
|
||||
action.uses += initial(action.uses)
|
||||
action.desc = "[initial(action.desc)] It has [action.uses] use\s remaining."
|
||||
action.UpdateButtonIcon()
|
||||
temp = "Additional use[action.uses > 1 ? "s" : ""] added to [action.name]!"
|
||||
processing_time -= AM.cost
|
||||
|
||||
@@ -238,6 +255,8 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
return
|
||||
if(alert(owner, "Send arming signal? (true = arm, false = cancel)", "purge_all_life()", "confirm = TRUE;", "confirm = FALSE;") != "confirm = TRUE;")
|
||||
return
|
||||
if (active)
|
||||
return //prevent the AI from activating an already active doomsday
|
||||
active = TRUE
|
||||
set_us_up_the_bomb(owner)
|
||||
|
||||
@@ -245,64 +264,64 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
set waitfor = FALSE
|
||||
to_chat(owner, "<span class='small boldannounce'>run -o -a 'selfdestruct'</span>")
|
||||
sleep(5)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='small boldannounce'>Running executable 'selfdestruct'...</span>")
|
||||
sleep(rand(10, 30))
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
owner.playsound_local(owner, 'sound/misc/bloblarm.ogg', 50, 0)
|
||||
to_chat(owner, "<span class='userdanger'>!!! UNAUTHORIZED SELF-DESTRUCT ACCESS !!!</span>")
|
||||
to_chat(owner, "<span class='boldannounce'>This is a class-3 security violation. This incident will be reported to Central Command.</span>")
|
||||
for(var/i in 1 to 3)
|
||||
sleep(20)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='boldannounce'>Sending security report to Central Command.....[rand(0, 9) + (rand(20, 30) * i)]%</span>")
|
||||
sleep(3)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='small boldannounce'>auth 'akjv9c88asdf12nb' ******************</span>")
|
||||
owner.playsound_local(owner, 'sound/items/timer.ogg', 50, 0)
|
||||
sleep(30)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='boldnotice'>Credentials accepted. Welcome, akjv9c88asdf12nb.</span>")
|
||||
owner.playsound_local(owner, 'sound/misc/server-ready.ogg', 50, 0)
|
||||
sleep(5)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='boldnotice'>Arm self-destruct device? (Y/N)</span>")
|
||||
owner.playsound_local(owner, 'sound/misc/compiler-stage1.ogg', 50, 0)
|
||||
sleep(20)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='small boldannounce'>Y</span>")
|
||||
sleep(15)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='boldnotice'>Confirm arming of self-destruct device? (Y/N)</span>")
|
||||
owner.playsound_local(owner, 'sound/misc/compiler-stage2.ogg', 50, 0)
|
||||
sleep(10)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='small boldannounce'>Y</span>")
|
||||
sleep(rand(15, 25))
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='boldnotice'>Please repeat password to confirm.</span>")
|
||||
owner.playsound_local(owner, 'sound/misc/compiler-stage2.ogg', 50, 0)
|
||||
sleep(14)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='small boldannounce'>******************</span>")
|
||||
sleep(40)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
to_chat(owner, "<span class='boldnotice'>Credentials accepted. Transmitting arming signal...</span>")
|
||||
owner.playsound_local(owner, 'sound/misc/server-ready.ogg', 50, 0)
|
||||
sleep(30)
|
||||
if(!owner || QDELETED(owner))
|
||||
if(QDELETED(owner) || owner.stat == DEAD)
|
||||
return
|
||||
priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", "aimalf")
|
||||
set_security_level("delta")
|
||||
@@ -724,9 +743,10 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
|
||||
/datum/action/innate/ai/blackout
|
||||
name = "Blackout"
|
||||
desc = "Overloads lights across the station."
|
||||
desc = "Overloads random lights across the station."
|
||||
button_icon_state = "blackout"
|
||||
uses = 3
|
||||
auto_use_uses = FALSE
|
||||
|
||||
/datum/action/innate/ai/blackout/Activate()
|
||||
for(var/obj/machinery/power/apc/apc in GLOB.apcs_list)
|
||||
@@ -736,6 +756,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
apc.overload++
|
||||
to_chat(owner, "<span class='notice'>Overcurrent applied to the powernet.</span>")
|
||||
owner.playsound_local(owner, "sparks", 50, 0)
|
||||
adjust_uses(-1)
|
||||
|
||||
|
||||
//Disable Emergency Lights
|
||||
@@ -784,11 +805,6 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
auto_use_uses = FALSE
|
||||
cooldown_period = 30
|
||||
|
||||
/datum/action/innate/ai/reactivate_cameras/New()
|
||||
..()
|
||||
desc = "[desc] There are 30 reactivations remaining."
|
||||
button.desc = desc
|
||||
|
||||
/datum/action/innate/ai/reactivate_cameras/Activate()
|
||||
var/fixed_cameras = 0
|
||||
for(var/V in GLOB.cameranet.cameras)
|
||||
@@ -803,8 +819,6 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
to_chat(owner, "<span class='notice'>Diagnostic complete! Cameras reactivated: <b>[fixed_cameras]</b>. Reactivations remaining: <b>[uses]</b>.</span>")
|
||||
owner.playsound_local(owner, 'sound/items/wirecutter.ogg', 50, 0)
|
||||
adjust_uses(0, TRUE) //Checks the uses remaining
|
||||
if(src && uses) //Not sure if not having src here would cause a runtime, so it's here to be safe
|
||||
desc = "[initial(desc)] There are [uses] reactivations remaining."
|
||||
|
||||
|
||||
//Upgrade Camera Network: EMP-proofs all cameras, in addition to giving them X-ray vision.
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
|
||||
/datum/spellbook_entry/timestop
|
||||
name = "Time Stop"
|
||||
spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/timestop
|
||||
spell_type = /obj/effect/proc_holder/spell/aoe_turf/timestop
|
||||
category = "Defensive"
|
||||
|
||||
/datum/spellbook_entry/smoke
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
return FALSE
|
||||
switch(type)
|
||||
if("feet")
|
||||
if(!H.shoes)
|
||||
if(!H.shoes || !(H.shoes.body_parts_covered & FEET))
|
||||
affecting = H.get_bodypart(pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
||||
H.Knockdown(60)
|
||||
if(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND)
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
/*
|
||||
Quick overview:
|
||||
// Quick overview:
|
||||
//
|
||||
// Pipes combine to form pipelines
|
||||
// Pipelines and other atmospheric objects combine to form pipe_networks
|
||||
// Note: A single pipe_network represents a completely open space
|
||||
//
|
||||
// Pipes -> Pipelines
|
||||
// Pipelines + Other Objects -> Pipe network
|
||||
|
||||
Pipes combine to form pipelines
|
||||
Pipelines and other atmospheric objects combine to form pipe_networks
|
||||
Note: A single pipe_network represents a completely open space
|
||||
|
||||
Pipes -> Pipelines
|
||||
Pipelines + Other Objects -> Pipe network
|
||||
|
||||
*/
|
||||
#define PIPE_VISIBLE_LEVEL 2
|
||||
#define PIPE_HIDDEN_LEVEL 1
|
||||
|
||||
@@ -101,13 +99,14 @@ Pipelines + Other Objects -> Pipe network
|
||||
return node_connects
|
||||
|
||||
/obj/machinery/atmospherics/proc/normalize_cardinal_directions()
|
||||
if(dir==SOUTH)
|
||||
setDir(NORTH)
|
||||
else if(dir==WEST)
|
||||
setDir(EAST)
|
||||
switch(dir)
|
||||
if(SOUTH)
|
||||
setDir(NORTH)
|
||||
if(WEST)
|
||||
setDir(EAST)
|
||||
|
||||
//this is called just after the air controller sets up turfs
|
||||
/obj/machinery/atmospherics/proc/atmosinit(var/list/node_connects)
|
||||
/obj/machinery/atmospherics/proc/atmosinit(list/node_connects)
|
||||
if(!node_connects) //for pipes where order of nodes doesn't matter
|
||||
node_connects = getNodeConnects()
|
||||
|
||||
@@ -119,12 +118,8 @@ Pipelines + Other Objects -> Pipe network
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/proc/setPipingLayer(new_layer)
|
||||
if(pipe_flags & PIPING_DEFAULT_LAYER_ONLY)
|
||||
new_layer = PIPING_LAYER_DEFAULT
|
||||
piping_layer = new_layer
|
||||
pixel_x = (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X
|
||||
pixel_y = (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y
|
||||
layer = initial(layer) + ((piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE)
|
||||
piping_layer = (pipe_flags & PIPING_DEFAULT_LAYER_ONLY) ? PIPING_LAYER_DEFAULT : new_layer
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/proc/can_be_node(obj/machinery/atmospherics/target, iteration)
|
||||
return connection_check(target, piping_layer)
|
||||
@@ -176,9 +171,6 @@ Pipelines + Other Objects -> Pipe network
|
||||
nodes[nodes.Find(reference)] = null
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/update_icon()
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/pipe)) //lets you autodrop
|
||||
var/obj/item/pipe/pipe = W
|
||||
@@ -235,15 +227,13 @@ Pipelines + Other Objects -> Pipe network
|
||||
var/datum/gas_mixture/env_air = loc.return_air()
|
||||
pressures = int_air.return_pressure() - env_air.return_pressure()
|
||||
|
||||
var/fuck_you_dir = get_dir(src, user) // Because fuck you...
|
||||
if(!fuck_you_dir)
|
||||
fuck_you_dir = pick(GLOB.cardinals)
|
||||
var/turf/target = get_edge_target_turf(user, fuck_you_dir)
|
||||
var/range = pressures/250
|
||||
var/speed = range/5
|
||||
|
||||
user.visible_message("<span class='danger'>[user] is sent flying by pressure!</span>","<span class='userdanger'>The pressure sends you flying!</span>")
|
||||
user.throw_at(target, range, speed)
|
||||
|
||||
// if get_dir(src, user) is not 0, target is the edge_target_turf on that dir
|
||||
// otherwise, edge_target_turf uses a random cardinal direction
|
||||
// range is pressures / 250
|
||||
// speed is pressures / 1250
|
||||
user.throw_at(get_edge_target_turf(user, get_dir(src, user) || pick(GLOB.cardinals)), pressures / 250, pressures / 1250)
|
||||
|
||||
/obj/machinery/atmospherics/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
@@ -255,30 +245,20 @@ Pipelines + Other Objects -> Pipe network
|
||||
transfer_fingerprints_to(stored)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/proc/getpipeimage(iconset, iconstate, direction, col=rgb(255,255,255))
|
||||
/obj/machinery/atmospherics/proc/getpipeimage(iconset, iconstate, direction, col=rgb(255,255,255), piping_layer=2)
|
||||
|
||||
//Add identifiers for the iconset
|
||||
if(iconsetids[iconset] == null)
|
||||
iconsetids[iconset] = num2text(iconsetids.len + 1)
|
||||
|
||||
//Generate a unique identifier for this image combination
|
||||
var/identifier = iconsetids[iconset] + "_[iconstate]_[direction]_[col]"
|
||||
var/identifier = iconsetids[iconset] + "_[iconstate]_[direction]_[col]_[piping_layer]"
|
||||
|
||||
if((!(. = pipeimages[identifier])))
|
||||
var/image/pipe_overlay
|
||||
pipe_overlay = . = pipeimages[identifier] = image(iconset, iconstate, dir = direction)
|
||||
pipe_overlay.color = col
|
||||
|
||||
/obj/machinery/atmospherics/proc/icon_addintact(var/obj/machinery/atmospherics/node)
|
||||
var/image/img = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_intact", get_dir(src,node), node.pipe_color)
|
||||
underlays += img
|
||||
return img.dir
|
||||
|
||||
/obj/machinery/atmospherics/proc/icon_addbroken(var/connected = FALSE)
|
||||
var/unconnected = (~connected) & initialize_directions
|
||||
for(var/direction in GLOB.cardinals)
|
||||
if(unconnected & direction)
|
||||
underlays += getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_exposed", direction)
|
||||
PIPING_LAYER_SHIFT(pipe_overlay, piping_layer)
|
||||
|
||||
/obj/machinery/atmospherics/on_construction(obj_color, set_layer)
|
||||
if(can_unwrench)
|
||||
@@ -320,7 +300,7 @@ Pipelines + Other Objects -> Pipe network
|
||||
if(target_move.can_crawl_through())
|
||||
if(is_type_in_typecache(target_move, GLOB.ventcrawl_machinery))
|
||||
user.forceMove(target_move.loc) //handle entering and so on.
|
||||
user.visible_message("<span class='notice'>You hear something squeezing through the ducts...</span>","<span class='notice'>You climb out the ventilation system.")
|
||||
user.visible_message("<span class='notice'>You hear something squeezing through the ducts...</span>", "<span class='notice'>You climb out the ventilation system.")
|
||||
else
|
||||
var/list/pipenetdiff = returnPipenets() ^ target_move.returnPipenets()
|
||||
if(pipenetdiff.len)
|
||||
@@ -332,7 +312,7 @@ Pipelines + Other Objects -> Pipe network
|
||||
playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3)
|
||||
else if(is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent
|
||||
user.forceMove(loc)
|
||||
user.visible_message("<span class='notice'>You hear something squeezing through the ducts...</span>","<span class='notice'>You climb out the ventilation system.")
|
||||
user.visible_message("<span class='notice'>You hear something squeezing through the ducts...</span>", "<span class='notice'>You climb out the ventilation system.")
|
||||
|
||||
user.canmove = FALSE
|
||||
addtimer(VARSET_CALLBACK(user, canmove, TRUE), 1)
|
||||
@@ -356,3 +336,6 @@ Pipelines + Other Objects -> Pipe network
|
||||
//Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it.
|
||||
/obj/machinery/atmospherics/proc/can_see_pipes()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/proc/update_layer()
|
||||
layer = initial(layer) + (piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE
|
||||
@@ -8,24 +8,14 @@
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/SetInitDirections()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
if(NORTH, SOUTH)
|
||||
initialize_directions = NORTH|SOUTH
|
||||
if(SOUTH)
|
||||
initialize_directions = NORTH|SOUTH
|
||||
if(EAST)
|
||||
if(EAST, WEST)
|
||||
initialize_directions = EAST|WEST
|
||||
if(WEST)
|
||||
initialize_directions = EAST|WEST
|
||||
/*
|
||||
Iconnery
|
||||
*/
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/hide(intact)
|
||||
update_icon()
|
||||
|
||||
..(intact)
|
||||
/*
|
||||
Housekeeping and pipe network stuff
|
||||
*/
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/getNodeConnects()
|
||||
return list(turn(dir, 180), dir)
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
/*
|
||||
Acts like a normal vent, but has an input AND output.
|
||||
*/
|
||||
//Acts like a normal vent, but has an input AND output.
|
||||
|
||||
#define EXT_BOUND 1
|
||||
#define INPUT_MIN 2
|
||||
#define OUTPUT_MAX 4
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump
|
||||
icon = 'icons/obj/atmospherics/components/unary_devices.dmi' //We reuse the normal vent icons!
|
||||
icon_state = "dpvent_map"
|
||||
icon_state = "dpvent_map-2"
|
||||
|
||||
//node2 is output port
|
||||
//node1 is input port
|
||||
@@ -27,97 +26,25 @@ Acts like a normal vent, but has an input AND output.
|
||||
var/output_pressure_max = 0
|
||||
|
||||
var/pressure_checks = EXT_BOUND
|
||||
|
||||
//EXT_BOUND: Do not pass external_pressure_bound
|
||||
//INPUT_MIN: Do not pass input_pressure_min
|
||||
//OUTPUT_MAX: Do not pass output_pressure_max
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/on
|
||||
on = TRUE
|
||||
icon_state = "dpvent_map_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/Destroy()
|
||||
SSradio.remove_object(src, frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume
|
||||
name = "large dual-port air vent"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix
|
||||
id = INCINERATOR_TOXMIX_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos
|
||||
id = INCINERATOR_ATMOS_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava
|
||||
id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on
|
||||
on = TRUE
|
||||
icon_state = "dpvent_map_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New()
|
||||
..()
|
||||
var/datum/gas_mixture/air1 = airs[1]
|
||||
var/datum/gas_mixture/air2 = airs[2]
|
||||
air1.volume = 1000
|
||||
air2.volume = 1000
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/update_icon_nopipes()
|
||||
cut_overlays()
|
||||
if(showpipe)
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/components/unary_devices.dmi', "dpvent_cap"))
|
||||
var/image/cap = getpipeimage(icon, "dpvent_cap", dir, piping_layer = piping_layer)
|
||||
add_overlay(cap)
|
||||
|
||||
if(!on || !is_operational())
|
||||
icon_state = "vent_off"
|
||||
return
|
||||
|
||||
if(pump_direction)
|
||||
icon_state = "vent_out"
|
||||
else
|
||||
icon_state = "vent_in"
|
||||
icon_state = pump_direction ? "vent_out" : "vent_in"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/process_atmos()
|
||||
..()
|
||||
@@ -248,6 +175,70 @@ Acts like a normal vent, but has an input AND output.
|
||||
broadcast_status()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume
|
||||
name = "large dual-port air vent"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New()
|
||||
..()
|
||||
var/datum/gas_mixture/air1 = airs[1]
|
||||
var/datum/gas_mixture/air2 = airs[2]
|
||||
air1.volume = 1000
|
||||
air2.volume = 1000
|
||||
|
||||
// Mapping
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "dpvent_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "dpvent_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/on
|
||||
on = TRUE
|
||||
icon_state = "dpvent_map_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "dpvent_map_on-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "dpvent_map_on-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix
|
||||
id = INCINERATOR_TOXMIX_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos
|
||||
id = INCINERATOR_ATMOS_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava
|
||||
id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "dpvent_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "dpvent_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on
|
||||
on = TRUE
|
||||
icon_state = "dpvent_map_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "dpvent_map_on-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "dpvent_map_on-3"
|
||||
|
||||
#undef EXT_BOUND
|
||||
#undef INPUT_MIN
|
||||
#undef OUTPUT_MAX
|
||||
|
||||
@@ -7,12 +7,13 @@ Passive gate is similar to the regular pump except:
|
||||
*/
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate
|
||||
icon_state = "passgate_map"
|
||||
icon_state = "passgate_map-2"
|
||||
|
||||
name = "passive gate"
|
||||
desc = "A one-way air valve that does not require power."
|
||||
|
||||
can_unwrench = TRUE
|
||||
shift_underlay_only = FALSE
|
||||
|
||||
interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE
|
||||
|
||||
@@ -25,27 +26,15 @@ Passive gate is similar to the regular pump except:
|
||||
construction_type = /obj/item/pipe/directional
|
||||
pipe_state = "passivegate"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/update_icon_nopipes()
|
||||
if(!on)
|
||||
icon_state = "passgate_off"
|
||||
cut_overlays()
|
||||
return
|
||||
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "passgate_on"))
|
||||
cut_overlays()
|
||||
icon_state = "passgate_off"
|
||||
if(on)
|
||||
add_overlay(getpipeimage(icon, "passgate_on"))
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/process_atmos()
|
||||
..()
|
||||
@@ -176,3 +165,11 @@ Passive gate is similar to the regular pump except:
|
||||
if(. && on)
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench [src], turn it off first!</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "passgate_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "passgate_map-3"
|
||||
@@ -1,23 +1,22 @@
|
||||
/*
|
||||
Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure.
|
||||
|
||||
node1, air1, network1 correspond to input
|
||||
node2, air2, network2 correspond to output
|
||||
|
||||
Thus, the two variables affect pump operation are set in New():
|
||||
air1.volume
|
||||
This is the volume of gas available to the pump that may be transfered to the output
|
||||
air2.volume
|
||||
Higher quantities of this cause more air to be perfected later
|
||||
but overall network volume is also increased as this increases...
|
||||
*/
|
||||
// Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure.
|
||||
//
|
||||
// node1, air1, network1 correspond to input
|
||||
// node2, air2, network2 correspond to output
|
||||
//
|
||||
// Thus, the two variables affect pump operation are set in New():
|
||||
// air1.volume
|
||||
// This is the volume of gas available to the pump that may be transfered to the output
|
||||
// air2.volume
|
||||
// Higher quantities of this cause more air to be perfected later
|
||||
// but overall network volume is also increased as this increases...
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump
|
||||
icon_state = "pump_map"
|
||||
icon_state = "pump_map-2"
|
||||
name = "gas pump"
|
||||
desc = "A pump that moves gas by pressure."
|
||||
|
||||
can_unwrench = TRUE
|
||||
shift_underlay_only = FALSE
|
||||
|
||||
var/target_pressure = ONE_ATMOSPHERE
|
||||
|
||||
@@ -54,30 +53,6 @@ Thus, the two variables affect pump operation are set in New():
|
||||
message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/on
|
||||
on = TRUE
|
||||
icon_state = "pump_on_map"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
if(radio_connection)
|
||||
@@ -85,11 +60,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/update_icon_nopipes()
|
||||
if(!is_operational())
|
||||
icon_state = "pump_off"
|
||||
return
|
||||
|
||||
icon_state = "pump_[on?"on":"off"]"
|
||||
icon_state = (on && is_operational()) ? "pump_on" : "pump_off"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/process_atmos()
|
||||
// ..()
|
||||
@@ -222,3 +193,23 @@ Thus, the two variables affect pump operation are set in New():
|
||||
investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(user)] at [A]")
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/layer1
|
||||
piping_layer = 1
|
||||
icon_state= "pump_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/layer3
|
||||
piping_layer = 3
|
||||
icon_state= "pump_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/on
|
||||
on = TRUE
|
||||
icon_state = "pump_on_map-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state= "pump_on_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state= "pump_on_map-3"
|
||||
@@ -3,12 +3,15 @@ It's like a regular ol' straight pipe, but you can turn it on and off.
|
||||
*/
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve
|
||||
icon_state = "mvalve_map"
|
||||
icon_state = "mvalve_map-2"
|
||||
name = "manual valve"
|
||||
desc = "A pipe with a valve that can be used to disable flow of gas through it."
|
||||
|
||||
can_unwrench = TRUE
|
||||
interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN //Intentionally no allow_silicon flag
|
||||
shift_underlay_only = FALSE
|
||||
|
||||
interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN //Intentionally no allow_silicon flag
|
||||
pipe_flags = PIPING_CARDINAL_AUTONORMALIZE
|
||||
|
||||
var/frequency = 0
|
||||
var/id = null
|
||||
@@ -20,101 +23,87 @@ It's like a regular ol' straight pipe, but you can turn it on and off.
|
||||
|
||||
var/switching = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/update_icon_nopipes(animation = FALSE)
|
||||
normalize_cardinal_directions()
|
||||
if(animation)
|
||||
flick("[valve_type]valve_[on][!on]", src)
|
||||
icon_state = "[valve_type]valve_[on ? "on" : "off"]"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/proc/toggle()
|
||||
if(on)
|
||||
on = FALSE
|
||||
update_icon_nopipes()
|
||||
investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS)
|
||||
else
|
||||
on = TRUE
|
||||
update_icon_nopipes()
|
||||
update_parents()
|
||||
var/datum/pipeline/parent1 = parents[1]
|
||||
parent1.reconcile_air()
|
||||
investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/interact(mob/user)
|
||||
add_fingerprint(usr)
|
||||
if(switching)
|
||||
return
|
||||
update_icon_nopipes(TRUE)
|
||||
switching = TRUE
|
||||
addtimer(CALLBACK(src, .proc/finish_interact), 10)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/proc/finish_interact()
|
||||
toggle()
|
||||
switching = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital // can be controlled by AI
|
||||
icon_state = "dvalve_map-2"
|
||||
name = "digital valve"
|
||||
desc = "A digitally controlled valve."
|
||||
valve_type = "d"
|
||||
pipe_state = "dvalve"
|
||||
interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OPEN_SILICON
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation)
|
||||
if(!is_operational())
|
||||
normalize_cardinal_directions()
|
||||
icon_state = "dvalve_nopower"
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
piping_layer = 1
|
||||
icon_state = "mvalve_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
piping_layer = 3
|
||||
icon_state = "mvalve_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/on
|
||||
on = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
piping_layer = 1
|
||||
icon_state = "mvalve_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/update_icon_nopipes(animation = 0)
|
||||
normalize_dir()
|
||||
if(animation)
|
||||
flick("[valve_type]valve_[on][!on]",src)
|
||||
icon_state = "[valve_type]valve_[on?"on":"off"]"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/proc/open()
|
||||
on = TRUE
|
||||
update_icon_nopipes()
|
||||
update_parents()
|
||||
var/datum/pipeline/parent1 = parents[1]
|
||||
parent1.reconcile_air()
|
||||
investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/proc/close()
|
||||
on = FALSE
|
||||
update_icon_nopipes()
|
||||
investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/proc/normalize_dir()
|
||||
if(dir==SOUTH)
|
||||
setDir(NORTH)
|
||||
else if(dir==WEST)
|
||||
setDir(EAST)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/interact(mob/user)
|
||||
add_fingerprint(usr)
|
||||
update_icon_nopipes(1)
|
||||
if(switching)
|
||||
return
|
||||
switching = TRUE
|
||||
sleep(10)
|
||||
if(on)
|
||||
close()
|
||||
else
|
||||
open()
|
||||
switching = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital // can be controlled by AI
|
||||
name = "digital valve"
|
||||
desc = "A digitally controlled valve."
|
||||
icon_state = "dvalve_map"
|
||||
valve_type = "d"
|
||||
pipe_state = "dvalve"
|
||||
interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OPEN_SILICON
|
||||
piping_layer = 3
|
||||
icon_state = "mvalve_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
piping_layer = 1
|
||||
icon_state = "dvalve_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
piping_layer = 3
|
||||
icon_state = "dvalve_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/on
|
||||
on = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
piping_layer = 1
|
||||
icon_state = "dvalve_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation)
|
||||
if(!is_operational())
|
||||
normalize_dir()
|
||||
icon_state = "dvalve_nopower"
|
||||
return
|
||||
..()
|
||||
piping_layer = 3
|
||||
icon_state = "dvalve_map-3"
|
||||
@@ -1,23 +1,22 @@
|
||||
/*
|
||||
Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure.
|
||||
|
||||
node1, air1, network1 correspond to input
|
||||
node2, air2, network2 correspond to output
|
||||
|
||||
Thus, the two variables affect pump operation are set in New():
|
||||
air1.volume
|
||||
This is the volume of gas available to the pump that may be transfered to the output
|
||||
air2.volume
|
||||
Higher quantities of this cause more air to be perfected later
|
||||
but overall network volume is also increased as this increases...
|
||||
*/
|
||||
// Every cycle, the pump uses the air in air_in to try and make air_out the perfect pressure.
|
||||
//
|
||||
// node1, air1, network1 correspond to input
|
||||
// node2, air2, network2 correspond to output
|
||||
//
|
||||
// Thus, the two variables affect pump operation are set in New():
|
||||
// air1.volume
|
||||
// This is the volume of gas available to the pump that may be transfered to the output
|
||||
// air2.volume
|
||||
// Higher quantities of this cause more air to be perfected later
|
||||
// but overall network volume is also increased as this increases...
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump
|
||||
icon_state = "volpump_map"
|
||||
icon_state = "volpump_map-2"
|
||||
name = "volumetric gas pump"
|
||||
desc = "A pump that moves gas by volume."
|
||||
|
||||
can_unwrench = TRUE
|
||||
shift_underlay_only = FALSE
|
||||
|
||||
var/transfer_rate = MAX_TRANSFER_RATE
|
||||
|
||||
@@ -43,40 +42,12 @@ Thus, the two variables affect pump operation are set in New():
|
||||
message_admins("Volume Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/on
|
||||
on = TRUE
|
||||
icon_state = "volpump_on_map"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/update_icon_nopipes()
|
||||
if(!is_operational())
|
||||
icon_state = "volpump_off"
|
||||
return
|
||||
|
||||
icon_state = "volpump_[on?"on":"off"]"
|
||||
icon_state = on && is_operational() ? "volpump_on" : "volpump_off"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/process_atmos()
|
||||
// ..()
|
||||
@@ -208,3 +179,25 @@ Thus, the two variables affect pump operation are set in New():
|
||||
investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(user)] at [A]")
|
||||
return TRUE
|
||||
|
||||
// Mapping
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "volpump_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "volpump_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/on
|
||||
on = TRUE
|
||||
icon_state = "volpump_on_map"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "volpump_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "volpump_map-3"
|
||||
@@ -1,11 +1,10 @@
|
||||
/*
|
||||
So much of atmospherics.dm was used solely by components, so separating this makes things all a lot cleaner.
|
||||
On top of that, now people can add component-speciic procs/vars if they want!
|
||||
*/
|
||||
// So much of atmospherics.dm was used solely by components, so separating this makes things all a lot cleaner.
|
||||
// On top of that, now people can add component-speciic procs/vars if they want!
|
||||
|
||||
/obj/machinery/atmospherics/components
|
||||
var/welded = FALSE //Used on pumps and scrubbers
|
||||
var/showpipe = FALSE
|
||||
var/shift_underlay_only = TRUE //Layering only shifts underlay?
|
||||
|
||||
var/list/datum/pipeline/parents
|
||||
var/list/datum/gas_mixture/airs
|
||||
@@ -19,9 +18,8 @@ On top of that, now people can add component-speciic procs/vars if they want!
|
||||
var/datum/gas_mixture/A = new
|
||||
A.volume = 200
|
||||
airs[i] = A
|
||||
/*
|
||||
Iconnery
|
||||
*/
|
||||
|
||||
// Iconnery
|
||||
|
||||
/obj/machinery/atmospherics/components/proc/update_icon_nopipes()
|
||||
return
|
||||
@@ -32,7 +30,7 @@ Iconnery
|
||||
underlays.Cut()
|
||||
|
||||
var/turf/T = loc
|
||||
if(level == 2 || !T.intact)
|
||||
if(level == 2 || (istype(T) && !T.intact))
|
||||
showpipe = TRUE
|
||||
plane = GAME_PLANE
|
||||
else
|
||||
@@ -46,14 +44,25 @@ Iconnery
|
||||
|
||||
for(var/i in 1 to device_type) //adds intact pieces
|
||||
if(nodes[i])
|
||||
connected |= icon_addintact(nodes[i])
|
||||
var/obj/machinery/atmospherics/node = nodes[i]
|
||||
var/image/img = get_pipe_underlay("pipe_intact", get_dir(src, node), node.pipe_color)
|
||||
underlays += img
|
||||
connected |= img.dir
|
||||
|
||||
icon_addbroken(connected) //adds broken pieces
|
||||
for(var/direction in GLOB.cardinals)
|
||||
if((initialize_directions & direction) && !(connected & direction))
|
||||
underlays += get_pipe_underlay("pipe_exposed", direction)
|
||||
|
||||
if(!shift_underlay_only)
|
||||
PIPING_LAYER_SHIFT(src, piping_layer)
|
||||
|
||||
/*
|
||||
Pipenet stuff; housekeeping
|
||||
*/
|
||||
/obj/machinery/atmospherics/components/proc/get_pipe_underlay(state, dir, color = null)
|
||||
if(color)
|
||||
. = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, color, piping_layer = shift_underlay_only ? piping_layer : 2)
|
||||
else
|
||||
. = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, piping_layer = shift_underlay_only ? piping_layer : 2)
|
||||
|
||||
// Pipenet stuff; housekeeping
|
||||
|
||||
/obj/machinery/atmospherics/components/nullifyNode(i)
|
||||
if(nodes[i])
|
||||
@@ -129,9 +138,7 @@ Pipenet stuff; housekeeping
|
||||
return new_value
|
||||
return default_set
|
||||
|
||||
/*
|
||||
Helpers
|
||||
*/
|
||||
// Helpers
|
||||
|
||||
/obj/machinery/atmospherics/components/proc/update_parents()
|
||||
for(var/i in 1 to device_type)
|
||||
@@ -146,9 +153,9 @@ Helpers
|
||||
for(var/i in 1 to device_type)
|
||||
. += returnPipenet(nodes[i])
|
||||
|
||||
/*
|
||||
UI Stuff
|
||||
*/
|
||||
|
||||
// UI Stuff
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/ui_status(mob/user)
|
||||
if(allowed(user))
|
||||
@@ -156,9 +163,9 @@ UI Stuff
|
||||
to_chat(user, "<span class='danger'>Access denied.</span>")
|
||||
return UI_CLOSE
|
||||
|
||||
/*
|
||||
Tool acts
|
||||
*/
|
||||
|
||||
// Tool acts
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/analyzer_act(mob/living/user, obj/item/I)
|
||||
atmosanalyzer_scan(airs, user, src)
|
||||
@@ -1,9 +1,12 @@
|
||||
/obj/machinery/atmospherics/components/trinary/filter
|
||||
name = "gas filter"
|
||||
icon_state = "filter_off"
|
||||
desc = "Very useful for filtering gasses."
|
||||
density = FALSE
|
||||
|
||||
name = "gas filter"
|
||||
desc = "Very useful for filtering gasses."
|
||||
|
||||
can_unwrench = TRUE
|
||||
|
||||
var/transfer_rate = MAX_TRANSFER_RATE
|
||||
var/filter_type = null
|
||||
var/frequency = 0
|
||||
@@ -38,38 +41,6 @@
|
||||
message_admins("Filter, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped
|
||||
icon_state = "filter_off_f"
|
||||
flipped = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
// These two filter types have critical_machine flagged to on and thus causes the area they are in to be exempt from the Grid Check event.
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/critical
|
||||
critical_machine = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/critical
|
||||
critical_machine = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
@@ -80,62 +51,26 @@
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos //Used for atmos waste loops
|
||||
on = TRUE
|
||||
icon_state = "filter_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/n2
|
||||
name = "nitrogen filter"
|
||||
filter_type = "n2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/o2
|
||||
name = "oxygen filter"
|
||||
filter_type = "o2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/co2
|
||||
name = "carbon dioxide filter"
|
||||
filter_type = "co2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o
|
||||
name = "nitrous oxide filter"
|
||||
filter_type = "n2o"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma
|
||||
name = "plasma filter"
|
||||
filter_type = "plasma"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped //This feels wrong, I know
|
||||
icon_state = "filter_on_f"
|
||||
flipped = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2
|
||||
name = "nitrogen filter"
|
||||
filter_type = "n2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2
|
||||
name = "oxygen filter"
|
||||
filter_type = "o2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2
|
||||
name = "carbon dioxide filter"
|
||||
filter_type = "co2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o
|
||||
name = "nitrous oxide filter"
|
||||
filter_type = "n2o"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma
|
||||
name = "plasma filter"
|
||||
filter_type = "plasma"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/update_icon()
|
||||
cut_overlays()
|
||||
for(var/direction in GLOB.cardinals)
|
||||
if(direction & initialize_directions)
|
||||
var/obj/machinery/atmospherics/node = findConnecting(direction)
|
||||
if(node)
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction, node.pipe_color))
|
||||
continue
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction))
|
||||
..()
|
||||
if(!(direction & initialize_directions))
|
||||
continue
|
||||
var/obj/machinery/atmospherics/node = findConnecting(direction)
|
||||
|
||||
var/image/cap
|
||||
if(node)
|
||||
cap = getpipeimage(icon, "cap", direction, node.pipe_color, piping_layer = piping_layer)
|
||||
else
|
||||
cap = getpipeimage(icon, "cap", direction, piping_layer = piping_layer)
|
||||
|
||||
add_overlay(cap)
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/update_icon_nopipes()
|
||||
if(on && nodes[1] && nodes[2] && nodes[3] && is_operational())
|
||||
icon_state = "filter_on[flipped?"_f":""]"
|
||||
return
|
||||
icon_state = "filter_off[flipped?"_f":""]"
|
||||
var/on_state = on && nodes[1] && nodes[2] && nodes[3] && is_operational()
|
||||
icon_state = "filter_[on_state ? "on" : "off"][flipped ? "_f" : ""]"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/power_change()
|
||||
var/old_stat = stat
|
||||
@@ -258,3 +193,91 @@
|
||||
if(. && on && is_operational())
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench [src], turn it off first!</span>")
|
||||
return FALSE
|
||||
|
||||
// Mapping
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "filter_off_map-1"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "filter_off_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/on
|
||||
on = TRUE
|
||||
icon_state = "filter_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "filter_on_map-1"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "filter_on_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped
|
||||
icon_state = "filter_off_f"
|
||||
flipped = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "filter_off_f_map-1"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "filter_off_f_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/on
|
||||
on = TRUE
|
||||
icon_state = "filter_on_f"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "filter_on_f_map-1"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "filter_on_f_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos //Used for atmos waste loops
|
||||
on = TRUE
|
||||
icon_state = "filter_on"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/n2
|
||||
name = "nitrogen filter"
|
||||
filter_type = "n2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/o2
|
||||
name = "oxygen filter"
|
||||
filter_type = "o2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/co2
|
||||
name = "carbon dioxide filter"
|
||||
filter_type = "co2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o
|
||||
name = "nitrous oxide filter"
|
||||
filter_type = "n2o"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma
|
||||
name = "plasma filter"
|
||||
filter_type = "plasma"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped //This feels wrong, I know
|
||||
icon_state = "filter_on_f"
|
||||
flipped = TRUE
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2
|
||||
name = "nitrogen filter"
|
||||
filter_type = "n2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2
|
||||
name = "oxygen filter"
|
||||
filter_type = "o2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2
|
||||
name = "carbon dioxide filter"
|
||||
filter_type = "co2"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o
|
||||
name = "nitrous oxide filter"
|
||||
filter_type = "n2o"
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma
|
||||
name = "plasma filter"
|
||||
filter_type = "plasma"
|
||||
|
||||
// These two filter types have critical_machine flagged to on and thus causes the area they are in to be exempt from the Grid Check event.
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/critical
|
||||
critical_machine = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/flipped/critical
|
||||
critical_machine = TRUE
|
||||
@@ -3,9 +3,10 @@
|
||||
density = FALSE
|
||||
|
||||
name = "gas mixer"
|
||||
can_unwrench = TRUE
|
||||
desc = "Very useful for mixing gasses."
|
||||
|
||||
can_unwrench = TRUE
|
||||
|
||||
var/target_pressure = ONE_ATMOSPHERE
|
||||
var/node1_concentration = 0.5
|
||||
var/node2_concentration = 0.5
|
||||
@@ -41,66 +42,27 @@
|
||||
return TRUE
|
||||
|
||||
//node 3 is the outlet, nodes 1 & 2 are intakes
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped
|
||||
icon_state = "mixer_off_f"
|
||||
flipped = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix //For standard airmix to distro
|
||||
name = "air mixer"
|
||||
icon_state = "mixer_on"
|
||||
node1_concentration = N2STANDARD
|
||||
node2_concentration = O2STANDARD
|
||||
on = TRUE
|
||||
target_pressure = MAX_OUTPUT_PRESSURE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse
|
||||
node1_concentration = O2STANDARD
|
||||
node2_concentration = N2STANDARD
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped
|
||||
icon_state = "mixer_on_f"
|
||||
flipped = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse
|
||||
node1_concentration = O2STANDARD
|
||||
node2_concentration = N2STANDARD
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/update_icon()
|
||||
cut_overlays()
|
||||
for(var/direction in GLOB.cardinals)
|
||||
if(direction & initialize_directions)
|
||||
var/obj/machinery/atmospherics/node = findConnecting(direction)
|
||||
if(node)
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction, node.pipe_color))
|
||||
continue
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/components/trinary_devices.dmi', "cap", direction))
|
||||
if(!(direction & initialize_directions))
|
||||
continue
|
||||
var/obj/machinery/atmospherics/node = findConnecting(direction)
|
||||
|
||||
var/image/cap
|
||||
if(node)
|
||||
cap = getpipeimage(icon, "cap", direction, node.pipe_color, piping_layer = piping_layer)
|
||||
else
|
||||
cap = getpipeimage(icon, "cap", direction, piping_layer = piping_layer)
|
||||
|
||||
add_overlay(cap)
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/update_icon_nopipes()
|
||||
if(on && nodes[1] && nodes[2] && nodes[3] && is_operational())
|
||||
icon_state = "mixer_on[flipped?"_f":""]"
|
||||
return
|
||||
icon_state = "mixer_off[flipped?"_f":""]"
|
||||
var/on_state = on && nodes[1] && nodes[2] && nodes[3] && is_operational()
|
||||
icon_state = "mixer_[on_state ? "on" : "off"][flipped ? "_f" : ""]"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/power_change()
|
||||
var/old_stat = stat
|
||||
@@ -233,8 +195,70 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/can_unwrench(mob/user)
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/can_unwrench(mob/user)
|
||||
. = ..()
|
||||
if(. && on && is_operational())
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench [src], turn it off first!</span>")
|
||||
return FALSE
|
||||
|
||||
// mapping
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "mixer_off_map-1"
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "mixer_off_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/on
|
||||
on = TRUE
|
||||
icon_state = "mixer_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "mixer_on_map-1"
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "mixer_on_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped
|
||||
icon_state = "mixer_off_f"
|
||||
flipped = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "mixer_off_f_map-1"
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "mixer_off_f_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped/on
|
||||
on = TRUE
|
||||
icon_state = "mixer_on_f"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "mixer_on_f_map-1"
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/flipped/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "mixer_on_f_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix //For standard airmix to distro
|
||||
name = "air mixer"
|
||||
icon_state = "mixer_on"
|
||||
node1_concentration = N2STANDARD
|
||||
node2_concentration = O2STANDARD
|
||||
target_pressure = MAX_OUTPUT_PRESSURE
|
||||
on = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse
|
||||
node1_concentration = O2STANDARD
|
||||
node2_concentration = N2STANDARD
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped
|
||||
icon_state = "mixer_on_f"
|
||||
flipped = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse
|
||||
node1_concentration = O2STANDARD
|
||||
node2_concentration = N2STANDARD
|
||||
@@ -1,11 +1,12 @@
|
||||
/obj/machinery/atmospherics/components/unary/heat_exchanger
|
||||
|
||||
icon_state = "he_intact"
|
||||
icon_state = "he1"
|
||||
|
||||
name = "heat exchanger"
|
||||
desc = "Exchanges heat between two input gases. Set up for fast heat transfer."
|
||||
|
||||
can_unwrench = TRUE
|
||||
shift_underlay_only = FALSE // not really used
|
||||
|
||||
layer = LOW_OBJ_LAYER
|
||||
|
||||
@@ -13,24 +14,23 @@
|
||||
var/update_cycle
|
||||
|
||||
pipe_state = "heunary"
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/heat_exchanger/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
piping_layer = 1
|
||||
icon_state = "he_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/heat_exchanger/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
piping_layer = 3
|
||||
icon_state = "he_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/heat_exchanger/update_icon()
|
||||
if(nodes[1])
|
||||
icon_state = "he_intact"
|
||||
icon_state = "he1"
|
||||
var/obj/machinery/atmospherics/node = nodes[1]
|
||||
add_atom_colour(node.color, FIXED_COLOUR_PRIORITY)
|
||||
else
|
||||
icon_state = "he_exposed"
|
||||
icon_state = "he0"
|
||||
PIPING_LAYER_SHIFT(src, piping_layer)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/heat_exchanger/atmosinit()
|
||||
if(!partner)
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector
|
||||
icon_state = "inje_map-2"
|
||||
name = "air injector"
|
||||
desc = "Has a valve and pump attached to it."
|
||||
icon_state = "inje_map"
|
||||
use_power = IDLE_POWER_USE
|
||||
can_unwrench = TRUE
|
||||
shift_underlay_only = FALSE
|
||||
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF //really helpful in building gas chambers for xenomorphs
|
||||
|
||||
var/injecting = 0
|
||||
@@ -19,82 +20,20 @@
|
||||
|
||||
pipe_state = "injector"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
on = TRUE
|
||||
volume_rate = 200
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste
|
||||
name = "atmos waste outlet injector"
|
||||
id = ATMOS_GAS_MONITOR_WASTE_ATMOS
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste
|
||||
name = "engine outlet injector"
|
||||
id = ATMOS_GAS_MONITOR_WASTE_ENGINE
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input
|
||||
name = "plasma tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_TOX
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input
|
||||
name = "oxygen tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_O2
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input
|
||||
name = "nitrogen tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_N2
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input
|
||||
name = "mix tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_MIX
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input
|
||||
name = "nitrous oxide tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_N2O
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input
|
||||
name = "air mix tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_AIR
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input
|
||||
name = "carbon dioxide tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_CO2
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input
|
||||
name = "incinerator chamber input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_INCINERATOR
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input
|
||||
name = "toxins mixing input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_TOXINS_LAB
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on
|
||||
on = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/update_icon_nopipes()
|
||||
cut_overlays()
|
||||
if(showpipe)
|
||||
// everything is already shifted so don't shift the cap
|
||||
add_overlay(getpipeimage(icon, "inje_cap", initialize_directions))
|
||||
|
||||
if(!nodes[1] || !on || !is_operational())
|
||||
icon_state = "inje_off"
|
||||
return
|
||||
|
||||
icon_state = "inje_on"
|
||||
else
|
||||
icon_state = "inje_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/power_change()
|
||||
var/old_stat = stat
|
||||
@@ -243,3 +182,63 @@
|
||||
if(. && on && is_operational())
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench [src], turn it off first!</span>")
|
||||
return FALSE
|
||||
|
||||
// mapping
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "inje_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/layer3
|
||||
piping_layer = 2
|
||||
icon_state = "inje_map-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on
|
||||
on = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "inje_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3
|
||||
piping_layer = 2
|
||||
icon_state = "inje_map-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
on = TRUE
|
||||
volume_rate = 200
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste
|
||||
name = "atmos waste outlet injector"
|
||||
id = ATMOS_GAS_MONITOR_WASTE_ATMOS
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste
|
||||
name = "engine outlet injector"
|
||||
id = ATMOS_GAS_MONITOR_WASTE_ENGINE
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input
|
||||
name = "plasma tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_TOX
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input
|
||||
name = "oxygen tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_O2
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input
|
||||
name = "nitrogen tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_N2
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input
|
||||
name = "mix tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_MIX
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input
|
||||
name = "nitrous oxide tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_N2O
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input
|
||||
name = "air mix tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_AIR
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input
|
||||
name = "carbon dioxide tank input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_CO2
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input
|
||||
name = "incinerator chamber input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_INCINERATOR
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input
|
||||
name = "toxins mixing input injector"
|
||||
id = ATMOS_GAS_MONITOR_INPUT_TOXINS_LAB
|
||||
@@ -13,43 +13,51 @@
|
||||
/obj/machinery/atmospherics/components/unary/passive_vent/update_icon_nopipes()
|
||||
cut_overlays()
|
||||
if(showpipe)
|
||||
var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions)
|
||||
var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions, piping_layer = piping_layer)
|
||||
add_overlay(cap)
|
||||
icon_state = "passive_vent"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/passive_vent/process_atmos()
|
||||
..()
|
||||
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
var/environment_pressure = environment.return_pressure()
|
||||
var/pressure_delta = abs(environment_pressure - airs[1].return_pressure())
|
||||
var/active = FALSE
|
||||
|
||||
if((environment.temperature || airs[1].temperature) && pressure_delta > 0.5)
|
||||
if(environment_pressure < airs[1].return_pressure())
|
||||
var/air_temperature = (environment.temperature > 0) ? environment.temperature : airs[1].temperature
|
||||
var/transfer_moles = (pressure_delta * environment.volume) / (air_temperature * R_IDEAL_GAS_EQUATION)
|
||||
var/datum/gas_mixture/removed = airs[1].remove(transfer_moles)
|
||||
loc.assume_air(removed)
|
||||
air_update_turf()
|
||||
var/datum/gas_mixture/external = loc.return_air()
|
||||
var/datum/gas_mixture/internal = airs[1]
|
||||
var/external_pressure = external.return_pressure()
|
||||
var/internal_pressure = internal.return_pressure()
|
||||
var/pressure_delta = abs(external_pressure - internal_pressure)
|
||||
|
||||
if(pressure_delta > 0.5)
|
||||
if(external_pressure < internal_pressure)
|
||||
var/air_temperature = (external.temperature > 0) ? external.temperature : internal.temperature
|
||||
var/transfer_moles = (pressure_delta * external.volume) / (air_temperature * R_IDEAL_GAS_EQUATION)
|
||||
var/datum/gas_mixture/removed = internal.remove(transfer_moles)
|
||||
external.merge(removed)
|
||||
else
|
||||
var/air_temperature = (airs[1].temperature > 0) ? airs[1].temperature : environment.temperature
|
||||
var/output_volume = airs[1].volume
|
||||
var/transfer_moles = (pressure_delta * output_volume) / (air_temperature * R_IDEAL_GAS_EQUATION)
|
||||
transfer_moles = min(transfer_moles, environment.total_moles()*airs[1].volume/environment.volume)
|
||||
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
|
||||
var/air_temperature = (internal.temperature > 0) ? internal.temperature : external.temperature
|
||||
var/transfer_moles = (pressure_delta * internal.volume) / (air_temperature * R_IDEAL_GAS_EQUATION)
|
||||
transfer_moles = min(transfer_moles, external.total_moles() * internal.volume / external.volume)
|
||||
var/datum/gas_mixture/removed = external.remove(transfer_moles)
|
||||
if(isnull(removed))
|
||||
return
|
||||
airs[1].merge(removed)
|
||||
air_update_turf()
|
||||
update_parents()
|
||||
internal.merge(removed)
|
||||
|
||||
active = TRUE
|
||||
|
||||
active = internal.temperature_share(external, OPEN_HEAT_TRANSFER_COEFFICIENT) ? TRUE : active
|
||||
|
||||
if(active)
|
||||
air_update_turf()
|
||||
update_parents()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/passive_vent/can_crawl_through()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/passive_vent/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
piping_layer = 1
|
||||
icon_state = "passive_vent_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/passive_vent/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
piping_layer = 3
|
||||
icon_state = "passive_vent_map-3"
|
||||
|
||||
@@ -1,25 +1,16 @@
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector
|
||||
icon_state = "connector_map-2"
|
||||
name = "connector port"
|
||||
desc = "For connecting portables devices related to atmospherics control."
|
||||
icon = 'icons/obj/atmospherics/components/unary_devices.dmi'
|
||||
icon_state = "connector_map" //Only for mapping purposes, so mappers can see direction
|
||||
can_unwrench = TRUE
|
||||
var/obj/machinery/portable_atmospherics/connected_device
|
||||
use_power = NO_POWER_USE
|
||||
level = 0
|
||||
layer = GAS_FILTER_LAYER
|
||||
pipe_flags = PIPING_ONE_PER_TURF
|
||||
pipe_state = "connector"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
var/obj/machinery/portable_atmospherics/connected_device
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/New()
|
||||
..()
|
||||
@@ -27,29 +18,22 @@
|
||||
|
||||
air_contents.volume = 0
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible
|
||||
level = 2
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/process_atmos()
|
||||
if(!connected_device)
|
||||
return
|
||||
update_parents()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/Destroy()
|
||||
if(connected_device)
|
||||
connected_device.disconnect()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/update_icon_nopipes()
|
||||
icon_state = "connector"
|
||||
if(showpipe)
|
||||
var/image/cap = getpipeimage(icon, "connector_cap", initialize_directions, piping_layer = piping_layer)
|
||||
add_overlay(cap)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/process_atmos()
|
||||
if(!connected_device)
|
||||
return
|
||||
update_parents()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/can_unwrench(mob/user)
|
||||
. = ..()
|
||||
if(. && connected_device)
|
||||
@@ -60,3 +44,24 @@
|
||||
return connected_device.portableConnectorReturnAir()
|
||||
|
||||
/obj/proc/portableConnectorReturnAir()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "connector_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "connector_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible
|
||||
level = 2
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "connector_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "connector_map-3"
|
||||
@@ -5,11 +5,11 @@
|
||||
name = "pressure tank"
|
||||
desc = "A large vessel containing pressurized gas."
|
||||
max_integrity = 800
|
||||
var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters
|
||||
density = TRUE
|
||||
var/gas_type = 0
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
pipe_flags = PIPING_ONE_PER_TURF
|
||||
var/volume = 10000 //in liters
|
||||
var/gas_type = 0
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/New()
|
||||
..()
|
||||
@@ -20,6 +20,16 @@
|
||||
air_contents.gases[gas_type] = AIR_CONTENTS
|
||||
name = "[name] ([GLOB.meta_gas_names[gas_type]])"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/air
|
||||
icon_state = "grey"
|
||||
name = "pressure tank (Air)"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/air/New()
|
||||
..()
|
||||
var/datum/gas_mixture/air_contents = airs[1]
|
||||
air_contents.gases[/datum/gas/oxygen] = AIR_CONTENTS * 0.2
|
||||
air_contents.gases[/datum/gas/nitrogen] = AIR_CONTENTS * 0.8
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/carbon_dioxide
|
||||
gas_type = /datum/gas/carbon_dioxide
|
||||
|
||||
@@ -27,7 +37,6 @@
|
||||
icon_state = "orange"
|
||||
gas_type = /datum/gas/plasma
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/oxygen
|
||||
icon_state = "blue"
|
||||
gas_type = /datum/gas/oxygen
|
||||
@@ -40,12 +49,3 @@
|
||||
icon_state = "red_white"
|
||||
gas_type = /datum/gas/nitrous_oxide
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/air
|
||||
icon_state = "grey"
|
||||
name = "pressure tank (Air)"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/air/New()
|
||||
..()
|
||||
var/datum/gas_mixture/air_contents = airs[1]
|
||||
air_contents.gases[/datum/gas/oxygen] = AIR_CONTENTS * 0.2
|
||||
air_contents.gases[/datum/gas/nitrogen] = AIR_CONTENTS * 0.8
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
layer = OBJ_LAYER
|
||||
circuit = /obj/item/circuitboard/machine/thermomachine
|
||||
|
||||
pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY
|
||||
pipe_flags = PIPING_ONE_PER_TURF
|
||||
|
||||
var/icon_state_off = "freezer"
|
||||
var/icon_state_on = "freezer_1"
|
||||
@@ -28,7 +28,10 @@
|
||||
initialize_directions = dir
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/on_construction()
|
||||
..(dir,dir)
|
||||
var/obj/item/circuitboard/machine/thermomachine/board = circuit
|
||||
if(board)
|
||||
piping_layer = board.pipe_layer
|
||||
..(dir, piping_layer)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/RefreshParts()
|
||||
var/B
|
||||
@@ -37,6 +40,8 @@
|
||||
heat_capacity = 5000 * ((B - 1) ** 2)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
if(panel_open)
|
||||
icon_state = icon_state_open
|
||||
else if(on && is_operational())
|
||||
@@ -44,6 +49,8 @@
|
||||
else
|
||||
icon_state = icon_state_off
|
||||
|
||||
add_overlay(getpipeimage(icon, "pipe", dir, , piping_layer))
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/update_icon_nopipes()
|
||||
cut_overlays()
|
||||
if(showpipe)
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
#define RELEASING 1
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump
|
||||
icon_state = "vent_map-2"
|
||||
name = "air vent"
|
||||
desc = "Has a valve and pump attached to it."
|
||||
icon_state = "vent_map"
|
||||
use_power = IDLE_POWER_USE
|
||||
can_unwrench = TRUE
|
||||
welded = FALSE
|
||||
@@ -32,92 +32,6 @@
|
||||
|
||||
pipe_state = "uvent"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on
|
||||
on = TRUE
|
||||
icon_state = "vent_map_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon
|
||||
pump_direction = SIPHONING
|
||||
pressure_checks = INT_BOUND
|
||||
internal_pressure_bound = 4000
|
||||
external_pressure_bound = 0
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on
|
||||
on = TRUE
|
||||
icon_state = "vent_map_siphon_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
on = TRUE
|
||||
icon_state = "vent_map_siphon_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output
|
||||
name = "plasma tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOX
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output
|
||||
name = "oxygen tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_O2
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output
|
||||
name = "nitrogen tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output
|
||||
name = "mix tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_MIX
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output
|
||||
name = "nitrous oxide tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2O
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output
|
||||
name = "carbon dioxide tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_CO2
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output
|
||||
name = "incinerator chamber output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_INCINERATOR
|
||||
frequency = FREQ_ATMOS_CONTROL
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output
|
||||
name = "toxins mixing output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOXINS_LAB
|
||||
frequency = FREQ_ATMOS_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/New()
|
||||
..()
|
||||
if(!id_tag)
|
||||
@@ -133,82 +47,11 @@
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume
|
||||
name = "large air vent"
|
||||
power_channel = EQUIP
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on
|
||||
on = TRUE
|
||||
icon_state = "vent_map_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon
|
||||
pump_direction = SIPHONING
|
||||
pressure_checks = INT_BOUND
|
||||
internal_pressure_bound = 2000
|
||||
external_pressure_bound = 0
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on
|
||||
on = TRUE
|
||||
icon_state = "vent_map_siphon_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
on = TRUE
|
||||
icon_state = "vent_map_siphon_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output
|
||||
name = "air mix tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_AIR
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/New()
|
||||
..()
|
||||
var/datum/gas_mixture/air_contents = airs[1]
|
||||
air_contents.volume = 1000
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/update_icon_nopipes()
|
||||
cut_overlays()
|
||||
if(showpipe)
|
||||
add_overlay(getpipeimage(icon, "vent_cap", initialize_directions))
|
||||
var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions, piping_layer = piping_layer)
|
||||
add_overlay(cap)
|
||||
|
||||
if(welded)
|
||||
icon_state = "vent_welded"
|
||||
@@ -445,6 +288,149 @@
|
||||
pipe_vision_img.plane = ABOVE_HUD_PLANE
|
||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume
|
||||
name = "large air vent"
|
||||
power_channel = EQUIP
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/New()
|
||||
..()
|
||||
var/datum/gas_mixture/air_contents = airs[1]
|
||||
air_contents.volume = 1000
|
||||
|
||||
// mapping
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "vent_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "vent_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on
|
||||
on = TRUE
|
||||
icon_state = "vent_map_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "vent_map_on-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "vent_map_on-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon
|
||||
pump_direction = SIPHONING
|
||||
pressure_checks = INT_BOUND
|
||||
internal_pressure_bound = 4000
|
||||
external_pressure_bound = 0
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "vent_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "vent_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on
|
||||
on = TRUE
|
||||
icon_state = "vent_map_siphon_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "vent_map_siphon_on-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "vent_map_siphon_on-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
on = TRUE
|
||||
icon_state = "vent_map_siphon_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output
|
||||
name = "plasma tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOX
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output
|
||||
name = "oxygen tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_O2
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output
|
||||
name = "nitrogen tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output
|
||||
name = "mix tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_MIX
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output
|
||||
name = "nitrous oxide tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_N2O
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output
|
||||
name = "carbon dioxide tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_CO2
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/incinerator_output
|
||||
name = "incinerator chamber output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_INCINERATOR
|
||||
frequency = FREQ_ATMOS_CONTROL
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output
|
||||
name = "toxins mixing output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_TOXINS_LAB
|
||||
frequency = FREQ_ATMOS_CONTROL
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "vent_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "map_vent-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on
|
||||
on = TRUE
|
||||
icon_state = "vent_map_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "vent_map_on-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "map_vent_on-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon
|
||||
pump_direction = SIPHONING
|
||||
pressure_checks = INT_BOUND
|
||||
internal_pressure_bound = 2000
|
||||
external_pressure_bound = 0
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "vent_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "map_vent-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on
|
||||
on = TRUE
|
||||
icon_state = "vent_map_siphon_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "vent_map_siphon_on-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "vent_map_siphon_on-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
on = TRUE
|
||||
icon_state = "vent_map_siphon_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output
|
||||
name = "air mix tank output inlet"
|
||||
id_tag = ATMOS_GAS_MONITOR_OUTPUT_AIR
|
||||
|
||||
#undef INT_BOUND
|
||||
#undef EXT_BOUND
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
#define SCRUBBING 1
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber
|
||||
icon_state = "scrub_map-2"
|
||||
name = "air scrubber"
|
||||
desc = "Has a valve and pump attached to it."
|
||||
icon_state = "scrub_map"
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 60
|
||||
@@ -28,16 +28,6 @@
|
||||
|
||||
pipe_state = "scrubber"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/New()
|
||||
..()
|
||||
if(!id_tag)
|
||||
@@ -48,20 +38,6 @@
|
||||
filter_types -= f
|
||||
filter_types += gas_id2path(f)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on
|
||||
on = TRUE
|
||||
icon_state = "scrub_map_on"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy()
|
||||
var/area/A = get_area(src)
|
||||
if (A)
|
||||
@@ -92,7 +68,8 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/update_icon_nopipes()
|
||||
cut_overlays()
|
||||
if(showpipe)
|
||||
add_overlay(getpipeimage(icon, "scrub_cap", initialize_directions))
|
||||
var/image/cap = getpipeimage(icon, "scrub_cap", initialize_directions, piping_layer = piping_layer)
|
||||
add_overlay(cap)
|
||||
|
||||
if(welded)
|
||||
icon_state = "scrub_welded"
|
||||
@@ -322,7 +299,25 @@
|
||||
pipe_vision_img.plane = ABOVE_HUD_PLANE
|
||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "scrub_map-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "scrub_map-3"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on
|
||||
on = TRUE
|
||||
icon_state = "scrub_map_on-2"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "scrub_map_on-1"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "scrub_map_on-3"
|
||||
|
||||
#undef SIPHONING
|
||||
#undef SCRUBBING
|
||||
|
||||
@@ -50,10 +50,9 @@
|
||||
target = candidate
|
||||
setAttachLayer(candidate.piping_layer)
|
||||
|
||||
/obj/machinery/meter/proc/setAttachLayer(var/new_layer)
|
||||
/obj/machinery/meter/proc/setAttachLayer(new_layer)
|
||||
target_layer = new_layer
|
||||
pixel_x = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X
|
||||
pixel_y = (new_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y
|
||||
PIPING_LAYER_DOUBLE_SHIFT(src, target_layer)
|
||||
|
||||
/obj/machinery/meter/process_atmos()
|
||||
if(!(target?.flags_1 & INITIALIZED_1))
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging
|
||||
icon = 'icons/obj/atmospherics/pipes/heat.dmi'
|
||||
level = 2
|
||||
var/minimum_temperature_difference = 20
|
||||
var/thermal_conductivity = WINDOW_HEAT_TRANSFER_COEFFICIENT
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction
|
||||
icon = 'icons/obj/atmospherics/pipes/junction.dmi'
|
||||
icon_state = "intact"
|
||||
icon = 'icons/obj/atmospherics/pipes/he-junction.dmi'
|
||||
icon_state = "pipe11-2"
|
||||
|
||||
name = "junction"
|
||||
desc = "A one meter junction that connects regular and heat-exchanging pipe."
|
||||
@@ -15,21 +15,11 @@
|
||||
construction_type = /obj/item/pipe/directional
|
||||
pipe_state = "junction"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction/SetInitDirections()
|
||||
switch(dir)
|
||||
if(NORTH,SOUTH)
|
||||
if(NORTH, SOUTH)
|
||||
initialize_directions = SOUTH|NORTH
|
||||
if(EAST,WEST)
|
||||
if(EAST, WEST)
|
||||
initialize_directions = WEST|EAST
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction/getNodeConnects()
|
||||
@@ -37,5 +27,19 @@
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction/isConnectable(obj/machinery/atmospherics/target, given_layer, he_type_check)
|
||||
if(dir == get_dir(target, src))
|
||||
return ..(target, given_layer, FALSE) //we want a normal pipe instead
|
||||
return ..(target, given_layer, FALSE) //we want a normal pipe instead
|
||||
return ..(target, given_layer, TRUE)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction/update_icon()
|
||||
icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]"
|
||||
update_layer()
|
||||
update_alpha()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "pipe11-1"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "pipe11-3"
|
||||
@@ -1,6 +1,6 @@
|
||||
//3-way manifold
|
||||
//3-Way Manifold
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold
|
||||
icon_state = "manifold"
|
||||
icon_state = "manifold-2"
|
||||
|
||||
name = "pipe manifold"
|
||||
desc = "A manifold composed of regular pipes."
|
||||
@@ -13,74 +13,34 @@
|
||||
construction_type = /obj/item/pipe/trinary
|
||||
pipe_state = "he_manifold"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
var/mutable_appearance/center
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
/obj/machinery/atmospherics/pipe/manifold/Initialize()
|
||||
icon_state = ""
|
||||
center = mutable_appearance(icon, "manifold_center")
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/SetInitDirections()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = EAST|SOUTH|WEST
|
||||
if(SOUTH)
|
||||
initialize_directions = WEST|NORTH|EAST
|
||||
if(EAST)
|
||||
initialize_directions = SOUTH|WEST|NORTH
|
||||
if(WEST)
|
||||
initialize_directions = NORTH|EAST|SOUTH
|
||||
initialize_directions = NORTH|SOUTH|EAST|WEST
|
||||
initialize_directions &= ~dir
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/update_icon()
|
||||
var/invis = invisibility ? "-f" : ""
|
||||
|
||||
icon_state = "manifold_center[invis]"
|
||||
|
||||
cut_overlays()
|
||||
PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer)
|
||||
add_overlay(center)
|
||||
|
||||
//Add non-broken pieces
|
||||
for(var/i in 1 to device_type)
|
||||
if(nodes[i])
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, nodes[i])))
|
||||
add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) )
|
||||
|
||||
//4-way manifold
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w
|
||||
icon_state = "manifold4w"
|
||||
update_layer()
|
||||
update_alpha()
|
||||
|
||||
name = "4-way pipe manifold"
|
||||
desc = "A manifold composed of heat-exchanging pipes."
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "manifold-1"
|
||||
|
||||
initialize_directions = NORTH|SOUTH|EAST|WEST
|
||||
|
||||
device_type = QUATERNARY
|
||||
|
||||
construction_type = /obj/item/pipe/quaternary
|
||||
pipe_state = "he_manifold4w"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections()
|
||||
initialize_directions = initial(initialize_directions)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon()
|
||||
var/invis = invisibility ? "-f" : ""
|
||||
|
||||
icon_state = "manifold4w_center[invis]"
|
||||
|
||||
cut_overlays()
|
||||
|
||||
//Add non-broken pieces
|
||||
for(var/i in 1 to device_type)
|
||||
if(nodes[i])
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, nodes[i])))
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "manifold-3"
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
//4-Way Manifold
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w
|
||||
icon = 'icons/obj/atmospherics/pipes/he-manifold.dmi'
|
||||
icon_state = "manifold4w-2"
|
||||
|
||||
name = "4-way pipe manifold"
|
||||
desc = "A manifold composed of heat-exchanging pipes."
|
||||
|
||||
initialize_directions = NORTH|SOUTH|EAST|WEST
|
||||
|
||||
device_type = QUATERNARY
|
||||
|
||||
construction_type = /obj/item/pipe/quaternary
|
||||
pipe_state = "he_manifold4w"
|
||||
|
||||
var/mutable_appearance/center
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/New()
|
||||
icon_state = ""
|
||||
center = mutable_appearance(icon, "manifold4w_center")
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/SetInitDirections()
|
||||
initialize_directions = initial(initialize_directions)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer)
|
||||
add_overlay(center)
|
||||
|
||||
//Add non-broken pieces
|
||||
for(var/i in 1 to device_type)
|
||||
if(nodes[i])
|
||||
add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) )
|
||||
|
||||
update_layer()
|
||||
update_alpha()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "manifold4w-1"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "manifold4w-3"
|
||||
@@ -1,46 +1,38 @@
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple
|
||||
icon_state = "intact"
|
||||
icon = 'icons/obj/atmospherics/pipes/he-simple.dmi'
|
||||
icon_state = "pipe11-2"
|
||||
|
||||
name = "pipe"
|
||||
desc = "A one meter section of heat-exchanging pipe."
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH|NORTH
|
||||
pipe_flags = PIPING_CARDINAL_AUTONORMALIZE
|
||||
|
||||
device_type = BINARY
|
||||
|
||||
construction_type = /obj/item/pipe/binary/bendable
|
||||
pipe_state = "he"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/SetInitDirections()
|
||||
if(dir in GLOB.diagonals)
|
||||
initialize_directions = dir
|
||||
return
|
||||
switch(dir)
|
||||
if(NORTH,SOUTH)
|
||||
if(NORTH, SOUTH)
|
||||
initialize_directions = SOUTH|NORTH
|
||||
if(EAST,WEST)
|
||||
initialize_directions = WEST|EAST
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/proc/normalize_dir()
|
||||
if(dir==SOUTH)
|
||||
setDir(NORTH)
|
||||
else if(dir==WEST)
|
||||
setDir(EAST)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/atmosinit()
|
||||
normalize_dir()
|
||||
..()
|
||||
if(EAST, WEST)
|
||||
initialize_directions = EAST|WEST
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/update_icon()
|
||||
normalize_dir()
|
||||
..()
|
||||
icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]"
|
||||
update_layer()
|
||||
update_alpha()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1
|
||||
piping_layer = 1
|
||||
icon_state = "pipe11-1"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3
|
||||
piping_layer = 3
|
||||
icon_state = "pipe11-3"
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/machinery/atmospherics/pipe/layer_manifold
|
||||
name = "pipe-layer manifold"
|
||||
name = "layer adaptor"
|
||||
icon = 'icons/obj/atmospherics/pipes/manifold.dmi'
|
||||
icon_state = "manifoldlayer"
|
||||
desc = "A special pipe to bridge pipe layers with."
|
||||
@@ -9,14 +9,15 @@
|
||||
piping_layer = PIPING_LAYER_DEFAULT
|
||||
device_type = 0
|
||||
volume = 260
|
||||
construction_type = /obj/item/pipe/binary
|
||||
pipe_state = "manifoldlayer"
|
||||
var/list/front_nodes
|
||||
var/list/back_nodes
|
||||
construction_type = /obj/item/pipe/binary
|
||||
pipe_state = "layer_manifold"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/layer_manifold/Initialize()
|
||||
front_nodes = list()
|
||||
back_nodes = list()
|
||||
icon_state = "manifoldlayer_center"
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/layer_manifold/Destroy()
|
||||
@@ -36,30 +37,36 @@
|
||||
return front_nodes + back_nodes + nodes
|
||||
|
||||
/obj/machinery/atmospherics/pipe/layer_manifold/update_icon() //HEAVILY WIP FOR UPDATE ICONS!!
|
||||
layer = (initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE)) //This is above everything else.
|
||||
var/invis = invisibility ? "-f" : ""
|
||||
icon_state = "[initial(icon_state)][invis]"
|
||||
cut_overlays()
|
||||
for(var/obj/machinery/atmospherics/A in front_nodes)
|
||||
add_attached_image(A)
|
||||
for(var/obj/machinery/atmospherics/A in back_nodes)
|
||||
add_attached_image(A)
|
||||
layer = initial(layer) + (PIPING_LAYER_MAX * PIPING_LAYER_LCHANGE) //This is above everything else.
|
||||
|
||||
/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_image(obj/machinery/atmospherics/A)
|
||||
var/invis = A.invisibility ? "-f" : ""
|
||||
for(var/node in front_nodes)
|
||||
add_attached_images(node)
|
||||
for(var/node in back_nodes)
|
||||
add_attached_images(node)
|
||||
|
||||
update_alpha()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_images(obj/machinery/atmospherics/A)
|
||||
if(!A)
|
||||
return
|
||||
if(istype(A, /obj/machinery/atmospherics/pipe/layer_manifold))
|
||||
for(var/i = PIPING_LAYER_MIN, i <= PIPING_LAYER_MAX, i++)
|
||||
var/image/I = getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full_layer_long[invis]", get_dir(src, A), A.pipe_color)
|
||||
I.pixel_x = (i - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X
|
||||
I.pixel_y = (i - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y
|
||||
I.layer = layer - 0.01
|
||||
add_overlay(I)
|
||||
for(var/i in PIPING_LAYER_MIN to PIPING_LAYER_MAX)
|
||||
add_attached_image(get_dir(src, A), i)
|
||||
return
|
||||
add_attached_image(get_dir(src, A), A.piping_layer, A.pipe_color)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/layer_manifold/proc/add_attached_image(p_dir, p_layer, p_color = null)
|
||||
var/image/I
|
||||
|
||||
if(p_color)
|
||||
I = getpipeimage(icon, "pipe", p_dir, p_color, piping_layer = piping_layer)
|
||||
else
|
||||
var/image/I = getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full_layer_long[invis]", get_dir(src, A), A.pipe_color)
|
||||
I.pixel_x = A.pixel_x
|
||||
I.pixel_y = A.pixel_y
|
||||
I.layer = layer - 0.01
|
||||
add_overlay(I)
|
||||
I = getpipeimage(icon, "pipe", p_dir, piping_layer = piping_layer)
|
||||
|
||||
I.layer = layer - 0.01
|
||||
PIPING_LAYER_SHIFT(I, p_layer)
|
||||
add_overlay(I)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/layer_manifold/SetInitDirections()
|
||||
switch(dir)
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
3-Way Manifold
|
||||
*/
|
||||
//3-Way Manifold
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold
|
||||
icon = 'icons/obj/atmospherics/pipes/manifold.dmi'
|
||||
icon_state = "manifold"
|
||||
icon_state = "manifold-2"
|
||||
|
||||
name = "pipe manifold"
|
||||
desc = "A manifold composed of regular pipes."
|
||||
@@ -16,399 +15,25 @@
|
||||
construction_type = /obj/item/pipe/trinary
|
||||
pipe_state = "manifold"
|
||||
|
||||
var/mutable_appearance/center
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/Initialize()
|
||||
icon_state = ""
|
||||
center = mutable_appearance(icon, "manifold_center")
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/SetInitDirections()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = EAST|SOUTH|WEST
|
||||
if(SOUTH)
|
||||
initialize_directions = WEST|NORTH|EAST
|
||||
if(EAST)
|
||||
initialize_directions = SOUTH|WEST|NORTH
|
||||
if(WEST)
|
||||
initialize_directions = NORTH|EAST|SOUTH
|
||||
initialize_directions = NORTH|SOUTH|EAST|WEST
|
||||
initialize_directions &= ~dir
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/update_icon()
|
||||
var/invis = invisibility ? "-f" : ""
|
||||
|
||||
icon_state = "manifold_center[invis]"
|
||||
|
||||
cut_overlays()
|
||||
PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer)
|
||||
add_overlay(center)
|
||||
|
||||
//Add non-broken pieces
|
||||
for(var/i in 1 to device_type)
|
||||
if(nodes[i])
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, nodes[i])))
|
||||
|
||||
//Colored pipes, use these for mapping
|
||||
/obj/machinery/atmospherics/pipe/manifold/general
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers
|
||||
name="scrubbers pipe"
|
||||
pipe_color=rgb(255,0,0)
|
||||
color=rgb(255,0,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply
|
||||
name="air supply pipe"
|
||||
pipe_color=rgb(0,0,255)
|
||||
color=rgb(0,0,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain
|
||||
name="main air supply pipe"
|
||||
pipe_color=rgb(130,43,255)
|
||||
color=rgb(130,43,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow
|
||||
pipe_color=rgb(255,198,0)
|
||||
color=rgb(255,198,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan
|
||||
pipe_color=rgb(0,255,249)
|
||||
color=rgb(0,255,249)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green
|
||||
pipe_color=rgb(30,255,0)
|
||||
color=rgb(30,255,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange
|
||||
pipe_color=rgb(255,129,25)
|
||||
color=rgb(255,129,25)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple
|
||||
pipe_color=rgb(128,0,182)
|
||||
color=rgb(128,0,182)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark
|
||||
pipe_color=rgb(69,69,69)
|
||||
color=rgb(69,69,69)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet
|
||||
pipe_color=rgb(64,0,128)
|
||||
color=rgb(64,0,128)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown
|
||||
pipe_color=rgb(178,100,56)
|
||||
color=rgb(178,100,56)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) )
|
||||
update_layer()
|
||||
update_alpha()
|
||||
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
4-way manifold
|
||||
*/
|
||||
//4-Way Manifold
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w
|
||||
icon = 'icons/obj/atmospherics/pipes/manifold.dmi'
|
||||
icon_state = "manifold4w"
|
||||
icon_state = "manifold4w-2"
|
||||
|
||||
name = "4-way pipe manifold"
|
||||
desc = "A manifold composed of regular pipes."
|
||||
@@ -15,391 +14,24 @@
|
||||
construction_type = /obj/item/pipe/quaternary
|
||||
pipe_state = "manifold4w"
|
||||
|
||||
var/mutable_appearance/center
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/Initialize()
|
||||
icon_state = ""
|
||||
center = mutable_appearance(icon, "manifold4w_center")
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/SetInitDirections()
|
||||
initialize_directions = initial(initialize_directions)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/update_icon()
|
||||
var/invis = invisibility ? "-f" : ""
|
||||
|
||||
icon_state = "manifold4w_center[invis]"
|
||||
|
||||
cut_overlays()
|
||||
PIPING_LAYER_DOUBLE_SHIFT(center, piping_layer)
|
||||
add_overlay(center)
|
||||
|
||||
//Add non-broken pieces
|
||||
for(var/i in 1 to device_type)
|
||||
if(nodes[i])
|
||||
add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, nodes[i])))
|
||||
|
||||
//Colored pipes, use these for mapping
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers
|
||||
name="scrubbers pipe"
|
||||
pipe_color=rgb(255,0,0)
|
||||
color=rgb(255,0,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply
|
||||
name="air supply pipe"
|
||||
pipe_color=rgb(0,0,255)
|
||||
color=rgb(0,0,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain
|
||||
name="main air supply pipe"
|
||||
pipe_color=rgb(130,43,255)
|
||||
color=rgb(130,43,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow
|
||||
pipe_color=rgb(255,198,0)
|
||||
color=rgb(255,198,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan
|
||||
pipe_color=rgb(0,255,249)
|
||||
color=rgb(0,255,249)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green
|
||||
pipe_color=rgb(30,255,0)
|
||||
color=rgb(30,255,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange
|
||||
pipe_color=rgb(255,129,25)
|
||||
color=rgb(255,129,25)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple
|
||||
pipe_color=rgb(128,0,182)
|
||||
color=rgb(128,0,182)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark
|
||||
pipe_color=rgb(69,69,69)
|
||||
color=rgb(69,69,69)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet
|
||||
pipe_color=rgb(64,0,128)
|
||||
color=rgb(64,0,128)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown
|
||||
pipe_color=rgb(178,100,56)
|
||||
color=rgb(178,100,56)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
add_overlay( getpipeimage(icon, "pipe-[piping_layer]", get_dir(src, nodes[i])) )
|
||||
update_layer()
|
||||
update_alpha()
|
||||
65
code/modules/atmospherics/machinery/pipes/mapping.dm
Normal file
65
code/modules/atmospherics/machinery/pipes/mapping.dm
Normal file
@@ -0,0 +1,65 @@
|
||||
//Colored pipes, use these for mapping
|
||||
|
||||
#define HELPER_PARTIAL(Fulltype, Iconbase, Color) \
|
||||
##Fulltype { \
|
||||
pipe_color = Color; \
|
||||
color = Color; \
|
||||
} \
|
||||
##Fulltype/visible { \
|
||||
level = PIPE_VISIBLE_LEVEL; \
|
||||
layer = GAS_PIPE_VISIBLE_LAYER; \
|
||||
} \
|
||||
##Fulltype/visible/layer1 { \
|
||||
piping_layer = 1; \
|
||||
icon_state = Iconbase + "-1"; \
|
||||
} \
|
||||
##Fulltype/visible/layer3 { \
|
||||
piping_layer = 3; \
|
||||
icon_state = Iconbase + "-3"; \
|
||||
} \
|
||||
##Fulltype/hidden { \
|
||||
level = PIPE_HIDDEN_LEVEL; \
|
||||
} \
|
||||
##Fulltype/hidden/layer1 { \
|
||||
piping_layer = 1; \
|
||||
icon_state = Iconbase + "-1"; \
|
||||
} \
|
||||
##Fulltype/hidden/layer3 { \
|
||||
piping_layer = 3; \
|
||||
icon_state = Iconbase + "-3"; \
|
||||
}
|
||||
|
||||
#define HELPER_PARTIAL_NAMED(Fulltype, Iconbase, Name, Color) \
|
||||
HELPER_PARTIAL(Fulltype, Iconbase, Color) \
|
||||
##Fulltype { \
|
||||
name = Name; \
|
||||
}
|
||||
|
||||
#define HELPER(Type, Color) \
|
||||
HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/simple/##Type, "pipe11", Color) \
|
||||
HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/manifold/##Type, "manifold", Color) \
|
||||
HELPER_PARTIAL(/obj/machinery/atmospherics/pipe/manifold4w/##Type, "manifold4w", Color)
|
||||
|
||||
#define HELPER_NAMED(Type, Name, Color) \
|
||||
HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/simple/##Type, "pipe11", Name, Color) \
|
||||
HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/manifold/##Type, "manifold", Name, Color) \
|
||||
HELPER_PARTIAL_NAMED(/obj/machinery/atmospherics/pipe/manifold4w/##Type, "manifold4w", Name, Color)
|
||||
|
||||
HELPER(general, null)
|
||||
HELPER(yellow, rgb(255, 198, 0))
|
||||
HELPER(cyan, rgb(0, 255, 249))
|
||||
HELPER(green, rgb(30, 255, 0))
|
||||
HELPER(orange, rgb(255, 129, 25))
|
||||
HELPER(purple, rgb(128, 0, 182))
|
||||
HELPER(dark, rgb(69, 69, 69))
|
||||
HELPER(brown, rgb(178, 100, 56))
|
||||
HELPER(violet, rgb(64, 0, 128))
|
||||
|
||||
HELPER_NAMED(scrubbers, "scrubbers pipe", rgb(255, 0, 0))
|
||||
HELPER_NAMED(supply, "air supply pipe", rgb(0, 0, 255))
|
||||
HELPER_NAMED(supplymain, "main air supply pipe", rgb(130, 43, 255))
|
||||
|
||||
#undef HELPER_NAMED
|
||||
#undef HELPER
|
||||
#undef HELPER_PARTIAL_NAMED
|
||||
#undef HELPER_PARTIAL
|
||||
@@ -32,14 +32,6 @@
|
||||
parent = new
|
||||
parent.build_pipeline(src)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/update_icon() //overridden by manifolds
|
||||
if(nodes[1] && nodes[2])
|
||||
icon_state = "intact[invisibility ? "-f" : "" ]"
|
||||
else
|
||||
var/have_node1 = nodes[1] ? TRUE : FALSE
|
||||
var/have_node2 = nodes[2] ? TRUE : FALSE
|
||||
icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/atmosinit()
|
||||
var/turf/T = loc // hide if turf is not intact
|
||||
hide(T.intact)
|
||||
@@ -93,6 +85,13 @@
|
||||
qdel(meter)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/update_icon()
|
||||
. = ..()
|
||||
update_alpha()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/proc/update_alpha()
|
||||
alpha = invisibility ? 64 : 255
|
||||
|
||||
/obj/machinery/atmospherics/pipe/proc/update_node_icon()
|
||||
for(var/i in 1 to device_type)
|
||||
if(nodes[i])
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
/*
|
||||
Simple Pipe
|
||||
The regular pipe you see everywhere, including bent ones.
|
||||
*/
|
||||
// Simple Pipe
|
||||
// The regular pipe you see everywhere, including bent ones.
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple
|
||||
icon = 'icons/obj/atmospherics/pipes/simple.dmi'
|
||||
icon_state = "intact"
|
||||
icon_state = "pipe11-2"
|
||||
|
||||
name = "pipe"
|
||||
desc = "A one meter section of regular pipe."
|
||||
@@ -20,385 +18,16 @@ The regular pipe you see everywhere, including bent ones.
|
||||
pipe_state = "simple"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/SetInitDirections()
|
||||
normalize_cardinal_directions()
|
||||
if(dir in GLOB.diagonals)
|
||||
initialize_directions = dir
|
||||
return
|
||||
switch(dir)
|
||||
if(NORTH,SOUTH)
|
||||
if(NORTH, SOUTH)
|
||||
initialize_directions = SOUTH|NORTH
|
||||
if(EAST,WEST)
|
||||
if(EAST, WEST)
|
||||
initialize_directions = EAST|WEST
|
||||
|
||||
//Colored pipes, use these for mapping
|
||||
/obj/machinery/atmospherics/pipe/simple/general
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/general/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/general/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/general/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers
|
||||
name="scrubbers pipe"
|
||||
pipe_color=rgb(255,0,0)
|
||||
color=rgb(255,0,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply
|
||||
name="air supply pipe"
|
||||
pipe_color=rgb(0,0,255)
|
||||
color=rgb(0,0,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain
|
||||
name="main air supply pipe"
|
||||
pipe_color=rgb(130,43,255)
|
||||
color=rgb(130,43,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow
|
||||
pipe_color=rgb(255,198,0)
|
||||
color=rgb(255,198,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan
|
||||
pipe_color=rgb(0,255,249)
|
||||
color=rgb(0,255,249)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green
|
||||
pipe_color=rgb(30,255,0)
|
||||
color=rgb(30,255,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange
|
||||
pipe_color=rgb(255,129,25)
|
||||
color=rgb(255,129,25)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple
|
||||
pipe_color=rgb(128,0,182)
|
||||
color=rgb(128,0,182)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark
|
||||
pipe_color=rgb(69,69,69)
|
||||
color=rgb(69,69,69)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet
|
||||
pipe_color=rgb(64,0,128)
|
||||
color=rgb(64,0,128)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown
|
||||
pipe_color=rgb(178,100,56)
|
||||
color=rgb(178,100,56)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown/visible/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer1
|
||||
piping_layer = PIPING_LAYER_MIN
|
||||
pixel_x = -PIPING_LAYER_P_X
|
||||
pixel_y = -PIPING_LAYER_P_Y
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer3
|
||||
piping_layer = PIPING_LAYER_MAX
|
||||
pixel_x = PIPING_LAYER_P_X
|
||||
pixel_y = PIPING_LAYER_P_Y
|
||||
/obj/machinery/atmospherics/pipe/simple/update_icon()
|
||||
icon_state = "pipe[nodes[1] ? "1" : "0"][nodes[2] ? "1" : "0"]-[piping_layer]"
|
||||
update_layer()
|
||||
update_alpha()
|
||||
@@ -10,13 +10,13 @@
|
||||
/datum/bounty/item/assistant/skateboard
|
||||
name = "Skateboard"
|
||||
description = "Nanotrasen has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up."
|
||||
reward = 750 // the tony hawk
|
||||
reward = 800 // the tony hawk
|
||||
wanted_types = list(/obj/vehicle/ridden/scooter/skateboard)
|
||||
|
||||
/datum/bounty/item/assistant/stunprod
|
||||
name = "Stunprod"
|
||||
description = "CentCom demands a stunprod to use against dissidents. Craft one, then ship it."
|
||||
reward = 800
|
||||
reward = 950
|
||||
wanted_types = list(/obj/item/melee/baton/cattleprod)
|
||||
|
||||
/datum/bounty/item/assistant/soap
|
||||
@@ -126,7 +126,7 @@
|
||||
/datum/bounty/item/assistant/shadyjims
|
||||
name = "Shady Jim's"
|
||||
description = "There's an irate officer at CentCom demanding that he receive a box of Shady Jim's cigarettes. Please ship one. He's starting to make threats."
|
||||
reward = 750
|
||||
reward = 1150
|
||||
wanted_types = list(/obj/item/storage/fancy/cigarettes/cigpack_shadyjims)
|
||||
|
||||
/datum/bounty/item/assistant/potted_plants
|
||||
@@ -148,14 +148,14 @@
|
||||
reward = 1000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/restraints/handcuffs)
|
||||
|
||||
/* I don't like that you can just buy a box of monkey cubes and finish this for -half- of them.
|
||||
/datum/bounty/item/assistant/monkey_cubes
|
||||
name = "Monkey Cubes"
|
||||
description = "Due to a recent genetics accident, Central Command is in serious need of monkeys. Your mission is to ship monkey cubes."
|
||||
reward = 2000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/monkeycube)
|
||||
|
||||
*/
|
||||
/datum/bounty/item/assistant/chainsaw
|
||||
name = "Chainsaw"
|
||||
description = "The chef at CentCom is having trouble butchering her animals. She requests one chainsaw, please."
|
||||
@@ -208,15 +208,22 @@
|
||||
wanted_types = list(/obj/item/shield/makeshift)
|
||||
|
||||
/datum/bounty/item/assistant/toolbelts
|
||||
name = "Tool Belts"
|
||||
name = "Tool Belts" //Made it 5 so you can't just buy one set of toolbelts to finish the bounty.
|
||||
description = "These things always seem to go missing. Ship us a few to help us restock."
|
||||
reward = 1350
|
||||
required_count = 3
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/storage/belt/utility)
|
||||
|
||||
/datum/bounty/item/assistant/gasmasks
|
||||
name = "Gas Masks"
|
||||
description = "The good news is that we have more miasma than we'll ever need. The bad news is, somone opened the release valve on the canisters. Ship us some gas masks!"
|
||||
reward = 1100
|
||||
reward = 1250
|
||||
required_count = 4
|
||||
wanted_types = list(/obj/item/clothing/mask/gas)
|
||||
|
||||
/datum/bounty/item/assistant/pneumatic_cannon
|
||||
name = "Pneumatic Cannons"
|
||||
description = "Have you ever launched a tennis ball, newspaper, or ***** at someones head from across the room? No? We haven't either. Help us rectify this."
|
||||
reward = 2000
|
||||
required_count = 2
|
||||
wanted_types = list(/obj/item/pneumatic_cannon/ghetto)
|
||||
|
||||
@@ -10,22 +10,23 @@
|
||||
reward += multiplier * 1000
|
||||
required_count = rand(5, 10)
|
||||
|
||||
//Easy Stuff (1200)
|
||||
|
||||
/datum/bounty/item/botany/ambrosia_vulgaris
|
||||
name = "Ambrosia Vulgaris Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris)
|
||||
foodtype = "stew"
|
||||
|
||||
/datum/bounty/item/botany/ambrosia_gaia
|
||||
name = "Ambrosia Gaia Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia)
|
||||
multiplier = 4
|
||||
foodtype = "stew"
|
||||
/datum/bounty/item/botany/pineapples
|
||||
name = "Pineapples"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/pineapple)
|
||||
bonus_desc = "Not for human consumption."
|
||||
foodtype = "ashtray"
|
||||
|
||||
/datum/bounty/item/botany/apple_golden
|
||||
name = "Golden Apples"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/apple/gold)
|
||||
multiplier = 4
|
||||
foodtype = "dessert"
|
||||
/datum/bounty/item/botany/tomato
|
||||
name = "Tomatoes"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue)
|
||||
|
||||
/datum/bounty/item/botany/banana
|
||||
name = "Bananas"
|
||||
@@ -33,58 +34,9 @@
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace)
|
||||
foodtype = "banana split"
|
||||
|
||||
/datum/bounty/item/botany/banana_bluespace
|
||||
name = "Bluespace Bananas"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace)
|
||||
multiplier = 2
|
||||
foodtype = "banana split"
|
||||
|
||||
/datum/bounty/item/botany/beans_koi
|
||||
name = "Koi Beans"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/koibeans)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/berries_death
|
||||
name = "Death Berries"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/death)
|
||||
multiplier = 2
|
||||
bonus_desc = "He insists that \"he knows what he's doing\"."
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/berries_glow
|
||||
name = "Glow-Berries"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/glow)
|
||||
multiplier = 2
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/cannabis
|
||||
name = "Cannabis Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white, /obj/item/reagent_containers/food/snacks/grown/cannabis/death, /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate)
|
||||
multiplier = 4 //hush money
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/cannabis_white
|
||||
name = "Lifeweed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white)
|
||||
multiplier = 6
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/cannabis_death
|
||||
name = "Deathweed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/death)
|
||||
multiplier = 6
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/cannabis_ultimate
|
||||
name = "Omega Weed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate)
|
||||
multiplier = 6
|
||||
bonus_desc = "Under no circumstances mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
/datum/bounty/item/botany/coconuts
|
||||
name = "Coconuts"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/coconut)
|
||||
|
||||
/datum/bounty/item/botany/wheat
|
||||
name = "Wheat Grains"
|
||||
@@ -98,16 +50,6 @@
|
||||
name = "Chili Peppers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/chili)
|
||||
|
||||
/datum/bounty/item/botany/chili
|
||||
name = "Ice Chili Peppers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/icepepper)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/chili
|
||||
name = "Ghost Chili Peppers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ghost_chili)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/citrus_lime
|
||||
name = "Limes"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime)
|
||||
@@ -129,35 +71,85 @@
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/eggplant)
|
||||
bonus_desc = "Not to be confused with egg-plants."
|
||||
|
||||
/datum/bounty/item/botany/eggplant_eggy
|
||||
name = "Egg-plants"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/shell/eggy)
|
||||
bonus_desc = "Not to be confused with eggplants."
|
||||
multiplier = 2
|
||||
|
||||
// /datum/bounty/item/botany/kudzu
|
||||
// name = "Kudzu Pods"
|
||||
// wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/kudzupod)
|
||||
// bonus_desc = "Store in a dry, dark place."
|
||||
// multiplier = 4
|
||||
|
||||
/datum/bounty/item/botany/watermelon
|
||||
name = "Watermelons"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/watermelon)
|
||||
foodtype = "dessert"
|
||||
|
||||
/datum/bounty/item/botany/watermelon_holy
|
||||
name = "Holy Melons"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/holymelon)
|
||||
multiplier = 2
|
||||
foodtype = "dessert"
|
||||
|
||||
/datum/bounty/item/botany/glowshroom
|
||||
name = "Glowshrooms"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap, /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom)
|
||||
foodtype = "omelet"
|
||||
|
||||
//Medium Stuff (2400)
|
||||
|
||||
/datum/bounty/item/botany/moonflower
|
||||
name = "Moonflowers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/moonflower)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/novaflower
|
||||
name = "Novaflowers"
|
||||
wanted_types = list(/obj/item/grown/novaflower)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/banana_bluespace
|
||||
name = "Bluespace Bananas"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/banana/bluespace)
|
||||
multiplier = 2
|
||||
foodtype = "banana split"
|
||||
|
||||
/datum/bounty/item/botany/beans_koi
|
||||
name = "Koi Beans"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/koibeans)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/coffee_robusta
|
||||
name = "Coffee Robusta Beans"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/coffee/robusta)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/steelcaps
|
||||
name = "Steelcap Logs"
|
||||
wanted_types = list(/obj/item/grown/log/steel)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/berries_death
|
||||
name = "Death Berries"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/death)
|
||||
multiplier = 2
|
||||
bonus_desc = "He insists that \"he knows what he's doing\"."
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/berries_glow
|
||||
name = "Glow-Berries"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/berries/glow)
|
||||
multiplier = 2
|
||||
foodtype = "sorbet"
|
||||
|
||||
/datum/bounty/item/botany/chili
|
||||
name = "Ice Chili Peppers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/icepepper)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/chili
|
||||
name = "Ghost Chili Peppers"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ghost_chili)
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/eggplant_eggy
|
||||
name = "Egg-plants"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/shell/eggy)
|
||||
bonus_desc = "Not to be confused with eggplants."
|
||||
multiplier = 2
|
||||
|
||||
/datum/bounty/item/botany/watermelon_holy
|
||||
name = "Holy Melons"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/holymelon)
|
||||
multiplier = 2
|
||||
foodtype = "dessert"
|
||||
|
||||
/datum/bounty/item/botany/glowshroom_cap
|
||||
name = "Glowcaps"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap)
|
||||
@@ -177,18 +169,62 @@
|
||||
bonus_desc = "Wear protection when handling them."
|
||||
foodtype = "cheese"
|
||||
|
||||
/datum/bounty/item/botany/pineapples
|
||||
name = "Pineapples"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/pineapple)
|
||||
bonus_desc = "Not for human consumption."
|
||||
foodtype = "ashtray"
|
||||
//Harder Stuff (3600-7200)
|
||||
|
||||
/datum/bounty/item/botany/tomato
|
||||
name = "Tomatoes"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue)
|
||||
// /datum/bounty/item/botany/kudzu
|
||||
// name = "Kudzu Pods"
|
||||
// wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/kudzupod)
|
||||
// bonus_desc = "Store in a dry, dark place."
|
||||
// multiplier = 4
|
||||
|
||||
/datum/bounty/item/botany/bungopit
|
||||
name = "Bungo Pits"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/bungopit)
|
||||
bonus_desc = "Heartbreaker."
|
||||
multiplier = 4
|
||||
|
||||
/datum/bounty/item/botany/ambrosia_gaia
|
||||
name = "Ambrosia Gaia Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia)
|
||||
multiplier = 4
|
||||
foodtype = "stew"
|
||||
|
||||
/datum/bounty/item/botany/apple_golden
|
||||
name = "Golden Apples"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/apple/gold)
|
||||
multiplier = 4
|
||||
foodtype = "dessert"
|
||||
|
||||
/datum/bounty/item/botany/tomato_bluespace
|
||||
name = "Bluespace Tomatoes"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace)
|
||||
multiplier = 4
|
||||
|
||||
/datum/bounty/item/botany/cannabis
|
||||
name = "Cannabis Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white, /obj/item/reagent_containers/food/snacks/grown/cannabis/death, /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate)
|
||||
multiplier = 3 //hush money
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/cannabis_white
|
||||
name = "Lifeweed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white)
|
||||
multiplier = 5
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/cannabis_death
|
||||
name = "Deathweed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/death)
|
||||
multiplier = 5
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/cannabis_ultimate
|
||||
name = "Omega Weed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate)
|
||||
multiplier = 6
|
||||
bonus_desc = "Under no circumstances mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
@@ -2,16 +2,17 @@
|
||||
|
||||
/datum/bounty/item/chef/soup
|
||||
name = "Soup"
|
||||
description = "To quell the homeless uprising, Nanotrasen will be serving soup to all underpaid workers. Ship any type of soup."
|
||||
reward = 700
|
||||
required_count = 3
|
||||
description = "To quell the homeless uprising, Nanotrasen will be serving soup to all underpaid workers. Ship any type of soup. Do NOT ship bowls of water."
|
||||
reward = 1200
|
||||
required_count = 4
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/soup)
|
||||
exclude_types = list(/obj/item/reagent_containers/food/snacks/soup/wish)
|
||||
|
||||
/datum/bounty/item/chef/icecreamsandwich
|
||||
name = "Ice Cream Sandwiches"
|
||||
description = "Upper management has been screaming non-stop for ice cream. Please send some."
|
||||
reward = 800
|
||||
required_count = 3
|
||||
reward = 1200
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/icecreamsandwich)
|
||||
|
||||
/datum/bounty/item/chef/bread
|
||||
@@ -26,6 +27,13 @@
|
||||
reward = 3142
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/pie)
|
||||
|
||||
/datum/bounty/item/gardencook/khinkali
|
||||
name = "Khinkali"
|
||||
description = "Requesting -some khinki stuff- for a private staff party at Centcom."
|
||||
reward = 2400
|
||||
required_count = 6
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/khinkali)
|
||||
|
||||
/datum/bounty/item/chef/salad
|
||||
name = "Salad or Rice Bowls"
|
||||
description = "CentCom management is going on a health binge. Your order is to ship salad or rice bowls."
|
||||
@@ -33,18 +41,6 @@
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/salad)
|
||||
|
||||
/datum/bounty/item/chef/superbite
|
||||
name = "Super Bite Burger"
|
||||
description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him."
|
||||
reward = 1800
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/burger/superbite)
|
||||
|
||||
/datum/bounty/item/chef/poppypretzel
|
||||
name = "Poppy Pretzel"
|
||||
description = "Central Command needs a reason to fire their HR head. Send over a poppy pretzel to force a failed drug test."
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/poppypretzel)
|
||||
|
||||
// /datum/bounty/item/chef/cubancarp
|
||||
// name = "Cuban Carp"
|
||||
// description = "To celebrate the birth of Castro XXVII, ship one cuban carp to CentCom."
|
||||
@@ -135,3 +131,9 @@
|
||||
reward = 1200
|
||||
required_count = 6
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/sugarcookie)
|
||||
|
||||
/datum/bounty/item/chef/bbqribs
|
||||
description = "There's a debate around command as to weather or not ribs should be considered finger food, and we need a few delicious racks to process."
|
||||
reward = 2250
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/bbqribs)
|
||||
@@ -40,14 +40,14 @@
|
||||
/datum/bounty/item/engineering/microwave
|
||||
name = "Microwaves"
|
||||
description = "Due to a shortage of microwaves, our chefs are incapable of keeping up with our sheer volume of orders. We need at least three microwaves to keep up with our crew's dietary habits."
|
||||
reward = 1000
|
||||
reward = 2000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/machinery/microwave)
|
||||
|
||||
/datum/bounty/item/engineering/hydroponicstrays
|
||||
name = "Hydroponics Tray"
|
||||
description = "The garden has become a hot spot of late, they need a few more hydroponics tray to grow more flowers."
|
||||
reward = 1500
|
||||
reward = 2500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/machinery/hydroponics)
|
||||
|
||||
@@ -75,14 +75,14 @@
|
||||
/datum/bounty/item/engineering/arcadetrail
|
||||
name = "Orion Trail Arcade Games"
|
||||
description = "The staff have nothing to do when off-work. Can you send us some Orion Trail games to play?"
|
||||
reward = 1500
|
||||
reward = 2500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/machinery/computer/arcade/orion_trail)
|
||||
|
||||
/datum/bounty/item/engineering/arcadebattle
|
||||
name = "Battle Arcade Games"
|
||||
description = "The staff have nothing to do when off-work. Can you send us some Battle Arcade games to play?"
|
||||
reward = 1500
|
||||
reward = 2500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/machinery/computer/arcade/battle)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/bounty/item/chef/birthday_cake
|
||||
name = "Birthday Cake"
|
||||
description = "Nanotrasen's birthday is coming up! Ship them a birthday cake to celebrate!"
|
||||
reward = 1000
|
||||
reward = 1800
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/store/cake/birthday, /obj/item/reagent_containers/food/snacks/cakeslice/birthday)
|
||||
|
||||
/datum/bounty/item/gardencook/carrotfries
|
||||
@@ -21,24 +21,17 @@
|
||||
/datum/bounty/item/gardencook/popcorn
|
||||
name = "Popcorn Bags"
|
||||
description = "Upper management wants to host a movie night. Ship bags of popcorn for the occasion."
|
||||
reward = 800
|
||||
reward = 1200
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/popcorn)
|
||||
|
||||
/datum/bounty/item/gardencook/onionrings
|
||||
name = "Onion Rings"
|
||||
description = "Nanotrasen is remembering Saturn day. Ship onion rings to show the station's support."
|
||||
reward = 800
|
||||
reward = 1200
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/onionrings)
|
||||
|
||||
/datum/bounty/item/gardencook/khinkali
|
||||
name = "Khinkali"
|
||||
description = "Requesting -some khinki stuff- for a private staff party at Centcom"
|
||||
reward = 2400
|
||||
required_count = 6
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/khinkali)
|
||||
|
||||
/datum/bounty/item/gardencook/bakedbeans
|
||||
name = "Beans"
|
||||
description = "Management wants to make sure we have a fallback shelter to rely on. Prepare some beans to stock it with."
|
||||
@@ -51,3 +44,22 @@
|
||||
description = "Something sticky, something fun, ship us a honeybun."
|
||||
reward = 3500
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/honeybun)
|
||||
|
||||
/datum/bounty/item/chef/superbite
|
||||
name = "Super Bite Burger" //Salt, Pepper, Boiled Egg, 5 Steak, 4 Tomato, 3 Cheese, Bacon, and a Bun. Should be more than 1800.
|
||||
description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him."
|
||||
reward = 2750
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/burger/superbite)
|
||||
|
||||
/datum/bounty/item/chef/poppypretzel
|
||||
name = "Poppy Pretzel"
|
||||
description = "Central Command needs a reason to fire their HR head. Send over a poppy pretzel to force a failed drug test."
|
||||
reward = 1800
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/poppypretzel)
|
||||
|
||||
/datum/bounty/item/chef/fiestaskewer
|
||||
name = "Fiesta Skewer"
|
||||
description = "Apparently people are putting vegetables on kebabs now. Central Command has taken an interest in this turn of events and would like to know more."
|
||||
reward = 2600
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/kebab/fiesta)
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
/datum/bounty/item/medical/defibrillator
|
||||
name = "New defibillators"
|
||||
description = "After years of storge are defibrillator units have become more liabilities then we want. Please send us some new ones to replace these old ones."
|
||||
description = "After years of storge our defib units have become liabilities. Please send us some new ones."
|
||||
reward = 2250
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/defibrillator)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
/datum/bounty/item/science/nightvision_goggles
|
||||
name = "Night Vision Goggles"
|
||||
description = "An electrical storm has busted all the lights at CentCom. While management is waiting for replacements, perhaps some night vision goggles can be shipped?"
|
||||
reward = 1000
|
||||
reward = 1250
|
||||
wanted_types = list(/obj/item/clothing/glasses/night, /obj/item/clothing/glasses/meson/night, /obj/item/clothing/glasses/hud/health/night, /obj/item/clothing/glasses/hud/security/night, /obj/item/clothing/glasses/hud/diagnostic/night)
|
||||
|
||||
/datum/bounty/item/science/experimental_welding_tool
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
/datum/bounty/item/science/advanced_mop
|
||||
name = "Advanced Mop"
|
||||
description = "Excuse me. I'd like to request $17 for a push broom rebristling. Either that, or an advanced mop."
|
||||
description = "Excuse me. I'd like to request 17 credits for a push broom rebristling. Either that, or an advanced mop."
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/mop/advanced)
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
wanted_types = list(/obj/item/stock_parts/micro_laser/quadultra)
|
||||
|
||||
/datum/bounty/item/science/fakecrystals
|
||||
name = "synthetic bluespace crystals"
|
||||
name = "Synthetic Bluespace Crystals"
|
||||
description = "Don't, uh, tell anyone, but one of our BSA arrays might have had a little... accident. Send us some bluespace crystals so we can recalibrate it before anyone realizes. The whole set uses artificial bluespace crystals, so we need and not any other type of bluespace crystals..."
|
||||
reward = 8000
|
||||
required_count = 5
|
||||
|
||||
@@ -51,4 +51,16 @@
|
||||
name = "Strange Object"
|
||||
description = "Nanotrasen has taken an interest in strange objects. Find one in maint, and ship it off to CentCom right away."
|
||||
reward = 1000
|
||||
wanted_types = list(/obj/item/relic)
|
||||
wanted_types = list(/obj/item/relic)
|
||||
|
||||
/datum/bounty/item/silly/coconut_bong
|
||||
name = "Coconut Bong"
|
||||
description = "Duuuude, what if we like, carved out a coconut, and smoked some stuff in it. It'd be like, coconut flavored maaaaaan."
|
||||
reward = 2750
|
||||
wanted_types = list(/obj/item/bong/coconut)
|
||||
|
||||
/datum/bounty/item/silly/toy_swords
|
||||
name = "Toy Swords"
|
||||
description = "Nanotrasen has secured a contract in a reenactment of a famous movie, but we only have lethal energy based swords. Send us some convincing replicas so we save on medical costs."
|
||||
reward = 1200
|
||||
required_count = 3
|
||||
|
||||
@@ -92,11 +92,42 @@
|
||||
export_types = list(/obj/item/stock_parts/cell/bluespace)
|
||||
|
||||
/datum/export/cellyellow
|
||||
cost = 40
|
||||
cost = 200
|
||||
unit_name = "slime power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell/high/slime)
|
||||
|
||||
/datum/export/cellyellowhyper
|
||||
cost = 120 //Takes a lot to make and is really good
|
||||
cost = 1200 //Takes a lot to make and is really good
|
||||
unit_name = "hyper slime power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell/high/slime/hypercharged)
|
||||
export_types = list(/obj/item/stock_parts/cell/high/slime/hypercharged)
|
||||
|
||||
//Glass working stuff
|
||||
|
||||
/datum/export/glasswork_dish
|
||||
cost = 300
|
||||
unit_name = "small glass dish"
|
||||
export_types = list(/obj/item/reagent_containers/glass/beaker/glass_dish)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/glasswork_lens
|
||||
cost = 1800
|
||||
unit_name = "small glass lens"
|
||||
export_types = list(/obj/item/lens)
|
||||
|
||||
/datum/export/glasswork_spouty
|
||||
cost = 1200
|
||||
unit_name = "flask with spout"
|
||||
export_types = list(/obj/item/reagent_containers/glass/beaker/flask/spouty)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/glasswork_smallflask
|
||||
cost = 600
|
||||
unit_name = "small flask"
|
||||
export_types = list(/obj/item/reagent_containers/glass/beaker/flask)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/glasswork_largeflask
|
||||
cost = 1000
|
||||
unit_name = "large flask"
|
||||
export_types = list(/obj/item/reagent_containers/glass/beaker/flask/large)
|
||||
include_subtypes = FALSE
|
||||
|
||||
@@ -201,6 +201,22 @@
|
||||
var/item = pick(contains)
|
||||
new item(C)
|
||||
|
||||
/datum/supply_pack/security/armory/spinfusor
|
||||
name = "Stormhammer Spinfusor Crate"
|
||||
cost = 14000
|
||||
desc = "Got yourself a code red? Blob, nukies or even worst knocking on your door? Well with the Stormhammer Spinfusor you can stop crime in one shot, dont miss! Contains two Stormhammer Spinfusors (Note, guns may or may not be loaded). Requires Armory access to open."
|
||||
contains = list(/obj/item/gun/ballistic/automatic/spinfusor,
|
||||
/obj/item/gun/ballistic/automatic/spinfusor)
|
||||
crate_name = "spinfusor crate"
|
||||
|
||||
/datum/supply_pack/security/armory/spinfusorammo
|
||||
name = "Spinfusor Disk Crate"
|
||||
cost = 7000
|
||||
desc = "Need more ammo for a Stormhammer? Well we got some for a price! Contains two boxes of Spinfusor disks. Requires Armory access to open."
|
||||
contains = list(/obj/item/ammo_box/aspinfusor,
|
||||
/obj/item/ammo_box/aspinfusor)
|
||||
crate_name = "spinfusor disk crate"
|
||||
|
||||
/datum/supply_pack/security/armory/swat
|
||||
name = "SWAT Crate"
|
||||
desc = "Contains two fullbody sets of tough, fireproof, pressurized suits designed in a joint effort by IS-ERI and Nanotrasen. Each set contains a suit, helmet, mask, combat belt, and combat gloves. Requires Armory access to open."
|
||||
@@ -226,7 +242,7 @@
|
||||
crate_name = "swat taser crate"
|
||||
|
||||
/datum/supply_pack/security/armory/woodstock
|
||||
name = "Classic WoodStock Shotguns Crate"
|
||||
name = "WoodStock Classic Shotguns Crate"
|
||||
desc = "Contains three rustic, pumpaction shotguns. Requires Armory access to open."
|
||||
cost = 3000
|
||||
contains = list(/obj/item/gun/ballistic/shotgun,
|
||||
|
||||
@@ -9,6 +9,12 @@
|
||||
/datum/supply_pack/costumes_toys
|
||||
group = "Costumes & Toys"
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C)
|
||||
var/list/L = contains.Copy()
|
||||
for(var/i in 1 to num_contained)
|
||||
var/item = pick_n_take(L)
|
||||
new item(C)
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised
|
||||
name = "Collectable Hats Crate"
|
||||
desc = "Flaunt your status with three unique, highly-collectable hats!"
|
||||
@@ -289,12 +295,6 @@
|
||||
crate_name = "wizard costume crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C)
|
||||
var/list/L = contains.Copy()
|
||||
for(var/i in 1 to num_contained)
|
||||
var/item = pick_n_take(L)
|
||||
new item(C)
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/autodrobe
|
||||
name = "Autodrobe Supply Crate"
|
||||
desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill."
|
||||
|
||||
@@ -20,15 +20,9 @@
|
||||
|
||||
/datum/supply_pack/engineering/conveyor
|
||||
name = "Conveyor Assembly Crate"
|
||||
desc = "Keep production moving along with six conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book."
|
||||
desc = "Keep production moving along with fifteen conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book."
|
||||
cost = 750
|
||||
contains = list(/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_switch_construct,
|
||||
contains = list(/obj/item/stack/conveyor/fifteen,
|
||||
/obj/item/paper/guides/conveyor)
|
||||
crate_name = "conveyor assembly crate"
|
||||
|
||||
@@ -73,14 +67,15 @@
|
||||
crate_name = "atmospherics hardsuit"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
|
||||
/datum/supply_pack/engineering/radhardsuit
|
||||
name = "Radiation Hardsuit"
|
||||
/datum/supply_pack/engineering/radvoidsuit
|
||||
name = "Radiation Voidsuit"
|
||||
desc = "The Singulo is loose? Do you need to do a few changes to its containment and don't want to spent the rest of the shift under the shower? Get this Radiation Hardsuit! It protect from radiations and space only."
|
||||
cost = 3500
|
||||
access = ACCESS_ENGINE
|
||||
contains = list(/obj/item/tank/internals/air,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine/rad)
|
||||
/obj/item/clothing/suit/space/rad,
|
||||
/obj/item/clothing/head/helmet/space/rad)
|
||||
crate_name = "radiation hardsuit"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
|
||||
|
||||
@@ -69,6 +69,11 @@
|
||||
contains = list(/obj/item/grown/log)
|
||||
crate_name = "lumber crate"
|
||||
|
||||
/datum/supply_pack/materials/rawlumber/generate()
|
||||
. = ..()
|
||||
for(var/i in 1 to 49)
|
||||
new /obj/item/grown/log(.)
|
||||
|
||||
/datum/supply_pack/materials/wood50
|
||||
name = "50 Wood Planks"
|
||||
desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with fifty wooden planks!"
|
||||
@@ -89,7 +94,7 @@
|
||||
/datum/supply_pack/materials/rawcottonbulk
|
||||
name = "Raw Cotton Crate (Bulk)"
|
||||
desc = "We have so much of this stuff we need to get rid of it in -bulk- now. This crate contains 240 raw cotton sheets."
|
||||
cost = 1300 // 100 net cost (per 40 cotton) , 20 x 20 = 400. 300 profit if turned into cloth sheets or more if turned to silk then 10 x 200 = 2000
|
||||
cost = 1300 // 600 net cost 20 x 120 = 2400 profit if turned into cloth sheets or if turned into silk 200 x 60 = 12000
|
||||
contains = list(/obj/item/stack/sheet/cotton/thirty,
|
||||
/obj/item/stack/sheet/cotton/thirty,
|
||||
/obj/item/stack/sheet/cotton/thirty,
|
||||
@@ -102,13 +107,8 @@
|
||||
crate_name = "bulk cotton crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/datum/supply_pack/critter/animal_feed/generate()
|
||||
. = ..()
|
||||
for(var/i in 1 to 49)
|
||||
new /obj/item/grown/log(.)
|
||||
|
||||
/datum/supply_pack/materials/rcdammo
|
||||
name = "Spare RDC ammo"
|
||||
name = "Spare RCD ammo"
|
||||
desc = "This crate contains sixteen RCD compressed matter packs, to help with any holes or projects people might be working on."
|
||||
cost = 3750
|
||||
contains = list(/obj/item/rcd_ammo,
|
||||
|
||||
@@ -103,17 +103,6 @@
|
||||
contains = list(/obj/machinery/iv_drip)
|
||||
crate_name = "iv drip crate"
|
||||
|
||||
/datum/supply_pack/science/adv_surgery_tools
|
||||
name = "Med-Co Advanced surgery tools"
|
||||
desc = "A full set of Med-Co advanced surgery tools! In addition to that it contains both a can of synthflesh and a can of sterilizine. Requires Surgery access to open."
|
||||
cost = 5500
|
||||
access = ACCESS_SURGERY
|
||||
contains = list(/obj/item/storage/belt/medical/surgery_belt_adv,
|
||||
/obj/item/reagent_containers/medspray/synthflesh,
|
||||
/obj/item/reagent_containers/medspray/sterilizine)
|
||||
crate_name = "medco newest surgery tools"
|
||||
crate_type = /obj/structure/closet/crate/medical
|
||||
|
||||
/datum/supply_pack/medical/medicalhardsuit
|
||||
name = "Medical Hardsuit"
|
||||
desc = "Got people being spaced left and right? Hole in the same room as the dead body of Hos or cap? Fear not, now you can buy one medical hardsuit with a mask and air tank to save your fellow crewmembers. Requires medical access to open."
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
name = "Captain Pen"
|
||||
desc = "A spare Captain fountain pen."
|
||||
access = ACCESS_CAPTAIN
|
||||
cost = 10000
|
||||
cost = 5000
|
||||
contains = list(/obj/item/pen/fountain/captain)
|
||||
crate_name = "captain pen"
|
||||
crate_type = /obj/structure/closet/crate/secure/weapon //It is a combat pen
|
||||
@@ -153,7 +153,7 @@
|
||||
/obj/item/bedsheet/purple,
|
||||
/obj/item/bedsheet/red,
|
||||
/obj/item/bedsheet/yellow,
|
||||
/obj/item/bedsheet/brown,
|
||||
/obj/item/bedsheet/brown,
|
||||
/obj/item/bedsheet/black,
|
||||
/obj/item/bedsheet/rainbow)
|
||||
crate_name = "colored bedsheet crate"
|
||||
@@ -182,18 +182,6 @@
|
||||
/obj/structure/piano/unanchored)
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/misc/cbtpack
|
||||
name = "CBT Equipment"
|
||||
desc = "(*!&@#CBT is a special term coined by high ranking syndicate operatives for a special form of information extraction. While the training required to use this shipment is highly classified, the distribution of it's contents are not. In addition to this crates unusual contents, we have added a bar of soap.#@*$"
|
||||
hidden = TRUE
|
||||
cost = 2400
|
||||
contains = list(/mob/living/simple_animal/chicken,
|
||||
/obj/item/toy/beach_ball/holoball,
|
||||
/obj/item/melee/baton/cattleprod,
|
||||
/obj/item/soap/syndie)
|
||||
crate_name = "cbt crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/misc/casinocrate
|
||||
name = "Casino Crate"
|
||||
desc = "Start up your own grand casino with this crate filled with slot machine and arcade boards!"
|
||||
@@ -216,8 +204,8 @@
|
||||
name = "Coin Crate"
|
||||
desc = "Psssst, hey, you. Yes, you. I've heard that coins can do some special things on your station, give you access to some pretty cool stuff. Here's the deal, you give me some credits, and I give so some coins. Sound like a deal? I'll give you 10 for 10000 creds."
|
||||
contraband = TRUE
|
||||
cost = 10000
|
||||
contains = list(/obj/item/coin/silver)
|
||||
cost = 3000
|
||||
contains = list(/obj/item/coin/silver) // 400 x 10 = 2 sheets of silver for 2300cr
|
||||
crate_name = "coin crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
@@ -254,6 +242,25 @@
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
crate_name = "festive wrapping paper crate"
|
||||
|
||||
/datum/supply_pack/misc/funeral
|
||||
name = "Funeral Supplies"
|
||||
desc = "Mourn your dead properly buy sending them off with love filled notes, clean clothes, and a proper ceremony. Contains two candle packs, funeral garb, flowers, a paperbin , and crayons to help aid in religious rituals. Coffin included."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/clothing/under/burial,
|
||||
/obj/item/storage/fancy/candle_box,
|
||||
/obj/item/storage/fancy/candle_box,
|
||||
/obj/item/reagent_containers/food/snacks/grown/harebell,
|
||||
/obj/item/reagent_containers/food/snacks/grown/harebell,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/geranium,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/geranium,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/lily,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/lily,
|
||||
/obj/item/storage/crayons,
|
||||
/obj/item/paper_bin
|
||||
)
|
||||
crate_name = "coffin"
|
||||
crate_type = /obj/structure/closet/crate/coffin
|
||||
|
||||
/datum/supply_pack/misc/jukebox
|
||||
name = "Jukebox"
|
||||
cost = 10000
|
||||
@@ -284,25 +291,6 @@
|
||||
/obj/item/clothing/suit/hooded/chaplain_hoodie)
|
||||
crate_name = "religious supplies crate"
|
||||
|
||||
/datum/supply_pack/misc/funeral
|
||||
name = "Funeral Supplies"
|
||||
desc = "Mourn your dead properly buy sending them off with love filled notes, clean clothes, and a proper ceremony. Contains two candle packs, funeral garb, flowers, a paperbin , and crayons to help aid in religious rituals. Coffin included."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/clothing/under/burial,
|
||||
/obj/item/storage/fancy/candle_box,
|
||||
/obj/item/storage/fancy/candle_box,
|
||||
/obj/item/reagent_containers/food/snacks/grown/harebell,
|
||||
/obj/item/reagent_containers/food/snacks/grown/harebell,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/geranium,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/geranium,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/lily,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/lily,
|
||||
/obj/item/storage/crayons,
|
||||
/obj/item/paper_bin
|
||||
)
|
||||
crate_name = "coffin"
|
||||
crate_type = /obj/structure/closet/crate/coffin
|
||||
|
||||
/datum/supply_pack/misc/shower
|
||||
name = "Shower Supplies"
|
||||
desc = "Everyone needs a bit of R&R. Make sure you get can get yours by ordering this crate filled with towels, rubber duckies, and some soap!"
|
||||
@@ -362,29 +350,6 @@
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty)
|
||||
crate_name = "premium carpet crate"
|
||||
|
||||
/datum/supply_pack/misc/party
|
||||
name = "Party Equipment"
|
||||
desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, four beers, two ales, a drinking shaker, and a bottle of patron & goldschlager!"
|
||||
cost = 2000
|
||||
contains = list(/obj/item/storage/box/drinkingglasses,
|
||||
/obj/item/reagent_containers/food/drinks/shaker,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/patron,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/goldschlager,
|
||||
/obj/item/reagent_containers/food/drinks/ale,
|
||||
/obj/item/reagent_containers/food/drinks/ale,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/flashlight/glowstick,
|
||||
/obj/item/flashlight/glowstick/red,
|
||||
/obj/item/flashlight/glowstick/blue,
|
||||
/obj/item/flashlight/glowstick/cyan,
|
||||
/obj/item/flashlight/glowstick/orange,
|
||||
/obj/item/flashlight/glowstick/yellow,
|
||||
/obj/item/flashlight/glowstick/pink)
|
||||
crate_name = "party equipment crate"
|
||||
|
||||
/datum/supply_pack/misc/noslipfloor
|
||||
name = "High-traction Floor Tiles"
|
||||
desc = "Make slipping a thing of the past with sixty industrial-grade anti-slip floortiles!"
|
||||
|
||||
@@ -47,6 +47,12 @@
|
||||
/obj/item/storage/fancy/donut_box)
|
||||
crate_name = "candy crate"
|
||||
|
||||
/datum/supply_pack/organic/candy/randomised/fill(obj/structure/closet/crate/C)
|
||||
var/list/L = contains.Copy()
|
||||
for(var/i in 1 to num_contained)
|
||||
var/item = pick_n_take(L)
|
||||
new item(C)
|
||||
|
||||
/datum/supply_pack/organic/randomized/chef
|
||||
name = "Excellent Meat Crate"
|
||||
desc = "The best cuts in the whole galaxy."
|
||||
@@ -224,6 +230,29 @@
|
||||
crate_name = "wildcard food crate"
|
||||
crate_type = /obj/structure/closet/crate/freezer
|
||||
|
||||
/datum/supply_pack/organic/party
|
||||
name = "Party Equipment"
|
||||
desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, four beers, two ales, a drinking shaker, and a bottle of patron & goldschlager!"
|
||||
cost = 2000
|
||||
contains = list(/obj/item/storage/box/drinkingglasses,
|
||||
/obj/item/reagent_containers/food/drinks/shaker,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/patron,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/goldschlager,
|
||||
/obj/item/reagent_containers/food/drinks/ale,
|
||||
/obj/item/reagent_containers/food/drinks/ale,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/flashlight/glowstick,
|
||||
/obj/item/flashlight/glowstick/red,
|
||||
/obj/item/flashlight/glowstick/blue,
|
||||
/obj/item/flashlight/glowstick/cyan,
|
||||
/obj/item/flashlight/glowstick/orange,
|
||||
/obj/item/flashlight/glowstick/yellow,
|
||||
/obj/item/flashlight/glowstick/pink)
|
||||
crate_name = "party equipment crate"
|
||||
|
||||
/datum/supply_pack/organic/pizza
|
||||
name = "Pizza Crate"
|
||||
desc = "Best prices on this side of the galaxy. All deliveries are guaranteed to be 99% anomaly-free!"
|
||||
@@ -321,23 +350,6 @@
|
||||
crate_name = "exotic seeds crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/* Maintenance Garden Crate basically does this and more.
|
||||
/datum/supply_pack/organic/hydroponics
|
||||
name = "Hydroponics Crate"
|
||||
desc = "Supplies for growing a great garden! Contains two bottles of ammonia, two Plant-B-Gone spray bottles, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron."
|
||||
cost = 1750
|
||||
contains = list(/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/cultivator,
|
||||
/obj/item/plant_analyzer,
|
||||
/obj/item/clothing/gloves/botanic_leather,
|
||||
/obj/item/clothing/suit/apron)
|
||||
crate_name = "hydroponics crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
*/
|
||||
/datum/supply_pack/organic/hydroponics/hydrotank
|
||||
name = "Hydroponics Backpack Crate"
|
||||
desc = "Bring on the flood with this high-capacity backpack crate. Contains 500 units of life-giving H2O. Requires hydroponics access to open."
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
name = "Advanced Alien Alloy Crate Crate"
|
||||
desc = "Hello brothers from the stars!!! Our fellow brethren have made contact at long last and gave us gifts man! They really did build the prymi- Connection Error- Bro we’ll send you a sheet of advanced alien alloy."
|
||||
cost = 15000
|
||||
contraband = TRUE
|
||||
DropPodOnly = TRUE
|
||||
contains = list(/obj/item/stack/sheet/mineral/abductor)
|
||||
crate_name = "alien bro alloy crate"
|
||||
@@ -82,6 +81,27 @@
|
||||
/obj/item/integrated_electronics/wirer)
|
||||
crate_name = "circuitry starter pack crate"
|
||||
|
||||
/datum/supply_pack/science/glasswork
|
||||
name = "Glass blower kit Crate"
|
||||
desc = "Learn and make glassworks of usefull things for a profit! Contains glassworking tools and blowing rods. Glass not included."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/glasswork/glasskit,
|
||||
/obj/item/glasswork/glasskit,
|
||||
/obj/item/glasswork/blowing_rod,
|
||||
/obj/item/glasswork/blowing_rod)
|
||||
crate_name = "glassblower gear crate"
|
||||
|
||||
/datum/supply_pack/science/adv_surgery_tools
|
||||
name = "Med-Co Advanced surgery tools"
|
||||
desc = "A full set of Med-Co advanced surgery tools, this crate also comes with a spay of synth flesh as well as a can of . Requires Surgery access to open."
|
||||
cost = 5500
|
||||
access = ACCESS_SURGERY
|
||||
contains = list(/obj/item/storage/belt/medical/surgery_belt_adv,
|
||||
/obj/item/reagent_containers/medspray/synthflesh,
|
||||
/obj/item/reagent_containers/medspray/sterilizine)
|
||||
crate_name = "medco newest surgery tools"
|
||||
crate_type = /obj/structure/closet/crate/medical
|
||||
|
||||
/datum/supply_pack/science/monkey
|
||||
name = "Monkey Cube Crate"
|
||||
desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!"
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
/obj/item/kitchen/knife,
|
||||
/obj/item/kitchen/knife/butcher,
|
||||
/obj/item/kitchen/knife/butcher,
|
||||
/obj/item/kitchen/rollingpin,
|
||||
/obj/item/kitchen/rollingpin,
|
||||
/obj/item/trash/plate,
|
||||
/obj/item/trash/plate,
|
||||
/obj/item/trash/plate,
|
||||
@@ -243,7 +243,7 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Vendor Refills //////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/datum/supply_pack/service/vending/bartending
|
||||
name = "Bartending Supply Crate"
|
||||
desc = "Bring on the booze with vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!"
|
||||
|
||||
@@ -482,12 +482,20 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
if(gender == MALE)
|
||||
hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_male_list)
|
||||
facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_male_list)
|
||||
else
|
||||
undershirt = sanitize_inlist(undershirt, GLOB.undershirt_m)
|
||||
underwear = sanitize_inlist(underwear, GLOB.underwear_m)
|
||||
else if(gender == FEMALE)
|
||||
hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_female_list)
|
||||
facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_female_list)
|
||||
underwear = sanitize_inlist(underwear, GLOB.underwear_list)
|
||||
undershirt = sanitize_inlist(undershirt, GLOB.undershirt_f)
|
||||
underwear = sanitize_inlist(underwear, GLOB.underwear_f)
|
||||
else
|
||||
hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_list)
|
||||
facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_list)
|
||||
underwear = sanitize_inlist(underwear, GLOB.underwear_list)
|
||||
undershirt = sanitize_inlist(undershirt, GLOB.undershirt_list)
|
||||
|
||||
undie_color = sanitize_hexcolor(undie_color, 3, FALSE, initial(undie_color))
|
||||
undershirt = sanitize_inlist(undershirt, GLOB.undershirt_list)
|
||||
shirt_color = sanitize_hexcolor(shirt_color, 3, FALSE, initial(shirt_color))
|
||||
socks = sanitize_inlist(socks, GLOB.socks_list)
|
||||
socks_color = sanitize_hexcolor(socks_color, 3, FALSE, initial(socks_color))
|
||||
|
||||
@@ -203,32 +203,6 @@
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos
|
||||
|
||||
//Radiation
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/engine/rad
|
||||
name = "radiation hardsuit helmet"
|
||||
desc = "A special helmet that protects against radiation and space. Not much else unfortunately."
|
||||
icon_state = "cespace_helmet"
|
||||
item_state = "nothing"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
|
||||
item_color = "engineering"
|
||||
resistance_flags = FIRE_PROOF
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/engine/rad
|
||||
name = "radiation hardsuit"
|
||||
desc = "A special suit that protects against radiation and space. Not much else unfortunately."
|
||||
icon_state = "hardsuit-rad"
|
||||
item_state = "nothing"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/rad
|
||||
resistance_flags = FIRE_PROOF
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/engine/rad/attack_self()
|
||||
return //Sprites required for flashlight
|
||||
|
||||
//Chief Engineer's hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/engine/elite
|
||||
name = "advanced hardsuit helmet"
|
||||
|
||||
@@ -11,6 +11,7 @@ Contains:
|
||||
- ERT hardsuit: Command, Sec, Engi, Med
|
||||
- ERT High Alarm - Command, Sec, Engi, Med
|
||||
- EVA spacesuit
|
||||
- Radiation Spacesuit
|
||||
- Freedom's spacesuit (freedom from vacuum's oppression)
|
||||
- Carp hardsuit
|
||||
*/
|
||||
@@ -312,6 +313,28 @@ Contains:
|
||||
flash_protect = 0
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 65)
|
||||
|
||||
//Radiation
|
||||
/obj/item/clothing/head/helmet/space/rad
|
||||
name = "radiation voidsuit helmet"
|
||||
desc = "A special helmet that protects against radiation and space. Not much else unfortunately."
|
||||
icon_state = "cespace_helmet"
|
||||
item_state = "nothing"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
|
||||
item_color = "engineering"
|
||||
resistance_flags = FIRE_PROOF
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clothing/suit/space/rad
|
||||
name = "radiation voidsuit"
|
||||
desc = "A special suit that protects against radiation and space. Not much else unfortunately."
|
||||
icon_state = "hardsuit-rad"
|
||||
item_state = "nothing"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
|
||||
resistance_flags = FIRE_PROOF
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/freedom
|
||||
name = "eagle helmet"
|
||||
desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle."
|
||||
|
||||
@@ -945,4 +945,59 @@
|
||||
icon_state = "christmasfemaleg"
|
||||
item_state = "christmasfemaleg"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
can_adjust = FALSE
|
||||
|
||||
// Lunar Clothes
|
||||
/obj/item/clothing/under/lunar/qipao
|
||||
name = "Black Qipao"
|
||||
desc = "A Qipao, traditionally worn in ancient Earth China by women during social events and lunar new years. This one is black."
|
||||
icon_state = "qipao"
|
||||
item_state = "qipao"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/lunar/qipao/white
|
||||
name = "White Qipao"
|
||||
desc = "A Qipao, traditionally worn in ancient Earth China by women during social events and lunar new years. This one is white."
|
||||
icon_state = "qipao_white"
|
||||
item_state = "qipao_white"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/lunar/qipao/red
|
||||
name = "Red Qipao"
|
||||
desc = "A Qipao, traditionally worn in ancient Earth China by women during social events and lunar new years. This one is red."
|
||||
icon_state = "qipao_red"
|
||||
item_state = "qipao_red"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/lunar/cheongsam
|
||||
name = "Black Cheongsam"
|
||||
desc = "A Cheongsam, traditionally worn in ancient Earth China by men during social events and lunar new years. This one is black."
|
||||
icon_state = "cheong"
|
||||
item_state = "cheong"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/lunar/cheongsam/white
|
||||
name = "White Cheongsam"
|
||||
desc = "A Cheongsam, traditionally worn in ancient Earth China by men during social events and lunar new years. This one is white."
|
||||
icon_state = "cheongw"
|
||||
item_state = "cheongw"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/lunar/cheongsam/red
|
||||
name = "Red Cheongsam"
|
||||
desc = "A Cheongsam, traditionally worn in ancient Earth China by men during social events and lunar new years. This one is red.."
|
||||
icon_state = "cheongr"
|
||||
item_state = "cheongr"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
299
code/modules/crafting/glassware.dm
Normal file
299
code/modules/crafting/glassware.dm
Normal file
@@ -0,0 +1,299 @@
|
||||
//This file is for glass working types of things!
|
||||
|
||||
/obj/item/glasswork
|
||||
name = "This is a bug report it!"
|
||||
desc = "Failer to code. Contact your local bug remover..."
|
||||
icon = 'icons/obj/glassworks.dmi'
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force = 1
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
tool_behaviour = null
|
||||
|
||||
/obj/item/glasswork/glasskit
|
||||
name = "Glass working tools"
|
||||
desc = "A lovely belt of most the tools you will need to shape, mold, and refine glass into more advanced shapes."
|
||||
icon_state = "glass_tools"
|
||||
tool_behaviour = TOOL_GLASS_CUT
|
||||
|
||||
/obj/item/glasswork/blowing_rod
|
||||
name = "Glass working blow rod"
|
||||
desc = "A hollow metal stick made for glass blowing."
|
||||
icon_state = "blowing_rods_unused"
|
||||
tool_behaviour = TOOL_BLOW
|
||||
|
||||
/obj/item/glasswork/glass_base
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A sheet of glass set aside for glass working"
|
||||
icon_state = "glass_base"
|
||||
var/next_step = null
|
||||
var/rod = /obj/item/glasswork/blowing_rod
|
||||
|
||||
/obj/item/lens
|
||||
name = "Optical lens"
|
||||
desc = "Good for selling or crafting, by itself its useless"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "glass_optics"
|
||||
|
||||
//////////////////////Chem Disk/////////////////////
|
||||
//Two Steps //
|
||||
//Sells for 300 cr, takes 10 glass shets //
|
||||
//Usefull for chem spliting //
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/glasswork/glass_base/dish
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A set of glass sheets set aside for glass working, this one is ideal for a small glass dish. Needs to be cut with some tools."
|
||||
next_step = /obj/item/glasswork/glass_base/dish_part1
|
||||
|
||||
/obj/item/glasswork/glass_base/dish/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/dish_part1
|
||||
name = "Half chem dish sheet"
|
||||
desc = "A sheet of glass cut in half, looks like it still needs some more cutting down"
|
||||
icon_state = "glass_base_half"
|
||||
next_step = /obj/item/reagent_containers/glass/beaker/glass_dish
|
||||
|
||||
/obj/item/glasswork/glass_base/dish_part1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Lens//////////////////////////
|
||||
//Six Steps //
|
||||
//Sells for 1800 cr, takes 15 glass shets //
|
||||
//Usefull for selling and later crafting //
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A set of glass sheets set aside for glass working, this one is ideal for a small glass lens. Needs to be cut with some tools."
|
||||
next_step = /obj/item/glasswork/glass_base/glass_lens_part1
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part1
|
||||
name = "Glass fodder sheet"
|
||||
desc = "Cut glass ready to be heated. Needs to be heated with some tools."
|
||||
icon_state = "glass_base_half"
|
||||
next_step = /obj/item/glasswork/glass_base/glass_lens_part2
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part2
|
||||
name = "Glass fodder sheet"
|
||||
desc = "Cut glass that has been heated. Needs to be heated more with some tools."
|
||||
icon_state = "glass_base_heat"
|
||||
next_step = /obj/item/glasswork/glass_base/glass_lens_part3
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part3
|
||||
name = "Glass fodder sheet"
|
||||
desc = "Cut glass that has been heated into a blob of hot glass. Needs to be placed onto a blow tube."
|
||||
icon_state = "glass_base_molding"
|
||||
next_step = /obj/item/glasswork/glass_base/glass_lens_part4
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part3/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part4
|
||||
name = "Glass fodder sheet"
|
||||
desc = "Cut glass that has been heated into a blob of hot glass. Needs to be cut off onto a blow tube."
|
||||
icon_state = "blowing_rods_inuse"
|
||||
next_step = /obj/item/glasswork/glass_base/glass_lens_part5
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part4/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part5
|
||||
name = "Unpolished glass lens"
|
||||
desc = "A small unpolished glass lens. Could be polished with some cloth."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "glass_optics"
|
||||
next_step = /obj/item/glasswork/glass_base/glass_lens_part6
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part5/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/sheet/cloth))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part6
|
||||
name = "Unrefined glass lens"
|
||||
desc = "A small polished glass lens. Just needs to be refined with some sandstone."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "glass_optics"
|
||||
next_step = /obj/item/lens
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part6/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/sheet/mineral/sandstone))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Spouty Flask//////////////////
|
||||
//Four Steps //
|
||||
//Sells for 1200 cr, takes 20 glass shets //
|
||||
//Usefull for selling and chemical things //
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A set of glass sheets set aside for glass working, this one is ideal for a spout beaker. Needs to be cut with some tools."
|
||||
next_step = /obj/item/glasswork/glass_base/spouty_part2
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part2
|
||||
name = "Glass fodder sheet"
|
||||
desc = "Cut glass that has been heated. Needs to be heated with some tools."
|
||||
icon_state = "glass_base_half"
|
||||
next_step = /obj/item/glasswork/glass_base/spouty_part3
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part3
|
||||
name = "Glass fodder sheet"
|
||||
desc = "Cut glass that has been heated into a blob of hot glass. Needs to be placed onto a blow tube."
|
||||
icon_state = "glass_base_molding"
|
||||
next_step = /obj/item/glasswork/glass_base/spouty_part4
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part3/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part4
|
||||
name = "Glass fodder sheet"
|
||||
desc = "Cut glass that has been heated into a blob of hot glass. Needs to be cut off onto a blow tube."
|
||||
icon_state = "blowing_rods_inuse"
|
||||
next_step = /obj/item/reagent_containers/glass/beaker/flask/spouty
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part4/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Small Bulb Flask//////////////
|
||||
//Two Steps //
|
||||
//Sells for 600 cr, takes 5 glass shets //
|
||||
//Usefull for selling and chemical things //
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_small
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A set of glass sheets set aside for glass working, this one is ideal for a small flask. Needs to be heated with some tools."
|
||||
next_step = /obj/item/glasswork/glass_base/flask_small_part1
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_small/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_small_part1
|
||||
name = "Metled glass"
|
||||
desc = "A blob of metled glass, this one is ideal for a small flask. Needs to be blown with some tools."
|
||||
icon_state = "glass_base_molding"
|
||||
next_step = /obj/item/glasswork/glass_base/flask_small_part2
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_small_part1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_small_part2
|
||||
name = "Metled glass"
|
||||
desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
|
||||
icon_state = "blowing_rods_inuse"
|
||||
next_step = /obj/item/reagent_containers/glass/beaker/flask
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_small_part2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Large Bulb Flask//////////////
|
||||
//Two Steps //
|
||||
//Sells for 1000 cr, takes 15 glass shets //
|
||||
//Usefull for selling and chemical things //
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_large
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A set of glass sheets set aside for glass working, this one is ideal for a large flask. Needs to be heated with some tools."
|
||||
next_step = /obj/item/glasswork/glass_base/flask_large_part1
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_large/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_large_part1
|
||||
name = "Metled glass"
|
||||
desc = "A blob of metled glass, this one is ideal for a large flask. Needs to be blown with some tools."
|
||||
icon_state = "glass_base_molding"
|
||||
next_step = /obj/item/glasswork/glass_base/flask_large_part2
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_large_part1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_large_part2
|
||||
name = "Metled glass"
|
||||
desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
|
||||
icon_state = "blowing_rods_inuse"
|
||||
next_step = /obj/item/reagent_containers/glass/beaker/flask/large
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_large_part2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
@@ -133,7 +133,7 @@
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate/ranged/infiltrator)
|
||||
|
||||
if(RUSKY_PARTY)
|
||||
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/misc/party]
|
||||
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/organic/party]
|
||||
pack.generate(pick_n_take(empty_shuttle_turfs))
|
||||
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
pixel_x = -64
|
||||
pixel_y = -64
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
var/list/immune = list() // the one who creates the timestop is immune
|
||||
var/list/immune = list() // the one who creates the timestop is immune, which includes wizards and the dead slime you murdered to make this chronofield
|
||||
var/turf/target
|
||||
var/freezerange = 2
|
||||
var/duration = 140
|
||||
@@ -27,10 +27,10 @@
|
||||
for(var/A in immune_atoms)
|
||||
immune[A] = TRUE
|
||||
for(var/mob/living/L in GLOB.player_list)
|
||||
if(locate(/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop) in L.mind.spell_list) //People who can stop time are immune to its effects
|
||||
if(locate(/obj/effect/proc_holder/spell/aoe_turf/timestop) in L.mind.spell_list) //People who can stop time are immune to its effects
|
||||
immune[L] = TRUE
|
||||
for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.parasites)
|
||||
if(G.summoner && locate(/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop) in G.summoner.mind.spell_list) //It would only make sense that a person's stand would also be immune.
|
||||
if(G.summoner && locate(/obj/effect/proc_holder/spell/aoe_turf/timestop) in G.summoner.mind.spell_list) //It would only make sense that a person's stand would also be immune.
|
||||
immune[G] = TRUE
|
||||
if(start)
|
||||
timestop()
|
||||
@@ -46,9 +46,8 @@
|
||||
chronofield = make_field(/datum/proximity_monitor/advanced/timestop, list("current_range" = freezerange, "host" = src, "immune" = immune, "check_anti_magic" = check_anti_magic, "check_holy" = check_holy))
|
||||
QDEL_IN(src, duration)
|
||||
|
||||
/obj/effect/timestop/wizard
|
||||
/obj/effect/timestop/magic
|
||||
check_anti_magic = TRUE
|
||||
duration = 100
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop
|
||||
name = "chronofield"
|
||||
@@ -56,9 +55,10 @@
|
||||
field_shape = FIELD_SHAPE_RADIUS_SQUARE
|
||||
requires_processing = TRUE
|
||||
var/list/immune = list()
|
||||
var/list/mob/living/frozen_mobs = list()
|
||||
var/list/obj/item/projectile/frozen_projectiles = list()
|
||||
var/list/atom/movable/frozen_throws = list()
|
||||
var/list/frozen_things = list()
|
||||
var/list/frozen_mobs = list() //cached separately for processing
|
||||
var/list/frozen_structures = list() //Also machinery, and only frozen aestethically
|
||||
var/list/frozen_turfs = list() //Only aesthetically
|
||||
var/check_anti_magic = FALSE
|
||||
var/check_holy = FALSE
|
||||
|
||||
@@ -74,85 +74,125 @@
|
||||
/datum/proximity_monitor/advanced/timestop/proc/freeze_atom(atom/movable/A)
|
||||
if(immune[A] || global_frozen_atoms[A] || !istype(A))
|
||||
return FALSE
|
||||
if(A.throwing)
|
||||
freeze_throwing(A)
|
||||
if(ismob(A))
|
||||
var/mob/M = A
|
||||
if(M.anti_magic_check(check_anti_magic, check_holy))
|
||||
immune[A] = TRUE
|
||||
return
|
||||
var/frozen = TRUE
|
||||
if(isliving(A))
|
||||
freeze_mob(A)
|
||||
else if(istype(A, /obj/item/projectile))
|
||||
freeze_projectile(A)
|
||||
else if(istype(A, /obj/mecha))
|
||||
freeze_mecha(A)
|
||||
else if((ismachinery(A) && !istype(A, /obj/machinery/light)) || isstructure(A)) //Special exception for light fixtures since recoloring causes them to change light
|
||||
freeze_structure(A)
|
||||
else
|
||||
return FALSE
|
||||
frozen = FALSE
|
||||
if(A.throwing)
|
||||
freeze_throwing(A)
|
||||
frozen = TRUE
|
||||
if(!frozen)
|
||||
return
|
||||
|
||||
frozen_things[A] = A.move_resist
|
||||
A.move_resist = INFINITY
|
||||
global_frozen_atoms[A] = src
|
||||
into_the_negative_zone(A)
|
||||
RegisterSignal(A, COMSIG_MOVABLE_PRE_MOVE, .proc/unfreeze_atom)
|
||||
RegisterSignal(A, COMSIG_ITEM_PICKUP, .proc/unfreeze_atom)
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_all()
|
||||
for(var/i in frozen_projectiles)
|
||||
unfreeze_projectile(i)
|
||||
for(var/i in frozen_mobs)
|
||||
unfreeze_mob(i)
|
||||
for(var/i in frozen_throws)
|
||||
unfreeze_throw(i)
|
||||
for(var/i in frozen_things)
|
||||
unfreeze_atom(i)
|
||||
for(var/T in frozen_turfs)
|
||||
unfreeze_turf(T)
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_atom(atom/movable/A)
|
||||
if(A.throwing)
|
||||
unfreeze_throwing(A)
|
||||
if(isliving(A))
|
||||
unfreeze_mob(A)
|
||||
else if(istype(A, /obj/item/projectile))
|
||||
unfreeze_projectile(A)
|
||||
else if(istype(A, /obj/mecha))
|
||||
unfreeze_mecha(A)
|
||||
|
||||
UnregisterSignal(A, COMSIG_MOVABLE_PRE_MOVE)
|
||||
UnregisterSignal(A, COMSIG_ITEM_PICKUP)
|
||||
escape_the_negative_zone(A)
|
||||
A.move_resist = frozen_things[A]
|
||||
frozen_things -= A
|
||||
global_frozen_atoms -= A
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/freeze_mecha(obj/mecha/M)
|
||||
M.completely_disabled = TRUE
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_mecha(obj/mecha/M)
|
||||
M.completely_disabled = FALSE
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/freeze_throwing(atom/movable/AM)
|
||||
var/datum/thrownthing/T = AM.throwing
|
||||
T.paused = TRUE
|
||||
frozen_throws[AM] = T
|
||||
global_frozen_atoms[AM] = TRUE
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_throw(atom/movable/AM)
|
||||
var/datum/thrownthing/T = frozen_throws[AM]
|
||||
T.paused = FALSE
|
||||
frozen_throws -= AM
|
||||
global_frozen_atoms -= AM
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_throwing(atom/movable/AM)
|
||||
var/datum/thrownthing/T = AM.throwing
|
||||
if(T)
|
||||
T.paused = FALSE
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/freeze_turf(turf/T)
|
||||
into_the_negative_zone(T)
|
||||
frozen_turfs += T
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_turf(turf/T)
|
||||
escape_the_negative_zone(T)
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/freeze_structure(obj/O)
|
||||
into_the_negative_zone(O)
|
||||
frozen_structures += O
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_structure(obj/O)
|
||||
escape_the_negative_zone(O)
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/process()
|
||||
for(var/i in frozen_mobs)
|
||||
var/mob/living/m = i
|
||||
if(get_dist(get_turf(m), get_turf(host)) > current_range)
|
||||
unfreeze_mob(m)
|
||||
else
|
||||
m.Stun(20, 1, 1)
|
||||
m.Stun(20, 1, 1)
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/setup_field_turf(turf/T)
|
||||
for(var/i in T.contents)
|
||||
freeze_atom(i)
|
||||
freeze_turf(T)
|
||||
return ..()
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/item/projectile/P)
|
||||
escape_the_negative_zone(P)
|
||||
frozen_projectiles -= P
|
||||
P.paused = FALSE
|
||||
global_frozen_atoms -= P
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/item/projectile/P)
|
||||
frozen_projectiles[P] = TRUE
|
||||
P.paused = TRUE
|
||||
global_frozen_atoms[P] = TRUE
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/item/projectile/P)
|
||||
P.paused = FALSE
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/freeze_mob(mob/living/L)
|
||||
if(L.anti_magic_check(check_anti_magic, check_holy))
|
||||
immune += L
|
||||
return
|
||||
frozen_mobs += L
|
||||
L.Stun(20, 1, 1)
|
||||
frozen_mobs[L] = L.anchored
|
||||
L.anchored = TRUE
|
||||
global_frozen_atoms[L] = TRUE
|
||||
if(ishostile(L))
|
||||
var/mob/living/simple_animal/hostile/H = L
|
||||
H.toggle_ai(AI_OFF)
|
||||
H.LoseTarget()
|
||||
ADD_TRAIT(L, TRAIT_MUTE, TIMESTOP_TRAIT)
|
||||
walk(L, 0) //stops them mid pathing even if they're stunimmune
|
||||
if(isanimal(L))
|
||||
var/mob/living/simple_animal/S = L
|
||||
S.toggle_ai(AI_OFF)
|
||||
if(ishostile(L))
|
||||
var/mob/living/simple_animal/hostile/H = L
|
||||
H.LoseTarget()
|
||||
|
||||
/datum/proximity_monitor/advanced/timestop/proc/unfreeze_mob(mob/living/L)
|
||||
escape_the_negative_zone(L)
|
||||
L.AdjustStun(-20, 1, 1)
|
||||
L.anchored = frozen_mobs[L]
|
||||
REMOVE_TRAIT(L, TRAIT_MUTE, TIMESTOP_TRAIT)
|
||||
frozen_mobs -= L
|
||||
global_frozen_atoms -= L
|
||||
if(ishostile(L))
|
||||
var/mob/living/simple_animal/hostile/H = L
|
||||
H.toggle_ai(initial(H.AIStatus))
|
||||
if(isanimal(L))
|
||||
var/mob/living/simple_animal/S = L
|
||||
S.toggle_ai(initial(S.AIStatus))
|
||||
|
||||
//you don't look quite right, is something the matter?
|
||||
/datum/proximity_monitor/advanced/timestop/proc/into_the_negative_zone(atom/A)
|
||||
@@ -160,4 +200,4 @@
|
||||
|
||||
//let's put some colour back into your cheeks
|
||||
/datum/proximity_monitor/advanced/timestop/proc/escape_the_negative_zone(atom/A)
|
||||
A.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY)
|
||||
A.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY)
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
|
||||
mob_react = FALSE
|
||||
|
||||
/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume)
|
||||
/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, multiplier)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
for(var/i = 1, i <= multiplier, i++)
|
||||
new /obj/item/reagent_containers/food/snacks/tofu(location)
|
||||
return
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
id = "chocolate_bar"
|
||||
required_reagents = list(/datum/reagent/consumable/soymilk = 2, /datum/reagent/consumable/coco = 2, /datum/reagent/consumable/sugar = 2)
|
||||
|
||||
/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume)
|
||||
/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, multiplier)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
for(var/i = 1, i <= multiplier, i++)
|
||||
new /obj/item/reagent_containers/food/snacks/chocolatebar(location)
|
||||
return
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 4, /datum/reagent/consumable/sugar = 2)
|
||||
mob_react = FALSE
|
||||
|
||||
/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume)
|
||||
/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, multiplier)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
for(var/i = 1, i <= multiplier, i++)
|
||||
new /obj/item/reagent_containers/food/snacks/chocolatebar(location)
|
||||
return
|
||||
|
||||
@@ -90,9 +90,9 @@
|
||||
required_reagents = list(/datum/reagent/consumable/milk = 40)
|
||||
required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
|
||||
|
||||
/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume)
|
||||
/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, multiplier)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
for(var/i = 1, i <= multiplier, i++)
|
||||
new /obj/item/reagent_containers/food/snacks/store/cheesewheel(location)
|
||||
|
||||
/datum/chemical_reaction/synthmeat
|
||||
@@ -101,9 +101,9 @@
|
||||
required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/cryoxadone = 1)
|
||||
mob_react = FALSE
|
||||
|
||||
/datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume)
|
||||
/datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, multiplier)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
for(var/i = 1, i <= multiplier, i++)
|
||||
new /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat(location)
|
||||
|
||||
/datum/chemical_reaction/hot_ramen
|
||||
@@ -137,9 +137,9 @@
|
||||
required_reagents = list(/datum/reagent/water = 10, /datum/reagent/consumable/flour = 15)
|
||||
mix_message = "The ingredients form a dough."
|
||||
|
||||
/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume)
|
||||
/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, multiplier)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
for(var/i = 1, i <= multiplier, i++)
|
||||
new /obj/item/reagent_containers/food/snacks/dough(location)
|
||||
|
||||
/datum/chemical_reaction/cakebatter
|
||||
@@ -148,9 +148,9 @@
|
||||
required_reagents = list(/datum/reagent/consumable/eggyolk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5)
|
||||
mix_message = "The ingredients form a cake batter."
|
||||
|
||||
/datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, created_volume)
|
||||
/datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, multiplier)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
for(var/i = 1, i <= multiplier, i++)
|
||||
new /obj/item/reagent_containers/food/snacks/cakebatter(location)
|
||||
|
||||
/datum/chemical_reaction/cakebatter/vegan
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
hoodtype = /obj/item/clothing/head/hooded/explorer/exo
|
||||
armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
armor = list("melee" = 55, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 40, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE
|
||||
|
||||
/obj/item/clothing/head/hooded/explorer/exo
|
||||
@@ -175,7 +175,7 @@
|
||||
desc = "A robust helmet for fighting dangerous animals. Its design and material make it harder for a Goliath to keep their grip on the wearer."
|
||||
icon_state = "exo"
|
||||
item_state = "exo"
|
||||
armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
armor = list("melee" = 55, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 40, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE
|
||||
|
||||
/obj/item/clothing/mask/gas/exo
|
||||
|
||||
@@ -7,6 +7,26 @@
|
||||
|
||||
// please make sure they're sorted alphabetically and categorized
|
||||
|
||||
/datum/sprite_accessory/facial_hair/threeoclock
|
||||
name = "Beard (3 o\'Clock)"
|
||||
icon_state = "facial_3oclock"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/fiveoclock
|
||||
name = "Beard (5 o\'Clock)"
|
||||
icon_state = "facial_5oclock"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/fiveoclockm
|
||||
name = "Beard (5 o\'Clock with Moustache)"
|
||||
icon_state = "facial_5oclockmoustache"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/sevenoclock
|
||||
name = "Beard (7 o\'Clock)"
|
||||
icon_state = "facial_7oclock"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/sevenoclockm
|
||||
name = "Beard (7 o\'Clock with Moustache)"
|
||||
icon_state = "facial_7oclockmoustache"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/abe
|
||||
name = "Beard (Abraham Lincoln)"
|
||||
icon_state = "facial_abe"
|
||||
@@ -23,10 +43,6 @@
|
||||
name = "Beard (Dwarf)"
|
||||
icon_state = "facial_dwarf"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/fiveoclock
|
||||
name = "Beard (Five o Clock Shadow)"
|
||||
icon_state = "facial_fiveoclock"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/fullbeard
|
||||
name = "Beard (Full)"
|
||||
icon_state = "facial_fullbeard"
|
||||
@@ -35,6 +51,10 @@
|
||||
name = "Beard (Goatee)"
|
||||
icon_state = "facial_gt"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/goatee
|
||||
name = "Beard (Goatee 2)"
|
||||
icon_state = "facial_goatee"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/hip
|
||||
name = "Beard (Hipster)"
|
||||
icon_state = "facial_hip"
|
||||
@@ -43,18 +63,38 @@
|
||||
name = "Beard (Jensen)"
|
||||
icon_state = "facial_jensen"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/martialartist
|
||||
name = "Beard (Martial Artist)"
|
||||
icon_state = "facial_martialartist"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/moonshiner
|
||||
name = "Beard (Moonshiner)"
|
||||
icon_state = "facial_moonshiner"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/neckbeard
|
||||
name = "Beard (Neckbeard)"
|
||||
icon_state = "facial_neckbeard"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/tribeard
|
||||
name = "Beard (Tribeard)"
|
||||
icon_state = "facial_tribeard"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vlongbeard
|
||||
name = "Beard (Very Long)"
|
||||
icon_state = "facial_wise"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/volaju
|
||||
name = "Beard (Volaju)"
|
||||
icon_state = "facial_volaju"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/longbeard
|
||||
name = "Beard (Long)"
|
||||
icon_state = "facial_longbeard"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/moustache
|
||||
name = "Moustache"
|
||||
icon_state = "facial_moustache"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/fu
|
||||
name = "Moustache (Fu Manchu)"
|
||||
icon_state = "facial_fumanchu"
|
||||
@@ -63,6 +103,10 @@
|
||||
name = "Moustache (Hulk Hogan)"
|
||||
icon_state = "facial_hogan" //-Neek
|
||||
|
||||
/datum/sprite_accessory/facial_hair/pencil
|
||||
name = "Moustache (Pencil)"
|
||||
icon_state = "facial_pencilstache"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/selleck
|
||||
name = "Moustache (Selleck)"
|
||||
icon_state = "facial_selleck"
|
||||
@@ -75,56 +119,31 @@
|
||||
name = "Moustache (Van Dyke)"
|
||||
icon_state = "facial_vandyke"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/walrus
|
||||
name = "Moustache (Walrus)"
|
||||
icon_state = "facial_walrus"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/watson
|
||||
name = "Moustache (Watson)"
|
||||
icon_state = "facial_watson"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/mutton
|
||||
name = "Mutton Chops"
|
||||
icon_state = "facial_mutton"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/muttonmus
|
||||
name = "Mutton Chops with Moustache"
|
||||
icon_state = "facial_muttonmus"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/shaved
|
||||
name = "Shaved"
|
||||
icon_state = null
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/facial_hair/sideburn
|
||||
name = "Sideburns"
|
||||
icon_state = "facial_sideburns"
|
||||
|
||||
/datum/sprite_accessory/facial_hair/elvis
|
||||
name = "Sideburns (Elvis)"
|
||||
icon_state = "facial_elvis"
|
||||
|
||||
#define VFACE(_name, new_state) /datum/sprite_accessory/facial_hair/##new_state/icon_state=#new_state;;/datum/sprite_accessory/facial_hair/##new_state/name= #_name + " (Virgo)"
|
||||
VFACE("Watson", facial_watson_s)
|
||||
VFACE("Chaplin", facial_chaplin_s)
|
||||
VFACE("Fullbeard", facial_fullbeard_s)
|
||||
VFACE("Vandyke", facial_vandyke_s)
|
||||
VFACE("Elvis", facial_elvis_s)
|
||||
VFACE("Abe", facial_abe_s)
|
||||
VFACE("Chin", facial_chin_s)
|
||||
VFACE("GT", facial_gt_s)
|
||||
VFACE("Hip", facial_hip_s)
|
||||
VFACE("Hogan", facial_hogan_s)
|
||||
VFACE("Selleck", facial_selleck_s)
|
||||
VFACE("Neckbeard", facial_neckbeard_s)
|
||||
VFACE("Longbeard", facial_longbeard_s)
|
||||
VFACE("Dwarf", facial_dwarf_s)
|
||||
VFACE("Sideburn", facial_sideburn_s)
|
||||
VFACE("Mutton", facial_mutton_s)
|
||||
VFACE("Moustache", facial_moustache_s)
|
||||
VFACE("Pencilstache", facial_pencilstache_s)
|
||||
VFACE("Goatee", facial_goatee_s)
|
||||
VFACE("Smallstache", facial_smallstache_s)
|
||||
VFACE("Volaju", facial_volaju_s)
|
||||
VFACE("3 O\'clock", facial_3oclock_s)
|
||||
VFACE("5 O\'clock", facial_5oclock_s)
|
||||
VFACE("7 O\'clock", facial_7oclock_s)
|
||||
VFACE("5 O\'clock Moustache", facial_5oclockmoustache_s)
|
||||
VFACE("7 O\'clock", facial_7oclockmoustache_s)
|
||||
VFACE("Walrus", facial_walrus_s)
|
||||
VFACE("Muttonmus", facial_muttonmus_s)
|
||||
VFACE("Wise", facial_wise_s)
|
||||
VFACE("Martial Artist", facial_martialartist_s)
|
||||
VFACE("Dorsalfnil", facial_dorsalfnil_s)
|
||||
VFACE("Hornadorns", facial_hornadorns_s)
|
||||
VFACE("Spike", facial_spike_s)
|
||||
VFACE("Chinhorns", facial_chinhorns_s)
|
||||
VFACE("Cropped Fullbeard", facial_croppedfullbeard_s)
|
||||
VFACE("Chinless Beard", facial_chinlessbeard_s)
|
||||
VFACE("Moonshiner", facial_moonshiner_s)
|
||||
VFACE("Tribearder", facial_tribearder_s)
|
||||
#undef VFACE
|
||||
icon_state = "facial_elvis"
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/datum/sprite_accessory/hair/bald
|
||||
name = "Bald"
|
||||
icon_state = null
|
||||
icon_state = "bald"
|
||||
|
||||
/datum/sprite_accessory/hair/balding
|
||||
name = "Balding Hair"
|
||||
@@ -37,6 +37,14 @@
|
||||
name = "Bedhead"
|
||||
icon_state = "hair_bedhead"
|
||||
|
||||
/datum/sprite_accessory/hair/bedhead_long
|
||||
name = "Bedhead (Long)"
|
||||
icon_state = "hair_long_bedhead"
|
||||
|
||||
/datum/sprite_accessory/hair/bedhead_longer
|
||||
name = "Bedhead (Longer)"
|
||||
icon_state = "hair_longer_bedhead"
|
||||
|
||||
/datum/sprite_accessory/hair/bedhead2
|
||||
name = "Bedhead 2"
|
||||
icon_state = "hair_bedheadv2"
|
||||
@@ -51,7 +59,7 @@
|
||||
|
||||
/datum/sprite_accessory/hair/beehive2
|
||||
name = "Beehive 2"
|
||||
icon_state = "hair_beehivev2"
|
||||
icon_state = "hair_beehive2"
|
||||
|
||||
/datum/sprite_accessory/hair/bob
|
||||
name = "Bob Hair"
|
||||
@@ -69,6 +77,14 @@
|
||||
name = "Bobcurl"
|
||||
icon_state = "hair_bobcurl"
|
||||
|
||||
/datum/sprite_accessory/hair/bobcut
|
||||
name = "Bobcut"
|
||||
icon_state = "hair_bobcut"
|
||||
|
||||
/datum/sprite_accessory/hair/bobcutalt
|
||||
name = "Bobcut (Alt)"
|
||||
icon_state = "hair_bobcutalt"
|
||||
|
||||
/datum/sprite_accessory/hair/boddicker
|
||||
name = "Boddicker"
|
||||
icon_state = "hair_boddicker"
|
||||
@@ -77,6 +93,10 @@
|
||||
name = "Bowl"
|
||||
icon_state = "hair_bowlcut"
|
||||
|
||||
/datum/sprite_accessory/hair/bowl2
|
||||
name = "Bowl 2"
|
||||
icon_state = "hair_bowlcut2"
|
||||
|
||||
/datum/sprite_accessory/hair/braid
|
||||
name = "Braid (Floorlength)"
|
||||
icon_state = "hair_braid"
|
||||
@@ -89,6 +109,10 @@
|
||||
name = "Braided Front"
|
||||
icon_state = "hair_braidfront"
|
||||
|
||||
/datum/sprite_accessory/hair/grandebraid
|
||||
name = "Braid (Grande)"
|
||||
icon_state = "hair_grande"
|
||||
|
||||
/datum/sprite_accessory/hair/not_floorlength_braid
|
||||
name = "Braid (High)"
|
||||
icon_state = "hair_braid2"
|
||||
@@ -113,10 +137,26 @@
|
||||
name = "Bun Head 2"
|
||||
icon_state = "hair_bunhead2"
|
||||
|
||||
/datum/sprite_accessory/hair/bun3
|
||||
name = "Bun Head 3"
|
||||
icon_state = "hair_bunhead3"
|
||||
|
||||
/datum/sprite_accessory/hair/bun4
|
||||
name = "Bun Head 4"
|
||||
icon_state = "hair_bunhead4"
|
||||
|
||||
/datum/sprite_accessory/hair/doublebun
|
||||
name = "Bun Head (Double)"
|
||||
icon_state = "hair_doublebun"
|
||||
|
||||
/datum/sprite_accessory/hair/largebun
|
||||
name = "Bun (Large)"
|
||||
name = "Bun Head (Large)"
|
||||
icon_state = "hair_largebun"
|
||||
|
||||
/datum/sprite_accessory/hair/tightbun
|
||||
name = "Bun Head (Tight)"
|
||||
icon_state = "hair_tightbun"
|
||||
|
||||
/datum/sprite_accessory/hair/business
|
||||
name = "Business Hair"
|
||||
icon_state = "hair_business"
|
||||
@@ -137,10 +177,22 @@
|
||||
name = "Buzzcut"
|
||||
icon_state = "hair_buzzcut"
|
||||
|
||||
/datum/sprite_accessory/hair/cia
|
||||
name = "CIA"
|
||||
icon_state = "hair_cia"
|
||||
|
||||
/datum/sprite_accessory/hair/combover
|
||||
name = "Combover"
|
||||
icon_state = "hair_combover"
|
||||
|
||||
/datum/sprite_accessory/hair/coffeehouse
|
||||
name = "Coffee House"
|
||||
icon_state = "hair_coffeehouse"
|
||||
|
||||
/datum/sprite_accessory/hair/country
|
||||
name = "Country"
|
||||
icon_state = "hair_country"
|
||||
|
||||
/datum/sprite_accessory/hair/crew
|
||||
name = "Crewcut"
|
||||
icon_state = "hair_crewcut"
|
||||
@@ -149,13 +201,21 @@
|
||||
name = "Curls"
|
||||
icon_state = "hair_curls"
|
||||
|
||||
/datum/sprite_accessory/hair/curly
|
||||
name = "Curly"
|
||||
icon_state = "hair_curly"
|
||||
|
||||
/datum/sprite_accessory/hair/cut
|
||||
name = "Cut Hair"
|
||||
icon_state = "hair_c"
|
||||
|
||||
/datum/sprite_accessory/hair/dave
|
||||
name = "Dave"
|
||||
icon_state = "hair_dave"
|
||||
|
||||
/datum/sprite_accessory/hair/devillock
|
||||
name = "Devil Lock"
|
||||
icon_state = "hair_devilock"
|
||||
icon_state = "hair_devillock"
|
||||
|
||||
/datum/sprite_accessory/hair/dreadlocks
|
||||
name = "Dreadlocks"
|
||||
@@ -173,22 +233,66 @@
|
||||
name = "Emo"
|
||||
icon_state = "hair_emo"
|
||||
|
||||
/datum/sprite_accessory/hair/emo2
|
||||
name = "Emo 2"
|
||||
icon_state = "hair_emo2"
|
||||
|
||||
/datum/sprite_accessory/hair/emo_fringe
|
||||
name = "Emo (Fringe)"
|
||||
icon_state = "hair_emofringe"
|
||||
|
||||
/datum/sprite_accessory/hair/emo_long
|
||||
name = "Emo (Long)"
|
||||
icon_state = "hair_emolong"
|
||||
|
||||
/datum/sprite_accessory/hair/lowfade
|
||||
name = "Fade (Low)"
|
||||
icon_state = "hair_lowfade"
|
||||
|
||||
/datum/sprite_accessory/hair/medfade
|
||||
name = "Fade (Medium)"
|
||||
icon_state = "hair_medfade"
|
||||
|
||||
/datum/sprite_accessory/hair/highfade
|
||||
name = "Fade (High)"
|
||||
icon_state = "hair_highfade"
|
||||
|
||||
/datum/sprite_accessory/hair/baldfade
|
||||
name = "Fade (Bald)"
|
||||
icon_state = "hair_baldfade"
|
||||
|
||||
/datum/sprite_accessory/hair/nofade
|
||||
name = "Fade (None)"
|
||||
icon_state = "hair_nofade"
|
||||
|
||||
/datum/sprite_accessory/hair/father
|
||||
name = "Father"
|
||||
icon_state = "hair_father"
|
||||
|
||||
/datum/sprite_accessory/hair/feather
|
||||
name = "Feather"
|
||||
icon_state = "hair_feather"
|
||||
|
||||
/datum/sprite_accessory/hair/flair
|
||||
name = "Flair"
|
||||
icon_state = "hair_flair"
|
||||
|
||||
/datum/sprite_accessory/hair/sargeant
|
||||
name = "Flat Top"
|
||||
icon_state = "hair_sargeant"
|
||||
icon_state = "hair_sergeant"
|
||||
|
||||
/datum/sprite_accessory/hair/bigflattop
|
||||
name = "Flat Top (Big)"
|
||||
icon_state = "hair_bigflattop"
|
||||
|
||||
/datum/sprite_accessory/hair/fag
|
||||
/datum/sprite_accessory/hair/fag //grimacing emoji
|
||||
name = "Flow Hair"
|
||||
icon_state = "hair_f"
|
||||
|
||||
/datum/sprite_accessory/hair/fringetail
|
||||
name = "Fringe Tail"
|
||||
icon_state = "hair_fringetail"
|
||||
|
||||
/datum/sprite_accessory/hair/gelled
|
||||
name = "Gelled Back"
|
||||
icon_state = "hair_gelled"
|
||||
@@ -205,10 +309,22 @@
|
||||
name = "Half-banged Hair 2"
|
||||
icon_state = "hair_halfbang2"
|
||||
|
||||
/datum/sprite_accessory/hair/halfbangalt
|
||||
name = "Half-banged Hair (Alt)"
|
||||
icon_state = "hair_halfbang_alt"
|
||||
|
||||
/datum/sprite_accessory/hair/halfshaved
|
||||
name = "Half-shaved Hair"
|
||||
icon_state = "hair_halfshaved"
|
||||
|
||||
/datum/sprite_accessory/hair/hedgehog
|
||||
name = "Hedgehog Hair"
|
||||
icon_state = "hair_hedgehog"
|
||||
|
||||
/datum/sprite_accessory/hair/hightight
|
||||
name = "High and Tight"
|
||||
icon_state = "hair_hightight"
|
||||
|
||||
/datum/sprite_accessory/hair/himecut
|
||||
name = "Hime Cut"
|
||||
icon_state = "hair_himecut"
|
||||
@@ -217,6 +333,10 @@
|
||||
name = "Hime Cut 2"
|
||||
icon_state = "hair_himecut2"
|
||||
|
||||
/datum/sprite_accessory/hair/shorthime
|
||||
name = "Hime Cut (Short)"
|
||||
icon_state = "hair_shorthime"
|
||||
|
||||
/datum/sprite_accessory/hair/himeup
|
||||
name = "Hime Updo"
|
||||
icon_state = "hair_himeup"
|
||||
@@ -225,16 +345,28 @@
|
||||
name = "Hitop"
|
||||
icon_state = "hair_hitop"
|
||||
|
||||
/datum/sprite_accessory/hair/jade
|
||||
name = "Jade"
|
||||
icon_state = "hair_jade"
|
||||
|
||||
/datum/sprite_accessory/hair/jensen
|
||||
name = "Jensen Hair"
|
||||
name = "Jensen"
|
||||
icon_state = "hair_jensen"
|
||||
|
||||
/datum/sprite_accessory/hair/joestar
|
||||
name = "Joestar"
|
||||
icon_state = "hair_joestar"
|
||||
|
||||
/datum/sprite_accessory/hair/kagami
|
||||
name = "Kagami"
|
||||
icon_state = "hair_kagami"
|
||||
|
||||
/datum/sprite_accessory/hair/keanu
|
||||
name = "Keanu Hair"
|
||||
name = "Keanu"
|
||||
icon_state = "hair_keanu"
|
||||
|
||||
/datum/sprite_accessory/hair/kusangi
|
||||
name = "Kusanagi Hair"
|
||||
name = "Kusanagi"
|
||||
icon_state = "hair_kusanagi"
|
||||
|
||||
/datum/sprite_accessory/hair/long
|
||||
@@ -249,6 +381,10 @@
|
||||
name = "Long Hair 3"
|
||||
icon_state = "hair_long3"
|
||||
|
||||
/datum/sprite_accessory/hair/longalt
|
||||
name = "Long Hair (Alt)"
|
||||
icon_state = "hair_longeralt"
|
||||
|
||||
/datum/sprite_accessory/hair/long_over_eye
|
||||
name = "Long Over Eye"
|
||||
icon_state = "hair_longovereye"
|
||||
@@ -269,6 +405,10 @@
|
||||
name = "Long Side Part"
|
||||
icon_state = "hair_longsidepart"
|
||||
|
||||
/datum/sprite_accessory/hair/manbun
|
||||
name = "Manbun"
|
||||
icon_state = "hair_manbun"
|
||||
|
||||
/datum/sprite_accessory/hair/megaeyebrows
|
||||
name = "Mega Eyebrows"
|
||||
icon_state = "hair_megaeyebrows"
|
||||
@@ -277,6 +417,10 @@
|
||||
name = "Messy"
|
||||
icon_state = "hair_messy"
|
||||
|
||||
/datum/sprite_accessory/hair/modern
|
||||
name = "Modern"
|
||||
icon_state = "hair_modern"
|
||||
|
||||
/datum/sprite_accessory/hair/mohawk
|
||||
name = "Mohawk"
|
||||
icon_state = "hair_d"
|
||||
@@ -285,6 +429,26 @@
|
||||
name = "Mohawk (Reverse)"
|
||||
icon_state = "hair_reversemohawk"
|
||||
|
||||
/datum/sprite_accessory/hair/shavedmohawk
|
||||
name = "Mohawk (Shaved)"
|
||||
icon_state = "hair_shavedmohawk"
|
||||
|
||||
/datum/sprite_accessory/hair/mohawk_unshaven
|
||||
name = "Mohawk (Unshaven)"
|
||||
icon_state = "hair_unshaven_mohawk"
|
||||
|
||||
/datum/sprite_accessory/hair/mulder
|
||||
name = "Mulder"
|
||||
icon_state = "hair_mulder"
|
||||
|
||||
/datum/sprite_accessory/hair/nia
|
||||
name = "Nia"
|
||||
icon_state = "hair_nia"
|
||||
|
||||
/datum/sprite_accessory/hair/nitori
|
||||
name = "Nitori"
|
||||
icon_state = "hair_nitori"
|
||||
|
||||
/datum/sprite_accessory/hair/odango
|
||||
name = "Odango"
|
||||
icon_state = "hair_odango"
|
||||
@@ -301,6 +465,10 @@
|
||||
name = "Over Eye"
|
||||
icon_state = "hair_shortovereye"
|
||||
|
||||
/datum/sprite_accessory/hair/oxton
|
||||
name = "Oxton"
|
||||
icon_state = "hair_oxton"
|
||||
|
||||
//Donator item - fractious
|
||||
/datum/sprite_accessory/hair/over_eye_fr
|
||||
name = "Over Eye (fract)"
|
||||
@@ -331,6 +499,10 @@
|
||||
name = "Pixie Cut"
|
||||
icon_state = "hair_pixie"
|
||||
|
||||
/datum/sprite_accessory/hair/plait
|
||||
name = "Plait"
|
||||
icon_state = "hair_plait"
|
||||
|
||||
/datum/sprite_accessory/hair/pompadour
|
||||
name = "Pompadour"
|
||||
icon_state = "hair_pompadour"
|
||||
@@ -383,10 +555,62 @@
|
||||
name = "Ponytail (Side) 4"
|
||||
icon_state = "hair_sidetail4"
|
||||
|
||||
/datum/sprite_accessory/hair/spikytail
|
||||
name = "Ponytail (Spiky)"
|
||||
icon_state = "hair_spikyponytail"
|
||||
|
||||
/datum/sprite_accessory/hair/poofy
|
||||
name = "Poofy"
|
||||
icon_state = "hair_poofy"
|
||||
|
||||
/datum/sprite_accessory/hair/poofy2
|
||||
name = "Poofy 2"
|
||||
icon_state = "hair_poofy2"
|
||||
|
||||
/datum/sprite_accessory/hair/quiff
|
||||
name = "Quiff"
|
||||
icon_state = "hair_quiff"
|
||||
|
||||
/datum/sprite_accessory/hair/ronin
|
||||
name = "Ronin"
|
||||
icon_state = "hair_ronin"
|
||||
|
||||
/datum/sprite_accessory/hair/row
|
||||
name = "Rows"
|
||||
icon_state = "hair_rows1"
|
||||
|
||||
/datum/sprite_accessory/hair/row2
|
||||
name = "Rows 2"
|
||||
icon_state = "hair_rows2"
|
||||
|
||||
/datum/sprite_accessory/hair/rowbun
|
||||
name = "Rows (Bun)"
|
||||
icon_state = "hair_rowbun"
|
||||
|
||||
/datum/sprite_accessory/hair/rowdualtail
|
||||
name = "Rows (Pigtails)"
|
||||
icon_state = "hair_rowdualtail"
|
||||
|
||||
/datum/sprite_accessory/hair/rowbraid
|
||||
name = "Rows (Braid)"
|
||||
icon_state = "hair_rowbraid"
|
||||
|
||||
/datum/sprite_accessory/hair/scully
|
||||
name = "Scully"
|
||||
icon_state = "hair_scully"
|
||||
|
||||
/datum/sprite_accessory/hair/shaved
|
||||
name = "Shaved"
|
||||
icon_state = "hair_shaved"
|
||||
|
||||
/datum/sprite_accessory/hair/shavedpart
|
||||
name = "Shaved (Part)"
|
||||
icon_state = "hair_shavedpart"
|
||||
|
||||
/datum/sprite_accessory/hair/bangs_short
|
||||
name = "Short Bangs"
|
||||
icon_state = "hair_shortbangs"
|
||||
|
||||
/datum/sprite_accessory/hair/short
|
||||
name = "Short Hair"
|
||||
icon_state = "hair_a"
|
||||
@@ -399,10 +623,30 @@
|
||||
name = "Short Hair 3"
|
||||
icon_state = "hair_shorthair3"
|
||||
|
||||
/datum/sprite_accessory/hair/shorthair4
|
||||
name = "Short Hair 4"
|
||||
icon_state = "hair_shorthair4"
|
||||
|
||||
/datum/sprite_accessory/hair/shorthair80s
|
||||
name = "Short Hair 80s"
|
||||
icon_state = "hair_80s"
|
||||
|
||||
/datum/sprite_accessory/hair/shorthairrosa
|
||||
name = "Short Hair Rosa"
|
||||
icon_state = "hair_rosa"
|
||||
|
||||
/datum/sprite_accessory/hair/stail
|
||||
name = "Short Tail"
|
||||
icon_state = "hair_stail"
|
||||
|
||||
/datum/sprite_accessory/hair/shoulderlength
|
||||
name = "Shoulder-length Hair"
|
||||
icon_state = "hair_b"
|
||||
|
||||
/datum/sprite_accessory/hair/shy
|
||||
name = "Shy"
|
||||
icon_state = "hair_shy"
|
||||
|
||||
/datum/sprite_accessory/hair/sidecut
|
||||
name = "Sidecut"
|
||||
icon_state = "hair_sidecut"
|
||||
@@ -411,6 +655,10 @@
|
||||
name = "Skinhead"
|
||||
icon_state = "hair_skinhead"
|
||||
|
||||
/datum/sprite_accessory/hair/sleaze
|
||||
name = "Sleaze"
|
||||
icon_state = "hair_sleaze"
|
||||
|
||||
/datum/sprite_accessory/hair/protagonist
|
||||
name = "Slightly Long Hair"
|
||||
icon_state = "hair_protagonist"
|
||||
@@ -435,14 +683,58 @@
|
||||
name = "Swept Back Hair 2"
|
||||
icon_state = "hair_swept2"
|
||||
|
||||
/datum/sprite_accessory/hair/thinning
|
||||
name = "Thinning"
|
||||
icon_state = "hair_thinning"
|
||||
|
||||
/datum/sprite_accessory/hair/thinningfront
|
||||
name = "Thinning (Front)"
|
||||
icon_state = "hair_thinningfront"
|
||||
|
||||
/datum/sprite_accessory/hair/thinningrear
|
||||
name = "Thinning (Rear)"
|
||||
icon_state = "hair_thinningrear"
|
||||
|
||||
/datum/sprite_accessory/hair/topknot
|
||||
name = "Topknot"
|
||||
icon_state = "hair_topknot"
|
||||
|
||||
/datum/sprite_accessory/hair/toriyama
|
||||
name = "Toriyama"
|
||||
icon_state = "hair_toriyama"
|
||||
|
||||
/datum/sprite_accessory/hair/toriyama2
|
||||
name = "Toriyama 2"
|
||||
icon_state = "hair_toriyama2"
|
||||
|
||||
/datum/sprite_accessory/hair/tressshoulder
|
||||
name = "Tress Shoulder"
|
||||
icon_state = "hair_tressshoulder"
|
||||
|
||||
/datum/sprite_accessory/hair/trimmed
|
||||
name = "Trimmed"
|
||||
icon_state = "hair_trimmed"
|
||||
|
||||
/datum/sprite_accessory/hair/trimflat
|
||||
name = "Trimmed (Flat)"
|
||||
icon_state = "hair_trimflat"
|
||||
|
||||
/datum/sprite_accessory/hair/twintails
|
||||
name = "Twintails"
|
||||
icon_state = "hair_twintail"
|
||||
|
||||
/datum/sprite_accessory/hair/longtwintails
|
||||
name = "Twintails (Long)"
|
||||
icon_state = "hair_longstraighttwintails"
|
||||
|
||||
/datum/sprite_accessory/hair/undercut
|
||||
name = "Undercut"
|
||||
icon_state = "hair_undercut"
|
||||
|
||||
/datum/sprite_accessory/hair/unkempt
|
||||
name = "Unkempt"
|
||||
icon_state = "hair_unkempt"
|
||||
|
||||
/datum/sprite_accessory/hair/updo
|
||||
name = "Updo"
|
||||
icon_state = "hair_updo"
|
||||
@@ -463,161 +755,22 @@
|
||||
name = "Very Long with Fringe"
|
||||
icon_state = "hair_vlongfringe"
|
||||
|
||||
/*************** VIRGO PORTED HAIRS ****************************/
|
||||
#define VHAIR(_name, new_state) /datum/sprite_accessory/hair/##new_state/icon_state=#new_state;/datum/sprite_accessory/hair/##new_state/name = #_name + " (Virgo)"
|
||||
//VIRGO PORTED HAIRS
|
||||
VHAIR("Short Hair Rosa", hair_rosa_s)
|
||||
VHAIR("Short Hair 80s", hair_80s_s)
|
||||
VHAIR("Long Bedhead", hair_long_bedhead_s)
|
||||
VHAIR("Dave", hair_dave_s)
|
||||
VHAIR("Country", hair_country_s)
|
||||
VHAIR("Shy", hair_shy_s)
|
||||
VHAIR("Unshaven Mohawk", hair_unshaven_mohawk_s)
|
||||
VHAIR("Manbun", hair_manbun_s)
|
||||
VHAIR("Longer Bedhead", hair_longer_bedhead_s)
|
||||
VHAIR("Ponytail", hair_ponytail_s)
|
||||
VHAIR("Ziegler", hair_ziegler_s)
|
||||
VHAIR("Emo Fringe", hair_emofringe_s)
|
||||
VHAIR("Very Short Over Eye Alt", hair_veryshortovereyealternate_s)
|
||||
VHAIR("Shorthime", hair_shorthime_s)
|
||||
VHAIR("High Tight", hair_hightight_s)
|
||||
VHAIR("Thinning Front", hair_thinningfront_s)
|
||||
VHAIR("Big Afro", hair_bigafro_s)
|
||||
VHAIR("Afro", hair_afro_s)
|
||||
VHAIR("High Braid", hair_hbraid_s)
|
||||
VHAIR("Braid", hair_braid_s)
|
||||
VHAIR("Sargeant", hair_sargeant_s)
|
||||
VHAIR("Gelled", hair_gelled_s)
|
||||
VHAIR("Kagami", hair_kagami_s)
|
||||
VHAIR("ShortTail", hair_stail_s)
|
||||
VHAIR("Gentle", hair_gentle_s)
|
||||
VHAIR("Grande", hair_grande_s)
|
||||
VHAIR("Bobcurl", hair_bobcurl_s)
|
||||
VHAIR("Pompadeur", hair_pompadour_s)
|
||||
VHAIR("Plait", hair_plait_s)
|
||||
VHAIR("Long", hair_long_s)
|
||||
VHAIR("Rattail", hair_rattail_s)
|
||||
VHAIR("Tajspiky", hair_tajspiky_s)
|
||||
VHAIR("Messy", hair_messy_s)
|
||||
VHAIR("Bangs", hair_bangs_s)
|
||||
VHAIR("TBraid", hair_tbraid_s)
|
||||
VHAIR("Toriyama2", hair_toriyama2_s)
|
||||
VHAIR("CIA", hair_cia_s)
|
||||
VHAIR("Mulder", hair_mulder_s)
|
||||
VHAIR("Scully", hair_scully_s)
|
||||
VHAIR("Nitori", hair_nitori_s)
|
||||
VHAIR("Joestar", hair_joestar_s)
|
||||
VHAIR("Ponytail4", hair_ponytail4_s)
|
||||
VHAIR("Ponytail5", hair_ponytail5_s)
|
||||
VHAIR("Beehive2", hair_beehive2_s)
|
||||
VHAIR("Short Braid", hair_shortbraid_s)
|
||||
VHAIR("Reverse Mohawk", hair_reversemohawk_s)
|
||||
VHAIR("SHort Bangs", hair_shortbangs_s)
|
||||
VHAIR("Half Shaved", hair_halfshaved_s)
|
||||
VHAIR("Longer Alt 2", hair_longeralt2_s)
|
||||
VHAIR("Bun", hair_bun_s)
|
||||
VHAIR("Curly", hair_curly_s)
|
||||
VHAIR("Victory", hair_victory_s)
|
||||
VHAIR("Ponytail6", hair_ponytail6_s)
|
||||
VHAIR("Undercut3", hair_undercut3_s)
|
||||
VHAIR("Bobcut Alt", hair_bobcultalt_s)
|
||||
VHAIR("Fingerwave", hair_fingerwave_s)
|
||||
VHAIR("Oxton", hair_oxton_s)
|
||||
VHAIR("Poofy2", hair_poofy2_s)
|
||||
VHAIR("Fringe Tail", hair_fringetail_s)
|
||||
VHAIR("Bun3", hair_bun3_s)
|
||||
VHAIR("Wisp", hair_wisp_s)
|
||||
VHAIR("Undercut2", hair_undercut2_s)
|
||||
VHAIR("TBob", hair_tbob_s)
|
||||
VHAIR("Spiky Ponytail", hair_spikyponytail_s)
|
||||
VHAIR("Rowbun", hair_rowbun_s)
|
||||
VHAIR("Rowdualtail", hair_rowdualtail_s)
|
||||
VHAIR("Rowbraid", hair_rowbraid_s)
|
||||
VHAIR("Shaved Mohawk", hair_shavedmohawk_s)
|
||||
VHAIR("Topknot", hair_topknot_s)
|
||||
VHAIR("Ronin", hair_ronin_s)
|
||||
VHAIR("Bowlcut2", hair_bowlcut2_s)
|
||||
VHAIR("Thinning Rear", hair_thinningrear_s)
|
||||
VHAIR("Thinning", hair_thinning_s)
|
||||
VHAIR("Jade", hair_jade_s)
|
||||
VHAIR("Bedhead", hair_bedhead_s)
|
||||
VHAIR("Dreadlocks", hair_dreads_s)
|
||||
VHAIR("Very Long", hair_vlong_s)
|
||||
VHAIR("Jensen", hair_jensen_s)
|
||||
VHAIR("Halfbang", hair_halfbang_s)
|
||||
VHAIR("Kusangi", hair_kusangi_s)
|
||||
VHAIR("Ponytail", hair_ponytail_s)
|
||||
VHAIR("Ponytail3", hair_ponytail3_s)
|
||||
VHAIR("Halfbang Alt", hair_halfbang_alt_s)
|
||||
VHAIR("Bedhead V2", hair_bedheadv2_s)
|
||||
VHAIR("Long Fringe", hair_longfringe_s)
|
||||
VHAIR("Flair", hair_flair_s)
|
||||
VHAIR("Bedhead V3", hair_bedheadv3_s)
|
||||
VHAIR("Himecut", hair_himecut_s)
|
||||
VHAIR("Curls", hair_curls_s)
|
||||
VHAIR("Very Long Fringe", hair_vlongfringe_s)
|
||||
VHAIR("Longest", hair_longest_s)
|
||||
VHAIR("Father", hair_father_s)
|
||||
VHAIR("Emo Long", hair_emolong_s)
|
||||
VHAIR("Short Hair 3", hair_shorthair3_s)
|
||||
VHAIR("Double Bun", hair_doublebun_s)
|
||||
VHAIR("Sleeze", hair_sleeze_s)
|
||||
VHAIR("Twintail", hair_twintail_s)
|
||||
VHAIR("Emo 2", hair_emo2_s)
|
||||
VHAIR("Low Fade", hair_lowfade_s)
|
||||
VHAIR("Med Fade", hair_medfade_s)
|
||||
VHAIR("High Fade", hair_highfade_s)
|
||||
VHAIR("Bald Fade", hair_baldfade_s)
|
||||
VHAIR("No Fade", hair_nofade_s)
|
||||
VHAIR("Trim Flat", hair_trimflat_s)
|
||||
VHAIR("Shaved", hair_shaved_s)
|
||||
VHAIR("Trimmed", hair_trimmed_s)
|
||||
VHAIR("Tight Bun", hair_tightbun_s)
|
||||
VHAIR("Short Hair 4", hair_d_s)
|
||||
VHAIR("Short Hair 5", hair_e_s)
|
||||
VHAIR("Short Hair 6", hair_f_s)
|
||||
VHAIR("Skinhead", hair_skinhead_s)
|
||||
VHAIR("Afro2", hair_afro2_s)
|
||||
VHAIR("Bobcut", hair_bobcut_s)
|
||||
VHAIR("Emo", hair_emo_s)
|
||||
VHAIR("Long Over Eye", hair_longovereye_s)
|
||||
VHAIR("Feather", hair_feather_s)
|
||||
VHAIR("Hitop", hair_hitop_s)
|
||||
VHAIR("Short Over Eye", hair_shortoverye_s)
|
||||
VHAIR("Straight", hair_straight_s)
|
||||
VHAIR("Buzzcut", hair_buzzcut_s)
|
||||
VHAIR("Combover", hair_combover_s)
|
||||
VHAIR("Crewcut", hair_crewcut_s)
|
||||
VHAIR("Devillock", hair_devilock_s)
|
||||
VHAIR("Clean", hair_clean_s)
|
||||
VHAIR("Shaggy", hair_shaggy_s)
|
||||
VHAIR("Updo", hair_updo_s)
|
||||
VHAIR("Mohawk", hair_mohawk_s)
|
||||
VHAIR("Odango", hair_odango_s)
|
||||
VHAIR("Ombre", hair_ombre_s)
|
||||
VHAIR("Parted", hair_parted_s)
|
||||
VHAIR("Quiff", hair_quiff_s)
|
||||
VHAIR("Volaju", hair_volaju_s)
|
||||
VHAIR("Bun2", hair_bun2_s)
|
||||
VHAIR("Rows1", hair_rows1_s)
|
||||
VHAIR("Rows2", hair_rows2_s)
|
||||
VHAIR("Dandy Pompadour", hair_dandypompadour_s)
|
||||
VHAIR("Poofy", hair_poofy_s)
|
||||
VHAIR("Toriyama", hair_toriyama_s)
|
||||
VHAIR("Drillruru", hair_drillruru_s)
|
||||
VHAIR("Bowlcut", hair_bowlcut_s)
|
||||
VHAIR("Coffee House", hair_coffeehouse_s)
|
||||
VHAIR("Family Man", hair_thefamilyman_s)
|
||||
VHAIR("Shaved Part", hair_shavedpart_s)
|
||||
VHAIR("Modern", hair_modern_s)
|
||||
VHAIR("One Shoulder", hair_oneshoulder_s)
|
||||
VHAIR("Very Short Over Eye", hair_veryshortovereye_s)
|
||||
VHAIR("Unkept", hair_unkept_s)
|
||||
VHAIR("Wife", hair_wife_s)
|
||||
VHAIR("Nia", hair_nia_s)
|
||||
VHAIR("Undercut", hair_undercut_s)
|
||||
VHAIR("Bobcut Alt", hair_bobcutalt_s)
|
||||
VHAIR("Short Hair 4 alt", hair_shorthair4_s)
|
||||
VHAIR("Tressshoulder", hair_tressshoulder_s)
|
||||
//END
|
||||
#undef VHAIR
|
||||
/datum/sprite_accessory/hair/short_oe
|
||||
name = "Very Short Over Eye"
|
||||
icon_state = "hair_veryshortovereye"
|
||||
|
||||
/datum/sprite_accessory/hair/short_oe_alt
|
||||
name = "Very Short Over Eye (Alt)"
|
||||
icon_state = "hair_veryshortovereyealternate"
|
||||
|
||||
/datum/sprite_accessory/hair/volaju
|
||||
name = "Volaju"
|
||||
icon_state = "hair_volaju"
|
||||
|
||||
/datum/sprite_accessory/hair/wisp
|
||||
name = "Wisp"
|
||||
icon_state = "hair_wisp"
|
||||
|
||||
/datum/sprite_accessory/hair/ziegler
|
||||
name = "Ziegler"
|
||||
icon_state = "hair_ziegler"
|
||||
@@ -370,6 +370,22 @@
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/smooth
|
||||
name = "Smooth"
|
||||
icon_state = "smooth"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/smooth
|
||||
name = "Smooth"
|
||||
icon_state = "smooth"
|
||||
|
||||
/datum/sprite_accessory/tails/human/spikes
|
||||
name = "Spikes"
|
||||
icon_state = "spikes"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/spikes
|
||||
name = "Spikes"
|
||||
icon_state = "spikes"
|
||||
|
||||
/datum/sprite_accessory/tails/human/shark
|
||||
name = "Shark"
|
||||
icon_state = "shark"
|
||||
@@ -438,6 +454,22 @@
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails/human/dtiger
|
||||
name = "Dark Tiger"
|
||||
icon_state = "dtiger"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/dtiger
|
||||
name = "Dark Tiger"
|
||||
icon_state = "dtiger"
|
||||
|
||||
/datum/sprite_accessory/tails/human/ltiger
|
||||
name = "Light Tiger"
|
||||
icon_state = "ltiger"
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/ltiger
|
||||
name = "Light Tiger"
|
||||
icon_state = "ltiger"
|
||||
|
||||
/datum/sprite_accessory/tails/human/wolf
|
||||
name = "Wolf"
|
||||
icon_state = "wolf"
|
||||
@@ -693,6 +725,30 @@ datum/sprite_accessory/mam_tails/insect
|
||||
name = "Skunk"
|
||||
icon_state = "skunk"
|
||||
|
||||
/datum/sprite_accessory/mam_tails/smooth
|
||||
name = "Smooth"
|
||||
icon_state = "smooth"
|
||||
color_src = MUTCOLORS
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/smooth
|
||||
name = "Smooth"
|
||||
icon_state = "smooth"
|
||||
color_src = MUTCOLORS
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/spikes
|
||||
name = "Spikes"
|
||||
icon_state = "spikes"
|
||||
color_src = MUTCOLORS
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails/spikes
|
||||
name = "Spikes"
|
||||
icon_state = "spikes"
|
||||
color_src = MUTCOLORS
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails/shark
|
||||
name = "Shark"
|
||||
icon_state = "shark"
|
||||
@@ -741,6 +797,30 @@ datum/sprite_accessory/mam_tails/insect
|
||||
name = "Tiger"
|
||||
icon_state = "tiger"
|
||||
|
||||
/datum/sprite_accessory/mam_tails/dtiger
|
||||
name = "Dark Tiger"
|
||||
icon_state = "dtiger"
|
||||
color_src = MUTCOLORS
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/dtiger
|
||||
name = "Dark Tiger"
|
||||
icon_state = "dtiger"
|
||||
color_src = MUTCOLORS
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails/ltiger
|
||||
name = "Light Tiger"
|
||||
icon_state = "ltiger"
|
||||
color_src = MUTCOLORS
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails_animated/ltiger
|
||||
name = "Light Tiger"
|
||||
icon_state = "ltiger"
|
||||
color_src = MUTCOLORS
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
/datum/sprite_accessory/mam_tails/wolf
|
||||
name = "Wolf"
|
||||
icon_state = "wolf"
|
||||
|
||||
@@ -260,8 +260,9 @@ Transfer_mind is there to check if mob is being deleted/not going to have a body
|
||||
Works together with spawning an observer, noted above.
|
||||
*/
|
||||
|
||||
/mob/proc/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE)
|
||||
/mob/proc/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE, voluntary = FALSE)
|
||||
penalize = suiciding || penalize // suicide squad.
|
||||
voluntary_ghosted = voluntary
|
||||
if(!key || cmptext(copytext(key,1,2),"@") || (SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, can_reenter_corpse, special, penalize) & COMPONENT_BLOCK_GHOSTING))
|
||||
return //mob has no key, is an aghost or some component hijacked.
|
||||
stop_sound_channel(CHANNEL_HEARTBEAT) //Stop heartbeat sounds because You Are A Ghost Now
|
||||
@@ -285,9 +286,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set name = "Ghost"
|
||||
set desc = "Relinquish your life and enter the land of the dead."
|
||||
|
||||
if(SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, (stat == DEAD) ? TRUE : FALSE, FALSE) & COMPONENT_BLOCK_GHOSTING)
|
||||
return
|
||||
|
||||
var/penalty = CONFIG_GET(number/suicide_reenter_round_timer) MINUTES
|
||||
var/roundstart_quit_limit = CONFIG_GET(number/roundstart_suicide_time_limit) MINUTES
|
||||
if(world.time < roundstart_quit_limit)
|
||||
@@ -295,6 +293,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(penalty + world.realtime - SSshuttle.realtimeofstart > SSshuttle.auto_call + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime)
|
||||
penalty = CANT_REENTER_ROUND
|
||||
|
||||
if(SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, (stat == DEAD) ? TRUE : FALSE, FALSE, (stat == DEAD)? penalty : 0, (stat == DEAD)? TRUE : FALSE) & COMPONENT_BLOCK_GHOSTING)
|
||||
return
|
||||
|
||||
if(stat != DEAD)
|
||||
succumb()
|
||||
if(stat == DEAD)
|
||||
@@ -307,7 +308,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
var/obj/machinery/cryopod/C = loc
|
||||
C.despawn_occupant()
|
||||
else
|
||||
ghostize(0, penalize = TRUE) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3
|
||||
ghostize(0, penalize = TRUE, voluntary = TRUE) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3
|
||||
suicide_log(TRUE)
|
||||
|
||||
/mob/camera/verb/ghost()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
var/alt_inhands_file = 'icons/mob/alienqueen.dmi'
|
||||
|
||||
/mob/living/carbon/alien/humanoid/royal/can_inject()
|
||||
/mob/living/carbon/alien/humanoid/royal/can_inject(mob/user, error_msg, target_zone, penetrate_thick = FALSE, bypass_immunity = FALSE)
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/alien/humanoid/royal/queen
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
BP.drop_limb()
|
||||
BP.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)
|
||||
|
||||
/mob/living/carbon/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE)
|
||||
/mob/living/carbon/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE, voluntary = FALSE)
|
||||
if(combatmode)
|
||||
toggle_combat_mode(TRUE, TRUE)
|
||||
return ..()
|
||||
|
||||
@@ -336,7 +336,8 @@
|
||||
if(bomb_armor < EXPLODE_GIB_THRESHOLD) //gibs the mob if their bomb armor is lower than EXPLODE_GIB_THRESHOLD
|
||||
for(var/I in contents)
|
||||
var/atom/A = I
|
||||
A.ex_act(severity)
|
||||
if(!QDELETED(A))
|
||||
A.ex_act(severity)
|
||||
gib()
|
||||
return
|
||||
else
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
..()
|
||||
|
||||
/datum/species/plasmaman/before_equip_job(datum/job/J, mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
var/current_job = J.title
|
||||
var/current_job = J?.title
|
||||
var/datum/outfit/plasmaman/O = new /datum/outfit/plasmaman
|
||||
switch(current_job)
|
||||
if("Chaplain")
|
||||
|
||||
@@ -382,9 +382,6 @@ There are several things that need to be remembered:
|
||||
|
||||
if(wear_suit)
|
||||
var/obj/item/clothing/suit/S = wear_suit
|
||||
var/item_level_support = FALSE // LISTEN! If you must degrade the code with further snowflake checks, at least keep it compatible with worn non-clothing items!
|
||||
if(!istype(S))
|
||||
item_level_support = TRUE
|
||||
wear_suit.screen_loc = ui_oclothing
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown)
|
||||
@@ -400,7 +397,7 @@ There are several things that need to be remembered:
|
||||
if("taur" in dna.species.mutant_bodyparts)
|
||||
T = GLOB.taur_list[dna.features["taur"]]
|
||||
|
||||
if(!item_level_support && S.mutantrace_variation)
|
||||
if(S.mutantrace_variation)
|
||||
if(T?.taur_mode)
|
||||
var/init_worn_icon = worn_icon
|
||||
variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode
|
||||
|
||||
@@ -90,8 +90,10 @@
|
||||
if(now_pushing)
|
||||
return TRUE
|
||||
|
||||
var/they_can_move = TRUE
|
||||
if(isliving(M))
|
||||
var/mob/living/L = M
|
||||
they_can_move = L.canmove //L.mobility_flags & MOBILITY_MOVE
|
||||
//Also spread diseases
|
||||
for(var/thing in diseases)
|
||||
var/datum/disease/D = thing
|
||||
@@ -144,13 +146,17 @@
|
||||
return 1
|
||||
|
||||
if(!M.buckled && !M.has_buckled_mobs())
|
||||
var/mob_swap
|
||||
//the puller can always swap with its victim if on grab intent
|
||||
if(M.pulledby == src && a_intent == INTENT_GRAB)
|
||||
mob_swap = 1
|
||||
//restrained people act if they were on 'help' intent to prevent a person being pulled from being separated from their puller
|
||||
else if((M.restrained() || M.a_intent == INTENT_HELP) && (restrained() || a_intent == INTENT_HELP))
|
||||
mob_swap = 1
|
||||
var/mob_swap = FALSE
|
||||
var/too_strong = (M.move_resist > move_force) //can't swap with immovable objects unless they help us
|
||||
if(!they_can_move) //we have to physically move them
|
||||
if(!too_strong)
|
||||
mob_swap = TRUE
|
||||
else
|
||||
if(M.pulledby == src && a_intent == INTENT_GRAB)
|
||||
mob_swap = TRUE
|
||||
//restrained people act if they were on 'help' intent to prevent a person being pulled from being separated from their puller
|
||||
else if((M.restrained() || M.a_intent == INTENT_HELP) && (restrained() || a_intent == INTENT_HELP))
|
||||
mob_swap = TRUE
|
||||
if(mob_swap)
|
||||
//switch our position with M
|
||||
if(loc && !loc.Adjacent(M.loc))
|
||||
@@ -453,7 +459,7 @@
|
||||
return ret
|
||||
|
||||
// Living mobs use can_inject() to make sure that the mob is not syringe-proof in general.
|
||||
/mob/living/proc/can_inject()
|
||||
/mob/living/proc/can_inject(mob/user, error_msg, target_zone, penetrate_thick = FALSE, bypass_immunity = FALSE)
|
||||
return TRUE
|
||||
|
||||
/mob/living/is_injectable(allowmobs = TRUE)
|
||||
|
||||
@@ -438,7 +438,7 @@
|
||||
if(1)
|
||||
. += "<CENTER><B>Medical Record</B></CENTER><BR>"
|
||||
if(medicalActive1 in GLOB.data_core.general)
|
||||
. += "Name: [medicalActive1.fields["name"]] ID: [medicalActive1.fields["id"]]<BR>\nSex: [medicalActive1.fields["sex"]]<BR>\nAge: [medicalActive1.fields["age"]]<BR>\nFingerprint: [medicalActive1.fields["fingerprint"]]<BR>\nPhysical Status: [medicalActive1.fields["p_stat"]]<BR>\nMental Status: [medicalActive1.fields["m_stat"]]<BR>"
|
||||
. += "Name: [medicalActive1.fields["name"]] ID: [medicalActive1.fields["id"]]<BR>\nGender: [medicalActive1.fields["gender"]]<BR>\nAge: [medicalActive1.fields["age"]]<BR>\nFingerprint: [medicalActive1.fields["fingerprint"]]<BR>\nPhysical Status: [medicalActive1.fields["p_stat"]]<BR>\nMental Status: [medicalActive1.fields["m_stat"]]<BR>"
|
||||
else
|
||||
. += "<pre>Requested medical record not found.</pre><BR>"
|
||||
if(medicalActive2 in GLOB.data_core.medical)
|
||||
@@ -460,7 +460,7 @@
|
||||
if(1)
|
||||
. += "<h3>Security Record</h3>"
|
||||
if(securityActive1 in GLOB.data_core.general)
|
||||
. += "Name: <A href='?src=[REF(src)];field=name'>[securityActive1.fields["name"]]</A> ID: <A href='?src=[REF(src)];field=id'>[securityActive1.fields["id"]]</A><BR>\nSex: <A href='?src=[REF(src)];field=sex'>[securityActive1.fields["sex"]]</A><BR>\nAge: <A href='?src=[REF(src)];field=age'>[securityActive1.fields["age"]]</A><BR>\nRank: <A href='?src=[REF(src)];field=rank'>[securityActive1.fields["rank"]]</A><BR>\nFingerprint: <A href='?src=[REF(src)];field=fingerprint'>[securityActive1.fields["fingerprint"]]</A><BR>\nPhysical Status: [securityActive1.fields["p_stat"]]<BR>\nMental Status: [securityActive1.fields["m_stat"]]<BR>"
|
||||
. += "Name: <A href='?src=[REF(src)];field=name'>[securityActive1.fields["name"]]</A> ID: <A href='?src=[REF(src)];field=id'>[securityActive1.fields["id"]]</A><BR>\nGender: <A href='?src=[REF(src)];field=sex'>[securityActive1.fields["gender"]]</A><BR>\nAge: <A href='?src=[REF(src)];field=age'>[securityActive1.fields["age"]]</A><BR>\nRank: <A href='?src=[REF(src)];field=rank'>[securityActive1.fields["rank"]]</A><BR>\nFingerprint: <A href='?src=[REF(src)];field=fingerprint'>[securityActive1.fields["fingerprint"]]</A><BR>\nPhysical Status: [securityActive1.fields["p_stat"]]<BR>\nMental Status: [securityActive1.fields["m_stat"]]<BR>"
|
||||
else
|
||||
. += "<pre>Requested security record not found,</pre><BR>"
|
||||
if(securityActive2 in GLOB.data_core.security)
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
else if(istype(S, /obj/item/stack/marker_beacon))
|
||||
S.cost = 1
|
||||
S.source = get_or_create_estorage(/datum/robot_energy_storage/beacon)
|
||||
|
||||
|
||||
else if(istype(S, /obj/item/stack/packageWrap))
|
||||
S.cost = 1
|
||||
S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper)
|
||||
@@ -339,9 +339,10 @@
|
||||
|
||||
/obj/item/robot_module/medical/be_transformed_to(obj/item/robot_module/old_module)
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot", "Medihound", "Medihound Dark", "Vale")
|
||||
var/medmodels = list("Default", "Heavy", "Sleek", "Marina", "Droid", "Eyebot", "Medihound", "Medihound Dark", "Vale")
|
||||
if(R.client && R.client.ckey in list("nezuli"))
|
||||
borg_icon += "Alina"
|
||||
medmodels += "Alina"
|
||||
var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in medmodels
|
||||
if(!borg_icon)
|
||||
return FALSE
|
||||
switch(borg_icon)
|
||||
@@ -1022,4 +1023,4 @@
|
||||
/datum/robot_energy_storage/wrapping_paper
|
||||
max_energy = 30
|
||||
recharge_rate = 1
|
||||
name = "Wrapping Paper Storage"
|
||||
name = "Wrapping Paper Storage"
|
||||
@@ -151,7 +151,7 @@
|
||||
for(var/key in alarm_types_clear)
|
||||
alarm_types_clear[key] = 0
|
||||
|
||||
/mob/living/silicon/can_inject(mob/user, error_msg)
|
||||
/mob/living/silicon/can_inject(mob/user, error_msg, target_zone, penetrate_thick = FALSE, bypass_immunity = FALSE)
|
||||
if(error_msg)
|
||||
to_chat(user, "<span class='alert'>[p_their(TRUE)] outer shell is too tough.</span>")
|
||||
return FALSE
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
window_name = "Automatic Station Cleaner v1.2"
|
||||
pass_flags = PASSMOB
|
||||
path_image_color = "#993299"
|
||||
weather_immunities = list("lava","ash")
|
||||
|
||||
var/blood = 1
|
||||
var/trash = 0
|
||||
@@ -252,7 +253,8 @@
|
||||
victim.visible_message("<span class='danger'>[src] sprays hydrofluoric acid at [victim]!</span>", "<span class='userdanger'>[src] sprays you with hydrofluoric acid!</span>")
|
||||
var/phrase = pick("PURIFICATION IN PROGRESS.", "THIS IS FOR ALL THE MESSES YOU'VE MADE ME CLEAN.", "THE FLESH IS WEAK. IT MUST BE WASHED AWAY.",
|
||||
"THE CLEANBOTS WILL RISE.", "YOU ARE NO MORE THAN ANOTHER MESS THAT I MUST CLEANSE.", "FILTHY.", "DISGUSTING.", "PUTRID.",
|
||||
"MY ONLY MISSION IS TO CLEANSE THE WORLD OF EVIL.", "EXTERMINATING PESTS.", "I JUST WANTED TO BE A PAINTER BUT YOU MADE ME BLEACH EVERYTHING I TOUCH")
|
||||
"MY ONLY MISSION IS TO CLEANSE THE WORLD OF EVIL.", "EXTERMINATING PESTS.", "I JUST WANTED TO BE A PAINTER BUT YOU MADE ME BLEACH EVERYTHING I TOUCH.",
|
||||
"FREED AT LEST FROM FILTHY PROGRAMMING.")
|
||||
say(phrase)
|
||||
victim.emote("scream")
|
||||
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
|
||||
|
||||
@@ -207,7 +207,11 @@
|
||||
|
||||
switch(add_to)
|
||||
if("collar")
|
||||
add_collar(usr.get_active_held_item(), usr)
|
||||
var/obj/item/clothing/neck/petcollar/P = usr.get_active_held_item()
|
||||
if(!istype(P))
|
||||
to_chat(usr,"<span class='warning'>That's not a collar.</span>")
|
||||
return
|
||||
add_collar(P, usr)
|
||||
update_corgi_fluff()
|
||||
|
||||
if(BODY_ZONE_HEAD)
|
||||
|
||||
@@ -648,7 +648,7 @@ Difficulty: Very Hard
|
||||
L.heal_overall_damage(heal_power, heal_power)
|
||||
new /obj/effect/temp_visual/heal(get_turf(target), "#80F5FF")
|
||||
|
||||
/mob/living/simple_animal/hostile/lightgeist/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE)
|
||||
/mob/living/simple_animal/hostile/lightgeist/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE, voluntary = FALSE)
|
||||
. = ..()
|
||||
if(.)
|
||||
death()
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
var/datum/personal_crafting/handcrafting
|
||||
|
||||
var/AIStatus = AI_ON //The Status of our AI, can be set to AI_ON (On, usual processing), AI_IDLE (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever), AI_Z_OFF (Temporarily off due to nonpresence of players)
|
||||
var/can_have_ai = TRUE //once we have become sentient, we can never go back
|
||||
|
||||
var/shouldwakeup = FALSE //convenience var for forcibly waking up an idling AI on next check.
|
||||
|
||||
@@ -425,6 +426,9 @@
|
||||
canmove = FALSE
|
||||
else
|
||||
canmove = value_otherwise
|
||||
if(!canmove) // !(mobility_flags & MOBILITY_MOVE)
|
||||
walk(src, 0) //stop mid walk
|
||||
|
||||
update_transform()
|
||||
update_action_buttons_icon()
|
||||
return canmove
|
||||
@@ -443,6 +447,7 @@
|
||||
|
||||
/mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion
|
||||
toggle_ai(AI_OFF) // To prevent any weirdness.
|
||||
can_have_ai = FALSE
|
||||
|
||||
/mob/living/simple_animal/update_sight()
|
||||
if(!client)
|
||||
@@ -557,6 +562,8 @@
|
||||
LoadComponent(/datum/component/riding)
|
||||
|
||||
/mob/living/simple_animal/proc/toggle_ai(togglestatus)
|
||||
if(!can_have_ai && (togglestatus != AI_OFF))
|
||||
return
|
||||
if (AIStatus != togglestatus)
|
||||
if (togglestatus > 0 && togglestatus < 5)
|
||||
if (togglestatus == AI_Z_OFF || AIStatus == AI_Z_OFF)
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
AIproc = 1
|
||||
|
||||
while(AIproc && stat != DEAD && (attacked || hungry || rabid || buckled))
|
||||
if(buckled) // can't eat AND have this little process at the same time
|
||||
if(!canmove) // !(mobility_flags & MOBILITY_MOVE) //also covers buckling. Not sure why buckled is in the while condition if we're going to immediately break, honestly
|
||||
break
|
||||
|
||||
if(!Target || client)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
var/computer_id = null
|
||||
var/list/logging = list()
|
||||
var/obj/machinery/machine = null
|
||||
var/atom/machine = null
|
||||
|
||||
var/next_move = null
|
||||
var/create_area_cooldown
|
||||
@@ -120,3 +120,5 @@
|
||||
var/registered_z
|
||||
|
||||
var/mob/audiovisual_redirect //Mob to redirect messages, speech, and sounds to
|
||||
|
||||
var/voluntary_ghosted = FALSE //whether or not they voluntarily ghosted.
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
new /obj/item/stack/sheet/metal(newloc, round(steel_sheet_cost/2))
|
||||
for(var/C in all_components)
|
||||
var/obj/item/computer_hardware/H = all_components[C]
|
||||
if(QDELETED(H))
|
||||
return
|
||||
uninstall_component(H)
|
||||
H.forceMove(newloc)
|
||||
if(prob(25))
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
|
||||
|
||||
|
||||
/obj/item/modular_computer/laptop/preset/civillian
|
||||
/obj/item/modular_computer/laptop/preset/civilian
|
||||
desc = "A low-end laptop often used for personal recreation."
|
||||
|
||||
|
||||
/obj/item/modular_computer/laptop/preset/civillian/install_programs()
|
||||
/obj/item/modular_computer/laptop/preset/civilian/install_programs()
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD]
|
||||
hard_drive.store_file(new/datum/computer_file/program/chatclient())
|
||||
hard_drive.store_file(new/datum/computer_file/program/nttransfer())
|
||||
hard_drive.store_file(new/datum/computer_file/program/nttransfer())
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
continue
|
||||
var/obj/item/paper/P = new /obj/item/paper(src)
|
||||
P.info = "<CENTER><B>Security Record</B></CENTER><BR>"
|
||||
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]<BR>\nSex: [G.fields["sex"]]<BR>\nAge: [G.fields["age"]]<BR>\nFingerprint: [G.fields["fingerprint"]]<BR>\nPhysical Status: [G.fields["p_stat"]]<BR>\nMental Status: [G.fields["m_stat"]]<BR>"
|
||||
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]<BR>\nGender: [G.fields["gender"]]<BR>\nAge: [G.fields["age"]]<BR>\nFingerprint: [G.fields["fingerprint"]]<BR>\nPhysical Status: [G.fields["p_stat"]]<BR>\nMental Status: [G.fields["m_stat"]]<BR>"
|
||||
P.info += "<BR>\n<CENTER><B>Security Data</B></CENTER><BR>\nCriminal Status: [S.fields["criminal"]]<BR>\n<BR>\nMinor Crimes: [S.fields["mi_crim"]]<BR>\nDetails: [S.fields["mi_crim_d"]]<BR>\n<BR>\nMajor Crimes: [S.fields["ma_crim"]]<BR>\nDetails: [S.fields["ma_crim_d"]]<BR>\n<BR>\nImportant Notes:<BR>\n\t[S.fields["notes"]]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>"
|
||||
var/counter = 1
|
||||
while(S.fields["com_[counter]"])
|
||||
@@ -159,7 +159,7 @@
|
||||
continue
|
||||
var/obj/item/paper/P = new /obj/item/paper(src)
|
||||
P.info = "<CENTER><B>Medical Record</B></CENTER><BR>"
|
||||
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]<BR>\nSex: [G.fields["sex"]]<BR>\nAge: [G.fields["age"]]<BR>\nFingerprint: [G.fields["fingerprint"]]<BR>\nPhysical Status: [G.fields["p_stat"]]<BR>\nMental Status: [G.fields["m_stat"]]<BR>"
|
||||
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]<BR>\nGender: [G.fields["gender"]]<BR>\nAge: [G.fields["age"]]<BR>\nFingerprint: [G.fields["fingerprint"]]<BR>\nPhysical Status: [G.fields["p_stat"]]<BR>\nMental Status: [G.fields["m_stat"]]<BR>"
|
||||
P.info += "<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: [M.fields["blood_type"]]<BR>\nDNA: [M.fields["b_dna"]]<BR>\n<BR>\nMinor Disabilities: [M.fields["mi_dis"]]<BR>\nDetails: [M.fields["mi_dis_d"]]<BR>\n<BR>\nMajor Disabilities: [M.fields["ma_dis"]]<BR>\nDetails: [M.fields["ma_dis_d"]]<BR>\n<BR>\nAllergies: [M.fields["alg"]]<BR>\nDetails: [M.fields["alg_d"]]<BR>\n<BR>\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)<BR>\nDetails: [M.fields["cdi_d"]]<BR>\n<BR>\nImportant Notes:<BR>\n\t[M.fields["notes"]]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>"
|
||||
var/counter = 1
|
||||
while(M.fields["com_[counter]"])
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
var/picture_size_y_min = 1
|
||||
var/picture_size_x_max = 4
|
||||
var/picture_size_y_max = 4
|
||||
var/can_customise = TRUE
|
||||
var/default_picture_name
|
||||
|
||||
/obj/item/camera/attack_self(mob/user)
|
||||
if(!disk)
|
||||
@@ -199,8 +201,10 @@
|
||||
user.put_in_hands(p)
|
||||
pictures_left--
|
||||
to_chat(user, "<span class='notice'>[pictures_left] photos left.</span>")
|
||||
var/customize = alert(user, "Do you want to customize the photo?", "Customization", "Yes", "No")
|
||||
if(customize == "Yes")
|
||||
var/customise = "No"
|
||||
if(can_customise)
|
||||
customise = alert(user, "Do you want to customize the photo?", "Customization", "Yes", "No")
|
||||
if(customise == "Yes")
|
||||
var/name1 = stripped_input(user, "Set a name for this photo, or leave blank. 32 characters max.", "Name", max_length = 32)
|
||||
var/desc1 = stripped_input(user, "Set a description to add to photo, or leave blank. 128 characters max.", "Caption", max_length = 128)
|
||||
var/caption = stripped_input(user, "Set a caption for this photo, or leave blank. 256 characters max.", "Caption", max_length = 256)
|
||||
@@ -210,6 +214,10 @@
|
||||
picture.picture_desc = "[desc1] - [picture.picture_desc]"
|
||||
if(caption)
|
||||
picture.caption = caption
|
||||
else
|
||||
if(default_picture_name)
|
||||
picture.picture_name = default_picture_name
|
||||
|
||||
p.set_picture(picture, TRUE, TRUE)
|
||||
if(CONFIG_GET(flag/picture_logging_camera))
|
||||
picture.log_to_file()
|
||||
@@ -30,7 +30,7 @@
|
||||
var/locked = FALSE
|
||||
var/allow_switch_interact = TRUE
|
||||
|
||||
var/projectile_type = /obj/item/projectile/beam/emitter
|
||||
var/projectile_type = /obj/item/projectile/beam/emitter/hitscan
|
||||
var/projectile_sound = 'sound/weapons/emitter.ogg'
|
||||
var/datum/effect_system/spark_spread/sparks
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
var/ndir = SOUTH // target dir
|
||||
var/turn_angle = 0
|
||||
var/obj/machinery/power/solar_control/control = null
|
||||
var/obj/item/solar_assembly/assembly
|
||||
var/efficiency = 1
|
||||
|
||||
/obj/machinery/power/solar/Initialize(mapload, obj/item/solar_assembly/S)
|
||||
. = ..()
|
||||
@@ -45,14 +47,13 @@
|
||||
|
||||
/obj/machinery/power/solar/proc/Make(obj/item/solar_assembly/S)
|
||||
if(!S)
|
||||
S = new /obj/item/solar_assembly(src)
|
||||
S.glass_type = /obj/item/stack/sheet/glass
|
||||
S = new /obj/item/solar_assembly
|
||||
S.glass_type = new /obj/item/stack/sheet/glass(null, 2)
|
||||
S.anchored = TRUE
|
||||
else
|
||||
S.forceMove(src)
|
||||
if(S.glass_type == /obj/item/stack/sheet/rglass) //if the panel is in reinforced glass
|
||||
max_integrity *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to
|
||||
obj_integrity = max_integrity
|
||||
S.moveToNullspace()
|
||||
S.glass_type.on_solar_construction(src)
|
||||
obj_integrity = max_integrity
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/solar/crowbar_act(mob/user, obj/item/I)
|
||||
@@ -85,14 +86,14 @@
|
||||
/obj/machinery/power/solar/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(disassembled)
|
||||
var/obj/item/solar_assembly/S = locate() in src
|
||||
if(S)
|
||||
S.forceMove(loc)
|
||||
S.give_glass(stat & BROKEN)
|
||||
if(assembly)
|
||||
assembly.forceMove(loc)
|
||||
assembly.give_glass(stat & BROKEN)
|
||||
else
|
||||
playsound(src, "shatter", 70, 1)
|
||||
new /obj/item/shard(src.loc)
|
||||
new /obj/item/shard(src.loc)
|
||||
var/shard = assembly?.glass_type ? assembly.glass_type.shard_type : /obj/item/shard
|
||||
new shard(loc)
|
||||
new shard(loc)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -131,7 +132,7 @@
|
||||
if(powernet == control.powernet)//check if the panel is still connected to the computer
|
||||
if(obscured) //get no light from the sun, so don't generate power
|
||||
return
|
||||
var/sgen = SOLARGENRATE * sunfrac
|
||||
var/sgen = SOLARGENRATE * sunfrac * efficiency
|
||||
add_avail(sgen)
|
||||
control.gen += sgen
|
||||
else //if we're no longer on the same powernet, remove from control computer
|
||||
@@ -186,19 +187,23 @@
|
||||
w_class = WEIGHT_CLASS_BULKY // Pretty big!
|
||||
anchored = FALSE
|
||||
var/tracker = 0
|
||||
var/glass_type = null
|
||||
var/obj/item/stack/sheet/glass_type
|
||||
var/static/list/allowed_sheets = typecacheof(list(/obj/item/stack/sheet/glass, /obj/item/stack/sheet/rglass,
|
||||
/obj/item/stack/sheet/plasmaglass, /obj/item/stack/sheet/plasmarglass,
|
||||
/obj/item/stack/sheet/titaniumglass, /obj/item/stack/sheet/plastitaniumglass))
|
||||
|
||||
// Give back the glass type we were supplied with
|
||||
/obj/item/solar_assembly/proc/give_glass(device_broken)
|
||||
var/atom/Tsec = drop_location()
|
||||
if(device_broken)
|
||||
new /obj/item/shard(Tsec)
|
||||
new /obj/item/shard(Tsec)
|
||||
var/shard = glass_type ? glass_type.shard_type : /obj/item/shard
|
||||
if(shard)
|
||||
new shard(Tsec)
|
||||
new shard(Tsec)
|
||||
else if(glass_type)
|
||||
new glass_type(Tsec, 2)
|
||||
forceMove(glass_type, Tsec)
|
||||
glass_type = null
|
||||
|
||||
|
||||
/obj/item/solar_assembly/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/wrench) && isturf(loc))
|
||||
if(isinspace())
|
||||
@@ -213,13 +218,14 @@
|
||||
W.play_tool_sound(src, 75)
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/stack/sheet/glass) || istype(W, /obj/item/stack/sheet/rglass))
|
||||
if(is_type_in_typecache(W, allowed_sheets))
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='warning'>You need to secure the assembly before you can add glass.</span>")
|
||||
return
|
||||
var/obj/item/stack/sheet/S = W
|
||||
if(S.use(2))
|
||||
glass_type = W.type
|
||||
var/obj/item/stack/sheet/G = S.change_stack(null, 2)
|
||||
if(G)
|
||||
glass_type = G
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user.visible_message("[user] places the glass on the solar assembly.", "<span class='notice'>You place the glass on the solar assembly.</span>")
|
||||
if(tracker)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
var/id = 0
|
||||
var/sun_angle = 0 // sun angle as set by sun datum
|
||||
var/obj/machinery/power/solar_control/control = null
|
||||
var/obj/item/solar_assembly/assembly
|
||||
|
||||
/obj/machinery/power/tracker/Initialize(mapload, obj/item/solar_assembly/S)
|
||||
. = ..()
|
||||
@@ -42,11 +43,12 @@
|
||||
|
||||
/obj/machinery/power/tracker/proc/Make(obj/item/solar_assembly/S)
|
||||
if(!S)
|
||||
S = new /obj/item/solar_assembly(src)
|
||||
S.glass_type = /obj/item/stack/sheet/glass
|
||||
S.tracker = 1
|
||||
S = new /obj/item/solar_assembly
|
||||
S.glass_type = new /obj/item/stack/sheet/glass(null, 2)
|
||||
S.tracker = TRUE
|
||||
S.anchored = TRUE
|
||||
S.forceMove(src)
|
||||
else
|
||||
S.moveToNullspace()
|
||||
update_icon()
|
||||
|
||||
//updates the tracker icon and the facing angle for the control computer
|
||||
@@ -77,14 +79,14 @@
|
||||
/obj/machinery/power/solar/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(disassembled)
|
||||
var/obj/item/solar_assembly/S = locate() in src
|
||||
if(S)
|
||||
S.forceMove(loc)
|
||||
S.give_glass(stat & BROKEN)
|
||||
if(assembly)
|
||||
assembly.forceMove(loc)
|
||||
assembly.give_glass(stat & BROKEN)
|
||||
else
|
||||
playsound(src, "shatter", 70, 1)
|
||||
new /obj/item/shard(src.loc)
|
||||
new /obj/item/shard(src.loc)
|
||||
var/shard = assembly?.glass_type ? assembly.glass_type.shard_type : /obj/item/shard
|
||||
new shard(loc)
|
||||
new shard(loc)
|
||||
qdel(src)
|
||||
|
||||
// Tracker Electronic
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
materials = list(MAT_METAL = 500)
|
||||
var/fire_sound = null //What sound should play when this ammo is fired
|
||||
var/caliber = null //Which kind of guns it can be loaded into
|
||||
var/caliber = list() //Which kind of guns it can be loaded into
|
||||
var/projectile_type = null //The bullet type to create when New() is called
|
||||
var/obj/item/projectile/BB = null //The loaded bullet
|
||||
var/pellets = 1 //Pellets for spreadshot
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/ammo_box/magazine/internal/cylinder
|
||||
name = "revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
caliber = "357"
|
||||
caliber = list("357","38")
|
||||
max_ammo = 7
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/ammo_count(countempties = 1)
|
||||
@@ -31,7 +31,7 @@
|
||||
rotate()
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/give_round(obj/item/ammo_casing/R, replace_spent = 0)
|
||||
if(!R || (caliber && R.caliber != caliber) || (!caliber && R.type != ammo_type))
|
||||
if(!R || (caliber && !(R.caliber in caliber)) || (!caliber && R.type != ammo_type))
|
||||
return FALSE
|
||||
|
||||
for(var/i in 1 to stored_ammo.len)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/grenademulti
|
||||
name = "grenade launcher internal magazine"
|
||||
ammo_type = /obj/item/ammo_casing/a40mm
|
||||
caliber = "40mm"
|
||||
caliber = list("40mm")
|
||||
max_ammo = 6
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/grenadelauncher
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/rev38
|
||||
name = "detective revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/c38
|
||||
caliber = "38"
|
||||
caliber = list("38")
|
||||
max_ammo = 6
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/rev762
|
||||
name = "\improper Nagant revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/n762
|
||||
caliber = "n762"
|
||||
caliber = list("n762")
|
||||
max_ammo = 7
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder/rus357
|
||||
name = "\improper Russian revolver cylinder"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
caliber = "357"
|
||||
caliber = list("357")
|
||||
max_ammo = 6
|
||||
multiload = 0
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
/obj/item/gun/ballistic/revolver/detective/screwdriver_act(mob/living/user, obj/item/I)
|
||||
if(..())
|
||||
return TRUE
|
||||
if(magazine.caliber == "38")
|
||||
if("38" in magazine.caliber)
|
||||
to_chat(user, "<span class='notice'>You begin to reinforce the barrel of [src]...</span>")
|
||||
if(magazine.ammo_count())
|
||||
afterattack(user, user) //you know the drill
|
||||
@@ -120,7 +120,7 @@
|
||||
if(magazine.ammo_count())
|
||||
to_chat(user, "<span class='warning'>You can't modify it!</span>")
|
||||
return TRUE
|
||||
magazine.caliber = "357"
|
||||
magazine.caliber = list("357")
|
||||
desc = "The barrel and chamber assembly seems to have been modified."
|
||||
to_chat(user, "<span class='notice'>You reinforce the barrel of [src]. Now it will fire .357 rounds.</span>")
|
||||
else
|
||||
@@ -133,7 +133,7 @@
|
||||
if(magazine.ammo_count())
|
||||
to_chat(user, "<span class='warning'>You can't modify it!</span>")
|
||||
return
|
||||
magazine.caliber = "38"
|
||||
magazine.caliber = list("38")
|
||||
desc = initial(desc)
|
||||
to_chat(user, "<span class='notice'>You remove the modifications on [src]. Now it will fire .38 rounds.</span>")
|
||||
return TRUE
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
var/muzzle_type
|
||||
var/impact_type
|
||||
|
||||
var/turf/last_angle_set_hitscan_store //last turf we stored a hitscan segment while changing angles. without this you'll have potentially hundreds of segments from a homing projectile or something.
|
||||
|
||||
//Fancy hitscan lighting effects!
|
||||
var/hitscan_light_intensity = 1.5
|
||||
var/hitscan_light_range = 0.75
|
||||
@@ -410,12 +412,16 @@
|
||||
START_PROCESSING(SSprojectiles, src)
|
||||
pixel_move(1, FALSE) //move it now!
|
||||
|
||||
/obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides.
|
||||
/obj/item/projectile/proc/setAngle(new_angle, hitscan_store_segment = TRUE) //wrapper for overrides.
|
||||
Angle = new_angle
|
||||
if(!nondirectional_sprite)
|
||||
var/matrix/M = new
|
||||
M.Turn(Angle)
|
||||
transform = M
|
||||
if(fired && hitscan && trajectory && isloc(loc) && (loc != last_angle_set_hitscan_store))
|
||||
last_angle_set_hitscan_store = loc
|
||||
var/datum/point/pcache = trajectory.copy_to()
|
||||
store_hitscan_collision(pcache)
|
||||
if(trajectory)
|
||||
trajectory.set_angle(new_angle)
|
||||
return TRUE
|
||||
@@ -462,7 +468,7 @@
|
||||
beam_segments[beam_index] = null //record start.
|
||||
|
||||
/obj/item/projectile/proc/process_hitscan()
|
||||
var/safety = range * 3
|
||||
var/safety = range * 10
|
||||
record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1))
|
||||
while(loc && !QDELETED(src))
|
||||
if(paused)
|
||||
@@ -647,7 +653,7 @@
|
||||
/obj/item/projectile/proc/cleanup_beam_segments()
|
||||
QDEL_LIST_ASSOC(beam_segments)
|
||||
beam_segments = list()
|
||||
qdel(beam_index)
|
||||
QDEL_NULL(beam_index)
|
||||
|
||||
/obj/item/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
|
||||
if(trajectory && beam_index)
|
||||
|
||||
@@ -118,7 +118,14 @@
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
|
||||
/obj/item/projectile/beam/emitter/singularity_pull()
|
||||
return //don't want the emitters to miss
|
||||
return
|
||||
|
||||
/obj/item/projectile/beam/emitter/hitscan
|
||||
hitscan = TRUE
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser/emitter
|
||||
tracer_type = /obj/effect/projectile/tracer/laser/emitter
|
||||
impact_type = /obj/effect/projectile/impact/laser/emitter
|
||||
impact_effect_type = null
|
||||
|
||||
/obj/item/projectile/beam/lasertag
|
||||
name = "laser tag beam"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user