Merge branch 'master' into crow
This commit is contained in:
@@ -34,15 +34,15 @@
|
||||
return
|
||||
|
||||
/obj/effect/sound_emitter/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(!isobserver(user))
|
||||
return
|
||||
to_chat(user, "<span class='boldnotice'>Sound File:</span> [sound_file ? sound_file : "None chosen"]")
|
||||
to_chat(user, "<span class='boldnotice'>Mode:</span> [motus_operandi]</span>")
|
||||
to_chat(user, "<span class='boldnotice'>Range:</span> [emitter_range]</span>")
|
||||
to_chat(user, "<b>Sound is playing at [sound_volume]% volume.</b>")
|
||||
. += "<span class='boldnotice'>Sound File:</span> [sound_file ? sound_file : "None chosen"]"
|
||||
. += "<span class='boldnotice'>Mode:</span> [motus_operandi]</span>"
|
||||
. += "<span class='boldnotice'>Range:</span> [emitter_range]</span>"
|
||||
. += "<b>Sound is playing at [sound_volume]% volume.</b>"
|
||||
if(user.client.holder)
|
||||
to_chat(user, "<b>Alt-click it to quickly activate it!</b>")
|
||||
. += "<b>Alt-click it to quickly activate it!</b>"
|
||||
|
||||
//ATTACK GHOST IGNORING PARENT RETURN VALUE
|
||||
/obj/effect/sound_emitter/attack_ghost(mob/user)
|
||||
|
||||
@@ -611,16 +611,16 @@
|
||||
. = ..()
|
||||
|
||||
/obj/item/abductor_baton/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
switch(mode)
|
||||
if(BATON_STUN)
|
||||
to_chat(user, "<span class='warning'>The baton is in stun mode.</span>")
|
||||
. += "<span class='warning'>The baton is in stun mode.</span>"
|
||||
if(BATON_SLEEP)
|
||||
to_chat(user, "<span class='warning'>The baton is in sleep inducement mode.</span>")
|
||||
. += "<span class='warning'>The baton is in sleep inducement mode.</span>"
|
||||
if(BATON_CUFF)
|
||||
to_chat(user, "<span class='warning'>The baton is in restraining mode.</span>")
|
||||
. += "<span class='warning'>The baton is in restraining mode.</span>"
|
||||
if(BATON_PROBE)
|
||||
to_chat(user, "<span class='warning'>The baton is in probing mode.</span>")
|
||||
. += "<span class='warning'>The baton is in probing mode.</span>"
|
||||
|
||||
/obj/item/radio/headset/abductor
|
||||
name = "alien headset"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/obj/item/organ/heart/gland/examine(mob/user)
|
||||
. = ..()
|
||||
if((user.mind && HAS_TRAIT(user.mind, TRAIT_ABDUCTOR_SCIENTIST_TRAINING)) || isobserver(user))
|
||||
to_chat(user, "<span class='notice'>It is \a [true_name].</span>")
|
||||
. += "<span class='notice'>It is \a [true_name].</span>"
|
||||
|
||||
/obj/item/organ/heart/gland/proc/ownerCheck()
|
||||
if(ishuman(owner))
|
||||
|
||||
@@ -170,9 +170,9 @@ GLOBAL_LIST_EMPTY(blob_nodes)
|
||||
add_points(0)
|
||||
|
||||
/mob/camera/blob/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(blob_reagent_datum)
|
||||
to_chat(user, "Its chemical is <font color=\"[blob_reagent_datum.color]\">[blob_reagent_datum.name]</font>.")
|
||||
. += "Its chemical is <font color=\"[blob_reagent_datum.color]\">[blob_reagent_datum.name]</font>."
|
||||
|
||||
/mob/camera/blob/update_health_hud()
|
||||
if(blob_core)
|
||||
|
||||
@@ -243,18 +243,19 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/blob/proc/chemeffectreport(mob/user)
|
||||
/obj/structure/blob/proc/chemeffectreport()
|
||||
. = list()
|
||||
if(overmind)
|
||||
to_chat(user, "<b>Material: <font color=\"[overmind.blob_reagent_datum.color]\">[overmind.blob_reagent_datum.name]</font><span class='notice'>.</span></b>")
|
||||
to_chat(user, "<b>Material Effects:</b> <span class='notice'>[overmind.blob_reagent_datum.analyzerdescdamage]</span>")
|
||||
to_chat(user, "<b>Material Properties:</b> <span class='notice'>[overmind.blob_reagent_datum.analyzerdesceffect]</span><br>")
|
||||
. += "<b>Material: <font color=\"[overmind.blob_reagent_datum.color]\">[overmind.blob_reagent_datum.name]</font><span class='notice'>.</span></b>"
|
||||
. += "<b>Material Effects:</b> <span class='notice'>[overmind.blob_reagent_datum.analyzerdescdamage]</span>"
|
||||
. += "<b>Material Properties:</b> <span class='notice'>[overmind.blob_reagent_datum.analyzerdesceffect]</span><br>"
|
||||
else
|
||||
to_chat(user, "<b>No Material Detected!</b><br>")
|
||||
. += "<b>No Material Detected!</b><br>"
|
||||
|
||||
/obj/structure/blob/proc/typereport(mob/user)
|
||||
to_chat(user, "<b>Blob Type:</b> <span class='notice'>[uppertext(initial(name))]</span>")
|
||||
to_chat(user, "<b>Health:</b> <span class='notice'>[obj_integrity]/[max_integrity]</span>")
|
||||
to_chat(user, "<b>Effects:</b> <span class='notice'>[scannerreport()]</span>")
|
||||
/obj/structure/blob/proc/typereport()
|
||||
. = list("<b>Blob Type:</b> <span class='notice'>[uppertext(initial(name))]</span>")
|
||||
. += "<b>Health:</b> <span class='notice'>[obj_integrity]/[max_integrity]</span>"
|
||||
. += "<b>Effects:</b> <span class='notice'>[scannerreport()]</span>"
|
||||
|
||||
/obj/structure/blob/attack_animal(mob/living/simple_animal/M)
|
||||
if(ROLE_BLOB in M.faction) //sorry, but you can't kill the blob as a blobbernaut
|
||||
@@ -310,20 +311,20 @@
|
||||
return B
|
||||
|
||||
/obj/structure/blob/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
var/datum/atom_hud/hud_to_check = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED]
|
||||
if(user.research_scanner || hud_to_check.hudusers[user])
|
||||
to_chat(user, "<b>Your HUD displays an extensive report...</b><br>")
|
||||
. += "<b>Your HUD displays an extensive report...</b><br>"
|
||||
if(overmind)
|
||||
to_chat(user, "<b>Progress to Critical Mass:</b> <span class='notice'>[overmind.blobs_legit.len]/[overmind.blobwincount].</span>")
|
||||
. += "<b>Progress to Critical Mass:</b> <span class='notice'>[overmind.blobs_legit.len]/[overmind.blobwincount].</span>"
|
||||
else
|
||||
to_chat(user, "<b>Core neutralized. Critical mass no longer attainable.</b>")
|
||||
chemeffectreport(user)
|
||||
typereport(user)
|
||||
. += "<b>Core neutralized. Critical mass no longer attainable.</b>"
|
||||
. += chemeffectreport()
|
||||
. += typereport()
|
||||
else
|
||||
if(isobserver(user) && overmind)
|
||||
to_chat(user, "<b>Progress to Critical Mass:</b> <span class='notice'>[overmind.blobs_legit.len]/[overmind.blobwincount].</span>")
|
||||
to_chat(user, "It seems to be made of [get_chem_name()].")
|
||||
. += "<b>Progress to Critical Mass:</b> <span class='notice'>[overmind.blobs_legit.len]/[overmind.blobwincount].</span>"
|
||||
. += "It seems to be made of [get_chem_name()]."
|
||||
|
||||
/obj/structure/blob/proc/scannerreport()
|
||||
return "A generic blob. Looks like someone forgot to override this proc, adminhelp this."
|
||||
|
||||
@@ -21,5 +21,5 @@
|
||||
/obj/effect/clockwork/examine(mob/user)
|
||||
if((is_servant_of_ratvar(user) || isobserver(user)) && clockwork_desc)
|
||||
desc = clockwork_desc
|
||||
..()
|
||||
. = ..()
|
||||
desc = initial(desc)
|
||||
@@ -6,6 +6,7 @@
|
||||
/obj/effect/clockwork/overlay/examine(mob/user)
|
||||
if(linked)
|
||||
linked.examine(user)
|
||||
return ..()
|
||||
|
||||
/obj/effect/clockwork/overlay/ex_act()
|
||||
return FALSE
|
||||
|
||||
@@ -196,15 +196,15 @@
|
||||
..()
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
var/structure_number = 0
|
||||
for(var/obj/structure/destructible/clockwork/powered/P in range(SIGIL_ACCESS_RANGE, src))
|
||||
structure_number++
|
||||
to_chat(user, "<span class='[get_clockwork_power() ? "brass":"alloy"]'>It is storing <b>[DisplayPower(get_clockwork_power())]</b> of shared power, \
|
||||
and <b>[structure_number]</b> clockwork structure[structure_number == 1 ? " is":"s are"] in range.</span>")
|
||||
. += "<span class='[get_clockwork_power() ? "brass":"alloy"]'>It is storing <b>[DisplayPower(get_clockwork_power())]</b> of shared power, \
|
||||
and <b>[structure_number]</b> clockwork structure[structure_number == 1 ? " is":"s are"] in range.</span>"
|
||||
if(iscyborg(user))
|
||||
to_chat(user, "<span class='brass'>You can recharge from the [sigil_name] by crossing it.</span>")
|
||||
. += "<span class='brass'>You can recharge from the [sigil_name] by crossing it.</span>"
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/sigil_effects(mob/living/L)
|
||||
if(is_servant_of_ratvar(L))
|
||||
@@ -279,13 +279,13 @@
|
||||
var/static/list/damage_heal_order = list(CLONE, TOX, BURN, BRUTE, OXY) //we heal damage in this order
|
||||
|
||||
/obj/effect/clockwork/sigil/vitality/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "<span class='[GLOB.clockwork_vitality ? "inathneq_small":"alloy"]'>It has access to <b>[GLOB.ratvar_awakens ? "INFINITE":GLOB.clockwork_vitality]</b> units of vitality.</span>")
|
||||
. += "<span class='[GLOB.clockwork_vitality ? "inathneq_small":"alloy"]'>It has access to <b>[GLOB.ratvar_awakens ? "INFINITE":GLOB.clockwork_vitality]</b> units of vitality.</span>"
|
||||
if(GLOB.ratvar_awakens)
|
||||
to_chat(user, "<span class='inathneq_small'>It can revive Servants at no cost!</span>")
|
||||
. += "<span class='inathneq_small'>It can revive Servants at no cost!</span>"
|
||||
else
|
||||
to_chat(user, "<span class='inathneq_small'>It can revive Servants at a cost of <b>[revive_cost]</b> vitality.</span>")
|
||||
. += "<span class='inathneq_small'>It can revive Servants at a cost of <b>[revive_cost]</b> vitality.</span>"
|
||||
|
||||
/obj/effect/clockwork/sigil/vitality/sigil_effects(mob/living/L)
|
||||
if((is_servant_of_ratvar(L) && L.suiciding) || sigil_active)
|
||||
|
||||
@@ -53,9 +53,9 @@
|
||||
return TRUE
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "<span class='brass'>It has [uses] use\s remaining.</span>")
|
||||
. += "<span class='brass'>It has [uses] use\s remaining.</span>"
|
||||
|
||||
//ATTACK GHOST IGNORING PARENT RETURN VALUE
|
||||
/obj/effect/clockwork/spatial_gateway/attack_ghost(mob/user)
|
||||
|
||||
@@ -20,5 +20,5 @@
|
||||
/obj/item/clockwork/examine(mob/user)
|
||||
if((is_servant_of_ratvar(user) || isobserver(user)) && clockwork_desc)
|
||||
desc = clockwork_desc
|
||||
..()
|
||||
. = ..()
|
||||
desc = initial(desc)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/obj/item/clockwork/component/examine(mob/user)
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "<span class='[get_component_span(component_id)]'>You can activate this in your hand to break it down for power.</span>")
|
||||
. += "<span class='[get_component_span(component_id)]'>You can activate this in your hand to break it down for power.</span>"
|
||||
|
||||
/obj/item/clockwork/component/attack_self(mob/living/user)
|
||||
if(is_servant_of_ratvar(user))
|
||||
@@ -181,9 +181,9 @@
|
||||
pixel_y = rand(-sprite_shift, sprite_shift)
|
||||
|
||||
/obj/item/clockwork/alloy_shards/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "<span class='brass'>Can be consumed by a replica fabricator as a source of power.</span>")
|
||||
. += "<span class='brass'>Can be consumed by a replica fabricator as a source of power.</span>"
|
||||
|
||||
/obj/item/clockwork/alloy_shards/proc/replace_name_desc()
|
||||
name = "replicant alloy shard"
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
armour_penetration = initial(armour_penetration)
|
||||
|
||||
/obj/item/clockwork/weapon/ratvarian_spear/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "<span class='inathneq_small'>Attacks on living non-Servants will generate <b>[bonus_burn]</b> units of vitality.</span>")
|
||||
. += "<span class='inathneq_small'>Attacks on living non-Servants will generate <b>[bonus_burn]</b> units of vitality.</span>"
|
||||
if(!iscyborg(user))
|
||||
to_chat(user, "<span class='brass'>Throwing the spear will do massive damage, break the spear, and knock down the target.</span>")
|
||||
. += "<span class='brass'>Throwing the spear will do massive damage, break the spear, and knock down the target.</span>"
|
||||
|
||||
/obj/item/clockwork/weapon/ratvarian_spear/attack(mob/living/target, mob/living/carbon/human/user)
|
||||
. = ..()
|
||||
|
||||
@@ -121,15 +121,15 @@
|
||||
adjust_clockwork_power(0.1) //Slabs serve as very weak power generators on their own (no, not enough to justify spamming them)
|
||||
|
||||
/obj/item/clockwork/slab/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
if(LAZYLEN(quickbound))
|
||||
for(var/i in 1 to quickbound.len)
|
||||
if(!quickbound[i])
|
||||
continue
|
||||
var/datum/clockwork_scripture/quickbind_slot = quickbound[i]
|
||||
to_chat(user, "<b>Quickbind</b> button: <span class='[get_component_span(initial(quickbind_slot.primary_component))]'>[initial(quickbind_slot.name)]</span>.")
|
||||
to_chat(user, "<b>Available power:</b> <span class='bold brass'>[DisplayPower(get_clockwork_power())].</span>")
|
||||
. += "<b>Quickbind</b> button: <span class='[get_component_span(initial(quickbind_slot.primary_component))]'>[initial(quickbind_slot.name)]</span>."
|
||||
. += "<b>Available power:</b> <span class='bold brass'>[DisplayPower(get_clockwork_power())].</span>"
|
||||
|
||||
//Slab actions; Hierophant, Quickbind
|
||||
/obj/item/clockwork/slab/ui_action_click(mob/user, action)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
/obj/item/clockwork/construct_chassis/examine(mob/user)
|
||||
clockwork_desc = "[clockwork_desc]<br>[construct_desc]"
|
||||
..()
|
||||
. = ..()
|
||||
clockwork_desc = initial(clockwork_desc)
|
||||
|
||||
//ATTACK HAND IGNORING PARENT RETURN VALUE
|
||||
|
||||
@@ -44,16 +44,16 @@
|
||||
speed_multiplier = initial(speed_multiplier)
|
||||
|
||||
/obj/item/clockwork/replica_fabricator/examine(mob/living/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "<span class='brass'>Can be used to replace walls, floors, tables, windows, windoors, and airlocks with Clockwork variants.</span>")
|
||||
to_chat(user, "<span class='brass'>Can construct Clockwork Walls on Clockwork Floors and deconstruct Clockwork Walls to Clockwork Floors.</span>")
|
||||
. += "<span class='brass'>Can be used to replace walls, floors, tables, windows, windoors, and airlocks with Clockwork variants.</span>"
|
||||
. += "<span class='brass'>Can construct Clockwork Walls on Clockwork Floors and deconstruct Clockwork Walls to Clockwork Floors.</span>"
|
||||
if(uses_power)
|
||||
to_chat(user, "<span class='alloy'>It can consume floor tiles, rods, metal, and plasteel for power at rates of <b>2:[DisplayPower(POWER_ROD)]</b>, <b>1:[DisplayPower(POWER_ROD)]</b>, <b>1:[DisplayPower(POWER_METAL)]</b>, \
|
||||
and <b>1:[DisplayPower(POWER_PLASTEEL)]</b>, respectively.</span>")
|
||||
to_chat(user, "<span class='alloy'>It can also consume brass sheets for power at a rate of <b>1:[DisplayPower(POWER_FLOOR)]</b>.</span>")
|
||||
to_chat(user, "<span class='alloy'>Use it in-hand to produce <b>5</b> brass sheets at a cost of <b>[DisplayPower(POWER_WALL_TOTAL)]</b> power.</span>")
|
||||
to_chat(user, "<span class='alloy'>It has access to <b>[DisplayPower(get_clockwork_power())]</b> of power.</span>")
|
||||
. += "<span class='alloy'>It can consume floor tiles, rods, metal, and plasteel for power at rates of <b>2:[DisplayPower(POWER_ROD)]</b>, <b>1:[DisplayPower(POWER_ROD)]</b>, <b>1:[DisplayPower(POWER_METAL)]</b>, \
|
||||
and <b>1:[DisplayPower(POWER_PLASTEEL)]</b>, respectively.</span>"
|
||||
. += "<span class='alloy'>It can also consume brass sheets for power at a rate of <b>1:[DisplayPower(POWER_FLOOR)]</b>.</span>"
|
||||
. += "<span class='alloy'>Use it in-hand to produce <b>5</b> brass sheets at a cost of <b>[DisplayPower(POWER_WALL_TOTAL)]</b> power.</span>"
|
||||
. += "<span class='alloy'>It has access to <b>[DisplayPower(get_clockwork_power())]</b> of power.</span>"
|
||||
|
||||
/obj/item/clockwork/replica_fabricator/attack_self(mob/living/user)
|
||||
if(is_servant_of_ratvar(user))
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
/obj/item/mmi/posibrain/soul_vessel/examine(mob/user)
|
||||
if((is_servant_of_ratvar(user) || isobserver(user)) && clockwork_desc)
|
||||
desc = clockwork_desc
|
||||
..()
|
||||
. = ..()
|
||||
desc = initial(desc)
|
||||
|
||||
/obj/item/mmi/posibrain/soul_vessel/transfer_personality(mob/candidate)
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
msg += "[addendum]\n"
|
||||
msg += "*---------*</span>"
|
||||
|
||||
to_chat(user, msg)
|
||||
return list(msg)
|
||||
|
||||
/mob/living/simple_animal/hostile/clockwork/proc/examine_info() //Override this on a by-mob basis to have unique examine info
|
||||
return
|
||||
|
||||
@@ -43,10 +43,10 @@
|
||||
var/can_see_clockwork = is_servant_of_ratvar(user) || isobserver(user)
|
||||
if(can_see_clockwork && clockwork_desc)
|
||||
desc = clockwork_desc
|
||||
..()
|
||||
. = ..()
|
||||
desc = initial(desc)
|
||||
if(unanchored_icon)
|
||||
to_chat(user, "<span class='notice'>[src] is [anchored ? "":"not "]secured to the floor.</span>")
|
||||
. += "<span class='notice'>[src] is [anchored ? "":"not "]secured to the floor.</span>"
|
||||
|
||||
/obj/structure/destructible/clockwork/examine_status(mob/user)
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
@@ -155,12 +155,12 @@
|
||||
var/inactive_icon = null //icon_state while process() isn't being called
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
if(!can_access_clockwork_power(src))
|
||||
to_chat(user, "<span class='alloy'>It has no access to the power network! Create a sigil of transmission nearby.</span>")
|
||||
. += "<span class='alloy'>It has no access to the power network! Create a sigil of transmission nearby.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='brass'>It has access to <b>[DisplayPower(get_clockwork_power())]</b> of power.</span>")
|
||||
. += "<span class='brass'>It has access to <b>[DisplayPower(get_clockwork_power())]</b> of power.</span>"
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/Destroy()
|
||||
SSfastprocess.processing -= src
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
return ..()
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "It's wired to:")
|
||||
. += "It's wired to:"
|
||||
if(!wired_to.len)
|
||||
to_chat(user, "Nothing.")
|
||||
. += "Nothing."
|
||||
else
|
||||
for(var/V in wired_to)
|
||||
var/obj/O = V
|
||||
var/distance = get_dist(src, O)
|
||||
to_chat(user, "[O] ([distance == 0 ? "same tile" : "[distance] tiles [dir2text(get_dir(src, O))]"])")
|
||||
. += "[O] ([distance == 0 ? "same tile" : "[distance] tiles [dir2text(get_dir(src, O))]"])"
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/wrench_act(mob/living/user, obj/item/I)
|
||||
if(!is_servant_of_ratvar(user))
|
||||
|
||||
+11
-11
@@ -223,34 +223,34 @@
|
||||
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/examine(mob/user)
|
||||
icon_state = "spatial_gateway" //cheat wildly by pretending to have an icon
|
||||
..()
|
||||
. = ..()
|
||||
icon_state = initial(icon_state)
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
if(!active)
|
||||
to_chat(user, "<span class='big'><b>Time until the Ark's activation:</b> [DisplayTimeText(get_arrival_time())]</span>")
|
||||
. += "<span class='big'><b>Time until the Ark's activation:</b> [DisplayTimeText(get_arrival_time())]</span>"
|
||||
else
|
||||
if(grace_period)
|
||||
to_chat(user, "<span class='big'><b>Crew grace period time remaining:</b> [DisplayTimeText(get_arrival_time())]</span>")
|
||||
. += "<span class='big'><b>Crew grace period time remaining:</b> [DisplayTimeText(get_arrival_time())]</span>"
|
||||
else
|
||||
to_chat(user, "<span class='big'><b>Time until Ratvar's arrival:</b> [DisplayTimeText(get_arrival_time())]</span>")
|
||||
. += "<span class='big'><b>Time until Ratvar's arrival:</b> [DisplayTimeText(get_arrival_time())]</span>"
|
||||
switch(progress_in_seconds)
|
||||
if(-INFINITY to GATEWAY_REEBE_FOUND)
|
||||
to_chat(user, "<span class='heavy_brass'>The Ark is feeding power into the bluespace field.</span>")
|
||||
. += "<span class='heavy_brass'>The Ark is feeding power into the bluespace field.</span>"
|
||||
if(GATEWAY_REEBE_FOUND to GATEWAY_RATVAR_COMING)
|
||||
to_chat(user, "<span class='heavy_brass'>The field is ripping open a copy of itself in Ratvar's prison.</span>")
|
||||
. += "<span class='heavy_brass'>The field is ripping open a copy of itself in Ratvar's prison.</span>"
|
||||
if(GATEWAY_RATVAR_COMING to INFINITY)
|
||||
to_chat(user, "<span class='heavy_brass'>With the bluespace field established, Ratvar is preparing to come through!</span>")
|
||||
. += "<span class='heavy_brass'>With the bluespace field established, Ratvar is preparing to come through!</span>"
|
||||
else
|
||||
if(!active)
|
||||
to_chat(user, "<span class='warning'>Whatever it is, it doesn't seem to be active.</span>")
|
||||
. += "<span class='warning'>Whatever it is, it doesn't seem to be active.</span>"
|
||||
else
|
||||
switch(progress_in_seconds)
|
||||
if(-INFINITY to GATEWAY_REEBE_FOUND)
|
||||
to_chat(user, "<span class='warning'>You see a swirling bluespace anomaly steadily growing in intensity.</span>")
|
||||
. += "<span class='warning'>You see a swirling bluespace anomaly steadily growing in intensity.</span>"
|
||||
if(GATEWAY_REEBE_FOUND to GATEWAY_RATVAR_COMING)
|
||||
to_chat(user, "<span class='warning'>The anomaly is stable, and you can see flashes of something from it.</span>")
|
||||
. += "<span class='warning'>The anomaly is stable, and you can see flashes of something from it.</span>"
|
||||
if(GATEWAY_RATVAR_COMING to INFINITY)
|
||||
to_chat(user, "<span class='boldwarning'>The anomaly is stable! Something is coming through!</span>")
|
||||
. += "<span class='boldwarning'>The anomaly is stable! Something is coming through!</span>"
|
||||
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/process()
|
||||
if(seconds_until_activation == -1) //we never do anything
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
toggle(1)
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/clockwork_obelisk/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "<span class='nzcrentr_small'>It requires <b>[DisplayPower(hierophant_cost)]</b> to broadcast over the Hierophant Network, and <b>[DisplayPower(gateway_cost)]</b> to open a Spatial Gateway.</span>")
|
||||
. += "<span class='nzcrentr_small'>It requires <b>[DisplayPower(hierophant_cost)]</b> to broadcast over the Hierophant Network, and <b>[DisplayPower(gateway_cost)]</b> to open a Spatial Gateway.</span>"
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/clockwork_obelisk/can_be_unfasten_wrench(mob/user, silent)
|
||||
if(active)
|
||||
|
||||
@@ -47,16 +47,16 @@
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/structure/destructible/clockwork/heralds_beacon/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(isobserver(user) || is_servant_of_ratvar(user))
|
||||
if(!available)
|
||||
if(!GLOB.ratvar_approaches)
|
||||
to_chat(user, "<span class='bold alloy'>It can no longer be activated.</span>")
|
||||
. += "<span class='bold alloy'>It can no longer be activated.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='bold neovgre_small'>It has been activated!</span>")
|
||||
. += "<span class='bold neovgre_small'>It has been activated!</span>"
|
||||
else
|
||||
to_chat(user, "<span class='brass'>There are <b>[time_remaining]</b> second[time_remaining != 1 ? "s" : ""] remaining to vote.</span>")
|
||||
to_chat(user, "<span class='big brass'>There are <b>[voters.len]/[votes_needed]</b> votes to activate the beacon!</span>")
|
||||
. += "<span class='brass'>There are <b>[time_remaining]</b> second[time_remaining != 1 ? "s" : ""] remaining to vote.</span>"
|
||||
. += "<span class='big brass'>There are <b>[voters.len]/[votes_needed]</b> votes to activate the beacon!</span>"
|
||||
|
||||
/obj/structure/destructible/clockwork/heralds_beacon/attack_hand(mob/living/user)
|
||||
. = ..()
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
var/mania_cost = 150
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/mania_motor/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
to_chat(user, "<span class='sevtug_small'>It requires <b>[DisplayPower(mania_cost)]</b> to run.</span>")
|
||||
. += "<span class='sevtug_small'>It requires <b>[DisplayPower(mania_cost)]</b> to run.</span>"
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/mania_motor/forced_disable(bad_effects)
|
||||
if(active)
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
return ..()
|
||||
|
||||
/obj/structure/destructible/clockwork/ocular_warden/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='brass'>[target ? "<b>It's fixated on [target]!</b>" : "Its gaze is wandering aimlessly."]</span>")
|
||||
. = ..()
|
||||
. += "<span class='brass'>[target ? "<b>It's fixated on [target]!</b>" : "Its gaze is wandering aimlessly."]</span>"
|
||||
|
||||
/obj/structure/destructible/clockwork/ocular_warden/hulk_damage()
|
||||
return 25
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
. = ..()
|
||||
|
||||
/obj/structure/destructible/clockwork/stargazer/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_servant_of_ratvar(user))
|
||||
to_chat(user, "<span class='nzcrentr_small'>Generates <b>[DisplayPower(STARGAZER_POWER)]</b> per second while viewing starlight within [STARGAZER_RANGE] tiles.</span>")
|
||||
. += "<span class='nzcrentr_small'>Generates <b>[DisplayPower(STARGAZER_POWER)]</b> per second while viewing starlight within [STARGAZER_RANGE] tiles.</span>"
|
||||
if(star_light_star_bright)
|
||||
to_chat(user, "[is_servant_of_ratvar(user) ? "<span class='nzcrentr_small'>It can see starlight!</span>" : "It's shining brilliantly!"]")
|
||||
. += "[is_servant_of_ratvar(user) ? "<span class='nzcrentr_small'>It can see starlight!</span>" : "It's shining brilliantly!"]"
|
||||
|
||||
/obj/structure/destructible/clockwork/stargazer/process()
|
||||
star_light_star_bright = check_starlight()
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
"<span class='danger'>You start tenderly lifting [skewee] off of [src]...</span>")
|
||||
if(!do_after(user, 60, target = skewee))
|
||||
skewee.visible_message("<span class='warning'>[skewee] painfully slides back down [src].</span>")
|
||||
skewee.emote("moan")
|
||||
skewee.say("Oof, ouch owwie!!", forced = "fail brass skewer removal")
|
||||
return
|
||||
skewee.visible_message("<span class='danger'>[skewee] comes free of [src] with a squelching pop!</span>", \
|
||||
"<span class='boldannounce'>You come free of [src]!</span>")
|
||||
|
||||
@@ -651,7 +651,7 @@
|
||||
/obj/item/melee/blood_magic/manipulator/examine(mob/user)
|
||||
. = ..()
|
||||
if(iscultist(user))
|
||||
to_chat(user, "<span class='cultitalic'>The [name] currently has <b>[uses]</b> blood charges left.</span>")
|
||||
. += "<span class='cultitalic'>The [name] currently has <b>[uses]</b> blood charges left.</span>"
|
||||
|
||||
/obj/item/melee/blood_magic/manipulator/afterattack(atom/target, mob/living/carbon/human/user, proximity)
|
||||
if(proximity)
|
||||
|
||||
@@ -119,10 +119,11 @@
|
||||
AddComponent(/datum/component/butchering, 50, 80)
|
||||
|
||||
/obj/item/twohanded/required/cult_bastard/examine(mob/user)
|
||||
. = ..()
|
||||
if(contents.len)
|
||||
desc+="<br><b>There are [contents.len] souls trapped within the sword's core.</b>"
|
||||
. += "<br><b>There are [contents.len] souls trapped within the sword's core.</b>"
|
||||
else
|
||||
desc+="<br>The sword appears to be quite lifeless."
|
||||
. += "<br>The sword appears to be quite lifeless."
|
||||
|
||||
/obj/item/twohanded/required/cult_bastard/can_be_pulled(user)
|
||||
return FALSE
|
||||
@@ -557,11 +558,11 @@
|
||||
var/uses = 4
|
||||
|
||||
/obj/item/cult_shift/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(uses)
|
||||
to_chat(user, "<span class='cult'>It has [uses] use\s remaining.</span>")
|
||||
. += "<span class='cult'>It has [uses] use\s remaining.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='cult'>It seems drained.</span>")
|
||||
. += "<span class='cult'>It seems drained.</span>"
|
||||
|
||||
/obj/item/cult_shift/proc/handle_teleport_grab(turf/T, mob/user)
|
||||
var/mob/living/carbon/C = user
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
|
||||
|
||||
/obj/structure/destructible/cult/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>\The [src] is [anchored ? "":"not "]secured to the floor.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>\The [src] is [anchored ? "":"not "]secured to the floor.</span>"
|
||||
if((iscultist(user) || isobserver(user)) && cooldowntime > world.time)
|
||||
to_chat(user, "<span class='cult italic'>The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
. += "<span class='cult italic'>The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>"
|
||||
|
||||
/obj/structure/destructible/cult/examine_status(mob/user)
|
||||
if(iscultist(user) || isobserver(user))
|
||||
|
||||
@@ -15,12 +15,12 @@ This file contains the cult dagger and rune list code
|
||||
GLOB.rune_types[initial(R.cultist_name)] = R //Uses the cultist name for displaying purposes
|
||||
|
||||
/obj/item/melee/cultblade/dagger/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(iscultist(user) || isobserver(user))
|
||||
to_chat(user, "<span class='cult'>The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar'Sie.</span>")
|
||||
to_chat(user, "<span class='cult'>Striking a cult structure will unanchor or reanchor it.</span>")
|
||||
to_chat(user, "<span class='cult'>Striking another cultist with it will purge holy water from them.</span>")
|
||||
to_chat(user, "<span class='cult'>Striking a noncultist, however, will tear their flesh.</span>")
|
||||
. += "<span class='cult'>The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar'Sie.</span>"
|
||||
. += "<span class='cult'>Striking a cult structure will unanchor or reanchor it.</span>"
|
||||
. += "<span class='cult'>Striking another cultist with it will purge holy water from them.</span>"
|
||||
. += "<span class='cult'>Striking a noncultist, however, will tear their flesh.</span>"
|
||||
|
||||
/obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user)
|
||||
if(iscultist(M))
|
||||
|
||||
@@ -47,13 +47,13 @@ Runes can either be invoked by one's self or with many different cultists. Each
|
||||
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/silicons, "cult_runes", I)
|
||||
|
||||
/obj/effect/rune/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(iscultist(user) || user.stat == DEAD) //If they're a cultist or a ghost, tell them the effects
|
||||
to_chat(user, "<b>Name:</b> [cultist_name]")
|
||||
to_chat(user, "<b>Effects:</b> [capitalize(cultist_desc)]")
|
||||
to_chat(user, "<b>Required Acolytes:</b> [req_cultists_text ? "[req_cultists_text]":"[req_cultists]"]")
|
||||
. += "<b>Name:</b> [cultist_name]"
|
||||
. += "<b>Effects:</b> [capitalize(cultist_desc)]"
|
||||
. += "<b>Required Acolytes:</b> [req_cultists_text ? "[req_cultists_text]":"[req_cultists]"]"
|
||||
if(req_keyword && keyword)
|
||||
to_chat(user, "<b>Keyword:</b> [keyword]")
|
||||
. += "<b>Keyword:</b> [keyword]"
|
||||
|
||||
/obj/effect/rune/attackby(obj/I, mob/user, params)
|
||||
if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user))
|
||||
@@ -525,10 +525,10 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
var/static/revives_used = -SOULS_TO_REVIVE // Cultists get one "free" revive
|
||||
|
||||
/obj/effect/rune/raise_dead/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(iscultist(user) || user.stat == DEAD)
|
||||
var/revive_number = LAZYLEN(GLOB.sacrificed) - revives_used
|
||||
to_chat(user, "<b>Revives Remaining:</b> [revive_number]")
|
||||
. += "<b>Revives Remaining:</b> [revive_number]"
|
||||
|
||||
/obj/effect/rune/raise_dead/invoke(var/list/invokers)
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -622,11 +622,11 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
GLOB.wall_runes += src
|
||||
|
||||
/obj/effect/rune/wall/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(density && iscultist(user))
|
||||
var/datum/timedevent/TMR = active_timers[1]
|
||||
if(TMR)
|
||||
to_chat(user, "<span class='cultitalic'>The air above this rune has hardened into a barrier that will last [DisplayTimeText(TMR.timeToRun - world.time)].</span>")
|
||||
. += "<span class='cultitalic'>The air above this rune has hardened into a barrier that will last [DisplayTimeText(TMR.timeToRun - world.time)].</span>"
|
||||
|
||||
/obj/effect/rune/wall/Destroy()
|
||||
GLOB.wall_runes -= src
|
||||
|
||||
@@ -64,26 +64,25 @@
|
||||
|
||||
|
||||
/mob/living/carbon/true_devil/examine(mob/user)
|
||||
var/msg = "<span class='info'>*---------*\nThis is [icon2html(src, user)] <b>[src]</b>!\n"
|
||||
. = list("<span class='info'>*---------*\nThis is [icon2html(src, user)] <b>[src]</b>!")
|
||||
|
||||
//Left hand items
|
||||
for(var/obj/item/I in held_items)
|
||||
if(!(I.item_flags & ABSTRACT))
|
||||
msg += "It is holding [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))].\n"
|
||||
. += "It is holding [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))]."
|
||||
|
||||
//Braindead
|
||||
if(!client && stat != DEAD)
|
||||
msg += "The devil seems to be in deep contemplation.\n"
|
||||
. += "The devil seems to be in deep contemplation."
|
||||
|
||||
//Damaged
|
||||
if(stat == DEAD)
|
||||
msg += "<span class='deadsay'>The hellfire seems to have been extinguished, for now at least.</span>\n"
|
||||
. += "<span class='deadsay'>The hellfire seems to have been extinguished, for now at least.</span>"
|
||||
else if(health < (maxHealth/10))
|
||||
msg += "<span class='warning'>You can see hellfire inside its gaping wounds.</span>\n"
|
||||
. += "<span class='warning'>You can see hellfire inside its gaping wounds.</span>"
|
||||
else if(health < (maxHealth/2))
|
||||
msg += "<span class='warning'>You can see hellfire inside its wounds.</span>\n"
|
||||
msg += "*---------*</span>"
|
||||
to_chat(user, msg)
|
||||
. += "<span class='warning'>You can see hellfire inside its wounds.</span>"
|
||||
. += "*---------*</span>"
|
||||
|
||||
/mob/living/carbon/true_devil/IsAdvancedToolUser()
|
||||
return 1
|
||||
|
||||
@@ -97,14 +97,14 @@ the new instance inside the host to be updated to the template's stats.
|
||||
|
||||
|
||||
/mob/camera/disease/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(isobserver(user))
|
||||
to_chat(user, "<span class='notice'>[src] has [points]/[total_points] adaptation points.</span>")
|
||||
to_chat(user, "<span class='notice'>[src] has the following unlocked:</span>")
|
||||
. += "<span class='notice'>[src] has [points]/[total_points] adaptation points.</span>"
|
||||
. += "<span class='notice'>[src] has the following unlocked:</span>"
|
||||
for(var/A in purchased_abilities)
|
||||
var/datum/disease_ability/B = A
|
||||
if(istype(B))
|
||||
to_chat(user, "<span class='notice'>[B.name]</span>")
|
||||
. += "<span class='notice'>[B.name]</span>"
|
||||
|
||||
/mob/camera/disease/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
||||
return
|
||||
|
||||
@@ -52,12 +52,11 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/morph/examine(mob/user)
|
||||
if(morphed)
|
||||
form.examine(user) // Refactor examine to return desc so it's static? Not sure if worth it
|
||||
. = form.examine(user)
|
||||
if(get_dist(user,src)<=3)
|
||||
to_chat(user, "<span class='warning'>It doesn't look quite right...</span>")
|
||||
. += "<span class='warning'>It doesn't look quite right...</span>"
|
||||
else
|
||||
..()
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/morph/med_hud_set_health()
|
||||
if(morphed && !isliving(form))
|
||||
|
||||
@@ -55,9 +55,9 @@
|
||||
/obj/machinery/nuclearbomb/examine(mob/user)
|
||||
. = ..()
|
||||
if(exploding)
|
||||
to_chat(user, "It is in the process of exploding. Perhaps reviewing your affairs is in order.")
|
||||
. += "It is in the process of exploding. Perhaps reviewing your affairs is in order."
|
||||
if(timing)
|
||||
to_chat(user, "There are [get_time_left()] seconds until detonation.")
|
||||
. += "There are [get_time_left()] seconds until detonation."
|
||||
|
||||
/obj/machinery/nuclearbomb/selfdestruct
|
||||
name = "station self-destruct terminal"
|
||||
@@ -472,9 +472,9 @@
|
||||
/obj/machinery/nuclearbomb/beer/examine(mob/user)
|
||||
. = ..()
|
||||
if(keg.reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>It has [keg.reagents.total_volume] unit\s left.</span>")
|
||||
. += "<span class='notice'>It has [keg.reagents.total_volume] unit\s left.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='danger'>It's empty.</span>")
|
||||
. += "<span class='danger'>It's empty.</span>"
|
||||
|
||||
/obj/machinery/nuclearbomb/beer/attackby(obj/item/W, mob/user, params)
|
||||
if(W.is_refillable())
|
||||
@@ -615,7 +615,7 @@ This is here to make the tiles around the station mininuke change when it's arme
|
||||
var/captain = user.mind && user.mind.assigned_role == "Captain"
|
||||
var/nukie = user.mind && user.mind.has_antag_datum(/datum/antagonist/nukeop)
|
||||
if(ghost || captain || nukie)
|
||||
to_chat(user, "<span class='warning'>The serial numbers on [src] are incorrect.</span>")
|
||||
. += "<span class='warning'>The serial numbers on [src] are incorrect.</span>"
|
||||
|
||||
/obj/item/disk/nuclear/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/claymore/highlander) && !fake)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
var/mode = TRACK_NUKE_DISK
|
||||
|
||||
/obj/item/pinpointer/nuke/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
var/msg = "Its tracking indicator reads "
|
||||
switch(mode)
|
||||
if(TRACK_NUKE_DISK)
|
||||
@@ -13,10 +13,10 @@
|
||||
msg += "\"vasvygengbefuvc\"."
|
||||
else
|
||||
msg = "Its tracking indicator is blank."
|
||||
to_chat(user, msg)
|
||||
. += msg
|
||||
for(var/obj/machinery/nuclearbomb/bomb in GLOB.machines)
|
||||
if(bomb.timing)
|
||||
to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()].")
|
||||
. += "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()]."
|
||||
|
||||
/obj/item/pinpointer/nuke/process()
|
||||
..()
|
||||
|
||||
@@ -368,11 +368,11 @@
|
||||
scatter()
|
||||
|
||||
/obj/item/ectoplasm/revenant/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(inert)
|
||||
to_chat(user, "<span class='revennotice'>It seems inert.</span>")
|
||||
. += "<span class='revennotice'>It seems inert.</span>"
|
||||
else if(reforming)
|
||||
to_chat(user, "<span class='revenwarning'>It is shifting and distorted. It would be wise to destroy this.</span>")
|
||||
. += "<span class='revenwarning'>It is shifting and distorted. It would be wise to destroy this.</span>"
|
||||
|
||||
/obj/item/ectoplasm/revenant/proc/reform()
|
||||
if(QDELETED(src) || QDELETED(revenant) || inert)
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
owner.special_role = special_role
|
||||
if(give_objectives)
|
||||
forge_traitor_objectives()
|
||||
RegisterSignal(owner.current, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
|
||||
finalize_traitor()
|
||||
..()
|
||||
|
||||
@@ -48,12 +49,18 @@
|
||||
A.verbs -= /mob/living/silicon/ai/proc/choose_modules
|
||||
A.malf_picker.remove_malf_verbs(A)
|
||||
qdel(A.malf_picker)
|
||||
|
||||
UnregisterSignal(owner.current, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
|
||||
SSticker.mode.traitors -= owner
|
||||
if(!silent && owner.current)
|
||||
to_chat(owner.current,"<span class='userdanger'> You are no longer the [special_role]! </span>")
|
||||
owner.special_role = null
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/traitor/proc/handle_hearing(datum/source, list/hearing_args)
|
||||
var/message = hearing_args[HEARING_MESSAGE]
|
||||
message = GLOB.syndicate_code_phrase_regex.Replace(message, "<span class='blue'>$1</span>")
|
||||
message = GLOB.syndicate_code_response_regex.Replace(message, "<span class='red'>$1</span>")
|
||||
hearing_args[HEARING_MESSAGE] = message
|
||||
|
||||
/datum/antagonist/traitor/proc/add_objective(datum/objective/O)
|
||||
objectives += O
|
||||
|
||||
@@ -35,15 +35,15 @@
|
||||
to_chat(user, "<span class='danger'>An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly.</span>")
|
||||
|
||||
/obj/item/soulstone/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(usability || iscultist(user) || iswizard(user) || isobserver(user))
|
||||
if (old_shard)
|
||||
to_chat(user, "<span class='cult'>A soulstone, used to capture a soul, either from dead humans or from freed shades.</span>")
|
||||
. += "<span class='cult'>A soulstone, used to capture a soul, either from dead humans or from freed shades.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='cult'>A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades.</span>")
|
||||
to_chat(user, "<span class='cult'>The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade.</span>")
|
||||
. += "<span class='cult'>A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades.</span>"
|
||||
. += "<span class='cult'>The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade.</span>"
|
||||
if(spent)
|
||||
to_chat(user, "<span class='cult'>This shard is spent; it is now just a creepy rock.</span>")
|
||||
. += "<span class='cult'>This shard is spent; it is now just a creepy rock.</span>"
|
||||
|
||||
/obj/item/soulstone/Destroy() //Stops the shade from being qdel'd immediately and their ghost being sent back to the arrival shuttle.
|
||||
for(var/mob/living/simple_animal/shade/A in src)
|
||||
@@ -102,13 +102,13 @@
|
||||
desc = "A wicked machine used by those skilled in magical arts. It is inactive."
|
||||
|
||||
/obj/structure/constructshell/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(iscultist(user) || iswizard(user) || user.stat == DEAD)
|
||||
to_chat(user, "<span class='cult'>A construct shell, used to house bound souls from a soulstone.</span>")
|
||||
to_chat(user, "<span class='cult'>Placing a soulstone with a soul into this shell allows you to produce your choice of the following:</span>")
|
||||
to_chat(user, "<span class='cult'>An <b>Artificer</b>, which can produce <b>more shells and soulstones</b>, as well as fortifications.</span>")
|
||||
to_chat(user, "<span class='cult'>A <b>Wraith</b>, which does high damage and can jaunt through walls, though it is quite fragile.</span>")
|
||||
to_chat(user, "<span class='cult'>A <b>Juggernaut</b>, which is very hard to kill and can produce temporary walls, but is slow.</span>")
|
||||
. += "<span class='cult'>A construct shell, used to house bound souls from a soulstone.</span>"
|
||||
. += "<span class='cult'>Placing a soulstone with a soul into this shell allows you to produce your choice of the following:</span>"
|
||||
. += "<span class='cult'>An <b>Artificer</b>, which can produce <b>more shells and soulstones</b>, as well as fortifications.</span>"
|
||||
. += "<span class='cult'>A <b>Wraith</b>, which does high damage and can jaunt through walls, though it is quite fragile.</span>"
|
||||
. += "<span class='cult'>A <b>Juggernaut</b>, which is very hard to kill and can produce temporary walls, but is slow.</span>"
|
||||
|
||||
/obj/structure/constructshell/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, /obj/item/soulstone))
|
||||
|
||||
@@ -602,11 +602,11 @@
|
||||
var/list/categories = list()
|
||||
|
||||
/obj/item/spellbook/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(owner)
|
||||
to_chat(user, "There is a small signature on the front cover: \"[owner]\".")
|
||||
. += "There is a small signature on the front cover: \"[owner]\"."
|
||||
else
|
||||
to_chat(user, "It appears to have no author.")
|
||||
. += "It appears to have no author."
|
||||
|
||||
/obj/item/spellbook/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -112,8 +112,8 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/assembly/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>\The [src] [secured? "is secured and ready to be used!" : "can be attached to other things."]</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>\The [src] [secured? "is secured and ready to be used!" : "can be attached to other things."]</span>"
|
||||
|
||||
|
||||
/obj/item/assembly/attack_self(mob/user)
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
var/cooldown = FALSE //Door cooldowns
|
||||
|
||||
/obj/item/assembly/control/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(id)
|
||||
to_chat(user, "<span class='notice'>Its channel ID is '[id]'.</span>")
|
||||
. += "<span class='notice'>Its channel ID is '[id]'.</span>"
|
||||
|
||||
/obj/item/assembly/control/activate()
|
||||
cooldown = TRUE
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
var/alarm_health = HEALTH_THRESHOLD_CRIT
|
||||
|
||||
/obj/item/assembly/health/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Use a multitool to swap between \"detect death\" mode and \"detect critical state\" mode.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>Use a multitool to swap between \"detect death\" mode and \"detect critical state\" mode.</span>"
|
||||
|
||||
/obj/item/assembly/health/activate()
|
||||
if(!..())
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
. = ..()
|
||||
|
||||
/obj/item/assembly/infra/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>The infrared trigger is [on?"on":"off"].</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>The infrared trigger is [on?"on":"off"].</span>"
|
||||
|
||||
/obj/item/assembly/infra/activate()
|
||||
if(!..())
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
|
||||
|
||||
/obj/item/assembly/mousetrap/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>The pressure plate is [armed?"primed":"safe"].</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>The pressure plate is [armed?"primed":"safe"].</span>"
|
||||
|
||||
/obj/item/assembly/mousetrap/activate()
|
||||
if(..())
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
. = ..()
|
||||
|
||||
/obj/item/assembly/prox_sensor/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>The proximity sensor is [timing ? "arming" : (scanning ? "armed" : "disarmed")].</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>The proximity sensor is [timing ? "arming" : (scanning ? "armed" : "disarmed")].</span>"
|
||||
|
||||
/obj/item/assembly/prox_sensor/activate()
|
||||
if(!..())
|
||||
|
||||
@@ -169,8 +169,8 @@ Code:
|
||||
return TRUE
|
||||
|
||||
/obj/item/assembly/signaler/receiver/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>The radio receiver is [on?"on":"off"].</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>The radio receiver is [on?"on":"off"].</span>"
|
||||
|
||||
/obj/item/assembly/signaler/receiver/receive_signal(datum/signal/signal)
|
||||
if(!on)
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
. = ..()
|
||||
|
||||
/obj/item/assembly/timer/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>The timer is [timing ? "counting down from [time]":"set for [time] seconds"].</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>The timer is [timing ? "counting down from [time]":"set for [time] seconds"].</span>"
|
||||
|
||||
/obj/item/assembly/timer/activate()
|
||||
if(!..())
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
"voice sensor")
|
||||
|
||||
/obj/item/assembly/voice/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.</span>"
|
||||
|
||||
/obj/item/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
. = ..()
|
||||
|
||||
@@ -222,11 +222,11 @@
|
||||
. = ..()
|
||||
switch(buildstage)
|
||||
if(0)
|
||||
to_chat(user, "<span class='notice'>It is missing air alarm electronics.</span>")
|
||||
. += "<span class='notice'>It is missing air alarm electronics.</span>"
|
||||
if(1)
|
||||
to_chat(user, "<span class='notice'>It is missing wiring.</span>")
|
||||
. += "<span class='notice'>It is missing wiring.</span>"
|
||||
if(2)
|
||||
to_chat(user, "<span class='notice'>Alt-click to [locked ? "unlock" : "lock"] the interface.</span>")
|
||||
. += "<span class='notice'>Alt-click to [locked ? "unlock" : "lock"] the interface.</span>"
|
||||
|
||||
/obj/machinery/airalarm/ui_status(mob/user)
|
||||
if(user.has_unlimited_silicon_privilege && aidisabled)
|
||||
|
||||
@@ -41,11 +41,11 @@ Pipelines + Other Objects -> Pipe network
|
||||
var/on = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_type_in_list(src, GLOB.ventcrawl_machinery) && isliving(user))
|
||||
var/mob/living/L = user
|
||||
if(L.ventcrawler)
|
||||
to_chat(L, "<span class='notice'>Alt-click to crawl through it.</span>")
|
||||
. += "<span class='notice'>Alt-click to crawl through it.</span>"
|
||||
|
||||
/obj/machinery/atmospherics/New(loc, process = TRUE, setdir)
|
||||
if(!isnull(setdir))
|
||||
|
||||
@@ -30,8 +30,8 @@ Thus, the two variables affect pump operation are set in New():
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
|
||||
. += "<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>"
|
||||
. += "<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/CtrlClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
|
||||
@@ -30,8 +30,8 @@ Thus, the two variables affect pump operation are set in New():
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
|
||||
. += "<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>"
|
||||
. += "<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>"
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/volume_pump/CtrlClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
desc = "Very useful for filtering gasses."
|
||||
density = FALSE
|
||||
can_unwrench = TRUE
|
||||
var/target_pressure = ONE_ATMOSPHERE
|
||||
var/transfer_rate = MAX_TRANSFER_RATE
|
||||
var/filter_type = null
|
||||
var/frequency = 0
|
||||
var/datum/radio_frequency/radio_connection
|
||||
@@ -14,8 +14,8 @@
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
|
||||
. += "<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>"
|
||||
. += "<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its flow rate.</span>"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/CtrlClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
@@ -31,8 +31,8 @@
|
||||
var/area/A = get_area(src)
|
||||
var/turf/T = get_turf(src)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
|
||||
target_pressure = MAX_OUTPUT_PRESSURE
|
||||
to_chat(user,"<span class='notice'>You maximize the pressure on the [src].</span>")
|
||||
transfer_rate = MAX_TRANSFER_RATE
|
||||
to_chat(user,"<span class='notice'>You maximize the flow rate on the [src].</span>")
|
||||
investigate_log("Filter, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
|
||||
message_admins("Filter, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
|
||||
|
||||
@@ -150,24 +150,19 @@
|
||||
var/datum/gas_mixture/air2 = airs[2]
|
||||
var/datum/gas_mixture/air3 = airs[3]
|
||||
|
||||
var/output_starting_pressure = air3.return_pressure()
|
||||
var/input_starting_pressure = air1.return_pressure()
|
||||
|
||||
if(output_starting_pressure >= target_pressure)
|
||||
//No need to transfer if target is already full!
|
||||
if((input_starting_pressure < 0.01))
|
||||
return
|
||||
|
||||
//Calculate necessary moles to transfer using PV=nRT
|
||||
|
||||
var/pressure_delta = target_pressure - output_starting_pressure
|
||||
var/transfer_moles
|
||||
|
||||
if(air1.temperature > 0)
|
||||
transfer_moles = pressure_delta*air3.volume/(air1.temperature * R_IDEAL_GAS_EQUATION)
|
||||
var/transfer_ratio = transfer_rate/air1.volume
|
||||
|
||||
//Actually transfer the gas
|
||||
|
||||
if(transfer_moles > 0)
|
||||
var/datum/gas_mixture/removed = air1.remove(transfer_moles)
|
||||
if(transfer_ratio > 0)
|
||||
var/datum/gas_mixture/removed = air1.remove_ratio(transfer_ratio)
|
||||
|
||||
if(!removed)
|
||||
return
|
||||
@@ -188,10 +183,13 @@
|
||||
removed.gases[filter_type] = 0
|
||||
GAS_GARBAGE_COLLECT(removed.gases)
|
||||
|
||||
var/datum/gas_mixture/target = (air2.return_pressure() < target_pressure ? air2 : air1) //if there's no room for the filtered gas; just leave it in air1
|
||||
var/datum/gas_mixture/target = (air2.return_pressure() < 9000 ? air2 : air1)
|
||||
target.merge(filtered_out)
|
||||
|
||||
air3.merge(removed)
|
||||
if(air3.return_pressure() <= 9000)
|
||||
air3.merge(removed)
|
||||
else
|
||||
air1.merge(removed) // essentially just leaving it in
|
||||
|
||||
update_parents()
|
||||
|
||||
@@ -209,8 +207,8 @@
|
||||
/obj/machinery/atmospherics/components/trinary/filter/ui_data()
|
||||
var/data = list()
|
||||
data["on"] = on
|
||||
data["pressure"] = round(target_pressure)
|
||||
data["max_pressure"] = round(MAX_OUTPUT_PRESSURE)
|
||||
data["rate"] = round(transfer_rate)
|
||||
data["max_rate"] = round(MAX_TRANSFER_RATE)
|
||||
|
||||
data["filter_types"] = list()
|
||||
data["filter_types"] += list(list("name" = "Nothing", "path" = "", "selected" = !filter_type))
|
||||
@@ -227,21 +225,21 @@
|
||||
on = !on
|
||||
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS)
|
||||
. = TRUE
|
||||
if("pressure")
|
||||
var/pressure = params["pressure"]
|
||||
if(pressure == "max")
|
||||
pressure = MAX_OUTPUT_PRESSURE
|
||||
if("rate")
|
||||
var/rate = params["rate"]
|
||||
if(rate == "max")
|
||||
rate = MAX_TRANSFER_RATE
|
||||
. = TRUE
|
||||
else if(pressure == "input")
|
||||
pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null
|
||||
if(!isnull(pressure) && !..())
|
||||
else if(rate == "input")
|
||||
rate = input("New transfer rate (0-[MAX_TRANSFER_RATE] L/s):", name, transfer_rate) as num|null
|
||||
if(!isnull(rate) && !..())
|
||||
. = TRUE
|
||||
else if(text2num(pressure) != null)
|
||||
pressure = text2num(pressure)
|
||||
else if(text2num(rate) != null)
|
||||
rate = text2num(rate)
|
||||
. = TRUE
|
||||
if(.)
|
||||
target_pressure = CLAMP(pressure, 0, MAX_OUTPUT_PRESSURE)
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS)
|
||||
transfer_rate = CLAMP(rate, 0, MAX_TRANSFER_RATE)
|
||||
investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", INVESTIGATE_ATMOS)
|
||||
if("filter")
|
||||
filter_type = null
|
||||
var/filter_name = "nothing"
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
//node 3 is the outlet, nodes 1 & 2 are intakes
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
|
||||
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
|
||||
. += "<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>"
|
||||
. += "<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>"
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/mixer/CtrlClick(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
|
||||
@@ -262,14 +262,14 @@
|
||||
open_machine()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(occupant)
|
||||
if(on)
|
||||
to_chat(user, "Someone's inside [src]!")
|
||||
. += "Someone's inside [src]!"
|
||||
else
|
||||
to_chat(user, "You can barely make out a form floating in [src].")
|
||||
. += "You can barely make out a form floating in [src]."
|
||||
else
|
||||
to_chat(user, "[src] seems empty.")
|
||||
. += "[src] seems empty."
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/MouseDrop_T(mob/target, mob/user)
|
||||
if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
|
||||
|
||||
@@ -424,9 +424,9 @@
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(welded)
|
||||
to_chat(user, "It seems welded shut.")
|
||||
. += "It seems welded shut."
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/power_change()
|
||||
..()
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/broadcast_status()
|
||||
if(!radio_connection)
|
||||
return FALSE
|
||||
|
||||
|
||||
var/list/f_types = list()
|
||||
for(var/path in GLOB.meta_gas_ids)
|
||||
f_types += list(list("gas_id" = GLOB.meta_gas_ids[path], "gas_name" = GLOB.meta_gas_names[path], "enabled" = (path in filter_types)))
|
||||
@@ -205,7 +205,7 @@
|
||||
air_contents.merge(filtered_out)
|
||||
tile.assume_air(removed)
|
||||
tile.air_update_turf()
|
||||
|
||||
|
||||
else //Just siphoning all air
|
||||
|
||||
var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume)
|
||||
@@ -303,11 +303,11 @@
|
||||
if(. && on && is_operational())
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench [src], turn it off first!</span>")
|
||||
return FALSE
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(welded)
|
||||
to_chat(user, "It seems welded shut.")
|
||||
. += "It seems welded shut."
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/can_crawl_through()
|
||||
return !welded
|
||||
|
||||
@@ -111,8 +111,8 @@
|
||||
. = "The connect error light is blinking."
|
||||
|
||||
/obj/machinery/meter/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, status())
|
||||
. = ..()
|
||||
. += status()
|
||||
|
||||
/obj/machinery/meter/wrench_act(mob/user, obj/item/I)
|
||||
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
|
||||
|
||||
@@ -33,9 +33,9 @@
|
||||
set_active(active) //Force overlay update.
|
||||
|
||||
/obj/machinery/atmospherics/miner/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(broken)
|
||||
to_chat(user, "Its debug output is printing \"[broken_message]\".")
|
||||
. += "Its debug output is printing \"[broken_message]\"."
|
||||
|
||||
/obj/machinery/atmospherics/miner/proc/check_operation()
|
||||
if(!active)
|
||||
|
||||
@@ -88,10 +88,10 @@
|
||||
replace_tank(user, TRUE)
|
||||
|
||||
/obj/machinery/portable_atmospherics/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(holding)
|
||||
to_chat(user, "<span class='notice'>\The [src] contains [holding]. Alt-click [src] to remove it.</span>")
|
||||
to_chat(user, "<span class='notice'>Click [src] with another gas tank to hot swap [holding].</span>")
|
||||
. += "<span class='notice'>\The [src] contains [holding]. Alt-click [src] to remove it.</span>"
|
||||
. += "<span class='notice'>Click [src] with another gas tank to hot swap [holding].</span>"
|
||||
|
||||
/obj/machinery/portable_atmospherics/proc/replace_tank(mob/living/user, close_valve, obj/item/tank/new_tank)
|
||||
if(holding)
|
||||
|
||||
@@ -201,10 +201,10 @@
|
||||
wanted_types = list(/obj/item/restraints/legcuffs/bola)
|
||||
|
||||
/datum/bounty/item/assistant/metalshields
|
||||
name = "Metal Shields"
|
||||
name = "Metal Shields" //I didnt realise how much work it was to make these, you need 2 Cloth, 3 Leather, Tools, 10 Metal, and a Cable Coil Stack for each one.
|
||||
description = "NT is testing the effects of electricity on clowns wielding metal shields. We have clowns, and we have electricity. Send us the shields."
|
||||
reward = 1400
|
||||
required_count = 4
|
||||
reward = 3000
|
||||
required_count = 2
|
||||
wanted_types = list(/obj/item/shield/makeshift)
|
||||
|
||||
/datum/bounty/item/assistant/toolbelts
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
var/obj/machinery/computer/cargo/cargo_console = null
|
||||
|
||||
/obj/item/export_scanner/examine(user)
|
||||
..()
|
||||
. = ..()
|
||||
if(!cargo_console)
|
||||
to_chat(user, "<span class='notice'>[src] is not currently linked to a cargo console.</span>")
|
||||
. += "<span class='notice'>[src] is not currently linked to a cargo console.</span>"
|
||||
|
||||
/obj/item/export_scanner/afterattack(obj/O, mob/user, proximity)
|
||||
. = ..()
|
||||
|
||||
@@ -45,11 +45,11 @@
|
||||
update_status()
|
||||
|
||||
/obj/item/supplypod_beacon/examine(user)
|
||||
..()
|
||||
. = ..()
|
||||
if(!express_console)
|
||||
to_chat(user, "<span class='notice'>[src] is not currently linked to a Express Supply console.</span>")
|
||||
. += "<span class='notice'>[src] is not currently linked to a Express Supply console.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Alt-click to unlink it from the Express Supply console.</span>")
|
||||
. += "<span class='notice'>Alt-click to unlink it from the Express Supply console.</span>"
|
||||
|
||||
/obj/item/supplypod_beacon/Destroy()
|
||||
if(express_console)
|
||||
@@ -61,7 +61,7 @@
|
||||
express_console.beacon = null
|
||||
express_console = null
|
||||
update_status(SP_UNLINK)
|
||||
update_status(SP_UNREADY)
|
||||
update_status(SP_UNREADY)
|
||||
|
||||
/obj/item/supplypod_beacon/proc/link_console(obj/machinery/computer/cargo/express/C, mob/living/user)
|
||||
if (C.beacon)//if new console has a beacon, then...
|
||||
@@ -91,5 +91,5 @@
|
||||
if(new_beacon_name)
|
||||
name += " ([tag])"
|
||||
return
|
||||
else
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -111,3 +111,6 @@
|
||||
/datum/client_colour/monochrome
|
||||
colour = list(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
|
||||
priority = INFINITY //we can't see colors anyway!
|
||||
|
||||
/datum/client_colour/monochrome/trance
|
||||
priority = 1
|
||||
@@ -49,7 +49,7 @@
|
||||
if(!(damagetype & (BRUTELOSS | FIRELOSS | TOXLOSS | OXYLOSS) ))
|
||||
adjustOxyLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
||||
|
||||
death(FALSE, penalize = TRUE)
|
||||
death(FALSE)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
if(ismecha(M.loc)) // stops inventory actions in a mech
|
||||
return
|
||||
|
||||
if(!M.incapacitated() && loc == M && istype(over_object, /obj/screen/inventory/hand))
|
||||
if(!. && !M.incapacitated() && loc == M && istype(over_object, /obj/screen/inventory/hand))
|
||||
var/obj/screen/inventory/hand/H = over_object
|
||||
if(M.putItemFromInventoryInHandIfPossible(src, H.held_index))
|
||||
add_fingerprint(usr)
|
||||
@@ -120,9 +120,9 @@
|
||||
user.vv_edit_var(variable, user_vars_to_edit[variable])
|
||||
|
||||
/obj/item/clothing/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(damaged_clothes)
|
||||
to_chat(user, "<span class='warning'>It looks damaged!</span>")
|
||||
. += "<span class='warning'>It looks damaged!</span>"
|
||||
var/datum/component/storage/pockets = GetComponent(/datum/component/storage)
|
||||
if(pockets)
|
||||
var/list/how_cool_are_your_threads = list("<span class='notice'>")
|
||||
@@ -137,7 +137,7 @@
|
||||
if(pockets.silent)
|
||||
how_cool_are_your_threads += "Adding or removing items from [src] makes no noise.\n"
|
||||
how_cool_are_your_threads += "</span>"
|
||||
to_chat(user, how_cool_are_your_threads.Join())
|
||||
. += how_cool_are_your_threads.Join()
|
||||
|
||||
/obj/item/clothing/obj_break(damage_flag)
|
||||
if(!damaged_clothes)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
/obj/item/clothing/ears/earmuffs/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/earhealing)
|
||||
AddElement(/datum/element/earhealing)
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
|
||||
|
||||
/obj/item/clothing/ears/headphones
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/clothing/glasses/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(glass_colour_type && ishuman(user))
|
||||
to_chat(user, "<span class='notice'>Alt-click to toggle its colors.</span>")
|
||||
. += "<span class='notice'>Alt-click to toggle its colors.</span>"
|
||||
|
||||
/obj/item/clothing/glasses/visor_toggling()
|
||||
..()
|
||||
@@ -362,7 +362,7 @@
|
||||
desc = replacetext(desc, "person", "man")
|
||||
else if(user.gender == FEMALE)
|
||||
desc = replacetext(desc, "person", "woman")
|
||||
..()
|
||||
. = ..()
|
||||
desc = desk
|
||||
|
||||
/obj/item/clothing/glasses/thermal/eyepatch
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/obj/item/clothing/glasses/phantomthief
|
||||
name = "suspicious paper mask"
|
||||
desc = "A cheap, Syndicate-branded paper face mask. They'll never see it coming."
|
||||
alternate_worn_icon = 'icons/mob/mask.dmi'
|
||||
icon = 'icons/obj/clothing/masks.dmi'
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja"
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/wearertargeting/phantomthief)
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate
|
||||
name = "suspicious plastic mask"
|
||||
desc = "A cheap, bulky, Syndicate-branded plastic face mask. You have to break in to break out."
|
||||
var/nextadrenalinepop
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/examine(mob/user)
|
||||
. = ..()
|
||||
if(user.get_item_by_slot(SLOT_GLASSES) == src)
|
||||
if(world.time >= nextadrenalinepop)
|
||||
. += "<span class='notice'>The built-in adrenaline injector is ready for use.</span>"
|
||||
else
|
||||
. += "<span class='notice'>[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again."
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate)
|
||||
if(istype(user) && combatmodestate && world.time >= nextadrenalinepop)
|
||||
nextadrenalinepop = world.time + 5 MINUTES
|
||||
user.reagents.add_reagent("syndicateadrenals", 5)
|
||||
user.playsound_local(user, 'sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE)
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(!istype(user))
|
||||
return
|
||||
if(slot != SLOT_GLASSES)
|
||||
return
|
||||
RegisterSignal(user, COMSIG_COMBAT_TOGGLED, .proc/injectadrenaline)
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/dropped(mob/user)
|
||||
. = ..()
|
||||
if(!istype(user))
|
||||
return
|
||||
UnregisterSignal(user, COMSIG_COMBAT_TOGGLED)
|
||||
@@ -41,14 +41,14 @@
|
||||
|
||||
H.update_inv_head()
|
||||
|
||||
///Special throw_impact for hats to frisbee hats at people to place them on their heads/attempt to de-hat them.
|
||||
///Special throw_impact for hats to frisbee hats at people to place them on their heads.
|
||||
/obj/item/clothing/head/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing)
|
||||
. = ..()
|
||||
///if the thrown object's target zone isn't the head
|
||||
if(thrownthing.target_zone != BODY_ZONE_HEAD)
|
||||
return
|
||||
///ignore any hats with the tinfoil counter-measure enabled
|
||||
if(clothing_flags & ANTI_TINFOIL_MANEUVER)
|
||||
///ignore any hats with downsides when worn
|
||||
if(clothing_flags & IGNORE_HAT_TOSS)
|
||||
return
|
||||
///if the hat happens to be capable of holding contents and has something in it. mostly to prevent super cheesy stuff like stuffing a mini-bomb in a hat and throwing it
|
||||
if(LAZYLEN(contents))
|
||||
@@ -57,20 +57,8 @@
|
||||
var/mob/living/carbon/H = hit_atom
|
||||
if(istype(H.head, /obj/item))
|
||||
var/obj/item/WH = H.head
|
||||
///check if the item has NODROP
|
||||
if(HAS_TRAIT(WH, TRAIT_NODROP))
|
||||
H.visible_message("<span class='warning'>[src] bounces off [H]'s [WH.name]!", "<span class='warning'>[src] bounces off your [WH.name], falling to the floor.</span>")
|
||||
return
|
||||
///check if the item is an actual clothing head item, since some non-clothing items can be worn
|
||||
if(istype(WH, /obj/item/clothing/head))
|
||||
var/obj/item/clothing/head/WHH = WH
|
||||
///SNUG_FIT hats are immune to being knocked off
|
||||
if(WHH.clothing_flags & SNUG_FIT)
|
||||
H.visible_message("<span class='warning'>[src] bounces off [H]'s [WHH.name]!", "<span class='warning'>[src] bounces off your [WHH.name], falling to the floor.</span>")
|
||||
return
|
||||
///if the hat manages to knock something off
|
||||
if(H.dropItemToGround(WH))
|
||||
H.visible_message("<span class='warning'>[src] knocks [WH] off [H]'s head!</span>", "<span class='warning'>[WH] is suddenly knocked off your head by [src]!</span>")
|
||||
H.visible_message("<span class='warning'>[src] bounces off [H]'s [WH.name]!", "<span class='warning'>[src] bounces off your [WH.name], falling to the floor.</span>")
|
||||
return
|
||||
if(H.equip_to_slot_if_possible(src, SLOT_HEAD, FALSE, TRUE))
|
||||
H.visible_message("<span class='notice'>[src] lands neatly on [H]'s head!", "<span class='notice'>[src] lands perfectly onto your head!</span>")
|
||||
return
|
||||
@@ -84,6 +72,8 @@
|
||||
R.visible_message("<span class='notice'>[src] lands neatly on top of [R].", "<span class='notice'>[src] lands perfectly on top of you.</span>")
|
||||
R.place_on_head(src) //hats aren't designed to snugly fit borg heads or w/e so they'll always manage to knock eachother off
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/head/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
if(!isinhands)
|
||||
|
||||
@@ -13,14 +13,12 @@
|
||||
/obj/item/clothing/head/collectable/slime
|
||||
name = "collectable slime cap!"
|
||||
desc = "It just latches right in place!"
|
||||
clothing_flags = SNUG_FIT
|
||||
icon_state = "slime"
|
||||
dynamic_hair_suffix = ""
|
||||
|
||||
/obj/item/clothing/head/collectable/xenom
|
||||
name = "collectable xenomorph helmet!"
|
||||
desc = "Hiss hiss hiss!"
|
||||
clothing_flags = SNUG_FIT
|
||||
icon_state = "xenom"
|
||||
|
||||
/obj/item/clothing/head/collectable/chef
|
||||
@@ -72,14 +70,13 @@
|
||||
desc = "A collectable welding helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this helmet is done so at the owner's own risk!"
|
||||
icon_state = "welding"
|
||||
item_state = "welding"
|
||||
clothing_flags = SNUG_FIT
|
||||
resistance_flags = NONE
|
||||
|
||||
/obj/item/clothing/head/collectable/slime
|
||||
name = "collectable slime hat"
|
||||
desc = "Just like a real brain slug!"
|
||||
icon_state = "headslime"
|
||||
item_state = "headslime"
|
||||
clothing_flags = SNUG_FIT
|
||||
|
||||
/obj/item/clothing/head/collectable/flatcap
|
||||
name = "collectable flat cap"
|
||||
@@ -123,7 +120,6 @@
|
||||
/obj/item/clothing/head/collectable/hardhat
|
||||
name = "collectable hard hat"
|
||||
desc = "WARNING! Offers no real protection, or luminosity, but damn, is it fancy!"
|
||||
clothing_flags = SNUG_FIT
|
||||
icon_state = "hardhat0_yellow"
|
||||
item_state = "hardhat0_yellow"
|
||||
|
||||
@@ -146,7 +142,7 @@
|
||||
desc = "Go Red! I mean Green! I mean Red! No Green!"
|
||||
icon_state = "thunderdome"
|
||||
item_state = "thunderdome"
|
||||
clothing_flags = SNUG_FIT
|
||||
resistance_flags = NONE
|
||||
flags_inv = HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/collectable/swat
|
||||
@@ -154,5 +150,5 @@
|
||||
desc = "That's not real blood. That's red paint." //Reference to the actual description
|
||||
icon_state = "swat"
|
||||
item_state = "swat"
|
||||
clothing_flags = SNUG_FIT
|
||||
resistance_flags = NONE
|
||||
flags_inv = HIDEHAIR
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
armor = list("melee" = 15, "bullet" = 5, "laser" = 20,"energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50)
|
||||
flags_inv = 0
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
clothing_flags = SNUG_FIT
|
||||
resistance_flags = FIRE_PROOF
|
||||
dynamic_hair_suffix = "+generic"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
|
||||
strip_delay = 60
|
||||
clothing_flags = SNUG_FIT
|
||||
resistance_flags = NONE
|
||||
flags_cover = HEADCOVERSEYES
|
||||
flags_inv = HIDEHAIR
|
||||
|
||||
|
||||
@@ -51,6 +51,11 @@
|
||||
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/caphat/beret/white
|
||||
name = "captain's white beret"
|
||||
desc = "A white beret fit for a leader."
|
||||
icon_state = "beret_captain_white"
|
||||
|
||||
//Head of Personnel
|
||||
/obj/item/clothing/head/hopcap
|
||||
name = "head of personnel's cap"
|
||||
@@ -67,6 +72,11 @@
|
||||
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/hopcap/beret/white
|
||||
name = "head of personnel's white beret"
|
||||
desc = "The symbol of true bureaucratic micromanagement, although in a fancy form."
|
||||
icon_state = "beret_white_hop"
|
||||
|
||||
//Chaplain
|
||||
/obj/item/clothing/head/nun_hood
|
||||
name = "nun hood"
|
||||
@@ -90,8 +100,8 @@
|
||||
new /obj/item/reagent_containers/food/drinks/flask/det(src)
|
||||
|
||||
/obj/item/clothing/head/fedora/det_hat/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to take a candy corn.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click to take a candy corn.</span>"
|
||||
|
||||
/obj/item/clothing/head/fedora/det_hat/AltClick(mob/user)
|
||||
if(user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
@@ -119,6 +129,16 @@
|
||||
desc = "A black beret, perfect for war veterans and dark, brooding, anti-hero mimes."
|
||||
icon_state = "beretblack"
|
||||
|
||||
/obj/item/clothing/head/beret/purple
|
||||
name = "purple beret"
|
||||
desc = "A purple beret."
|
||||
icon_state = "beret_purple"
|
||||
|
||||
/obj/item/clothing/head/beret/blue
|
||||
name = "blue beret"
|
||||
desc = "A blue beret"
|
||||
icon_state = "beret_blue"
|
||||
|
||||
/obj/item/clothing/head/beret/highlander
|
||||
desc = "That was white fabric. <i>Was.</i>"
|
||||
dog_fashion = null //THIS IS FOR SLAUGHTER, NOT PUPPIES
|
||||
@@ -146,6 +166,11 @@
|
||||
desc = "A robust beret for the Head of Security, for looking stylish while not sacrificing protection."
|
||||
icon_state = "hosberetblack"
|
||||
|
||||
/obj/item/clothing/head/HoS/beret/officer
|
||||
name = "head of security officer beret"
|
||||
desc = "A robust beret for the Head of Security, for looking stylish while not sacrificing protection."
|
||||
icon_state = "beret_centcom_officer"
|
||||
|
||||
/obj/item/clothing/head/HoS/beret/syndicate
|
||||
name = "syndicate beret"
|
||||
desc = "A black beret with thick armor padding inside. Stylish and robust."
|
||||
@@ -242,8 +267,11 @@
|
||||
name = "warden's beret"
|
||||
desc = "A special beret with the Warden's insignia emblazoned on it. For wardens with class."
|
||||
icon_state = "wardenberet"
|
||||
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
strip_delay = 60
|
||||
|
||||
/obj/item/clothing/head/beret/sec/corporatewarden
|
||||
name = "warden's corporate beret"
|
||||
desc = "A special beret with the Warden's insignia emblazoned on it. For wardens with class."
|
||||
icon_state = "beret_corporate_warden"
|
||||
|
||||
/obj/item/clothing/head/beret/sec/navyofficer
|
||||
desc = "A special beret with the security insignia emblazoned on it. For officers with class."
|
||||
@@ -261,18 +289,71 @@
|
||||
desc = "A fancy beret with a green cross, signifying your status in the station's medbay."
|
||||
icon_state = "cmoberet"
|
||||
|
||||
/obj/item/clothing/head/beret/cmo/blue
|
||||
name = "chief medical officer's blue beret"
|
||||
desc = "A fancy beret with a blue and white cross, try not to be chief malpractice officer in it."
|
||||
icon_state = "beret_blue_cmo"
|
||||
|
||||
//Medical
|
||||
/obj/item/clothing/head/beret/med
|
||||
name = "medical officer's beret"
|
||||
desc = "A fancy beret with a blue cross, smells sterile"
|
||||
icon_state = "beret_med"
|
||||
|
||||
/obj/item/clothing/head/beret/chem
|
||||
name = "chemist's beret"
|
||||
desc = "A fancy beret with a orange beaker, you're not sure if you should smell it"
|
||||
icon_state = "beret_chem"
|
||||
|
||||
/obj/item/clothing/head/beret/viro
|
||||
name = "virologist's beret"
|
||||
desc = "A fancy beret with a green gross, hopefully it's virus free!"
|
||||
icon_state = "beret_viro"
|
||||
|
||||
//Research Director
|
||||
/obj/item/clothing/head/beret/rd
|
||||
name = "research director's beret"
|
||||
desc = "A beret worn only by highly intelligent people."
|
||||
icon_state = "rdberet"
|
||||
|
||||
|
||||
|
||||
//Scientist
|
||||
/obj/item/clothing/head/beret/sci
|
||||
name = "scientist's beret"
|
||||
desc = "A Scientist's beret, looks like it's covered in slime."
|
||||
icon_state = "beret_sci"
|
||||
|
||||
//Roboticist
|
||||
/obj/item/clothing/head/beret/robo
|
||||
name = "roboticist's beret"
|
||||
desc = "A Roboticist's beret, almost more oil than hat."
|
||||
icon_state = "beret_robot"
|
||||
|
||||
|
||||
//Chief Engineer
|
||||
/obj/item/clothing/head/beret/ce
|
||||
name = "chief engineer's beret"
|
||||
desc = "A beret that will surely make you look way cooler than a hard hat, although lack of protection is the price."
|
||||
icon_state = "ceberet"
|
||||
|
||||
/obj/item/clothing/head/beret/ce/white
|
||||
name = "chief engineer's white beret"
|
||||
desc = "A beret that will surely make you look way cooler than a hard hat, although lack of protection is the price."
|
||||
icon_state = "beret_ce_white"
|
||||
|
||||
//Atmos
|
||||
/obj/item/clothing/head/beret/atmos
|
||||
name = "atmospheric technician's beret"
|
||||
desc = "An Atmospheric Technician's beret. Smells like plasma fire."
|
||||
icon_state = "beret_atmos"
|
||||
|
||||
//Engineer
|
||||
/obj/item/clothing/head/beret/eng
|
||||
name = "engineer's beret"
|
||||
desc = "An Engineer's beret, try not to lose it to space wind."
|
||||
icon_state = "beret_engineering"
|
||||
|
||||
//Quartermaster
|
||||
/obj/item/clothing/head/beret/qm
|
||||
name = "quartermaster's beret"
|
||||
|
||||
@@ -67,14 +67,12 @@
|
||||
desc = "A plastic replica of a Syndicate agent's space helmet. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
clothing_flags = SNUG_FIT
|
||||
|
||||
/obj/item/clothing/head/cueball
|
||||
name = "cueball helmet"
|
||||
desc = "A large, featureless white orb meant to be worn on your head. How do you even see out of this thing?"
|
||||
icon_state = "cueball"
|
||||
item_state="cueball"
|
||||
clothing_flags = SNUG_FIT
|
||||
flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
@@ -83,7 +81,6 @@
|
||||
desc = "A ball of white styrofoam. So festive."
|
||||
icon_state = "snowman_h"
|
||||
item_state = "snowman_h"
|
||||
clothing_flags = SNUG_FIT
|
||||
flags_cover = HEADCOVERSEYES
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
@@ -93,7 +90,6 @@
|
||||
icon_state = "justicered"
|
||||
item_state = "justicered"
|
||||
flags_inv = HIDEHAIR|HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
|
||||
clothing_flags = SNUG_FIT
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/head/justice/blue
|
||||
@@ -163,7 +159,6 @@
|
||||
icon_state = "chickenhead"
|
||||
item_state = "chickensuit"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
clothing_flags = SNUG_FIT
|
||||
|
||||
/obj/item/clothing/head/griffin
|
||||
name = "griffon head"
|
||||
@@ -171,7 +166,6 @@
|
||||
icon_state = "griffinhat"
|
||||
item_state = "griffinhat"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
clothing_flags = SNUG_FIT
|
||||
|
||||
/obj/item/clothing/head/bearpelt
|
||||
name = "bear pelt hat"
|
||||
@@ -185,7 +179,6 @@
|
||||
item_state = "xenos_helm"
|
||||
desc = "A helmet made out of chitinous alien hide."
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
clothing_flags = SNUG_FIT
|
||||
|
||||
/obj/item/clothing/head/fedora
|
||||
name = "fedora"
|
||||
@@ -306,7 +299,6 @@
|
||||
desc = "When everything's going to crab, protecting your head is the best choice."
|
||||
icon_state = "lobster_hat"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
clothing_flags = SNUG_FIT
|
||||
|
||||
/obj/item/clothing/head/drfreezehat
|
||||
name = "doctor freeze's wig"
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
clothing_flags = SNUG_FIT
|
||||
|
||||
/obj/item/clothing/head/welding/attack_self(mob/user)
|
||||
weldingvisortoggle(user)
|
||||
@@ -116,7 +115,6 @@
|
||||
item_state = "hardhat0_pumpkin"
|
||||
item_color = "pumpkin"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
clothing_flags = SNUG_FIT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
brightness_on = 2 //luminosity when on
|
||||
flags_cover = HEADCOVERSEYES
|
||||
@@ -165,7 +163,6 @@
|
||||
desc = "A helmet made out of a box."
|
||||
icon_state = "cardborg_h"
|
||||
item_state = "cardborg_h"
|
||||
clothing_flags = SNUG_FIT
|
||||
flags_cover = HEADCOVERSEYES
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
@@ -230,7 +227,6 @@
|
||||
desc = "A crude helmet made out of bronze plates. It offers very little in the way of protection."
|
||||
icon = 'icons/obj/clothing/clockwork_garb.dmi'
|
||||
icon_state = "clockwork_helmet_old"
|
||||
clothing_flags = SNUG_FIT
|
||||
flags_inv = HIDEEARS|HIDEHAIR
|
||||
armor = list("melee" = 5, "bullet" = 0, "laser" = -5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20)
|
||||
|
||||
@@ -243,7 +239,7 @@
|
||||
equip_delay_other = 140
|
||||
var/datum/brain_trauma/mild/phobia/paranoia
|
||||
var/warped = FALSE
|
||||
clothing_flags = ANTI_TINFOIL_MANEUVER
|
||||
clothing_flags = IGNORE_HAT_TOSS
|
||||
|
||||
/obj/item/clothing/head/foilhat/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -258,8 +254,8 @@
|
||||
return
|
||||
if(paranoia)
|
||||
QDEL_NULL(paranoia)
|
||||
paranoia = new()
|
||||
user.gain_trauma(paranoia, TRAUMA_RESILIENCE_MAGIC, "conspiracies")
|
||||
paranoia = new("conspiracies")
|
||||
user.gain_trauma(paranoia, TRAUMA_RESILIENCE_MAGIC)
|
||||
to_chat(user, "<span class='warning'>As you don the foiled hat, an entire world of conspiracy theories and seemingly insane ideas suddenly rush into your mind. What you once thought unbelievable suddenly seems.. undeniable. Everything is connected and nothing happens just by accident. You know too much and now they're out to get you. </span>")
|
||||
|
||||
/obj/item/clothing/head/foilhat/MouseDrop(atom/over_object)
|
||||
@@ -301,3 +297,16 @@
|
||||
. = ..()
|
||||
if(!warped)
|
||||
warp_up()
|
||||
|
||||
/obj/item/clothing/head/flakhelm //Actually the M1 Helmet
|
||||
name = "flak helmet"
|
||||
icon_state = "m1helm"
|
||||
item_state = "helmet"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0.1, "bio" = 0, "rad" = 0, "fire" = -10, "acid" = -15)
|
||||
desc = "A dilapidated helmet used in ancient wars. This one is brittle and essentially useless. An ace of spades is tucked into the band around the outer shell."
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/tiny/spacenam //So you can stuff other things in the elastic band instead of it simply being a fluff thing.
|
||||
|
||||
//The "pocket" for the M1 helmet so you can tuck things into the elastic band
|
||||
|
||||
/datum/component/storage/concrete/pockets/tiny/spacenam
|
||||
attack_hand_interact = TRUE //So you can actually see what you stuff in there
|
||||
@@ -41,8 +41,8 @@
|
||||
usr.update_inv_head() //so our mob-overlays update
|
||||
|
||||
/obj/item/clothing/head/soft/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click the cap to flip it [flipped ? "forwards" : "backwards"].</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click the cap to flip it [flipped ? "forwards" : "backwards"].</span>"
|
||||
|
||||
/obj/item/clothing/head/soft/red
|
||||
name = "red cap"
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
adjustmask(user)
|
||||
|
||||
/obj/item/clothing/mask/breath/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click [src] to adjust it.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click [src] to adjust it.</span>"
|
||||
|
||||
/obj/item/clothing/mask/breath/medical
|
||||
desc = "A close-fitting sterile mask that can be connected to an air supply."
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
if(adjusted == NORMAL_STYLE)
|
||||
. += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color())
|
||||
else
|
||||
. += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood", color = blood_DNA_to_color())
|
||||
. += mutable_appearance('icons/mob/feet_digi.dmi', "shoeblood", color = blood_DNA_to_color())
|
||||
|
||||
/obj/item/clothing/shoes/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
to_chat(user, "<span class='notice'>You cannot retrieve any bananium from the prototype shoes.</span>")
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/banana_shoes/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>The shoes are [on ? "enabled" : "disabled"].</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>The shoes are [on ? "enabled" : "disabled"].</span>"
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/banana_shoes/ui_action_click(mob/user)
|
||||
var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container)
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
return clothing_flags & NOSLIP
|
||||
|
||||
/obj/item/clothing/shoes/magboots/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "Its mag-pulse traction system appears to be [magpulse ? "enabled" : "disabled"].")
|
||||
. = ..()
|
||||
. += "Its mag-pulse traction system appears to be [magpulse ? "enabled" : "disabled"]."
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/magboots/advance
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "space helmet"
|
||||
icon_state = "spaceold"
|
||||
desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays."
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS | SNUG_FIT
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS
|
||||
item_state = "spaceold"
|
||||
permeability_coefficient = 0.01
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70)
|
||||
|
||||
@@ -799,10 +799,10 @@
|
||||
to_chat(targ, "[icon2html(src, targ)]<span class='[span]'>|[message]</span>")
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/flightsuit/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='boldnotice'>SUIT: [locked ? "LOCKED" : "UNLOCKED"]</span>")
|
||||
to_chat(user, "<span class='boldnotice'>FLIGHTPACK: [deployedpack ? "ENGAGED" : "DISENGAGED"] FLIGHTSHOES : [deployedshoes ? "ENGAGED" : "DISENGAGED"] HELMET : [suittoggled ? "ENGAGED" : "DISENGAGED"]</span>")
|
||||
to_chat(user, "<span class='boldnotice'>Its maintainence panel is [maint_panel ? "OPEN" : "CLOSED"]</span>")
|
||||
. = ..()
|
||||
. += "<span class='boldnotice'>SUIT: [locked ? "LOCKED" : "UNLOCKED"]</span>"
|
||||
. += "<span class='boldnotice'>FLIGHTPACK: [deployedpack ? "ENGAGED" : "DISENGAGED"] FLIGHTSHOES : [deployedshoes ? "ENGAGED" : "DISENGAGED"] HELMET : [suittoggled ? "ENGAGED" : "DISENGAGED"]</span>"
|
||||
. += "<span class='boldnotice'>Its maintainence panel is [maint_panel ? "OPEN" : "CLOSED"]</span>"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/flightsuit/Destroy()
|
||||
dropped()
|
||||
|
||||
@@ -958,14 +958,7 @@
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
var/mutable_appearance/energy_overlay
|
||||
if(taurmode == SNEK_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
|
||||
else if(taurmode == PAW_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
|
||||
else
|
||||
energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
|
||||
|
||||
var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
|
||||
energy_overlay.plane = ABOVE_LIGHTING_LAYER
|
||||
energy_overlay.color = energy_color
|
||||
. += energy_overlay
|
||||
@@ -995,5 +988,5 @@
|
||||
update_light()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click to recolor it.</span>"
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>There [extinguishes_left == 1 ? "is" : "are"] [extinguishes_left] extinguisher charge\s left in this suit.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>There [extinguishes_left == 1 ? "is" : "are"] [extinguishes_left] extinguisher charge\s left in this suit.</span>"
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/proc/Extinguish(mob/living/carbon/human/H)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "bio"
|
||||
desc = "A hood that protects the head and face from biological contaminants."
|
||||
permeability_coefficient = 0.01
|
||||
clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | SNUG_FIT
|
||||
clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 60, "fire" = 30, "acid" = 100)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT
|
||||
resistance_flags = ACID_PROOF
|
||||
|
||||
@@ -69,7 +69,6 @@
|
||||
icon_state = "golhood"
|
||||
desc = "A protective & concealing hood."
|
||||
armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
|
||||
clothing_flags = SNUG_FIT
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
|
||||
|
||||
/obj/item/clothing/suit/hooded/cloak/drake
|
||||
@@ -89,7 +88,6 @@
|
||||
icon_state = "dragon"
|
||||
desc = "The skull of a dragon."
|
||||
armor = list("melee" = 70, "bullet" = 30, "laser" = 50, "energy" = 40, "bomb" = 70, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100)
|
||||
clothing_flags = SNUG_FIT
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
@@ -763,6 +763,17 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS|HEAD
|
||||
alternate_worn_layer = UNDER_HEAD_LAYER
|
||||
|
||||
/obj/item/clothing/suit/flakjack
|
||||
name = "flak jacket"
|
||||
desc = "A dilapidated jacket made of a supposedly bullet-proof material (Hint: It isn't.). Smells faintly of napalm."
|
||||
icon_state = "flakjack"
|
||||
item_state = "redtag"
|
||||
blood_overlay_type = "armor"
|
||||
body_parts_covered = CHEST
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid
|
||||
|
||||
/obj/item/clothing/suit/assu_suit
|
||||
name = "DAB suit"
|
||||
desc = "A cheap replica of old SWAT armor. On its back, it is written: \"<i>Desperate Assistance Battleforce</i>\"."
|
||||
|
||||
@@ -120,8 +120,8 @@
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/suit/toggle/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "Alt-click on [src] to toggle the [togglename].")
|
||||
. = ..()
|
||||
. += "Alt-click on [src] to toggle the [togglename]."
|
||||
|
||||
//Hardsuit toggle code
|
||||
/obj/item/clothing/suit/space/hardsuit/Initialize()
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
name = "bomb hood"
|
||||
desc = "Use in case of bomb."
|
||||
icon_state = "bombsuit"
|
||||
clothing_flags = THICKMATERIAL | SNUG_FIT
|
||||
clothing_flags = THICKMATERIAL
|
||||
armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
|
||||
flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
dynamic_hair_suffix = ""
|
||||
@@ -123,7 +123,7 @@
|
||||
name = "radiation hood"
|
||||
icon_state = "rad"
|
||||
desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'"
|
||||
clothing_flags = THICKMATERIAL|SNUG_FIT
|
||||
clothing_flags = THICKMATERIAL
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30)
|
||||
strip_delay = 60
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 100, "acid" = 100)
|
||||
strip_delay = 50
|
||||
equip_delay_other = 50
|
||||
clothing_flags = SNUG_FIT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
dog_fashion = /datum/dog_fashion/head/blue_wizard
|
||||
|
||||
|
||||
@@ -137,23 +137,23 @@
|
||||
|
||||
|
||||
/obj/item/clothing/under/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(can_adjust)
|
||||
if(adjusted == ALT_STYLE)
|
||||
to_chat(user, "Alt-click on [src] to wear it normally.")
|
||||
. += "Alt-click on [src] to wear it normally."
|
||||
else
|
||||
to_chat(user, "Alt-click on [src] to wear it casually.")
|
||||
. += "Alt-click on [src] to wear it casually."
|
||||
if (has_sensor == BROKEN_SENSORS)
|
||||
to_chat(user, "Its sensors appear to be shorted out.")
|
||||
. += "Its sensors appear to be shorted out."
|
||||
else if(has_sensor > NO_SENSORS)
|
||||
switch(sensor_mode)
|
||||
if(SENSOR_OFF)
|
||||
to_chat(user, "Its sensors appear to be disabled.")
|
||||
. += "Its sensors appear to be disabled."
|
||||
if(SENSOR_LIVING)
|
||||
to_chat(user, "Its binary life sensors appear to be enabled.")
|
||||
. += "Its binary life sensors appear to be enabled."
|
||||
if(SENSOR_VITALS)
|
||||
to_chat(user, "Its vital tracker appears to be enabled.")
|
||||
. += "Its vital tracker appears to be enabled."
|
||||
if(SENSOR_COORDS)
|
||||
to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.")
|
||||
. += "Its vital tracker and tracking beacon appear to be enabled."
|
||||
if(attached_accessory)
|
||||
to_chat(user, "\A [attached_accessory] is attached to it.")
|
||||
. += "\A [attached_accessory] is attached to it."
|
||||
@@ -73,10 +73,10 @@
|
||||
to_chat(user, "[src] will be worn [above_suit ? "above" : "below"] your suit.")
|
||||
|
||||
/obj/item/clothing/accessory/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>\The [src] can be attached to a uniform. Alt-click to remove it once attached.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>\The [src] can be attached to a uniform. Alt-click to remove it once attached.</span>"
|
||||
if(initial(above_suit))
|
||||
to_chat(user, "<span class='notice'>\The [src] can be worn above or below your suit. Alt-click to toggle.</span>")
|
||||
. += "<span class='notice'>\The [src] can be worn above or below your suit. Alt-click to toggle.</span>"
|
||||
|
||||
/obj/item/clothing/accessory/waistcoat
|
||||
name = "waistcoat"
|
||||
|
||||
@@ -675,8 +675,9 @@
|
||||
var/extinguishes_left = 5
|
||||
|
||||
/obj/item/clothing/under/plasmaman/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>There are [extinguishes_left] extinguisher charges left in this suit.</span>")
|
||||
. = ..()
|
||||
. += "<span class='notice'>There are [extinguishes_left] extinguisher charges left in this suit.</span>"
|
||||
|
||||
/obj/item/clothing/under/plasmaman/proc/Extinguish(mob/living/carbon/human/H)
|
||||
if(!istype(H))
|
||||
return
|
||||
|
||||
@@ -200,9 +200,9 @@
|
||||
log = list()
|
||||
|
||||
/obj/item/detective_scanner/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(LAZYLEN(log) && !scanning)
|
||||
to_chat(user, "<span class='notice'>Alt-click to clear scanner logs.</span>")
|
||||
. += "<span class='notice'>Alt-click to clear scanner logs.</span>"
|
||||
|
||||
/obj/item/detective_scanner/proc/displayDetectiveScanResults(mob/living/user)
|
||||
// No need for can-use checks since the action button should do proper checks
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
/datum/round_event_control/wizard/canSpawnEvent(var/players_amt, var/gamemode)
|
||||
if(istype(SSticker.mode, /datum/game_mode/dynamic))
|
||||
var/var/datum/game_mode/dynamic/mode = SSticker.mode
|
||||
var/datum/game_mode/dynamic/mode = SSticker.mode
|
||||
if (locate(/datum/dynamic_ruleset/midround/from_ghosts/wizard) in mode.executed_rules)
|
||||
return can_be_midround_wizard && ..()
|
||||
return ..()
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
name = "valentine - To: [recipient] From: [sender]"
|
||||
|
||||
/obj/item/valentine/examine(mob/user)
|
||||
. = ..()
|
||||
if(in_range(user, src) || isobserver(user))
|
||||
if( !(ishuman(user) || isobserver(user) || issilicon(user)) )
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(message)]</BODY></HTML>", "window=[name]")
|
||||
@@ -146,7 +147,7 @@
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[message]</BODY></HTML>", "window=[name]")
|
||||
onclose(user, "[name]")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It is too far away.</span>")
|
||||
. += "<span class='notice'>It is too far away.</span>"
|
||||
|
||||
/obj/item/valentine/attack_self(mob/user)
|
||||
user.examinate(src)
|
||||
|
||||
@@ -292,7 +292,7 @@
|
||||
add_atom_colour("#ffffff", FIXED_COLOUR_PRIORITY)
|
||||
|
||||
/obj/structure/spacevine/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
var/text = "This one is a"
|
||||
if(mutations.len)
|
||||
for(var/A in mutations)
|
||||
@@ -301,7 +301,7 @@
|
||||
else
|
||||
text += " normal"
|
||||
text += " vine."
|
||||
to_chat(user, text)
|
||||
. += text
|
||||
|
||||
/obj/structure/spacevine/Destroy()
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
volume = 80
|
||||
|
||||
var/ingMax = 12
|
||||
var/ingMax = 32
|
||||
var/list/ingredients = list()
|
||||
var/ingredients_placement = INGREDIENTS_FILL
|
||||
var/customname = "custom"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/customizable/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
var/ingredients_listed = ""
|
||||
for(var/obj/item/reagent_containers/food/snacks/ING in ingredients)
|
||||
ingredients_listed += "[ING.name], "
|
||||
@@ -32,8 +32,10 @@
|
||||
if(ingredients.len>5)
|
||||
size = "big"
|
||||
if(ingredients.len>8)
|
||||
size = "huge"
|
||||
if(ingredients.len>16)
|
||||
size = "monster"
|
||||
to_chat(user, "It contains [ingredients.len?"[ingredients_listed]":"no ingredient, "]making a [size]-sized [initial(name)].")
|
||||
. += "It contains [ingredients.len?"[ingredients_listed]":"no ingredient, "]making a [size]-sized [initial(name)]."
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user, params)
|
||||
if(!istype(I, /obj/item/reagent_containers/food/snacks/customizable) && istype(I, /obj/item/reagent_containers/food/snacks))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user