Merge branch 'master' into upstream-merge-31737
This commit is contained in:
@@ -431,7 +431,7 @@ ARCD
|
||||
|
||||
/obj/item/construction/rcd/arcd
|
||||
name = "advanced rapid-construction-device (ARCD)"
|
||||
desc = "A prototype RCD with ranged capability and extended capacity"
|
||||
desc = "A prototype RCD with ranged capability and extended capacity."
|
||||
max_matter = 300
|
||||
matter = 300
|
||||
delay_mod = 0.6
|
||||
|
||||
@@ -30,10 +30,10 @@ RPD
|
||||
var/selected=0
|
||||
|
||||
/datum/pipe_info/New(pid,direction,dt)
|
||||
src.id=pid
|
||||
src.icon_state=GLOB.pipeID2State["[pid]"]
|
||||
src.dir = direction
|
||||
src.dirtype=dt
|
||||
id=pid
|
||||
icon_state=GLOB.pipeID2State["[pid]"]
|
||||
dir = direction
|
||||
dirtype=dt
|
||||
|
||||
/datum/pipe_info/proc/Render(dispenser,label)
|
||||
return "<li><a href='?src=\ref[dispenser];makepipe=[id];dir=[dir];type=[dirtype]'>[label]</a></li>"
|
||||
@@ -67,10 +67,10 @@ GLOBAL_LIST_INIT(disposalpipeID2State, list(
|
||||
icon_state = "meterX"
|
||||
|
||||
/datum/pipe_info/disposal/New(var/pid,var/dt)
|
||||
src.id=pid
|
||||
src.icon_state=GLOB.disposalpipeID2State[pid+1]
|
||||
src.dir = SOUTH
|
||||
src.dirtype=dt
|
||||
id=pid
|
||||
icon_state=GLOB.disposalpipeID2State[pid+1]
|
||||
dir = SOUTH
|
||||
dirtype=dt
|
||||
if(pid<DISP_END_BIN || pid>DISP_END_CHUTE)
|
||||
icon_state = "con[icon_state]"
|
||||
|
||||
@@ -80,13 +80,13 @@ GLOBAL_LIST_INIT(disposalpipeID2State, list(
|
||||
//find these defines in code\game\machinery\pipe\consruction.dm
|
||||
GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
"Pipes" = list(
|
||||
"Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 1, PIPE_BENDABLE),
|
||||
//"Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 5, PIPE_BENT),
|
||||
"Manifold" = new /datum/pipe_info(PIPE_MANIFOLD, 1, PIPE_TRINARY),
|
||||
"Manual Valve" = new /datum/pipe_info(PIPE_MVALVE, 1, PIPE_BINARY),
|
||||
"Digital Valve" = new /datum/pipe_info(PIPE_DVALVE, 1, PIPE_BINARY),
|
||||
"4-Way Manifold" = new /datum/pipe_info(PIPE_4WAYMANIFOLD, 1, PIPE_QUAD),
|
||||
"Bluespace Pipe" = new /datum/pipe_info(PIPE_BLUESPACE, 1, PIPE_UNARY),
|
||||
"Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 1, PIPE_BENDABLE),
|
||||
//"Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 5, PIPE_BENT),
|
||||
"Manifold" = new /datum/pipe_info(PIPE_MANIFOLD, 1, PIPE_TRINARY),
|
||||
"Manual Valve" = new /datum/pipe_info(PIPE_MVALVE, 1, PIPE_BINARY),
|
||||
"Digital Valve" = new /datum/pipe_info(PIPE_DVALVE, 1, PIPE_BINARY),
|
||||
"4-Way Manifold" = new /datum/pipe_info(PIPE_4WAYMANIFOLD, 1, PIPE_QUAD),
|
||||
"Layer Manifold" = new /datum/pipe_info(PIPE_LAYER_MANIFOLD, 1, PIPE_BINARY),
|
||||
),
|
||||
"Devices"=list(
|
||||
"Connector" = new /datum/pipe_info(PIPE_CONNECTOR, 1, PIPE_UNARY),
|
||||
@@ -153,6 +153,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
)
|
||||
var/paint_color="grey"
|
||||
var/screen = CATEGORY_ATMOS //Starts on the atmos tab.
|
||||
var/piping_layer = PIPING_LAYER_DEFAULT
|
||||
|
||||
/obj/item/pipe_dispenser/New()
|
||||
. = ..()
|
||||
@@ -201,6 +202,14 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
dat += "<span class='linkOn'>Atmospherics</span> <A href='?src=\ref[src];screen=[CATEGORY_DISPOSALS];dmake=0;type=0'>Disposals</A><BR>"
|
||||
else if(screen == CATEGORY_DISPOSALS)
|
||||
dat += "<A href='?src=\ref[src];screen=[CATEGORY_ATMOS];makepipe=0;dir=1;type=0'>Atmospherics</A> <span class='linkOn'>Disposals</span><BR>"
|
||||
var/generated_layer_list = ""
|
||||
var/layers_total = PIPING_LAYER_MAX - PIPING_LAYER_MIN + 1
|
||||
for(var/iter = PIPING_LAYER_MIN, iter <= layers_total, iter++)
|
||||
if(iter == piping_layer)
|
||||
generated_layer_list += "<span class='linkOn'><A href='?src=\ref[src];setlayer=[iter]'>[iter]</A></span>"
|
||||
else
|
||||
generated_layer_list += "<A href='?src=\ref[src];setlayer=[iter]'>[iter]</A>"
|
||||
dat += "Atmospherics Piping Layer: [generated_layer_list]<BR>"
|
||||
dat += "</ul>"
|
||||
|
||||
var/icon/preview=null
|
||||
@@ -459,7 +468,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
usr << browse(null, "window=pipedispenser")
|
||||
return
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
add_fingerprint(usr)
|
||||
if(href_list["screen"])
|
||||
screen = text2num(href_list["screen"])
|
||||
show_menu(usr)
|
||||
@@ -469,11 +478,18 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
p_flipped = text2num(href_list["flipped"])
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["setlayer"])
|
||||
if(!isnum(href_list["setlayer"]))
|
||||
piping_layer = text2num(href_list["setlayer"])
|
||||
else
|
||||
piping_layer = href_list["setlayer"]
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["eatpipes"])
|
||||
p_class = EATING_MODE
|
||||
p_conntype=-1
|
||||
p_dir=1
|
||||
src.spark_system.start()
|
||||
spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
@@ -481,13 +497,13 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
p_class = PAINT_MODE
|
||||
p_conntype = -1
|
||||
p_dir = 1
|
||||
src.spark_system.start()
|
||||
spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["set_color"])
|
||||
paint_color = href_list["set_color"]
|
||||
src.spark_system.start()
|
||||
spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
@@ -496,7 +512,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
p_dir = text2num(href_list["dir"])
|
||||
p_conntype = text2num(href_list["type"])
|
||||
p_class = ATMOS_MODE
|
||||
src.spark_system.start()
|
||||
spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
@@ -504,7 +520,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
p_class = METER_MODE
|
||||
p_conntype = -1
|
||||
p_dir = 1
|
||||
src.spark_system.start()
|
||||
spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
@@ -513,7 +529,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
p_conntype = text2num(href_list["type"])
|
||||
p_dir = 1
|
||||
p_class = DISPOSALS_MODE
|
||||
src.spark_system.start()
|
||||
spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
@@ -522,10 +538,18 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
if(!user.IsAdvancedToolUser() || istype(A, /turf/open/space/transit))
|
||||
return ..()
|
||||
|
||||
var/atmos_piping_mode = p_class == ATMOS_MODE || p_class == METER_MODE
|
||||
var/temp_piping_layer
|
||||
if(atmos_piping_mode)
|
||||
if(istype(A, /obj/machinery/atmospherics))
|
||||
var/obj/machinery/atmospherics/AM = A
|
||||
temp_piping_layer = AM.piping_layer
|
||||
A = get_turf(user)
|
||||
|
||||
//make sure what we're clicking is valid for the current mode
|
||||
var/is_paintable = (p_class == PAINT_MODE && istype(A, /obj/machinery/atmospherics/pipe))
|
||||
var/is_consumable = (p_class == EATING_MODE && (istype(A, /obj/item/pipe) || istype(A, /obj/item/pipe_meter) || istype(A, /obj/structure/disposalconstruct)))
|
||||
var/can_make_pipe = ((p_class == ATMOS_MODE || p_class == METER_MODE || p_class == DISPOSALS_MODE) && isturf(A))
|
||||
var/can_make_pipe = ((atmos_piping_mode || p_class == DISPOSALS_MODE) && isturf(A))
|
||||
|
||||
if(!is_paintable && !is_consumable && !can_make_pipe)
|
||||
return ..()
|
||||
@@ -540,10 +564,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
if(PAINT_MODE) //Paint pipes
|
||||
var/obj/machinery/atmospherics/pipe/P = A
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
P.add_atom_colour(paint_colors[paint_color], FIXED_COLOUR_PRIORITY)
|
||||
P.pipe_color = paint_colors[paint_color]
|
||||
P.paint(paint_colors[paint_color])
|
||||
user.visible_message("<span class='notice'>[user] paints \the [P] [paint_color].</span>","<span class='notice'>You paint \the [P] [paint_color].</span>")
|
||||
P.update_node_icon()
|
||||
return
|
||||
|
||||
if(EATING_MODE) //Eating pipes
|
||||
@@ -558,21 +580,29 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 2, target = A))
|
||||
activate()
|
||||
var/obj/item/pipe/P = new (A, pipe_type=queued_p_type, dir=queued_p_dir)
|
||||
var/obj/item/pipe/P = new(A, queued_p_type, queued_p_dir)
|
||||
P.flipped = queued_p_flipped
|
||||
P.update()
|
||||
P.add_fingerprint(usr)
|
||||
if(!isnull(temp_piping_layer))
|
||||
P.setPipingLayer(temp_piping_layer)
|
||||
else
|
||||
P.setPipingLayer(piping_layer)
|
||||
|
||||
if(METER_MODE) //Making pipe meters
|
||||
to_chat(user, "<span class='notice'>You start building a meter...</span>")
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 2, target = A))
|
||||
activate()
|
||||
new /obj/item/pipe_meter(A)
|
||||
var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(A)
|
||||
if(!isnull(temp_piping_layer))
|
||||
PM.setAttachLayer(temp_piping_layer)
|
||||
else
|
||||
PM.setAttachLayer(piping_layer)
|
||||
|
||||
if(DISPOSALS_MODE) //Making disposals pipes
|
||||
if(isclosedturf(A))
|
||||
to_chat(user, "<span class='warning'>[src]'s error light flickers; there's something in the way!</span>")
|
||||
to_chat(user, "<span class='warning'>\the [src]'s error light flickers; there's something in the way!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start building a disposals pipe...</span>")
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
// APC HULL
|
||||
/obj/item/wallframe/apc
|
||||
name = "\improper APC frame"
|
||||
desc = "Used for repairing or building APCs"
|
||||
desc = "Used for repairing or building APCs."
|
||||
icon_state = "apc"
|
||||
result_path = /obj/machinery/power/apc
|
||||
inverse = 1
|
||||
|
||||
@@ -224,7 +224,7 @@ update_label("John Doe", "Clowny")
|
||||
|
||||
/obj/item/card/id/centcom
|
||||
name = "\improper CentCom ID"
|
||||
desc = "An ID straight from Cent. Com."
|
||||
desc = "An ID straight from Central Command."
|
||||
icon_state = "centcom"
|
||||
registered_name = "Central Command"
|
||||
assignment = "General"
|
||||
@@ -235,7 +235,7 @@ update_label("John Doe", "Clowny")
|
||||
|
||||
/obj/item/card/id/ert
|
||||
name = "\improper CentCom ID"
|
||||
desc = "A ERT ID card"
|
||||
desc = "An ERT ID card."
|
||||
icon_state = "centcom"
|
||||
registered_name = "Emergency Response Team Commander"
|
||||
assignment = "Emergency Response Team Commander"
|
||||
@@ -351,6 +351,6 @@ update_label("John Doe", "Clowny")
|
||||
|
||||
/obj/item/card/id/away/old/apc
|
||||
name = "APC Access ID"
|
||||
desc = "Special ID card to allow access to APCs"
|
||||
desc = "Special ID card to allow access to APCs."
|
||||
icon_state = "centcom"
|
||||
access = list(ACCESS_ENGINE_EQUIP)
|
||||
access = list(ACCESS_ENGINE_EQUIP)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "scroll2"
|
||||
desc = "An official document entrusting the governance of the station \
|
||||
and surrounding space to the Captain. "
|
||||
and surrounding space to the Captain."
|
||||
var/used = FALSE
|
||||
var/name_type = "station"
|
||||
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
to_chat(user, "<span class='notice'>You pet [src]. You swear it looks up at you.</span>")
|
||||
owner = user
|
||||
owned = 1
|
||||
else return ..()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plush/carpplushie/dehy_carp/proc/Swell()
|
||||
desc = "It's growing!"
|
||||
|
||||
@@ -617,7 +617,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
P.show_recieved_message(msg,src)
|
||||
if(!multiple)
|
||||
show_to_ghosts(user,msg)
|
||||
log_talk(user,"[key_name(user)] (PDA: [initial(name)]) sent \"[message]\" to [key_name(P,null,TRUE)]",LOGPDA)
|
||||
log_talk(user,"[key_name(user)] (PDA: [initial(name)]) sent \"[message]\" to [P.name]",LOGPDA)
|
||||
else
|
||||
if(!multiple)
|
||||
to_chat(user, "<span class='notice'>ERROR: Server isn't responding.</span>")
|
||||
@@ -849,7 +849,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
user.show_message("<span class='notice'>No radiation detected.</span>")
|
||||
|
||||
/obj/item/device/pda/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
switch(scanmode)
|
||||
|
||||
if(3)
|
||||
@@ -899,7 +900,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
|
||||
|
||||
/obj/item/device/pda/proc/explode() //This needs tuning.
|
||||
if(!detonatable) return
|
||||
if(!detonatable)
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
if (ismob(loc))
|
||||
@@ -1011,5 +1013,6 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
. = list()
|
||||
// Returns a list of PDAs which can be viewed from another PDA/message monitor.
|
||||
for(var/obj/item/device/pda/P in GLOB.PDAs)
|
||||
if(!P.owner || P.toff || P.hidden) continue
|
||||
if(!P.owner || P.toff || P.hidden)
|
||||
continue
|
||||
. += P
|
||||
|
||||
@@ -202,7 +202,8 @@
|
||||
|
||||
var/datum/radio_frequency/frequency = SSradio.return_frequency(1435)
|
||||
|
||||
if(!frequency) return
|
||||
if(!frequency)
|
||||
return
|
||||
|
||||
var/datum/signal/status_signal = new
|
||||
status_signal.source = src
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/obj/item/cartridge/virus/clown
|
||||
name = "\improper Honkworks 5.0 cartridge"
|
||||
icon_state = "cart-clown"
|
||||
desc = "A data cartridge for portable microcomputers. It smells vaguely of banannas"
|
||||
desc = "A data cartridge for portable microcomputers. It smells vaguely of bananas."
|
||||
access = CART_CLOWN
|
||||
|
||||
/obj/item/cartridge/virus/clown/send_virus(obj/item/device/pda/target, mob/living/U)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
origin_tech = "syndicate=1;engineering=3"
|
||||
flags_1 = NOBLUDGEON_1
|
||||
flags_1 = NOBLUDGEON_1
|
||||
|
||||
var/obj/machinery/camera/current = null
|
||||
|
||||
@@ -124,7 +124,8 @@
|
||||
// 15 second intervals ~ 1/4 minute
|
||||
var/m = round(time_diff/4)
|
||||
var/s = (time_diff - 4*m) * 15
|
||||
if(!s) s = "00"
|
||||
if(!s)
|
||||
s = "00"
|
||||
html += "Last seen near [outstring] ([m]:[s] minute\s ago)<br>"
|
||||
if( C && (C.bug == src)) //Checks to see if the camera has a bug
|
||||
html += "<a href='?src=\ref[src];emp=\ref[C]'>\[Disable\]</a>"
|
||||
@@ -218,7 +219,7 @@
|
||||
var/list/cameras = flatten_list(bugged_cameras)
|
||||
var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras
|
||||
if(C && istype(C) && C.bug == src)
|
||||
C.emp_act(EMP_HEAVY)
|
||||
C.emp_act(EMP_HEAVY)
|
||||
C.bug = null
|
||||
bugged_cameras -= C.c_tag
|
||||
interact()
|
||||
|
||||
@@ -32,7 +32,8 @@
|
||||
toggle()
|
||||
|
||||
/obj/item/device/chameleon/afterattack(atom/target, mob/user , proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
if(!check_sprite(target))
|
||||
return
|
||||
if(!active_dummy)
|
||||
@@ -51,7 +52,8 @@
|
||||
return FALSE
|
||||
|
||||
/obj/item/device/chameleon/proc/toggle()
|
||||
if(!can_use || !saved_appearance) return
|
||||
if(!can_use || !saved_appearance)
|
||||
return
|
||||
if(active_dummy)
|
||||
eject_all()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
|
||||
|
||||
@@ -124,6 +124,8 @@ GLOBAL_LIST_EMPTY(GPS_list)
|
||||
a = copytext(sanitize(a), 1, 20)
|
||||
gpstag = a
|
||||
. = TRUE
|
||||
name = "global positioning system ([gpstag])"
|
||||
|
||||
if("power")
|
||||
toggletracking(usr)
|
||||
. = TRUE
|
||||
@@ -134,15 +136,6 @@ GLOBAL_LIST_EMPTY(GPS_list)
|
||||
global_mode = !global_mode
|
||||
. = TRUE
|
||||
|
||||
/obj/item/device/gps/Topic(href, href_list)
|
||||
..()
|
||||
if(href_list["tag"] )
|
||||
var/a = input("Please enter desired tag.", name, gpstag) as text
|
||||
a = uppertext(copytext(sanitize(a), 1, 5))
|
||||
if(in_range(src, usr))
|
||||
gpstag = a
|
||||
name = "global positioning system ([gpstag])"
|
||||
attack_self(usr)
|
||||
|
||||
/obj/item/device/gps/science
|
||||
icon_state = "gps-s"
|
||||
|
||||
@@ -192,7 +192,8 @@
|
||||
|
||||
if(target.status != LIGHT_OK)
|
||||
if(CanUse(U))
|
||||
if(!Use(U)) return
|
||||
if(!Use(U))
|
||||
return
|
||||
to_chat(U, "<span class='notice'>You replace the [target.fitting] with \the [src].</span>")
|
||||
|
||||
if(target.status != LIGHT_EMPTY)
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
name = "multitool"
|
||||
desc = "Used for pulsing wires to test which to cut. Not recommended by doctors."
|
||||
icon_state = "multitool"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
||||
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
||||
force = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
throwforce = 0
|
||||
@@ -74,7 +74,7 @@
|
||||
break
|
||||
|
||||
/obj/item/device/multitool/ai_detect/admin
|
||||
desc = "Used for pulsing wires to test which to cut. Not recommended by doctors. Has a strange tag that says 'Grief in Safety'" //What else should I say for a meme item?
|
||||
desc = "Used for pulsing wires to test which to cut. Not recommended by doctors. Has a strange tag that says 'Grief in Safety'." //What else should I say for a meme item?
|
||||
track_delay = 5
|
||||
|
||||
/obj/item/device/multitool/ai_detect/admin/multitool_detect()
|
||||
@@ -98,4 +98,4 @@
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "multitool"
|
||||
toolspeed = 0.1
|
||||
origin_tech = "magnets=5;engineering=5;abductor=3"
|
||||
origin_tech = "magnets=5;engineering=5;abductor=3"
|
||||
|
||||
@@ -128,16 +128,26 @@
|
||||
if(pai)
|
||||
src.cut_overlays()
|
||||
switch(emotion)
|
||||
if(1) src.add_overlay("pai-happy")
|
||||
if(2) src.add_overlay("pai-cat")
|
||||
if(3) src.add_overlay("pai-extremely-happy")
|
||||
if(4) src.add_overlay("pai-face")
|
||||
if(5) src.add_overlay("pai-laugh")
|
||||
if(6) src.add_overlay("pai-off")
|
||||
if(7) src.add_overlay("pai-sad")
|
||||
if(8) src.add_overlay("pai-angry")
|
||||
if(9) src.add_overlay("pai-what")
|
||||
if(10) src.add_overlay("pai-null")
|
||||
if(1)
|
||||
src.add_overlay("pai-happy")
|
||||
if(2)
|
||||
src.add_overlay("pai-cat")
|
||||
if(3)
|
||||
src.add_overlay("pai-extremely-happy")
|
||||
if(4)
|
||||
src.add_overlay("pai-face")
|
||||
if(5)
|
||||
src.add_overlay("pai-laugh")
|
||||
if(6)
|
||||
src.add_overlay("pai-off")
|
||||
if(7)
|
||||
src.add_overlay("pai-sad")
|
||||
if(8)
|
||||
src.add_overlay("pai-angry")
|
||||
if(9)
|
||||
src.add_overlay("pai-what")
|
||||
if(10)
|
||||
src.add_overlay("pai-null")
|
||||
|
||||
/obj/item/device/paicard/proc/alertUpdate()
|
||||
visible_message("<span class ='info'>[src] flashes a message across its screen, \"Additional personalities available for download.\"", "<span class='notice'>[src] bleeps electronically.</span>")
|
||||
|
||||
@@ -122,11 +122,11 @@
|
||||
channels = list("Service" = 1)
|
||||
|
||||
/obj/item/device/encryptionkey/headset_cent
|
||||
name = "centcom radio encryption key"
|
||||
desc = "An encryption key for a radio headset. To access the centcom channel, use :y."
|
||||
name = "\improper CentCom radio encryption key"
|
||||
desc = "An encryption key for a radio headset. To access the CentCom channel, use :y."
|
||||
icon_state = "cent_cypherkey"
|
||||
independent = TRUE
|
||||
channels = list("CentCom" = 1)
|
||||
channels = list("CentCom" = 1)
|
||||
|
||||
/obj/item/device/encryptionkey/ai //ported from NT, this goes 'inside' the AI.
|
||||
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1)
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
/obj/item/device/radio/headset/syndicate/alt //undisguised bowman with flash protection
|
||||
name = "syndicate headset"
|
||||
desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs. \nTo access the syndicate channel, use ; before speaking."
|
||||
desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs.\nTo access the syndicate channel, use ; before speaking."
|
||||
origin_tech = "syndicate=3"
|
||||
icon_state = "syndie_headset"
|
||||
item_state = "syndie_headset"
|
||||
@@ -71,50 +71,50 @@
|
||||
|
||||
/obj/item/device/radio/headset/headset_sec
|
||||
name = "security radio headset"
|
||||
desc = "This is used by your elite security force. \nTo access the security channel, use :s."
|
||||
desc = "This is used by your elite security force.\nTo access the security channel, use :s."
|
||||
icon_state = "sec_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_sec
|
||||
|
||||
/obj/item/device/radio/headset/headset_sec/alt
|
||||
name = "security bowman headset"
|
||||
desc = "This is used by your elite security force. Protects ears from flashbangs. \nTo access the security channel, use :s."
|
||||
desc = "This is used by your elite security force. Protects ears from flashbangs.\nTo access the security channel, use :s."
|
||||
icon_state = "sec_headset_alt"
|
||||
item_state = "sec_headset_alt"
|
||||
flags_2 = BANG_PROTECT_2
|
||||
|
||||
/obj/item/device/radio/headset/headset_eng
|
||||
name = "engineering radio headset"
|
||||
desc = "When the engineers wish to chat like girls. \nTo access the engineering channel, use :e. "
|
||||
desc = "When the engineers wish to chat like girls.\nTo access the engineering channel, use :e."
|
||||
icon_state = "eng_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_eng
|
||||
|
||||
/obj/item/device/radio/headset/headset_rob
|
||||
name = "robotics radio headset"
|
||||
desc = "Made specifically for the roboticists, who cannot decide between departments. \nTo access the engineering channel, use :e. For research, use :n."
|
||||
desc = "Made specifically for the roboticists, who cannot decide between departments.\nTo access the engineering channel, use :e. For research, use :n."
|
||||
icon_state = "rob_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_rob
|
||||
|
||||
/obj/item/device/radio/headset/headset_med
|
||||
name = "medical radio headset"
|
||||
desc = "A headset for the trained staff of the medbay. \nTo access the medical channel, use :m."
|
||||
desc = "A headset for the trained staff of the medbay.\nTo access the medical channel, use :m."
|
||||
icon_state = "med_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_med
|
||||
|
||||
/obj/item/device/radio/headset/headset_sci
|
||||
name = "science radio headset"
|
||||
desc = "A sciency headset. Like usual. \nTo access the science channel, use :n."
|
||||
desc = "A sciency headset. Like usual.\nTo access the science channel, use :n."
|
||||
icon_state = "sci_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_sci
|
||||
|
||||
/obj/item/device/radio/headset/headset_medsci
|
||||
name = "medical research radio headset"
|
||||
desc = "A headset that is a result of the mating between medical and science. \nTo access the medical channel, use :m. For science, use :n."
|
||||
desc = "A headset that is a result of the mating between medical and science.\nTo access the medical channel, use :m. For science, use :n."
|
||||
icon_state = "medsci_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_medsci
|
||||
|
||||
/obj/item/device/radio/headset/headset_com
|
||||
name = "command radio headset"
|
||||
desc = "A headset with a commanding channel. \nTo access the command channel, use :c."
|
||||
desc = "A headset with a commanding channel.\nTo access the command channel, use :c."
|
||||
icon_state = "com_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_com
|
||||
|
||||
@@ -123,75 +123,75 @@
|
||||
|
||||
/obj/item/device/radio/headset/heads/captain
|
||||
name = "\proper the captain's headset"
|
||||
desc = "The headset of the king. \nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science."
|
||||
desc = "The headset of the king.\nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science."
|
||||
icon_state = "com_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/heads/captain
|
||||
|
||||
/obj/item/device/radio/headset/heads/captain/alt
|
||||
name = "\proper the captain's bowman headset"
|
||||
desc = "The headset of the boss. Protects ears from flashbangs. \nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science."
|
||||
desc = "The headset of the boss. Protects ears from flashbangs.\nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
flags_2 = BANG_PROTECT_2
|
||||
|
||||
/obj/item/device/radio/headset/heads/rd
|
||||
name = "\proper the research director's headset"
|
||||
desc = "Headset of the fellow who keeps society marching towards technological singularity. \nTo access the science channel, use :n. For command, use :c."
|
||||
desc = "Headset of the fellow who keeps society marching towards technological singularity.\nTo access the science channel, use :n. For command, use :c."
|
||||
icon_state = "com_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/heads/rd
|
||||
|
||||
/obj/item/device/radio/headset/heads/hos
|
||||
name = "\proper the head of security's headset"
|
||||
desc = "The headset of the man in charge of keeping order and protecting the station. \nTo access the security channel, use :s. For command, use :c."
|
||||
desc = "The headset of the man in charge of keeping order and protecting the station.\nTo access the security channel, use :s. For command, use :c."
|
||||
icon_state = "com_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/heads/hos
|
||||
|
||||
/obj/item/device/radio/headset/heads/hos/alt
|
||||
name = "\proper the head of security's bowman headset"
|
||||
desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs. \nTo access the security channel, use :s. For command, use :c."
|
||||
desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs.\nTo access the security channel, use :s. For command, use :c."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
flags_2 = BANG_PROTECT_2
|
||||
|
||||
/obj/item/device/radio/headset/heads/ce
|
||||
name = "\proper the chief engineer's headset"
|
||||
desc = "The headset of the guy in charge of keeping the station powered and undamaged. \nTo access the engineering channel, use :e. For command, use :c."
|
||||
desc = "The headset of the guy in charge of keeping the station powered and undamaged.\nTo access the engineering channel, use :e. For command, use :c."
|
||||
icon_state = "com_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/heads/ce
|
||||
|
||||
/obj/item/device/radio/headset/heads/cmo
|
||||
name = "\proper the chief medical officer's headset"
|
||||
desc = "The headset of the highly trained medical chief. \nTo access the medical channel, use :m. For command, use :c."
|
||||
desc = "The headset of the highly trained medical chief.\nTo access the medical channel, use :m. For command, use :c."
|
||||
icon_state = "com_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/heads/cmo
|
||||
|
||||
/obj/item/device/radio/headset/heads/hop
|
||||
name = "\proper the head of personnel's headset"
|
||||
desc = "The headset of the guy who will one day be captain. \nChannels are as follows: :u - supply, :v - service, :c - command."
|
||||
desc = "The headset of the guy who will one day be captain.\nChannels are as follows: :u - supply, :v - service, :c - command."
|
||||
icon_state = "com_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/heads/hop
|
||||
|
||||
/obj/item/device/radio/headset/headset_cargo
|
||||
name = "supply radio headset"
|
||||
desc = "A headset used by the QM and his slaves. \nTo access the supply channel, use :u."
|
||||
desc = "A headset used by the QM and his slaves.\nTo access the supply channel, use :u."
|
||||
icon_state = "cargo_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_cargo
|
||||
|
||||
/obj/item/device/radio/headset/headset_cargo/mining
|
||||
name = "mining radio headset"
|
||||
desc = "Headset used by shaft miners. \nTo access the supply channel, use :u. For science, use :n."
|
||||
desc = "Headset used by shaft miners.\nTo access the supply channel, use :u. For science, use :n."
|
||||
icon_state = "mine_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_mining
|
||||
|
||||
/obj/item/device/radio/headset/headset_srv
|
||||
name = "service radio headset"
|
||||
desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean. \nTo access the service channel, use :v."
|
||||
desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean.\nTo access the service channel, use :v."
|
||||
icon_state = "srv_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_service
|
||||
|
||||
/obj/item/device/radio/headset/headset_cent
|
||||
name = "\improper CentCom headset"
|
||||
desc = "A headset used by the upper echelons of Nanotrasen. \nTo access the centcom channel, use :y."
|
||||
desc = "A headset used by the upper echelons of Nanotrasen.\nTo access the CentCom channel, use :y."
|
||||
icon_state = "cent_headset"
|
||||
keyslot = new /obj/item/device/encryptionkey/headset_com
|
||||
keyslot2 = new /obj/item/device/encryptionkey/headset_cent
|
||||
@@ -201,7 +201,7 @@
|
||||
|
||||
/obj/item/device/radio/headset/headset_cent/alt
|
||||
name = "\improper CentCom bowman headset"
|
||||
desc = "A headset especially for emergency response personnel. Protects ears from flashbangs. \nTo access the centcom channel, use :y."
|
||||
desc = "A headset especially for emergency response personnel. Protects ears from flashbangs.\nTo access the CentCom channel, use :y."
|
||||
icon_state = "cent_headset_alt"
|
||||
item_state = "cent_headset_alt"
|
||||
keyslot = null
|
||||
|
||||
@@ -195,9 +195,11 @@
|
||||
return ITALICS | REDUCE_RANGE
|
||||
|
||||
/obj/item/device/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans, datum/language/language)
|
||||
if(!on) return // the device has to be on
|
||||
if(!on)
|
||||
return // the device has to be on
|
||||
// Fix for permacell radios, but kinda eh about actually fixing them.
|
||||
if(!M || !message) return
|
||||
if(!M || !message)
|
||||
return
|
||||
|
||||
if(wires.is_cut(WIRE_TX))
|
||||
return
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
item_state = "ttv"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/bombs_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/bombs_righthand.dmi'
|
||||
desc = "Regulates the transfer of air between two tanks"
|
||||
desc = "Regulates the transfer of air between two tanks."
|
||||
var/obj/item/tank/tank_one
|
||||
var/obj/item/tank/tank_two
|
||||
var/obj/item/device/assembly/attached_device
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
|
||||
/obj/item/dnainjector/stuttmut
|
||||
name = "\improper DNA injector (Stutt.)"
|
||||
desc = "Makes you s-s-stuttterrr"
|
||||
desc = "Makes you s-s-stuttterrr."
|
||||
add_mutations_static = list(NERVOUS)
|
||||
|
||||
/obj/item/dnainjector/antistutt
|
||||
|
||||
@@ -157,19 +157,24 @@
|
||||
if(precision)
|
||||
the_targets -= my_target
|
||||
var/datum/reagents/R = new/datum/reagents(5)
|
||||
if(!W) return
|
||||
if(!W)
|
||||
return
|
||||
W.reagents = R
|
||||
R.my_atom = W
|
||||
if(!W || !src) return
|
||||
if(!W || !src)
|
||||
return
|
||||
src.reagents.trans_to(W,1)
|
||||
for(var/b=0, b<power, b++)
|
||||
step_towards(W,my_target)
|
||||
if(!W || !W.reagents) return
|
||||
if(!W || !W.reagents)
|
||||
return
|
||||
W.reagents.reaction(get_turf(W))
|
||||
for(var/A in get_turf(W))
|
||||
if(!W) return
|
||||
if(!W)
|
||||
return
|
||||
W.reagents.reaction(A)
|
||||
if(W.loc == my_target) break
|
||||
if(W.loc == my_target)
|
||||
break
|
||||
sleep(2)
|
||||
|
||||
else
|
||||
|
||||
@@ -529,7 +529,7 @@
|
||||
|
||||
/obj/item/grenade/chem_grenade/bioterrorfoam
|
||||
name = "Bio terror foam grenade"
|
||||
desc = "Tiger Cooperative chemical foam grenade. Causes temporary irration, blindness, confusion, mutism, and mutations to carbon based life forms. Contains additional spore toxin"
|
||||
desc = "Tiger Cooperative chemical foam grenade. Causes temporary irration, blindness, confusion, mutism, and mutations to carbon based life forms. Contains additional spore toxin."
|
||||
stage = READY
|
||||
|
||||
/obj/item/grenade/chem_grenade/bioterrorfoam/Initialize()
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
message_say = "FOR THE HIVE!"
|
||||
else if(role == "cultist")
|
||||
message_say = "FOR NAR-SIE!"
|
||||
else if(role == "revolutionary" || role == "head revolutionary")
|
||||
else if(is_revolutionary(user))
|
||||
message_say = "VIVA LA REVOLUTION!"
|
||||
user.say(message_say)
|
||||
explosion(user,0,2,0) //Cheap explosion imitation because putting prime() here causes runtimes
|
||||
@@ -183,7 +183,7 @@
|
||||
message_say = "FOR THE HIVE!"
|
||||
else if(role == "cultist")
|
||||
message_say = "FOR NAR-SIE!"
|
||||
else if(role == "revolutionary" || role == "head revolutionary")
|
||||
else if(is_revolutionary(user))
|
||||
message_say = "VIVA LA REVOLUTION!"
|
||||
user.say(message_say)
|
||||
target = user
|
||||
|
||||
@@ -50,4 +50,4 @@
|
||||
for(var/mob/living/carbon/L in T)
|
||||
L.adjustStaminaLoss(stamina_damage)
|
||||
L.bodytemperature -= 230
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
/obj/item/holosign_creator/cyborg
|
||||
name = "Energy Barrier Projector"
|
||||
desc = "A holographic projector that creates fragile energy fields"
|
||||
desc = "A holographic projector that creates fragile energy fields."
|
||||
creation_time = 15
|
||||
max_signs = 9
|
||||
holosign_type = /obj/structure/holosign/barrier/cyborg
|
||||
|
||||
@@ -52,6 +52,8 @@
|
||||
/obj/item/nullrod/godhand
|
||||
icon_state = "disintegrate"
|
||||
item_state = "disintegrate"
|
||||
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
|
||||
name = "god hand"
|
||||
desc = "This hand of yours glows with an awesome power!"
|
||||
flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
/obj/item/implant/exile
|
||||
name = "exile implant"
|
||||
desc = "Prevents you from returning from away missions"
|
||||
desc = "Prevents you from returning from away missions."
|
||||
origin_tech = "materials=2;biotech=3;magnets=2;bluespace=3"
|
||||
activated = 0
|
||||
|
||||
|
||||
@@ -19,14 +19,18 @@
|
||||
|
||||
/obj/item/implant/mindshield/implant(mob/living/target, mob/user, silent = 0)
|
||||
if(..())
|
||||
if((target.mind in (SSticker.mode.head_revolutionaries)) || target.mind.unconvertable)
|
||||
if(!target.mind)
|
||||
return TRUE
|
||||
if(target.mind.has_antag_datum(/datum/antagonist/rev/head) || target.mind.unconvertable)
|
||||
if(!silent)
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
removed(target, 1)
|
||||
qdel(src)
|
||||
return FALSE
|
||||
if(target.mind in SSticker.mode.revolutionaries)
|
||||
SSticker.mode.remove_revolutionary(target.mind, FALSE, user)
|
||||
|
||||
var/datum/antagonist/rev/rev = target.mind.has_antag_datum(/datum/antagonist/rev)
|
||||
if(rev)
|
||||
rev.remove_revolutionary(FALSE, user)
|
||||
if(!silent)
|
||||
if(target.mind in SSticker.mode.cult)
|
||||
to_chat(target, "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/implant/weapons_auth
|
||||
name = "firearms authentication implant"
|
||||
desc = "Lets you shoot your guns"
|
||||
desc = "Lets you shoot your guns."
|
||||
icon_state = "auth"
|
||||
origin_tech = "magnets=2;programming=7;biotech=5;syndicate=5"
|
||||
activated = 0
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
|
||||
/obj/machinery/implantchair/genepurge
|
||||
name = "Genetic purifier"
|
||||
desc = "Used to purge human genome of foreign influences"
|
||||
desc = "Used to purge a human genome of foreign influences."
|
||||
special = TRUE
|
||||
special_name = "Purge genome"
|
||||
injection_cooldown = 0
|
||||
|
||||
@@ -35,7 +35,8 @@
|
||||
|
||||
|
||||
/obj/item/mop/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(reagents.total_volume < 1)
|
||||
to_chat(user, "<span class='warning'>Your mop is dry!</span>")
|
||||
|
||||
@@ -79,7 +79,8 @@
|
||||
|
||||
|
||||
/obj/item/paint/afterattack(turf/target, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
if(paintleft <= 0)
|
||||
icon_state = "paint_empty"
|
||||
return
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/toy/plush
|
||||
name = "plush"
|
||||
desc = "this is the special coder plush, do not steal"
|
||||
desc = "This is the special coder plush, do not steal."
|
||||
icon = 'icons/obj/plushes.dmi'
|
||||
icon_state = "debug"
|
||||
attack_verb = list("thumped", "whomped", "bumped")
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
|
||||
/obj/item/pneumatic_cannon/pie
|
||||
name = "pie cannon"
|
||||
desc = "Load cream pie for optimal results"
|
||||
desc = "Load cream pie for optimal results."
|
||||
force = 10
|
||||
icon_state = "piecannon"
|
||||
gasPerThrow = 0
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
name = "blue banner"
|
||||
icon_state = "banner-blue"
|
||||
item_state = "banner-blue"
|
||||
desc = "A banner with the logo of the blue deity"
|
||||
desc = "A banner with the logo of the blue deity."
|
||||
|
||||
/obj/item/storage/backpack/bannerpack
|
||||
name = "nanotrasen banner backpack"
|
||||
|
||||
@@ -684,4 +684,4 @@
|
||||
/obj/item/borg/sight/hud/sec/New()
|
||||
..()
|
||||
hud = new /obj/item/clothing/glasses/hud/security(src)
|
||||
return
|
||||
return
|
||||
@@ -172,7 +172,7 @@
|
||||
|
||||
/obj/item/borg/upgrade/syndicate
|
||||
name = "illegal equipment module"
|
||||
desc = "Unlocks the hidden, deadlier functions of a cyborg"
|
||||
desc = "Unlocks the hidden, deadlier functions of a cyborg."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
require_module = 1
|
||||
origin_tech = "combat=4;syndicate=1"
|
||||
|
||||
@@ -58,7 +58,8 @@
|
||||
return
|
||||
|
||||
/obj/item/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
if(wielded)
|
||||
if(charged == 5)
|
||||
charged = 0
|
||||
|
||||
@@ -256,6 +256,18 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \
|
||||
/obj/item/stack/sheet/cardboard/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/sheet/cardboard/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/stamp/clown) && !istype(loc, /obj/item/storage))
|
||||
var/atom/droploc = drop_location()
|
||||
if(use(1))
|
||||
playsound(I, 'sound/items/bikehorn.ogg', 50, 1, -1)
|
||||
to_chat(user, "<span class='notice'>You stamp the cardboard! Its a clown box! Honk!</span>")
|
||||
if (amount >= 0)
|
||||
new/obj/item/storage/box/clown(droploc) //bugfix
|
||||
else
|
||||
. = ..()
|
||||
|
||||
|
||||
/*
|
||||
* Runed Metal
|
||||
*/
|
||||
|
||||
@@ -136,7 +136,8 @@
|
||||
if (usr.restrained() || usr.stat || usr.get_active_held_item() != src)
|
||||
return
|
||||
if (href_list["make"])
|
||||
if (get_amount() < 1) qdel(src) //Never should happen
|
||||
if (get_amount() < 1)
|
||||
qdel(src) //Never should happen
|
||||
|
||||
var/datum/stack_recipe/R = recipes[text2num(href_list["make"])]
|
||||
var/multiplier = text2num(href_list["multiplier"])
|
||||
@@ -296,7 +297,7 @@
|
||||
|
||||
|
||||
/obj/item/stack/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, merge_type))
|
||||
if(istype(W, merge_type) && amount < max_amount)
|
||||
var/obj/item/stack/S = W
|
||||
merge(S)
|
||||
to_chat(user, "<span class='notice'>Your [S.name] stack now contains [S.get_amount()] [S.singular_name]\s.</span>")
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
/obj/item/storage/backpack/satchel/flat/secret/Initialize()
|
||||
. = ..()
|
||||
|
||||
if(isfloorturf(loc) && !istype(loc, /turf/open/floor/plating/))
|
||||
if(isfloorturf(loc) && !isplatingturf(loc))
|
||||
hide(1)
|
||||
|
||||
/obj/item/storage/backpack/satchel/flat/secret/hide(intact)
|
||||
@@ -518,7 +518,7 @@
|
||||
new /obj/item/ammo_box/foambox/riot(src)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle
|
||||
desc = "A large duffel bag containing a deadly chemicals, a chemical spray, chemical grenade, a Donksoft assault rifle, riot grade darts, a minature syringe gun, and a box of syringes"
|
||||
desc = "A large duffel bag containing a deadly chemicals, a chemical spray, chemical grenade, a Donksoft assault rifle, riot grade darts, a minature syringe gun, and a box of syringes."
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle/PopulateContents()
|
||||
new /obj/item/reagent_containers/spray/chemsprayer/bioterror(src)
|
||||
|
||||
@@ -173,7 +173,8 @@
|
||||
// Modified handle_item_insertion. Would prefer not to, but...
|
||||
/obj/item/storage/bag/sheetsnatcher/handle_item_insertion(obj/item/W, prevent_warning = 0)
|
||||
var/obj/item/stack/sheet/S = W
|
||||
if(!istype(S)) return 0
|
||||
if(!istype(S))
|
||||
return 0
|
||||
|
||||
var/amount
|
||||
var/inserted = 0
|
||||
@@ -254,7 +255,8 @@
|
||||
// Instead of removing
|
||||
/obj/item/storage/bag/sheetsnatcher/remove_from_storage(obj/item/W, atom/new_location)
|
||||
var/obj/item/stack/sheet/S = W
|
||||
if(!istype(S)) return 0
|
||||
if(!istype(S))
|
||||
return 0
|
||||
|
||||
//I would prefer to drop a new stack, but the item/attack_hand code
|
||||
// that calls this can't recieve a different object than you clicked on.
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
|
||||
/obj/item/storage/belt/soulstone
|
||||
name = "soul stone belt"
|
||||
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away"
|
||||
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away."
|
||||
icon_state = "soulstonebelt"
|
||||
item_state = "soulstonebelt"
|
||||
storage_slots = 6
|
||||
|
||||
@@ -607,6 +607,29 @@
|
||||
playsound(loc, "rustle", 50, 1, -5)
|
||||
user.visible_message("<span class='notice'>[user] hugs \the [src].</span>","<span class='notice'>You hug \the [src].</span>")
|
||||
|
||||
/////clown box & honkbot assembly
|
||||
obj/item/storage/box/clown
|
||||
name = "clown box"
|
||||
desc = "A colorful cardboard box for the clown"
|
||||
icon_state = "clownbox"
|
||||
illustration = null
|
||||
|
||||
/obj/item/storage/box/clown/attackby(obj/item/I, mob/user, params)
|
||||
if((istype(I, /obj/item/bodypart/l_arm/robot)) || (istype(I, /obj/item/bodypart/r_arm/robot)))
|
||||
if(contents.len) //prevent accidently deleting contents
|
||||
to_chat(user, "<span class='warning'>You need to empty [src] out first!</span>")
|
||||
return
|
||||
if(!user.temporarilyRemoveItemFromInventory(I))
|
||||
return
|
||||
qdel(I)
|
||||
to_chat(user, "<span class='notice'>You add some wheels to the [src]! You've got an honkbot assembly now! Honk!</span>")
|
||||
var/obj/item/honkbot_assembly/A = new
|
||||
qdel(src)
|
||||
user.put_in_hands(A)
|
||||
else
|
||||
return ..()
|
||||
|
||||
//////
|
||||
/obj/item/storage/box/hug/medical/PopulateContents()
|
||||
new /obj/item/stack/medical/bruise_pack(src)
|
||||
new /obj/item/stack/medical/ointment(src)
|
||||
@@ -730,7 +753,7 @@
|
||||
/obj/item/storage/box/ingredients //This box is for the randomely chosen version the chef spawns with, it shouldn't actually exist.
|
||||
name = "ingredients box"
|
||||
illustration = "fruit"
|
||||
var/theme_name
|
||||
var/theme_name
|
||||
|
||||
/obj/item/storage/box/ingredients/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -27,10 +27,9 @@
|
||||
for(var/i = 1 to storage_slots)
|
||||
new spawn_type(src)
|
||||
|
||||
/obj/item/storage/fancy/update_icon(itemremoved = 0)
|
||||
/obj/item/storage/fancy/update_icon()
|
||||
if(fancy_open)
|
||||
var/total_contents = src.contents.len - itemremoved
|
||||
icon_state = "[icon_type]box[total_contents]"
|
||||
icon_state = "[icon_type]box[contents.len]"
|
||||
else
|
||||
icon_state = "[icon_type]box"
|
||||
|
||||
@@ -38,9 +37,9 @@
|
||||
..()
|
||||
if(fancy_open)
|
||||
if(contents.len == 1)
|
||||
to_chat(user, "There is one [src.icon_type] left.")
|
||||
to_chat(user, "There is one [icon_type] left.")
|
||||
else
|
||||
to_chat(user, "There are [contents.len <= 0 ? "no" : "[src.contents.len]"] [src.icon_type]s left.")
|
||||
to_chat(user, "There are [contents.len <= 0 ? "no" : "[contents.len]"] [icon_type]s left.")
|
||||
|
||||
/obj/item/storage/fancy/attack_self(mob/user)
|
||||
fancy_open = !fancy_open
|
||||
@@ -58,9 +57,7 @@
|
||||
|
||||
/obj/item/storage/fancy/remove_from_storage(obj/item/W, atom/new_location, burn = 0)
|
||||
fancy_open = TRUE
|
||||
. = ..()
|
||||
//Recall update icon with the fancy item snowflake arg (ugh)
|
||||
update_icon(1)
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Donut Box
|
||||
|
||||
@@ -71,7 +71,8 @@
|
||||
if (istype(src.loc, /obj/item/assembly))
|
||||
icon = src.loc
|
||||
if(!in_range(src, user))
|
||||
if (icon == src) to_chat(user, "<span class='notice'>If you want any more information you'll need to get closer.</span>")
|
||||
if (icon == src)
|
||||
to_chat(user, "<span class='notice'>If you want any more information you'll need to get closer.</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>The pressure gauge reads [round(src.air_contents.return_pressure(),0.01)] kPa.</span>")
|
||||
|
||||
@@ -480,7 +480,8 @@
|
||||
|
||||
|
||||
/obj/item/weldingtool/afterattack(atom/O, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(welding)
|
||||
remove_fuel(1)
|
||||
|
||||
@@ -49,7 +49,8 @@
|
||||
return
|
||||
|
||||
/obj/item/toy/balloon/afterattack(atom/A as mob|obj, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
if (istype(A, /obj/structure/reagent_dispensers))
|
||||
var/obj/structure/reagent_dispensers/RD = A
|
||||
if(RD.reagents.total_volume <= 0)
|
||||
@@ -274,7 +275,7 @@
|
||||
*/
|
||||
/obj/item/toy/foamblade
|
||||
name = "foam armblade"
|
||||
desc = "it says \"Sternside Changs #1 fan\" on it. "
|
||||
desc = "It says \"Sternside Changs #1 fan\" on it."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "foamblade"
|
||||
item_state = "arm_blade"
|
||||
@@ -287,7 +288,7 @@
|
||||
|
||||
/obj/item/toy/windupToolbox
|
||||
name = "windup toolbox"
|
||||
desc = "A replica toolbox that rumbles when you turn the key"
|
||||
desc = "A replica toolbox that rumbles when you turn the key."
|
||||
icon_state = "his_grace"
|
||||
item_state = "artistic_toolbox"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/banhammer
|
||||
desc = "A banhammer"
|
||||
desc = "A banhammer."
|
||||
name = "banhammer"
|
||||
icon = 'icons/obj/items_and_weapons.dmi'
|
||||
icon_state = "toyhammer"
|
||||
@@ -192,7 +192,7 @@
|
||||
|
||||
/obj/item/katana
|
||||
name = "katana"
|
||||
desc = "Woefully underpowered in D20"
|
||||
desc = "Woefully underpowered in D20."
|
||||
icon_state = "katana"
|
||||
item_state = "katana"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
@@ -201,7 +201,7 @@
|
||||
slot_flags = SLOT_BELT | SLOT_BACK
|
||||
force = 40
|
||||
throwforce = 10
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
block_chance = 50
|
||||
@@ -257,7 +257,7 @@
|
||||
|
||||
/obj/item/throwing_star
|
||||
name = "throwing star"
|
||||
desc = "An ancient weapon still used to this day due to it's ease of lodging itself into victim's body parts"
|
||||
desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts."
|
||||
icon_state = "throwingstar"
|
||||
item_state = "eshield0"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
|
||||
@@ -390,7 +390,7 @@
|
||||
|
||||
/obj/item/ectoplasm
|
||||
name = "ectoplasm"
|
||||
desc = "spooky"
|
||||
desc = "Spooky."
|
||||
gender = PLURAL
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "ectoplasm"
|
||||
@@ -590,6 +590,7 @@
|
||||
name = "slapper"
|
||||
desc = "This is how real men fight."
|
||||
icon_state = "latexballon"
|
||||
item_state = "nothing"
|
||||
force = 1
|
||||
throwforce = 0
|
||||
flags_1 = DROPDEL_1 | ABSTRACT_1
|
||||
|
||||
Reference in New Issue
Block a user