mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-29 03:21:42 +00:00
Merge branch 'master' into projectile_hit_sounds
This commit is contained in:
@@ -41,10 +41,12 @@ SUBSYSTEM_DEF(job)
|
||||
for(var/D in department_datums)
|
||||
var/datum/department/dept = department_datums[D]
|
||||
sortTim(dept.jobs, /proc/cmp_job_datums, TRUE)
|
||||
sortTim(dept.primary_jobs, /proc/cmp_job_datums, TRUE)
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/controller/subsystem/job/proc/add_to_departments(datum/job/J)
|
||||
// Adds to the regular job lists in the departments, which allow multiple departments for a job.
|
||||
for(var/D in J.departments)
|
||||
var/datum/department/dept = LAZYACCESS(department_datums, D)
|
||||
if(!istype(dept))
|
||||
@@ -52,6 +54,16 @@ SUBSYSTEM_DEF(job)
|
||||
continue
|
||||
dept.jobs[J.title] = J
|
||||
|
||||
// Now for the 'primary' department for a job, which is defined as being the first department in the list for a job.
|
||||
// This results in no duplicates, which can be useful in some situations.
|
||||
if(LAZYLEN(J.departments))
|
||||
var/primary_department = J.departments[1]
|
||||
var/datum/department/dept = LAZYACCESS(department_datums, primary_department)
|
||||
if(!istype(dept))
|
||||
job_debug_message("Job '[J.title]' has their primary department be '[primary_department]', but it does not exist.")
|
||||
else
|
||||
dept.primary_jobs[J.title] = J
|
||||
|
||||
/datum/controller/subsystem/job/proc/setup_departments()
|
||||
for(var/t in subtypesof(/datum/department))
|
||||
var/datum/department/D = new t()
|
||||
@@ -95,7 +107,29 @@ SUBSYSTEM_DEF(job)
|
||||
job_debug_message("Was asked to get job titles for a non-existant department '[target_department_name]'.")
|
||||
return list()
|
||||
|
||||
// Returns a reference to the primary department datum that a job is in.
|
||||
// Can receive job datum refs, typepaths, or job title strings.
|
||||
/datum/controller/subsystem/job/proc/get_primary_department_of_job(datum/job/J)
|
||||
if(!istype(J, /datum/job))
|
||||
if(ispath(J))
|
||||
J = get_job_type(J)
|
||||
else if(istext(J))
|
||||
J = get_job(J)
|
||||
|
||||
if(!istype(J))
|
||||
job_debug_message("Was asked to get department for job '[J]', but input could not be resolved into a job datum.")
|
||||
return
|
||||
|
||||
if(!LAZYLEN(J.departments))
|
||||
return
|
||||
|
||||
var/primary_department = J.departments[1]
|
||||
var/datum/department/dept = LAZYACCESS(department_datums, primary_department)
|
||||
if(!istype(dept))
|
||||
job_debug_message("Job '[J.title]' has their primary department be '[primary_department]', but it does not exist.")
|
||||
return
|
||||
|
||||
return department_datums[primary_department]
|
||||
|
||||
// Someday it might be good to port code/game/jobs/job_controller.dm to here and clean it up.
|
||||
|
||||
|
||||
@@ -9,14 +9,6 @@
|
||||
holder_type = /obj/machinery/door/airlock
|
||||
wire_count = 12
|
||||
window_y = 570
|
||||
var/datum/wire_hint/bolt_lock_hint
|
||||
var/datum/wire_hint/bolt_light_hint
|
||||
var/datum/wire_hint/power_hint
|
||||
var/datum/wire_hint/backup_power_hint
|
||||
var/datum/wire_hint/ai_control_hint
|
||||
var/datum/wire_hint/safeties_hint
|
||||
var/datum/wire_hint/speed_hint
|
||||
var/datum/wire_hint/id_scan_hint
|
||||
|
||||
var/const/AIRLOCK_WIRE_IDSCAN = 1
|
||||
var/const/AIRLOCK_WIRE_MAIN_POWER1 = 2
|
||||
@@ -31,27 +23,6 @@ var/const/AIRLOCK_WIRE_SAFETY = 512
|
||||
var/const/AIRLOCK_WIRE_SPEED = 1024
|
||||
var/const/AIRLOCK_WIRE_LIGHT = 2048
|
||||
|
||||
/datum/wires/airlock/make_wire_hints()
|
||||
bolt_lock_hint = new("The door bolts have fallen!", "The door bolts look up.")
|
||||
bolt_light_hint = new("The door bolt lights are on.", "The door bolt lights are off!")
|
||||
power_hint = new("The test light is on.", "The test light is off!")
|
||||
backup_power_hint = new("The backup power light is off!", "The backup power light is on.")
|
||||
ai_control_hint = new("The 'AI control allowed' light is on.", "The 'AI control allowed' light is off.")
|
||||
safeties_hint = new("The 'Check Wiring' light is on.", "The 'Check Wiring' light is off.")
|
||||
speed_hint = new("The 'Check Timing Mechanism' light is on.", "The 'Check Timing Mechanism' light is off.")
|
||||
id_scan_hint = new("The IDScan light is on.", "The IDScan light is off.")
|
||||
|
||||
/datum/wires/airlock/Destroy()
|
||||
bolt_lock_hint = null
|
||||
bolt_light_hint = null
|
||||
power_hint = null
|
||||
backup_power_hint = null
|
||||
ai_control_hint = null
|
||||
safeties_hint = null
|
||||
speed_hint = null
|
||||
id_scan_hint = null
|
||||
return ..()
|
||||
|
||||
/datum/wires/airlock/CanUse(var/mob/living/L)
|
||||
var/obj/machinery/door/airlock/A = holder
|
||||
if(!istype(L, /mob/living/silicon))
|
||||
@@ -67,14 +38,14 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048
|
||||
var/haspower = A.arePowerSystemsOn() //If there's no power, then no lights will be on.
|
||||
|
||||
. += ..()
|
||||
. += bolt_lock_hint.show(A.locked)
|
||||
. += bolt_light_hint.show(A.lights && haspower)
|
||||
. += power_hint.show(haspower)
|
||||
. += backup_power_hint.show(A.backup_power_lost_until)
|
||||
. += ai_control_hint.show(A.aiControlDisabled == 0 && !A.emagged && haspower)
|
||||
. += safeties_hint.show(A.safe == 0 && haspower)
|
||||
. += speed_hint.show(A.normalspeed == 0 && haspower)
|
||||
. += id_scan_hint.show(A.aiDisabledIdScanner == 0 && haspower)
|
||||
. += show_hint(0x01, A.locked, "The door bolts have fallen!", "The door bolts look up.")
|
||||
. += show_hint(0x02, A.lights && haspower, "The door bolt lights are on.", "The door bolt lights are off!")
|
||||
. += show_hint(0x04, haspower, "The test light is on.", "The test light is off!")
|
||||
. += show_hint(0x08, A.backup_power_lost_until, "The backup power light is off!", "The backup power light is on.")
|
||||
. += show_hint(0x10, A.aiControlDisabled == 0 && !A.emagged && haspower, "The 'AI control allowed' light is on.", "The 'AI control allowed' light is off.")
|
||||
. += show_hint(0x20, A.safe == 0 && haspower, "The 'Check Wiring' light is on.", "The 'Check Wiring' light is off.")
|
||||
. += show_hint(0x40, A.normalspeed == 0 && haspower, "The 'Check Timing Mechanism' light is on.", "The 'Check Timing Mechanism' light is off.")
|
||||
. += show_hint(0x80, A.aiDisabledIdScanner == 0 && haspower, "The IDScan light is on.", "The IDScan light is off.")
|
||||
|
||||
/datum/wires/airlock/UpdateCut(var/index, var/mended)
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
/datum/wires/alarm
|
||||
holder_type = /obj/machinery/alarm
|
||||
wire_count = 5
|
||||
var/datum/wire_hint/lock_hint
|
||||
var/datum/wire_hint/power_hint
|
||||
var/datum/wire_hint/ai_control_hint
|
||||
|
||||
var/const/AALARM_WIRE_IDSCAN = 1
|
||||
var/const/AALARM_WIRE_POWER = 2
|
||||
@@ -11,18 +8,6 @@ var/const/AALARM_WIRE_SYPHON = 4
|
||||
var/const/AALARM_WIRE_AI_CONTROL = 8
|
||||
var/const/AALARM_WIRE_AALARM = 16
|
||||
|
||||
|
||||
/datum/wires/alarm/make_wire_hints()
|
||||
lock_hint = new("The Air Alarm is locked.", "The Air Alarm is unlocked.")
|
||||
power_hint = new("The Air Alarm is offline.", "The Air Alarm is working properly!")
|
||||
ai_control_hint = new("The 'AI control allowed' light is off.", "The 'AI control allowed' light is on.")
|
||||
|
||||
/datum/wires/alarm/Destroy()
|
||||
lock_hint = null
|
||||
power_hint = null
|
||||
ai_control_hint = null
|
||||
return ..()
|
||||
|
||||
/datum/wires/alarm/CanUse(var/mob/living/L)
|
||||
var/obj/machinery/alarm/A = holder
|
||||
if(A.panel_open)
|
||||
@@ -32,9 +17,9 @@ var/const/AALARM_WIRE_AALARM = 16
|
||||
/datum/wires/alarm/GetInteractWindow()
|
||||
var/obj/machinery/alarm/A = holder
|
||||
. += ..()
|
||||
. += lock_hint.show(A.locked)
|
||||
. += power_hint.show(A.shorted || (A.stat & (NOPOWER|BROKEN)))
|
||||
. += ai_control_hint.show(A.aidisabled)
|
||||
. += show_hint(0x1, A.locked, "The Air Alarm is locked.", "The Air Alarm is unlocked.")
|
||||
. += show_hint(0x2, A.shorted || (A.stat & (NOPOWER|BROKEN)), "The Air Alarm is offline.", "The Air Alarm is working properly!")
|
||||
. += show_hint(0x4, A.aidisabled, "The 'AI control allowed' light is off.", "The 'AI control allowed' light is on.")
|
||||
|
||||
/datum/wires/alarm/UpdateCut(var/index, var/mended)
|
||||
var/obj/machinery/alarm/A = holder
|
||||
|
||||
@@ -1,32 +1,18 @@
|
||||
/datum/wires/apc
|
||||
holder_type = /obj/machinery/power/apc
|
||||
wire_count = 4
|
||||
var/datum/wire_hint/lock_hint
|
||||
var/datum/wire_hint/power_hint
|
||||
var/datum/wire_hint/ai_control_hint
|
||||
|
||||
#define APC_WIRE_IDSCAN 1
|
||||
#define APC_WIRE_MAIN_POWER1 2
|
||||
#define APC_WIRE_MAIN_POWER2 4
|
||||
#define APC_WIRE_AI_CONTROL 8
|
||||
|
||||
/datum/wires/apc/make_wire_hints()
|
||||
lock_hint = new("The APC is locked.", "The APC is unlocked.")
|
||||
power_hint = new("The APCs power has been shorted.", "The APC is working properly!")
|
||||
ai_control_hint = new("The 'AI control allowed' light is off.", "The 'AI control allowed' light is on.")
|
||||
|
||||
/datum/wires/apc/Destroy()
|
||||
lock_hint = null
|
||||
power_hint = null
|
||||
ai_control_hint = null
|
||||
return ..()
|
||||
|
||||
/datum/wires/apc/GetInteractWindow()
|
||||
var/obj/machinery/power/apc/A = holder
|
||||
. += ..()
|
||||
. += lock_hint.show(A.locked)
|
||||
. += power_hint.show(A.shorted)
|
||||
. += ai_control_hint.show(A.aidisabled)
|
||||
. += show_hint(0x1, A.locked, "The APC is locked.", "The APC is unlocked.")
|
||||
. += show_hint(0x2, A.shorted, "The APCs power has been shorted.", "The APC is working properly!")
|
||||
. += show_hint(0x4, A.aidisabled, "The 'AI control allowed' light is off.", "The 'AI control allowed' light is on.")
|
||||
|
||||
|
||||
/datum/wires/apc/CanUse(var/mob/living/L)
|
||||
|
||||
@@ -2,31 +2,17 @@
|
||||
|
||||
holder_type = /obj/machinery/autolathe
|
||||
wire_count = 6
|
||||
var/datum/wire_hint/disable_hint
|
||||
var/datum/wire_hint/shock_hint
|
||||
var/datum/wire_hint/hack_hint
|
||||
|
||||
var/const/AUTOLATHE_HACK_WIRE = 1
|
||||
var/const/AUTOLATHE_SHOCK_WIRE = 2
|
||||
var/const/AUTOLATHE_DISABLE_WIRE = 4
|
||||
|
||||
/datum/wires/autolathe/make_wire_hints()
|
||||
disable_hint = new("The red light is off.", "The red light is on.")
|
||||
shock_hint = new("The green light is off.", "The green light is on.")
|
||||
hack_hint = new("The blue light is off.", "The blue light is on.")
|
||||
|
||||
/datum/wires/autolathe/Destroy()
|
||||
disable_hint = null
|
||||
shock_hint = null
|
||||
hack_hint = null
|
||||
return ..()
|
||||
|
||||
/datum/wires/autolathe/GetInteractWindow()
|
||||
var/obj/machinery/autolathe/A = holder
|
||||
. += ..()
|
||||
. += disable_hint.show(A.disabled)
|
||||
. += shock_hint.show(A.shocked)
|
||||
. += hack_hint.show(A.hacked)
|
||||
. += show_hint(0x1, A.disabled, "The red light is off.", "The red light is on.")
|
||||
. += show_hint(0x2, A.shocked, "The green light is off.", "The green light is on.")
|
||||
. += show_hint(0x4, A.hacked, "The blue light is off.", "The blue light is on.")
|
||||
|
||||
/datum/wires/autolathe/CanUse()
|
||||
var/obj/machinery/autolathe/A = holder
|
||||
|
||||
@@ -4,31 +4,14 @@
|
||||
random = 1
|
||||
holder_type = /obj/machinery/camera
|
||||
wire_count = 6
|
||||
var/datum/wire_hint/view_hint
|
||||
var/datum/wire_hint/power_hint
|
||||
var/datum/wire_hint/light_hint
|
||||
var/datum/wire_hint/alarm_hint
|
||||
|
||||
/datum/wires/camera/make_wire_hints()
|
||||
view_hint = new("The focus light is on.", "The focus light is off.")
|
||||
power_hint = new("The power link light is on.", "The power link light is off.")
|
||||
light_hint = new("The camera light is off.", "The camera light is on.")
|
||||
alarm_hint = new("The alarm light is on.", "The alarm light is off.")
|
||||
|
||||
/datum/wires/camera/Destroy()
|
||||
view_hint = null
|
||||
power_hint = null
|
||||
light_hint = null
|
||||
alarm_hint = null
|
||||
return ..()
|
||||
|
||||
/datum/wires/camera/GetInteractWindow()
|
||||
. = ..()
|
||||
var/obj/machinery/camera/C = holder
|
||||
. += view_hint.show(C.view_range == initial(C.view_range))
|
||||
. += power_hint.show(C.can_use())
|
||||
. += light_hint.show(C.light_disabled)
|
||||
. += alarm_hint.show(C.alarm_on)
|
||||
. += show_hint(0x1, C.view_range == initial(C.view_range), "The focus light is on.", "The focus light is off.")
|
||||
. += show_hint(0x2, C.can_use(), "The power link light is on.", "The power link light is off.")
|
||||
. += show_hint(0x4, C.light_disabled, "The camera light is off.", "The camera light is on.")
|
||||
. += show_hint(0x8, C.alarm_on, "The alarm light is on.", "The alarm light is off.")
|
||||
return .
|
||||
|
||||
/datum/wires/camera/CanUse(var/mob/living/L)
|
||||
|
||||
@@ -1,20 +1,6 @@
|
||||
/datum/wires/grid_checker
|
||||
holder_type = /obj/machinery/power/grid_checker
|
||||
wire_count = 8
|
||||
var/datum/wire_hint/power_failure_hint
|
||||
var/datum/wire_hint/lock_out_hint
|
||||
var/datum/wire_hint/ready_hint
|
||||
|
||||
/datum/wires/grid_checker/make_wire_hints()
|
||||
power_failure_hint = new("The green light is off.", "The green light is on.")
|
||||
lock_out_hint = new("The red light is on.", "The red light is off.")
|
||||
ready_hint = new("The blue light is on.", "The blue light is off.")
|
||||
|
||||
/datum/wires/grid_checker/Destroy()
|
||||
power_failure_hint = null
|
||||
lock_out_hint = null
|
||||
ready_hint = null
|
||||
return ..()
|
||||
|
||||
var/const/GRID_CHECKER_WIRE_REBOOT = 1 // This wire causes the grid-check to end, if pulsed.
|
||||
var/const/GRID_CHECKER_WIRE_LOCKOUT = 2 // If cut or pulsed, locks the user out for half a minute.
|
||||
@@ -36,9 +22,9 @@ var/const/GRID_CHECKER_WIRE_NOTHING_2 = 128 // Does nothing, but makes it a bit
|
||||
/datum/wires/grid_checker/GetInteractWindow()
|
||||
var/obj/machinery/power/grid_checker/G = holder
|
||||
. += ..()
|
||||
. += power_failure_hint.show(G.power_failing)
|
||||
. += lock_out_hint.show(G.wire_locked_out)
|
||||
. += ready_hint.show(G.wire_allow_manual_1 && G.wire_allow_manual_2 && G.wire_allow_manual_3)
|
||||
. += show_hint(0x1, G.power_failing, "The green light is off.", "The green light is on.")
|
||||
. += show_hint(0x2, G.wire_locked_out, "The red light is on.", "The red light is off.")
|
||||
. += show_hint(0x4, G.wire_allow_manual_1 && G.wire_allow_manual_2 && G.wire_allow_manual_3, "The blue light is on.", "The blue light is off.")
|
||||
|
||||
|
||||
/datum/wires/grid_checker/UpdateCut(var/index, var/mended)
|
||||
|
||||
@@ -2,21 +2,6 @@
|
||||
random = 1
|
||||
holder_type = /obj/machinery/media/jukebox
|
||||
wire_count = 11
|
||||
var/datum/wire_hint/power_hint
|
||||
var/datum/wire_hint/parental_hint
|
||||
var/datum/wire_hint/reverse_hint
|
||||
|
||||
/datum/wires/jukebox/make_wire_hints()
|
||||
power_hint = new("The power light is off.", "The power light is on.")
|
||||
parental_hint = new("The parental guidance light is off.", "The parental guidance light is on.")
|
||||
reverse_hint = new("The data light is hauntingly dark.", "The data light is glowing softly.")
|
||||
|
||||
/datum/wires/jukebox/Destroy()
|
||||
power_hint = null
|
||||
parental_hint = null
|
||||
reverse_hint = null
|
||||
return ..()
|
||||
|
||||
|
||||
var/const/WIRE_POWER = 1
|
||||
var/const/WIRE_HACK = 2
|
||||
@@ -40,9 +25,9 @@ var/const/WIRE_NEXT = 1024
|
||||
/datum/wires/jukebox/GetInteractWindow()
|
||||
var/obj/machinery/media/jukebox/A = holder
|
||||
. += ..()
|
||||
. += power_hint.show(A.stat & (BROKEN|NOPOWER))
|
||||
. += parental_hint.show(A.hacked)
|
||||
. += reverse_hint.show(IsIndexCut(WIRE_REVERSE))
|
||||
. += show_hint(0x1, A.stat & (BROKEN|NOPOWER), "The power light is off.", "The power light is on.")
|
||||
. += show_hint(0x2, A.hacked, "The parental guidance light is off.", "The parental guidance light is on.")
|
||||
. += show_hint(0x4, IsIndexCut(WIRE_REVERSE), "The data light is hauntingly dark.", "The data light is glowing softly.")
|
||||
|
||||
// Give a hint as to what each wire does
|
||||
/datum/wires/jukebox/UpdatePulsed(var/index)
|
||||
|
||||
@@ -2,23 +2,6 @@
|
||||
random = 1
|
||||
holder_type = /mob/living/silicon/robot
|
||||
wire_count = 5
|
||||
var/datum/wire_hint/lawsync_hint
|
||||
var/datum/wire_hint/connected_ai_hint
|
||||
var/datum/wire_hint/camera_hint
|
||||
var/datum/wire_hint/lockdown_hint
|
||||
|
||||
/datum/wires/robot/make_wire_hints()
|
||||
lawsync_hint = new("The LawSync light is on.", "The LawSync light is off.")
|
||||
connected_ai_hint = new("The AI link light is on.", "The AI link light is off.")
|
||||
camera_hint = new("The camera light is on.", "The camera light is off.")
|
||||
lockdown_hint = new("The lockdown light is on.", "The lockdown light is off.")
|
||||
|
||||
/datum/wires/robot/Destroy()
|
||||
lawsync_hint = null
|
||||
connected_ai_hint = null
|
||||
camera_hint = null
|
||||
lockdown_hint = null
|
||||
return ..()
|
||||
|
||||
var/const/BORG_WIRE_LAWCHECK = 1
|
||||
var/const/BORG_WIRE_MAIN_POWER = 2 // The power wires do nothing whyyyyyyyyyyyyy
|
||||
@@ -29,10 +12,10 @@ var/const/BORG_WIRE_CAMERA = 16
|
||||
/datum/wires/robot/GetInteractWindow()
|
||||
. = ..()
|
||||
var/mob/living/silicon/robot/R = holder
|
||||
. += lawsync_hint.show(R.lawupdate)
|
||||
. += connected_ai_hint.show(R.connected_ai)
|
||||
. += camera_hint.show((!isnull(R.camera) && R.camera.status == 1))
|
||||
. += lockdown_hint.show(R.lockdown)
|
||||
. += show_hint(0x1, R.lawupdate, "The LawSync light is on.", "The LawSync light is off.")
|
||||
. += show_hint(0x2, R.connected_ai, "The AI link light is on.", "The AI link light is off.")
|
||||
. += show_hint(0x4, (!isnull(R.camera) && R.camera.status == 1), "The camera light is on.", "The camera light is off.")
|
||||
. += show_hint(0x8, R.lockdown, "The lockdown light is on.", "The lockdown light is off.")
|
||||
return .
|
||||
|
||||
/datum/wires/robot/UpdateCut(var/index, var/mended)
|
||||
|
||||
@@ -7,23 +7,6 @@
|
||||
holder_type = /obj/machinery/seed_storage
|
||||
wire_count = 4
|
||||
random = 1
|
||||
var/datum/wire_hint/zap_hint
|
||||
var/datum/wire_hint/smart_hint
|
||||
var/datum/wire_hint/hacked_hint
|
||||
var/datum/wire_hint/lockdown_hint
|
||||
|
||||
/datum/wires/seedstorage/make_wire_hints()
|
||||
zap_hint = new("The orange light is off.", "The orange light is on.")
|
||||
smart_hint = new("The red light is off.", "The red light is blinking.")
|
||||
hacked_hint = new("The green light is on.", "The green light is off.")
|
||||
lockdown_hint = new("The keypad lock is deployed.", "The keypad lock is retracted.")
|
||||
|
||||
/datum/wires/seedstorage/Destroy()
|
||||
zap_hint = null
|
||||
smart_hint = null
|
||||
hacked_hint = null
|
||||
lockdown_hint = null
|
||||
return ..()
|
||||
|
||||
/datum/wires/seedstorage/CanUse(var/mob/living/L)
|
||||
var/obj/machinery/seed_storage/V = holder
|
||||
@@ -34,10 +17,10 @@
|
||||
/datum/wires/seedstorage/GetInteractWindow()
|
||||
var/obj/machinery/seed_storage/V = holder
|
||||
. += ..()
|
||||
. += zap_hint.show(V.seconds_electrified)
|
||||
. += smart_hint.show(V.smart)
|
||||
. += hacked_hint.show(V.hacked || V.emagged)
|
||||
. += lockdown_hint.show(V.lockdown)
|
||||
. += show_hint(0x1, V.seconds_electrified, "The orange light is off.", "The orange light is on.")
|
||||
. += show_hint(0x2, V.smart, "The red light is off.", "The red light is blinking.")
|
||||
. += show_hint(0x4, V.hacked || V.emagged, "The green light is on.", "The green light is off.")
|
||||
. += show_hint(0x8, V.lockdown, "The keypad lock is deployed.", "The keypad lock is retracted.")
|
||||
|
||||
/datum/wires/seedstorage/UpdatePulsed(var/index)
|
||||
var/obj/machinery/seed_storage/V = holder
|
||||
|
||||
@@ -1,20 +1,6 @@
|
||||
/datum/wires/smartfridge
|
||||
holder_type = /obj/machinery/smartfridge
|
||||
wire_count = 3
|
||||
var/datum/wire_hint/zap_hint
|
||||
var/datum/wire_hint/shoot_hint
|
||||
var/datum/wire_hint/scan_id_hint
|
||||
|
||||
/datum/wires/smartfridge/make_wire_hints()
|
||||
zap_hint = new("The orange light is off.", "The orange light is on.")
|
||||
shoot_hint = new("The red light is off.", "The red light is blinking.")
|
||||
scan_id_hint = new("A purple light is on.", "A yellow light is on.")
|
||||
|
||||
/datum/wires/smartfridge/Destroy()
|
||||
zap_hint = null
|
||||
shoot_hint = null
|
||||
scan_id_hint = null
|
||||
return ..()
|
||||
|
||||
/datum/wires/smartfridge/secure
|
||||
random = 1
|
||||
@@ -33,9 +19,9 @@ var/const/SMARTFRIDGE_WIRE_IDSCAN = 4
|
||||
/datum/wires/smartfridge/GetInteractWindow()
|
||||
var/obj/machinery/smartfridge/S = holder
|
||||
. += ..()
|
||||
. += zap_hint.show(S.seconds_electrified)
|
||||
. += shoot_hint.show(S.shoot_inventory)
|
||||
. += scan_id_hint.show(S.scan_id)
|
||||
. += show_hint(0x1, S.seconds_electrified, "The orange light is off.", "The orange light is on.")
|
||||
. += show_hint(0x2, S.shoot_inventory, "The red light is off.", "The red light is blinking.")
|
||||
. += show_hint(0x4, S.scan_id, "A purple light is on.", "A yellow light is on.")
|
||||
|
||||
/datum/wires/smartfridge/UpdatePulsed(var/index)
|
||||
var/obj/machinery/smartfridge/S = holder
|
||||
|
||||
@@ -1,20 +1,6 @@
|
||||
/datum/wires/smes
|
||||
holder_type = /obj/machinery/power/smes/buildable
|
||||
wire_count = 5
|
||||
var/datum/wire_hint/io_hint
|
||||
var/datum/wire_hint/safeties_hint
|
||||
var/datum/wire_hint/rcon_hint
|
||||
|
||||
/datum/wires/smes/make_wire_hints()
|
||||
io_hint = new("The green light is off.", "The green light is on.")
|
||||
safeties_hint = new("The red light is off.", "The red light is blinking.")
|
||||
rcon_hint = new("The blue light is on.", "The blue light is off.")
|
||||
|
||||
/datum/wires/smes/Destroy()
|
||||
io_hint = null
|
||||
safeties_hint = null
|
||||
rcon_hint = null
|
||||
return ..()
|
||||
|
||||
var/const/SMES_WIRE_RCON = 1 // Remote control (AI and consoles), cut to disable
|
||||
var/const/SMES_WIRE_INPUT = 2 // Input wire, cut to disable input, pulse to disable for 60s
|
||||
@@ -33,9 +19,9 @@ var/const/SMES_WIRE_FAILSAFES = 16 // Cut to disable failsafes, mend to reenable
|
||||
/datum/wires/smes/GetInteractWindow()
|
||||
var/obj/machinery/power/smes/buildable/S = holder
|
||||
. += ..()
|
||||
. += io_hint.show(S.input_cut || S.input_pulsed || S.output_cut || S.output_pulsed)
|
||||
. += safeties_hint.show(S.safeties_enabled || S.grounding)
|
||||
. += rcon_hint.show(S.RCon)
|
||||
. += show_hint(0x1, S.input_cut || S.input_pulsed || S.output_cut || S.output_pulsed, "The green light is off.", "The green light is on.")
|
||||
. += show_hint(0x2, S.safeties_enabled || S.grounding, "The red light is off.", "The red light is blinking.")
|
||||
. += show_hint(0x4, S.RCon, "The blue light is on.", "The blue light is off.")
|
||||
|
||||
/datum/wires/smes/UpdateCut(var/index, var/mended)
|
||||
var/obj/machinery/power/smes/buildable/S = holder
|
||||
|
||||
@@ -1,20 +1,6 @@
|
||||
/datum/wires/suit_storage_unit
|
||||
holder_type = /obj/machinery/suit_cycler
|
||||
wire_count = 3
|
||||
var/datum/wire_hint/zap_hint
|
||||
var/datum/wire_hint/safeties_hint
|
||||
var/datum/wire_hint/locked_hint
|
||||
|
||||
/datum/wires/suit_storage_unit/make_wire_hints()
|
||||
zap_hint = new("The orange light is off.", "The orange light is on.")
|
||||
safeties_hint = new("The red light is off.", "The red light is blinking.")
|
||||
locked_hint = new("The yellow light is on.", "The yellow light is off.")
|
||||
|
||||
/datum/wires/suit_storage_unit/Destroy()
|
||||
zap_hint = null
|
||||
safeties_hint = null
|
||||
locked_hint = null
|
||||
return ..()
|
||||
|
||||
var/const/SUIT_STORAGE_WIRE_ELECTRIFY = 1
|
||||
var/const/SUIT_STORAGE_WIRE_SAFETY = 2
|
||||
@@ -33,9 +19,9 @@ var/const/SUIT_STORAGE_WIRE_LOCKED = 4
|
||||
/datum/wires/suit_storage_unit/GetInteractWindow()
|
||||
var/obj/machinery/suit_cycler/S = holder
|
||||
. += ..()
|
||||
. += zap_hint.show(S.electrified)
|
||||
. += safeties_hint.show(S.safeties)
|
||||
. += locked_hint.show(S.locked)
|
||||
. += show_hint(0x1, S.electrified, "The orange light is off.", "The orange light is on.")
|
||||
. += show_hint(0x2, S.safeties, "The red light is off.", "The red light is blinking.")
|
||||
. += show_hint(0x4, S.locked, "The yellow light is on.", "The yellow light is off.")
|
||||
|
||||
/datum/wires/suit_storage_unit/UpdatePulsed(var/index)
|
||||
var/obj/machinery/suit_cycler/S = holder
|
||||
|
||||
@@ -1,23 +1,6 @@
|
||||
/datum/wires/vending
|
||||
holder_type = /obj/machinery/vending
|
||||
wire_count = 4
|
||||
var/datum/wire_hint/zap_hint
|
||||
var/datum/wire_hint/shoot_hint
|
||||
var/datum/wire_hint/hidden_hint
|
||||
var/datum/wire_hint/scan_id_hint
|
||||
|
||||
/datum/wires/vending/make_wire_hints()
|
||||
zap_hint = new("The orange light is off.", "The orange light is on.")
|
||||
shoot_hint = new("The red light is off.", "The red light is blinking.")
|
||||
hidden_hint = new("A green light is on.", "A green light is off.")
|
||||
scan_id_hint = new("A purple light is on.", "A yellow light is on.")
|
||||
|
||||
/datum/wires/vending/Destroy()
|
||||
zap_hint = null
|
||||
shoot_hint = null
|
||||
hidden_hint = null
|
||||
scan_id_hint = null
|
||||
return ..()
|
||||
|
||||
var/const/VENDING_WIRE_THROW = 1
|
||||
var/const/VENDING_WIRE_CONTRABAND = 2
|
||||
@@ -33,10 +16,10 @@ var/const/VENDING_WIRE_IDSCAN = 8
|
||||
/datum/wires/vending/GetInteractWindow()
|
||||
var/obj/machinery/vending/V = holder
|
||||
. += ..()
|
||||
. += zap_hint.show(V.seconds_electrified)
|
||||
. += shoot_hint.show(V.shoot_inventory)
|
||||
. += hidden_hint.show(V.categories & CAT_HIDDEN)
|
||||
. += scan_id_hint.show(V.scan_id)
|
||||
. += show_hint(0x1, V.seconds_electrified, "The orange light is off.", "The orange light is on.")
|
||||
. += show_hint(0x2, V.shoot_inventory, "The red light is off.", "The red light is blinking.")
|
||||
. += show_hint(0x4, V.categories & CAT_HIDDEN, "A green light is on.", "A green light is off.")
|
||||
. += show_hint(0x8, V.scan_id, "A purple light is on.", "A yellow light is on.")
|
||||
|
||||
/datum/wires/vending/UpdatePulsed(var/index)
|
||||
var/obj/machinery/vending/V = holder
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
// 'Wire hints' are the pieces of text on the bottom of the window that give you clues on what you're doing.
|
||||
// E.g. a power light turning on or off.
|
||||
// They are their own object in order to allow for logic to make them go bold if they change.
|
||||
|
||||
/datum/wire_hint
|
||||
var/last_state = null // Current state of the hint. Can be TRUE, FALSE, or null if nobody has interacted yet.
|
||||
var/true_text // Text to display in the hacking window when the current state is true.
|
||||
var/false_text // Ditto, but shown when false.
|
||||
|
||||
/datum/wire_hint/New(new_true_text, new_false_text)
|
||||
true_text = new_true_text
|
||||
false_text = new_false_text
|
||||
|
||||
// Returns text based on the state being inputted.
|
||||
// If that state is different from last time, the text will be bolded.
|
||||
/datum/wire_hint/proc/show(current_state)
|
||||
var/state_changed = FALSE
|
||||
if(last_state != null)
|
||||
if(last_state != current_state)
|
||||
state_changed = TRUE
|
||||
last_state = current_state
|
||||
if(last_state)
|
||||
return state_changed ? "<br><b>[true_text]</b>" : "<br>[true_text]"
|
||||
return state_changed ? "<br><b>[false_text]</b>" : "<br>[false_text]"
|
||||
|
||||
/datum/wire_hint/proc/reset_memory()
|
||||
last_state = null
|
||||
@@ -17,6 +17,9 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
|
||||
var/wire_count = 0 // Max is 16
|
||||
var/wires_status = 0 // BITFLAG OF WIRES
|
||||
|
||||
var/hint_states = 0 // BITFLAG OF HINT STATES (For tracking if they changed for bolding in UI)
|
||||
var/hint_states_initialized = FALSE // False until first time window is rendered.
|
||||
|
||||
var/list/wires = list()
|
||||
var/list/signallers = list()
|
||||
|
||||
@@ -26,6 +29,19 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
|
||||
var/window_x = 370
|
||||
var/window_y = 470
|
||||
|
||||
// Note: Its assumed states are boolean. If you ever have a multi-state hint, you must implement that yourself.
|
||||
/datum/wires/proc/show_hint(flag, current_state, true_text, false_text)
|
||||
var/state_changed = FALSE
|
||||
if(hint_states_initialized)
|
||||
if(!(hint_states & flag) != !current_state) // NOT-ing to convert to boolean
|
||||
state_changed = TRUE
|
||||
if(current_state)
|
||||
hint_states |= flag
|
||||
return state_changed ? "<br><b>[true_text]</b>" : "<br>[true_text]"
|
||||
else
|
||||
hint_states &= ~flag
|
||||
return state_changed ? "<br><b>[false_text]</b>" : "<br>[false_text]"
|
||||
|
||||
/datum/wires/New(var/atom/holder)
|
||||
..()
|
||||
src.holder = holder
|
||||
@@ -45,7 +61,6 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
|
||||
else
|
||||
var/list/wires = same_wires[holder_type]
|
||||
src.wires = wires // Reference the wires list.
|
||||
make_wire_hints()
|
||||
|
||||
/datum/wires/Destroy()
|
||||
holder = null
|
||||
@@ -76,6 +91,7 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
|
||||
var/html = null
|
||||
if(holder && CanUse(user))
|
||||
html = GetInteractWindow()
|
||||
hint_states_initialized = TRUE
|
||||
if(html)
|
||||
user.set_machine(holder)
|
||||
else
|
||||
@@ -109,10 +125,6 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
|
||||
|
||||
return html
|
||||
|
||||
// Override to spawn the wire hints here, to avoid touching New().
|
||||
/datum/wires/proc/make_wire_hints()
|
||||
return
|
||||
|
||||
/datum/wires/Topic(href, href_list)
|
||||
..()
|
||||
if(in_range(holder, usr) && isliving(usr))
|
||||
|
||||
@@ -222,6 +222,7 @@ var/global/list/PDA_Manifest = list()
|
||||
throwforce = 0.0
|
||||
throw_speed = 1
|
||||
throw_range = 20
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
|
||||
user.drop_item()
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
throwforce = 0
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
drop_sound = 'sound/misc/slip.ogg'
|
||||
|
||||
/obj/item/weapon/soap/nanotrasen
|
||||
desc = "A NanoTrasen-brand bar of soap. Smells of phoron."
|
||||
@@ -105,7 +106,7 @@
|
||||
if(concealed_blade)
|
||||
user.visible_message("<span class='warning'>[user] has unsheathed \a [concealed_blade] from [T.his] [src]!</span>", "You unsheathe \the [concealed_blade] from \the [src].")
|
||||
// Calling drop/put in hands to properly call item drop/pickup procs
|
||||
playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1)
|
||||
playsound(user.loc, 'sound/weapons/holster/sheathout.ogg', 50, 1)
|
||||
user.drop_from_inventory(src)
|
||||
user.put_in_hands(concealed_blade)
|
||||
user.put_in_hands(src)
|
||||
@@ -119,6 +120,7 @@
|
||||
if(!src.concealed_blade && istype(W))
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<span class='warning'>[user] has sheathed \a [W] into [T.his] [src]!</span>", "You sheathe \the [W] into \the [src].")
|
||||
playsound(user.loc, 'sound/weapons/holster/sheathin.ogg', 50, 1)
|
||||
user.drop_from_inventory(W)
|
||||
W.loc = src
|
||||
src.concealed_blade = W
|
||||
@@ -487,6 +489,7 @@
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
w_class = ITEMSIZE_SMALL
|
||||
var/rating = 1
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
|
||||
/obj/item/weapon/stock_parts/New()
|
||||
src.pixel_x = rand(-5.0, 5)
|
||||
|
||||
@@ -130,5 +130,6 @@ datum/announcement/proc/Log(message as text, message_title as text)
|
||||
rank = character.mind.role_alt_title
|
||||
AnnounceArrivalSimple(character.real_name, rank, join_message)
|
||||
|
||||
/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "will arrive to the station shortly by shuttle")
|
||||
|
||||
/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "will arrive to the station shortly by shuttle", new_sound = 'sound/misc/notice3.ogg')
|
||||
global_announcer.autosay("[name], [rank], [join_message].", "Arrivals Announcement Computer")
|
||||
|
||||
@@ -298,10 +298,10 @@ var/list/mob/living/forced_ambiance_list = new
|
||||
L << sound(sound, repeat = 0, wait = 0, volume = 50, channel = CHANNEL_AMBIENCE)
|
||||
L.client.time_last_ambience_played = world.time
|
||||
|
||||
/area/proc/gravitychange(var/gravitystate = 0, var/area/A)
|
||||
A.has_gravity = gravitystate
|
||||
/area/proc/gravitychange(var/gravitystate = 0)
|
||||
src.has_gravity = gravitystate
|
||||
|
||||
for(var/mob/M in A)
|
||||
for(var/mob/M in src)
|
||||
if(has_gravity)
|
||||
thunk(M)
|
||||
M.update_floating( M.Check_Dense_Object() )
|
||||
|
||||
@@ -15,7 +15,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "company officials and Corporate Regulations"
|
||||
selection_color = "#1D1D4F"
|
||||
selection_color = "#2F2F7F"
|
||||
req_admin_notify = 1
|
||||
access = list() //See get_access()
|
||||
minimal_access = list() //See get_access()
|
||||
@@ -59,7 +59,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
/datum/job/hop
|
||||
title = "Head of Personnel"
|
||||
flag = HOP
|
||||
departments = list(DEPARTMENT_CIVILIAN, DEPARTMENT_CARGO, DEPARTMENT_COMMAND)
|
||||
departments = list(DEPARTMENT_COMMAND, DEPARTMENT_CIVILIAN, DEPARTMENT_CARGO)
|
||||
sorting_order = 2 // Above the QM, below captain.
|
||||
departments_managed = list(DEPARTMENT_CIVILIAN, DEPARTMENT_CARGO)
|
||||
department_flag = CIVILIAN
|
||||
@@ -67,7 +67,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "the Colony Director"
|
||||
selection_color = "#2F2F7F"
|
||||
selection_color = "#1D1D4F"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 10
|
||||
economic_modifier = 10
|
||||
@@ -115,7 +115,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "command staff"
|
||||
selection_color = "#2F2F7F"
|
||||
selection_color = "#1D1D4F"
|
||||
minimal_player_age = 5
|
||||
economic_modifier = 7
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "the Head of Personnel"
|
||||
selection_color = "#7a4f33"
|
||||
selection_color = "#9b633e"
|
||||
economic_modifier = 5
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
|
||||
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
|
||||
@@ -134,7 +134,7 @@
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "the Quartermaster and the Head of Personnel"
|
||||
selection_color = "#9b633e"
|
||||
selection_color = "#7a4f33"
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station)
|
||||
minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting)
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
total_positions = 3
|
||||
spawn_positions = 3
|
||||
supervisors = "the Quartermaster and the Head of Personnel"
|
||||
selection_color = "#9b633e"
|
||||
selection_color = "#7a4f33"
|
||||
economic_modifier = 5
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station)
|
||||
minimal_access = list(access_mining, access_mining_station, access_mailsorting)
|
||||
@@ -271,4 +271,4 @@
|
||||
|
||||
// IAA Alt Titles
|
||||
/datum/alt_title/iaa
|
||||
title = "Internal Affairs Agent"
|
||||
title = "Internal Affairs Agent"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
var/short_name = "NO" // Shorter name, used for things like external Topic() responses.
|
||||
var/color = "#000000" // Color to use in UIs to represent this department.
|
||||
var/list/jobs = list() // Assoc list. Key is the job title, and the value is a reference to the job datum. Populated by SSjob subsystem.
|
||||
var/list/primary_jobs = list() // Same as above, but only jobs with their 'primary' department are put here. Primary being the first department in their list.
|
||||
var/sorting_order = 0 // Used to sort departments, e.g. Command always being on top.
|
||||
var/visible = TRUE // If false, it should not show up on things like the manifest or ID computer.
|
||||
var/assignable = TRUE // Similar for above, but only for ID computers and such. Used for silicon department.
|
||||
|
||||
@@ -807,6 +807,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
var/datum/feed_message/important_message = null
|
||||
var/scribble=""
|
||||
var/scribble_page = null
|
||||
drop_sound = 'sound/items/drop/wrapper.ogg'
|
||||
|
||||
obj/item/weapon/newspaper/attack_self(mob/user as mob)
|
||||
if(ishuman(user))
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
var/datum/stored_item/vending_product/currently_vending = null // What we're requesting payment for right now
|
||||
var/status_message = "" // Status screen messages like "insufficient funds", displayed in NanoUI
|
||||
var/status_error = 0 // Set to 1 if status_message is an error
|
||||
var/vending_sound = "machines/vending/vending_drop.ogg"
|
||||
|
||||
/*
|
||||
Variables used to initialize the product list
|
||||
@@ -508,8 +509,7 @@
|
||||
sleep(3)
|
||||
if(R.get_product(get_turf(src)))
|
||||
visible_message("<span class='notice'>\The [src] clunks as it vends an additional item.</span>")
|
||||
|
||||
playsound(src, 'sound/items/vending.ogg', 50, 1, 1)
|
||||
playsound(src.loc, "sound/[vending_sound]", 100, 1, 1)
|
||||
|
||||
status_message = ""
|
||||
status_error = 0
|
||||
@@ -739,6 +739,7 @@
|
||||
req_access = list(access_bar)
|
||||
req_log_access = access_bar
|
||||
has_logs = 1
|
||||
vending_sound = "machines/vending/vending_cans.ogg"
|
||||
|
||||
/obj/machinery/vending/assist
|
||||
products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4,
|
||||
@@ -758,6 +759,7 @@
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25,/obj/item/weapon/reagent_containers/food/drinks/tea = 25,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 25)
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/ice = 10)
|
||||
prices = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 3, /obj/item/weapon/reagent_containers/food/drinks/tea = 3, /obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 3)
|
||||
vending_sound = "machines/vending/vending_coffee.ogg"
|
||||
|
||||
/obj/machinery/vending/snack
|
||||
name = "Getmore Chocolate Corp"
|
||||
@@ -791,6 +793,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 1,/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 1,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 1)
|
||||
idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan.
|
||||
vending_sound = "machines/vending/vending_cans.ogg"
|
||||
|
||||
/obj/machinery/vending/fitness
|
||||
name = "SweatMAX"
|
||||
@@ -1053,6 +1056,7 @@
|
||||
products = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up = 30) // TODO Russian soda can
|
||||
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/cola = 20) // TODO Russian cola can
|
||||
idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan.
|
||||
vending_sound = "machines/vending/vending_cans.ogg"
|
||||
|
||||
/obj/machinery/vending/tool
|
||||
name = "YouTool"
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
var/list/categories = list()
|
||||
var/category = null
|
||||
var/manufacturer = null
|
||||
var/species_types = list("Human")
|
||||
var/species = "Human"
|
||||
var/sync_message = ""
|
||||
|
||||
/obj/machinery/pros_fabricator/New()
|
||||
@@ -100,11 +102,14 @@
|
||||
data["buildable"] = get_build_options()
|
||||
data["category"] = category
|
||||
data["categories"] = categories
|
||||
data["species_types"] = species_types
|
||||
data["species"] = species
|
||||
if(all_robolimbs)
|
||||
var/list/T = list()
|
||||
for(var/A in all_robolimbs)
|
||||
var/datum/robolimb/R = all_robolimbs[A]
|
||||
if(R.unavailable_to_build) continue
|
||||
if(species in R.species_cannot_use) continue
|
||||
T += list(list("id" = A, "company" = R.company))
|
||||
data["manufacturers"] = T
|
||||
data["manufacturer"] = manufacturer
|
||||
@@ -135,6 +140,10 @@
|
||||
if(href_list["category"] in categories)
|
||||
category = href_list["category"]
|
||||
|
||||
if(href_list["species"])
|
||||
if(href_list["species"] in species_types)
|
||||
species = href_list["species"]
|
||||
|
||||
if(href_list["manufacturer"])
|
||||
if(href_list["manufacturer"] in all_robolimbs)
|
||||
manufacturer = href_list["manufacturer"]
|
||||
@@ -173,6 +182,18 @@
|
||||
qdel(I)
|
||||
return
|
||||
|
||||
if(istype(I,/obj/item/weapon/disk/species))
|
||||
var/obj/item/weapon/disk/species/D = I
|
||||
if(!D.species || !(D.species in GLOB.all_species))
|
||||
to_chat(user, "<span class='warning'>This disk seems to be corrupted!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Uploading modification files for [D.species]...</span>")
|
||||
if(do_after(user,50,src))
|
||||
species_types |= D.species
|
||||
to_chat(user, "<span class='notice'>Uploaded [D.species] files!</span>")
|
||||
qdel(I)
|
||||
return
|
||||
|
||||
if(istype(I,/obj/item/stack/material))
|
||||
var/obj/item/stack/material/S = I
|
||||
if(!(S.material.name in materials))
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
var/icon/default_worn_icon //Default on-mob icon
|
||||
var/worn_layer //Default on-mob layer
|
||||
|
||||
var/drop_sound = 'sound/items/drop/device.ogg' // drop sound - this is the default
|
||||
|
||||
/obj/item/New()
|
||||
..()
|
||||
if(embed_chance < 0)
|
||||
@@ -274,6 +276,11 @@
|
||||
/obj/item/proc/moved(mob/user as mob, old_loc as turf)
|
||||
return
|
||||
|
||||
/obj/item/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
if(drop_sound)
|
||||
playsound(src, drop_sound, 50, 0, preference = /datum/client_preference/drop_sounds)
|
||||
|
||||
// apparently called whenever an item is removed from a slot, container, or anything else.
|
||||
/obj/item/proc/dropped(mob/user as mob)
|
||||
..()
|
||||
|
||||
@@ -48,6 +48,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/list/conversations = list() // For keeping up with who we have PDA messsages from.
|
||||
var/new_message = 0 //To remove hackish overlay check
|
||||
var/new_news = 0
|
||||
var/touch_silent = 0 //If 1, no beeps on interacting.
|
||||
|
||||
var/active_feed // The selected feed
|
||||
var/list/warrant // The warrant as we last knew it
|
||||
@@ -90,7 +91,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
//Bloop when using:
|
||||
/obj/item/device/pda/CouldUseTopic(var/mob/user)
|
||||
..()
|
||||
if(iscarbon(user))
|
||||
if(iscarbon(user) && !touch_silent)
|
||||
playsound(src, 'sound/machines/pda_click.ogg', 20)
|
||||
|
||||
/obj/item/device/pda/medical
|
||||
@@ -504,6 +505,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
data["note"] = note // current pda notes
|
||||
data["message_silent"] = message_silent // does the pda make noise when it receives a message?
|
||||
data["news_silent"] = news_silent // does the pda make noise when it receives news?
|
||||
data["touch_silent"] = touch_silent // does the pda make noise when it receives news?
|
||||
data["toff"] = toff // is the messenger function turned off?
|
||||
data["active_conversation"] = active_conversation // Which conversation are we following right now?
|
||||
|
||||
@@ -772,6 +774,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
scanmode = 0
|
||||
else if((!isnull(cartridge)) && (cartridge.access_atmos))
|
||||
scanmode = 5
|
||||
if("Toggle Beeping")
|
||||
touch_silent = !touch_silent
|
||||
|
||||
//MESSENGER/NOTE FUNCTIONS===================================
|
||||
|
||||
@@ -1053,6 +1057,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/mob/M = loc
|
||||
M.put_in_hands(id)
|
||||
to_chat(usr, "<span class='notice'>You remove the ID from the [name].</span>")
|
||||
playsound(loc, 'sound/machines/id_swipe.ogg', 100, 1)
|
||||
else
|
||||
id.loc = get_turf(src)
|
||||
id = null
|
||||
@@ -1259,6 +1264,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if (cartridge.radio)
|
||||
cartridge.radio.hostpda = null
|
||||
to_chat(usr, "<span class='notice'>You remove \the [cartridge] from the [name].</span>")
|
||||
playsound(loc, 'sound/machines/id_swipe.ogg', 100, 1)
|
||||
cartridge = null
|
||||
|
||||
/obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use.
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
var/heal_brute = 0
|
||||
var/heal_burn = 0
|
||||
var/apply_sounds
|
||||
drop_sound = 'sound/items/drop/box.ogg'
|
||||
|
||||
var/upgrade_to // The type path this stack can be upgraded to.
|
||||
|
||||
@@ -143,6 +144,7 @@
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
no_variants = FALSE
|
||||
apply_sounds = list('sound/effects/rip1.ogg','sound/effects/rip2.ogg')
|
||||
drop_sound = 'sound/items/drop/gloves.ogg'
|
||||
|
||||
upgrade_to = /obj/item/stack/medical/advanced/bruise_pack
|
||||
|
||||
@@ -212,6 +214,7 @@
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
no_variants = FALSE
|
||||
apply_sounds = list('sound/effects/ointment.ogg')
|
||||
drop_sound = 'sound/items/drop/herb.ogg'
|
||||
|
||||
/obj/item/stack/medical/ointment/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(..())
|
||||
@@ -352,6 +355,7 @@
|
||||
icon_state = "splint"
|
||||
amount = 5
|
||||
max_amount = 5
|
||||
drop_sound = 'sound/items/drop/hat.ogg'
|
||||
|
||||
var/list/splintable_organs = list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO) //List of organs you can splint, natch.
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
icon_state = "sheet-glass"
|
||||
var/is_reinforced = 0
|
||||
default_type = "glass"
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
|
||||
/obj/item/stack/material/glass/attack_self(mob/user as mob)
|
||||
construct_window(user)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
singular_name = "human skin piece"
|
||||
icon_state = "sheet-hide"
|
||||
no_variants = FALSE
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
|
||||
/obj/item/stack/material/animalhide/human
|
||||
amount = 50
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
randpixel = 7
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_amount = 60
|
||||
drop_sound = 'sound/items/drop/axe.ogg'
|
||||
|
||||
/obj/item/stack/tile/New()
|
||||
..()
|
||||
@@ -37,6 +38,7 @@
|
||||
flags = 0
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
no_variants = FALSE
|
||||
drop_sound = 'sound/items/drop/herb.ogg'
|
||||
/*
|
||||
* Wood
|
||||
*/
|
||||
@@ -51,6 +53,7 @@
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
no_variants = FALSE
|
||||
drop_sound = 'sound/items/drop/wooden.ogg'
|
||||
|
||||
/obj/item/stack/tile/wood/sif
|
||||
name = "alien wood tile"
|
||||
@@ -80,6 +83,7 @@
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
no_variants = FALSE
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
|
||||
/obj/item/stack/tile/carpet/teal
|
||||
name = "teal carpet"
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
force = 0
|
||||
drop_sound = 'sound/items/drop/gloves.ogg'
|
||||
|
||||
|
||||
/*
|
||||
@@ -36,6 +37,7 @@
|
||||
desc = "A translucent balloon. There's nothing in it."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "waterballoon-e"
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
/obj/item/toy/balloon/New()
|
||||
var/datum/reagents/R = new/datum/reagents(10)
|
||||
@@ -99,6 +101,7 @@
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "syndballoon"
|
||||
w_class = ITEMSIZE_LARGE
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
/obj/item/toy/nanotrasenballoon
|
||||
name = "criminal balloon"
|
||||
@@ -110,6 +113,7 @@
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "ntballoon"
|
||||
w_class = ITEMSIZE_LARGE
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
/*
|
||||
* Fake telebeacon
|
||||
@@ -147,6 +151,7 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
attack_verb = list("attacked", "struck", "hit")
|
||||
var/bullets = 5
|
||||
drop_sound = 'sound/items/drop/gun.ogg'
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 2) && bullets)
|
||||
@@ -239,6 +244,7 @@
|
||||
icon_state = "foamdart"
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS
|
||||
drop_sound = 'sound/items/drop/food.ogg'
|
||||
|
||||
/obj/effect/foam_dart_dummy
|
||||
name = ""
|
||||
@@ -256,6 +262,7 @@
|
||||
desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "esword"
|
||||
drop_sound = 'sound/items/drop/gun.ogg'
|
||||
var/lcolor
|
||||
var/rainbow = FALSE
|
||||
item_icons = list(
|
||||
@@ -344,6 +351,7 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "snappop"
|
||||
w_class = ITEMSIZE_TINY
|
||||
drop_sound = null
|
||||
|
||||
throw_impact(atom/hit_atom)
|
||||
..()
|
||||
@@ -378,6 +386,7 @@
|
||||
name = "water flower"
|
||||
desc = "A seemingly innocent sunflower...with a twist."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
drop_sound = 'sound/items/drop/food.ogg'
|
||||
icon_state = "sunflower"
|
||||
item_state = "sunflower"
|
||||
var/empty = 0
|
||||
@@ -448,6 +457,7 @@
|
||||
desc = "A genuine Admiral Krush Bosun's Whistle, for the aspiring ship's captain! Suitable for ages 8 and up, do not swallow."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "bosunwhistle"
|
||||
drop_sound = 'sound/items/drop/card.ogg'
|
||||
var/cooldown = 0
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS | SLOT_HOLSTER
|
||||
@@ -465,6 +475,7 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "ripleytoy"
|
||||
var/cooldown = 0
|
||||
drop_sound = 'sound/mecha/mechstep.ogg'
|
||||
|
||||
//all credit to skasi for toy mech fun ideas
|
||||
/obj/item/toy/prize/attack_self(mob/user as mob)
|
||||
@@ -546,6 +557,7 @@
|
||||
icon_state = "nuketoy"
|
||||
var/cooldown = 0
|
||||
var/toysay = "What the fuck did you do?"
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
|
||||
/obj/item/toy/figure/New()
|
||||
..()
|
||||
@@ -879,14 +891,14 @@
|
||||
var/searching = FALSE
|
||||
var/opened = FALSE // has this been slit open? this will allow you to store an object in a plushie.
|
||||
var/obj/item/stored_item // Note: Stored items can't be bigger than the plushie itself.
|
||||
|
||||
|
||||
/obj/structure/plushie/examine(mob/user)
|
||||
..()
|
||||
if(opened)
|
||||
to_chat(user, "<i>You notice an incision has been made on [src].</i>")
|
||||
if(in_range(user, src) && stored_item)
|
||||
to_chat(user, "<i>You can see something in there...</i>")
|
||||
|
||||
|
||||
/obj/structure/plushie/attack_hand(mob/user)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
|
||||
@@ -900,7 +912,7 @@
|
||||
return
|
||||
else
|
||||
searching = FALSE
|
||||
|
||||
|
||||
if(user.a_intent == I_HELP)
|
||||
user.visible_message("<span class='notice'><b>\The [user]</b> hugs [src]!</span>","<span class='notice'>You hug [src]!</span>")
|
||||
else if (user.a_intent == I_HURT)
|
||||
@@ -927,7 +939,7 @@
|
||||
if(stored_item)
|
||||
to_chat(user, "There is already something in here.")
|
||||
return
|
||||
|
||||
|
||||
if(!(I.w_class > w_class))
|
||||
to_chat(user, "You place [I] inside [src].")
|
||||
user.drop_from_inventory(I, src)
|
||||
@@ -970,6 +982,7 @@
|
||||
desc = "A small toy plushie. It's very cute."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "nymphplushie"
|
||||
drop_sound = 'sound/items/drop/plushie.ogg'
|
||||
w_class = ITEMSIZE_TINY
|
||||
var/last_message = 0
|
||||
var/pokephrase = "Uww!"
|
||||
@@ -1007,6 +1020,7 @@
|
||||
user.visible_message("<span class='warning'><b>\The [user]</b> attempts to strangle [src]!</span>","<span class='warning'>You attempt to strangle [src]!</span>")
|
||||
else
|
||||
user.visible_message("<span class='notice'><b>\The [user]</b> pokes [src].</span>","<span class='notice'>You poke [src].</span>")
|
||||
playsound(src, 'sound/items/drop/plushie.ogg', 25, 0)
|
||||
visible_message("[src] says, \"[pokephrase]\"")
|
||||
last_message = world.time
|
||||
|
||||
@@ -1030,7 +1044,7 @@
|
||||
user.visible_message("<span class='notice'>[user] makes \the [I] kiss \the [src]!.</span>", \
|
||||
"<span class='notice'>You make \the [I] kiss \the [src]!.</span>")
|
||||
return
|
||||
|
||||
|
||||
|
||||
if(istype(I, /obj/item/device/threadneedle) && opened)
|
||||
to_chat(user, "You sew the hole underneath [src].")
|
||||
@@ -1053,7 +1067,7 @@
|
||||
stored_item = I
|
||||
to_chat(user, "You placed [I] into [src].")
|
||||
return
|
||||
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plushie/nymph
|
||||
@@ -1488,6 +1502,7 @@
|
||||
icon_state = "inflatable"
|
||||
icon = 'icons/obj/clothing/belts.dmi'
|
||||
slot_flags = SLOT_BELT
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
/obj/item/toy/xmastree
|
||||
name = "Miniature Christmas tree"
|
||||
@@ -1497,3 +1512,4 @@
|
||||
w_class = ITEMSIZE_TINY
|
||||
force = 1
|
||||
throwforce = 1
|
||||
drop_sound = 'sound/items/drop/box.ogg'
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon = 'icons/obj/trash.dmi'
|
||||
w_class = ITEMSIZE_SMALL
|
||||
desc = "This is rubbish."
|
||||
drop_sound = 'sound/items/drop/wrapper.ogg'
|
||||
|
||||
/obj/item/trash/raisins
|
||||
name = "\improper 4no raisins"
|
||||
@@ -38,6 +39,7 @@
|
||||
/obj/item/trash/unajerky
|
||||
name = "Moghes Imported Sissalik Jerky"
|
||||
icon_state = "unathitinred"
|
||||
drop_sound = 'sound/items/drop/soda.ogg'
|
||||
|
||||
/obj/item/trash/syndi_cakes
|
||||
name = "syndi cakes"
|
||||
@@ -66,6 +68,7 @@
|
||||
/obj/item/trash/tray
|
||||
name = "tray"
|
||||
icon_state = "tray"
|
||||
drop_sound = 'sound/items/trayhit1.ogg'
|
||||
|
||||
/obj/item/trash/candle
|
||||
name = "candle"
|
||||
|
||||
@@ -34,6 +34,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
origin_tech = list(TECH_MATERIAL = 1)
|
||||
slot_flags = SLOT_EARS
|
||||
attack_verb = list("burnt", "singed")
|
||||
drop_sound = null
|
||||
|
||||
/obj/item/weapon/flame/match/process()
|
||||
if(isliving(loc))
|
||||
@@ -90,6 +91,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
var/ignitermes = "USER lights NAME with FLAME"
|
||||
var/brand
|
||||
blood_sprite_state = null //Can't bloody these
|
||||
drop_sound = 'sound/items/cigs_lighters/cig_snuff.ogg'
|
||||
|
||||
/obj/item/clothing/mask/smokable/Initialize()
|
||||
. = ..()
|
||||
@@ -158,6 +160,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/proc/light(var/flavor_text = "[usr] lights the [name].")
|
||||
if(!src.lit)
|
||||
src.lit = 1
|
||||
playsound(src, 'sound/items/cigs_lighters/cig_light.ogg', 75, 1, -1)
|
||||
damtype = "fire"
|
||||
if(reagents.get_reagent_amount("phoron")) // the phoron explodes when exposed to fire
|
||||
var/datum/effect/effect/system/reagents_explosion/e = new()
|
||||
@@ -182,6 +185,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/proc/die(var/nomessage = 0)
|
||||
var/turf/T = get_turf(src)
|
||||
set_light(0)
|
||||
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
if (type_butt)
|
||||
var/obj/item/butt = new type_butt(T)
|
||||
@@ -203,6 +207,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
var/mob/living/M = loc
|
||||
if (!nomessage)
|
||||
to_chat(M, "<span class='notice'>Your [name] goes out, and you empty the ash.</span>")
|
||||
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
|
||||
lit = 0
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
@@ -225,6 +230,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
to_chat(H, "<span class='warning'>\The [blocked] is in the way!</span>")
|
||||
return 1
|
||||
to_chat(H, "<span class='notice'>You take a drag on your [name].</span>")
|
||||
playsound(src, 'sound/items/cigs_lighters/inhale.ogg', 50, 0, -1)
|
||||
smoke(5)
|
||||
return 1
|
||||
return ..()
|
||||
@@ -319,6 +325,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(lit == 1)
|
||||
if(user.a_intent == I_HURT)
|
||||
user.visible_message("<span class='notice'>[user] drops and treads on the lit [src], putting it out instantly.</span>")
|
||||
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
|
||||
die(1)
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] puts out \the [src].</span>")
|
||||
@@ -412,6 +419,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(lit == 1)
|
||||
if(user.a_intent == I_HURT)
|
||||
user.visible_message("<span class='notice'>[user] empties the lit [src] on the floor!.</span>")
|
||||
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
|
||||
die(1)
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] puts out \the [src].</span>")
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
slot_flags = SLOT_EARS
|
||||
var/colour = "red"
|
||||
var/open = 0
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
|
||||
/obj/item/weapon/lipstick/purple
|
||||
name = "purple lipstick"
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
force = 10
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 90)
|
||||
attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed")
|
||||
drop_sound = 'sound/items/drop/gascan.ogg'
|
||||
|
||||
var/spray_particles = 3
|
||||
var/spray_amount = 10 //units of liquid per particle
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "gift1"
|
||||
item_state = "gift1"
|
||||
drop_sound = 'sound/items/drop/box.ogg'
|
||||
|
||||
/obj/item/weapon/a_gift/New()
|
||||
..()
|
||||
@@ -26,6 +27,7 @@
|
||||
|
||||
/obj/item/weapon/gift/attack_self(mob/user as mob)
|
||||
user.drop_item()
|
||||
playsound(src.loc, 'sound/items/package_unwrap.ogg', 50,1)
|
||||
if(src.gift)
|
||||
user.put_in_active_hand(gift)
|
||||
src.gift.add_fingerprint(user)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
throw_range = 5
|
||||
origin_tech = list(TECH_MATERIAL = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 500)
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
var/elastic
|
||||
var/dispenser = 0
|
||||
var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
var/associated_account_number = 0
|
||||
|
||||
var/list/files = list( )
|
||||
drop_sound = 'sound/items/drop/card.ogg'
|
||||
|
||||
/obj/item/weapon/card/data
|
||||
name = "data disk"
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
force_divisor = 0.7 // 10 when wielded with weight 15 (wood)
|
||||
dulled_divisor = 0.75 // Still a club
|
||||
thrown_force_divisor = 1 // as above
|
||||
drop_sound = 'sound/items/drop/wooden.ogg'
|
||||
|
||||
/obj/item/weapon/material/kitchen/rollingpin/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
attack_verb = list("patted", "tapped")
|
||||
force_divisor = 0.25 // 15 when wielded with hardness 60 (steel)
|
||||
thrown_force_divisor = 0.25 // 5 when thrown with weight 20 (steel)
|
||||
drop_sound = 'sound/items/drop/knife.ogg'
|
||||
|
||||
/obj/item/weapon/material/butterfly/update_force()
|
||||
if(active)
|
||||
@@ -65,6 +66,7 @@
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 12000)
|
||||
origin_tech = list(TECH_MATERIAL = 1)
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
drop_sound = 'sound/items/drop/knife.ogg'
|
||||
|
||||
/obj/item/weapon/material/knife/suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 1)
|
||||
attack_verb = list("chopped", "torn", "cut")
|
||||
applies_material_colour = 0
|
||||
drop_sound = 'sound/items/drop/axe.ogg'
|
||||
|
||||
/obj/item/weapon/material/knife/machete/hatchet/unathiknife
|
||||
name = "duelling knife"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
edge = 1
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
drop_sound = 'sound/items/drop/sword.ogg'
|
||||
|
||||
/obj/item/weapon/material/sword/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(unique_parry_check(user, attacker, damage_source) && prob(50))
|
||||
|
||||
@@ -95,6 +95,7 @@
|
||||
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
||||
applies_material_colour = 0
|
||||
can_cleave = TRUE
|
||||
drop_sound = 'sound/items/drop/axe.ogg'
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/update_held_icon()
|
||||
var/mob/living/M = loc
|
||||
|
||||
@@ -16,11 +16,8 @@
|
||||
max_storage_space = INVENTORY_STANDARD_SPACE
|
||||
var/flippable = 0
|
||||
var/side = 0 //0 = right, 1 = left
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
|
||||
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (src.use_sound)
|
||||
playsound(src.loc, src.use_sound, 50, 1, -5)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/backpack/equipped(var/mob/user, var/slot)
|
||||
if (slot == slot_back && src.use_sound)
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
display_contents_with_number = 0 // UNStABLE AS FuCK, turn on when it stops crashing clients
|
||||
use_to_pickup = 1
|
||||
slot_flags = SLOT_BELT
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
|
||||
// -----------------------------
|
||||
// Trash bag
|
||||
@@ -33,6 +34,7 @@
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "trashbag0"
|
||||
item_state_slots = list(slot_r_hand_str = "trashbag", slot_l_hand_str = "trashbag")
|
||||
drop_sound = 'sound/items/drop/wrapper.ogg'
|
||||
|
||||
w_class = ITEMSIZE_LARGE
|
||||
max_w_class = ITEMSIZE_SMALL
|
||||
@@ -59,6 +61,7 @@
|
||||
desc = "It's a very flimsy, very noisy alternative to a bag."
|
||||
icon = 'icons/obj/trash.dmi'
|
||||
icon_state = "plasticbag"
|
||||
drop_sound = 'sound/items/drop/wrapper.ogg'
|
||||
|
||||
w_class = ITEMSIZE_LARGE
|
||||
max_w_class = ITEMSIZE_SMALL
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
slot_flags = SLOT_BELT
|
||||
attack_verb = list("whipped", "lashed", "disciplined")
|
||||
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/seromi/belt.dmi')
|
||||
drop_sound = 'sound/items/drop/leather.ogg'
|
||||
|
||||
var/show_above_suit = 0
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
var/mob/affecting = null
|
||||
var/deity_name = "Christ"
|
||||
use_sound = 'sound/bureaucracy/bookopen.ogg'
|
||||
drop_sound = 'sound/bureaucracy/bookclose.ogg'
|
||||
|
||||
/obj/item/weapon/storage/bible/booze
|
||||
name = "bible"
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
var/foldable = /obj/item/stack/material/cardboard // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
|
||||
max_w_class = ITEMSIZE_SMALL
|
||||
max_storage_space = INVENTORY_BOX_SPACE
|
||||
use_sound = 'sound/items/storage/box.ogg'
|
||||
drop_sound = 'sound/items/drop/box.ogg'
|
||||
|
||||
// BubbleWrap - A box can be folded up to make card
|
||||
/obj/item/weapon/storage/box/attack_self(mob/user as mob)
|
||||
@@ -50,6 +52,7 @@
|
||||
return
|
||||
// Now make the cardboard
|
||||
to_chat(user, "<span class='notice'>You fold [src] flat.</span>")
|
||||
playsound(src.loc, 'sound/items/storage/boxfold.ogg', 30, 1)
|
||||
new foldable(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
@@ -406,10 +409,15 @@
|
||||
|
||||
/obj/item/weapon/storage/box/matches/attackby(obj/item/weapon/flame/match/W as obj, mob/user as mob)
|
||||
if(istype(W) && !W.lit && !W.burnt)
|
||||
W.lit = 1
|
||||
W.damtype = "burn"
|
||||
W.icon_state = "match_lit"
|
||||
START_PROCESSING(SSobj, W)
|
||||
if(prob(25))
|
||||
playsound(src.loc, 'sound/items/cigs_lighters/matchstick_lit.ogg', 25, 0, -1)
|
||||
user.visible_message("<span class='notice'>[user] manages to light the match on the matchbox.</span>")
|
||||
W.lit = 1
|
||||
W.damtype = "burn"
|
||||
W.icon_state = "match_lit"
|
||||
START_PROCESSING(SSprocessing, W)
|
||||
else
|
||||
playsound(src.loc, 'sound/items/cigs_lighters/matchstick_hit.ogg', 25, 0, -1)
|
||||
W.update_icon()
|
||||
return
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
w_class = ITEMSIZE_LARGE
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 4
|
||||
use_sound = 'sound/items/storage/briefcase.ogg'
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
|
||||
/obj/item/weapon/storage/briefcase/clutch
|
||||
name = "clutch purse"
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
throw_range = 8
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 7 // 14
|
||||
var/list/icon_variety
|
||||
drop_sound = 'sound/items/drop/box.ogg'
|
||||
|
||||
/obj/item/weapon/storage/firstaid/Initialize()
|
||||
. = ..()
|
||||
@@ -171,13 +172,14 @@
|
||||
desc = "It's an airtight container for storing medication."
|
||||
icon_state = "pill_canister"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
drop_sound = 'sound/items/drop/pillbottle.ogg'
|
||||
item_state_slots = list(slot_r_hand_str = "contsolid", slot_l_hand_str = "contsolid")
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/dice,/obj/item/weapon/paper)
|
||||
allow_quick_gather = 1
|
||||
allow_quick_empty = 1
|
||||
use_to_pickup = 1
|
||||
use_sound = null
|
||||
use_sound = 'sound/items/storage/pillbottle.ogg'
|
||||
max_storage_space = ITEMSIZE_COST_TINY * 14
|
||||
max_w_class = ITEMSIZE_TINY
|
||||
var/wrapper_color
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_w_class = ITEMSIZE_SMALL
|
||||
max_storage_space = ITEMSIZE_SMALL * 7
|
||||
use_sound = 'sound/items/storage/briefcase.ogg'
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 1))
|
||||
|
||||
@@ -141,8 +141,8 @@
|
||||
is_seeing -= user
|
||||
|
||||
/obj/item/weapon/storage/proc/open(mob/user as mob)
|
||||
if (src.use_sound && !isobserver(user))
|
||||
playsound(src.loc, src.use_sound, 50, 1, -5)
|
||||
if (use_sound)
|
||||
playsound(src.loc, src.use_sound, 50, 0, -5)
|
||||
|
||||
orient2hud(user)
|
||||
if (user.s_active)
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 7 //enough to hold all starting contents
|
||||
origin_tech = list(TECH_COMBAT = 1)
|
||||
attack_verb = list("robusted")
|
||||
use_sound = 'sound/items/storage/toolbox.ogg'
|
||||
drop_sound = 'sound/items/drop/metalboots.ogg'
|
||||
|
||||
/obj/item/weapon/storage/toolbox/emergency
|
||||
name = "emergency toolbox"
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
icon_state = "retractor"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000)
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
|
||||
drop_sound = 'sound/items/drop/scrap.ogg'
|
||||
|
||||
/*
|
||||
* Hemostat
|
||||
@@ -41,6 +42,7 @@
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500)
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
|
||||
attack_verb = list("attacked", "pinched")
|
||||
drop_sound = 'sound/items/drop/scrap.ogg'
|
||||
|
||||
/*
|
||||
* Cautery
|
||||
@@ -52,6 +54,7 @@
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500)
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
|
||||
attack_verb = list("burnt")
|
||||
drop_sound = 'sound/items/drop/scrap.ogg'
|
||||
|
||||
/*
|
||||
* Surgical Drill
|
||||
@@ -66,6 +69,7 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
|
||||
attack_verb = list("drilled")
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
|
||||
suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
@@ -91,6 +95,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000)
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
drop_sound = 'sound/items/drop/knife.ogg'
|
||||
|
||||
suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
@@ -145,6 +150,7 @@
|
||||
desc = "For heavy duty cutting."
|
||||
icon_state = "saw3"
|
||||
hitsound = 'sound/weapons/circsawhit.ogg'
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
force = 15.0
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
throwforce = 9.0
|
||||
@@ -176,6 +182,7 @@
|
||||
icon_state = "bone-gel"
|
||||
force = 0
|
||||
throwforce = 1.0
|
||||
drop_sound = 'sound/items/drop/bottle.ogg'
|
||||
|
||||
/obj/item/weapon/surgical/FixOVein
|
||||
name = "FixOVein"
|
||||
@@ -185,6 +192,7 @@
|
||||
throwforce = 1.0
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 3)
|
||||
var/usage_amount = 10
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
|
||||
/obj/item/weapon/surgical/bonesetter
|
||||
name = "bone setter"
|
||||
@@ -195,6 +203,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
attack_verb = list("attacked", "hit", "bludgeoned")
|
||||
drop_sound = 'sound/items/drop/scrap.ogg'
|
||||
|
||||
/obj/item/weapon/surgical/bone_clamp
|
||||
name = "bone clamp"
|
||||
|
||||
@@ -8,6 +8,17 @@
|
||||
/*
|
||||
* Classic Baton
|
||||
*/
|
||||
|
||||
/obj/item/weapon/melee
|
||||
name = "weapon"
|
||||
desc = "Murder device."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "baton"
|
||||
item_state = "classic_baton"
|
||||
slot_flags = SLOT_BELT
|
||||
force = 10
|
||||
drop_sound = 'sound/items/drop/metalweapon.ogg'
|
||||
|
||||
/obj/item/weapon/melee/classic_baton
|
||||
name = "police baton"
|
||||
desc = "A wooden truncheon for beating criminal scum."
|
||||
|
||||
@@ -10,6 +10,7 @@ var/list/global/tank_gauge_cache = list()
|
||||
sprite_sheets = list(
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/back.dmi'
|
||||
)
|
||||
drop_sound = 'sound/items/drop/gascan.ogg'
|
||||
|
||||
var/gauge_icon = "indicator_tank"
|
||||
var/last_gauge_pressure
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "taperoll"
|
||||
w_class = ITEMSIZE_TINY
|
||||
drop_sound = 'sound/items/drop/box.ogg'
|
||||
|
||||
toolspeed = 2 //It is now used in surgery as a not awful, but probably dangerous option, due to speed.
|
||||
|
||||
@@ -141,6 +142,7 @@
|
||||
w_class = ITEMSIZE_TINY
|
||||
plane = MOB_PLANE
|
||||
anchored = FALSE
|
||||
drop_sound = null
|
||||
|
||||
var/obj/item/weapon/stuck = null
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50)
|
||||
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
|
||||
usesound = 'sound/items/crowbar.ogg'
|
||||
drop_sound = 'sound/items/drop/sword.ogg'
|
||||
toolspeed = 1
|
||||
|
||||
/obj/item/weapon/tool/crowbar/is_crowbar()
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
throw_range = 5
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
usesound = 'sound/items/screwdriver.ogg'
|
||||
drop_sound = 'sound/items/drop/scrap.ogg'
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 75)
|
||||
attack_verb = list("stabbed")
|
||||
sharp = 1
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
|
||||
var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
|
||||
toolspeed = 1
|
||||
drop_sound = 'sound/items/drop/scrap.ogg'
|
||||
|
||||
/obj/item/weapon/weldingtool/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
attack_verb = list("pinched", "nipped")
|
||||
hitsound = 'sound/items/wirecutter.ogg'
|
||||
usesound = 'sound/items/wirecutter.ogg'
|
||||
drop_sound = 'sound/items/drop/knife.ogg'
|
||||
sharp = 1
|
||||
edge = 1
|
||||
toolspeed = 1
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
|
||||
usesound = 'sound/items/ratchet.ogg'
|
||||
toolspeed = 1
|
||||
drop_sound = 'sound/items/drop/sword.ogg'
|
||||
|
||||
/obj/item/weapon/tool/wrench/is_wrench()
|
||||
return TRUE
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
attack_verb = list("whipped")
|
||||
hitsound = 'sound/weapons/towelwhip.ogg'
|
||||
desc = "A soft cotton towel."
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
|
||||
/obj/item/weapon/towel/attack_self(mob/living/user as mob)
|
||||
user.visible_message(text("<span class='notice'>[] uses [] to towel themselves off.</span>", user, src))
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 3000)
|
||||
var/list/carrying = list() // List of things on the tray. - Doohl
|
||||
var/max_carry = 10
|
||||
drop_sound = 'sound/items/trayhit1.ogg'
|
||||
|
||||
/obj/item/weapon/tray/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
user.setClickCooldown(user.get_attack_speed(src))
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
throw_range = 4
|
||||
throwforce = 10
|
||||
w_class = ITEMSIZE_SMALL
|
||||
drop_sound = 'sound/items/drop/sword.ogg'
|
||||
|
||||
suicide_act(mob/user)
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
var/obj/item/weapon/nozzle = null //Attached welder, or other spray device.
|
||||
var/nozzle_type = /obj/item/weapon/weldingtool/tubefed
|
||||
var/nozzle_attached = 0
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
|
||||
/obj/item/weapon/weldpack/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -16,6 +16,7 @@ LINEN BINS
|
||||
throw_speed = 1
|
||||
throw_range = 2
|
||||
w_class = ITEMSIZE_SMALL
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
|
||||
/obj/item/weapon/bedsheet/attack_self(mob/user as mob)
|
||||
user.drop_item()
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "A folded membrane which rapidly expands into a large cubical shape on activation."
|
||||
icon = 'icons/obj/inflatable.dmi'
|
||||
icon_state = "folded_wall"
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
var/deploy_path = /obj/structure/inflatable
|
||||
|
||||
|
||||
@@ -288,6 +288,7 @@
|
||||
|
||||
/obj/structure/bed/roller/Move()
|
||||
..()
|
||||
playsound(src, 'sound/effects/roll.ogg', 100, 1)
|
||||
if(has_buckled_mobs())
|
||||
for(var/A in buckled_mobs)
|
||||
var/mob/living/L = A
|
||||
|
||||
@@ -143,6 +143,7 @@
|
||||
|
||||
/obj/structure/bed/chair/office/Move()
|
||||
..()
|
||||
playsound(src, 'sound/effects/roll.ogg', 100, 1)
|
||||
if(has_buckled_mobs())
|
||||
for(var/A in buckled_mobs)
|
||||
var/mob/living/occupant = A
|
||||
|
||||
@@ -93,6 +93,8 @@
|
||||
|
||||
/obj/structure/bed/chair/wheelchair/Move()
|
||||
..()
|
||||
cut_overlays()
|
||||
playsound(src, 'sound/effects/roll.ogg', 75, 1)
|
||||
if(has_buckled_mobs())
|
||||
for(var/A in buckled_mobs)
|
||||
var/mob/living/occupant = A
|
||||
|
||||
@@ -384,6 +384,7 @@
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>You start washing your hands.</span>")
|
||||
playsound(loc, 'sound/effects/sink_long.ogg', 75, 1)
|
||||
|
||||
busy = 1
|
||||
sleep(40)
|
||||
@@ -406,6 +407,7 @@
|
||||
if (istype(RG) && RG.is_open_container())
|
||||
RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this))
|
||||
user.visible_message("<span class='notice'>[user] fills \the [RG] using \the [src].</span>","<span class='notice'>You fill \the [RG] using \the [src].</span>")
|
||||
playsound(loc, 'sound/effects/sink.ogg', 75, 1)
|
||||
return 1
|
||||
|
||||
else if (istype(O, /obj/item/weapon/melee/baton))
|
||||
|
||||
@@ -185,6 +185,12 @@
|
||||
'sound/weapons/effects/ric5.ogg')
|
||||
if("bullet_miss")
|
||||
soundin = pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg')
|
||||
if ("pickaxe")
|
||||
soundin = pick(
|
||||
'sound/weapons/mine/pickaxe1.ogg',
|
||||
'sound/weapons/mine/pickaxe2.ogg',
|
||||
'sound/weapons/mine/pickaxe3.ogg',
|
||||
'sound/weapons/mine/pickaxe4.ogg')
|
||||
return soundin
|
||||
|
||||
//Are these even used?
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
gravity_is_on = !gravity_is_on
|
||||
for(var/area/A in all_areas)
|
||||
A.gravitychange(gravity_is_on,A)
|
||||
A.gravitychange(gravity_is_on)
|
||||
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","Grav")
|
||||
|
||||
@@ -116,6 +116,12 @@ var/list/_client_preferences_by_type
|
||||
enabled_description = "Audible"
|
||||
disabled_description = "Silent"
|
||||
|
||||
/datum/client_preference/drop_sounds
|
||||
description = "Dropped Item Sounds"
|
||||
key = "SOUND_DROPPED"
|
||||
enabled_description = "Enabled"
|
||||
disabled_description = "Disabled"
|
||||
|
||||
/datum/client_preference/mob_tooltips
|
||||
description ="Mob tooltips"
|
||||
key = "MOB_TOOLTIPS"
|
||||
|
||||
@@ -54,23 +54,56 @@
|
||||
if(alt_title && !(alt_title in job.alt_titles))
|
||||
pref.player_alt_titles -= job.title
|
||||
|
||||
/datum/category_item/player_setup_item/occupation/content(mob/user, limit = 18, list/splitJobs = list("Chief Engineer"))
|
||||
/datum/category_item/player_setup_item/occupation/content(mob/user, limit = 20, list/splitJobs = list())
|
||||
if(!job_master)
|
||||
return
|
||||
|
||||
. = list()
|
||||
. += "<tt><center>"
|
||||
. += "<b>Choose occupation chances</b><br>Unavailable occupations are crossed out.<br>"
|
||||
. += "<table width='100%' cellpadding='1' cellspacing='0'><tr><td width='20%'>" // Table within a table for alignment, also allows you to easily add more columns.
|
||||
. += "<table width='100%' cellpadding='1' cellspacing='0'><tr><td width='20%' valign='top'>" // Table within a table for alignment, also allows you to easily add more columns.
|
||||
. += "<table width='100%' cellpadding='1' cellspacing='0'>"
|
||||
var/index = -1
|
||||
|
||||
//The job before the current job. I only use this to get the previous jobs color when I'm filling in blank rows.
|
||||
var/datum/job/lastJob
|
||||
if (!job_master) return
|
||||
for(var/datum/job/job in job_master.occupations)
|
||||
var/datum/department/last_department = null // Used to avoid repeating the look-ahead check for if a whole department can fit.
|
||||
|
||||
if((++index >= limit) || (job.title in splitJobs))
|
||||
var/list/all_valid_jobs = list()
|
||||
// If the occupation window gets opened before SSJob initializes, then it'll just be blank, with no runtimes.
|
||||
// It will work once init is finished.
|
||||
|
||||
for(var/D in SSjob.department_datums)
|
||||
var/datum/department/department = SSjob.department_datums[D]
|
||||
if(department.centcom_only) // No joining as a centcom role, if any are ever added.
|
||||
continue
|
||||
|
||||
for(var/J in department.primary_jobs)
|
||||
all_valid_jobs += department.jobs[J]
|
||||
|
||||
for(var/datum/job/job in all_valid_jobs)
|
||||
var/datum/department/current_department = SSjob.get_primary_department_of_job(job)
|
||||
|
||||
// Should we add a new column?
|
||||
var/make_new_column = FALSE
|
||||
if(++index > limit)
|
||||
// Ran out of rows, make a new column.
|
||||
make_new_column = TRUE
|
||||
|
||||
else if(job.title in splitJobs)
|
||||
// Is hardcoded to split at this job title.
|
||||
make_new_column = TRUE
|
||||
|
||||
else if(current_department != last_department)
|
||||
// If the department is bigger than the limit then we have to split.
|
||||
if(limit >= current_department.primary_jobs.len)
|
||||
// Look ahead to see if we would need to split, and if so, avoid it.
|
||||
if(index + current_department.primary_jobs.len > limit)
|
||||
// Looked ahead, and determined that a new column is needed to avoid splitting the department into two.
|
||||
make_new_column = TRUE
|
||||
|
||||
|
||||
if(make_new_column)
|
||||
/*******
|
||||
if((index < limit) && (lastJob != null))
|
||||
//If the cells were broken up by a job in the splitJob list then it will fill in the rest of the cells with
|
||||
@@ -78,8 +111,9 @@
|
||||
for(var/i = 0, i < (limit - index), i++)
|
||||
. += "<tr bgcolor='[lastJob.selection_color]'><td width='60%' align='right'>//> </a></td><td><a> </a></td></tr>"
|
||||
*******/
|
||||
. += "</table></td><td width='20%'><table width='100%' cellpadding='1' cellspacing='0'>"
|
||||
. += "</table></td><td width='20%' valign='top'><table width='100%' cellpadding='1' cellspacing='0'>"
|
||||
index = 0
|
||||
last_department = current_department
|
||||
|
||||
. += "<tr bgcolor='[job.selection_color]'><td width='60%' align='right'>"
|
||||
|
||||
|
||||
@@ -239,6 +239,21 @@
|
||||
|
||||
feedback_add_details("admin_verb","TAirPumpNoise")
|
||||
|
||||
/client/verb/toggle_drop_sounds()
|
||||
set name = "Toggle Dropped Item Sounds"
|
||||
set category = "Preferences"
|
||||
set desc = "Toggles sounds when items are dropped or thrown."
|
||||
|
||||
var/pref_path = /datum/client_preference/drop_sounds
|
||||
|
||||
toggle_preference(pref_path)
|
||||
|
||||
to_chat(src, "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear sounds when items are dropped or thrown.")
|
||||
|
||||
SScharacter_setup.queue_preferences_save(prefs)
|
||||
|
||||
feedback_add_details("admin_verb", "TDropSounds")
|
||||
|
||||
/client/verb/toggle_safe_firing()
|
||||
set name = "Toggle Gun Firing Intent Requirement"
|
||||
set category = "Preferences"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/item/clothing
|
||||
name = "clothing"
|
||||
siemens_coefficient = 0.9
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
var/list/species_restricted = null //Only these species can wear this kit.
|
||||
var/gunshot_residue //Used by forensics.
|
||||
|
||||
@@ -530,6 +531,7 @@
|
||||
|
||||
if(usr.put_in_hands(holding))
|
||||
usr.visible_message("<span class='danger'>\The [usr] pulls a knife out of their boot!</span>")
|
||||
playsound(get_turf(src), 'sound/weapons/holster/sheathout.ogg', 25)
|
||||
holding = null
|
||||
overlays -= image(icon, "[icon_state]_knife")
|
||||
else
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
desc = "A delicate golden chain worn by female skrell to decorate their head tails."
|
||||
icon_state = "skrell_chain"
|
||||
item_state_slots = list(slot_r_hand_str = "egg5", slot_l_hand_str = "egg5")
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
|
||||
/obj/item/clothing/ears/skrell/chain/silver
|
||||
name = "Silver headtail chains"
|
||||
@@ -83,6 +84,7 @@
|
||||
desc = "Golden metallic bands worn by male skrell to adorn their head tails."
|
||||
icon_state = "skrell_band"
|
||||
item_state_slots = list(slot_r_hand_str = "egg5", slot_l_hand_str = "egg5")
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
|
||||
/obj/item/clothing/ears/skrell/band/silver
|
||||
name = "Silver headtail bands"
|
||||
|
||||
@@ -27,6 +27,7 @@ BLIND // can't see anything
|
||||
var/activation_sound = 'sound/items/goggles_charge.ogg'
|
||||
var/obj/screen/overlay = null
|
||||
var/list/away_planes //Holder for disabled planes
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/eyes.dmi',
|
||||
@@ -159,6 +160,7 @@ BLIND // can't see anything
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
body_parts_covered = 0
|
||||
var/eye = null
|
||||
drop_sound = 'sound/items/drop/gloves.ogg'
|
||||
|
||||
/obj/item/clothing/glasses/eyepatch/verb/switcheye()
|
||||
set name = "Switch Eyepatch"
|
||||
@@ -340,6 +342,7 @@ BLIND // can't see anything
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
flash_protection = FLASH_PROTECTION_MAJOR
|
||||
tint = BLIND
|
||||
drop_sound = 'sound/items/drop/gloves.ogg'
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold/tape
|
||||
name = "length of tape"
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
overgloves = 1
|
||||
punch_force = 3
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
drop_sound = 'sound/items/drop/metalshield.ogg'
|
||||
|
||||
/obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
|
||||
@@ -1,9 +1,17 @@
|
||||
/obj/item/clothing/gloves
|
||||
desc = "you aren't supposed to see this."
|
||||
name = "strange gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
drop_sound = 'sound/items/drop/gloves.ogg'
|
||||
|
||||
/obj/item/clothing/gloves/yellow
|
||||
desc = "These gloves will protect the wearer from electric shock."
|
||||
name = "insulated gloves"
|
||||
icon_state = "yellow"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
/obj/item/clothing/gloves/fyellow //Cheap Chinese Crap
|
||||
desc = "These gloves are cheap copies of proper insulated gloves. No way this can end badly."
|
||||
@@ -11,6 +19,7 @@
|
||||
icon_state = "yellow"
|
||||
siemens_coefficient = 1 //Set to a default of 1, gets overridden in initialize()
|
||||
permeability_coefficient = 0.05
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
/obj/item/clothing/gloves/fyellow/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
permeability_coefficient = 0.01
|
||||
germ_level = 0
|
||||
fingerprint_chance = 25
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
// var/balloonPath = /obj/item/latexballon
|
||||
|
||||
//TODO: Make inflating gloves a thing
|
||||
@@ -81,6 +82,7 @@
|
||||
item_state_slots = list(slot_r_hand_str = "lightbrown", slot_l_hand_str = "lightbrown")
|
||||
permeability_coefficient = 0.05
|
||||
siemens_coefficient = 0.75 //thick work gloves
|
||||
drop_sound = 'sound/items/drop/leather.ogg'
|
||||
|
||||
/obj/item/clothing/gloves/duty
|
||||
desc = "These brown duty gloves are made from a durable synthetic."
|
||||
@@ -109,6 +111,7 @@
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
species_restricted = list("Vox")
|
||||
drop_sound = 'sound/items/drop/metalboots.ogg'
|
||||
|
||||
cold_protection = HANDS
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
@@ -127,6 +130,7 @@
|
||||
overgloves = 1
|
||||
force = 5
|
||||
punch_force = 5
|
||||
drop_sound = 'sound/items/drop/metalboots.ogg'
|
||||
|
||||
/obj/item/clothing/gloves/ranger
|
||||
var/glovecolor = "white"
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
|
||||
//Hat Station 13
|
||||
|
||||
/obj/item/clothing/head/
|
||||
name = "hat"
|
||||
desc = "Apply on head."
|
||||
drop_sound = 'sound/items/drop/hat.ogg'
|
||||
|
||||
/obj/item/clothing/head/collectable
|
||||
name = "collectable hat"
|
||||
desc = "A rare collectable hat."
|
||||
@@ -37,6 +42,7 @@
|
||||
desc = "What looks like an ordinary paper hat, is actually a rare and valuable collector's edition paper hat. Keep away from water, fire and Librarians."
|
||||
icon_state = "paper"
|
||||
body_parts_covered = 0
|
||||
drop_sound = 'sound/items/drop/paper.ogg'
|
||||
|
||||
/obj/item/clothing/head/collectable/tophat
|
||||
name = "collectable top hat"
|
||||
|
||||
@@ -36,21 +36,25 @@
|
||||
desc = "A flower crown weaved with sunflowers."
|
||||
icon_state = "sunflower_crown"
|
||||
body_parts_covered = 0
|
||||
drop_sound = 'sound/items/drop/herb.ogg'
|
||||
|
||||
/obj/item/clothing/head/lavender_crown
|
||||
name = "lavender crown"
|
||||
desc = "A flower crown weaved with lavender."
|
||||
icon_state = "lavender_crown"
|
||||
body_parts_covered = 0
|
||||
drop_sound = 'sound/items/drop/herb.ogg'
|
||||
|
||||
/obj/item/clothing/head/poppy_crown
|
||||
name = "poppy crown"
|
||||
desc = "A flower crown weaved with poppies."
|
||||
icon_state = "poppy_crown"
|
||||
body_parts_covered = 0
|
||||
drop_sound = 'sound/items/drop/herb.ogg'
|
||||
|
||||
/obj/item/clothing/head/rose_crown
|
||||
name = "rose crown"
|
||||
desc = "A flower crown weaved with roses."
|
||||
icon_state = "poppy_crown"
|
||||
body_parts_covered = 0
|
||||
drop_sound = 'sound/items/drop/herb.ogg'
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
action_button_name = "Toggle Head-light"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
ear_protection = 1
|
||||
drop_sound = 'sound/items/drop/helm.ogg'
|
||||
|
||||
/obj/item/clothing/head/hardhat/orange
|
||||
icon_state = "hardhat0_orange"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
siemens_coefficient = 0.7
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
ear_protection = 1
|
||||
drop_sound = 'sound/items/drop/helm.ogg'
|
||||
|
||||
/obj/item/clothing/head/helmet/solgov
|
||||
name = "\improper Solar Confederate Government helmet"
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
desc = "A nice hair pin."
|
||||
slot_flags = SLOT_HEAD | SLOT_EARS
|
||||
body_parts_covered = 0
|
||||
drop_sound = 'sound/items/drop/ring.ogg'
|
||||
|
||||
/obj/item/clothing/head/pin/pink
|
||||
icon_state = "pinkpin"
|
||||
@@ -168,6 +169,7 @@
|
||||
icon_state = "cardborg_h"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
drop_sound = 'sound/items/drop/box.ogg'
|
||||
|
||||
/obj/item/clothing/head/justice
|
||||
name = "justice hat"
|
||||
@@ -420,6 +422,7 @@
|
||||
desc = "A jeweled headpiece originating in India."
|
||||
icon_state = "maangtikka"
|
||||
body_parts_covered = 0
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
|
||||
/obj/item/clothing/head/jingasa
|
||||
name = "jingasa"
|
||||
@@ -427,7 +430,7 @@
|
||||
icon_state = "jingasa"
|
||||
body_parts_covered = 0
|
||||
item_state_slots = list(slot_r_hand_str = "taq", slot_l_hand_str = "taq")
|
||||
|
||||
|
||||
/obj/item/clothing/head/cowl
|
||||
name = "black cowl"
|
||||
desc = "A gold-lined black cowl. It gives off uncomfortable cult vibes, but fancy."
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
var/base_state
|
||||
flash_protection = FLASH_PROTECTION_MAJOR
|
||||
tint = TINT_HEAVY
|
||||
drop_sound = 'sound/items/drop/helm.ogg'
|
||||
|
||||
/obj/item/clothing/head/welding/attack_self()
|
||||
toggle()
|
||||
@@ -167,6 +168,7 @@
|
||||
brightness_on = 2
|
||||
light_overlay = "helmet_light"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
drop_sound = 'sound/items/drop/herb.ogg'
|
||||
|
||||
/*
|
||||
* Kitty ears
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
//Generic Ring
|
||||
|
||||
/obj/item/clothing/ring
|
||||
name = "generic ring"
|
||||
desc = "Torus shaped finger decoration."
|
||||
icon_state = "material"
|
||||
drop_sound = 'sound/items/drop/ring.ogg'
|
||||
|
||||
/////////////////////////////////////////
|
||||
//Standard Rings
|
||||
/obj/item/clothing/gloves/ring/engagement
|
||||
|
||||
@@ -5,11 +5,13 @@
|
||||
force = 3
|
||||
can_hold_knife = 1
|
||||
step_volume_mod = 1.2
|
||||
drop_sound = 'sound/items/drop/boots.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/boots/cowboy
|
||||
name = "cowboy boots"
|
||||
desc = "Lacking a durasteel horse to ride."
|
||||
icon_state = "cowboy"
|
||||
drop_sound = 'sound/items/drop/leather.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/boots/cowboy/classic
|
||||
name = "classic cowboy boots"
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
/obj/item/clothing/shoes
|
||||
name = "shoes"
|
||||
icon_state = "white"
|
||||
desc = "A pair of shoes."
|
||||
drop_sound = 'sound/items/drop/shoes.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/black
|
||||
name = "black shoes"
|
||||
icon_state = "black"
|
||||
@@ -38,6 +44,7 @@
|
||||
name = "leather shoes"
|
||||
desc = "A sturdy pair of leather shoes."
|
||||
icon_state = "leather"
|
||||
drop_sound = 'sound/items/drop/leather.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/rainbow
|
||||
name = "rainbow shoes"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
step_volume_mod = 1.3
|
||||
can_hold_knife = TRUE
|
||||
drop_sound = 'sound/items/drop/boots.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/leg_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
var/obj/item/clothing/shoes/shoes = null //Undershoes
|
||||
var/mob/living/carbon/human/wearer = null //For shoe procs
|
||||
step_volume_mod = 1.3
|
||||
drop_sound = 'sound/items/drop/metalboots.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/magboots/proc/set_slowdown()
|
||||
slowdown = shoes? max(SHOES_SLOWDOWN, shoes.slowdown): SHOES_SLOWDOWN //So you can't put on magboots to make you walk faster.
|
||||
@@ -36,6 +37,7 @@
|
||||
set_slowdown()
|
||||
force = 5
|
||||
if(icon_base) icon_state = "[icon_base]1"
|
||||
playsound(get_turf(src), 'sound/effects/magnetclamp.ogg', 20)
|
||||
to_chat(user, "You enable the mag-pulse traction system.")
|
||||
user.update_inv_shoes() //so our mob-overlays update
|
||||
user.update_action_buttons()
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
item_flags = NOSLIP
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
species_restricted = null
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/dress
|
||||
name = "dress shoes"
|
||||
@@ -98,6 +99,7 @@
|
||||
force = 0
|
||||
species_restricted = null
|
||||
w_class = ITEMSIZE_SMALL
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/slippers_worn
|
||||
name = "worn bunny slippers"
|
||||
@@ -155,6 +157,7 @@
|
||||
force = 0
|
||||
w_class = ITEMSIZE_SMALL
|
||||
species_restricted = null
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/boots/ranger
|
||||
var/bootcolor = "white"
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
can_be_placed_into = null
|
||||
flags = OPENCONTAINER | NOBLUDGEON
|
||||
unacidable = 0
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
|
||||
var/on_fire = 0
|
||||
var/burn_time = 20 //if the rag burns for too long it turns to ashes
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
var/access = list()
|
||||
access = access_crate_cash
|
||||
var/worth = 0
|
||||
drop_sound = 'sound/items/drop/paper.ogg'
|
||||
|
||||
/obj/item/weapon/spacecash/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/spacecash))
|
||||
@@ -150,6 +151,7 @@ proc/spawn_money(var/sum, spawnloc, mob/living/carbon/human/human_user as mob)
|
||||
name = "charge card"
|
||||
icon_state = "efundcard"
|
||||
desc = "A card that holds an amount of money."
|
||||
drop_sound = 'sound/items/drop/card.ogg'
|
||||
var/owner_name = "" //So the ATM can set it so the EFTPOS can put a valid name on transactions.
|
||||
attack_self() return //Don't act
|
||||
attackby() return //like actual
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
gravity_is_on = 0
|
||||
for(var/area/A in all_areas)
|
||||
if(A.z in zLevels)
|
||||
A.gravitychange(gravity_is_on, A)
|
||||
A.gravitychange(gravity_is_on)
|
||||
|
||||
/datum/event/gravity/end()
|
||||
if(!gravity_is_on)
|
||||
@@ -25,6 +25,6 @@
|
||||
|
||||
for(var/area/A in all_areas)
|
||||
if(A.z in zLevels)
|
||||
A.gravitychange(gravity_is_on, A)
|
||||
A.gravitychange(gravity_is_on)
|
||||
|
||||
command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.", "Gravity Restored")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user