mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-24 20:46:29 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2018-02-16
# Conflicts: # code/_onclick/hud/screen_objects.dm # code/game/objects/items/weapons/storage/storage.dm # code/game/objects/structures/crates_lockers/closets/secure/medical.dm # code/modules/admin/admin_verbs.dm # code/modules/clothing/clothing.dm # code/modules/clothing/gloves/color.dm # code/modules/lore_codex/codex.dm # code/modules/mob/living/simple_animal/aliens/alien.dm # code/modules/mob/living/simple_animal/animals/cat.dm # code/modules/mob/living/simple_animal/animals/goose.dm # code/modules/mob/living/simple_animal/simple_animal.dm # code/modules/mob/mob_defines.dm # code/modules/projectiles/projectile/special.dm # html/changelogs/.all_changelog.yml # maps/southern_cross/southern_cross-1.dmm # maps/southern_cross/southern_cross-7.dmm # vorestation.dme
This commit is contained in:
@@ -44,7 +44,7 @@
|
||||
|
||||
if(paddles && paddles.loc == src) //in case paddles got destroyed somehow.
|
||||
new_overlays += "[initial(icon_state)]-paddles"
|
||||
if(bcell)
|
||||
if(bcell && paddles)
|
||||
if(bcell.check_charge(paddles.chargecost))
|
||||
if(paddles.combat)
|
||||
new_overlays += "[initial(icon_state)]-combat"
|
||||
|
||||
@@ -80,7 +80,7 @@ var/list/GPS_list = list()
|
||||
|
||||
var/turf/curr = get_turf(src)
|
||||
var/area/my_area = get_area(src)
|
||||
dat += "Current location: [my_area.name] <b>([curr.x], [curr.y], [curr.z])</b>"
|
||||
dat += "Current location: [my_area.name] <b>([curr.x], [curr.y], [using_map.get_zlevel_name(curr.z)])</b>"
|
||||
dat += "[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'. <a href='?src=\ref[src];tag=1'>\[Change Tag\]</a> \
|
||||
<a href='?src=\ref[src];range=1'>\[Toggle Scan Range\]</a> \
|
||||
[can_hide_signal ? "<a href='?src=\ref[src];hide=1'>\[Toggle Signal Visibility\]</a>":""]"
|
||||
@@ -103,16 +103,17 @@ var/list/GPS_list = list()
|
||||
var/area_name = their_area.name
|
||||
if(istype(their_area, /area/submap))
|
||||
area_name = "Unknown Area" // Avoid spoilers.
|
||||
var/coord = "[T.x], [T.y], [T.z]"
|
||||
var/degrees = round(Get_Angle(curr, T))
|
||||
var/Z_name = using_map.get_zlevel_name(T.z)
|
||||
var/direction = uppertext(dir2text(get_dir(curr, T)))
|
||||
var/distance = get_dist(curr, T)
|
||||
var/local = curr.z == T.z ? TRUE : FALSE
|
||||
if(!direction)
|
||||
direction = "CENTER"
|
||||
degrees = "N/A"
|
||||
|
||||
signals += " [G.gps_tag]: [area_name] ([coord]) [local ? "Dist: [distance]m Dir: [degrees]° ([direction])":""]"
|
||||
if(istype(T, /obj/item/device/gps/internal/poi))
|
||||
signals += " [G.gps_tag]: [area_name] [local ? "Dist: [round(distance, 10)]m [direction])" : "in \the [Z_name]"]"
|
||||
else
|
||||
signals += " [G.gps_tag]: [area_name] [local ? "Dist: [round(distance, 10)]m [direction])" : "in \the [Z_name]"]"
|
||||
|
||||
if(signals.len)
|
||||
dat += "Detected signals;"
|
||||
@@ -179,15 +180,6 @@ var/list/GPS_list = list()
|
||||
/obj/item/device/gps/explorer/on
|
||||
tracking = TRUE
|
||||
|
||||
/obj/item/device/gps/syndie
|
||||
icon_state = "gps-syndie"
|
||||
gps_tag = "NULL"
|
||||
desc = "A positioning system that has extended range and can detect other GPS device signals without revealing its own. How that works is best left a mystery. Alt+click to toggle power."
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_BLUESPACE = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
long_range = TRUE
|
||||
hide_signal = TRUE
|
||||
can_hide_signal = TRUE
|
||||
|
||||
/obj/item/device/gps/robot
|
||||
icon_state = "gps-b"
|
||||
gps_tag = "SYNTH0"
|
||||
@@ -207,6 +199,72 @@ var/list/GPS_list = list()
|
||||
gps_tag = "NT_BASE"
|
||||
desc = "A homing signal from NanoTrasen's outpost."
|
||||
|
||||
/obj/item/device/gps/internal/alien_vessel
|
||||
gps_tag = "Mysterious Signal"
|
||||
desc = "A signal that seems forboding."
|
||||
/obj/item/device/gps/internal/poi
|
||||
gps_tag = "Unidentified Signal"
|
||||
desc = "A signal that seems forboding."
|
||||
|
||||
/obj/item/device/gps/syndie
|
||||
icon_state = "gps-syndie"
|
||||
gps_tag = "NULL"
|
||||
desc = "A positioning system that has extended range and can detect other GPS device signals without revealing its own. How that works is best left a mystery. Alt+click to toggle power."
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_BLUESPACE = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
long_range = TRUE
|
||||
hide_signal = TRUE
|
||||
can_hide_signal = TRUE
|
||||
|
||||
/obj/item/device/gps/syndie/display(mob/user)
|
||||
if(!tracking)
|
||||
to_chat(user, "The device is off. Alt-click it to turn it on.")
|
||||
return
|
||||
if(emped)
|
||||
to_chat(user, "It's busted!")
|
||||
return
|
||||
|
||||
var/list/dat = list()
|
||||
|
||||
var/turf/curr = get_turf(src)
|
||||
var/area/my_area = get_area(src)
|
||||
dat += "Current location: [my_area.name] <b>([curr.x], [curr.y], [using_map.get_zlevel_name(curr.z)])</b>"
|
||||
dat += "[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'. <a href='?src=\ref[src];tag=1'>\[Change Tag\]</a> \
|
||||
<a href='?src=\ref[src];range=1'>\[Toggle Scan Range\]</a> \
|
||||
[can_hide_signal ? "<a href='?src=\ref[src];hide=1'>\[Toggle Signal Visibility\]</a>":""]"
|
||||
|
||||
var/list/signals = list()
|
||||
|
||||
for(var/gps in GPS_list)
|
||||
var/obj/item/device/gps/G = gps
|
||||
if(G.emped || !G.tracking || G.hide_signal || G == src) // Their GPS isn't on or functional.
|
||||
continue
|
||||
var/turf/T = get_turf(G)
|
||||
var/z_level_detection = using_map.get_map_levels(curr.z, long_range)
|
||||
|
||||
if(local_mode && T.z != curr.z) // Only care about the current z-level.
|
||||
continue
|
||||
else if(!(T.z in z_level_detection)) // Too far away.
|
||||
continue
|
||||
|
||||
var/area/their_area = get_area(G)
|
||||
var/area_name = their_area.name
|
||||
if(istype(their_area, /area/submap))
|
||||
area_name = "Unknown Area" // Avoid spoilers.
|
||||
var/Z_name = using_map.get_zlevel_name(T.z)
|
||||
var/coord = "[T.x], [T.y], [Z_name]"
|
||||
var/degrees = round(Get_Angle(curr, T))
|
||||
var/direction = uppertext(dir2text(get_dir(curr, T)))
|
||||
var/distance = get_dist(curr, T)
|
||||
var/local = curr.z == T.z ? TRUE : FALSE
|
||||
if(!direction)
|
||||
direction = "CENTER"
|
||||
degrees = "N/A"
|
||||
|
||||
signals += " [G.gps_tag]: [area_name] ([coord]) [local ? "Dist: [distance]m Dir: [degrees]° ([direction])":""]"
|
||||
|
||||
if(signals.len)
|
||||
dat += "Detected signals;"
|
||||
for(var/line in signals)
|
||||
dat += line
|
||||
else
|
||||
dat += "No other signals detected."
|
||||
|
||||
var/result = dat.Join("<br>")
|
||||
to_chat(user, result)
|
||||
|
||||
@@ -109,9 +109,9 @@
|
||||
suit.icon_override = new_icon_override_file
|
||||
S.icon_override = new_icon_override_file
|
||||
to_chat(user, "You set about modifying the suit into [suit].")
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(istype(H))
|
||||
suit.species_restricted = list(H.species.get_bodytype(H))
|
||||
// var/mob/living/carbon/human/H = user
|
||||
// if(istype(H))
|
||||
// suit.species_restricted = list(H.species.get_bodytype(H)) Does not quite make sense for something usually very pliable.
|
||||
else
|
||||
var/obj/item/clothing/suit/space/void/suit = I
|
||||
suit.name = "[new_name] voidsuit"
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
/obj/item/borg/sight/material
|
||||
name = "\proper material scanner vision"
|
||||
sight_mode = BORGMATERIAL
|
||||
icon_state = "material"
|
||||
icon = 'icons/obj/clothing/glasses.dmi'
|
||||
|
||||
/obj/item/borg/sight/hud
|
||||
name = "hud"
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
icon_state = "rods"
|
||||
|
||||
var/global/list/datum/stack_recipe/rods_recipes = list( \
|
||||
new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 0),
|
||||
new/datum/stack_recipe("catwalk", /obj/structure/catwalk, 2, time = 80, one_per_turf = 1, on_floor = 1))
|
||||
|
||||
/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob)
|
||||
@@ -44,7 +44,7 @@ var/global/list/datum/stack_recipe/rods_recipes = list( \
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
|
||||
if(get_amount() < 2)
|
||||
user << "<span class='warning'>You need at least two rods to do this.</span>"
|
||||
to_chat(user, "<span class='warning'>You need at least two rods to do this.</span>")
|
||||
return
|
||||
|
||||
if(WT.remove_fuel(0,user))
|
||||
@@ -91,15 +91,15 @@ var/global/list/datum/stack_recipe/rods_recipes = list( \
|
||||
|
||||
else if(!in_use)
|
||||
if(get_amount() < 2)
|
||||
user << "<span class='warning'>You need at least two rods to do this.</span>"
|
||||
to_chat(user, "<span class='warning'>You need at least two rods to do this.</span>")
|
||||
return
|
||||
usr << "<span class='notice'>Assembling grille...</span>"
|
||||
to_chat(usr, "<span class='notice'>Assembling grille...</span>")
|
||||
in_use = 1
|
||||
if (!do_after(usr, 10))
|
||||
in_use = 0
|
||||
return
|
||||
var/obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc )
|
||||
usr << "<span class='notice'>You assemble a grille</span>"
|
||||
to_chat(usr, "<span class='notice'>You assemble a grille</span>")
|
||||
in_use = 0
|
||||
F.add_fingerprint(usr)
|
||||
use(2)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
* Action figures
|
||||
* Plushies
|
||||
* Toy cult sword
|
||||
* Bouquets
|
||||
*/
|
||||
|
||||
|
||||
@@ -872,6 +873,19 @@
|
||||
w_class = ITEMSIZE_LARGE
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "poked")
|
||||
|
||||
//Flowers fake & real
|
||||
|
||||
/obj/item/toy/bouquet
|
||||
name = "bouquet"
|
||||
desc = "A lovely bouquet of flowers. Smells nice!"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "bouquet"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/obj/item/toy/bouquet/fake
|
||||
name = "plastic bouquet"
|
||||
desc = "A cheap plastic bouquet of flowers. Smells like cheap, toxic plastic."
|
||||
|
||||
/* NYET.
|
||||
/obj/item/weapon/toddler
|
||||
icon_state = "toddler"
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
//These bone objects are mostly for mapping and decoration. They have no actual medical use, so maybe don't try to put them in anybody.
|
||||
/obj/item/weapon/bone
|
||||
name = "bone"
|
||||
desc = "A non-descript bone. It's so old and worn you can barely tell which part of the body it's from."
|
||||
icon = 'icons/obj/bones.dmi'
|
||||
icon_state = "bone"
|
||||
force = 5
|
||||
throwforce = 6
|
||||
item_state = "bone"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked", "bonked", "boned")
|
||||
|
||||
/obj/item/weapon/bone/skull
|
||||
name = "skull"
|
||||
desc = "A skull. Judging by the shape and size, you'd guess that it might be human."
|
||||
icon_state = "skull"
|
||||
throwforce = 7
|
||||
|
||||
/obj/item/weapon/bone/skull/tajaran
|
||||
desc = "A skull. Judging by the shape and size, you'd guess that it might be tajaran."
|
||||
icon_state = "tajskull"
|
||||
|
||||
/obj/item/weapon/bone/skull/unathi
|
||||
desc = "A skull. Judging by the shape and size, you'd guess that it might be unathi."
|
||||
icon_state = "unaskull"
|
||||
|
||||
/obj/item/weapon/bone/skull/unknown
|
||||
desc = "A skull. You're not sure what species it might be, though."
|
||||
icon_state = "xenoskull"
|
||||
|
||||
/obj/item/weapon/bone/arm
|
||||
name = "arm bone"
|
||||
desc = "Wielding this, you're armed and dangerous, no bones about it."
|
||||
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked", "bonked", "boned", "slapped", "punched")
|
||||
icon_state = "arm"
|
||||
|
||||
/obj/item/weapon/bone/leg
|
||||
name = "leg bone"
|
||||
desc = "Don't worry about getting into an argument with the owner of this. They don't have a leg to stand on."
|
||||
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked", "bonked", "boned", "kicked")
|
||||
icon_state = "leg"
|
||||
|
||||
/obj/item/weapon/bone/ribs
|
||||
name = "ribcage"
|
||||
desc = "If you had some mallets, you could probably use this as a makeshift xylophone."
|
||||
icon_state = "ribs"
|
||||
@@ -70,3 +70,41 @@
|
||||
lit = 0
|
||||
update_icon()
|
||||
set_light(0)
|
||||
|
||||
/obj/item/weapon/flame/candle/candelabra
|
||||
name = "candelabra"
|
||||
desc = "a small gold candelabra. The cups that hold the candles save some of the wax from dripping off, allowing the candles to burn longer."
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
icon_state = "candelabra"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
wax = 20000
|
||||
|
||||
/obj/item/weapon/flame/candle/candelabra/update_icon()
|
||||
if(wax == 0)
|
||||
icon_state = "candelabra_melted"
|
||||
else
|
||||
icon_state = "candelabra[lit ? "_lit" : ""]"
|
||||
|
||||
/obj/item/weapon/flame/candle/everburn
|
||||
wax = 99999
|
||||
|
||||
/obj/item/weapon/flame/candle/everburn/New()
|
||||
if(!src.lit)
|
||||
src.lit = 1
|
||||
//src.damtype = "fire"
|
||||
for(var/mob/O in viewers(usr, null))
|
||||
O.show_message("<span class='notice'>\The [name] mysteriously lights itself!.</span>", 1)
|
||||
set_light(CANDLE_LUM)
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/weapon/flame/candle/candelabra/everburn
|
||||
wax = 99999
|
||||
|
||||
/obj/item/weapon/flame/candle/candelabra/everburn/New()
|
||||
if(!src.lit)
|
||||
src.lit = 1
|
||||
//src.damtype = "fire"
|
||||
for(var/mob/O in viewers(usr, null))
|
||||
O.show_message("<span class='notice'>\The [name] mysteriously lights itself!.</span>", 1)
|
||||
set_light(CANDLE_LUM)
|
||||
processing_objects.Add(src)
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4)
|
||||
req_components = list(/obj/item/weapon/smes_coil = 1, /obj/item/stack/cable_coil = 30)
|
||||
|
||||
/obj/item/weapon/circuitboard/smes/construct(var/obj/machinery/power/smes/buildable/S)
|
||||
if(..(S))
|
||||
S.output_attempt = 0 //built SMES default to off
|
||||
|
||||
/obj/item/weapon/circuitboard/batteryrack
|
||||
name = T_BOARD("battery rack PSU")
|
||||
build_path = /obj/machinery/power/smes/batteryrack
|
||||
|
||||
@@ -112,15 +112,11 @@
|
||||
usr << "The fingerprint hash on the card is [fingerprint_hash]."
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/id/New()
|
||||
..()
|
||||
var/datum/job/jobdatum
|
||||
for(var/jobtype in typesof(/datum/job))
|
||||
var/datum/job/J = new jobtype
|
||||
if(J.title == rank)
|
||||
jobdatum = J
|
||||
access = jobdatum.get_access()
|
||||
return
|
||||
/obj/item/weapon/card/id/initialize()
|
||||
. = ..()
|
||||
var/datum/job/J = job_master.GetJob(rank)
|
||||
if(J)
|
||||
access = J.get_access()
|
||||
|
||||
/obj/item/weapon/card/id/silver
|
||||
name = "identification card"
|
||||
@@ -163,8 +159,8 @@
|
||||
item_state = "tdgreen"
|
||||
assignment = "Synthetic"
|
||||
|
||||
/obj/item/weapon/card/id/synthetic/New()
|
||||
..()
|
||||
/obj/item/weapon/card/id/synthetic/initialize()
|
||||
. = ..()
|
||||
access = get_all_station_access() + access_synth
|
||||
|
||||
/obj/item/weapon/card/id/centcom
|
||||
@@ -174,12 +170,12 @@
|
||||
registered_name = "Central Command"
|
||||
assignment = "General"
|
||||
|
||||
/obj/item/weapon/card/id/centcom/New()
|
||||
/obj/item/weapon/card/id/centcom/initialize()
|
||||
. = ..()
|
||||
access = get_all_centcom_access()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/centcom/station/New()
|
||||
..()
|
||||
/obj/item/weapon/card/id/centcom/station/initialize()
|
||||
. = ..()
|
||||
access |= get_all_station_access()
|
||||
|
||||
/obj/item/weapon/card/id/centcom/ERT
|
||||
@@ -187,8 +183,8 @@
|
||||
assignment = "Emergency Response Team"
|
||||
icon_state = "centcom"
|
||||
|
||||
/obj/item/weapon/card/id/centcom/ERT/New()
|
||||
..()
|
||||
/obj/item/weapon/card/id/centcom/ERT/initialize()
|
||||
. = ..()
|
||||
access |= get_all_station_access()
|
||||
|
||||
// Department-flavor IDs
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
var/electronic_warfare = 1
|
||||
var/mob/registered_user = null
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/New(mob/user as mob)
|
||||
..()
|
||||
/obj/item/weapon/card/id/syndicate/initialize()
|
||||
. = ..()
|
||||
access = syndicate_access.Copy()
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/station_access/New()
|
||||
..() // Same as the normal Syndicate id, only already has all station access
|
||||
/obj/item/weapon/card/id/syndicate/station_access/initialize()
|
||||
. = ..() // Same as the normal Syndicate id, only already has all station access
|
||||
access |= get_all_station_access()
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/Destroy()
|
||||
|
||||
@@ -8,17 +8,6 @@
|
||||
force_divisor = 0.3 // 18 with hardness 60 (steel)
|
||||
attack_verb = list("jabbed","stabbed","ripped")
|
||||
|
||||
/obj/item/weapon/material/knuckledusters
|
||||
name = "knuckle dusters"
|
||||
desc = "A pair of brass knuckles. Generally used to enhance the user's punches."
|
||||
icon_state = "knuckledusters"
|
||||
gender = PLURAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
force_divisor = 0.63
|
||||
dulled_divisor = 0.75 //It's a heavy bit of metal
|
||||
attack_verb = list("punched", "beaten", "struck")
|
||||
applies_material_colour = 0
|
||||
|
||||
/obj/item/weapon/material/knife/machete/hatchet
|
||||
name = "hatchet"
|
||||
desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
/obj/item/weapon/material/twohanded/update_held_icon()
|
||||
var/mob/living/M = loc
|
||||
if(istype(M) && !issmall(M) && M.item_is_in_hands(src) && !M.hands_are_full())
|
||||
if(istype(M) && M.can_wield_item(src) && is_held_twohanded(M))
|
||||
wielded = 1
|
||||
force = force_wielded
|
||||
name = "[base_name] (wielded)"
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
* Candle Box
|
||||
* Crayon Box
|
||||
* Cigarette Box
|
||||
* Vial Box
|
||||
* Box of Chocolates
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/
|
||||
@@ -313,3 +315,34 @@
|
||||
/obj/item/weapon/storage/lockbox/vials/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/*
|
||||
* Box of Chocolates/Heart Box
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/heartbox
|
||||
icon_state = "heartbox"
|
||||
name = "box of chocolates"
|
||||
var/startswith = 6
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 6
|
||||
can_hold = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/fancy/heartbox/New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/fancy/heartbox/update_icon(var/itemremoved = 0)
|
||||
if (contents.len == 0)
|
||||
icon_state = "heartbox_empty"
|
||||
return
|
||||
@@ -87,7 +87,7 @@
|
||||
if(!can_place)
|
||||
return
|
||||
|
||||
if(!H || !src || !H.organs_by_name[BP_HEAD] || !H.has_eyes() || H.glasses || (H.head && (H.head.body_parts_covered & FACE)))
|
||||
if(!H || !src || !H.organs_by_name[BP_HEAD] || !H.check_has_mouth() || (H.head && (H.head.body_parts_covered & FACE)))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] has taped up \the [H]'s mouth!</span>")
|
||||
|
||||
Reference in New Issue
Block a user