mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-26 13:36:48 +01:00
@@ -5,6 +5,16 @@
|
||||
recieving object instead, so that's the default action. This allows you to drag
|
||||
almost anything into a trash can.
|
||||
*/
|
||||
|
||||
/atom/proc/CanMouseDrop(atom/over, var/mob/user = usr)
|
||||
if(!user || !over)
|
||||
return FALSE
|
||||
if(user.incapacitated())
|
||||
return FALSE
|
||||
if(!src.Adjacent(user) || !over.Adjacent(user))
|
||||
return FALSE // should stop you from dragging through windows
|
||||
return TRUE
|
||||
|
||||
/atom/MouseDrop(atom/over)
|
||||
if(!usr || !over) return
|
||||
if(!Adjacent(usr) || !over.Adjacent(usr)) return // should stop you from dragging through windows
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
use_power(7500) //This might need tweaking.
|
||||
return
|
||||
|
||||
else if((occupant.health >= heal_level) && (!eject_wait))
|
||||
else if((occupant.health >= heal_level || occupant.health == occupant.maxHealth) && (!eject_wait))
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
audible_message("\The [src] signals that the cloning process is complete.")
|
||||
connected_message("Cloning Process Complete.")
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
user << "<span class='warning'>You can't fit \the [W] inside.</span>"
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/clothing))
|
||||
else if(istype(W, /obj/item/clothing) || istype(W, /obj/item/weapon/bedsheet))
|
||||
if(washing.len < 5)
|
||||
if(state in list(1, 3))
|
||||
user.drop_item()
|
||||
|
||||
@@ -261,7 +261,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
// Proc: ui_interact()
|
||||
// Parameters: 4 (standard NanoUI arguments)
|
||||
// Description: Uses a bunch of for loops to turn lists into lists of lists, so they can be displayed in nanoUI, then displays various buttons to the user.
|
||||
/obj/item/device/communicator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
/obj/item/device/communicator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/key_state = null)
|
||||
// this is the data which will be sent to the ui
|
||||
var/data[0] //General nanoUI information
|
||||
var/communicators[0] //List of communicators
|
||||
@@ -356,7 +356,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
if(!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700)
|
||||
ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700, state = key_state)
|
||||
// when the ui is first opened this is the data it will use
|
||||
ui.set_initial_data(data)
|
||||
// open the new ui window
|
||||
|
||||
@@ -472,6 +472,11 @@
|
||||
if (constructed)
|
||||
state = 0
|
||||
|
||||
/obj/structure/window/reinforced/full
|
||||
dir = 5
|
||||
icon_state = "fwindow"
|
||||
maxhealth = 60
|
||||
|
||||
/obj/structure/window/reinforced/tinted
|
||||
name = "tinted window"
|
||||
desc = "It looks rather strong and opaque. Might take a few good hits to shatter it."
|
||||
|
||||
@@ -7,3 +7,6 @@
|
||||
name = "mask"
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "rockvault"
|
||||
|
||||
/turf/unsimulated/floor/shuttle_ceiling
|
||||
icon_state = "reinforced"
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
var/cloaked = 0 // 0 for normal, 1 for cloaked close
|
||||
|
||||
if(mind.changeling && mind.changeling.cloaked && !istype(user, /mob/observer))
|
||||
if(mind && mind.changeling && mind.changeling.cloaked && !istype(user, /mob/observer))
|
||||
var/distance = get_dist(user, src)
|
||||
if(distance > 2)
|
||||
src.loc.examine(user)
|
||||
@@ -472,7 +472,7 @@
|
||||
|
||||
|
||||
/mob/living/carbon/human/get_description_fluff()
|
||||
if(mind.changeling && mind.changeling.cloaked)
|
||||
if(mind && mind.changeling && mind.changeling.cloaked)
|
||||
return ""
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
active_power_usage = 20
|
||||
power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list
|
||||
var/on = 0 // 1 if on, 0 if off
|
||||
var/brightness_range = 10 // luminosity when on, also used in power calculation
|
||||
var/brightness_range = 6 // luminosity when on, also used in power calculation
|
||||
var/brightness_power = 3
|
||||
var/brightness_color = null
|
||||
var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN
|
||||
@@ -180,7 +180,7 @@
|
||||
icon_state = "bulb1"
|
||||
base_state = "bulb"
|
||||
fitting = "bulb"
|
||||
brightness_range = 6
|
||||
brightness_range = 4
|
||||
brightness_power = 2
|
||||
brightness_color = "#FFF4E5"
|
||||
desc = "A small lighting fixture."
|
||||
@@ -199,7 +199,7 @@
|
||||
var/lamp_shade = 1
|
||||
|
||||
/obj/machinery/light/small/emergency
|
||||
brightness_range = 6
|
||||
brightness_range = 4
|
||||
brightness_power = 2
|
||||
brightness_color = "#da0205"
|
||||
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
src.add_fingerprint(user)
|
||||
if(bottle)
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20) && bottle)
|
||||
user << "<span class='notice'>You unfasten the jug.</span>"
|
||||
var/obj/item/weapon/reagent_containers/glass/cooler_bottle/G = new /obj/item/weapon/reagent_containers/glass/cooler_bottle( src.loc )
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
@@ -262,7 +262,7 @@
|
||||
if(!bottle && !cupholder)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "<span class='notice'>You start taking the water-cooler apart.</span>"
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20) && !bottle && !cupholder)
|
||||
user << "<span class='notice'>You take the water-cooler apart.</span>"
|
||||
new /obj/item/stack/material/plastic( src.loc, 4 )
|
||||
qdel(src)
|
||||
@@ -274,7 +274,7 @@
|
||||
if(anchored)
|
||||
var/obj/item/weapon/reagent_containers/glass/cooler_bottle/G = I
|
||||
user << "<span class='notice'>You start to screw the bottle onto the water-cooler.</span>"
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20) && !bottle && anchored)
|
||||
bottle = 1
|
||||
update_icon()
|
||||
user << "<span class='notice'>You screw the bottle onto the water-cooler!</span>"
|
||||
@@ -286,7 +286,7 @@
|
||||
user << "<span class='warning'>You need to wrench down the cooler first.</span>"
|
||||
else
|
||||
user << "<span class='warning'>There is already a bottle there!</span>"
|
||||
return
|
||||
return 1
|
||||
|
||||
if(istype(I, /obj/item/stack/material/plastic))
|
||||
if(!cupholder)
|
||||
@@ -295,7 +295,7 @@
|
||||
src.add_fingerprint(user)
|
||||
user << "<span class='notice'>You start to attach a cup dispenser onto the water-cooler.</span>"
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20) && !cupholder && anchored)
|
||||
if (P.use(1))
|
||||
user << "<span class='notice'>You attach a cup dispenser onto the water-cooler.</span>"
|
||||
cupholder = 1
|
||||
|
||||
@@ -13,22 +13,22 @@
|
||||
return affected && affected.open == (affected.encased ? 3 : 2) && !(affected.status & ORGAN_BLEEDING)
|
||||
|
||||
proc/get_max_wclass(var/obj/item/organ/external/affected)
|
||||
switch (affected.name)
|
||||
if ("head")
|
||||
return 1
|
||||
if ("upper body")
|
||||
return 3
|
||||
if ("lower body")
|
||||
return 2
|
||||
switch (affected.organ_tag)
|
||||
if (BP_HEAD)
|
||||
return ITEMSIZE_TINY
|
||||
if (BP_TORSO)
|
||||
return ITEMSIZE_NORMAL
|
||||
if (BP_GROIN)
|
||||
return ITEMSIZE_SMALL
|
||||
return 0
|
||||
|
||||
proc/get_cavity(var/obj/item/organ/external/affected)
|
||||
switch (affected.name)
|
||||
if ("head")
|
||||
switch (affected.organ_tag)
|
||||
if (BP_HEAD)
|
||||
return "cranial"
|
||||
if ("upper body")
|
||||
if (BP_TORSO)
|
||||
return "thoracic"
|
||||
if ("lower body")
|
||||
if (BP_GROIN)
|
||||
return "abdominal"
|
||||
return ""
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
/obj/structure/anomaly_container
|
||||
name = "anomaly container"
|
||||
desc = "Used to safely contain and move anomalies."
|
||||
icon = 'icons/obj/xenoarchaeology.dmi'
|
||||
icon_state = "anomaly_container"
|
||||
density = 1
|
||||
|
||||
var/obj/machinery/artifact/contained
|
||||
|
||||
/obj/structure/anomaly_container/initialize()
|
||||
..()
|
||||
|
||||
var/obj/machinery/artifact/A = locate() in loc
|
||||
if(A)
|
||||
contain(A)
|
||||
|
||||
/obj/structure/anomaly_container/attack_hand(var/mob/user)
|
||||
release()
|
||||
|
||||
/obj/structure/anomaly_container/attack_robot(var/mob/user)
|
||||
if(Adjacent(user))
|
||||
release()
|
||||
|
||||
/obj/structure/anomaly_container/proc/contain(var/obj/machinery/artifact/artifact)
|
||||
if(contained)
|
||||
return
|
||||
contained = artifact
|
||||
artifact.forceMove(src)
|
||||
underlays += image(artifact)
|
||||
desc = "Used to safely contain and move anomalies. \The [contained] is kept inside."
|
||||
|
||||
/obj/structure/anomaly_container/proc/release()
|
||||
if(!contained)
|
||||
return
|
||||
contained.dropInto(src)
|
||||
contained = null
|
||||
underlays.Cut()
|
||||
desc = initial(desc)
|
||||
|
||||
/obj/machinery/artifact/MouseDrop(var/obj/structure/anomaly_container/over_object)
|
||||
if(istype(over_object) && Adjacent(over_object) && CanMouseDrop(over_object, usr))
|
||||
Bumped(usr)
|
||||
over_object.contain(src)
|
||||
@@ -0,0 +1,4 @@
|
||||
author: Leshana
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Bedsheets can be put into washing machines again."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 63 KiB |
@@ -152,7 +152,10 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
|
||||
{{:value.name}}
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<div style="float: left; width: 100%;">{{:value.address}}</div> {{:helper.link('Copy', 'pencil', {'copy' : value.address, 'switch_tab' : 2})}}
|
||||
<div style="float: left; width: 100%;">{{:value.address}}</div>
|
||||
{{:helper.link('Copy', 'pencil', {'copy' : value.address, 'switch_tab' : 2})}}
|
||||
{{:helper.link('Call', 'phone', {'dial' : value.address, 'copy' : value.address, 'switch_tab' : 2})}}
|
||||
{{:helper.link('Msg', 'mail-closed', {'copy' : value.address, 'copy_name' : value.name, 'switch_tab' : 40})}}
|
||||
</div>
|
||||
</div>
|
||||
{{/for}}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
{{else}}
|
||||
<h3>Guest pass terminal #{{:data.uid}}</h3>
|
||||
<div class='item'>
|
||||
{{:helper.link('View activity log', 'list', {'mode' : 1})}} {{:helper.link('Issure Pass', 'eject', {'action' : 'issue'})}}
|
||||
{{:helper.link('View activity log', 'list', {'mode' : 1})}} {{:helper.link('Issue Pass', 'eject', {'action' : 'issue'})}}
|
||||
</div>
|
||||
<hr>
|
||||
<div class='item'>
|
||||
|
||||
@@ -2129,6 +2129,7 @@
|
||||
#include "code\modules\virus2\helpers.dm"
|
||||
#include "code\modules\virus2\isolator.dm"
|
||||
#include "code\modules\virus2\items_devices.dm"
|
||||
#include "code\modules\xenoarcheaology\anomaly_container.dm"
|
||||
#include "code\modules\xenoarcheaology\boulder.dm"
|
||||
#include "code\modules\xenoarcheaology\effect.dm"
|
||||
#include "code\modules\xenoarcheaology\manuals.dm"
|
||||
|
||||
Reference in New Issue
Block a user