d (#1)
This commit is contained in:
@@ -66,7 +66,10 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
|
||||
/client/proc/toggle_AI_interact, /*toggle admin ability to interact with machines as an AI*/
|
||||
/client/proc/customiseSNPC, /* Customise any interactive crewmembers in the world */
|
||||
/client/proc/resetSNPC, /* Resets any interactive crewmembers in the world */
|
||||
/client/proc/open_shuttle_manipulator /* Opens shuttle manipulator UI */
|
||||
/client/proc/open_shuttle_manipulator, /* Opens shuttle manipulator UI */
|
||||
/client/proc/deadchat,
|
||||
/client/proc/toggleprayers,
|
||||
/client/proc/toggleadminhelpsound
|
||||
)
|
||||
GLOBAL_PROTECT(admin_verbs_ban)
|
||||
GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel,/client/proc/DB_ban_panel,/client/proc/stickybanpanel))
|
||||
|
||||
@@ -506,7 +506,7 @@
|
||||
for(var/datum/mind/N in SSticker.mode.cult)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[N.has_antag_datum(ANTAG_DATUM_CULT_MASTER) ? "<i><font color=red> \[Master\]</font></i>" : ""][M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td>"
|
||||
dat += "<td><A href='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</a></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
@@ -480,7 +480,8 @@
|
||||
if(minutes > GLOB.CMinutes)
|
||||
mins = minutes - GLOB.CMinutes
|
||||
mins = input(usr,"How long (in minutes)? (Default: 1440)","Ban time",mins ? mins : 1440) as num|null
|
||||
if(!mins)
|
||||
if(mins <= 0)
|
||||
to_chat(usr, "<span class='danger'>[mins] is not a valid duration.</span>")
|
||||
return
|
||||
minutes = GLOB.CMinutes + mins
|
||||
duration = GetExp(minutes)
|
||||
@@ -914,7 +915,8 @@
|
||||
switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
|
||||
if("Yes")
|
||||
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
|
||||
if(!mins)
|
||||
if(mins <= 0)
|
||||
to_chat(usr, "<span class='danger'>[mins] is not a valid duration.</span>")
|
||||
return
|
||||
var/reason = input(usr,"Please State Reason.","Reason") as message|null
|
||||
if(!reason)
|
||||
@@ -1109,7 +1111,8 @@
|
||||
switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
|
||||
if("Yes")
|
||||
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
|
||||
if(!mins)
|
||||
if(mins <= 0)
|
||||
to_chat(usr, "<span class='danger'>[mins] is not a valid duration.</span>")
|
||||
return
|
||||
var/reason = input(usr,"Please State Reason.","Reason") as message|null
|
||||
if(!reason)
|
||||
|
||||
@@ -612,8 +612,8 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
if (O.vv_edit_var(variable, var_new) == FALSE)
|
||||
to_chat(src, "Your edit was rejected by the object.")
|
||||
return
|
||||
log_world("### VarEdit by [src]: [O.type] [variable]=[html_encode("[O.vars[variable]]")]")
|
||||
log_admin("[key_name(src)] modified [original_name]'s [variable] to [O.vars[variable]]")
|
||||
var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]"
|
||||
log_world("### VarEdit by [src]: [O.type] [variable]=[html_encode("[var_new]")]")
|
||||
log_admin("[key_name(src)] modified [original_name]'s [variable] to [var_new]")
|
||||
var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] to [var_new]"
|
||||
message_admins(msg)
|
||||
admin_ticket_log(O, msg)
|
||||
@@ -9,13 +9,16 @@ Pipes -> Pipelines
|
||||
Pipelines + Other Objects -> Pipe network
|
||||
|
||||
*/
|
||||
#define PIPE_VISIBLE_LEVEL 2
|
||||
#define PIPE_HIDDEN_LEVEL 1
|
||||
|
||||
/obj/machinery/atmospherics
|
||||
anchored = 1
|
||||
idle_power_usage = 0
|
||||
active_power_usage = 0
|
||||
power_channel = ENVIRON
|
||||
on_blueprints = TRUE
|
||||
layer = GAS_PIPE_LAYER //under wires
|
||||
layer = GAS_PIPE_HIDDEN_LAYER //under wires
|
||||
resistance_flags = FIRE_PROOF
|
||||
obj_integrity = 200
|
||||
max_integrity = 200
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
initialize_directions = SOUTH|NORTH
|
||||
use_power = 1
|
||||
device_type = BINARY
|
||||
layer = GAS_PUMP_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/SetInitDirections()
|
||||
switch(dir)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
initialize_directions = SOUTH|NORTH|WEST
|
||||
use_power = 1
|
||||
device_type = TRINARY
|
||||
layer = GAS_FILTER_LAYER
|
||||
|
||||
var/flipped = 0
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
obj_integrity = 350
|
||||
max_integrity = 350
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 30, acid = 30)
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
|
||||
var/on = FALSE
|
||||
state_open = FALSE
|
||||
@@ -155,7 +156,7 @@
|
||||
var/turf/T = get_turf(src)
|
||||
if(occupant)
|
||||
var/mob/living/mob_occupant = occupant
|
||||
if(mob_occupant.health >= 100) // Don't bother with fully healed people.
|
||||
if(mob_occupant.health >= mob_occupant.getMaxHealth()) // Don't bother with fully healed people.
|
||||
on = FALSE
|
||||
update_icon()
|
||||
playsound(T, 'sound/machines/cryo_warning.ogg', volume) // Bug the doctors.
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
density = 1
|
||||
|
||||
name = "generator input"
|
||||
desc = "Placeholder"
|
||||
desc = "An input for a generator."
|
||||
layer = LOW_OBJ_LAYER
|
||||
|
||||
var/update_cycle
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
can_unwrench = 1
|
||||
|
||||
layer = LOW_OBJ_LAYER
|
||||
|
||||
var/obj/machinery/atmospherics/components/unary/heat_exchanger/partner = null
|
||||
var/update_cycle
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
level = 1
|
||||
layer = GAS_SCRUBBER_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/Destroy()
|
||||
if(SSradio)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH
|
||||
layer = GAS_SCRUBBER_LAYER
|
||||
|
||||
var/on = 0
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
var/obj/machinery/portable_atmospherics/connected_device
|
||||
use_power = 0
|
||||
level = 0
|
||||
layer = GAS_FILTER_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/New()
|
||||
..()
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters
|
||||
density = 1
|
||||
var/gas_type = 0
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/New()
|
||||
..()
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine
|
||||
name = "thermomachine"
|
||||
desc = "Heats or cools gas in connected pipes."
|
||||
icon_state = "cold_map"
|
||||
icon = 'icons/obj/Cryogenic2.dmi'
|
||||
icon_state = "freezer"
|
||||
var/icon_state_on = "cold_on"
|
||||
var/icon_state_open = "cold_off"
|
||||
density = TRUE
|
||||
@@ -9,7 +10,8 @@
|
||||
obj_integrity = 300
|
||||
max_integrity = 300
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 30)
|
||||
|
||||
layer = OBJ_LAYER
|
||||
|
||||
var/on = FALSE
|
||||
var/min_temperature = 0
|
||||
var/max_temperature = 0
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
can_unwrench = 1
|
||||
welded = 0
|
||||
level = 1
|
||||
layer = GAS_SCRUBBER_LAYER
|
||||
|
||||
var/id_tag = null
|
||||
var/on = 0
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
can_unwrench = 1
|
||||
welded = 0
|
||||
level = 1
|
||||
layer = GAS_SCRUBBER_LAYER
|
||||
|
||||
var/id_tag = null
|
||||
var/on = 0
|
||||
|
||||
@@ -38,13 +38,13 @@
|
||||
|
||||
//Colored pipes, use these for mapping
|
||||
/obj/machinery/atmospherics/pipe/manifold/general
|
||||
name="pipe"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers
|
||||
name="scrubbers pipe"
|
||||
@@ -52,10 +52,11 @@
|
||||
color=rgb(255,0,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply
|
||||
name="air supply pipe"
|
||||
@@ -63,10 +64,11 @@
|
||||
color=rgb(0,0,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain
|
||||
name="main air supply pipe"
|
||||
@@ -74,47 +76,96 @@
|
||||
color=rgb(130,43,272)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow
|
||||
pipe_color=rgb(255,198,0)
|
||||
color=rgb(255,198,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan
|
||||
pipe_color=rgb(0,256,249)
|
||||
color=rgb(0,256,249)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green
|
||||
pipe_color=rgb(30,256,0)
|
||||
color=rgb(30,256,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange
|
||||
pipe_color=rgb(255,127,39)
|
||||
color=rgb(255,127,39)
|
||||
pipe_color=rgb(255,129,25)
|
||||
color=rgb(255,129,25)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/orange/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple
|
||||
pipe_color=rgb(128,0,182)
|
||||
color=rgb(128,0,182)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/purple/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark
|
||||
pipe_color=rgb(69,69,69)
|
||||
color=rgb(69,69,69)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/dark/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet
|
||||
pipe_color=rgb(64,0,128)
|
||||
color=rgb(64,0,128)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/violet/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown
|
||||
pipe_color=rgb(178,100,56)
|
||||
color=rgb(178,100,56)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/brown/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
@@ -29,13 +29,13 @@
|
||||
|
||||
//Colored pipes, use these for mapping
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general
|
||||
name="pipe"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers
|
||||
name="scrubbers pipe"
|
||||
@@ -43,10 +43,12 @@
|
||||
color=rgb(255,0,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply
|
||||
name="air supply pipe"
|
||||
@@ -54,10 +56,11 @@
|
||||
color=rgb(0,0,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain
|
||||
name="main air supply pipe"
|
||||
@@ -65,47 +68,96 @@
|
||||
color=rgb(130,43,272)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow
|
||||
pipe_color=rgb(255,198,0)
|
||||
color=rgb(255,198,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan
|
||||
pipe_color=rgb(0,256,249)
|
||||
color=rgb(0,256,249)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green
|
||||
pipe_color=rgb(30,256,0)
|
||||
color=rgb(30,256,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/green/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange
|
||||
pipe_color=rgb(255,127,39)
|
||||
color=rgb(255,127,39)
|
||||
pipe_color=rgb(255,129,25)
|
||||
color=rgb(255,129,25)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple
|
||||
pipe_color=rgb(128,0,182)
|
||||
color=rgb(128,0,182)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark
|
||||
pipe_color=rgb(69,69,69)
|
||||
color=rgb(69,69,69)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet
|
||||
pipe_color=rgb(64,0,128)
|
||||
color=rgb(64,0,128)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown
|
||||
pipe_color=rgb(178,100,56)
|
||||
color=rgb(178,100,56)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
@@ -40,13 +40,13 @@ The regular pipe you see everywhere, including bent ones.
|
||||
|
||||
//Colored pipes, use these for mapping
|
||||
/obj/machinery/atmospherics/pipe/simple/general
|
||||
name="pipe"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/general/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers
|
||||
name="scrubbers pipe"
|
||||
@@ -54,10 +54,11 @@ The regular pipe you see everywhere, including bent ones.
|
||||
color=rgb(255,0,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply
|
||||
name="air supply pipe"
|
||||
@@ -65,10 +66,11 @@ The regular pipe you see everywhere, including bent ones.
|
||||
color=rgb(0,0,255)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain
|
||||
name="main air supply pipe"
|
||||
@@ -76,47 +78,96 @@ The regular pipe you see everywhere, including bent ones.
|
||||
color=rgb(130,43,272)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow
|
||||
pipe_color=rgb(255,198,0)
|
||||
color=rgb(255,198,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan
|
||||
pipe_color=rgb(0,256,249)
|
||||
color=rgb(0,256,249)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green
|
||||
pipe_color=rgb(30,256,0)
|
||||
color=rgb(30,256,0)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/green/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange
|
||||
pipe_color=rgb(255,127,39)
|
||||
color=rgb(255,127,39)
|
||||
pipe_color=rgb(255,129,25)
|
||||
color=rgb(255,129,25)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/visible
|
||||
level = 2
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden
|
||||
level = 1
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple
|
||||
pipe_color=rgb(128,0,182)
|
||||
color=rgb(128,0,182)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark
|
||||
pipe_color=rgb(69,69,69)
|
||||
color=rgb(69,69,69)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet
|
||||
pipe_color=rgb(64,0,128)
|
||||
color=rgb(64,0,128)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/violet/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown
|
||||
pipe_color=rgb(178,100,56)
|
||||
color=rgb(178,100,56)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown/visible
|
||||
level = PIPE_VISIBLE_LEVEL
|
||||
layer = GAS_PIPE_VISIBLE_LAYER
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/brown/hidden
|
||||
level = PIPE_HIDDEN_LEVEL
|
||||
@@ -69,7 +69,7 @@
|
||||
|
||||
// Plasteel. Lightweight, strong and contains some plasma too.
|
||||
/datum/export/stack/plasteel
|
||||
cost = 85
|
||||
cost = 305 // 2000u of plasma + 2000u of metal.
|
||||
message = "of plasteel"
|
||||
export_types = list(/obj/item/stack/sheet/plasteel)
|
||||
|
||||
|
||||
@@ -1249,13 +1249,13 @@
|
||||
|
||||
/datum/supply_pack/materials/plasteel20
|
||||
name = "20 Plasteel Sheets"
|
||||
cost = 3000
|
||||
cost = 7500
|
||||
contains = list(/obj/item/stack/sheet/plasteel/twenty)
|
||||
crate_name = "plasteel sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/plasteel50
|
||||
name = "50 Plasteel Sheets"
|
||||
cost = 5000
|
||||
cost = 16500
|
||||
contains = list(/obj/item/stack/sheet/plasteel/fifty)
|
||||
crate_name = "plasteel sheets crate"
|
||||
|
||||
|
||||
@@ -490,7 +490,7 @@ GLOBAL_LIST(external_rsc_urls)
|
||||
return
|
||||
if(!account_join_date)
|
||||
account_join_date = "Error"
|
||||
var/datum/DBQuery/query_log_connection = SSdbcore.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),COALESCE(INET_ATON('[world.internet_address]'), 0),'[world.port]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')")
|
||||
var/datum/DBQuery/query_log_connection = SSdbcore.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')),'[world.port]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')")
|
||||
query_log_connection.Execute()
|
||||
if(new_player)
|
||||
player_age = -1
|
||||
|
||||
@@ -625,7 +625,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
else if(src.dir == WEST)
|
||||
del src.currentimage
|
||||
src.currentimage = new /image(left,src)
|
||||
to_chat(my_target, currentimage)
|
||||
SEND_IMAGE(my_target, currentimage)
|
||||
|
||||
|
||||
/obj/effect/fake_attacker/proc/attack_loop()
|
||||
@@ -669,7 +669,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
var/obj/effect/overlay/O = new/obj/effect/overlay(target.loc)
|
||||
O.name = "blood"
|
||||
var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1)
|
||||
to_chat(target, I)
|
||||
SEND_IMAGE(target, I)
|
||||
QDEL_IN(O, 300)
|
||||
|
||||
|
||||
@@ -786,7 +786,6 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
new /obj/effect/hallucination/items_other(src.loc,src)
|
||||
if("sounds")
|
||||
//Strange audio
|
||||
//to_chat(src, "Strange Audio")
|
||||
switch(rand(1,20))
|
||||
if(1) playsound_local(null,'sound/machines/airlock.ogg', 15, 1)
|
||||
if(2)
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/slice(accuracy, obj/item/weapon/W, mob/user)
|
||||
if((slices_num <= 0 || !slices_num) || !slice_path) //is the food sliceable?
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if ( \
|
||||
!isturf(src.loc) || \
|
||||
@@ -191,7 +191,7 @@
|
||||
!(locate(/obj/item/weapon/storage/bag/tray) in src.loc) \
|
||||
)
|
||||
to_chat(user, "<span class='warning'>You cannot slice [src] here! You need a table or at least a tray.</span>")
|
||||
return 1
|
||||
return FALSE
|
||||
|
||||
var/slices_lost = 0
|
||||
if (accuracy >= IS_SHARP_ACCURATE)
|
||||
@@ -211,6 +211,7 @@
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/slice = new slice_path (loc)
|
||||
initialize_slice(slice, reagents_per_slice)
|
||||
qdel(src)
|
||||
return TRUE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/slice, reagents_per_slice)
|
||||
slice.create_reagents(slice.volume)
|
||||
|
||||
@@ -475,4 +475,13 @@
|
||||
icon_state = "butter"
|
||||
list_reagents = list("nutriment" = 5)
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("butter" = 1)
|
||||
tastes = list("butter" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/onionrings
|
||||
name = "onion rings"
|
||||
desc = "Onion slices coated in batter."
|
||||
icon_state = "onionrings"
|
||||
list_reagents = list("nutriment" = 3)
|
||||
filling_color = "#C0C9A0"
|
||||
gender = PLURAL
|
||||
tastes = list("batter" = 3, "onion" = 1)
|
||||
@@ -15,8 +15,7 @@
|
||||
var/max_n_of_items = 10 // whatever fat fuck made this a global var needs to look at themselves in the mirror sometime
|
||||
var/efficiency = 0
|
||||
|
||||
|
||||
// see code/modules/food/recipes_microwave.dm for recipes
|
||||
//Microwaving doesn't use recipes, instead it calls the microwave_act of the objects. For food, this creates something based on the food's cooked_type
|
||||
|
||||
/*******************
|
||||
* Initialising
|
||||
|
||||
@@ -126,8 +126,6 @@
|
||||
input = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip
|
||||
output = /obj/item/weapon/reagent_containers/food/snacks/roastparsnip
|
||||
|
||||
|
||||
|
||||
/* mobs */
|
||||
/datum/food_processor_process/mob/process_food(loc, what, processor)
|
||||
..()
|
||||
|
||||
72
code/modules/hydroponics/grown/onion.dm
Normal file
72
code/modules/hydroponics/grown/onion.dm
Normal file
@@ -0,0 +1,72 @@
|
||||
/obj/item/seeds/onion
|
||||
name = "pack of onion seeds"
|
||||
desc = "These seeds grow into onions."
|
||||
icon_state = "seed-onion"
|
||||
species = "onion"
|
||||
plantname = "Onion Sprouts"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/onion
|
||||
lifespan = 20
|
||||
maturation = 3
|
||||
production = 4
|
||||
yield = 6
|
||||
endurance = 25
|
||||
growthstages = 3
|
||||
weed_chance = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
|
||||
mutatelist = list(/obj/item/seeds/onion/red)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/onion
|
||||
seed = /obj/item/seeds/onion
|
||||
name = "onion"
|
||||
desc = "Nothing to cry over."
|
||||
icon_state = "onion"
|
||||
filling_color = "#C0C9A0"
|
||||
bitesize_mod = 2
|
||||
tastes = list("onions" = 1)
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/onion_slice
|
||||
slices_num = 2
|
||||
|
||||
/obj/item/seeds/onion/red
|
||||
name = "pack of red onion seeds"
|
||||
desc = "For growing exceptionally potent onions."
|
||||
icon_state = "seed-onionred"
|
||||
species = "onion_red"
|
||||
plantname = "Red Onion Sprouts"
|
||||
weed_chance = 1
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/onion/red
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "tearjuice" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/onion/red
|
||||
seed = /obj/item/seeds/onion/red
|
||||
name = "red onion"
|
||||
desc = "Purple despite the name."
|
||||
icon_state = "onion_red"
|
||||
filling_color = "#C29ACF"
|
||||
slice_path = /obj/item/weapon/reagent_containers/food/snacks/onion_slice/red
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/onion/slice(accuracy, obj/item/weapon/W, mob/user)
|
||||
var/datum/effect_system/smoke_spread/chem/S = new //Since the onion is destroyed when it's sliced,
|
||||
var/splat_location = get_turf(src) //we need to set up the smoke beforehand
|
||||
S.attach(splat_location)
|
||||
S.set_up(reagents, 0, splat_location, 0)
|
||||
if(..())
|
||||
S.start()
|
||||
return TRUE
|
||||
qdel(S)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/onion_slice
|
||||
name = "onion slices"
|
||||
desc = "Rings, not for wearing."
|
||||
icon_state = "onionslice"
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 2)
|
||||
filling_color = "#C0C9A0"
|
||||
gender = PLURAL
|
||||
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/onionrings
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/onion_slice/red
|
||||
name = "red onion slices"
|
||||
desc = "They shine like exceptionally low quality amethyst."
|
||||
icon_state = "onionslice_red"
|
||||
filling_color = "#C29ACF"
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 2, "tearjuice" = 2.5)
|
||||
@@ -270,6 +270,8 @@
|
||||
source_turf.luminosity = Ceiling(light_range)
|
||||
for(T in view(Ceiling(light_range), source_turf))
|
||||
for (thing in T.get_corners(source_turf))
|
||||
if(!thing)
|
||||
continue
|
||||
C = thing
|
||||
corners[C] = 0
|
||||
turfs += T
|
||||
@@ -291,6 +293,8 @@
|
||||
LAZYINITLIST(effect_str)
|
||||
if (needs_update == LIGHTING_VIS_UPDATE)
|
||||
for (thing in corners - effect_str) // New corners
|
||||
if(!thing)
|
||||
continue
|
||||
C = thing
|
||||
LAZYADD(C.affecting, src)
|
||||
if (!C.active)
|
||||
@@ -300,6 +304,8 @@
|
||||
else
|
||||
L = corners - effect_str
|
||||
for (thing in L) // New corners
|
||||
if(!thing)
|
||||
continue
|
||||
C = thing
|
||||
LAZYADD(C.affecting, src)
|
||||
if (!C.active)
|
||||
@@ -308,6 +314,8 @@
|
||||
APPLY_CORNER(C)
|
||||
|
||||
for (thing in corners - L) // Existing corners
|
||||
if(!thing)
|
||||
continue
|
||||
C = thing
|
||||
if (!C.active)
|
||||
effect_str[C] = 0
|
||||
@@ -316,6 +324,8 @@
|
||||
|
||||
L = effect_str - corners
|
||||
for (thing in L) // Old, now gone, corners.
|
||||
if(!thing)
|
||||
continue
|
||||
C = thing
|
||||
REMOVE_CORNER(C)
|
||||
LAZYREMOVE(C.affecting, src)
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
var/datum/lighting_corner/C
|
||||
var/thing
|
||||
for (thing in corners)
|
||||
if(!thing)
|
||||
continue
|
||||
C = thing
|
||||
C.update_active()
|
||||
|
||||
@@ -45,6 +47,8 @@
|
||||
var/datum/lighting_corner/C
|
||||
var/datum/light_source/S
|
||||
for (thing in corners)
|
||||
if(!thing)
|
||||
continue
|
||||
C = thing
|
||||
if (!C.active) // We would activate the corner, calculate the lighting for it.
|
||||
for (thing in C.affecting)
|
||||
@@ -61,6 +65,8 @@
|
||||
var/thing
|
||||
var/datum/lighting_corner/L
|
||||
for (thing in corners)
|
||||
if(!thing)
|
||||
continue
|
||||
L = thing
|
||||
totallums += L.lum_r + L.lum_b + L.lum_g
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
|
||||
#define GIBTONITE_QUALITY_HIGH 3
|
||||
#define GIBTONITE_QUALITY_MEDIUM 2
|
||||
#define GIBTONITE_QUALITY_LOW 1
|
||||
|
||||
/**********************Mineral ores**************************/
|
||||
|
||||
/obj/item/weapon/ore
|
||||
@@ -184,10 +189,11 @@
|
||||
item_state = "Gibtonite ore"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
throw_range = 0
|
||||
var/primed = 0
|
||||
var/primed = FALSE
|
||||
var/det_time = 100
|
||||
var/quality = 1 //How pure this gibtonite is, determines the explosion produced by it and is derived from the det_time of the rock wall it was taken from, higher value = better
|
||||
var/quality = GIBTONITE_QUALITY_LOW //How pure this gibtonite is, determines the explosion produced by it and is derived from the det_time of the rock wall it was taken from, higher value = better
|
||||
var/attacher = "UNKNOWN"
|
||||
var/det_timer
|
||||
|
||||
/obj/item/weapon/twohanded/required/gibtonite/Destroy()
|
||||
qdel(wires)
|
||||
@@ -213,10 +219,12 @@
|
||||
return
|
||||
if(primed)
|
||||
if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner) || istype(I, /obj/item/device/multitool))
|
||||
primed = 0
|
||||
primed = FALSE
|
||||
if(det_timer)
|
||||
deltimer(det_timer)
|
||||
user.visible_message("The chain reaction was stopped! ...The ore's quality looks diminished.", "<span class='notice'>You stopped the chain reaction. ...The ore's quality looks diminished.</span>")
|
||||
icon_state = "Gibtonite ore"
|
||||
quality = 1
|
||||
quality = GIBTONITE_QUALITY_LOW
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -237,8 +245,8 @@
|
||||
|
||||
/obj/item/weapon/twohanded/required/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0)
|
||||
if(!primed)
|
||||
primed = TRUE
|
||||
playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1)
|
||||
primed = 1
|
||||
icon_state = "Gibtonite active"
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
@@ -260,14 +268,18 @@
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] strikes \the [src], causing a chain reaction!</span>", "<span class='danger'>You strike \the [src], causing a chain reaction.</span>")
|
||||
log_game("[key_name(user)] has primed a [name] for detonation at [A][COORD(bombturf)]")
|
||||
if(primed)
|
||||
if(quality == 3)
|
||||
explosion(src.loc,2,4,9,adminlog = notify_admins)
|
||||
if(quality == 2)
|
||||
explosion(src.loc,1,2,5,adminlog = notify_admins)
|
||||
if(quality == 1)
|
||||
explosion(src.loc,-1,1,3,adminlog = notify_admins)
|
||||
qdel(src)
|
||||
det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE)
|
||||
|
||||
/obj/item/weapon/twohanded/required/gibtonite/proc/detonate(notify_admins)
|
||||
if(primed)
|
||||
switch(quality)
|
||||
if(GIBTONITE_QUALITY_HIGH)
|
||||
explosion(src,2,4,9,adminlog = notify_admins)
|
||||
if(GIBTONITE_QUALITY_MEDIUM)
|
||||
explosion(src,1,2,5,adminlog = notify_admins)
|
||||
if(GIBTONITE_QUALITY_LOW)
|
||||
explosion(src,0,1,3,adminlog = notify_admins)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/ore/Initialize()
|
||||
..()
|
||||
|
||||
@@ -28,6 +28,11 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/ore_box/examine(mob/living/user)
|
||||
if(Adjacent(user) && istype(user))
|
||||
show_contents(user)
|
||||
. = ..()
|
||||
|
||||
/obj/structure/ore_box/attack_hand(mob/user)
|
||||
if(Adjacent(user))
|
||||
show_contents(user)
|
||||
|
||||
@@ -379,10 +379,6 @@
|
||||
return
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/proc/is_mouth_covered(head_only = 0, mask_only = 0)
|
||||
if( (!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) )
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/get_standard_pixel_y_offset(lying = 0)
|
||||
if(lying)
|
||||
return -6
|
||||
@@ -450,7 +446,7 @@
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/proc/vomit(var/lost_nutrition = 10, var/blood = 0, var/stun = 1, var/distance = 0, var/message = 1, var/toxic = 0)
|
||||
/mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, toxic = FALSE)
|
||||
if(dna && dna.species && NOHUNGER in dna.species.species_traits)
|
||||
return 1
|
||||
|
||||
@@ -476,6 +472,9 @@
|
||||
|
||||
playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1)
|
||||
var/turf/T = get_turf(src)
|
||||
if(!blood)
|
||||
nutrition -= lost_nutrition
|
||||
adjustToxLoss(-3)
|
||||
for(var/i=0 to distance)
|
||||
if(blood)
|
||||
if(T)
|
||||
@@ -485,8 +484,6 @@
|
||||
else
|
||||
if(T)
|
||||
T.add_vomit_floor(src, toxic)//toxic barf looks different
|
||||
nutrition -= lost_nutrition
|
||||
adjustToxLoss(-3)
|
||||
T = get_step(T, dir)
|
||||
if (is_blocked_turf(T))
|
||||
break
|
||||
|
||||
@@ -35,6 +35,18 @@
|
||||
number += E.bang_protect
|
||||
return number
|
||||
|
||||
/mob/living/carbon/is_mouth_covered(head_only = 0, mask_only = 0)
|
||||
if( (!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) )
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/is_eyes_covered(check_glasses = 1, check_head = 1, check_mask = 1)
|
||||
if(check_glasses && glasses && (glasses.flags_cover & GLASSESCOVERSEYES))
|
||||
return TRUE
|
||||
if(check_head && head && (head.flags_cover & HEADCOVERSEYES))
|
||||
return TRUE
|
||||
if(check_mask && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH))
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/check_projectile_dismemberment(obj/item/projectile/P, def_zone)
|
||||
var/obj/item/bodypart/affecting = get_bodypart(def_zone)
|
||||
if(affecting && affecting.dismemberable && affecting.get_damage() >= (affecting.max_damage - P.dismemberment))
|
||||
@@ -305,8 +317,9 @@
|
||||
Weaken(stun_pwr*effect_amount)
|
||||
|
||||
if(istype(ears) && (deafen_pwr || damage_pwr))
|
||||
ears.ear_damage += damage_pwr * effect_amount
|
||||
ears.deaf = max(ears.deaf, deafen_pwr * effect_amount)
|
||||
var/ear_damage = damage_pwr * effect_amount
|
||||
var/deaf = max(ears.deaf, deafen_pwr * effect_amount)
|
||||
adjustEarDamage(ear_damage,deaf)
|
||||
|
||||
if(ears.ear_damage >= 15)
|
||||
to_chat(src, "<span class='warning'>Your ears start to ring badly!</span>")
|
||||
|
||||
@@ -66,12 +66,21 @@
|
||||
var/obj/item/weapon/storage/wallet/wallet = wear_id
|
||||
var/obj/item/device/pda/pda = wear_id
|
||||
var/obj/item/weapon/card/id/id = wear_id
|
||||
var/obj/item/device/modular_computer/tablet/tablet = wear_id
|
||||
if(istype(wallet))
|
||||
id = wallet.front_id
|
||||
if(istype(id))
|
||||
. = id.registered_name
|
||||
else if(istype(pda))
|
||||
. = pda.owner
|
||||
else if(istype(tablet))
|
||||
var/obj/item/weapon/computer_hardware/card_slot/card_slot = tablet.all_components[MC_CARD]
|
||||
if(card_slot && (card_slot.stored_card2 || card_slot.stored_card))
|
||||
if(card_slot.stored_card2) //The second card is the one used for authorization in the ID changing program, so we prioritize it here for consistency
|
||||
. = card_slot.stored_card2.registered_name
|
||||
else
|
||||
if(card_slot.stored_card)
|
||||
. = card_slot.stored_card.registered_name
|
||||
if(!.)
|
||||
. = if_no_id //to prevent null-names making the mob unclickable
|
||||
return
|
||||
|
||||
@@ -282,9 +282,9 @@
|
||||
//Puke if toxloss is too high
|
||||
if(!stat)
|
||||
if(getToxLoss() >= 45 && nutrition > 20)
|
||||
lastpuke ++
|
||||
if(lastpuke >= 25) // about 25 second delay I guess
|
||||
vomit(20, 0, 1, 0, 1, 1)
|
||||
lastpuke += prob(50)
|
||||
if(lastpuke >= 50) // about 25 second delay I guess
|
||||
vomit(20, toxic = TRUE)
|
||||
lastpuke = 0
|
||||
|
||||
|
||||
|
||||
@@ -1509,19 +1509,24 @@
|
||||
// +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt.
|
||||
if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTHOT in species_traits))
|
||||
//Body temperature is too hot.
|
||||
var/burn_damage
|
||||
switch(H.bodytemperature)
|
||||
if(360 to 400)
|
||||
H.throw_alert("temp", /obj/screen/alert/hot, 1)
|
||||
H.apply_damage(HEAT_DAMAGE_LEVEL_1*heatmod, BURN)
|
||||
burn_damage = HEAT_DAMAGE_LEVEL_1
|
||||
if(400 to 460)
|
||||
H.throw_alert("temp", /obj/screen/alert/hot, 2)
|
||||
H.apply_damage(HEAT_DAMAGE_LEVEL_2*heatmod, BURN)
|
||||
burn_damage = HEAT_DAMAGE_LEVEL_2
|
||||
if(460 to INFINITY)
|
||||
H.throw_alert("temp", /obj/screen/alert/hot, 3)
|
||||
if(H.on_fire)
|
||||
H.apply_damage(HEAT_DAMAGE_LEVEL_3*heatmod, BURN)
|
||||
burn_damage = HEAT_DAMAGE_LEVEL_3
|
||||
else
|
||||
H.apply_damage(HEAT_DAMAGE_LEVEL_2*heatmod, BURN)
|
||||
burn_damage = HEAT_DAMAGE_LEVEL_2
|
||||
burn_damage *= heatmod
|
||||
if((prob(burn_damage) * 10) / 4) //40% for level 3 damage on humans
|
||||
H.emote("scream")
|
||||
H.apply_damage(burn_damage, BURN)
|
||||
else if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !(GLOB.mutations_list[COLDRES] in H.dna.mutations))
|
||||
switch(H.bodytemperature)
|
||||
if(200 to 260)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/datum/reagent/consumable/nutri_check = chem
|
||||
if(nutri_check.nutriment_factor > 0)
|
||||
var/turf/pos = get_turf(H)
|
||||
H.vomit(0, 0, 0, 1, 1)
|
||||
H.vomit(0, FALSE, FALSE, 2, TRUE)
|
||||
playsound(pos, 'sound/effects/splat.ogg', 50, 1)
|
||||
H.visible_message("<span class='danger'>[H] vomits on the floor!</span>", \
|
||||
"<span class='userdanger'>You throw up on the floor!</span>")
|
||||
|
||||
@@ -8,20 +8,26 @@
|
||||
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
|
||||
species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT)
|
||||
mutant_organs = list(/obj/item/organ/tongue/zombie)
|
||||
var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg')
|
||||
|
||||
/datum/species/zombie/infectious
|
||||
name = "Infectious Zombie"
|
||||
id = "memezombies"
|
||||
limbs_id = "zombie"
|
||||
mutanthands = /obj/item/zombie_hand
|
||||
no_equip = list(slot_wear_mask, slot_head)
|
||||
armor = 20 // 120 damage to KO a zombie, which kills it
|
||||
speedmod = 2
|
||||
mutanteyes = /obj/item/organ/eyes/night_vision/zombie
|
||||
|
||||
/datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H,amount)
|
||||
. = min(2, amount)
|
||||
|
||||
/datum/species/zombie/infectious/spec_life(mob/living/carbon/C)
|
||||
. = ..()
|
||||
C.a_intent = INTENT_HARM // THE SUFFERING MUST FLOW
|
||||
C.heal_overall_damage(4,4)
|
||||
if(prob(4))
|
||||
playsound(C, pick(spooks), 50, TRUE, 10)
|
||||
if(C.InCritical())
|
||||
C.death()
|
||||
// Zombies only move around when not in crit, they instantly
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
/mob/living/proc/getarmor(def_zone, type)
|
||||
return 0
|
||||
|
||||
//this returns the mob's protection against eye damage (number between -1 and 2)
|
||||
//this returns the mob's protection against eye damage (number between -1 and 2) from bright lights
|
||||
/mob/living/proc/get_eye_protection()
|
||||
return 0
|
||||
|
||||
@@ -33,6 +33,12 @@
|
||||
/mob/living/proc/get_ear_protection()
|
||||
return 0
|
||||
|
||||
/mob/living/proc/is_mouth_covered(head_only = 0, mask_only = 0)
|
||||
return FALSE
|
||||
|
||||
/mob/living/proc/is_eyes_covered(check_glasses = 1, check_head = 1, check_mask = 1)
|
||||
return FALSE
|
||||
|
||||
/mob/living/proc/on_hit(obj/item/projectile/P)
|
||||
return
|
||||
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
var/icon/small_img = icon(temp_img) //Icon() is needed or else temp_img will be rescaled too >.>
|
||||
var/icon/ic = icon('icons/obj/items.dmi',"photo")
|
||||
small_img.Scale(8, 8)
|
||||
ic.Blend(small_img,ICON_OVERLAY, 10, 13)
|
||||
ic.Blend(small_img,ICON_OVERLAY, 13, 13)
|
||||
p.icon = ic
|
||||
toner -= 5
|
||||
busy = 1
|
||||
|
||||
@@ -533,7 +533,6 @@
|
||||
cut_overlays()
|
||||
if(displayed)
|
||||
add_overlay(getFlatIcon(displayed))
|
||||
add_overlay("frame-overlay")
|
||||
|
||||
/obj/item/wallframe/picture/after_attach(obj/O)
|
||||
..()
|
||||
@@ -591,13 +590,12 @@
|
||||
|
||||
/obj/structure/sign/picture_frame/attack_hand(mob/user)
|
||||
if(framed)
|
||||
framed.show()
|
||||
framed.show(user)
|
||||
|
||||
/obj/structure/sign/picture_frame/update_icon()
|
||||
cut_overlays()
|
||||
if(framed)
|
||||
add_overlay(getFlatIcon(framed))
|
||||
add_overlay("frame-overlay")
|
||||
|
||||
/obj/structure/sign/picture_frame/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
|
||||
@@ -33,7 +33,7 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
icon_state = "0-1"
|
||||
var/d1 = 0 // cable direction 1 (see above)
|
||||
var/d2 = 1 // cable direction 2 (see above)
|
||||
layer = WIRE_LAYER //Above pipes, which are at GAS_PIPE_LAYER
|
||||
layer = WIRE_LAYER //Above hidden pipes, GAS_PIPE_HIDDEN_LAYER
|
||||
var/cable_color = "red"
|
||||
var/obj/item/stack/cable_coil/stored
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/machinery/power/emitter
|
||||
name = "Emitter"
|
||||
desc = "A heavy duty industrial laser.\n<span class='notice'>Alt-click to rotate it clockwise.</span>"
|
||||
name = "emitter"
|
||||
desc = "A heavy-duty industrial laser, often used in containment fields and power generation.\n<span class='notice'>Alt-click to rotate it clockwise.</span>"
|
||||
icon = 'icons/obj/singularity.dmi'
|
||||
icon_state = "emitter"
|
||||
var/icon_state_on = "emitter_+a"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/place(turf/T)
|
||||
if(isclosedturf(T) && !ignore_wall)
|
||||
return FALSE
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten
|
||||
ignore_wall = TRUE
|
||||
|
||||
@@ -532,6 +532,44 @@
|
||||
color = "#DFDFDF"
|
||||
taste_description = "mayonnaise"
|
||||
|
||||
/datum/reagent/consumable/tearjuice
|
||||
name = "Tear Juice"
|
||||
id = "tearjuice"
|
||||
description = "A blinding substance extracted from certain onions."
|
||||
color = "#c0c9a0"
|
||||
taste_description = "bitterness"
|
||||
|
||||
/datum/reagent/consumable/tearjuice/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(!istype(M))
|
||||
return
|
||||
var/unprotected = FALSE
|
||||
switch(method)
|
||||
if(INGEST)
|
||||
unprotected = TRUE
|
||||
if(INJECT)
|
||||
unprotected = FALSE
|
||||
else //Touch or vapor
|
||||
if(!M.is_mouth_covered() && !M.is_eyes_covered())
|
||||
unprotected = TRUE
|
||||
if(unprotected)
|
||||
if(!M.getorganslot("eye_sight")) //can't blind somebody with no eyes
|
||||
to_chat(M, "<span class = 'notice'>Your eye sockets feel wet.</span>")
|
||||
else
|
||||
if(!M.eye_blurry)
|
||||
to_chat(M, "<span class = 'warning'>Tears well up in your eyes!</span>")
|
||||
M.blind_eyes(2)
|
||||
M.blur_eyes(5)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/tearjuice/on_mob_life(mob/living/M)
|
||||
..()
|
||||
if(M.eye_blurry) //Don't worsen vision if it was otherwise fine
|
||||
M.blur_eyes(4)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class = 'warning'>Your eyes sting!</span>")
|
||||
M.blind_eyes(2)
|
||||
|
||||
|
||||
////Lavaland Flora Reagents////
|
||||
|
||||
|
||||
|
||||
@@ -662,7 +662,7 @@
|
||||
.=..()
|
||||
if(current_cycle >=11 && prob(min(50,current_cycle)) && ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.vomit(lost_nutrition = 10, blood = prob(10), stun = prob(50), distance = rand(0,4), message = TRUE, toxic = prob(30))
|
||||
H.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30))
|
||||
for(var/datum/reagent/toxin/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
H.reagents.remove_reagent(R.id,1)
|
||||
@@ -672,7 +672,7 @@
|
||||
if(current_cycle >=33 && prob(15) && ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.spew_organ()
|
||||
H.vomit(lost_nutrition = 0, blood = 1, stun = 1, distance = 4)
|
||||
H.vomit(0, TRUE, TRUE, 4)
|
||||
to_chat(H, "<span class='userdanger'>You feel something lumpy come up as you vomit.</span>")
|
||||
|
||||
/datum/reagent/toxin/curare
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
/obj/structure/reagent_dispensers/watertank/high
|
||||
name = "high-capacity water tank"
|
||||
desc = "A highly-pressurized water tank made to hold gargantuan amounts of water.."
|
||||
desc = "A highly pressurized water tank made to hold gargantuan amounts of water."
|
||||
icon_state = "water_high" //I was gonna clean my room...
|
||||
tank_volume = 100000
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
reagents.trans_to(W, W.max_fuel)
|
||||
user.visible_message("<span class='notice'>[user] refills [user.p_their()] [W.name].</span>", "<span class='notice'>You refill [W].</span>")
|
||||
playsound(src, 'sound/effects/refill.ogg', 50, 1)
|
||||
update_icon()
|
||||
W.update_icon()
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] catastrophically fails at refilling [user.p_their()] [W.name]!</span>", "<span class='userdanger'>That was stupid of you.</span>")
|
||||
var/message_admins = "[key_name_admin(user)] triggered a fueltank explosion via welding tool."
|
||||
|
||||
@@ -763,7 +763,6 @@
|
||||
name = "Flash"
|
||||
desc = "When a problem arises, SCIENCE is the solution."
|
||||
id = "sflash"
|
||||
req_tech = list("magnets" = 3, "combat" = 2)
|
||||
build_type = MECHFAB
|
||||
materials = list(MAT_METAL = 750, MAT_GLASS = 750)
|
||||
construction_time = 100
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "Plasma + Iron alloy"
|
||||
id = "plasteel"
|
||||
build_type = SMELTER
|
||||
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT / 2, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT / 2)
|
||||
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/plasteel
|
||||
category = list("initial")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
name = "Plasma + Titanium alloy"
|
||||
id = "plastitanium"
|
||||
build_type = SMELTER
|
||||
materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT / 2, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT / 2)
|
||||
materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/mineral/plastitanium
|
||||
category = list("initial")
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ GLOBAL_PROTECT(reboot_mode)
|
||||
return params[SERVICE_WORLD_PARAM]
|
||||
|
||||
/world/proc/ExportService(command)
|
||||
return shell("python code/modules/server_tools/nudge.py \"[command]\"") == 0
|
||||
return RunningService() && shell("python code/modules/server_tools/nudge.py \"[command]\"") == 0
|
||||
|
||||
/world/proc/IRCBroadcast(msg)
|
||||
ExportService("[SERVICE_REQUEST_IRC_BROADCAST] [msg]")
|
||||
|
||||
@@ -277,7 +277,7 @@
|
||||
else if((findtext(message, vomit_words)))
|
||||
cooldown = COOLDOWN_STUN
|
||||
for(var/mob/living/carbon/C in listeners)
|
||||
C.vomit(10 * power_multiplier)
|
||||
C.vomit(10 * power_multiplier, distance = power_multiplier)
|
||||
|
||||
//SILENCE
|
||||
else if((findtext(message, silence_words)))
|
||||
|
||||
Reference in New Issue
Block a user