Merge branch 'master' into upstream-merge-29367
This commit is contained in:
@@ -1240,7 +1240,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
valid_territory = FALSE
|
||||
|
||||
/area/storage/tcom
|
||||
name = "Telecoms Storage"
|
||||
name = "Telecomms Storage"
|
||||
icon_state = "green"
|
||||
valid_territory = FALSE
|
||||
|
||||
@@ -1416,7 +1416,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
|
||||
/area/tcommsat/entrance
|
||||
name = "Telecoms Teleporter"
|
||||
name = "Telecomms Teleporter"
|
||||
icon_state = "tcomsatentrance"
|
||||
|
||||
/area/tcommsat/chamber
|
||||
@@ -1424,12 +1424,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
icon_state = "tcomsatcham"
|
||||
|
||||
/area/ai_monitored/turret_protected/tcomsat
|
||||
name = "Telecoms Satellite"
|
||||
name = "Telecomms Satellite"
|
||||
icon_state = "tcomsatlob"
|
||||
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
|
||||
/area/ai_monitored/turret_protected/tcomfoyer
|
||||
name = "Telecoms Foyer"
|
||||
name = "Telecomms Foyer"
|
||||
icon_state = "tcomsatentrance"
|
||||
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
|
||||
@@ -1444,11 +1444,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg')
|
||||
|
||||
/area/tcommsat/computer
|
||||
name = "Telecoms Control Room"
|
||||
name = "Telecomms Control Room"
|
||||
icon_state = "tcomsatcomp"
|
||||
|
||||
/area/tcommsat/server
|
||||
name = "Telecoms Server Room"
|
||||
name = "Telecomms Server Room"
|
||||
icon_state = "tcomsatcham"
|
||||
|
||||
/area/tcommsat/lounge
|
||||
|
||||
@@ -432,7 +432,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
||||
// Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch
|
||||
if(L.client && !L.client.ambience_playing && L.client.prefs.toggles & SOUND_SHIP_AMBIENCE)
|
||||
L.client.ambience_playing = 1
|
||||
L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = 2)
|
||||
L << sound('sound/ambience/shipambience.ogg', repeat = 1, wait = 0, volume = 35, channel = CHANNEL_BUZZ)
|
||||
|
||||
if(!(L.client && (L.client.prefs.toggles & SOUND_AMBIENCE)))
|
||||
return //General ambience check is below the ship ambience so one can play without the other
|
||||
@@ -441,7 +441,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
||||
var/sound = pick(ambientsounds)
|
||||
|
||||
if(!L.client.played)
|
||||
L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = 1)
|
||||
L << sound(sound, repeat = 0, wait = 0, volume = 25, channel = CHANNEL_AMBIENCE)
|
||||
L.client.played = 1
|
||||
sleep(600) //ewww - this is very very bad
|
||||
if(L.&& L.client)
|
||||
|
||||
@@ -21,28 +21,28 @@
|
||||
if(!linked)
|
||||
return 0
|
||||
var/area/A = get_area(linked)
|
||||
ASSERT(!istype(A,/area/holodeck))
|
||||
ASSERT(!istype(A, /area/holodeck))
|
||||
return A.powered(chan)
|
||||
|
||||
/area/holodeck/usage(var/chan)
|
||||
if(!linked)
|
||||
return 0
|
||||
var/area/A = get_area(linked)
|
||||
ASSERT(!istype(A,/area/holodeck))
|
||||
ASSERT(!istype(A, /area/holodeck))
|
||||
return A.usage(chan)
|
||||
|
||||
/area/holodeck/addStaticPower(value, powerchannel)
|
||||
if(!linked)
|
||||
return
|
||||
var/area/A = get_area(linked)
|
||||
ASSERT(!istype(A,/area/holodeck))
|
||||
ASSERT(!istype(A, /area/holodeck))
|
||||
return A.addStaticPower(value,powerchannel)
|
||||
|
||||
/area/holodeck/use_power(var/amount, var/chan)
|
||||
if(!linked)
|
||||
return 0
|
||||
var/area/A = get_area(linked)
|
||||
ASSERT(!istype(A,/area/holodeck))
|
||||
ASSERT(!istype(A, /area/holodeck))
|
||||
return A.use_power(amount,chan)
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -143,7 +143,7 @@
|
||||
if(T.z != ZLEVEL_CENTCOM)//if not, don't bother
|
||||
return 0
|
||||
|
||||
if(istype(T.loc,/area/shuttle/syndicate) || istype(T.loc,/area/syndicate_mothership))
|
||||
if(istype(T.loc, /area/shuttle/syndicate) || istype(T.loc, /area/syndicate_mothership))
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
diff a/code/game/atoms.dm b/code/game/atoms.dm (rejected hunks)
|
||||
@@ -126,7 +126,7 @@
|
||||
return TRUE
|
||||
|
||||
//finally check for centcom itself
|
||||
- return istype(T.loc,/area/centcom)
|
||||
+ return istype(T.loc, /area/centcom)
|
||||
|
||||
/atom/proc/onSyndieBase()
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -202,17 +202,17 @@
|
||||
holder = hud_list[i]
|
||||
holder.icon_state = null
|
||||
for(var/obj/item/weapon/implant/I in implants)
|
||||
if(istype(I,/obj/item/weapon/implant/tracking))
|
||||
if(istype(I, /obj/item/weapon/implant/tracking))
|
||||
holder = hud_list[IMPTRACK_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
holder.icon_state = "hud_imp_tracking"
|
||||
else if(istype(I,/obj/item/weapon/implant/mindshield))
|
||||
else if(istype(I, /obj/item/weapon/implant/mindshield))
|
||||
holder = hud_list[IMPLOYAL_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
holder.icon_state = "hud_imp_loyal"
|
||||
else if(istype(I,/obj/item/weapon/implant/chem))
|
||||
else if(istype(I, /obj/item/weapon/implant/chem))
|
||||
holder = hud_list[IMPCHEM_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
return ..()
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_blob()
|
||||
if(istype(SSticker.mode,/datum/game_mode/blob) )
|
||||
if(istype(SSticker.mode, /datum/game_mode/blob) )
|
||||
var/datum/game_mode/blob/blob_mode = src
|
||||
if(blob_mode.blob_overminds.len)
|
||||
var/text = "<FONT size = 2><B>The blob[(blob_mode.blob_overminds.len > 1 ? "s were" : " was")]:</B></FONT>"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
and tearing!</span>")
|
||||
user.emote("scream")
|
||||
user.regenerate_limbs(0, list("head"))
|
||||
user.regenerate_organs()
|
||||
user.regenerate_organs()
|
||||
to_chat(user, "<span class='notice'>We have revived ourselves.</span>")
|
||||
user.mind.changeling.purchasedpowers -= src
|
||||
return TRUE
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
#define MIN_LATE_TARGET_TIME 600 //lower bound of re-rolled timer, 1 min
|
||||
#define MAX_LATE_TARGET_TIME 6000 //upper bound of re-rolled timer, 10 min
|
||||
#define LATE_TARGET_HIT_CHANCE 70 //How often would the find_target succeed, otherwise it re-rolls later and tries again.
|
||||
//Hit chance is here to avoid people checking github and then hovering around new arrivals within the max minute range every round.
|
||||
|
||||
/datum/objective/assassinate/late
|
||||
martyr_compatible = FALSE
|
||||
|
||||
|
||||
/datum/objective/assassinate/late/find_target()
|
||||
var/list/possible_targets = list()
|
||||
for(var/mob/M in GLOB.latejoiners)
|
||||
var/datum/mind/possible_target = M.mind
|
||||
if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != 2) && is_unique_objective(possible_target))
|
||||
possible_targets += possible_target
|
||||
if(possible_targets.len > 0 && prob(LATE_TARGET_HIT_CHANCE))
|
||||
target = pick(possible_targets)
|
||||
martyr_compatible = TRUE //Might never matter, but I guess if an admin gives another random objective, this should now be compatible
|
||||
update_explanation_text()
|
||||
|
||||
message_admins("[target] has been selected as the assassination target of [owner].")
|
||||
log_game("[target] has been selected as the assassination target of [owner].")
|
||||
|
||||
to_chat(owner, "<span class='italics'>You hear a crackling noise in your ears, as a one-way syndicate message plays:</span>")
|
||||
to_chat(owner, "<span class='userdanger'><font size=5>You target has been located. To succeed, find and eliminate [target], the [!target_role_type ? target.assigned_role : target.special_role].</font></span>")
|
||||
return target
|
||||
else
|
||||
update_explanation_text()
|
||||
addtimer(CALLBACK(src, .proc/find_target),rand(MIN_LATE_TARGET_TIME, MAX_LATE_TARGET_TIME))
|
||||
return null
|
||||
|
||||
/datum/objective/assassinate/late/find_target_by_role(role, role_type=0, invert=0)
|
||||
var/list/possible_targets = list()
|
||||
for(var/mob/M in GLOB.latejoiners)
|
||||
var/datum/mind/possible_target = M.mind
|
||||
if((possible_target != owner) && ishuman(possible_target.current))
|
||||
var/is_role = 0
|
||||
if(role_type)
|
||||
if(possible_target.special_role == role)
|
||||
is_role++
|
||||
else
|
||||
if(possible_target.assigned_role == role)
|
||||
is_role++
|
||||
|
||||
if(invert)
|
||||
if(is_role)
|
||||
continue
|
||||
possible_targets += possible_target
|
||||
//break
|
||||
else if(is_role)
|
||||
possible_targets += possible_target
|
||||
//break
|
||||
if(possible_targets && prob(LATE_TARGET_HIT_CHANCE))
|
||||
target = pick(possible_targets)
|
||||
update_explanation_text()
|
||||
|
||||
message_admins("[target] has been selected as the assassination target of [owner].")
|
||||
log_game("[target] has been selected as the assassination target of [owner].")
|
||||
|
||||
to_chat(owner, "<span class='italics'>You hear a crackling noise in your ears, as a one-way syndicate message plays:</span>")
|
||||
to_chat(owner, "<span class='userdanger'><font size=5>You target has been located. To succeed, find and eliminate [target], the [!target_role_type ? target.assigned_role : target.special_role].</font></span>")
|
||||
else
|
||||
update_explanation_text()
|
||||
addtimer(CALLBACK(src, .proc/find_target_by_role, role, role_type, invert),rand(MIN_LATE_TARGET_TIME, MAX_LATE_TARGET_TIME))
|
||||
|
||||
|
||||
|
||||
/datum/objective/assassinate/late/check_completion()
|
||||
if(target && target.current) //If target WAS assigned
|
||||
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
|
||||
return TRUE
|
||||
return FALSE
|
||||
else //If no target was ever given
|
||||
if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
|
||||
return FALSE
|
||||
if(!is_special_character(owner.current))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/objective/assassinate/late/update_explanation_text()
|
||||
//..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Assassinate [target.name], the [!target_role_type ? target.assigned_role : target.special_role]."
|
||||
else
|
||||
explanation_text = "Stay alive until your target arrives on the station, you will be notified when the target has been identified."
|
||||
@@ -20,7 +20,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/effect/clockwork/sigil/attack_hand(mob/user)
|
||||
if(iscarbon(user) && !user.stat && (!is_servant_of_ratvar(user) || (is_servant_of_ratvar(user) && user.a_intent == INTENT_HARM)))
|
||||
if(iscarbon(user) && !user.stat && !is_servant_of_ratvar(user))
|
||||
user.visible_message("<span class='warning'>[user] stamps out [src]!</span>", "<span class='danger'>You stomp on [src], scattering it into thousands of particles.</span>")
|
||||
qdel(src)
|
||||
return 1
|
||||
@@ -175,7 +175,7 @@
|
||||
/obj/effect/clockwork/sigil/transmission
|
||||
name = "suspicious sigil"
|
||||
desc = "A glowing orange sigil. The air around it feels staticky."
|
||||
clockwork_desc = "A sigil that will serve as a battery for clockwork structures."
|
||||
clockwork_desc = "A sigil that serves as power generation and a battery for clockwork structures."
|
||||
icon_state = "sigiltransmission"
|
||||
alpha = 50
|
||||
color = "#EC8A2D"
|
||||
@@ -183,7 +183,12 @@
|
||||
resist_string = "glows faintly"
|
||||
sigil_name = "Sigil of Transmission"
|
||||
affects_servants = TRUE
|
||||
var/power_charge = CLOCKCULT_POWER_UNIT //starts with CLOCKCULT_POWER_UNIT by default
|
||||
var/power_charge = 0 //starts with no power
|
||||
var/drain_range = 14
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/Initialize()
|
||||
. = ..()
|
||||
update_glow()
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/ex_act(severity)
|
||||
if(severity == 3)
|
||||
@@ -199,7 +204,8 @@
|
||||
for(var/obj/structure/destructible/clockwork/powered/P in range(SIGIL_ACCESS_RANGE, src))
|
||||
structure_number++
|
||||
to_chat(user, "<span class='[power_charge ? "brass":"alloy"]'>It is storing <b>[GLOB.ratvar_awakens ? "INFINITY":"[power_charge]"]W</b> of power, \
|
||||
and <b>[structure_number]</b> Clockwork Structure[structure_number == 1 ? "":"s"] [structure_number == 1 ? "is":"are"] in range.</span>")
|
||||
and <b>[structure_number]</b> Clockwork Structure[structure_number == 1 ? " is":"s are"] in range.</span>")
|
||||
to_chat(user, "<span class='brass'>While active, it will gradually drain power from nearby electronics. It is currently [isprocessing ? "active":"disabled"].</span>")
|
||||
if(iscyborg(user))
|
||||
to_chat(user, "<span class='brass'>You can recharge from the [sigil_name] by crossing it.</span>")
|
||||
else if(!GLOB.ratvar_awakens)
|
||||
@@ -218,6 +224,20 @@
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/attack_ai(mob/user)
|
||||
if(is_servant_of_ratvar(user))
|
||||
attack_hand(user)
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/attack_hand(mob/user)
|
||||
if(is_servant_of_ratvar(user))
|
||||
visible_message("<span class='notice'>[user] [isprocessing ? "de":""]activates [src].</span>", "<span class='brass'>You [isprocessing ? "de":""]activate the [sigil_name].</span>")
|
||||
if(isprocessing)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
else
|
||||
START_PROCESSING(SSobj, src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/sigil_effects(mob/living/L)
|
||||
if(is_servant_of_ratvar(L))
|
||||
if(iscyborg(L))
|
||||
@@ -225,6 +245,20 @@
|
||||
else if(power_charge)
|
||||
to_chat(L, "<span class='brass'>You feel a slight, static shock.</span>")
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/process()
|
||||
var/power_drained = 0
|
||||
|
||||
for(var/t in spiral_range_turfs(drain_range, src))
|
||||
var/turf/T = t
|
||||
for(var/M in T)
|
||||
var/atom/movable/A = M
|
||||
power_drained += A.power_drain(TRUE)
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
modify_charge(-Floor(power_drained, MIN_CLOCKCULT_POWER))
|
||||
new /obj/effect/temp_visual/ratvar/sigil/transmission(loc, 1 + (power_drained * 0.0035))
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/proc/charge_cyborg(mob/living/silicon/robot/cyborg)
|
||||
if(!cyborg_checks(cyborg))
|
||||
return
|
||||
@@ -259,10 +293,6 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/Initialize()
|
||||
. = ..()
|
||||
update_glow()
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/proc/modify_charge(amount)
|
||||
if(GLOB.ratvar_awakens)
|
||||
update_glow()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
if(cell && cell.charge)
|
||||
playsound(src, "sparks", 50, 1)
|
||||
flick("apc-spark", src)
|
||||
. = min(cell.charge, 250)
|
||||
. = min(cell.charge, MIN_CLOCKCULT_POWER*3)
|
||||
cell.use(.) //Better than a power sink!
|
||||
if(!cell.charge && !shorted)
|
||||
shorted = 1
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/machinery/power/smes/power_drain(clockcult_user)
|
||||
if(charge)
|
||||
. = min(charge, 250)
|
||||
. = min(charge, MIN_CLOCKCULT_POWER*3)
|
||||
charge -= . * 50
|
||||
if(!charge && !panel_open)
|
||||
panel_open = TRUE
|
||||
@@ -27,29 +27,18 @@
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/power_drain(clockcult_user)
|
||||
if(charge)
|
||||
. = min(charge, 250)
|
||||
. = min(charge, MIN_CLOCKCULT_POWER*3)
|
||||
charge = use(.)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/light/power_drain(clockcult_user)
|
||||
if(on)
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 50, 1)
|
||||
. = 250
|
||||
if(prob(50))
|
||||
burn_out()
|
||||
|
||||
/mob/living/silicon/robot/power_drain(clockcult_user)
|
||||
if((!clockcult_user || !is_servant_of_ratvar(src)) && cell && cell.charge)
|
||||
. = min(cell.charge, 250)
|
||||
. = min(cell.charge, MIN_CLOCKCULT_POWER*4)
|
||||
cell.use(.)
|
||||
if(prob(20))
|
||||
to_chat(src, "<span class='userdanger'>ERROR: Power loss detected!</span>")
|
||||
spark_system.start()
|
||||
|
||||
/obj/mecha/power_drain(clockcult_user)
|
||||
if((!clockcult_user || !occupant || occupant && !is_servant_of_ratvar(occupant)) && cell && cell.charge)
|
||||
. = min(cell.charge, 250)
|
||||
if((!clockcult_user || (occupant && !is_servant_of_ratvar(occupant))) && cell && cell.charge)
|
||||
. = min(cell.charge, MIN_CLOCKCULT_POWER*4)
|
||||
cell.use(.)
|
||||
if(prob(20))
|
||||
occupant_message("<span class='userdanger'>Power loss detected!</span>")
|
||||
spark_system.start()
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
/turf/open/floor/plating/ashplanet/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
|
||||
return FALSE
|
||||
|
||||
/turf/open/floor/plating/lava/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
|
||||
/turf/open/lava/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
|
||||
return FALSE
|
||||
|
||||
/turf/open/floor/clockwork/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
Clockwork slabs will only make components if held or if inside an item held by a human, and when making a component will prevent all other slabs held from making components.\n\
|
||||
Hitting a slab, a Servant with a slab, or a cache will <b>transfer</b> this slab's components into the target, the target's slab, or the global cache, respectively."
|
||||
icon_state = "dread_ipad"
|
||||
var/inhand_overlay //If applicable, this overlay will be applied to the slab's inhand
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/list/stored_components = list(BELLIGERENT_EYE = 0, VANGUARD_COGWHEEL = 0, GEIS_CAPACITOR = 0, REPLICANT_ALLOY = 0, HIEROPHANT_ANSIBLE = 0)
|
||||
@@ -50,9 +51,9 @@
|
||||
maximum_quickbound = 6 //we usually have one or two unique scriptures, so if ratvar is up let us bind one more
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/engineer //five scriptures, plus a fabricator
|
||||
/obj/item/clockwork/slab/cyborg/engineer //four scriptures, plus a fabricator
|
||||
quickbound = list(/datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/cogscarab, \
|
||||
/datum/clockwork_scripture/create_object/soul_vessel, /datum/clockwork_scripture/create_object/sigil_of_transmission, /datum/clockwork_scripture/create_object/interdiction_lens)
|
||||
/datum/clockwork_scripture/create_object/soul_vessel, /datum/clockwork_scripture/create_object/sigil_of_transmission)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/medical //five scriptures, plus a spear
|
||||
quickbound = list(/datum/clockwork_scripture/ranged_ability/linked_vanguard, /datum/clockwork_scripture/ranged_ability/sentinels_compromise, \
|
||||
@@ -105,6 +106,12 @@
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
|
||||
|
||||
/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file)
|
||||
. = list()
|
||||
if(isinhands && item_state && inhand_overlay)
|
||||
var/mutable_appearance/M = mutable_appearance(icon_file, "slab_[inhand_overlay]")
|
||||
. += M
|
||||
|
||||
/obj/item/clockwork/slab/proc/check_on_mob(mob/user)
|
||||
if(user && !(src in user.held_items) && slab_ability && slab_ability.ranged_ability_user) //if we happen to check and we AREN'T in user's hands, remove whatever ability we have
|
||||
slab_ability.remove_ranged_ability()
|
||||
@@ -415,17 +422,16 @@
|
||||
dat += "<font color=#BE8700><b>Marauder:</b></font> A clockwork marauder, which is a powerful bodyguard that hides in its owner.<br><br>"
|
||||
dat += "<font color=#BE8700 size=3>Structures (* = requires power)</font><br>"
|
||||
dat += "<font color=#BE8700><b>Warden:</b></font> An ocular warden, which is a ranged turret that damages non-Servants that see it.<br>"
|
||||
dat += "<font color=#BE8700><b>Daemon*:</b></font> A tinkerer's daemon, which quickly creates components.<br>"
|
||||
dat += "<font color=#BE8700><b>Lens*:</b></font> An interdiction lens, which sabotages machinery in a large area to create power.<br>"
|
||||
dat += "<font color=#BE8700><b>Obelisk*:</b></font> A clockwork obelisk, which can broadcast large messages and allows limited teleportation.<br>"
|
||||
dat += "<font color=#BE8700><b>Motor*:</b></font> A mania motor, which serves as area-denial through negative effects and eventual conversion.<br>"
|
||||
dat += "<font color=#BE8700><b>Prism*:</b></font> A prolonging prism, which delays the shuttle for two minutes at a huge power cost.<br><br>"
|
||||
dat += "<font color=#BE8700><b>Motor*:</b></font> A mania motor, which serves as area-denial through negative effects and eventual conversion.<br>"
|
||||
dat += "<font color=#BE8700><b>Daemon*:</b></font> A tinkerer's daemon, which quickly creates components.<br>"
|
||||
dat += "<font color=#BE8700><b>Obelisk*:</b></font> A clockwork obelisk, which can broadcast large messages and allows limited teleportation.<br>"
|
||||
dat += "<font color=#BE8700 size=3>Sigils</font><br>"
|
||||
dat += "<i>Note: Sigils can be stacked on top of one another, making certain sigils very effective when paired!</i><br>"
|
||||
dat += "<font color=#BE8700><b>Transgression:</b></font> Stuns the first non-Servant to cross it for ten seconds and blinds others nearby. Disappears on use.<br>"
|
||||
dat += "<font color=#BE8700><b>Submission:</b></font> Converts the first non-Servant to stand on the sigil for seven seconds. Disappears on use.<br>"
|
||||
dat += "<font color=#BE8700><b>Accession:</b></font> Identical to the Sigil of Submission, but doesn't disappear on use. It can also convert a single mindshielded target, but will disappear after doing this.<br>"
|
||||
dat += "<font color=#BE8700><b>Transmission:</b></font> Stores power for clockwork structures. Feeding it brass sheets will create power.<br><br>"
|
||||
dat += "<font color=#BE8700><b>Transmission:</b></font> Drains and stores power for clockwork structures. Feeding it brass sheets will create power.<br><br>"
|
||||
dat += "<font color=#BE8700 size=3>-=-=-=-=-=-</font>"
|
||||
if("Components")
|
||||
var/servants = 0 //Calculate the current production time for slab components
|
||||
@@ -494,12 +500,11 @@
|
||||
becomes necessary: <b>power</b>. Almost all clockwork structures require power to function in some way. There is nothing special about this power; it's mere electricity, \
|
||||
and can be harnessed in several ways.<br><br>"
|
||||
dat += "To begin with, if there is no other source of power nearby, structures will draw from the area's APC, assuming it has one. This is inefficient and ill-advised as \
|
||||
anything but a last resort. Instead, it is recommended that a <b>sigil of transmission</b> is created. This sigil serves as a sort of battery for nearby clockwork \
|
||||
anything but a last resort. Instead, it is recommended that a <b>Sigil of Transmission</b> is created. This sigil serves as both battery and power generator for nearby clockwork \
|
||||
structures, and those structures will happily draw power from the sigil before they resort to pathetic APCs and other sources of energy.<br><br>"
|
||||
dat += "Generating power is less easy. The most reliable and efficient way is using brass sheets; attacking a sigil of transmission with brass sheets will convert them \
|
||||
to power, at a rate of <b>[POWER_FLOOR]W</b> per sheet. (Brass sheets are created from replica fabricators, which are explained more in detail in the <b>Conversion</b> \
|
||||
section.) There are also structures that <i>generate</i> power instead of consuming it; for instance, the interdiction lens sabotages all non-clockwork machines in a \
|
||||
very large area and creates power from doing so. This allows Servants to simultaneously cripple an entire department as well as fueling their own machinery.<br><br>"
|
||||
dat += "The most reliable and efficient way to generate power is by using brass sheets; attacking a sigil of transmission with brass sheets will convert them \
|
||||
to power, at a rate of <b>[POWER_FLOOR]W</b> per sheet. (Brass sheets are created from replica fabricators, which are explained more in detail in the <b>Conversion</b> section.) \
|
||||
Activating a sigil of transmission will also cause it to drain power from the nearby area, which, while effective, serves as an obvious tell that there is something wrong.<br><br>"
|
||||
dat += "Without power, many structures will not function, making a base vulnerable to attack. For this reason, it is critical that you keep an eye on your power reserves and \
|
||||
ensure that they remain comfortably high.<br><br>"
|
||||
dat += "<font color=#BE8700 size=3>-=-=-=-=-=-</font>"
|
||||
|
||||
@@ -259,7 +259,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
|
||||
|
||||
//Uses a ranged slab ability, returning only when the ability no longer exists(ie, when interrupted) or finishes.
|
||||
/datum/clockwork_scripture/ranged_ability
|
||||
var/slab_icon = "dread_ipad"
|
||||
var/slab_overlay
|
||||
var/ranged_type = /obj/effect/proc_holder/slab
|
||||
var/ranged_message = "This is a huge goddamn bug, how'd you cast this?"
|
||||
var/timeout_time = 0
|
||||
@@ -271,7 +271,10 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
|
||||
return ..()
|
||||
|
||||
/datum/clockwork_scripture/ranged_ability/scripture_effects()
|
||||
slab.icon_state = slab_icon
|
||||
if(slab_overlay)
|
||||
slab.add_overlay(slab_overlay)
|
||||
slab.item_state = "clockwork_slab"
|
||||
slab.inhand_overlay = slab_overlay
|
||||
slab.slab_ability = new ranged_type(slab)
|
||||
slab.slab_ability.slab = slab
|
||||
slab.slab_ability.add_ranged_ability(invoker, ranged_message)
|
||||
@@ -294,7 +297,9 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or
|
||||
successful = slab.slab_ability.successful
|
||||
if(!slab.slab_ability.finished)
|
||||
slab.slab_ability.remove_ranged_ability()
|
||||
slab.icon_state = "dread_ipad"
|
||||
slab.cut_overlays()
|
||||
slab.item_state = initial(slab.item_state)
|
||||
slab.inhand_overlay = null
|
||||
if(invoker)
|
||||
invoker.update_inv_hands()
|
||||
return successful //slab doesn't look like a word now.
|
||||
|
||||
@@ -171,46 +171,24 @@
|
||||
quickbind_desc = "Creates a Fragment Shell, which produces an Anima Fragment when filled with a Soul Vessel."
|
||||
|
||||
|
||||
//Sigil of Transmission: Creates a sigil of transmission that can store power for clockwork structures.
|
||||
//Sigil of Transmission: Creates a sigil of transmission that can drain and store power for clockwork structures.
|
||||
/datum/clockwork_scripture/create_object/sigil_of_transmission
|
||||
descname = "Structure Battery"
|
||||
descname = "Structure Power Generator & Battery"
|
||||
name = "Sigil of Transmission"
|
||||
desc = "Places a sigil that stores energy to power clockwork structures."
|
||||
desc = "Places a sigil that can drain and will store energy to power clockwork structures."
|
||||
invocations = list("Divinity...", "...power our creations!")
|
||||
channel_time = 70
|
||||
consumed_components = list(VANGUARD_COGWHEEL = 2, GEIS_CAPACITOR = 2, HIEROPHANT_ANSIBLE = 4)
|
||||
whispered = TRUE
|
||||
object_path = /obj/effect/clockwork/sigil/transmission
|
||||
creator_message = "<span class='brass'>A sigil silently appears below you. It will automatically power clockwork structures near it.</span>"
|
||||
creator_message = "<span class='brass'>A sigil silently appears below you. It will automatically power clockwork structures near it and will drain power when activated.</span>"
|
||||
usage_tip = "Cyborgs can charge from this sigil by remaining over it for 5 seconds."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 5
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Sigil of Transmission, which stores power for clockwork structures."
|
||||
|
||||
|
||||
//Interdiction Lens: Creates a powerful totem that disables radios and cameras and drains power into nearby sigils of transmission.
|
||||
/datum/clockwork_scripture/create_object/interdiction_lens
|
||||
descname = "Structure, Area Sabotage, Power Generator"
|
||||
name = "Interdiction Lens"
|
||||
desc = "Creates a clockwork totem that sabotages nearby machinery and funnels drained power into nearby Sigils of Transmission or the area's APC."
|
||||
invocations = list("May this totem...", "...shroud the false suns!")
|
||||
channel_time = 80
|
||||
consumed_components = list(BELLIGERENT_EYE = 5, REPLICANT_ALLOY = 2, HIEROPHANT_ANSIBLE = 2)
|
||||
object_path = /obj/structure/destructible/clockwork/powered/interdiction_lens
|
||||
creator_message = "<span class='brass'>You form an interdiction lens, which disrupts cameras and radios and drains power.</span>"
|
||||
observer_message = "<span class='warning'>A brass totem rises from the ground, a purple gem appearing in its center!</span>"
|
||||
invokers_required = 2
|
||||
multiple_invokers_used = TRUE
|
||||
usage_tip = "If it fails to funnel power into a nearby Sigil of Transmission or the area's APC and fails to disable even one thing, it will disable itself for two minutes."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 6
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates an Interdiction Lens, which drains power into nearby Sigils of Transmission."
|
||||
quickbind_desc = "Creates a Sigil of Transmission, which can drain and will store power for clockwork structures."
|
||||
|
||||
|
||||
//Prolonging Prism: Creates a prism that will delay the shuttle at a power cost
|
||||
@@ -226,7 +204,7 @@
|
||||
observer_message = "<span class='warning'>An onyx prism forms in midair and sprouts tendrils to support itself!</span>"
|
||||
invokers_required = 2
|
||||
multiple_invokers_used = TRUE
|
||||
usage_tip = "The power cost to delay a shuttle increases based on CV and the number of times activated."
|
||||
usage_tip = "The power cost to delay a shuttle increases based on the number of times activated."
|
||||
tier = SCRIPTURE_APPLICATION
|
||||
one_per_tile = TRUE
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
channel_time = 30
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
quickbind_desc = "Allows you to grant a Servant and yourself stun immunity, as the Vanguard scripture.<br><b>Click your slab to disable.</b>"
|
||||
slab_icon = "vanguard"
|
||||
slab_overlay = "vanguard"
|
||||
ranged_type = /obj/effect/proc_holder/slab/vanguard
|
||||
ranged_message = "<span class='inathneq_small'><i>You charge the clockwork slab with defensive strength.</i>\n\
|
||||
<b>Left-click a fellow Servant or yourself to grant Vanguard!\n\
|
||||
@@ -38,7 +38,7 @@
|
||||
channel_time = 30
|
||||
primary_component = BELLIGERENT_EYE
|
||||
quickbind_desc = "Allows you to place a Judicial Marker to knock down and damage non-Servants in an area.<br><b>Click your slab to disable.</b>"
|
||||
slab_icon = "judicial"
|
||||
slab_overlay = "judicial"
|
||||
ranged_type = /obj/effect/proc_holder/slab/judicial
|
||||
ranged_message = "<span class='neovgre_small'><i>You charge the clockwork slab with judicial force.</i>\n\
|
||||
<b>Left-click a target to place a Judicial Marker!\n\
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
sort_priority = 4
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to convert a Servant's brute, burn, and oxygen damage to half toxin damage.<br><b>Click your slab to disable.</b>"
|
||||
slab_icon = "compromise"
|
||||
slab_overlay = "compromise"
|
||||
ranged_type = /obj/effect/proc_holder/slab/compromise
|
||||
ranged_message = "<span class='inathneq_small'><i>You charge the clockwork slab with healing power.</i>\n\
|
||||
<b>Left-click a fellow Servant or yourself to heal!\n\
|
||||
@@ -111,7 +111,7 @@
|
||||
sort_priority = 5
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to bind and start converting an adjacent target non-Servant.<br><b>Click your slab to disable.</b>"
|
||||
slab_icon = "geis"
|
||||
slab_overlay = "geis"
|
||||
ranged_type = /obj/effect/proc_holder/slab/geis
|
||||
ranged_message = "<span class='sevtug_small'><i>You charge the clockwork slab with divine energy.</i>\n\
|
||||
<b>Left-click a target within melee range to convert!\n\
|
||||
|
||||
@@ -386,7 +386,7 @@
|
||||
|
||||
/datum/clockwork_scripture/ranged_ability/volt_ray
|
||||
name = "Volt Ray"
|
||||
slab_icon = "volt"
|
||||
slab_overlay = "volt"
|
||||
allow_mobility = FALSE
|
||||
ranged_type = /obj/effect/proc_holder/slab/volt
|
||||
ranged_message = "<span class='nzcrentr_small'><i>You charge the clockwork slab with shocking might.</i>\n\
|
||||
|
||||
@@ -87,13 +87,6 @@
|
||||
. *= min(max_integrity/max(obj_integrity, 1), 4)
|
||||
. = round(., 0.01)
|
||||
|
||||
/obj/structure/destructible/clockwork/can_be_unfasten_wrench(mob/user, silent)
|
||||
if(anchored && obj_integrity <= round(max_integrity * 0.25, 1))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>[src] is too damaged to unsecure!</span>")
|
||||
return FAILED_UNFASTEN
|
||||
return ..()
|
||||
|
||||
/obj/structure/destructible/clockwork/attack_ai(mob/user)
|
||||
if(is_servant_of_ratvar(user))
|
||||
attack_hand(user)
|
||||
@@ -108,7 +101,7 @@
|
||||
/obj/structure/destructible/clockwork/attackby(obj/item/I, mob/user, params)
|
||||
if(is_servant_of_ratvar(user) && istype(I, /obj/item/weapon/wrench) && unanchored_icon)
|
||||
if(default_unfasten_wrench(user, I, 50) == SUCCESSFUL_UNFASTEN)
|
||||
update_anchored(user, TRUE)
|
||||
update_anchored(user)
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
@@ -125,7 +118,7 @@
|
||||
if(do_damage)
|
||||
playsound(src, break_sound, 10 * get_efficiency_mod(TRUE), 1)
|
||||
take_damage(round(max_integrity * 0.25, 1), BRUTE)
|
||||
to_chat(user, "<span class='warning'>As you unsecure [src] from the floor, you see cracks appear in its surface!</span>")
|
||||
to_chat(user, "<span class='warning'>As you unsecure [src] from the floor, you see cracks appear in its surface!</span>")
|
||||
|
||||
/obj/structure/destructible/clockwork/emp_act(severity)
|
||||
if(anchored && unanchored_icon)
|
||||
@@ -140,7 +133,7 @@
|
||||
desc = "A very large construction."
|
||||
layer = MASSIVE_OBJ_LAYER
|
||||
density = FALSE
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF | FREEZE_PROOF
|
||||
|
||||
/obj/structure/destructible/clockwork/massive/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
icon_state = "nothing"
|
||||
density = FALSE
|
||||
invisibility = INVISIBILITY_MAXIMUM
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE | FREEZE_PROOF
|
||||
can_be_repaired = FALSE
|
||||
immune_to_servant_attacks = TRUE
|
||||
var/progress_in_seconds = 0 //Once this reaches GATEWAY_RATVAR_ARRIVAL, it's game over
|
||||
|
||||
@@ -32,16 +32,12 @@
|
||||
return 25
|
||||
|
||||
/obj/structure/destructible/clockwork/ocular_warden/can_be_unfasten_wrench(mob/user, silent)
|
||||
if(anchored)
|
||||
if(obj_integrity <= max_integrity * 0.25)
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>[src] is too damaged to unsecure!</span>")
|
||||
return FAILED_UNFASTEN
|
||||
else
|
||||
if(!anchored)
|
||||
for(var/obj/structure/destructible/clockwork/ocular_warden/W in orange(OCULAR_WARDEN_EXCLUSION_RANGE, src))
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='neovgre'>You sense another ocular warden too near this location. Activating this one this close would cause them to fight.</span>")
|
||||
return FAILED_UNFASTEN
|
||||
if(W.anchored)
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='neovgre'>You sense another ocular warden too near this location. Activating this one this close would cause them to fight.</span>")
|
||||
return FAILED_UNFASTEN
|
||||
return SUCCESSFUL_UNFASTEN
|
||||
|
||||
/obj/structure/destructible/clockwork/ocular_warden/ratvar_act()
|
||||
@@ -79,7 +75,7 @@
|
||||
if(GLOB.ratvar_awakens && L)
|
||||
L.adjust_fire_stacks(damage_per_tick)
|
||||
L.IgniteMob()
|
||||
else if(istype(target,/obj/mecha))
|
||||
else if(istype(target, /obj/mecha))
|
||||
var/obj/mecha/M = target
|
||||
M.take_damage(damage_per_tick * get_efficiency_mod(), BURN, "melee", 1, get_dir(src, M))
|
||||
|
||||
@@ -94,7 +90,7 @@
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
to_chat(L, "<span class='heavy_brass'>\"I SEE YOU!\"</span>\n<span class='userdanger'>[src]'s gaze [GLOB.ratvar_awakens ? "melts you alive" : "burns you"]!</span>")
|
||||
else if(istype(target,/obj/mecha))
|
||||
else if(istype(target, /obj/mecha))
|
||||
var/obj/mecha/M = target
|
||||
to_chat(M.occupant, "<span class='heavy_brass'>\"I SEE YOU!\"</span>" )
|
||||
else if(prob(0.5)) //Extremely low chance because of how fast the subsystem it uses processes
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
/obj/item/clockwork/alloy_shards/large = 1, \
|
||||
/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism = 1)
|
||||
var/static/list/component_refund = list(VANGUARD_COGWHEEL = 2, GEIS_CAPACITOR = 1, REPLICANT_ALLOY = 1)
|
||||
var/static/delay_cost = 2500
|
||||
var/static/delay_cost_increase = 750
|
||||
var/static/delay_cost = 3000
|
||||
var/static/delay_cost_increase = 1250
|
||||
var/static/delay_remaining = 0
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/prolonging_prism/examine(mob/user)
|
||||
@@ -27,7 +27,7 @@
|
||||
else
|
||||
var/efficiency = get_efficiency_mod(TRUE)
|
||||
to_chat(user, "<span class='inathneq_small'>It requires at least <b>[get_delay_cost()]W</b> of power to attempt to delay the arrival of an emergency shuttle by <b>[2 * efficiency]</b> minutes.</span>")
|
||||
to_chat(user, "<span class='inathneq_small'>This cost increases by <b>[delay_cost_increase * 0.1]W</b> for every <b>10 CV</b> and <b>[delay_cost_increase]W</b> for every previous activation.</span>")
|
||||
to_chat(user, "<span class='inathneq_small'>This cost increases by <b>[delay_cost_increase]W</b> for every previous activation.</span>")
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/prolonging_prism/forced_disable(bad_effects)
|
||||
if(active)
|
||||
@@ -116,7 +116,7 @@
|
||||
CHECK_TICK //we may be going over a hell of a lot of turfs
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/get_delay_cost()
|
||||
return Floor((GLOB.clockwork_construction_value * delay_cost_increase * 0.01) + delay_cost, MIN_CLOCKCULT_POWER)
|
||||
return Floor(delay_cost, MIN_CLOCKCULT_POWER)
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/seven_random_hexes(turf/T, efficiency)
|
||||
var/static/list/hex_states = list("prismhex1", "prismhex2", "prismhex3", "prismhex4", "prismhex5", "prismhex6", "prismhex7")
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
icon_state = "cultrobes"
|
||||
item_state = "cultrobes"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
|
||||
allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade)
|
||||
armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
cold_protection = CHEST|GROIN|LEGS|ARMS
|
||||
@@ -133,7 +133,7 @@
|
||||
icon_state = "magusred"
|
||||
item_state = "magusred"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
|
||||
allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade)
|
||||
armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
item_state = "cult_armor"
|
||||
desc = "A heavily-armored exosuit worn by warriors of the Nar-Sien cult. It can withstand hard vacuum."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/internals/)
|
||||
allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade, /obj/item/weapon/tank/internals/)
|
||||
armor = list(melee = 70, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 40, acid = 75)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
armor = list(melee = 50, bullet = 40, laser = 50,energy = 30, bomb = 50, bio = 30, rad = 30, fire = 50, acid = 60)
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
|
||||
allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade)
|
||||
var/current_charges = 3
|
||||
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
icon_state = "cultrobes"
|
||||
item_state = "cultrobes"
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
|
||||
allowed = list(/obj/item/weapon/tome, /obj/item/weapon/melee/cultblade)
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
armor = list(melee = -50, bullet = -50, laser = -50,energy = -50, bomb = -50, bio = -50, rad = -50, fire = 0, acid = 0)
|
||||
slowdown = -1
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
/turf/closed,
|
||||
/turf/open/floor/engine/cult,
|
||||
/turf/open/space,
|
||||
/turf/open/floor/plating/lava,
|
||||
/turf/open/lava,
|
||||
/turf/open/chasm))
|
||||
if(is_type_in_typecache(T, blacklisted_pylon_turfs))
|
||||
continue
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
src.visible_message("<span class='warning'>[src] seems to have been harmed by the purity of [attacker]'s clothes.</span>", "<span class='notice'>Unsullied white clothing is disrupting your form.</span>")
|
||||
return whiteness[U.type] + 1
|
||||
if(BANE_TOOLBOX)
|
||||
if(istype(weapon,/obj/item/weapon/storage/toolbox))
|
||||
if(istype(weapon, /obj/item/weapon/storage/toolbox))
|
||||
src.visible_message("<span class='warning'>The [weapon] seems unusually robust this time.</span>", "<span class='notice'>The [weapon] is your unmaking!</span>")
|
||||
return 2.5 // Will take four hits with a normal toolbox to crit.
|
||||
if(BANE_HARVEST)
|
||||
if(istype(weapon,/obj/item/weapon/reagent_containers/food/snacks/grown/))
|
||||
if(istype(weapon, /obj/item/weapon/reagent_containers/food/snacks/grown/))
|
||||
visible_message("<span class='warning'>The spirits of the harvest aid in the exorcism.</span>", "<span class='notice'>The harvest spirits are harming you.</span>")
|
||||
Knockdown(40)
|
||||
qdel(weapon)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/datum/objective/devil
|
||||
dangerrating = 5
|
||||
|
||||
/datum/objective/devil/soulquantity
|
||||
explanation_text = "You shouldn't see this text. Error:DEVIL1"
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
S.update_icon()
|
||||
S.power_change()
|
||||
for(var/area/A in world)
|
||||
if(!istype(A, /area/space) && !istype(A, /area/shuttle) && !istype(A,/area/arrival))
|
||||
if(!istype(A, /area/space) && !istype(A, /area/shuttle) && !istype(A, /area/arrival))
|
||||
A.power_light = TRUE
|
||||
A.power_equip = TRUE
|
||||
A.power_environ = TRUE
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
if(escaped_total > 0)
|
||||
SSblackbox.set_val("escaped_total",escaped_total)
|
||||
send2irc("Server", "Round just ended.")
|
||||
if(cult.len && !istype(SSticker.mode,/datum/game_mode/cult))
|
||||
if(cult.len && !istype(SSticker.mode, /datum/game_mode/cult))
|
||||
datum_cult_completion()
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
diff a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm (rejected hunks)
|
||||
@@ -266,7 +266,7 @@
|
||||
if(escaped_total > 0)
|
||||
SSblackbox.set_val("escaped_total",escaped_total)
|
||||
send2irc("Server", "Round just ended.")
|
||||
- if(cult.len && !istype(SSticker.mode,/datum/game_mode/cult))
|
||||
+ if(cult.len && !istype(SSticker.mode, /datum/game_mode/cult))
|
||||
datum_cult_completion()
|
||||
|
||||
return 0
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
GLOBAL_LIST_INIT(gang_name_pool, list("Clandestine", "Prima", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel", "Diablo", "Psyke", "Osiron", "Sirius", "Sleeping Carp"))
|
||||
GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","purple", "white"))
|
||||
GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/obj/item/clothing/suit/jacket/leather/overcoat,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/jacket/miljacket,/obj/item/clothing/suit/jacket/puffer,/obj/item/clothing/suit/pirate,/obj/item/clothing/suit/poncho,/obj/item/clothing/suit/apron/overalls,/obj/item/clothing/suit/jacket/letterman))
|
||||
GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather, /obj/item/clothing/suit/jacket/leather/overcoat, /obj/item/clothing/suit/jacket/puffer, /obj/item/clothing/suit/jacket/miljacket, /obj/item/clothing/suit/jacket/puffer, /obj/item/clothing/suit/pirate, /obj/item/clothing/suit/poncho, /obj/item/clothing/suit/apron/overalls, /obj/item/clothing/suit/jacket/letterman))
|
||||
|
||||
/datum/game_mode
|
||||
var/list/datum/gang/gangs = list()
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
if(!gangtools.len || !message)
|
||||
return
|
||||
for(var/obj/item/device/gangtool/tool in gangtools)
|
||||
var/mob/living/mob = get(tool.loc,/mob/living)
|
||||
var/mob/living/mob = get(tool.loc, /mob/living)
|
||||
if(mob && mob.mind && mob.stat == CONSCIOUS)
|
||||
if(mob.mind.gang_datum == src)
|
||||
to_chat(mob, "<span class='[warning ? "warning" : "notice"]'>[bicon(tool)] [message]</span>")
|
||||
|
||||
@@ -185,6 +185,9 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
|
||||
/obj/effect/meteor/proc/meteor_effect()
|
||||
if(heavy)
|
||||
var/sound/meteor_sound = sound(meteorsound)
|
||||
var/random_frequency = get_rand_frequency()
|
||||
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if((M.orbiting) && (SSaugury.watchers[M]))
|
||||
continue
|
||||
@@ -193,7 +196,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
continue
|
||||
var/dist = get_dist(M.loc, src.loc)
|
||||
shake_camera(M, dist > 20 ? 2 : 4, dist > 20 ? 1 : 3)
|
||||
M.playsound_local(src.loc, meteorsound, 50, 1, get_rand_frequency(), 10)
|
||||
M.playsound_local(src.loc, null, 50, 1, random_frequency, 10, S = meteor_sound)
|
||||
|
||||
///////////////////////
|
||||
//Meteor types
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/datum/objective/abductee
|
||||
dangerrating = 5
|
||||
completed = 1
|
||||
|
||||
/datum/objective/abductee/random
|
||||
|
||||
@@ -96,9 +96,9 @@
|
||||
agent_landmarks.len = max_teams
|
||||
scientist_landmarks.len = max_teams
|
||||
for(var/obj/effect/landmark/abductor/A in GLOB.landmarks_list)
|
||||
if(istype(A,/obj/effect/landmark/abductor/agent))
|
||||
if(istype(A, /obj/effect/landmark/abductor/agent))
|
||||
agent_landmarks[text2num(A.team)] = A
|
||||
else if(istype(A,/obj/effect/landmark/abductor/scientist))
|
||||
else if(istype(A, /obj/effect/landmark/abductor/scientist))
|
||||
scientist_landmarks[text2num(A.team)] = A
|
||||
|
||||
var/team_name = team_names[team_number]
|
||||
@@ -210,7 +210,6 @@
|
||||
|
||||
// OBJECTIVES
|
||||
/datum/objective/experiment
|
||||
dangerrating = 10
|
||||
target_amount = 6
|
||||
var/team
|
||||
|
||||
|
||||
@@ -271,10 +271,10 @@
|
||||
var/list/all_items = M.GetAllContents()
|
||||
|
||||
for(var/obj/I in all_items)
|
||||
if(istype(I,/obj/item/device/radio/))
|
||||
if(istype(I, /obj/item/device/radio/))
|
||||
var/obj/item/device/radio/r = I
|
||||
r.listening = 0
|
||||
if(!istype(I,/obj/item/device/radio/headset))
|
||||
if(!istype(I, /obj/item/device/radio/headset))
|
||||
r.broadcasting = 0 //goddamned headset hacks
|
||||
|
||||
/obj/item/device/firing_pin/abductor
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/surgery/organ_extraction
|
||||
name = "experimental dissection"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin,/datum/surgery_step/incise, /datum/surgery_step/extract_organ ,/datum/surgery_step/gland_insert)
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/extract_organ, /datum/surgery_step/gland_insert)
|
||||
possible_locs = list("chest")
|
||||
ignore_clothes = 1
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
/obj/item/organ/heart/gland/pop/activate()
|
||||
to_chat(owner, "<span class='notice'>You feel unlike yourself.</span>")
|
||||
var/species = pick(list(/datum/species/lizard,/datum/species/jelly/slime,/datum/species/pod,/datum/species/fly,/datum/species/jelly))
|
||||
var/species = pick(list(/datum/species/lizard, /datum/species/jelly/slime, /datum/species/pod, /datum/species/fly, /datum/species/jelly))
|
||||
owner.set_species(species)
|
||||
|
||||
/obj/item/organ/heart/gland/ventcrawling
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
/obj/structure/flora/swarmer_act()
|
||||
return FALSE
|
||||
|
||||
/turf/open/floor/plating/lava/swarmer_act()
|
||||
/turf/open/lava/swarmer_act()
|
||||
if(!is_safe())
|
||||
new /obj/structure/lattice/catwalk/swarmer_catwalk(src)
|
||||
return FALSE
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#define INVISIBILITY_REVENANT 50
|
||||
|
||||
/mob/living/simple_animal/revenant
|
||||
name = "revenant"
|
||||
name = "\a Revenant"
|
||||
desc = "A malevolent spirit."
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "revenant_idle"
|
||||
@@ -419,7 +419,6 @@
|
||||
|
||||
//objectives
|
||||
/datum/objective/revenant
|
||||
dangerrating = 10
|
||||
var/targetAmount = 100
|
||||
|
||||
/datum/objective/revenant/New()
|
||||
@@ -439,7 +438,6 @@
|
||||
return TRUE
|
||||
|
||||
/datum/objective/revenantFluff
|
||||
dangerrating = 0
|
||||
|
||||
/datum/objective/revenantFluff/New()
|
||||
var/list/explanationTexts = list("Assist and exacerbate existing threats at critical moments.", \
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
/datum/objective/sintouched
|
||||
dangerrating = 5
|
||||
completed = 1
|
||||
|
||||
/* NO ERP OBJECTIVE FOR YOU.
|
||||
/datum/objective/sintouched/lust
|
||||
dangerrating = 3 // it's not AS dangerous.
|
||||
|
||||
/datum/objective/sintouched/lust/New()
|
||||
var/mob/dead/D = pick(dead_mob_list)
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
if(foundIDs.len)
|
||||
for(var/obj/item/weapon/card/id/ID in foundIDs)
|
||||
ID.name = "lead agent card"
|
||||
ID.access += GLOB.access_syndicate_leader
|
||||
ID.access += ACCESS_SYNDICATE_LEADER
|
||||
else
|
||||
message_admins("Warning: Nuke Ops spawned without access to leave their spawn area!")
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_nuclear()
|
||||
if( syndicates.len || (SSticker && istype(SSticker.mode,/datum/game_mode/nuclear)) )
|
||||
if( syndicates.len || (SSticker && istype(SSticker.mode, /datum/game_mode/nuclear)) )
|
||||
var/text = "<br><FONT size=3><B>The syndicate operatives were:</B></FONT>"
|
||||
var/purchases = ""
|
||||
var/TC_uses = 0
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
/obj/machinery/nuclearbomb/syndicate/Initialize()
|
||||
. = ..()
|
||||
var/obj/machinery/nuclearbomb/existing = locate("syndienuke")
|
||||
var/obj/machinery/nuclearbomb/existing = locate("syndienuke") in GLOB.nuke_list
|
||||
if(existing)
|
||||
qdel(src)
|
||||
throw EXCEPTION("Attempted to spawn a syndicate nuke while one already exists at [existing.loc.x],[existing.loc.y],[existing.loc.z]")
|
||||
@@ -442,7 +442,7 @@
|
||||
off_station = NUKE_MISS_STATION
|
||||
if((bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)))
|
||||
off_station = NUKE_MISS_STATION
|
||||
else if(istype(A, /area/syndicate_mothership) || (istype(A,/area/shuttle/syndicate) && bomb_location.z == ZLEVEL_CENTCOM))
|
||||
else if(istype(A, /area/syndicate_mothership) || (istype(A, /area/shuttle/syndicate) && bomb_location.z == ZLEVEL_CENTCOM))
|
||||
off_station = NUKE_SYNDICATE_BASE
|
||||
else
|
||||
off_station = NUKE_NEAR_MISS
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
return
|
||||
switch(mode)
|
||||
if(TRACK_NUKE_DISK)
|
||||
var/obj/item/weapon/disk/nuclear/N = locate()
|
||||
var/obj/item/weapon/disk/nuclear/N = locate() in GLOB.poi_list
|
||||
target = N
|
||||
if(TRACK_MALF_AI)
|
||||
for(var/V in GLOB.ai_list)
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
var/datum/mind/target = null //If they are focused on a particular person.
|
||||
var/target_amount = 0 //If they are focused on a particular number. Steal objectives have their own counter.
|
||||
var/completed = 0 //currently only used for custom objectives.
|
||||
var/dangerrating = 0 //How hard the objective is, essentially. Used for dishing out objectives and checking overall victory.
|
||||
var/martyr_compatible = 0 //If the objective is compatible with martyr objective, i.e. if you can still do it while dead.
|
||||
|
||||
/datum/objective/New(var/text)
|
||||
@@ -43,6 +42,7 @@
|
||||
return target
|
||||
|
||||
/datum/objective/proc/find_target_by_role(role, role_type=0, invert=0)//Option sets either to check assigned role or special role. Default to assigned., invert inverts the check, eg: "Don't choose a Ling"
|
||||
var/list/candidates = list() //Let's compile a list and THEN pick one randomly, not just first come first serve...
|
||||
for(var/datum/mind/possible_target in get_crewmember_minds())
|
||||
if((possible_target != owner) && ishuman(possible_target.current))
|
||||
var/is_role = 0
|
||||
@@ -56,12 +56,11 @@
|
||||
if(invert)
|
||||
if(is_role)
|
||||
continue
|
||||
target = possible_target
|
||||
break
|
||||
candidates += possible_target
|
||||
else if(is_role)
|
||||
target = possible_target
|
||||
break
|
||||
|
||||
candidates += possible_target
|
||||
if(candidates)
|
||||
target = pick(candidates)
|
||||
update_explanation_text()
|
||||
|
||||
/datum/objective/proc/update_explanation_text()
|
||||
@@ -78,7 +77,6 @@
|
||||
|
||||
/datum/objective/assassinate
|
||||
var/target_role_type=0
|
||||
dangerrating = 10
|
||||
martyr_compatible = 1
|
||||
|
||||
/datum/objective/assassinate/find_target_by_role(role, role_type=0, invert=0)
|
||||
@@ -89,7 +87,10 @@
|
||||
|
||||
/datum/objective/assassinate/check_completion()
|
||||
if(target && target.current)
|
||||
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
|
||||
var/mob/living/carbon/human/H
|
||||
if(ishuman(target.current))
|
||||
H = target.current
|
||||
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey || (H && H.dna.species.id == "memezombies")) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
|
||||
return 1
|
||||
return 0
|
||||
return 1
|
||||
@@ -141,7 +142,6 @@
|
||||
|
||||
/datum/objective/maroon
|
||||
var/target_role_type=0
|
||||
dangerrating = 5
|
||||
martyr_compatible = 1
|
||||
|
||||
/datum/objective/maroon/find_target_by_role(role, role_type=0, invert=0)
|
||||
@@ -152,7 +152,10 @@
|
||||
|
||||
/datum/objective/maroon/check_completion()
|
||||
if(target && target.current)
|
||||
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
|
||||
var/mob/living/carbon/human/H
|
||||
if(ishuman(target.current))
|
||||
H = target.current
|
||||
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey || (H && H.dna.species.id == "memezombies")) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
|
||||
return 1
|
||||
if(target.current.onCentcom() || target.current.onSyndieBase())
|
||||
return 0
|
||||
@@ -168,7 +171,6 @@
|
||||
|
||||
/datum/objective/debrain//I want braaaainssss
|
||||
var/target_role_type=0
|
||||
dangerrating = 20
|
||||
|
||||
/datum/objective/debrain/find_target_by_role(role, role_type=0, invert=0)
|
||||
if(!invert)
|
||||
@@ -201,7 +203,6 @@
|
||||
|
||||
/datum/objective/protect//The opposite of killing a dude.
|
||||
var/target_role_type=0
|
||||
dangerrating = 10
|
||||
martyr_compatible = 1
|
||||
|
||||
/datum/objective/protect/find_target_by_role(role, role_type=0, invert=0)
|
||||
@@ -230,7 +231,6 @@
|
||||
|
||||
/datum/objective/hijack
|
||||
explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody."
|
||||
dangerrating = 25
|
||||
martyr_compatible = 0 //Technically you won't get both anyway.
|
||||
|
||||
/datum/objective/hijack/check_completion()
|
||||
@@ -240,15 +240,13 @@
|
||||
return 0
|
||||
if(issilicon(owner.current))
|
||||
return 0
|
||||
if(SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
|
||||
if(!SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
|
||||
return 0
|
||||
|
||||
return SSshuttle.emergency.is_hijacked()
|
||||
|
||||
|
||||
/datum/objective/hijackclone
|
||||
explanation_text = "Hijack the emergency shuttle by ensuring only you (or your copies) escape."
|
||||
dangerrating = 25
|
||||
martyr_compatible = 0
|
||||
|
||||
/datum/objective/hijackclone/check_completion()
|
||||
@@ -281,7 +279,6 @@
|
||||
|
||||
/datum/objective/block
|
||||
explanation_text = "Do not allow any organic lifeforms to escape on the shuttle alive."
|
||||
dangerrating = 25
|
||||
martyr_compatible = 1
|
||||
|
||||
/datum/objective/block/check_completion()
|
||||
@@ -303,7 +300,6 @@
|
||||
|
||||
/datum/objective/purge
|
||||
explanation_text = "Ensure no mutant humanoid species are present aboard the escape shuttle."
|
||||
dangerrating = 25
|
||||
martyr_compatible = 1
|
||||
|
||||
/datum/objective/purge/check_completion()
|
||||
@@ -321,7 +317,6 @@
|
||||
|
||||
/datum/objective/robot_army
|
||||
explanation_text = "Have at least eight active cyborgs synced to you."
|
||||
dangerrating = 25
|
||||
martyr_compatible = 0
|
||||
|
||||
/datum/objective/robot_army/check_completion()
|
||||
@@ -341,7 +336,6 @@
|
||||
|
||||
/datum/objective/escape
|
||||
explanation_text = "Escape on the shuttle or an escape pod alive and without being in custody."
|
||||
dangerrating = 5
|
||||
|
||||
/datum/objective/escape/check_completion()
|
||||
if(issilicon(owner.current))
|
||||
@@ -369,7 +363,6 @@
|
||||
return 0
|
||||
|
||||
/datum/objective/escape/escape_with_identity
|
||||
dangerrating = 10
|
||||
var/target_real_name // Has to be stored because the target's real_name can change over the course of the round
|
||||
var/target_missing_id
|
||||
|
||||
@@ -408,7 +401,6 @@
|
||||
|
||||
/datum/objective/survive
|
||||
explanation_text = "Stay alive until the end."
|
||||
dangerrating = 3
|
||||
|
||||
/datum/objective/survive/check_completion()
|
||||
if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
|
||||
@@ -420,7 +412,6 @@
|
||||
|
||||
/datum/objective/martyr
|
||||
explanation_text = "Die a glorious death."
|
||||
dangerrating = 1
|
||||
|
||||
/datum/objective/martyr/check_completion()
|
||||
if(!owner.current) //Gibbed, etc.
|
||||
@@ -443,7 +434,6 @@ GLOBAL_LIST_EMPTY(possible_items)
|
||||
/datum/objective/steal
|
||||
var/datum/objective_item/targetinfo = null //Save the chosen item datum so we can access it later.
|
||||
var/obj/item/steal_target = null //Needed for custom objectives (they're just items, not datums).
|
||||
dangerrating = 5 //Overridden by the individual item's difficulty, but defaults to 5 for custom objectives.
|
||||
martyr_compatible = 0
|
||||
|
||||
/datum/objective/steal/get_target()
|
||||
@@ -466,8 +456,7 @@ GLOBAL_LIST_EMPTY(possible_items)
|
||||
targetinfo = item
|
||||
|
||||
steal_target = targetinfo.targetitem
|
||||
explanation_text = "Steal [targetinfo.name]."
|
||||
dangerrating = targetinfo.difficulty
|
||||
explanation_text = "Steal [targetinfo.name]"
|
||||
give_special_equipment(targetinfo.special_equipment)
|
||||
return steal_target
|
||||
else
|
||||
@@ -525,7 +514,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
return set_target(pick(GLOB.possible_items_special))
|
||||
|
||||
/datum/objective/steal/exchange
|
||||
dangerrating = 10
|
||||
martyr_compatible = 0
|
||||
|
||||
/datum/objective/steal/exchange/proc/set_faction(faction,otheragent)
|
||||
@@ -547,7 +535,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
|
||||
|
||||
/datum/objective/steal/exchange/backstab
|
||||
dangerrating = 3
|
||||
|
||||
/datum/objective/steal/exchange/backstab/set_faction(faction)
|
||||
if(faction == "red")
|
||||
@@ -559,7 +546,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
|
||||
|
||||
/datum/objective/download
|
||||
dangerrating = 10
|
||||
|
||||
/datum/objective/download/proc/gen_amount_goal()
|
||||
target_amount = rand(10,20)
|
||||
@@ -595,7 +581,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
|
||||
|
||||
/datum/objective/capture
|
||||
dangerrating = 10
|
||||
|
||||
/datum/objective/capture/proc/gen_amount_goal()
|
||||
target_amount = rand(5,10)
|
||||
@@ -604,7 +589,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
|
||||
/datum/objective/capture/check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
|
||||
var/captured_amount = 0
|
||||
var/area/centcom/holding/A = locate()
|
||||
var/area/centcom/holding/A = locate() in GLOB.sortedAreas
|
||||
for(var/mob/living/carbon/human/M in A)//Humans.
|
||||
if(M.stat==2)//Dead folks are worth less.
|
||||
captured_amount+=0.5
|
||||
@@ -635,7 +620,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
|
||||
|
||||
/datum/objective/absorb
|
||||
dangerrating = 10
|
||||
|
||||
/datum/objective/absorb/proc/gen_amount_goal(lowbound = 4, highbound = 6)
|
||||
target_amount = rand (lowbound,highbound)
|
||||
@@ -663,7 +647,6 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
|
||||
|
||||
/datum/objective/destroy
|
||||
dangerrating = 10
|
||||
martyr_compatible = 1
|
||||
|
||||
/datum/objective/destroy/find_target()
|
||||
|
||||
@@ -12,72 +12,72 @@
|
||||
return 1
|
||||
|
||||
/datum/objective_item/steal/caplaser
|
||||
name = "the captain's antique laser gun"
|
||||
name = "the captain's antique laser gun."
|
||||
targetitem = /obj/item/weapon/gun/energy/laser/captain
|
||||
difficulty = 5
|
||||
excludefromjob = list("Captain")
|
||||
|
||||
/datum/objective_item/steal/hoslaser
|
||||
name = "the head of security's personal laser gun"
|
||||
name = "the head of security's personal laser gun."
|
||||
targetitem = /obj/item/weapon/gun/energy/e_gun/hos
|
||||
difficulty = 10
|
||||
excludefromjob = list("Head Of Security")
|
||||
|
||||
/datum/objective_item/steal/handtele
|
||||
name = "a hand teleporter"
|
||||
name = "a hand teleporter."
|
||||
targetitem = /obj/item/weapon/hand_tele
|
||||
difficulty = 5
|
||||
excludefromjob = list("Captain")
|
||||
|
||||
/datum/objective_item/steal/jetpack
|
||||
name = "the Captain's jetpack"
|
||||
name = "the Captain's jetpack."
|
||||
targetitem = /obj/item/weapon/tank/jetpack/oxygen/captain
|
||||
difficulty = 5
|
||||
excludefromjob = list("Captain")
|
||||
|
||||
/datum/objective_item/steal/magboots
|
||||
name = "the chief engineer's advanced magnetic boots"
|
||||
name = "the chief engineer's advanced magnetic boots."
|
||||
targetitem = /obj/item/clothing/shoes/magboots/advance
|
||||
difficulty = 5
|
||||
excludefromjob = list("Chief Engineer")
|
||||
|
||||
/datum/objective_item/steal/capmedal
|
||||
name = "the medal of captaincy"
|
||||
name = "the medal of captaincy."
|
||||
targetitem = /obj/item/clothing/accessory/medal/gold/captain
|
||||
difficulty = 5
|
||||
excludefromjob = list("Captain")
|
||||
|
||||
/datum/objective_item/steal/hypo
|
||||
name = "the hypospray"
|
||||
name = "the hypospray."
|
||||
targetitem = /obj/item/weapon/reagent_containers/hypospray/CMO
|
||||
difficulty = 5
|
||||
excludefromjob = list("Chief Medical Officer")
|
||||
|
||||
/datum/objective_item/steal/nukedisc
|
||||
name = "the nuclear authentication disk"
|
||||
name = "the nuclear authentication disk."
|
||||
targetitem = /obj/item/weapon/disk/nuclear
|
||||
difficulty = 5
|
||||
excludefromjob = list("Captain")
|
||||
|
||||
/datum/objective_item/steal/reflector
|
||||
name = "a reflector vest"
|
||||
name = "a reflector vest."
|
||||
targetitem = /obj/item/clothing/suit/armor/laserproof
|
||||
difficulty = 3
|
||||
excludefromjob = list("Head of Security", "Warden")
|
||||
|
||||
/datum/objective_item/steal/reactive
|
||||
name = "the reactive teleport armor"
|
||||
name = "the reactive teleport armor."
|
||||
targetitem = /obj/item/clothing/suit/armor/reactive
|
||||
difficulty = 5
|
||||
excludefromjob = list("Research Director")
|
||||
|
||||
/datum/objective_item/steal/documents
|
||||
name = "any set of secret documents of any organization"
|
||||
name = "any set of secret documents of any organization."
|
||||
targetitem = /obj/item/documents //Any set of secret documents. Doesn't have to be NT's
|
||||
difficulty = 5
|
||||
|
||||
/datum/objective_item/steal/nuke_core
|
||||
name = "the heavily radioactive plutonium core from the onboard self-destruct. Take care to wear the proper safety equipment when extracting the core"
|
||||
name = "the heavily radioactive plutonium core from the onboard self-destruct. Take care to wear the proper safety equipment when extracting the core!"
|
||||
targetitem = /obj/item/nuke_core
|
||||
difficulty = 15
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
|
||||
//Items with special checks!
|
||||
/datum/objective_item/steal/plasma
|
||||
name = "28 moles of plasma (full tank)"
|
||||
name = "28 moles of plasma (full tank)."
|
||||
targetitem = /obj/item/weapon/tank
|
||||
difficulty = 3
|
||||
excludefromjob = list("Chief Engineer","Research Director","Station Engineer","Scientist","Atmospheric Technician")
|
||||
@@ -109,7 +109,7 @@
|
||||
|
||||
|
||||
/datum/objective_item/steal/functionalai
|
||||
name = "a functional AI"
|
||||
name = "a functional AI."
|
||||
targetitem = /obj/item/device/aicard
|
||||
difficulty = 20 //beyond the impossible
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
return 0
|
||||
|
||||
/datum/objective_item/steal/blueprints
|
||||
name = "the station blueprints"
|
||||
name = "the station blueprints."
|
||||
targetitem = /obj/item/areaeditor/blueprints
|
||||
difficulty = 10
|
||||
excludefromjob = list("Chief Engineer")
|
||||
@@ -136,7 +136,7 @@
|
||||
return 0
|
||||
|
||||
/datum/objective_item/steal/slime
|
||||
name = "an unused sample of slime extract"
|
||||
name = "an unused sample of slime extract."
|
||||
targetitem = /obj/item/slime_extract
|
||||
difficulty = 3
|
||||
excludefromjob = list("Research Director","Scientist")
|
||||
@@ -148,54 +148,54 @@
|
||||
|
||||
//Unique Objectives
|
||||
/datum/objective_item/unique/docs_red
|
||||
name = "the \"Red\" secret documents"
|
||||
name = "the \"Red\" secret documents."
|
||||
targetitem = /obj/item/documents/syndicate/red
|
||||
difficulty = 10
|
||||
|
||||
/datum/objective_item/unique/docs_blue
|
||||
name = "the \"Blue\" secret documents"
|
||||
name = "the \"Blue\" secret documents."
|
||||
targetitem = /obj/item/documents/syndicate/blue
|
||||
difficulty = 10
|
||||
|
||||
//Old ninja objectives.
|
||||
/datum/objective_item/special/pinpointer
|
||||
name = "the captain's pinpointer"
|
||||
name = "the captain's pinpointer."
|
||||
targetitem = /obj/item/weapon/pinpointer
|
||||
difficulty = 10
|
||||
|
||||
/datum/objective_item/special/aegun
|
||||
name = "an advanced energy gun"
|
||||
name = "an advanced energy gun."
|
||||
targetitem = /obj/item/weapon/gun/energy/e_gun/nuclear
|
||||
difficulty = 10
|
||||
|
||||
/datum/objective_item/special/ddrill
|
||||
name = "a diamond drill"
|
||||
name = "a diamond drill."
|
||||
targetitem = /obj/item/weapon/pickaxe/drill/diamonddrill
|
||||
difficulty = 10
|
||||
|
||||
/datum/objective_item/special/boh
|
||||
name = "a bag of holding"
|
||||
name = "a bag of holding."
|
||||
targetitem = /obj/item/weapon/storage/backpack/holding
|
||||
difficulty = 10
|
||||
|
||||
/datum/objective_item/special/hypercell
|
||||
name = "a hyper-capacity cell"
|
||||
name = "a hyper-capacity power cell."
|
||||
targetitem = /obj/item/weapon/stock_parts/cell/hyper
|
||||
difficulty = 5
|
||||
|
||||
/datum/objective_item/special/laserpointer
|
||||
name = "a laser pointer"
|
||||
name = "a laser pointer."
|
||||
targetitem = /obj/item/device/laser_pointer
|
||||
difficulty = 5
|
||||
|
||||
/datum/objective_item/special/corgimeat
|
||||
name = "a piece of corgi meat"
|
||||
name = "a piece of corgi meat."
|
||||
targetitem = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi
|
||||
difficulty = 5
|
||||
|
||||
//Stack objectives get their own subtype
|
||||
/datum/objective_item/stack
|
||||
name = "5 cardboards"
|
||||
name = "5 cardboard."
|
||||
targetitem = /obj/item/stack/sheet/cardboard
|
||||
difficulty = 9001
|
||||
|
||||
@@ -208,16 +208,16 @@
|
||||
return found_amount>=target_amount
|
||||
|
||||
/datum/objective_item/stack/diamond
|
||||
name = "10 diamonds"
|
||||
name = "10 diamonds."
|
||||
targetitem = /obj/item/stack/sheet/mineral/diamond
|
||||
difficulty = 10
|
||||
|
||||
/datum/objective_item/stack/gold
|
||||
name = "50 gold bars"
|
||||
name = "50 gold bars."
|
||||
targetitem = /obj/item/stack/sheet/mineral/gold
|
||||
difficulty = 15
|
||||
|
||||
/datum/objective_item/stack/uranium
|
||||
name = "25 refined uranium bars"
|
||||
name = "25 refined uranium bars."
|
||||
targetitem = /obj/item/stack/sheet/mineral/uranium
|
||||
difficulty = 10
|
||||
|
||||
@@ -360,7 +360,7 @@
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_revolution()
|
||||
var/list/targets = list()
|
||||
if(head_revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution))
|
||||
if(head_revolutionaries.len || istype(SSticker.mode, /datum/game_mode/revolution))
|
||||
var/num_revs = 0
|
||||
var/num_survivors = 0
|
||||
for(var/mob/living/carbon/survivor in GLOB.living_mob_list)
|
||||
@@ -377,14 +377,14 @@
|
||||
text += "<br>"
|
||||
to_chat(world, text)
|
||||
|
||||
if(revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution))
|
||||
if(revolutionaries.len || istype(SSticker.mode, /datum/game_mode/revolution))
|
||||
var/text = "<br><font size=3><b>The revolutionaries were:</b></font>"
|
||||
for(var/datum/mind/rev in revolutionaries)
|
||||
text += printplayer(rev, 1)
|
||||
text += "<br>"
|
||||
to_chat(world, text)
|
||||
|
||||
if( head_revolutionaries.len || revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution) )
|
||||
if( head_revolutionaries.len || revolutionaries.len || istype(SSticker.mode, /datum/game_mode/revolution) )
|
||||
var/text = "<br><font size=3><b>The heads of staff were:</b></font>"
|
||||
var/list/heads = get_all_heads()
|
||||
for(var/datum/mind/head in heads)
|
||||
|
||||
@@ -27,9 +27,9 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
|
||||
//items that shouldn't spawn on the floor because they would bug or act weird
|
||||
var/global/list/spawn_forbidden = list(
|
||||
/obj/item/tk_grab, /obj/item/weapon/implant, // not implanter, the actual thing that is inside you
|
||||
/obj/item/assembly,/obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai,
|
||||
/obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai,
|
||||
/obj/item/device/uplink, /obj/item/smallDelivery, /obj/item/projectile,
|
||||
/obj/item/borg/sight,/obj/item/borg/stun,/obj/item/weapon/robot_module)
|
||||
/obj/item/borg/sight, /obj/item/borg/stun, /obj/item/weapon/robot_module)
|
||||
|
||||
/datum/hSB/proc/update()
|
||||
var/global/list/hrefs = list(
|
||||
|
||||
@@ -71,9 +71,9 @@
|
||||
|
||||
/datum/game_mode/traitor/make_antag_chance(mob/living/carbon/human/character) //Assigns traitor to latejoiners
|
||||
var/traitorcap = min(round(GLOB.joined_player_list.len / (config.traitor_scaling_coeff * 2)) + 2 + num_modifier, round(GLOB.joined_player_list.len/config.traitor_scaling_coeff) + num_modifier )
|
||||
if(SSticker.mode.traitors.len >= traitorcap) //Upper cap for number of latejoin antagonists
|
||||
if((SSticker.mode.traitors.len + pre_traitors.len) >= traitorcap) //Upper cap for number of latejoin antagonists
|
||||
return
|
||||
if(SSticker.mode.traitors.len <= (traitorcap - 2) || prob(100 / (config.traitor_scaling_coeff * 2)))
|
||||
if((SSticker.mode.traitors.len + pre_traitors.len) <= (traitorcap - 2) || prob(100 / (config.traitor_scaling_coeff * 2)))
|
||||
if(ROLE_TRAITOR in character.client.prefs.be_special)
|
||||
if(!jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, "Syndicate"))
|
||||
if(age_check(character.client))
|
||||
|
||||
@@ -437,7 +437,7 @@
|
||||
|
||||
var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id
|
||||
W.icon_state = "centcom"
|
||||
W.access += GLOB.access_maint_tunnels
|
||||
W.access += ACCESS_MAINT_TUNNELS
|
||||
W.assignment = "Multiverse Traveller"
|
||||
W.registered_name = M.real_name
|
||||
W.update_label(M.real_name)
|
||||
@@ -468,7 +468,7 @@
|
||||
to_chat(target, "<span class='userdanger'>You feel a stabbing pain in [parse_zone(user.zone_selected)]!</span>")
|
||||
target.Knockdown(40)
|
||||
GiveHint(target)
|
||||
else if(istype(I,/obj/item/weapon/bikehorn))
|
||||
else if(istype(I, /obj/item/weapon/bikehorn))
|
||||
to_chat(target, "<span class='userdanger'>HONK</span>")
|
||||
target << 'sound/items/airhorn.ogg'
|
||||
target.adjustEarDamage(0,3)
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
return 0
|
||||
|
||||
/datum/spellbook_entry/proc/Refund(mob/living/carbon/human/user,obj/item/weapon/spellbook/book) //return point value or -1 for failure
|
||||
var/area/wizard_station/A = locate()
|
||||
var/area/wizard_station/A = locate() in GLOB.sortedAreas
|
||||
if(!(user in A.contents))
|
||||
to_chat(user, "<span class='warning'>You can only refund spells at the wizard lair</span>")
|
||||
return -1
|
||||
@@ -899,7 +899,7 @@
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/random/Initialize()
|
||||
..()
|
||||
var/static/banned_spells = list(/obj/item/weapon/spellbook/oneuse/mimery_blockade,/obj/item/weapon/spellbook/oneuse/mimery_guns)
|
||||
var/static/banned_spells = list(/obj/item/weapon/spellbook/oneuse/mimery_blockade, /obj/item/weapon/spellbook/oneuse/mimery_guns)
|
||||
var/real_type = pick(subtypesof(/obj/item/weapon/spellbook/oneuse) - banned_spells)
|
||||
new real_type(loc)
|
||||
qdel(src)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/uses = 20
|
||||
var/cooldown = 0
|
||||
var/cooldown_time = 100
|
||||
req_access = list(GLOB.access_ai_upload)
|
||||
req_access = list(ACCESS_AI_UPLOAD)
|
||||
|
||||
/obj/machinery/ai_slipper/examine(mob/user)
|
||||
..()
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
/obj/machinery/aug_manipulator
|
||||
name = "\improper augment manipulator"
|
||||
desc = "A machine for custom fitting augmentations, with in-built spraypainter."
|
||||
icon = 'icons/obj/pda.dmi'
|
||||
icon_state = "pdapainter"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
obj_integrity = 200
|
||||
max_integrity = 200
|
||||
var/obj/item/bodypart/storedpart
|
||||
var/initial_icon_state
|
||||
var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi')
|
||||
|
||||
|
||||
/obj/machinery/aug_manipulator/Initialize()
|
||||
initial_icon_state = initial(icon_state)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/aug_manipulator/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
if(stat & BROKEN)
|
||||
icon_state = "[initial_icon_state]-broken"
|
||||
return
|
||||
|
||||
if(storedpart)
|
||||
add_overlay("[initial_icon_state]-closed")
|
||||
|
||||
if(powered())
|
||||
icon_state = initial_icon_state
|
||||
else
|
||||
icon_state = "[initial_icon_state]-off"
|
||||
|
||||
/obj/machinery/aug_manipulator/Destroy()
|
||||
QDEL_NULL(storedpart)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/aug_manipulator/on_deconstruction()
|
||||
if(storedpart)
|
||||
storedpart.forceMove(loc)
|
||||
storedpart = null
|
||||
|
||||
/obj/machinery/aug_manipulator/contents_explosion(severity, target)
|
||||
if(storedpart)
|
||||
storedpart.ex_act(severity, target)
|
||||
|
||||
/obj/machinery/aug_manipulator/handle_atom_del(atom/A)
|
||||
if(A == storedpart)
|
||||
storedpart = null
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/aug_manipulator/attackby(obj/item/O, mob/user, params)
|
||||
if(default_unfasten_wrench(user, O))
|
||||
power_change()
|
||||
return
|
||||
|
||||
else if(istype(O, /obj/item/bodypart))
|
||||
var/obj/item/bodypart/B = O
|
||||
if(B.status != BODYPART_ROBOTIC)
|
||||
to_chat(user, "<span class='warning'>The machine only accepts cybernetics!</span>")
|
||||
return
|
||||
if(storedpart)
|
||||
to_chat(user, "<span class='warning'>There is already something inside!</span>")
|
||||
return
|
||||
else
|
||||
O = user.get_active_held_item()
|
||||
if(!user.transferItemToLoc(O, src))
|
||||
return
|
||||
storedpart = O
|
||||
O.add_fingerprint(user)
|
||||
update_icon()
|
||||
|
||||
else if(istype(O, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM)
|
||||
var/obj/item/weapon/weldingtool/WT = O
|
||||
if(obj_integrity < max_integrity)
|
||||
if(WT.remove_fuel(0,user))
|
||||
user.visible_message("[user] begins repairing [src].", \
|
||||
"<span class='notice'>You begin repairing [src]...</span>", \
|
||||
"<span class='italics'>You hear welding.</span>")
|
||||
playsound(src, WT.usesound, 40, 1)
|
||||
if(do_after(user,40*WT.toolspeed, TRUE, target = src))
|
||||
if(!WT.isOn() || !(stat & BROKEN))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You repair [src].</span>")
|
||||
playsound(src, 'sound/items/welder2.ogg', 50, 1)
|
||||
stat &= ~BROKEN
|
||||
obj_integrity = max(obj_integrity, max_integrity)
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] does not need repairs.</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/aug_manipulator/obj_break(damage_flag)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
if(!(stat & BROKEN))
|
||||
stat |= BROKEN
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/aug_manipulator/attack_hand(mob/user)
|
||||
if(!..())
|
||||
add_fingerprint(user)
|
||||
|
||||
if(storedpart)
|
||||
var/augstyle = input(user, "Select style.", "Augment Custom Fitting") as null|anything in style_list_icons
|
||||
if(!augstyle)
|
||||
return
|
||||
if(!in_range(src, user))
|
||||
return
|
||||
if(!storedpart)
|
||||
return
|
||||
storedpart.icon = style_list_icons[augstyle]
|
||||
eject_part(user)
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] is empty.</span>")
|
||||
|
||||
/obj/machinery/aug_manipulator/proc/eject_part(mob/living/user)
|
||||
if(storedpart)
|
||||
storedpart.forceMove(get_turf(src))
|
||||
storedpart = null
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] is empty.</span>")
|
||||
|
||||
/obj/machinery/aug_manipulator/AltClick(mob/living/user)
|
||||
..()
|
||||
if(!user.canUseTopic(src))
|
||||
return
|
||||
else
|
||||
eject_part(user)
|
||||
|
||||
/obj/machinery/aug_manipulator/power_change()
|
||||
..()
|
||||
update_icon()
|
||||
@@ -152,7 +152,7 @@
|
||||
busy = TRUE
|
||||
var/inserted = materials.insert_item(O)
|
||||
if(inserted)
|
||||
if(istype(O,/obj/item/stack))
|
||||
if(istype(O, /obj/item/stack))
|
||||
if (O.materials[MAT_METAL])
|
||||
flick("autolathe_o",src)//plays metal insertion animation
|
||||
if (O.materials[MAT_GLASS])
|
||||
@@ -361,7 +361,7 @@
|
||||
if(D.make_reagents.len)
|
||||
return 0
|
||||
|
||||
var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : prod_coeff)
|
||||
var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff)
|
||||
|
||||
if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount)))
|
||||
return 0
|
||||
@@ -370,7 +370,7 @@
|
||||
return 1
|
||||
|
||||
/obj/machinery/autolathe/proc/get_design_cost(datum/design/D)
|
||||
var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : prod_coeff)
|
||||
var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff)
|
||||
var/dat
|
||||
if(D.materials[MAT_METAL])
|
||||
dat += "[D.materials[MAT_METAL] * coeff] metal "
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
density = TRUE
|
||||
icon = 'icons/obj/cloning.dmi'
|
||||
icon_state = "pod_0"
|
||||
req_access = list(GLOB.access_cloning) //For premature unlocking.
|
||||
req_access = list(ACCESS_CLONING) //FOR PREMATURE UNLOCKING.
|
||||
verb_say = "states"
|
||||
var/heal_level //The clone is released once its health reaches this level.
|
||||
var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine.
|
||||
@@ -152,7 +152,7 @@
|
||||
return FALSE
|
||||
if(mess || attempting)
|
||||
return FALSE
|
||||
clonemind = locate(mindref)
|
||||
clonemind = locate(mindref) in SSticker.minds
|
||||
if(!istype(clonemind)) //not a mind
|
||||
return FALSE
|
||||
if( clonemind.current && clonemind.current.stat != DEAD ) //mind is associated with a non-dead body
|
||||
@@ -304,7 +304,7 @@
|
||||
if(default_deconstruction_crowbar(W))
|
||||
return
|
||||
|
||||
if(istype(W,/obj/item/device/multitool))
|
||||
if(istype(W, /obj/item/device/multitool))
|
||||
var/obj/item/device/multitool/P = W
|
||||
|
||||
if(istype(P.buffer, /obj/machinery/computer/cloning))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/machinery/computer/aifixer
|
||||
name = "\improper AI system integrity restorer"
|
||||
desc = "Used with intelliCards containing nonfunctioning AIs to restore them to working order."
|
||||
req_access = list(GLOB.access_captain, GLOB.access_robotics, GLOB.access_heads)
|
||||
req_access = list(ACCESS_CAPTAIN, ACCESS_ROBOTICS, ACCESS_HEADS)
|
||||
var/mob/living/silicon/ai/occupier = null
|
||||
var/active = 0
|
||||
circuit = /obj/item/weapon/circuitboard/computer/aifixer
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Used to remotely control the flow of power to different parts of the station."
|
||||
icon_screen = "solar"
|
||||
icon_keyboard = "power_key"
|
||||
req_access = list(GLOB.access_engine)
|
||||
req_access = list(ACCESS_ENGINE)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/apc_control
|
||||
light_color = LIGHT_COLOR_YELLOW
|
||||
var/list/apcs //APCs the computer has access to
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
build_path = /obj/machinery/computer/rdconsole/core
|
||||
|
||||
/obj/item/weapon/circuitboard/computer/rdconsole/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I,/obj/item/weapon/screwdriver))
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(build_path == /obj/machinery/computer/rdconsole/core)
|
||||
name = "R&D Console - Robotics (Computer Board)"
|
||||
build_path = /obj/machinery/computer/rdconsole/robotics
|
||||
@@ -343,13 +343,13 @@
|
||||
var/emagged = FALSE
|
||||
|
||||
/obj/item/weapon/circuitboard/computer/cargo/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I,/obj/item/device/multitool))
|
||||
if(istype(I, /obj/item/device/multitool))
|
||||
if(!emagged)
|
||||
contraband = !contraband
|
||||
to_chat(user, "<span class='notice'>Receiver spectrum set to [contraband ? "Broad" : "Standard"].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The spectrum chip is unresponsive.</span>")
|
||||
else if(istype(I,/obj/item/weapon/card/emag))
|
||||
else if(istype(I, /obj/item/weapon/card/emag))
|
||||
if(!emagged)
|
||||
contraband = TRUE
|
||||
emagged = TRUE
|
||||
@@ -441,7 +441,7 @@
|
||||
origin_tech = "programming=1"
|
||||
|
||||
/obj/item/weapon/circuitboard/computer/libraryconsole/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I,/obj/item/weapon/screwdriver))
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement)
|
||||
name = "Library Visitor Console (Computer Board)"
|
||||
build_path = /obj/machinery/computer/libraryconsole
|
||||
|
||||
@@ -9,7 +9,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
desc = "You can use this to manage jobs and ID access."
|
||||
icon_screen = "id"
|
||||
icon_keyboard = "id_key"
|
||||
req_one_access = list(GLOB.access_heads, GLOB.access_change_ids)
|
||||
req_one_access = list(ACCESS_HEADS, ACCESS_CHANGE_IDS)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/card
|
||||
var/obj/item/weapon/card/id/scan = null
|
||||
var/obj/item/weapon/card/id/modify = null
|
||||
@@ -158,7 +158,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
dat += "<table>"
|
||||
dat += "<tr><td style='width:25%'><b>Job</b></td><td style='width:25%'><b>Slots</b></td><td style='width:25%'><b>Open job</b></td><td style='width:25%'><b>Close job</b><td style='width:25%'><b>Prioritize</b></td></td></tr>"
|
||||
var/ID
|
||||
if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
|
||||
if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept)
|
||||
ID = 1
|
||||
else
|
||||
ID = 0
|
||||
@@ -258,7 +258,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
|
||||
var/jobs_all = ""
|
||||
var/list/alljobs = list("Unassigned")
|
||||
alljobs += (istype(src,/obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom"
|
||||
alljobs += (istype(src, /obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom"
|
||||
for(var/job in alljobs)
|
||||
jobs_all += "<a href='?src=\ref[src];choice=assign;assign_target=[job]'>[replacetext(job, " ", " ")]</a> " //make sure there isn't a line break in the middle of a job
|
||||
|
||||
@@ -303,7 +303,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
jobs += "<b>Assignment:</b> [target_rank] (<a href='?src=\ref[src];choice=demote'>Demote</a>)</span>"
|
||||
|
||||
var/accesses = ""
|
||||
if(istype(src,/obj/machinery/computer/card/centcom))
|
||||
if(istype(src, /obj/machinery/computer/card/centcom))
|
||||
accesses += "<h5>Central Command:</h5>"
|
||||
for(var/A in get_all_centcom_access())
|
||||
if(A in modify.access)
|
||||
@@ -392,7 +392,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
if (check_access(scan))
|
||||
region_access = list()
|
||||
head_subordinates = list()
|
||||
if(GLOB.access_change_ids in scan.access)
|
||||
if(ACCESS_CHANGE_IDS in scan.access)
|
||||
if(target_dept)
|
||||
head_subordinates = get_all_jobs()
|
||||
region_access |= target_dept
|
||||
@@ -402,20 +402,20 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
playsound(src, 'sound/machines/terminal_on.ogg', 50, 0)
|
||||
|
||||
else
|
||||
if((GLOB.access_hop in scan.access) && ((target_dept==1) || !target_dept))
|
||||
if((ACCESS_HOP in scan.access) && ((target_dept==1) || !target_dept))
|
||||
region_access |= 1
|
||||
region_access |= 6
|
||||
get_subordinates("Head of Personnel")
|
||||
if((GLOB.access_hos in scan.access) && ((target_dept==2) || !target_dept))
|
||||
if((ACCESS_HOS in scan.access) && ((target_dept==2) || !target_dept))
|
||||
region_access |= 2
|
||||
get_subordinates("Head of Security")
|
||||
if((GLOB.access_cmo in scan.access) && ((target_dept==3) || !target_dept))
|
||||
if((ACCESS_CMO in scan.access) && ((target_dept==3) || !target_dept))
|
||||
region_access |= 3
|
||||
get_subordinates("Chief Medical Officer")
|
||||
if((GLOB.access_rd in scan.access) && ((target_dept==4) || !target_dept))
|
||||
if((ACCESS_RD in scan.access) && ((target_dept==4) || !target_dept))
|
||||
region_access |= 4
|
||||
get_subordinates("Research Director")
|
||||
if((GLOB.access_ce in scan.access) && ((target_dept==5) || !target_dept))
|
||||
if((ACCESS_CE in scan.access) && ((target_dept==5) || !target_dept))
|
||||
region_access |= 5
|
||||
get_subordinates("Chief Engineer")
|
||||
if(region_access)
|
||||
@@ -433,7 +433,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
if(authenticated)
|
||||
var/access_type = text2num(href_list["access_target"])
|
||||
var/access_allowed = text2num(href_list["allowed"])
|
||||
if(access_type in (istype(src,/obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses()))
|
||||
if(access_type in (istype(src, /obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses()))
|
||||
modify.access -= access_type
|
||||
if(access_allowed == 1)
|
||||
modify.access += access_type
|
||||
@@ -460,7 +460,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
to_chat(usr, "<span class='error'>No log exists for this job.</span>")
|
||||
return
|
||||
|
||||
modify.access = ( istype(src,/obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : jobdatum.get_access() )
|
||||
modify.access = ( istype(src, /obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : jobdatum.get_access() )
|
||||
if (modify)
|
||||
modify.assignment = t1
|
||||
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
|
||||
@@ -492,7 +492,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
|
||||
if("make_job_available")
|
||||
// MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS
|
||||
if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
|
||||
if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept)
|
||||
var/edit_job_target = href_list["job"]
|
||||
var/datum/job/j = SSjob.GetJob(edit_job_target)
|
||||
if(!j)
|
||||
@@ -507,7 +507,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
|
||||
if("make_job_unavailable")
|
||||
// MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS
|
||||
if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
|
||||
if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept)
|
||||
var/edit_job_target = href_list["job"]
|
||||
var/datum/job/j = SSjob.GetJob(edit_job_target)
|
||||
if(!j)
|
||||
@@ -523,7 +523,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
|
||||
if ("prioritize_job")
|
||||
// TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY
|
||||
if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
|
||||
if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept)
|
||||
var/priority_target = href_list["job"]
|
||||
var/datum/job/j = SSjob.GetJob(priority_target)
|
||||
if(!j)
|
||||
@@ -564,7 +564,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
/obj/machinery/computer/card/centcom
|
||||
name = "\improper Centcom identification console"
|
||||
circuit = /obj/item/weapon/circuitboard/computer/card/centcom
|
||||
req_access = list(GLOB.access_cent_captain)
|
||||
req_access = list(ACCESS_CENT_CAPTAIN)
|
||||
|
||||
/obj/machinery/computer/card/minor
|
||||
name = "department management console"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_screen = "dna"
|
||||
icon_keyboard = "med_key"
|
||||
circuit = /obj/item/weapon/circuitboard/computer/cloning
|
||||
req_access = list(GLOB.access_heads) //Only used for record deletion right now.
|
||||
req_access = list(ACCESS_HEADS) //ONLY USED FOR RECORD DELETION RIGHT NOW.
|
||||
var/obj/machinery/dna_scannernew/scanner = null //Linked scanner. For scanning.
|
||||
var/list/pods //Linked cloning pods
|
||||
var/temp = "Inactive"
|
||||
@@ -124,7 +124,7 @@
|
||||
to_chat(user, "<span class='notice'>You insert [W].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
|
||||
src.updateUsrDialog()
|
||||
else if(istype(W,/obj/item/device/multitool))
|
||||
else if(istype(W, /obj/item/device/multitool))
|
||||
var/obj/item/device/multitool/P = W
|
||||
|
||||
if(istype(P.buffer, /obj/machinery/clonepod))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
desc = "A console used for high-priority announcements and emergencies."
|
||||
icon_screen = "comm"
|
||||
icon_keyboard = "tech_key"
|
||||
req_access = list(GLOB.access_heads)
|
||||
req_access = list(ACCESS_HEADS)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/communications
|
||||
var/authenticated = 0
|
||||
var/auth_id = "Unknown" //Who is currently logged in?
|
||||
@@ -101,7 +101,7 @@
|
||||
var/obj/item/device/pda/pda = I
|
||||
I = pda.id
|
||||
if (I && istype(I))
|
||||
if(GLOB.access_captain in I.access)
|
||||
if(ACCESS_CAPTAIN in I.access)
|
||||
var/old_level = GLOB.security_level
|
||||
if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN
|
||||
if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
desc = "Used to send criminals to the Labor Camp"
|
||||
icon_screen = "explosive"
|
||||
icon_keyboard = "security_key"
|
||||
req_access = list(GLOB.access_armory)
|
||||
req_access = list(ACCESS_ARMORY)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/gulag_teleporter_console
|
||||
var/default_goal = 200
|
||||
var/obj/item/weapon/card/id/prisoner/id = null
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
desc = "This can be used to check medical records."
|
||||
icon_screen = "medcomp"
|
||||
icon_keyboard = "med_key"
|
||||
req_one_access = list(GLOB.access_medical, GLOB.access_forensics_lockers)
|
||||
req_one_access = list(ACCESS_MEDICAL, ACCESS_FORENSICS_LOCKERS)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/med_data
|
||||
var/obj/item/weapon/card/id/scan = null
|
||||
var/authenticated = null
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
name = "\improper ProComp Executive IIc"
|
||||
desc = "The Syndicate operate on a tight budget. Operates external airlocks."
|
||||
title = "External Airlock Controls"
|
||||
req_access = list(GLOB.access_syndicate)
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
|
||||
/obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user)
|
||||
if(!allowed(user))
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Used to manage tracking implants placed inside criminals."
|
||||
icon_screen = "explosive"
|
||||
icon_keyboard = "security_key"
|
||||
req_access = list(GLOB.access_brig)
|
||||
req_access = list(ACCESS_BRIG)
|
||||
var/id = 0
|
||||
var/temp = null
|
||||
var/status = 0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
desc = "Used to remotely lockdown or detonate linked Cyborgs."
|
||||
icon_screen = "robot"
|
||||
icon_keyboard = "rd_key"
|
||||
req_access = list(GLOB.access_robotics)
|
||||
req_access = list(ACCESS_ROBOTICS)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/robotics
|
||||
var/temp = null
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
|
||||
else if (href_list["killdrone"])
|
||||
if(src.allowed(usr))
|
||||
var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"])
|
||||
var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"]) in GLOB.mob_list
|
||||
if(D.hacked)
|
||||
to_chat(usr, "<span class='danger'>ERROR: [D] is not responding to external commands.</span>")
|
||||
else
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Used to view and edit personnel's security records."
|
||||
icon_screen = "security"
|
||||
icon_keyboard = "security_key"
|
||||
req_one_access = list(GLOB.access_security, GLOB.access_forensics_lockers)
|
||||
req_one_access = list(ACCESS_SECURITY, ACCESS_FORENSICS_LOCKERS)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/secure_data
|
||||
var/obj/item/weapon/card/id/scan = null
|
||||
var/authenticated = null
|
||||
@@ -576,13 +576,13 @@ What a mess.*/
|
||||
if(istype(active2, /datum/data/record))
|
||||
active2.fields["name"] = t1
|
||||
if("id")
|
||||
if(istype(active2,/datum/data/record) || istype(active1,/datum/data/record))
|
||||
if(istype(active2, /datum/data/record) || istype(active1, /datum/data/record))
|
||||
var/t1 = stripped_input(usr, "Please input id:", "Secure. records", active1.fields["id"], null)
|
||||
if(!canUseSecurityRecordsConsole(usr, t1, a1))
|
||||
return
|
||||
if(istype(active1,/datum/data/record))
|
||||
if(istype(active1, /datum/data/record))
|
||||
active1.fields["id"] = t1
|
||||
if(istype(active2,/datum/data/record))
|
||||
if(istype(active2, /datum/data/record))
|
||||
active2.fields["id"] = t1
|
||||
if("fingerprint")
|
||||
if(istype(active1, /datum/data/record))
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
anchored = FALSE
|
||||
verb_say = "states"
|
||||
density = TRUE
|
||||
req_access = list(GLOB.access_engine)
|
||||
req_access = list(ACCESS_ENGINE)
|
||||
var/active = FALSE
|
||||
var/list/rangers = list()
|
||||
var/charge = 35
|
||||
@@ -456,10 +456,12 @@
|
||||
if(charge<35)
|
||||
charge += 1
|
||||
if(world.time < stop && active)
|
||||
var/sound/song_played = sound(selection.song_path)
|
||||
|
||||
for(var/mob/M in range(10,src))
|
||||
if(!(M in rangers))
|
||||
rangers[M] = TRUE
|
||||
M.playsound_local(get_turf(M), selection.song_path, 100, channel = CHANNEL_JUKEBOX)
|
||||
M.playsound_local(get_turf(M), null, 100, channel = CHANNEL_JUKEBOX, S = song_played)
|
||||
if(prob(5+(allowed(M)*4)) && M.canmove)
|
||||
dance(M)
|
||||
for(var/mob/L in rangers)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/weapon/electronics/airlock
|
||||
name = "airlock electronics"
|
||||
req_access = list(GLOB.access_maint_tunnels)
|
||||
req_access = list(ACCESS_MAINT_TUNNELS)
|
||||
|
||||
var/list/accesses = list()
|
||||
var/one_access = 0
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
icon = 'icons/obj/status_display.dmi'
|
||||
icon_state = "frame"
|
||||
desc = "A remote control for a door."
|
||||
req_access = list(GLOB.access_security)
|
||||
req_access = list(ACCESS_SECURITY)
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
var/id = null // id of linked machinery/lockers
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
playsound(src.loc, 'sound/items/welder.ogg', 100, 1)
|
||||
|
||||
/obj/machinery/door/emp_act(severity)
|
||||
if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) )
|
||||
if(prob(20/severity) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) )
|
||||
INVOKE_ASYNC(src, .proc/open)
|
||||
if(prob(40/severity))
|
||||
if(secondsElectrified == 0)
|
||||
|
||||
@@ -309,6 +309,15 @@
|
||||
reinf = 1
|
||||
explosion_block = 1
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell
|
||||
name = "cell door"
|
||||
desc = "For keeping in criminal scum."
|
||||
req_access = list(ACCESS_BRIG)
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding
|
||||
name = "holding cell door"
|
||||
req_one_access = list(ACCESS_SEC_DOORS, ACCESS_LAWYER) //love for the lawyer
|
||||
|
||||
/obj/machinery/door/window/clockwork
|
||||
name = "brass windoor"
|
||||
desc = "A thin door with translucent brass paneling."
|
||||
@@ -423,3 +432,67 @@
|
||||
dir = SOUTH
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell/northleft
|
||||
dir = NORTH
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell/eastleft
|
||||
dir = EAST
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell/westleft
|
||||
dir = WEST
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell/southleft
|
||||
dir = SOUTH
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell/northright
|
||||
dir = NORTH
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell/eastright
|
||||
dir = EAST
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell/westright
|
||||
dir = WEST
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/cell/southright
|
||||
dir = SOUTH
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding/northleft
|
||||
dir = NORTH
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding/eastleft
|
||||
dir = EAST
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding/westleft
|
||||
dir = WEST
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding/southleft
|
||||
dir = SOUTH
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding/northright
|
||||
dir = NORTH
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding/eastright
|
||||
dir = EAST
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding/westright
|
||||
dir = WEST
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
|
||||
/obj/machinery/door/window/brigdoor/security/holding/southright
|
||||
dir = SOUTH
|
||||
icon_state = "rightsecure"
|
||||
base_state = "rightsecure"
|
||||
@@ -262,39 +262,6 @@
|
||||
name = "\improper PARTY BUTTON"
|
||||
desc = "Cuban Pete is in the house!"
|
||||
|
||||
/obj/machinery/firealarm/partyalarm/attack_hand(mob/user)
|
||||
if((user.stat && !IsAdminGhost(user)) || stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
if (buildstage != 2)
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
var/area/A = src.loc
|
||||
var/d1
|
||||
var/dat
|
||||
if(ishuman(user) || user.has_unlimited_silicon_privilege)
|
||||
A = A.loc
|
||||
|
||||
if (A.party)
|
||||
d1 = text("<A href='?src=\ref[];reset=1'>No Party :(</A>", src)
|
||||
else
|
||||
d1 = text("<A href='?src=\ref[];alarm=1'>PARTY!!!</A>", src)
|
||||
dat = text("<HTML><HEAD></HEAD><BODY><TT><B>Party Button</B> []</BODY></HTML>", d1)
|
||||
|
||||
else
|
||||
A = A.loc
|
||||
if (A.fire)
|
||||
d1 = text("<A href='?src=\ref[];reset=1'>[]</A>", src, stars("No Party :("))
|
||||
else
|
||||
d1 = text("<A href='?src=\ref[];alarm=1'>[]</A>", src, stars("PARTY!!!"))
|
||||
dat = text("<HTML><HEAD></HEAD><BODY><TT><B>[]</B> []", stars("Party Button"), d1)
|
||||
|
||||
var/datum/browser/popup = new(user, "firealarm", "Party Alarm")
|
||||
popup.set_content(dat)
|
||||
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.open()
|
||||
return
|
||||
|
||||
/obj/machinery/firealarm/partyalarm/reset()
|
||||
if (stat & (NOPOWER|BROKEN))
|
||||
@@ -317,3 +284,8 @@
|
||||
for(var/area/RA in A.related)
|
||||
RA.partyalert()
|
||||
return
|
||||
|
||||
/obj/machinery/firealarm/partyalarm/ui_data(mob/user)
|
||||
. = ..()
|
||||
var/area/A = get_area(src)
|
||||
.["alarm"] = A.party
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Used to reclaim your items after you finish your sentence at the labor camp"
|
||||
icon = 'icons/obj/terminals.dmi'
|
||||
icon_state = "dorm_taken"
|
||||
req_access = list(GLOB.access_security) //reqaccess to access all stored items
|
||||
req_access = list(ACCESS_SECURITY) //REQACCESS TO ACCESS ALL STORED ITEMS
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
use_power = IDLE_POWER_USE
|
||||
|
||||
@@ -179,3 +179,4 @@ The console is located at computer/gulag_teleporter.dm
|
||||
desc = "A recieving beacon for bluespace teleportations."
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "light_on-w"
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/list/codes // assoc. list of transponder codes
|
||||
var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value"
|
||||
|
||||
req_access = list(GLOB.access_engine, GLOB.access_robotics)
|
||||
req_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS)
|
||||
|
||||
/obj/machinery/navbeacon/New()
|
||||
..()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
use_power = IDLE_POWER_USE //this turret uses and requires power
|
||||
idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power
|
||||
active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power
|
||||
req_access = list(GLOB.access_security)
|
||||
req_access = list(ACCESS_SECURITY)
|
||||
power_channel = EQUIP //drains power from the EQUIPMENT channel
|
||||
|
||||
var/base_icon_state = "standard"
|
||||
@@ -274,7 +274,7 @@
|
||||
to_chat(user, "<span class='notice'>Controls are now [locked ? "locked" : "unlocked"].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Access denied.</span>")
|
||||
else if(istype(I,/obj/item/device/multitool) && !locked)
|
||||
else if(istype(I, /obj/item/device/multitool) && !locked)
|
||||
var/obj/item/device/multitool/M = I
|
||||
M.buffer = src
|
||||
to_chat(user, "<span class='notice'>You add [src] to multitool buffer.</span>")
|
||||
@@ -553,7 +553,7 @@
|
||||
use_power = NO_POWER_USE
|
||||
has_cover = 0
|
||||
scan_range = 9
|
||||
req_access = list(GLOB.access_syndicate)
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
stun_projectile = /obj/item/projectile/bullet
|
||||
lethal_projectile = /obj/item/projectile/bullet
|
||||
lethal_projectile_sound = 'sound/weapons/gunshot.ogg'
|
||||
@@ -651,7 +651,7 @@
|
||||
var/locked = TRUE
|
||||
var/control_area = null //can be area name, path or nothing.
|
||||
var/ailock = 0 // AI cannot use this
|
||||
req_access = list(GLOB.access_ai_upload)
|
||||
req_access = list(ACCESS_AI_UPLOAD)
|
||||
var/list/obj/machinery/porta_turret/turrets = list()
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
|
||||
@@ -689,9 +689,9 @@
|
||||
/obj/machinery/turretid/attackby(obj/item/I, mob/user, params)
|
||||
if(stat & BROKEN) return
|
||||
|
||||
if (istype(I,/obj/item/device/multitool))
|
||||
if (istype(I, /obj/item/device/multitool))
|
||||
var/obj/item/device/multitool/M = I
|
||||
if(M.buffer && istype(M.buffer,/obj/machinery/porta_turret))
|
||||
if(M.buffer && istype(M.buffer, /obj/machinery/porta_turret))
|
||||
turrets |= M.buffer
|
||||
to_chat(user, "You link \the [M.buffer] with \the [src]")
|
||||
return
|
||||
@@ -862,7 +862,7 @@
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/porta_turret/lasertag
|
||||
req_access = list(GLOB.access_maint_tunnels, GLOB.access_theatre)
|
||||
req_access = list(ACCESS_MAINT_TUNNELS, ACCESS_THEATRE)
|
||||
check_records = 0
|
||||
criminals = 0
|
||||
auth_weapons = 1
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
|
||||
var/obj/machinery/porta_turret/turret
|
||||
//fuck lasertag turrets
|
||||
if(istype(installed_gun,/obj/item/weapon/gun/energy/laser/bluetag) || istype(installed_gun,/obj/item/weapon/gun/energy/laser/redtag))
|
||||
if(istype(installed_gun, /obj/item/weapon/gun/energy/laser/bluetag) || istype(installed_gun, /obj/item/weapon/gun/energy/laser/redtag))
|
||||
turret = new/obj/machinery/porta_turret/lasertag(loc)
|
||||
else
|
||||
turret = new/obj/machinery/porta_turret(loc)
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
updateUsrDialog()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Access denied.</span>")
|
||||
else if(istype(I,/obj/item/device/multitool) && !parent_turret.locked)
|
||||
else if(istype(I, /obj/item/device/multitool) && !parent_turret.locked)
|
||||
var/obj/item/device/multitool/M = I
|
||||
M.buffer = parent_turret
|
||||
to_chat(user, "<span class='notice'>You add [parent_turret] to multitool buffer.</span>")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
idle_power_usage = 4
|
||||
active_power_usage = 250
|
||||
var/obj/item/charging = null
|
||||
var/static/list/allowed_devices = typecacheof(list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/ammo_box/magazine/recharge,/obj/item/device/modular_computer))
|
||||
var/static/list/allowed_devices = typecacheof(list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/ammo_box/magazine/recharge, /obj/item/device/modular_computer))
|
||||
var/recharge_coeff = 1
|
||||
|
||||
/obj/machinery/recharger/Initialize()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 1000
|
||||
req_access = list(GLOB.access_robotics)
|
||||
req_access = list(ACCESS_ROBOTICS)
|
||||
var/recharge_speed
|
||||
var/repairs
|
||||
state_open = TRUE
|
||||
|
||||
@@ -514,7 +514,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
|
||||
msgVerified = "<font color='green'><b>Verified by [ID.registered_name] ([ID.assignment])</b></font>"
|
||||
updateUsrDialog()
|
||||
if(screen == 10)
|
||||
if (GLOB.access_RC_announce in ID.access)
|
||||
if (ACCESS_RC_ANNOUNCE in ID.access)
|
||||
announceAuth = 1
|
||||
else
|
||||
announceAuth = 0
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
opacity = 0
|
||||
anchored = FALSE
|
||||
pressure_resistance = 2*ONE_ATMOSPHERE
|
||||
req_access = list(GLOB.access_engine)
|
||||
req_access = list(ACCESS_ENGINE)
|
||||
max_integrity = 100
|
||||
var/active = FALSE
|
||||
var/list/deployed_shields
|
||||
@@ -209,7 +209,7 @@
|
||||
icon_state = "Shield_Gen"
|
||||
anchored = FALSE
|
||||
density = TRUE
|
||||
req_access = list(GLOB.access_teleporter)
|
||||
req_access = list(ACCESS_TELEPORTER)
|
||||
flags = CONDUCT
|
||||
use_power = NO_POWER_USE
|
||||
max_integrity = 300
|
||||
@@ -224,7 +224,7 @@
|
||||
name = "xenobiology shield wall generator"
|
||||
desc = "A shield generator meant for use in xenobiology."
|
||||
icon_state = "Shield_Gen"
|
||||
req_access = list(GLOB.access_xenobiology)
|
||||
req_access = list(ACCESS_XENOBIOLOGY)
|
||||
|
||||
/obj/machinery/shieldwallgen/Destroy()
|
||||
for(var/d in GLOB.cardinals)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
|
||||
/obj/machinery/power/singularity_beacon/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W,/obj/item/weapon/screwdriver))
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(active)
|
||||
to_chat(user, "<span class='warning'>You need to deactivate the beacon first!</span>")
|
||||
return
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
message_admins(adminlog)
|
||||
log_game(adminlog)
|
||||
explosion(get_turf(src), range_heavy, range_medium, range_light, flame_range = range_flame)
|
||||
if(loc && istype(loc,/obj/machinery/syndicatebomb/))
|
||||
if(loc && istype(loc, /obj/machinery/syndicatebomb/))
|
||||
qdel(loc)
|
||||
qdel(src)
|
||||
|
||||
@@ -394,11 +394,11 @@
|
||||
|
||||
/obj/item/weapon/bombcore/chemical
|
||||
name = "chemical payload"
|
||||
desc = "An explosive payload designed to spread chemicals, dangerous or otherwise, across a large area. It is able to hold up to four chemical containers, and must be loaded before use."
|
||||
desc = "An explosive payload designed to spread chemicals, dangerous or otherwise, across a large area. Properties of the core may vary with grenade casing type, and must be loaded before use."
|
||||
origin_tech = "combat=4;materials=3"
|
||||
icon_state = "chemcore"
|
||||
var/list/beakers = list()
|
||||
var/max_beakers = 1
|
||||
var/max_beakers = 1 // Read on about grenade casing properties below
|
||||
var/spread_range = 5
|
||||
var/temp_boost = 50
|
||||
var/time_release = 0
|
||||
@@ -411,7 +411,7 @@
|
||||
total_volume += RC.reagents.total_volume
|
||||
|
||||
if(total_volume < time_release) // If it's empty, the detonation is complete.
|
||||
if(loc && istype(loc,/obj/machinery/syndicatebomb/))
|
||||
if(loc && istype(loc, /obj/machinery/syndicatebomb/))
|
||||
qdel(loc)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -451,7 +451,7 @@
|
||||
|
||||
playsound(loc, 'sound/effects/bamf.ogg', 75, 1, 5)
|
||||
|
||||
if(loc && istype(loc,/obj/machinery/syndicatebomb/))
|
||||
if(loc && istype(loc, /obj/machinery/syndicatebomb/))
|
||||
qdel(loc)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
var/universal_translate = 0 // set to 1 if it can translate nonhuman speech
|
||||
|
||||
req_access = list(GLOB.access_tcomsat)
|
||||
req_access = list(ACCESS_TCOMSAT)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/comm_server
|
||||
|
||||
/obj/machinery/computer/telecomms/server/attack_hand(mob/user)
|
||||
|
||||
+116
-118
@@ -29,7 +29,7 @@
|
||||
|
||||
// To be filled out at compile time
|
||||
var/list/products = list() //For each, use the following pattern:
|
||||
var/list/contraband = list() //list(/type/path = amount,/type/path2 = amount2)
|
||||
var/list/contraband = list() //list(/type/path = amount, /type/path2 = amount2)
|
||||
var/list/premium = list() //No specified amount = only one in stock
|
||||
|
||||
var/product_slogans = "" //String of slogans separated by semicolons, optional
|
||||
@@ -456,7 +456,7 @@
|
||||
if(issilicon(usr))
|
||||
if(iscyborg(usr))
|
||||
var/mob/living/silicon/robot/R = usr
|
||||
if(!(R.module && istype(R.module,/obj/item/weapon/robot_module/butler) ))
|
||||
if(!(R.module && istype(R.module, /obj/item/weapon/robot_module/butler) ))
|
||||
to_chat(usr, "<span class='notice'>The vending machine refuses to interface with you, as you are not in its target demographic!</span>")
|
||||
return
|
||||
else
|
||||
@@ -689,19 +689,18 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
|
||||
icon_state = "boozeomat" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles
|
||||
icon_deny = "boozeomat-deny"
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/gin = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua = 5,/obj/item/weapon/reagent_containers/food/drinks/bottle/hcider = 5,
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/gin = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/cognac = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/hcider = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe = 5, /obj/item/weapon/reagent_containers/food/drinks/bottle/grappa = 5,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ale = 6,/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice = 4,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 4,/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 4,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 4,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic = 8,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ale = 6, /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice = 4,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice = 4, /obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice = 4,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/cream = 4, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/tonic = 8,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 8, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/sodawater = 15,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 30,/obj/item/weapon/reagent_containers/food/drinks/ice = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass = 12,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask = 3)
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 30, /obj/item/weapon/reagent_containers/food/drinks/ice = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass = 12, /obj/item/weapon/reagent_containers/food/drinks/flask = 3)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/mug/tea = 12)
|
||||
product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?"
|
||||
product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!"
|
||||
@@ -709,7 +708,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
refill_canister = /obj/item/weapon/vending_refill/boozeomat
|
||||
|
||||
/obj/machinery/vending/assist
|
||||
products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4,
|
||||
products = list( /obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/igniter = 3, /obj/item/device/assembly/signaler = 4,
|
||||
/obj/item/weapon/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4)
|
||||
contraband = list(/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2)
|
||||
product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
|
||||
@@ -722,7 +721,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies"
|
||||
icon_state = "coffee"
|
||||
icon_vend = "coffee-vend"
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25,/obj/item/weapon/reagent_containers/food/drinks/mug/tea = 25,/obj/item/weapon/reagent_containers/food/drinks/mug/coco = 25)
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25, /obj/item/weapon/reagent_containers/food/drinks/mug/tea = 25, /obj/item/weapon/reagent_containers/food/drinks/mug/coco = 25)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/ice = 12)
|
||||
refill_canister = /obj/item/weapon/vending_refill/coffee
|
||||
|
||||
@@ -732,8 +731,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
|
||||
product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
|
||||
icon_state = "snack"
|
||||
products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 6,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 6,/obj/item/weapon/reagent_containers/food/snacks/chips =6,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 6,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 6,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 6,
|
||||
products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 6, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 6, /obj/item/weapon/reagent_containers/food/snacks/chips =6,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 6, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 6, /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 6,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6)
|
||||
refill_canister = /obj/item/weapon/vending_refill/snack
|
||||
@@ -769,8 +768,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_state = "sustenance"
|
||||
products = list(/obj/item/weapon/reagent_containers/food/snacks/tofu = 24,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ice = 12,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy_corn = 6,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/waterbottle = 10)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy_corn = 6)
|
||||
contraband = list(/obj/item/weapon/kitchen/knife = 6,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/coffee = 12,
|
||||
/obj/item/weapon/tank/internals/emergency_oxygen = 6,
|
||||
@@ -784,12 +782,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_state = "Cola_Machine"
|
||||
product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!"
|
||||
product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10,/obj/item/weapon/reagent_containers/glass/beaker/waterbottle = 10)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko = 6,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 6)
|
||||
premium = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola = 1,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/air = 1)
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10, /obj/item/weapon/reagent_containers/glass/beaker/waterbottle = 10)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko = 6, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 6)
|
||||
premium = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola = 1, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/air = 1)
|
||||
refill_canister = /obj/item/weapon/vending_refill/cola
|
||||
|
||||
/obj/machinery/vending/cola/random
|
||||
@@ -839,10 +837,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
name = "\improper Shambler's Vendor"
|
||||
desc = "~Shake me up some of that Shambler's Juice!~"
|
||||
icon_state = "shamblers_juice"
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 10)
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_mountain_wind = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/dr_gibb = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/space_up = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/pwr_game = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime = 10, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/shamblers = 10)
|
||||
product_slogans = "~Shake me up some of that Shambler's Juice!~"
|
||||
product_ads = "Refreshing!;Jyrbv dv lg jfdv fw kyrk Jyrdscvi'j Alztv!;Over 1 trillion souls drank!;Thirsty? Nyp efk uizeb kyv uribevjj?;Kyv Jyrdscvi uizebj kyv ezxyk!;Drink up!;Krjkp."
|
||||
|
||||
@@ -854,9 +852,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_slogans = "Carts to go!"
|
||||
icon_state = "cart"
|
||||
icon_deny = "cart-deny"
|
||||
products = list(/obj/item/weapon/cartridge/medical = 10,/obj/item/weapon/cartridge/engineering = 10,/obj/item/weapon/cartridge/security = 10,
|
||||
/obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/toxins = 10,/obj/item/device/pda/heads = 10,
|
||||
/obj/item/weapon/cartridge/captain = 3,/obj/item/weapon/cartridge/quartermaster = 10)
|
||||
products = list(/obj/item/weapon/cartridge/medical = 10, /obj/item/weapon/cartridge/engineering = 10, /obj/item/weapon/cartridge/security = 10,
|
||||
/obj/item/weapon/cartridge/janitor = 10, /obj/item/weapon/cartridge/signal/toxins = 10, /obj/item/device/pda/heads = 10,
|
||||
/obj/item/weapon/cartridge/captain = 3, /obj/item/weapon/cartridge/quartermaster = 10)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -868,12 +866,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_slogans = "Liberation Station: Your one-stop shop for all things second ammendment!;Be a patriot today, pick up a gun!;Quality weapons for cheap prices!;Better dead than red!"
|
||||
product_ads = "Float like an astronaut, sting like a bullet!;Express your second ammendment today!;Guns don't kill people, but you can!;Who needs responsibilities when you have guns?"
|
||||
vend_reply = "Remember the name: Liberation Station!"
|
||||
products = list(/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/gold = 2,/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/camo = 2,
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol/m1911 = 2,/obj/item/weapon/gun/ballistic/automatic/proto/unrestricted = 2,
|
||||
/obj/item/weapon/gun/ballistic/shotgun/automatic/combat = 2,/obj/item/weapon/gun/ballistic/automatic/gyropistol = 1,
|
||||
/obj/item/weapon/gun/ballistic/shotgun = 2,/obj/item/weapon/gun/ballistic/automatic/ar = 2)
|
||||
premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2,/obj/item/ammo_box/magazine/m50 = 4,/obj/item/ammo_box/magazine/m45 = 2,/obj/item/ammo_box/magazine/m75 = 2)
|
||||
contraband = list(/obj/item/clothing/under/patriotsuit = 1,/obj/item/weapon/bedsheet/patriot = 3)
|
||||
products = list(/obj/item/weapon/gun/ballistic/automatic/pistol/deagle/gold = 2, /obj/item/weapon/gun/ballistic/automatic/pistol/deagle/camo = 2,
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol/m1911 = 2, /obj/item/weapon/gun/ballistic/automatic/proto/unrestricted = 2,
|
||||
/obj/item/weapon/gun/ballistic/shotgun/automatic/combat = 2, /obj/item/weapon/gun/ballistic/automatic/gyropistol = 1,
|
||||
/obj/item/weapon/gun/ballistic/shotgun = 2, /obj/item/weapon/gun/ballistic/automatic/ar = 2)
|
||||
premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2, /obj/item/ammo_box/magazine/m50 = 4, /obj/item/ammo_box/magazine/m45 = 2, /obj/item/ammo_box/magazine/m75 = 2)
|
||||
contraband = list(/obj/item/clothing/under/patriotsuit = 1, /obj/item/weapon/bedsheet/patriot = 3)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -908,12 +906,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_deny = "med-deny"
|
||||
product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
|
||||
req_access_txt = "5"
|
||||
products = list(/obj/item/weapon/reagent_containers/syringe = 12,/obj/item/weapon/reagent_containers/dropper = 3,/obj/item/stack/medical/gauze = 8,/obj/item/weapon/reagent_containers/pill/patch/styptic = 5, /obj/item/weapon/reagent_containers/pill/insulin = 10,
|
||||
/obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5,/obj/item/weapon/reagent_containers/glass/bottle/charcoal = 4, /obj/item/weapon/reagent_containers/spray/medical/sterilizer = 1,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/epinephrine = 4,/obj/item/weapon/reagent_containers/glass/bottle/morphine = 4,/obj/item/weapon/reagent_containers/glass/bottle/salglu_solution = 3,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/toxin = 3,/obj/item/weapon/reagent_containers/syringe/antiviral = 6,/obj/item/weapon/reagent_containers/pill/salbutamol = 2,/obj/item/device/healthanalyzer = 4, /obj/item/device/sensor_device = 2)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3,/obj/item/weapon/reagent_containers/pill/morphine = 4,/obj/item/weapon/reagent_containers/pill/charcoal = 6)
|
||||
premium = list(/obj/item/weapon/storage/box/hug/medical = 1,/obj/item/weapon/reagent_containers/hypospray/medipen = 3, /obj/item/weapon/storage/belt/medical = 3, /obj/item/weapon/wrench/medical = 1)
|
||||
products = list(/obj/item/weapon/reagent_containers/syringe = 12, /obj/item/weapon/reagent_containers/dropper = 3, /obj/item/stack/medical/gauze = 8, /obj/item/weapon/reagent_containers/pill/patch/styptic = 5, /obj/item/weapon/reagent_containers/pill/insulin = 10,
|
||||
/obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/weapon/reagent_containers/glass/bottle/charcoal = 4, /obj/item/weapon/reagent_containers/spray/medical/sterilizer = 1,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/epinephrine = 4, /obj/item/weapon/reagent_containers/glass/bottle/morphine = 4, /obj/item/weapon/reagent_containers/glass/bottle/salglu_solution = 3,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/toxin = 3, /obj/item/weapon/reagent_containers/syringe/antiviral = 6, /obj/item/weapon/reagent_containers/pill/salbutamol = 2, /obj/item/device/healthanalyzer = 4, /obj/item/device/sensor_device = 2)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3, /obj/item/weapon/reagent_containers/pill/morphine = 4, /obj/item/weapon/reagent_containers/pill/charcoal = 6)
|
||||
premium = list(/obj/item/weapon/storage/box/hug/medical = 1, /obj/item/weapon/reagent_containers/hypospray/medipen = 3, /obj/item/weapon/storage/belt/medical = 3, /obj/item/weapon/wrench/medical = 1)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
refill_canister = /obj/item/weapon/vending_refill/medical
|
||||
@@ -922,9 +920,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
/obj/machinery/vending/plasmaresearch
|
||||
name = "\improper Toximate 3000"
|
||||
desc = "All the fine parts you need in one vending machine!"
|
||||
products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6,
|
||||
/obj/item/device/transfer_valve = 6,/obj/item/device/assembly/timer = 6,/obj/item/device/assembly/signaler = 6,
|
||||
/obj/item/device/assembly/prox_sensor = 6,/obj/item/device/assembly/igniter = 6)
|
||||
products = list(/obj/item/clothing/under/rank/scientist = 6, /obj/item/clothing/suit/bio_suit = 6, /obj/item/clothing/head/bio_hood = 6,
|
||||
/obj/item/device/transfer_valve = 6, /obj/item/device/assembly/timer = 6, /obj/item/device/assembly/signaler = 6,
|
||||
/obj/item/device/assembly/prox_sensor = 6, /obj/item/device/assembly/igniter = 6)
|
||||
contraband = list(/obj/item/device/assembly/health = 3)
|
||||
|
||||
/obj/machinery/vending/wallmed
|
||||
@@ -933,10 +931,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_state = "wallmed"
|
||||
icon_deny = "wallmed-deny"
|
||||
density = FALSE
|
||||
products = list(/obj/item/weapon/reagent_containers/syringe = 3,/obj/item/weapon/reagent_containers/pill/patch/styptic = 5,
|
||||
/obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5,/obj/item/weapon/reagent_containers/pill/charcoal = 2,
|
||||
products = list(/obj/item/weapon/reagent_containers/syringe = 3, /obj/item/weapon/reagent_containers/pill/patch/styptic = 5,
|
||||
/obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/weapon/reagent_containers/pill/charcoal = 2,
|
||||
/obj/item/weapon/reagent_containers/spray/medical/sterilizer = 1)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2,/obj/item/weapon/reagent_containers/pill/morphine = 2)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2, /obj/item/weapon/reagent_containers/pill/morphine = 2)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
refill_canister = /obj/item/weapon/vending_refill/medical
|
||||
@@ -949,9 +947,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_state = "sec"
|
||||
icon_deny = "sec-deny"
|
||||
req_access_txt = "1"
|
||||
products = list(/obj/item/weapon/restraints/handcuffs = 8,/obj/item/weapon/restraints/handcuffs/cable/zipties = 10,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/assembly/flash/handheld = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut = 12,/obj/item/weapon/storage/box/evidence = 6,/obj/item/device/flashlight/seclite = 4,/obj/item/weapon/restraints/legcuffs/bola/energy = 7)
|
||||
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/fancy/donut_box = 2)
|
||||
products = list(/obj/item/weapon/restraints/handcuffs = 8, /obj/item/weapon/restraints/handcuffs/cable/zipties = 10, /obj/item/weapon/grenade/flashbang = 4, /obj/item/device/assembly/flash/handheld = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut = 12, /obj/item/weapon/storage/box/evidence = 6, /obj/item/device/flashlight/seclite = 4, /obj/item/weapon/restraints/legcuffs/bola/energy = 7)
|
||||
contraband = list(/obj/item/clothing/glasses/sunglasses = 2, /obj/item/weapon/storage/fancy/donut_box = 2)
|
||||
premium = list(/obj/item/weapon/coin/antagtoken = 1)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
@@ -972,9 +970,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..."
|
||||
icon_state = "nutri"
|
||||
icon_deny = "nutri-deny"
|
||||
products = list(/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez = 30,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z = 20,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh = 10,/obj/item/weapon/reagent_containers/spray/pestspray = 20,
|
||||
/obj/item/weapon/reagent_containers/syringe = 5,/obj/item/weapon/storage/bag/plants = 5,/obj/item/weapon/cultivator = 3,/obj/item/weapon/shovel/spade = 3,/obj/item/device/plant_analyzer = 4)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5)
|
||||
products = list(/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez = 30, /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z = 20, /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh = 10, /obj/item/weapon/reagent_containers/spray/pestspray = 20,
|
||||
/obj/item/weapon/reagent_containers/syringe = 5, /obj/item/weapon/storage/bag/plants = 5, /obj/item/weapon/cultivator = 3, /obj/item/weapon/shovel/spade = 3, /obj/item/device/plant_analyzer = 4)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10, /obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -984,16 +982,16 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
|
||||
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
|
||||
icon_state = "seeds"
|
||||
products = list(/obj/item/seeds/ambrosia = 3,/obj/item/seeds/apple = 3,/obj/item/seeds/banana = 3,/obj/item/seeds/berry = 3,
|
||||
/obj/item/seeds/cabbage = 3,/obj/item/seeds/carrot = 3,/obj/item/seeds/cherry = 3,/obj/item/seeds/chanter = 3,
|
||||
/obj/item/seeds/chili = 3,/obj/item/seeds/cocoapod = 3,/obj/item/seeds/coffee = 3,/obj/item/seeds/corn = 3,
|
||||
/obj/item/seeds/eggplant = 3,/obj/item/seeds/grape = 3,/obj/item/seeds/grass = 3,/obj/item/seeds/lemon = 3,
|
||||
/obj/item/seeds/lime = 3,/obj/item/seeds/onion = 3,/obj/item/seeds/orange = 3,/obj/item/seeds/potato = 3,/obj/item/seeds/poppy = 3,
|
||||
/obj/item/seeds/pumpkin = 3,/obj/item/seeds/replicapod = 3,/obj/item/seeds/wheat/rice = 3,/obj/item/seeds/soya = 3,/obj/item/seeds/sunflower = 3,
|
||||
/obj/item/seeds/tea = 3,/obj/item/seeds/tobacco = 3,/obj/item/seeds/tomato = 3,
|
||||
/obj/item/seeds/tower = 3,/obj/item/seeds/watermelon = 3,/obj/item/seeds/wheat = 3,/obj/item/seeds/whitebeet = 3)
|
||||
contraband = list(/obj/item/seeds/amanita = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/liberty = 2,/obj/item/seeds/nettle = 2,
|
||||
/obj/item/seeds/plump = 2,/obj/item/seeds/reishi = 2,/obj/item/seeds/cannabis = 3,/obj/item/seeds/starthistle = 2,
|
||||
products = list(/obj/item/seeds/ambrosia = 3, /obj/item/seeds/apple = 3, /obj/item/seeds/banana = 3, /obj/item/seeds/berry = 3,
|
||||
/obj/item/seeds/cabbage = 3, /obj/item/seeds/carrot = 3, /obj/item/seeds/cherry = 3, /obj/item/seeds/chanter = 3,
|
||||
/obj/item/seeds/chili = 3, /obj/item/seeds/cocoapod = 3, /obj/item/seeds/coffee = 3, /obj/item/seeds/corn = 3,
|
||||
/obj/item/seeds/eggplant = 3, /obj/item/seeds/grape = 3, /obj/item/seeds/grass = 3, /obj/item/seeds/lemon = 3,
|
||||
/obj/item/seeds/lime = 3, /obj/item/seeds/onion = 3, /obj/item/seeds/orange = 3, /obj/item/seeds/potato = 3, /obj/item/seeds/poppy = 3,
|
||||
/obj/item/seeds/pumpkin = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/soya = 3, /obj/item/seeds/sunflower = 3,
|
||||
/obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, /obj/item/seeds/tomato = 3,
|
||||
/obj/item/seeds/tower = 3, /obj/item/seeds/watermelon = 3, /obj/item/seeds/wheat = 3, /obj/item/seeds/whitebeet = 3)
|
||||
contraband = list(/obj/item/seeds/amanita = 2, /obj/item/seeds/glowshroom = 2, /obj/item/seeds/liberty = 2, /obj/item/seeds/nettle = 2,
|
||||
/obj/item/seeds/plump = 2, /obj/item/seeds/reishi = 2, /obj/item/seeds/cannabis = 3, /obj/item/seeds/starthistle = 2,
|
||||
/obj/item/seeds/random = 2)
|
||||
premium = list(/obj/item/weapon/reagent_containers/spray/waterflower = 1)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
@@ -1006,7 +1004,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!"
|
||||
vend_reply = "Have an enchanted evening!"
|
||||
product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!"
|
||||
products = list(/obj/item/clothing/head/wizard = 1,/obj/item/clothing/suit/wizrobe = 1,/obj/item/clothing/head/wizard/red = 1,/obj/item/clothing/suit/wizrobe/red = 1,/obj/item/clothing/head/wizard/yellow = 1,/obj/item/clothing/suit/wizrobe/yellow = 1,/obj/item/clothing/shoes/sandal/magic = 1,/obj/item/weapon/staff = 2)
|
||||
products = list(/obj/item/clothing/head/wizard = 1, /obj/item/clothing/suit/wizrobe = 1, /obj/item/clothing/head/wizard/red = 1, /obj/item/clothing/suit/wizrobe/red = 1, /obj/item/clothing/head/wizard/yellow = 1, /obj/item/clothing/suit/wizrobe/yellow = 1, /obj/item/clothing/shoes/sandal/magic = 1, /obj/item/weapon/staff = 2)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
@@ -1019,30 +1017,30 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
req_access_txt = "46" //Theatre access needed, unless hacked.
|
||||
product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!"
|
||||
vend_reply = "Thank you for using AutoDrobe!"
|
||||
products = list(/obj/item/clothing/suit/chickensuit = 1,/obj/item/clothing/head/chicken = 1,/obj/item/clothing/under/gladiator = 1,
|
||||
/obj/item/clothing/head/helmet/gladiator = 1,/obj/item/clothing/under/gimmick/rank/captain/suit = 1,/obj/item/clothing/head/flatcap = 1,
|
||||
/obj/item/clothing/suit/toggle/labcoat/mad = 1,/obj/item/clothing/shoes/jackboots = 1,
|
||||
/obj/item/clothing/under/schoolgirl = 1,/obj/item/clothing/under/schoolgirl/red = 1,/obj/item/clothing/under/schoolgirl/green = 1,/obj/item/clothing/under/schoolgirl/orange = 1,/obj/item/clothing/head/kitty = 1,/obj/item/clothing/under/skirt/black = 1,/obj/item/clothing/head/beret = 1,
|
||||
/obj/item/clothing/accessory/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/accessory/waistcoat = 1,
|
||||
/obj/item/clothing/glasses/monocle =1,/obj/item/clothing/head/bowler = 1,/obj/item/weapon/cane = 1,/obj/item/clothing/under/sl_suit = 1,
|
||||
/obj/item/clothing/mask/fakemoustache = 1,/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1,/obj/item/clothing/head/plaguedoctorhat = 1,/obj/item/clothing/mask/gas/plaguedoctor = 1,
|
||||
/obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1,
|
||||
products = list(/obj/item/clothing/suit/chickensuit = 1, /obj/item/clothing/head/chicken = 1, /obj/item/clothing/under/gladiator = 1,
|
||||
/obj/item/clothing/head/helmet/gladiator = 1, /obj/item/clothing/under/gimmick/rank/captain/suit = 1, /obj/item/clothing/head/flatcap = 1,
|
||||
/obj/item/clothing/suit/toggle/labcoat/mad = 1, /obj/item/clothing/shoes/jackboots = 1,
|
||||
/obj/item/clothing/under/schoolgirl = 1, /obj/item/clothing/under/schoolgirl/red = 1, /obj/item/clothing/under/schoolgirl/green = 1, /obj/item/clothing/under/schoolgirl/orange = 1, /obj/item/clothing/head/kitty = 1, /obj/item/clothing/under/skirt/black = 1, /obj/item/clothing/head/beret = 1,
|
||||
/obj/item/clothing/accessory/waistcoat = 1, /obj/item/clothing/under/suit_jacket = 1, /obj/item/clothing/head/that =1, /obj/item/clothing/under/kilt = 1, /obj/item/clothing/head/beret = 1, /obj/item/clothing/accessory/waistcoat = 1,
|
||||
/obj/item/clothing/glasses/monocle =1, /obj/item/clothing/head/bowler = 1, /obj/item/weapon/cane = 1, /obj/item/clothing/under/sl_suit = 1,
|
||||
/obj/item/clothing/mask/fakemoustache = 1, /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1, /obj/item/clothing/head/plaguedoctorhat = 1, /obj/item/clothing/mask/gas/plaguedoctor = 1,
|
||||
/obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1, /obj/item/clothing/mask/gas/owl_mask = 1,
|
||||
/obj/item/clothing/suit/toggle/owlwings/griffinwings = 1, /obj/item/clothing/under/griffin = 1, /obj/item/clothing/shoes/griffin = 1, /obj/item/clothing/head/griffin = 1,
|
||||
/obj/item/clothing/suit/apron = 1,/obj/item/clothing/under/waiter = 1,/obj/item/clothing/suit/jacket/miljacket = 1,
|
||||
/obj/item/clothing/under/pirate = 1,/obj/item/clothing/suit/pirate = 1,/obj/item/clothing/head/pirate = 1,/obj/item/clothing/head/bandana = 1,
|
||||
/obj/item/clothing/head/bandana = 1,/obj/item/clothing/under/soviet = 1,/obj/item/clothing/head/ushanka = 1,/obj/item/clothing/suit/imperium_monk = 1,
|
||||
/obj/item/clothing/mask/gas/cyborg = 1,/obj/item/clothing/suit/holidaypriest = 1,/obj/item/clothing/head/wizard/marisa/fake = 1,
|
||||
/obj/item/clothing/suit/wizrobe/marisa/fake = 1,/obj/item/clothing/under/sundress = 1,/obj/item/clothing/head/witchwig = 1,/obj/item/weapon/staff/broom = 1,
|
||||
/obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/weapon/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1,
|
||||
/obj/item/clothing/under/rank/clown/sexy = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,/obj/item/clothing/mask/rat/bat = 1,/obj/item/clothing/mask/rat/bee = 1,/obj/item/clothing/mask/rat/bear = 1,/obj/item/clothing/mask/rat/raven = 1,/obj/item/clothing/mask/rat/jackal = 1,/obj/item/clothing/mask/rat/fox = 1,/obj/item/clothing/mask/rat/tribal = 1,/obj/item/clothing/mask/rat = 1,/obj/item/clothing/suit/apron/overalls = 1,
|
||||
/obj/item/clothing/suit/apron = 1, /obj/item/clothing/under/waiter = 1, /obj/item/clothing/suit/jacket/miljacket = 1,
|
||||
/obj/item/clothing/under/pirate = 1, /obj/item/clothing/suit/pirate = 1, /obj/item/clothing/head/pirate = 1, /obj/item/clothing/head/bandana = 1,
|
||||
/obj/item/clothing/head/bandana = 1, /obj/item/clothing/under/soviet = 1, /obj/item/clothing/head/ushanka = 1, /obj/item/clothing/suit/imperium_monk = 1,
|
||||
/obj/item/clothing/mask/gas/cyborg = 1, /obj/item/clothing/suit/holidaypriest = 1, /obj/item/clothing/head/wizard/marisa/fake = 1,
|
||||
/obj/item/clothing/suit/wizrobe/marisa/fake = 1, /obj/item/clothing/under/sundress = 1, /obj/item/clothing/head/witchwig = 1, /obj/item/weapon/staff/broom = 1,
|
||||
/obj/item/clothing/suit/wizrobe/fake = 1, /obj/item/clothing/head/wizard/fake = 1, /obj/item/weapon/staff = 3, /obj/item/clothing/mask/gas/sexyclown = 1,
|
||||
/obj/item/clothing/under/rank/clown/sexy = 1, /obj/item/clothing/mask/gas/sexymime = 1, /obj/item/clothing/under/sexymime = 1, /obj/item/clothing/mask/rat/bat = 1, /obj/item/clothing/mask/rat/bee = 1, /obj/item/clothing/mask/rat/bear = 1, /obj/item/clothing/mask/rat/raven = 1, /obj/item/clothing/mask/rat/jackal = 1, /obj/item/clothing/mask/rat/fox = 1, /obj/item/clothing/mask/rat/tribal = 1, /obj/item/clothing/mask/rat = 1, /obj/item/clothing/suit/apron/overalls = 1,
|
||||
/obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero = 1, /obj/item/clothing/head/sombrero/green = 1, /obj/item/clothing/suit/poncho = 1,
|
||||
/obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1,
|
||||
/obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1,/obj/item/clothing/glasses/cold=1,/obj/item/clothing/glasses/heat=1,
|
||||
/obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1, /obj/item/clothing/glasses/cold=1, /obj/item/clothing/glasses/heat=1,
|
||||
/obj/item/clothing/suit/whitedress = 1,
|
||||
/obj/item/clothing/under/jester = 1, /obj/item/clothing/head/jester = 1,
|
||||
/obj/item/clothing/under/villain = 1,
|
||||
/obj/item/clothing/shoes/singery = 1,/obj/item/clothing/under/singery = 1,
|
||||
/obj/item/clothing/shoes/singerb = 1,/obj/item/clothing/under/singerb = 1,
|
||||
/obj/item/clothing/shoes/singery = 1, /obj/item/clothing/under/singery = 1,
|
||||
/obj/item/clothing/shoes/singerb = 1, /obj/item/clothing/under/singerb = 1,
|
||||
/obj/item/clothing/suit/hooded/carp_costume = 1,
|
||||
/obj/item/clothing/suit/hooded/ian_costume = 1,
|
||||
/obj/item/clothing/suit/hooded/bee_costume = 1,
|
||||
@@ -1053,7 +1051,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
/obj/item/clothing/under/scratch = 1,
|
||||
/obj/item/clothing/under/sailor = 1,
|
||||
/obj/item/clothing/ears/headphones = 2)
|
||||
contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 2,/obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/sunglasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2)
|
||||
contraband = list(/obj/item/clothing/suit/judgerobe = 1, /obj/item/clothing/head/powdered_wig = 1, /obj/item/weapon/gun/magic/wand = 2, /obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/sunglasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2)
|
||||
premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1, /obj/item/weapon/skub = 1)
|
||||
refill_canister = /obj/item/weapon/vending_refill/autodrobe
|
||||
|
||||
@@ -1062,7 +1060,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
desc = "A kitchen and restaurant equipment vendor"
|
||||
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
|
||||
icon_state = "dinnerware"
|
||||
products = list(/obj/item/weapon/storage/bag/tray = 8,/obj/item/weapon/kitchen/fork = 6,/obj/item/weapon/kitchen/knife = 6,/obj/item/weapon/kitchen/rollingpin = 2,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/apron/chef = 2,/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5,/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5,/obj/item/weapon/reagent_containers/food/condiment/saltshaker = 5,/obj/item/weapon/reagent_containers/food/condiment/peppermill = 5,/obj/item/weapon/reagent_containers/glass/bowl = 20)
|
||||
products = list(/obj/item/weapon/storage/bag/tray = 8, /obj/item/weapon/kitchen/fork = 6, /obj/item/weapon/kitchen/knife = 6, /obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8, /obj/item/clothing/suit/apron/chef = 2, /obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5, /obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5, /obj/item/weapon/reagent_containers/food/condiment/saltshaker = 5, /obj/item/weapon/reagent_containers/food/condiment/peppermill = 5, /obj/item/weapon/reagent_containers/glass/bowl = 20)
|
||||
contraband = list(/obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/kitchen/knife/butcher = 2)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
@@ -1109,7 +1107,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_state = "engivend"
|
||||
icon_deny = "engivend-deny"
|
||||
req_access_txt = "11" //Engineering Equipment access
|
||||
products = list(/obj/item/clothing/glasses/meson/engine = 2,/obj/item/device/multitool = 4,/obj/item/weapon/electronics/airlock = 10,/obj/item/weapon/electronics/apc = 10,/obj/item/weapon/electronics/airalarm = 10,/obj/item/weapon/stock_parts/cell/high = 10, /obj/item/weapon/construction/rcd/loaded = 3, /obj/item/device/geiger_counter = 5)
|
||||
products = list(/obj/item/clothing/glasses/meson/engine = 2, /obj/item/device/multitool = 4, /obj/item/weapon/electronics/airlock = 10, /obj/item/weapon/electronics/apc = 10, /obj/item/weapon/electronics/airalarm = 10, /obj/item/weapon/stock_parts/cell/high = 10, /obj/item/weapon/construction/rcd/loaded = 3, /obj/item/device/geiger_counter = 5)
|
||||
contraband = list(/obj/item/weapon/stock_parts/cell/potato = 3)
|
||||
premium = list(/obj/item/weapon/storage/belt/utility = 3)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
@@ -1122,12 +1120,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_state = "engi"
|
||||
icon_deny = "engi-deny"
|
||||
req_access_txt = "11"
|
||||
products = list(/obj/item/clothing/under/rank/chief_engineer = 4,/obj/item/clothing/under/rank/engineer = 4,/obj/item/clothing/shoes/sneakers/orange = 4,/obj/item/clothing/head/hardhat = 4,
|
||||
/obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson/engine = 4,/obj/item/clothing/gloves/color/yellow = 4, /obj/item/weapon/screwdriver = 12,
|
||||
/obj/item/weapon/crowbar = 12,/obj/item/weapon/wirecutters = 12,/obj/item/device/multitool = 12,/obj/item/weapon/wrench = 12,/obj/item/device/t_scanner = 12,
|
||||
/obj/item/weapon/stock_parts/cell = 8, /obj/item/weapon/weldingtool = 8,/obj/item/clothing/head/welding = 8,
|
||||
/obj/item/weapon/light/tube = 10,/obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5,/obj/item/weapon/stock_parts/micro_laser = 5,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 5,/obj/item/weapon/stock_parts/manipulator = 5,/obj/item/weapon/stock_parts/console_screen = 5)
|
||||
products = list(/obj/item/clothing/under/rank/chief_engineer = 4, /obj/item/clothing/under/rank/engineer = 4, /obj/item/clothing/shoes/sneakers/orange = 4, /obj/item/clothing/head/hardhat = 4,
|
||||
/obj/item/weapon/storage/belt/utility = 4, /obj/item/clothing/glasses/meson/engine = 4, /obj/item/clothing/gloves/color/yellow = 4, /obj/item/weapon/screwdriver = 12,
|
||||
/obj/item/weapon/crowbar = 12, /obj/item/weapon/wirecutters = 12, /obj/item/device/multitool = 12, /obj/item/weapon/wrench = 12, /obj/item/device/t_scanner = 12,
|
||||
/obj/item/weapon/stock_parts/cell = 8, /obj/item/weapon/weldingtool = 8, /obj/item/clothing/head/welding = 8,
|
||||
/obj/item/weapon/light/tube = 10, /obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5, /obj/item/weapon/stock_parts/micro_laser = 5,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 5, /obj/item/weapon/stock_parts/manipulator = 5, /obj/item/weapon/stock_parts/console_screen = 5)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -1138,10 +1136,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_state = "robotics"
|
||||
icon_deny = "robotics-deny"
|
||||
req_access_txt = "29"
|
||||
products = list(/obj/item/clothing/suit/toggle/labcoat = 4,/obj/item/clothing/under/rank/roboticist = 4,/obj/item/stack/cable_coil = 4,/obj/item/device/assembly/flash/handheld = 4,
|
||||
/obj/item/weapon/stock_parts/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3,/obj/item/device/assembly/signaler = 3,/obj/item/device/healthanalyzer = 3,
|
||||
/obj/item/weapon/scalpel = 2,/obj/item/weapon/circular_saw = 2,/obj/item/weapon/tank/internals/anesthetic = 2,/obj/item/clothing/mask/breath/medical = 5,
|
||||
/obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5)
|
||||
products = list(/obj/item/clothing/suit/toggle/labcoat = 4, /obj/item/clothing/under/rank/roboticist = 4, /obj/item/stack/cable_coil = 4, /obj/item/device/assembly/flash/handheld = 4,
|
||||
/obj/item/weapon/stock_parts/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3, /obj/item/device/assembly/signaler = 3, /obj/item/device/healthanalyzer = 3,
|
||||
/obj/item/weapon/scalpel = 2, /obj/item/weapon/circular_saw = 2, /obj/item/weapon/tank/internals/anesthetic = 2, /obj/item/clothing/mask/breath/medical = 5,
|
||||
/obj/item/weapon/screwdriver = 5, /obj/item/weapon/crowbar = 5)
|
||||
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -1152,34 +1150,34 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
icon_state = "clothes"
|
||||
product_slogans = "Dress for success!;Prepare to look swagalicious!;Look at all this free swag!;Why leave style up to fate? Use the ClothesMate!"
|
||||
vend_reply = "Thank you for using the ClothesMate!"
|
||||
products = list(/obj/item/clothing/head/that=2,/obj/item/clothing/head/fedora=1,/obj/item/clothing/glasses/monocle=1,
|
||||
products = list(/obj/item/clothing/head/that=2, /obj/item/clothing/head/fedora=1, /obj/item/clothing/glasses/monocle=1,
|
||||
/obj/item/clothing/suit/jacket=2, /obj/item/clothing/suit/jacket/puffer/vest=2, /obj/item/clothing/suit/jacket/puffer=2,
|
||||
/obj/item/clothing/under/suit_jacket/navy=1,/obj/item/clothing/under/suit_jacket/really_black=1,/obj/item/clothing/under/suit_jacket/burgundy=1,
|
||||
/obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1,/obj/item/clothing/under/kilt=1,/obj/item/clothing/under/overalls=1,
|
||||
/obj/item/clothing/under/sl_suit=1,/obj/item/clothing/under/pants/jeans=3,/obj/item/clothing/under/pants/classicjeans=2,
|
||||
/obj/item/clothing/under/pants/camo = 1,/obj/item/clothing/under/pants/blackjeans=2,/obj/item/clothing/under/pants/khaki=2,
|
||||
/obj/item/clothing/under/pants/white=2,/obj/item/clothing/under/pants/red=1,/obj/item/clothing/under/pants/black=2,
|
||||
/obj/item/clothing/under/pants/tan=2,/obj/item/clothing/under/pants/track=1,/obj/item/clothing/suit/jacket/miljacket = 1,
|
||||
/obj/item/clothing/under/suit_jacket/navy=1, /obj/item/clothing/under/suit_jacket/really_black=1, /obj/item/clothing/under/suit_jacket/burgundy=1,
|
||||
/obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1, /obj/item/clothing/under/kilt=1, /obj/item/clothing/under/overalls=1,
|
||||
/obj/item/clothing/under/sl_suit=1, /obj/item/clothing/under/pants/jeans=3, /obj/item/clothing/under/pants/classicjeans=2,
|
||||
/obj/item/clothing/under/pants/camo = 1, /obj/item/clothing/under/pants/blackjeans=2, /obj/item/clothing/under/pants/khaki=2,
|
||||
/obj/item/clothing/under/pants/white=2, /obj/item/clothing/under/pants/red=1, /obj/item/clothing/under/pants/black=2,
|
||||
/obj/item/clothing/under/pants/tan=2, /obj/item/clothing/under/pants/track=1, /obj/item/clothing/suit/jacket/miljacket = 1,
|
||||
/obj/item/clothing/neck/tie/blue=1, /obj/item/clothing/neck/tie/red=1, /obj/item/clothing/neck/tie/black=1, /obj/item/clothing/neck/tie/horrible=1,
|
||||
/obj/item/clothing/neck/scarf/red=1,/obj/item/clothing/neck/scarf/green=1,/obj/item/clothing/neck/scarf/darkblue=1,
|
||||
/obj/item/clothing/neck/scarf/purple=1,/obj/item/clothing/neck/scarf/yellow=1,/obj/item/clothing/neck/scarf/orange=1,
|
||||
/obj/item/clothing/neck/scarf/cyan=1,/obj/item/clothing/neck/scarf=1,/obj/item/clothing/neck/scarf/black=1,
|
||||
/obj/item/clothing/neck/scarf/zebra=1,/obj/item/clothing/neck/scarf/christmas=1,/obj/item/clothing/neck/stripedredscarf=1,
|
||||
/obj/item/clothing/neck/stripedbluescarf=1,/obj/item/clothing/neck/stripedgreenscarf=1,/obj/item/clothing/accessory/waistcoat=1,
|
||||
/obj/item/clothing/under/skirt/black=1,/obj/item/clothing/under/skirt/blue=1,/obj/item/clothing/under/skirt/red=1,/obj/item/clothing/under/skirt/purple=1,
|
||||
/obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1,
|
||||
/obj/item/clothing/under/plaid_skirt=1,/obj/item/clothing/under/plaid_skirt/blue=1,/obj/item/clothing/under/plaid_skirt/purple=1,/obj/item/clothing/under/plaid_skirt/green=1,
|
||||
/obj/item/clothing/glasses/regular=1,/obj/item/clothing/glasses/regular/jamjar=1,/obj/item/clothing/head/sombrero=1,/obj/item/clothing/suit/poncho=1,
|
||||
/obj/item/clothing/suit/ianshirt=1,/obj/item/clothing/shoes/laceup=2,/obj/item/clothing/shoes/sneakers/black=4,
|
||||
/obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2,/obj/item/clothing/glasses/orange=1,/obj/item/clothing/glasses/red=1,
|
||||
/obj/item/clothing/neck/scarf/red=1, /obj/item/clothing/neck/scarf/green=1, /obj/item/clothing/neck/scarf/darkblue=1,
|
||||
/obj/item/clothing/neck/scarf/purple=1, /obj/item/clothing/neck/scarf/yellow=1, /obj/item/clothing/neck/scarf/orange=1,
|
||||
/obj/item/clothing/neck/scarf/cyan=1, /obj/item/clothing/neck/scarf=1, /obj/item/clothing/neck/scarf/black=1,
|
||||
/obj/item/clothing/neck/scarf/zebra=1, /obj/item/clothing/neck/scarf/christmas=1, /obj/item/clothing/neck/stripedredscarf=1,
|
||||
/obj/item/clothing/neck/stripedbluescarf=1, /obj/item/clothing/neck/stripedgreenscarf=1, /obj/item/clothing/accessory/waistcoat=1,
|
||||
/obj/item/clothing/under/skirt/black=1, /obj/item/clothing/under/skirt/blue=1, /obj/item/clothing/under/skirt/red=1, /obj/item/clothing/under/skirt/purple=1,
|
||||
/obj/item/clothing/under/sundress=2, /obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1,
|
||||
/obj/item/clothing/under/plaid_skirt=1, /obj/item/clothing/under/plaid_skirt/blue=1, /obj/item/clothing/under/plaid_skirt/purple=1, /obj/item/clothing/under/plaid_skirt/green=1,
|
||||
/obj/item/clothing/glasses/regular=1, /obj/item/clothing/glasses/regular/jamjar=1, /obj/item/clothing/head/sombrero=1, /obj/item/clothing/suit/poncho=1,
|
||||
/obj/item/clothing/suit/ianshirt=1, /obj/item/clothing/shoes/laceup=2, /obj/item/clothing/shoes/sneakers/black=4,
|
||||
/obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2, /obj/item/clothing/glasses/orange=1, /obj/item/clothing/glasses/red=1,
|
||||
/obj/item/weapon/storage/belt/fannypack=1, /obj/item/weapon/storage/belt/fannypack/blue=1, /obj/item/weapon/storage/belt/fannypack/red=1, /obj/item/clothing/suit/jacket/letterman=2,
|
||||
/obj/item/clothing/head/beanie=1, /obj/item/clothing/head/beanie/black=1, /obj/item/clothing/head/beanie/red=1, /obj/item/clothing/head/beanie/green=1, /obj/item/clothing/head/beanie/darkblue=1,
|
||||
/obj/item/clothing/head/beanie/purple=1, /obj/item/clothing/head/beanie/yellow=1, /obj/item/clothing/head/beanie/orange=1, /obj/item/clothing/head/beanie/cyan=1, /obj/item/clothing/head/beanie/christmas=1,
|
||||
/obj/item/clothing/head/beanie/striped=1, /obj/item/clothing/head/beanie/stripedred=1, /obj/item/clothing/head/beanie/stripedblue=1, /obj/item/clothing/head/beanie/stripedgreen=1,
|
||||
/obj/item/clothing/suit/jacket/letterman_red=1,
|
||||
/obj/item/clothing/ears/headphones = 10)
|
||||
contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1,/obj/item/weapon/storage/belt/fannypack/black=2,/obj/item/clothing/suit/jacket/letterman_syndie=1,/obj/item/clothing/under/jabroni=1, /obj/item/clothing/suit/vapeshirt=1, /obj/item/clothing/under/geisha=1)
|
||||
premium = list(/obj/item/clothing/under/suit_jacket/checkered=1,/obj/item/clothing/head/mailman=1,/obj/item/clothing/under/rank/mailman=1,/obj/item/clothing/suit/jacket/leather=1,/obj/item/clothing/suit/jacket/leather/overcoat=1,/obj/item/clothing/under/pants/mustangjeans=1,/obj/item/clothing/neck/necklace/dope=3,/obj/item/clothing/suit/jacket/letterman_nanotrasen=1)
|
||||
contraband = list(/obj/item/clothing/under/syndicate/tacticool=1, /obj/item/clothing/mask/balaclava=1, /obj/item/clothing/head/ushanka=1, /obj/item/clothing/under/soviet=1, /obj/item/weapon/storage/belt/fannypack/black=2, /obj/item/clothing/suit/jacket/letterman_syndie=1, /obj/item/clothing/under/jabroni=1, /obj/item/clothing/suit/vapeshirt=1, /obj/item/clothing/under/geisha=1)
|
||||
premium = list(/obj/item/clothing/under/suit_jacket/checkered=1, /obj/item/clothing/head/mailman=1, /obj/item/clothing/under/rank/mailman=1, /obj/item/clothing/suit/jacket/leather=1, /obj/item/clothing/suit/jacket/leather/overcoat=1, /obj/item/clothing/under/pants/mustangjeans=1, /obj/item/clothing/neck/necklace/dope=3, /obj/item/clothing/suit/jacket/letterman_nanotrasen=1)
|
||||
refill_canister = /obj/item/weapon/vending_refill/clothing
|
||||
|
||||
/obj/machinery/vending/toyliberationstation
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
|
||||
/obj/item/weapon/paper/machine_wash(obj/machinery/washing_machine/WM)
|
||||
if(WM.color_source)
|
||||
if(istype(WM.color_source,/obj/item/toy/crayon))
|
||||
if(istype(WM.color_source, /obj/item/toy/crayon))
|
||||
var/obj/item/toy/crayon/CR = WM.color_source
|
||||
add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY)
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
to_chat(user, "<span class='warning'>\The [W] is stuck to your hand, you cannot put it in the washing machine!</span>")
|
||||
return 1
|
||||
|
||||
if(istype(W,/obj/item/toy/crayon) || istype(W,/obj/item/weapon/stamp))
|
||||
if(istype(W, /obj/item/toy/crayon) || istype(W, /obj/item/weapon/stamp))
|
||||
color_source = W
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
armor = list(melee = 40, bullet = 40, laser = 50, energy = 35, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 100)
|
||||
max_temperature = 35000
|
||||
leg_overload_coeff = 100
|
||||
operation_req_access = list(GLOB.access_syndicate)
|
||||
operation_req_access = list(ACCESS_SYNDICATE)
|
||||
wreckage = /obj/structure/mecha_wreckage/gygax/dark
|
||||
max_equip = 4
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
|
||||
max_temperature = 25000
|
||||
infra_luminosity = 5
|
||||
operation_req_access = list(GLOB.access_theatre)
|
||||
operation_req_access = list(ACCESS_THEATRE)
|
||||
wreckage = /obj/structure/mecha_wreckage/honker
|
||||
add_req_access = 0
|
||||
max_equip = 3
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
max_temperature = 60000
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
infra_luminosity = 3
|
||||
operation_req_access = list(GLOB.access_cent_specops)
|
||||
operation_req_access = list(ACCESS_CENT_SPECOPS)
|
||||
wreckage = /obj/structure/mecha_wreckage/marauder
|
||||
add_req_access = 0
|
||||
internal_damage_threshold = 25
|
||||
@@ -44,7 +44,7 @@
|
||||
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
|
||||
name = "\improper Seraph"
|
||||
icon_state = "seraph"
|
||||
operation_req_access = list(GLOB.access_cent_specops)
|
||||
operation_req_access = list(ACCESS_CENT_SPECOPS)
|
||||
step_in = 3
|
||||
max_integrity = 550
|
||||
wreckage = /obj/structure/mecha_wreckage/seraph
|
||||
@@ -70,7 +70,7 @@
|
||||
desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model."
|
||||
name = "\improper Mauler"
|
||||
icon_state = "mauler"
|
||||
operation_req_access = list(GLOB.access_syndicate)
|
||||
operation_req_access = list(ACCESS_SYNDICATE)
|
||||
wreckage = /obj/structure/mecha_wreckage/mauler
|
||||
max_equip = 5
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
|
||||
max_temperature = 15000
|
||||
wreckage = /obj/structure/mecha_wreckage/reticence
|
||||
operation_req_access = list(GLOB.access_theatre)
|
||||
operation_req_access = list(ACCESS_THEATRE)
|
||||
add_req_access = 0
|
||||
internal_damage_threshold = 25
|
||||
max_equip = 2
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
onclose(chassis.occupant, "msleeper")
|
||||
return
|
||||
if(filter.get("inject"))
|
||||
inject_reagent(filter.getType("inject",/datum/reagent),filter.getObj("source"))
|
||||
inject_reagent(filter.getType("inject", /datum/reagent),filter.getObj("source"))
|
||||
return
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_stats()
|
||||
@@ -296,9 +296,9 @@
|
||||
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target)
|
||||
if(!action_checks(target))
|
||||
return
|
||||
if(istype(target,/obj/item/weapon/reagent_containers/syringe))
|
||||
if(istype(target, /obj/item/weapon/reagent_containers/syringe))
|
||||
return load_syringe(target)
|
||||
if(istype(target,/obj/item/weapon/storage))//Loads syringes from boxes
|
||||
if(istype(target, /obj/item/weapon/storage))//Loads syringes from boxes
|
||||
for(var/obj/item/weapon/reagent_containers/syringe/S in target.contents)
|
||||
load_syringe(S)
|
||||
return
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
if(!loc)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
qdel(src)
|
||||
if(istype(loc,/obj/mecha/working) && scanning_time <= world.time)
|
||||
if(istype(loc, /obj/mecha/working) && scanning_time <= world.time)
|
||||
var/obj/mecha/working/mecha = loc
|
||||
if(!mecha.occupant)
|
||||
return
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 20
|
||||
active_power_usage = 5000
|
||||
req_access = list(GLOB.access_robotics)
|
||||
req_access = list(ACCESS_ROBOTICS)
|
||||
var/time_coeff = 1
|
||||
var/component_coeff = 1
|
||||
var/datum/material_container/materials
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
var/internal_damage = 0 //contains bitflags
|
||||
|
||||
var/list/operation_req_access = list()//required access level for mecha operation
|
||||
var/list/internals_req_access = list(GLOB.access_engine,GLOB.access_robotics)//required access level to open cell compartment
|
||||
var/list/internals_req_access = list(ACCESS_ENGINE,ACCESS_ROBOTICS)//REQUIRED ACCESS LEVEL TO OPEN CELL COMPARTMENT
|
||||
|
||||
var/wreckage
|
||||
|
||||
@@ -339,13 +339,13 @@
|
||||
if(0.75 to INFINITY)
|
||||
occupant.clear_alert("charge")
|
||||
if(0.5 to 0.75)
|
||||
occupant.throw_alert("charge",/obj/screen/alert/lowcell, 1)
|
||||
occupant.throw_alert("charge", /obj/screen/alert/lowcell, 1)
|
||||
if(0.25 to 0.5)
|
||||
occupant.throw_alert("charge",/obj/screen/alert/lowcell, 2)
|
||||
occupant.throw_alert("charge", /obj/screen/alert/lowcell, 2)
|
||||
if(0.01 to 0.25)
|
||||
occupant.throw_alert("charge",/obj/screen/alert/lowcell, 3)
|
||||
occupant.throw_alert("charge", /obj/screen/alert/lowcell, 3)
|
||||
else
|
||||
occupant.throw_alert("charge",/obj/screen/alert/emptycell)
|
||||
occupant.throw_alert("charge", /obj/screen/alert/emptycell)
|
||||
|
||||
var/integrity = obj_integrity/max_integrity*100
|
||||
switch(integrity)
|
||||
|
||||
@@ -74,10 +74,10 @@
|
||||
|
||||
|
||||
/datum/construction/mecha/ripley_chassis
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_right_arm),//3
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_left_leg),//4
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso), //1
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_left_arm), //2
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_right_arm), //3
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_left_leg), //4
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_right_leg)//5
|
||||
)
|
||||
|
||||
@@ -283,11 +283,11 @@
|
||||
|
||||
|
||||
/datum/construction/mecha/gygax_chassis
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso),//1
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_left_arm),//2
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_right_arm),//3
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_left_leg),//4
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_right_leg),//5
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso), //1
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_left_arm), //2
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_right_arm), //3
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_left_leg), //4
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_right_leg), //5
|
||||
list("key"=/obj/item/mecha_parts/part/gygax_head)
|
||||
)
|
||||
|
||||
@@ -568,11 +568,11 @@
|
||||
return
|
||||
|
||||
/datum/construction/mecha/firefighter_chassis
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_right_arm),//3
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_left_leg),//4
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_right_leg),//5
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso), //1
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_left_arm), //2
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_right_arm), //3
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_left_leg), //4
|
||||
list("key"=/obj/item/mecha_parts/part/ripley_right_leg), //5
|
||||
list("key"=/obj/item/clothing/suit/fire)//6
|
||||
)
|
||||
|
||||
@@ -792,11 +792,11 @@
|
||||
|
||||
|
||||
/datum/construction/mecha/honker_chassis
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/honker_torso),//1
|
||||
list("key"=/obj/item/mecha_parts/part/honker_left_arm),//2
|
||||
list("key"=/obj/item/mecha_parts/part/honker_right_arm),//3
|
||||
list("key"=/obj/item/mecha_parts/part/honker_left_leg),//4
|
||||
list("key"=/obj/item/mecha_parts/part/honker_right_leg),//5
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/honker_torso), //1
|
||||
list("key"=/obj/item/mecha_parts/part/honker_left_arm), //2
|
||||
list("key"=/obj/item/mecha_parts/part/honker_right_arm), //3
|
||||
list("key"=/obj/item/mecha_parts/part/honker_left_leg), //4
|
||||
list("key"=/obj/item/mecha_parts/part/honker_right_leg), //5
|
||||
list("key"=/obj/item/mecha_parts/part/honker_head)
|
||||
)
|
||||
|
||||
@@ -819,17 +819,17 @@
|
||||
|
||||
/datum/construction/mecha/honker
|
||||
result = "/obj/mecha/combat/honker"
|
||||
steps = list(list("key"=/obj/item/weapon/bikehorn),//1
|
||||
list("key"=/obj/item/clothing/shoes/clown_shoes),//2
|
||||
list("key"=/obj/item/weapon/bikehorn),//3
|
||||
list("key"=/obj/item/clothing/mask/gas/clown_hat),//4
|
||||
list("key"=/obj/item/weapon/bikehorn),//5
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/honker/targeting),//6
|
||||
list("key"=/obj/item/weapon/bikehorn),//7
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/honker/peripherals),//8
|
||||
list("key"=/obj/item/weapon/bikehorn),//9
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/honker/main),//10
|
||||
list("key"=/obj/item/weapon/bikehorn),//11
|
||||
steps = list(list("key"=/obj/item/weapon/bikehorn), //1
|
||||
list("key"=/obj/item/clothing/shoes/clown_shoes), //2
|
||||
list("key"=/obj/item/weapon/bikehorn), //3
|
||||
list("key"=/obj/item/clothing/mask/gas/clown_hat), //4
|
||||
list("key"=/obj/item/weapon/bikehorn), //5
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/honker/targeting), //6
|
||||
list("key"=/obj/item/weapon/bikehorn), //7
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/honker/peripherals), //8
|
||||
list("key"=/obj/item/weapon/bikehorn), //9
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/honker/main), //10
|
||||
list("key"=/obj/item/weapon/bikehorn), //11
|
||||
)
|
||||
|
||||
/datum/construction/mecha/honker/action(atom/used_atom,mob/user)
|
||||
@@ -868,11 +868,11 @@
|
||||
return
|
||||
|
||||
/datum/construction/mecha/durand_chassis
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso),//1
|
||||
list("key"=/obj/item/mecha_parts/part/durand_left_arm),//2
|
||||
list("key"=/obj/item/mecha_parts/part/durand_right_arm),//3
|
||||
list("key"=/obj/item/mecha_parts/part/durand_left_leg),//4
|
||||
list("key"=/obj/item/mecha_parts/part/durand_right_leg),//5
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso), //1
|
||||
list("key"=/obj/item/mecha_parts/part/durand_left_arm), //2
|
||||
list("key"=/obj/item/mecha_parts/part/durand_right_arm), //3
|
||||
list("key"=/obj/item/mecha_parts/part/durand_left_leg), //4
|
||||
list("key"=/obj/item/mecha_parts/part/durand_right_leg), //5
|
||||
list("key"=/obj/item/mecha_parts/part/durand_head)
|
||||
)
|
||||
|
||||
@@ -1156,11 +1156,11 @@
|
||||
|
||||
/datum/construction/mecha/phazon_chassis
|
||||
result = "/obj/mecha/combat/phazon"
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/phazon_torso),//1
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_left_arm),//2
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_right_arm),//3
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_left_leg),//4
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_right_leg),//5
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/phazon_torso), //1
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_left_arm), //2
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_right_arm), //3
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_left_leg), //4
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_right_leg), //5
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_head)
|
||||
)
|
||||
|
||||
@@ -1487,11 +1487,11 @@
|
||||
//ODYSSEUS
|
||||
|
||||
/datum/construction/mecha/odysseus_chassis
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso),//1
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_head),//2
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_left_arm),//3
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_right_arm),//4
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_left_leg),//5
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso), //1
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_head), //2
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_left_arm), //3
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_right_arm), //4
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_left_leg), //5
|
||||
list("key"=/obj/item/mecha_parts/part/odysseus_right_leg)//6
|
||||
)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Used to remotely locate or lockdown exosuits."
|
||||
icon_screen = "mecha"
|
||||
icon_keyboard = "tech_key"
|
||||
req_access = list(GLOB.access_robotics)
|
||||
req_access = list(ACCESS_ROBOTICS)
|
||||
circuit = /obj/item/weapon/circuitboard/computer/mecha_control
|
||||
var/list/located = list()
|
||||
var/screen = 0
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
density = TRUE
|
||||
anchored = FALSE
|
||||
opacity = 0
|
||||
var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel,/obj/item/stack/sheet/metal,/obj/item/stack/rods)
|
||||
var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/metal, /obj/item/stack/rods)
|
||||
var/list/wirecutters_salvage = list(/obj/item/stack/cable_coil)
|
||||
var/list/crowbar_salvage = list()
|
||||
var/salvage_num = 5
|
||||
|
||||
@@ -103,9 +103,9 @@
|
||||
var/obj/item/mecha_parts/mecha_equipment/drill/D = new
|
||||
D.attach(src)
|
||||
|
||||
else //Add possible plasma cutter if no drill
|
||||
var/obj/item/mecha_parts/mecha_equipment/M = new
|
||||
M.attach(src)
|
||||
else //Add plasma cutter if no drill
|
||||
var/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma/P = new
|
||||
P.attach(src)
|
||||
|
||||
//Add ore box to cargo
|
||||
cargo.Add(new /obj/structure/ore_box(src))
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
var/stuff_on_wall = 0
|
||||
for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff
|
||||
if(istype(O,/obj/structure/sign/poster))
|
||||
if(istype(O, /obj/structure/sign/poster))
|
||||
to_chat(user, "<span class='warning'>The wall is far too cluttered to place a poster!</span>")
|
||||
return
|
||||
stuff_on_wall++
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user