Conflict fix
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -53620,10 +53620,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/gravity_generator)
|
||||
"eZP" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/turf/open/space/basic,
|
||||
/area/hallway/secondary/entry)
|
||||
"fbm" = (
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 4
|
||||
@@ -67472,9 +67468,9 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaf
|
||||
eZP
|
||||
awW
|
||||
auP
|
||||
eZP
|
||||
awW
|
||||
aaf
|
||||
vZs
|
||||
aaa
|
||||
|
||||
@@ -47211,6 +47211,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/storage/box/lights/mixed,
|
||||
/obj/structure/closet/firecloset,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
@@ -96215,7 +96216,7 @@ bMA
|
||||
alK
|
||||
bPD
|
||||
asa
|
||||
pHS
|
||||
alK
|
||||
aaa
|
||||
aaa
|
||||
aaf
|
||||
|
||||
+4075
-7380
File diff suppressed because it is too large
Load Diff
+713
-482
File diff suppressed because it is too large
Load Diff
@@ -254,6 +254,18 @@
|
||||
#define PIPING_CARDINAL_AUTONORMALIZE (1<<3) //north/south east/west doesn't matter, auto normalize on build.
|
||||
|
||||
//HELPERS
|
||||
#define PIPING_LAYER_SHIFT(T, PipingLayer) \
|
||||
if(T.dir & NORTH || T.dir & SOUTH) { \
|
||||
T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\
|
||||
} \
|
||||
if(T.dir & WEST || T.dir & EAST) { \
|
||||
T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y;\
|
||||
}
|
||||
|
||||
#define PIPING_LAYER_DOUBLE_SHIFT(T, PipingLayer) \
|
||||
T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X;\
|
||||
T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y;
|
||||
|
||||
#define THERMAL_ENERGY(gas) (gas.temperature * gas.heat_capacity())
|
||||
#define QUANTIZE(variable) (round(variable,0.0000001))/*I feel the need to document what happens here. Basically this is used to catch most rounding errors, however it's previous value made it so that
|
||||
once gases got hot enough, most procedures wouldnt occur due to the fact that the mole counts would get rounded away. Thus, we lowered it a few orders of magnititude */
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" //from base of turf/New(): (turf/source, direction)
|
||||
|
||||
// /atom/movable signals
|
||||
#define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" //from base of atom/movable/Moved(): (/atom)
|
||||
#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir)
|
||||
#define COMSIG_MOVABLE_CROSS "movable_cross" //from base of atom/movable/Cross(): (/atom/movable)
|
||||
#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable)
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
#define TOOL_DRILL "drill"
|
||||
#define TOOL_SCALPEL "scalpel"
|
||||
#define TOOL_SAW "saw"
|
||||
|
||||
//Glasswork Tools
|
||||
#define TOOL_BLOW "blowing_rod"
|
||||
#define TOOL_GLASS_CUT "glasskit"
|
||||
|
||||
// If delay between the start and the end of tool operation is less than MIN_TOOL_SOUND_DELAY,
|
||||
// tool sound is only played when op is started. If not, it's played twice.
|
||||
|
||||
@@ -234,6 +234,7 @@
|
||||
#define ABDUCTOR_ANTAGONIST "abductor-antagonist"
|
||||
#define NUKEOP_ANTAGONIST "nukeop-antagonist"
|
||||
#define MADE_UNCLONEABLE "made-uncloneable"
|
||||
#define TIMESTOP_TRAIT "timestop"
|
||||
#define NUKEOP_TRAIT "nuke-op"
|
||||
#define MEGAFAUNA_TRAIT "megafauna"
|
||||
#define DEATHSQUAD_TRAIT "deathsquad"
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
/**
|
||||
* A component to reset the parent to its previous state after some time passes
|
||||
*/
|
||||
/datum/component/dejavu
|
||||
/// The turf the parent was on when this components was applied, they get moved back here after the duration
|
||||
var/turf/starting_turf
|
||||
/// Determined by the type of the parent so different behaviours can happen per type
|
||||
var/rewind_type
|
||||
/// How many rewinds will happen before the effect ends
|
||||
var/rewinds_remaining
|
||||
/// How long to wait between each rewind
|
||||
var/rewind_interval
|
||||
|
||||
/// The starting value of clone loss at the beginning of the effect
|
||||
var/clone_loss = 0
|
||||
/// The starting value of toxin loss at the beginning of the effect
|
||||
var/tox_loss = 0
|
||||
/// The starting value of oxygen loss at the beginning of the effect
|
||||
var/oxy_loss = 0
|
||||
/// The starting value of brain loss at the beginning of the effect
|
||||
var/brain_loss = 0
|
||||
/// The starting value of brute loss at the beginning of the effect
|
||||
/// This only applies to simple animals
|
||||
var/brute_loss
|
||||
/// The starting value of integrity at the beginning of the effect
|
||||
/// This only applies to objects
|
||||
var/integrity
|
||||
/// A list of body parts saved at the beginning of the effect
|
||||
var/list/datum/saved_bodypart/saved_bodyparts
|
||||
|
||||
/datum/component/dejavu/Initialize(rewinds = 1, interval = 10 SECONDS)
|
||||
if(!isatom(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
starting_turf = get_turf(parent)
|
||||
rewinds_remaining = rewinds
|
||||
rewind_interval = interval
|
||||
|
||||
if(isliving(parent))
|
||||
var/mob/living/L = parent
|
||||
clone_loss = L.getCloneLoss()
|
||||
tox_loss = L.getToxLoss()
|
||||
oxy_loss = L.getOxyLoss()
|
||||
brain_loss = L.getOrganLoss(ORGAN_SLOT_BRAIN)
|
||||
rewind_type = .proc/rewind_living
|
||||
|
||||
if(iscarbon(parent))
|
||||
var/mob/living/carbon/C = parent
|
||||
saved_bodyparts = C.save_bodyparts()
|
||||
rewind_type = .proc/rewind_carbon
|
||||
|
||||
else if(isanimal(parent))
|
||||
var/mob/living/simple_animal/M = parent
|
||||
brute_loss = M.bruteloss
|
||||
rewind_type = .proc/rewind_animal
|
||||
|
||||
else if(isobj(parent))
|
||||
var/obj/O = parent
|
||||
integrity = O.obj_integrity
|
||||
rewind_type = .proc/rewind_obj
|
||||
|
||||
addtimer(CALLBACK(src, rewind_type), rewind_interval)
|
||||
|
||||
/datum/component/dejavu/Destroy()
|
||||
starting_turf = null
|
||||
saved_bodyparts = null
|
||||
return ..()
|
||||
|
||||
/datum/component/dejavu/proc/rewind()
|
||||
to_chat(parent, "<span class=notice>You remember a time not so long ago...</span>")
|
||||
|
||||
//comes after healing so new limbs comically drop to the floor
|
||||
if(starting_turf)
|
||||
var/atom/movable/master = parent
|
||||
master.forceMove(starting_turf)
|
||||
|
||||
rewinds_remaining --
|
||||
if(rewinds_remaining)
|
||||
addtimer(CALLBACK(src, rewind_type), rewind_interval)
|
||||
else
|
||||
to_chat(parent, "<span class=notice>But the memory falls out of your reach.</span>")
|
||||
qdel(src)
|
||||
|
||||
/datum/component/dejavu/proc/rewind_living()
|
||||
var/mob/living/master = parent
|
||||
master.setCloneLoss(clone_loss)
|
||||
master.setToxLoss(tox_loss)
|
||||
master.setOxyLoss(oxy_loss)
|
||||
master.setOrganLoss(ORGAN_SLOT_BRAIN, brain_loss)
|
||||
rewind()
|
||||
|
||||
/datum/component/dejavu/proc/rewind_carbon()
|
||||
if(saved_bodyparts)
|
||||
var/mob/living/carbon/master = parent
|
||||
master.apply_saved_bodyparts(saved_bodyparts)
|
||||
rewind_living()
|
||||
|
||||
/datum/component/dejavu/proc/rewind_animal()
|
||||
var/mob/living/simple_animal/master = parent
|
||||
master.bruteloss = brute_loss
|
||||
master.updatehealth()
|
||||
rewind_living()
|
||||
|
||||
/datum/component/dejavu/proc/rewind_obj()
|
||||
var/obj/master = parent
|
||||
master.obj_integrity = integrity
|
||||
rewind()
|
||||
+1
-1
@@ -132,7 +132,7 @@
|
||||
//CIT CHANGE - makes arousal update when transfering bodies
|
||||
if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs.
|
||||
var/mob/living/L = new_character
|
||||
if(L.client && L.client.prefs & L.client.prefs.auto_ooc & L.client.prefs.chat_toggles & CHAT_OOC)
|
||||
if(L.client?.prefs && L.client.prefs.auto_ooc && L.client.prefs.chat_toggles & CHAT_OOC)
|
||||
DISABLE_BITFIELD(L.client.prefs.chat_toggles,CHAT_OOC)
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character)
|
||||
|
||||
@@ -34,3 +34,10 @@
|
||||
id = "engine_tesla"
|
||||
suffix = "Box/Engine/engine_tesla.dmm"
|
||||
name = "Box Tesla"
|
||||
|
||||
// Lavaland
|
||||
// Mining Base
|
||||
/datum/map_template/ruin/station/lavaland/mining_base
|
||||
id = "mining_public_01"
|
||||
suffix = "Lavaland/Mining_Station/Mining_Station_Public_01.dmm"
|
||||
name = "Public Mining Base"
|
||||
@@ -400,3 +400,12 @@
|
||||
|
||||
/datum/quirk/blindness/remove()
|
||||
quirk_holder?.cure_blind(ROUNDSTART_TRAIT)
|
||||
|
||||
/datum/quirk/coldblooded
|
||||
name = "Cold-blooded"
|
||||
desc = "Your body doesn't create its own internal heat, requiring external heat regulation."
|
||||
value = -2
|
||||
medical_record_text = "Patient is ectothermic."
|
||||
mob_trait = TRAIT_COLDBLOODED
|
||||
gain_text = "<span class='notice'>You feel cold-blooded.</span>"
|
||||
lose_text = "<span class='notice'>You feel more warm-blooded.</span>"
|
||||
|
||||
@@ -104,15 +104,6 @@
|
||||
gain_text = "<span class='notice'>You desire to be hurt.</span>"
|
||||
lose_text = "<span class='notice'>Pain has become less exciting for you.</span>"
|
||||
|
||||
/datum/quirk/coldblooded
|
||||
name = "Cold-blooded"
|
||||
desc = "Your body doesn't create its own internal heat, requiring external heat regulation."
|
||||
value = 0
|
||||
medical_record_text = "Patient is ectothermic."
|
||||
mob_trait = TRAIT_COLDBLOODED
|
||||
gain_text = "<span class='notice'>You feel cold-blooded.</span>"
|
||||
lose_text = "<span class='notice'>You feel more warm-blooded.</span>"
|
||||
|
||||
/datum/quirk/alcohol_intolerance
|
||||
name = "Alcohol Intolerance"
|
||||
desc = "You take toxin damage from alcohol rather than getting drunk."
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
/atom/movable/proc/Move_Pulled(atom/A)
|
||||
if(!pulling)
|
||||
return
|
||||
if(pulling.anchored || !pulling.Adjacent(src))
|
||||
if(pulling.anchored || pulling.move_resist > move_force || !pulling.Adjacent(src))
|
||||
stop_pulling()
|
||||
return
|
||||
if(isliving(pulling))
|
||||
@@ -190,7 +190,7 @@
|
||||
log_game("DEBUG:[src]'s pull on [pullee] wasn't broken despite [pullee] being in [pullee.loc]. Pull stopped manually.")
|
||||
stop_pulling()
|
||||
return
|
||||
if(pulling.anchored)
|
||||
if(pulling.anchored || pulling.move_resist > move_force)
|
||||
stop_pulling()
|
||||
return
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//Potential replacement for genetics revives or something I dunno (?)
|
||||
|
||||
#define CLONE_INITIAL_DAMAGE 150 //Clones in clonepods start with 150 cloneloss damage and 150 brainloss damage, thats just logical
|
||||
#define MINIMUM_HEAL_LEVEL 40
|
||||
#define MINIMUM_HEAL_LEVEL 20
|
||||
|
||||
#define SPEAK(message) radio.talk_into(src, message, radio_channel)
|
||||
|
||||
@@ -61,18 +61,15 @@
|
||||
QDEL_LIST(unattached_flesh)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/clonepod/RefreshParts()
|
||||
/obj/machinery/clonepod/RefreshParts()
|
||||
speed_coeff = 0
|
||||
efficiency = 0
|
||||
for(var/obj/item/stock_parts/scanning_module/S in component_parts)
|
||||
efficiency += S.rating
|
||||
for(var/obj/item/stock_parts/manipulator/P in component_parts)
|
||||
speed_coeff += P.rating
|
||||
heal_level = (efficiency * 15) + 10
|
||||
if(heal_level < MINIMUM_HEAL_LEVEL)
|
||||
heal_level = MINIMUM_HEAL_LEVEL
|
||||
if(heal_level > 100)
|
||||
heal_level = 100
|
||||
speed_coeff += (P.rating / 2)
|
||||
speed_coeff = max(1, speed_coeff)
|
||||
heal_level = CLAMP((efficiency * 10) + 10, MINIMUM_HEAL_LEVEL, 100)
|
||||
|
||||
//The return of data disks?? Just for transferring between genetics machine/cloning machine.
|
||||
//TO-DO: Make the genetics machine accept them.
|
||||
@@ -169,9 +166,7 @@
|
||||
var/mob/living/carbon/human/H = new /mob/living/carbon/human(src)
|
||||
|
||||
H.hardset_dna(ui, se, H.real_name, null, mrace, features)
|
||||
|
||||
if(prob(50 - efficiency*10)) //Chance to give a bad mutation.
|
||||
H.randmutb() //100% bad mutation. Can be cured with mutadone.
|
||||
H.randmutb() //100% bad mutation. Can be cured with mutadone.
|
||||
|
||||
H.silent = 20 //Prevents an extreme edge case where clones could speak if they said something at exactly the right moment.
|
||||
occupant = H
|
||||
|
||||
@@ -181,6 +181,9 @@
|
||||
if(component_check)
|
||||
P.play_tool_sound(src)
|
||||
var/obj/machinery/new_machine = new circuit.build_path(loc)
|
||||
if(new_machine.circuit)
|
||||
QDEL_NULL(new_machine.circuit)
|
||||
new_machine.circuit = circuit
|
||||
new_machine.setAnchored(anchored)
|
||||
new_machine.on_construction()
|
||||
for(var/obj/O in new_machine.component_parts)
|
||||
@@ -189,9 +192,6 @@
|
||||
for(var/obj/O in src)
|
||||
O.moveToNullspace()
|
||||
new_machine.component_parts += O
|
||||
if(new_machine.circuit)
|
||||
QDEL_NULL(new_machine.circuit)
|
||||
new_machine.circuit = circuit
|
||||
circuit.moveToNullspace()
|
||||
new_machine.RefreshParts()
|
||||
qdel(src)
|
||||
|
||||
@@ -75,8 +75,7 @@ Buildable meters
|
||||
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
|
||||
PIPING_LAYER_SHIFT(src, piping_layer)
|
||||
layer = initial(layer) + ((piping_layer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_LCHANGE)
|
||||
|
||||
/obj/item/pipe/proc/update()
|
||||
@@ -232,5 +231,4 @@ Buildable meters
|
||||
|
||||
/obj/item/pipe_meter/proc/setAttachLayer(new_layer = PIPING_LAYER_DEFAULT)
|
||||
piping_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, piping_layer)
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
var/lights = FALSE
|
||||
var/lights_power = 6
|
||||
var/last_user_hud = 1 // used to show/hide the mecha hud while preserving previous preference
|
||||
var/completely_disabled = FALSE //stops the mech from doing anything
|
||||
var/breach_time = 0
|
||||
var/recharge_rate = 0
|
||||
|
||||
@@ -431,6 +432,8 @@
|
||||
return
|
||||
if(!locate(/turf) in list(target,target.loc)) // Prevents inventory from being drilled
|
||||
return
|
||||
if(completely_disabled)
|
||||
return
|
||||
if(phasing)
|
||||
occupant_message("Unable to interact with objects while phasing")
|
||||
return
|
||||
@@ -508,6 +511,8 @@
|
||||
return 1
|
||||
|
||||
/obj/mecha/relaymove(mob/user,direction)
|
||||
if(completely_disabled)
|
||||
return
|
||||
if(!direction)
|
||||
return
|
||||
if(user != occupant) //While not "realistic", this piece is player friendly.
|
||||
|
||||
@@ -481,3 +481,8 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
|
||||
/obj/effect/landmark/stationroom/box/engine/New()
|
||||
. = ..()
|
||||
templates = CONFIG_GET(keyed_list/box_random_engine)
|
||||
|
||||
// Landmark for the mining station
|
||||
/obj/effect/landmark/stationroom/lavaland/station
|
||||
templates = list("Public Mining Base" = 3)
|
||||
icon = 'icons/rooms/Lavaland/Mining.dmi'
|
||||
@@ -39,4 +39,8 @@
|
||||
|
||||
/obj/effect/projectile/impact/laser/wavemotion
|
||||
name = "particle impact"
|
||||
icon_state = "impact_wavemotion"
|
||||
icon_state = "impact_wavemotion"
|
||||
|
||||
/obj/effect/projectile/impact/laser/emitter
|
||||
name = "emitter impact"
|
||||
icon_state = "impact_emitter"
|
||||
|
||||
@@ -31,4 +31,8 @@
|
||||
|
||||
/obj/effect/projectile/muzzle/laser/wavemotion
|
||||
name = "particle backblast"
|
||||
icon_state = "muzzle_wavemotion"
|
||||
icon_state = "muzzle_wavemotion"
|
||||
|
||||
/obj/effect/projectile/muzzle/laser/emitter
|
||||
name = "emitter flash"
|
||||
icon_state = "muzzle_emitter"
|
||||
|
||||
@@ -70,3 +70,7 @@
|
||||
/obj/effect/projectile/tracer/laser/wavemotion
|
||||
name = "particle trail"
|
||||
icon_state = "tracer_wavemotion"
|
||||
|
||||
/obj/effect/projectile/tracer/laser/emitter
|
||||
name = "emitter beam"
|
||||
icon_state = "emitter"
|
||||
|
||||
@@ -328,7 +328,8 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
|
||||
return TRUE
|
||||
|
||||
/obj/item/pipe_dispenser/pre_attack(atom/A, mob/user)
|
||||
if(!user.IsAdvancedToolUser() || istype(A, /turf/open/space/transit))
|
||||
var/turf/T = get_turf(A)
|
||||
if(!user.IsAdvancedToolUser() || !T || istype(T, /turf/open/space/transit) || isindestructiblewall(T))
|
||||
return ..()
|
||||
|
||||
//So that changing the menu settings doesn't affect the pipes already being built.
|
||||
@@ -375,12 +376,16 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
|
||||
if(ATMOS_CATEGORY) //Making pipes
|
||||
if(!can_make_pipe)
|
||||
return ..()
|
||||
A = T
|
||||
if(is_type_in_typecache(recipe, GLOB.ventcrawl_machinery) && isclosedturf(A)) //wall escapism sanity check.
|
||||
to_chat(user, "<span class='warning'>[src]'s error light flickers; there's something in the way!</span>")
|
||||
return
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if (recipe.type == /datum/pipe_info/meter)
|
||||
to_chat(user, "<span class='notice'>You start building a meter...</span>")
|
||||
if(do_after(user, atmos_build_speed, target = A))
|
||||
activate()
|
||||
var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(get_turf(A))
|
||||
var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(A)
|
||||
PM.setAttachLayer(piping_layer)
|
||||
if(mode&WRENCH_MODE)
|
||||
PM.wrench_act(user, src)
|
||||
@@ -390,7 +395,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
|
||||
activate()
|
||||
var/obj/machinery/atmospherics/path = queued_p_type
|
||||
var/pipe_item_type = initial(path.construction_type) || /obj/item/pipe
|
||||
var/obj/item/pipe/P = new pipe_item_type(get_turf(A), queued_p_type, queued_p_dir)
|
||||
var/obj/item/pipe/P = new pipe_item_type(A, queued_p_type, queued_p_dir)
|
||||
|
||||
if(queued_p_flipped && istype(P, /obj/item/pipe/trinary/flippable))
|
||||
var/obj/item/pipe/trinary/flippable/F = P
|
||||
@@ -407,7 +412,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
|
||||
if(DISPOSALS_CATEGORY) //Making disposals pipes
|
||||
if(!can_make_pipe)
|
||||
return ..()
|
||||
A = get_turf(A)
|
||||
A = T
|
||||
if(isclosedturf(A))
|
||||
to_chat(user, "<span class='warning'>[src]'s error light flickers; there's something in the way!</span>")
|
||||
return
|
||||
@@ -432,7 +437,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
|
||||
if(TRANSIT_CATEGORY) //Making transit tubes
|
||||
if(!can_make_pipe)
|
||||
return ..()
|
||||
A = get_turf(A)
|
||||
A = T
|
||||
if(isclosedturf(A))
|
||||
to_chat(user, "<span class='warning'>[src]'s error light flickers; there's something in the way!</span>")
|
||||
return
|
||||
|
||||
@@ -308,6 +308,7 @@
|
||||
/obj/item/circuitboard/machine/thermomachine
|
||||
name = "Thermomachine (Machine Board)"
|
||||
desc = "You can use a screwdriver to switch between heater and freezer."
|
||||
var/pipe_layer = PIPING_LAYER_DEFAULT
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/matter_bin = 2,
|
||||
/obj/item/stock_parts/micro_laser = 2,
|
||||
@@ -342,8 +343,18 @@
|
||||
build_path = initial(new_type.build_path)
|
||||
I.play_tool_sound(src)
|
||||
to_chat(user, "<span class='notice'>You change the circuitboard setting to \"[new_setting]\".</span>")
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
|
||||
if(I.tool_behaviour == TOOL_MULTITOOL)
|
||||
pipe_layer = (pipe_layer >= PIPING_LAYER_MAX) ? PIPING_LAYER_MIN : (pipe_layer + 1)
|
||||
to_chat(user, "<span class='notice'>You change the circuitboard to layer [pipe_layer].</span>")
|
||||
return
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/item/circuitboard/machine/thermomachine/examine()
|
||||
. = ..()
|
||||
. += "<span class='notice'>It is set to layer [pipe_layer].</span>"
|
||||
|
||||
/obj/item/circuitboard/machine/thermomachine/heater
|
||||
name = "Heater (Machine Board)"
|
||||
|
||||
@@ -93,6 +93,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
|
||||
var/underline_flag = TRUE //flag for underline
|
||||
|
||||
var/list/blocked_pdas
|
||||
|
||||
/obj/item/pda/suicide_act(mob/living/carbon/user)
|
||||
var/deathMessage = msg_input(user)
|
||||
if (!deathMessage)
|
||||
@@ -387,7 +389,10 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
for (var/obj/item/pda/P in sortNames(get_viewable_pdas()))
|
||||
if (P == src)
|
||||
continue
|
||||
dat += "<li><a href='byond://?src=[REF(src)];choice=Message;target=[REF(P)]'>[P]</a>"
|
||||
if(P.owner in blocked_pdas)
|
||||
dat += "<li><a href='byond://?src=[REF(src)];choice=unblock_pda;target=[P.owner]'>(BLOCKED - CLICK TO UNBLOCK) [P]</a>"
|
||||
else
|
||||
dat += "<li><a href='byond://?src=[REF(src)];choice=Message;target=[REF(P)]'>[P]</a>"
|
||||
if(cartridge)
|
||||
dat += cartridge.message_special(P)
|
||||
dat += "</li>"
|
||||
@@ -646,6 +651,15 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
if("MessageAll")
|
||||
send_to_all(U)
|
||||
|
||||
if("toggle_block")
|
||||
toggle_blocking(usr, href_list["target"])
|
||||
|
||||
if("block_pda")
|
||||
block_pda(usr, href_list["target"])
|
||||
|
||||
if("unblock_pda")
|
||||
unblock_pda(usr, href_list["target"])
|
||||
|
||||
if("cart")
|
||||
if(cartridge)
|
||||
cartridge.special(U, href_list)
|
||||
@@ -744,9 +758,16 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
message += "\nSent from my PDA"
|
||||
// Send the signal
|
||||
var/list/string_targets = list()
|
||||
for (var/obj/item/pda/P in targets)
|
||||
if (P.owner && P.ownjob) // != src is checked by the UI
|
||||
var/list/string_blocked
|
||||
for(var/obj/item/pda/P in targets)
|
||||
if(owner in P.blocked_pdas)
|
||||
LAZYADD(string_blocked, P.owner)
|
||||
continue
|
||||
if(P.owner && P.ownjob) // != src is checked by the UI
|
||||
string_targets += "[P.owner] ([P.ownjob])"
|
||||
if(string_blocked)
|
||||
string_blocked = english_list(string_blocked)
|
||||
to_chat(user, "<span class='warning'>[icon2html(src, user)] The following recipients have blocked your message: [string_blocked].</span>")
|
||||
for (var/obj/machinery/computer/message_monitor/M in targets)
|
||||
// In case of "Reply" to a message from a console, this will make the
|
||||
// message be logged successfully. If the console is impersonating
|
||||
@@ -779,12 +800,13 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
tnote += "<i><b>→ To [target_text]:</b></i><br>[signal.format_message()]<br>"
|
||||
// Show it to ghosts
|
||||
var/ghost_message = "<span class='name'>[owner] </span><span class='game say'>PDA Message</span> --> <span class='name'>[target_text]</span>: <span class='message'>[signal.format_message(TRUE)]</span>"
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA))
|
||||
for(var/i in GLOB.dead_mob_list)
|
||||
var/mob/M = i
|
||||
if(M?.client && M.client.prefs.chat_toggles & CHAT_GHOSTPDA)
|
||||
to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]")
|
||||
// Log in the talk log
|
||||
user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text]")
|
||||
to_chat(user, "<span class='info'>Message sent to [target_text]: \"[emoji_message]\"</span>")
|
||||
// Log in the talk log
|
||||
user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text] (BLOCKED:[string_blocked])")
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/terminal_success.ogg', 15, 1)
|
||||
// Reset the photo
|
||||
@@ -794,8 +816,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
last_everyone = world.time
|
||||
|
||||
/obj/item/pda/proc/receive_message(datum/signal/subspace/pda/signal)
|
||||
tnote += "<i><b>← From <a href='byond://?src=[REF(src)];choice=Message;target=[REF(signal.source)]'>[signal.data["name"]]</a> ([signal.data["job"]]):</b></i><br>[signal.format_message()]<br>"
|
||||
|
||||
tnote += "<i><b>← From <a href='byond://?src=[REF(src)];choice=Message;target=[REF(signal.source)]'>[signal.data["name"]]</a> ([signal.data["job"]]):</b></i> <a href='byond://?src=[REF(src)];choice=toggle_block;target=[signal.data["name"]]'>(BLOCK/UNBLOCK)</a><br>[signal.format_message()]<br>"
|
||||
if (!silent)
|
||||
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
|
||||
audible_message("[icon2html(src, hearers(src))] *[ttone]*", null, 3)
|
||||
@@ -814,7 +835,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
hrefstart = "<a href='?src=[REF(L)];track=[html_encode(signal.data["name"])]'>"
|
||||
hrefend = "</a>"
|
||||
|
||||
to_chat(L, "[icon2html(src)] <b>Message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], </b>[signal.format_message(TRUE)] (<a href='byond://?src=[REF(src)];choice=Message;skiprefresh=1;target=[REF(signal.source)]'>Reply</a>)")
|
||||
to_chat(L, "[icon2html(src)] <b>Message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], </b>[signal.format_message(TRUE)] (<a href='byond://?src=[REF(src)];choice=Message;skiprefresh=1;target=[REF(signal.source)]'>Reply</a>) <a href='byond://?src=[REF(src)];choice=toggle_block;target=[signal.data["name"]]'>(BLOCK/UNBLOCK)</a>")
|
||||
|
||||
update_icon(TRUE)
|
||||
|
||||
@@ -827,6 +848,20 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
/obj/item/pda/proc/create_message(mob/living/U, obj/item/pda/P)
|
||||
send_message(U,list(P))
|
||||
|
||||
/obj/item/pda/proc/toggle_blocking(mob/user, target)
|
||||
if(target in blocked_pdas)
|
||||
unblock_pda(user, target)
|
||||
else
|
||||
block_pda(user, target)
|
||||
|
||||
/obj/item/pda/proc/block_pda(mob/user, target)
|
||||
to_chat(user, "<span class='notice'>[icon2html(src, user)] [target] blocked from messages. Use the messenger PDA list to unblock.</span>")
|
||||
LAZYOR(blocked_pdas, target)
|
||||
|
||||
/obj/item/pda/proc/unblock_pda(mob/user, target)
|
||||
to_chat(user, "<span class='notice'>[icon2html(src, user)] [target] unblocked from messages.</span>")
|
||||
LAZYREMOVE(blocked_pdas, target)
|
||||
|
||||
/obj/item/pda/AltClick(mob/user)
|
||||
. = ..()
|
||||
if(id)
|
||||
@@ -1172,4 +1207,4 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
#undef PDA_OVERLAY_ID
|
||||
#undef PDA_OVERLAY_ITEM
|
||||
#undef PDA_OVERLAY_LIGHT
|
||||
#undef PDA_OVERLAY_PAI
|
||||
#undef PDA_OVERLAY_PAI
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/forcefield_projector
|
||||
name = "forcefield projector"
|
||||
desc = "An experimental device that can create several forcefields at a distance."
|
||||
desc = "An experimental device that can create several forcefields at a short distance."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "signmaker_forcefield"
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
@@ -14,7 +14,7 @@
|
||||
var/shield_integrity = 250
|
||||
var/max_fields = 3
|
||||
var/list/current_fields
|
||||
var/field_distance_limit = 7
|
||||
var/field_distance_limit = 2
|
||||
|
||||
/obj/item/forcefield_projector/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
|
||||
@@ -26,6 +26,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
slot_flags = ITEM_SLOT_EARS
|
||||
var/obj/item/encryptionkey/keyslot2 = null
|
||||
dog_fashion = null
|
||||
var/bowman = FALSE
|
||||
|
||||
/obj/item/radio/headset/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins putting \the [src]'s antenna up [user.p_their()] nose! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer!</span>")
|
||||
@@ -52,6 +53,11 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
else
|
||||
. += "<span class='notice'>A small screen on the headset flashes, it's too small to read without holding or wearing the headset.</span>"
|
||||
|
||||
/obj/item/radio/headset/ComponentInitialize()
|
||||
. = ..()
|
||||
if (bowman)
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
|
||||
/obj/item/radio/headset/Initialize()
|
||||
. = ..()
|
||||
recalculateChannels()
|
||||
@@ -81,10 +87,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs."
|
||||
icon_state = "syndie_headset"
|
||||
item_state = "syndie_headset"
|
||||
|
||||
/obj/item/radio/headset/syndicate/alt/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
bowman = TRUE
|
||||
|
||||
/obj/item/radio/headset/syndicate/alt/leader
|
||||
name = "team leader headset"
|
||||
@@ -112,10 +115,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
desc = "This is used by your elite security force. Protects ears from flashbangs."
|
||||
icon_state = "sec_headset_alt"
|
||||
item_state = "sec_headset_alt"
|
||||
|
||||
/obj/item/radio/headset/headset_sec/alt/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
bowman = TRUE
|
||||
|
||||
/obj/item/radio/headset/headset_eng
|
||||
name = "engineering radio headset"
|
||||
@@ -161,10 +161,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
desc = "The headset of the boss. Protects ears from flashbangs."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
|
||||
/obj/item/radio/headset/heads/captain/alt/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
bowman = TRUE
|
||||
|
||||
/obj/item/radio/headset/heads/rd
|
||||
name = "\proper the research director's headset"
|
||||
@@ -183,10 +180,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
|
||||
/obj/item/radio/headset/heads/hos/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
bowman = TRUE
|
||||
|
||||
/obj/item/radio/headset/heads/ce
|
||||
name = "\proper the chief engineer's headset"
|
||||
@@ -258,10 +252,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
icon_state = "cent_headset_alt"
|
||||
item_state = "cent_headset_alt"
|
||||
keyslot = null
|
||||
|
||||
/obj/item/radio/headset/headset_cent/alt/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
bowman = TRUE
|
||||
|
||||
/obj/item/radio/headset/ai
|
||||
name = "\proper Integrated Subspace Transceiver "
|
||||
@@ -273,7 +264,11 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
|
||||
/obj/item/radio/headset/attackby(obj/item/W, mob/user, params)
|
||||
user.set_machine(src)
|
||||
|
||||
if (istype(W,/obj/item/headsetupgrader))
|
||||
if (!bowman)
|
||||
to_chat(user,"<span class='notice'>You upgrade [src].</span>")
|
||||
bowmanize()
|
||||
qdel(W)
|
||||
if(istype(W, /obj/item/screwdriver))
|
||||
if(keyslot || keyslot2)
|
||||
for(var/ch_name in channels)
|
||||
@@ -341,3 +336,24 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
use_command = !use_command
|
||||
to_chat(user, "<span class='notice'>You toggle high-volume mode [use_command ? "on" : "off"].</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/item/radio/headset/proc/bowmanize()
|
||||
cut_overlays()
|
||||
var/icon/yeas = icon(icon,icon_state)
|
||||
icon_state = "antenna_alt"
|
||||
var/mutable_appearance/center = mutable_appearance(icon,"center_alt")
|
||||
center.color = yeas.GetPixel(15,18)
|
||||
var/mutable_appearance/centeralt = mutable_appearance(icon,"centeralt_alt")
|
||||
centeralt.color = yeas.GetPixel(14,22)
|
||||
var/mutable_appearance/centercenter = mutable_appearance(icon,"centercenter_alt")
|
||||
centercenter.color = yeas.GetPixel(13,19)
|
||||
var/mutable_appearance/centerpixel = mutable_appearance(icon,"centerpixel_alt")
|
||||
centerpixel.color = yeas.GetPixel(13,21)
|
||||
add_overlay(center)
|
||||
add_overlay(centeralt)
|
||||
add_overlay(centercenter)
|
||||
add_overlay(centerpixel)
|
||||
name = replacetext(name,"headset", "bowman headset")
|
||||
desc = "[desc] Protects ears from flashbangs."
|
||||
bowman = TRUE
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
|
||||
@@ -251,3 +251,9 @@ effective or pretty fucking useless.
|
||||
else
|
||||
GLOB.active_jammers -= src
|
||||
update_icon()
|
||||
|
||||
/obj/item/headsetupgrader
|
||||
name = "headset upgrader"
|
||||
desc = "A tool that can be used to upgrade a normal headset to be able to protect from flashbangs."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "headset_upgrade"
|
||||
|
||||
@@ -93,9 +93,8 @@
|
||||
var/obj/item/I = loc
|
||||
I.grenade_prime_react(src)
|
||||
|
||||
|
||||
/obj/item/grenade/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/screwdriver))
|
||||
/obj/item/grenade/tool_act(mob/living/user, obj/item/I, tool_behaviour)
|
||||
if(tool_behaviour == TOOL_SCREWDRIVER)
|
||||
switch(det_time)
|
||||
if ("1")
|
||||
det_time = 10
|
||||
|
||||
@@ -310,6 +310,7 @@
|
||||
trap_damage = 0
|
||||
item_flags = DROPDEL
|
||||
flags_1 = NONE
|
||||
breakouttime = 50
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/energy/New()
|
||||
..()
|
||||
|
||||
@@ -10,7 +10,15 @@
|
||||
*/
|
||||
GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
new/datum/stack_recipe("directional window", /obj/structure/window/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
||||
new/datum/stack_recipe("fulltile window", /obj/structure/window/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
|
||||
new/datum/stack_recipe("fulltile window", /obj/structure/window/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe_list("glass working bases", list( \
|
||||
new/datum/stack_recipe("chem dish", /obj/item/glasswork/glass_base/dish, 10), \
|
||||
new/datum/stack_recipe("lens", /obj/item/glasswork/glass_base/glass_lens, 15), \
|
||||
new/datum/stack_recipe("spout flask", /obj/item/glasswork/glass_base/spouty, 20), \
|
||||
new/datum/stack_recipe("small bulb flask", /obj/item/glasswork/glass_base/flask_small, 5), \
|
||||
new/datum/stack_recipe("large bottle flask", /obj/item/glasswork/glass_base/flask_large, 15), \
|
||||
)), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/glass
|
||||
@@ -26,6 +34,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
grind_results = list(/datum/reagent/silicon = 20)
|
||||
point_value = 1
|
||||
tableVariant = /obj/structure/table/glass
|
||||
shard_type = /obj/item/shard
|
||||
|
||||
/obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to slice [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
@@ -93,6 +102,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/plasmaglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10)
|
||||
tableVariant = /obj/structure/table/plasmaglass
|
||||
shard_type = /obj/item/shard/plasma
|
||||
|
||||
/obj/item/stack/sheet/plasmaglass/fifty
|
||||
amount = 50
|
||||
@@ -120,7 +130,9 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/stack/sheet/plasmaglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 1.2
|
||||
S.efficiency *= 1.2
|
||||
|
||||
/*
|
||||
* Reinforced glass sheets
|
||||
@@ -145,11 +157,15 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/rglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10)
|
||||
point_value = 4
|
||||
shard_type = /obj/item/shard
|
||||
|
||||
/obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params)
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
|
||||
/obj/item/stack/sheet/rglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 2
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg
|
||||
materials = list()
|
||||
var/datum/robot_energy_storage/glasource
|
||||
@@ -188,6 +204,11 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/plasmarglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10)
|
||||
point_value = 23
|
||||
shard_type = /obj/item/shard/plasma
|
||||
|
||||
/obj/item/stack/sheet/plasmarglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 2.2
|
||||
S.efficiency *= 1.2
|
||||
|
||||
/obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.prglass_recipes
|
||||
@@ -207,6 +228,11 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list(
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/titaniumglass
|
||||
shard_type = /obj/item/shard
|
||||
|
||||
/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 2.5
|
||||
S.efficiency *= 1.5
|
||||
|
||||
/obj/item/stack/sheet/titaniumglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.titaniumglass_recipes
|
||||
@@ -226,11 +252,16 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plastitaniumglass
|
||||
shard_type = /obj/item/shard
|
||||
|
||||
/obj/item/stack/sheet/plastitaniumglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.plastitaniumglass_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 2
|
||||
S.efficiency *= 2
|
||||
|
||||
/obj/item/shard
|
||||
name = "shard"
|
||||
desc = "A nasty looking shard of glass."
|
||||
|
||||
@@ -277,6 +277,9 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
recipes = GLOB.wood_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/mineral/wood/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/sheet/mineral/wood/fifty
|
||||
amount = 50
|
||||
|
||||
@@ -782,3 +785,4 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra
|
||||
merge_type = /obj/item/stack/sheet/cotton/durathread
|
||||
pull_effort = 70
|
||||
loom_result = /obj/item/stack/sheet/durathread
|
||||
|
||||
|
||||
@@ -15,4 +15,15 @@
|
||||
var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity
|
||||
var/is_fabric = FALSE //is this a valid material for the loom?
|
||||
var/loom_result //result from pulling on the loom
|
||||
var/pull_effort = 0 //amount of delay when pulling on the loom
|
||||
var/pull_effort = 0 //amount of delay when pulling on the loom
|
||||
var/shard_type // the shard debris typepath left over by solar panels and windows etc.
|
||||
|
||||
/**
|
||||
* Called on the glass sheet upon solar construction (duh):
|
||||
* Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency
|
||||
* and possibly extra effects if you wish to code them.
|
||||
* Keep in mind the solars' max_integrity is set equal to the obj_integrity later,
|
||||
* so you won't have to do so here.
|
||||
*/
|
||||
/obj/item/stack/sheet/proc/on_solar_construction(/obj/machinery/power/solar/S)
|
||||
return
|
||||
|
||||
@@ -233,39 +233,111 @@
|
||||
turf_type = /turf/open/floor/carpet/royalblue
|
||||
tableVariant = /obj/structure/table/wood/fancy/royalblue
|
||||
|
||||
/obj/item/stack/tile/carpet/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/black/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/black/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/black/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/blackred/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/blackred/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/blackred/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/monochrome/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/monochrome/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/blue/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/blue/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/blue/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/cyan/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/cyan/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/cyan/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/green/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/green/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/green/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/orange/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/orange/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/orange/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/purple/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/purple/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/purple/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/red/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/red/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/red/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblack/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblack/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblue/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblue/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty
|
||||
amount = 50
|
||||
|
||||
|
||||
@@ -293,7 +293,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
|
||||
desc = replacetext(desc, "robust", "safe")
|
||||
desc = replacetext(desc, "heavier", "bouncier")
|
||||
DISABLE_BITFIELD(flags_1, CONDUCT_1)
|
||||
materials = null
|
||||
materials = typelist("materials", null)
|
||||
damtype = STAMINA
|
||||
force += 3 //to compensate the higher stamina K.O. threshold compared to actual health.
|
||||
throwforce += 3
|
||||
@@ -317,8 +317,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
|
||||
flags_1 = null
|
||||
materials = null
|
||||
damtype = STAMINA
|
||||
force = 17
|
||||
throwforce = 17
|
||||
force = 15
|
||||
throwforce = 15
|
||||
attack_verb = list("robusted", "bounced")
|
||||
can_rubberify = FALSE //we are already the future.
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
*/
|
||||
/obj/item/twohanded
|
||||
var/wielded = 0
|
||||
var/force_unwielded = 0
|
||||
var/force_wielded = 0
|
||||
var/force_unwielded // default to null, the number force will be set to on unwield()
|
||||
var/force_wielded // same as above but for wield()
|
||||
var/wieldsound = null
|
||||
var/unwieldsound = null
|
||||
var/slowdown_wielded = 0
|
||||
@@ -73,7 +73,7 @@
|
||||
to_chat(user, "<span class='warning'>You don't have enough intact hands.</span>")
|
||||
return
|
||||
wielded = 1
|
||||
if(force_wielded)
|
||||
if(!isnull(force_wielded))
|
||||
force = force_wielded
|
||||
name = "[name] (Wielded)"
|
||||
update_icon()
|
||||
@@ -738,7 +738,7 @@
|
||||
on = !on
|
||||
to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]")
|
||||
force = on ? force_on : initial(force)
|
||||
throwforce = on ? force_on : initial(force)
|
||||
throwforce = on ? force_on : force
|
||||
icon_state = "chainsaw_[on ? "on" : "off"]"
|
||||
var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering)
|
||||
butchering.butchering_enabled = on
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
var/decon_speed = 30
|
||||
var/wtype = "glass"
|
||||
var/fulltile = FALSE
|
||||
var/glass_type = /obj/item/stack/sheet/glass
|
||||
var/obj/item/stack/sheet/glass_type = /obj/item/stack/sheet/glass
|
||||
var/cleanable_type = /obj/effect/decal/cleanable/glass
|
||||
var/glass_amount = 1
|
||||
var/mutable_appearance/crack_overlay
|
||||
can_be_unanchored = TRUE
|
||||
@@ -277,12 +278,15 @@
|
||||
|
||||
/obj/structure/window/proc/spawnDebris(location)
|
||||
. = list()
|
||||
. += new /obj/item/shard(location)
|
||||
. += new /obj/effect/decal/cleanable/glass(location)
|
||||
var/shard = initial(glass_type.shard_type)
|
||||
if(shard)
|
||||
. += new shard(location)
|
||||
if (fulltile)
|
||||
. += new shard(location)
|
||||
if(cleanable_type)
|
||||
. += new cleanable_type(location)
|
||||
if (reinf)
|
||||
. += new /obj/item/stack/rods(location, (fulltile ? 2 : 1))
|
||||
if (fulltile)
|
||||
. += new /obj/item/shard(location)
|
||||
|
||||
/obj/structure/window/proc/can_be_rotated(mob/user,rotation_type)
|
||||
if (get_dist(src,user) > 1)
|
||||
@@ -416,17 +420,9 @@
|
||||
max_integrity = 150
|
||||
explosion_block = 1
|
||||
glass_type = /obj/item/stack/sheet/plasmaglass
|
||||
cleanable_type = /obj/effect/decal/cleanable/glass/plasma
|
||||
rad_insulation = RAD_NO_INSULATION
|
||||
|
||||
/obj/structure/window/plasma/spawnDebris(location)
|
||||
. = list()
|
||||
. += new /obj/item/shard/plasma(location)
|
||||
. += new /obj/effect/decal/cleanable/glass/plasma(location)
|
||||
if (reinf)
|
||||
. += new /obj/item/stack/rods(location, (fulltile ? 2 : 1))
|
||||
if (fulltile)
|
||||
. += new /obj/item/shard/plasma(location)
|
||||
|
||||
/obj/structure/window/plasma/spawner/east
|
||||
dir = EAST
|
||||
|
||||
@@ -662,11 +658,6 @@
|
||||
level = 3
|
||||
glass_amount = 2
|
||||
|
||||
/obj/structure/window/reinforced/clockwork/spawnDebris(location)
|
||||
. = list()
|
||||
for(var/i in 1 to 4)
|
||||
. += new /obj/item/clockwork/alloy_shards/medium/gear_bit(location)
|
||||
|
||||
/obj/structure/window/reinforced/clockwork/Initialize(mapload, direct)
|
||||
made_glow = TRUE
|
||||
new /obj/effect/temp_visual/ratvar/window(get_turf(src))
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -31,6 +31,8 @@
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
//node 3 is the outlet, nodes 1 & 2 are intakes
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/update_icon()
|
||||
cut_overlays()
|
||||
for(var/direction in GLOB.cardinals)
|
||||
@@ -246,4 +248,4 @@
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse
|
||||
node1_concentration = O2STANDARD
|
||||
node2_concentration = N2STANDARD
|
||||
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"
|
||||
|
||||
+34
-29
@@ -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,4 +1,4 @@
|
||||
//3-way manifold
|
||||
//3-Way Manifold
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/manifold
|
||||
icon_state = "manifold"
|
||||
|
||||
@@ -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()
|
||||
@@ -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!"
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user