mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 04:57:12 +01:00
Merge Conflict Resolved
This commit is contained in:
@@ -42,6 +42,12 @@
|
||||
id_tag = num2text(uid)
|
||||
icon = null
|
||||
|
||||
/obj/machinery/atmospherics/binary/dp_vent_pump/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/dp_vent_pump/initialize()
|
||||
..()
|
||||
if(frequency)
|
||||
|
||||
@@ -21,6 +21,12 @@
|
||||
if(frequency)
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/update_icon()
|
||||
icon_state = "[on ? "on" : "off"]"
|
||||
|
||||
|
||||
@@ -28,6 +28,12 @@ Thus, the two variables affect pump operation are set in New():
|
||||
var/id = null
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/highcap
|
||||
name = "High capacity gas pump"
|
||||
desc = "A high capacity pump"
|
||||
|
||||
@@ -44,10 +44,10 @@
|
||||
update_icon()
|
||||
investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", "atmos")
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/attack_ai(mob/user)
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
@@ -60,7 +60,7 @@
|
||||
close()
|
||||
else
|
||||
open()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/digital // can be controlled by AI
|
||||
name = "digital valve"
|
||||
desc = "A digitally controlled valve."
|
||||
@@ -71,6 +71,12 @@
|
||||
var/datum/radio_frequency/radio_connection
|
||||
settagwhitelist = list("id_tag")
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/digital/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/digital/attack_ai(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
@@ -28,6 +28,12 @@ Thus, the two variables affect pump operation are set in New():
|
||||
var/id = null
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/on
|
||||
on = 1
|
||||
icon_state = "map_on"
|
||||
|
||||
@@ -22,6 +22,13 @@ Filter types:
|
||||
var/frequency = 0
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/flipped
|
||||
icon_state = "mmap"
|
||||
flipped = 1
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
name = "manual switching valve"
|
||||
desc = "A pipe valve"
|
||||
|
||||
|
||||
can_unwrench = 1
|
||||
|
||||
var/state = TVALVE_STATE_STRAIGHT
|
||||
@@ -15,16 +15,16 @@
|
||||
/obj/machinery/atmospherics/trinary/tvalve/bypass
|
||||
icon_state = "map_tvalve1"
|
||||
state = TVALVE_STATE_SIDE
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/flipped
|
||||
icon_state = "map_tvalvem0"
|
||||
flipped = 1
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/flipped/bypass
|
||||
icon_state = "map_tvalvem1"
|
||||
flipped = 1
|
||||
state = TVALVE_STATE_SIDE
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/update_icon(animation)
|
||||
var/flipstate = ""
|
||||
if(flipped)
|
||||
@@ -40,7 +40,7 @@
|
||||
var/turf/T = get_turf(src)
|
||||
if(!istype(T))
|
||||
return
|
||||
|
||||
|
||||
add_underlay(T, node1, turn(dir, -180))
|
||||
|
||||
if(flipped)
|
||||
@@ -49,7 +49,7 @@
|
||||
add_underlay(T, node2, turn(dir, -90))
|
||||
|
||||
add_underlay(T, node3, dir)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/proc/switch_side()
|
||||
if(state == TVALVE_STATE_STRAIGHT)
|
||||
go_to_side()
|
||||
@@ -57,7 +57,7 @@
|
||||
go_straight()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/proc/go_to_side()
|
||||
if(state == TVALVE_STATE_SIDE)
|
||||
if(state == TVALVE_STATE_SIDE)
|
||||
return 0
|
||||
|
||||
state = TVALVE_STATE_SIDE
|
||||
@@ -74,7 +74,7 @@
|
||||
/obj/machinery/atmospherics/trinary/tvalve/proc/go_straight()
|
||||
if(state == TVALVE_STATE_STRAIGHT)
|
||||
return 0
|
||||
|
||||
|
||||
state = TVALVE_STATE_STRAIGHT
|
||||
update_icon()
|
||||
|
||||
@@ -82,13 +82,13 @@
|
||||
parent2.update = 0
|
||||
parent3.update = 0
|
||||
parent1.reconcile_air()
|
||||
|
||||
|
||||
investigate_log("was set to straight by [usr ? key_name(usr) : "a remote signal"]", "atmos")
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/attack_ai(mob/user)
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
@@ -108,14 +108,20 @@
|
||||
var/id = null
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/digital/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/digital/bypass
|
||||
icon_state = "map_tvalve1"
|
||||
state = TVALVE_STATE_SIDE
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/digital/flipped
|
||||
icon_state = "map_tvalvem0"
|
||||
flipped = 1
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/tvalve/digital/flipped/bypass
|
||||
icon_state = "map_tvalvem1"
|
||||
flipped = 1
|
||||
|
||||
@@ -31,6 +31,12 @@
|
||||
if(id && !id_tag)//I'm not dealing with any more merge conflicts
|
||||
id_tag = id
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/update_icon()
|
||||
if(!powered())
|
||||
icon_state = "off"
|
||||
|
||||
@@ -433,4 +433,7 @@
|
||||
if(initial_loc)
|
||||
initial_loc.air_vent_info -= id_tag
|
||||
initial_loc.air_vent_names -= id_tag
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
@@ -53,6 +53,9 @@
|
||||
if(initial_loc && frequency == 1439)
|
||||
initial_loc.air_scrub_info -= id_tag
|
||||
initial_loc.air_scrub_names -= id_tag
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/examine(mob/user)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#define QDEL_HINT_HARDDEL_NOW 4 //qdel should assume this object won't gc, and hard del it post haste.
|
||||
#define QDEL_HINT_FINDREFERENCE 5 //functionally identical to QDEL_HINT_QUEUE if TESTING is not enabled in _compiler_options.dm.
|
||||
//if TESTING is enabled, qdel will call this object's find_references() verb.
|
||||
#define QDEL_HINT_IFFAIL_FINDREFERENCE 6 //Above but only if gc fails.
|
||||
//defines for the gc_destroyed var
|
||||
|
||||
#define GC_QUEUE_PREQUEUE 1
|
||||
|
||||
@@ -25,6 +25,10 @@ SUBSYSTEM_DEF(garbage)
|
||||
//Queue
|
||||
var/list/queues
|
||||
|
||||
#ifdef TESTING
|
||||
var/list/reference_find_on_fail = list()
|
||||
#endif
|
||||
|
||||
|
||||
/datum/controller/subsystem/garbage/PreInit()
|
||||
queues = new(GC_QUEUE_COUNT)
|
||||
@@ -154,6 +158,9 @@ SUBSYSTEM_DEF(garbage)
|
||||
++gcedlasttick
|
||||
++totalgcs
|
||||
pass_counts[level]++
|
||||
#ifdef TESTING
|
||||
reference_find_on_fail -= refID //It's deleted we don't care anymore.
|
||||
#endif
|
||||
if(MC_TICK_CHECK)
|
||||
break
|
||||
continue
|
||||
@@ -162,8 +169,14 @@ SUBSYSTEM_DEF(garbage)
|
||||
fail_counts[level]++
|
||||
switch(level)
|
||||
if(GC_QUEUE_CHECK)
|
||||
#ifdef TESTING
|
||||
if(reference_find_on_fail[refID])
|
||||
D.find_references()
|
||||
#ifdef GC_FAILURE_HARD_LOOKUP
|
||||
D.find_references()
|
||||
else
|
||||
D.find_references()
|
||||
#endif
|
||||
reference_find_on_fail -= refID
|
||||
#endif
|
||||
var/type = D.type
|
||||
var/datum/qdel_item/I = items[type]
|
||||
@@ -263,6 +276,11 @@ SUBSYSTEM_DEF(garbage)
|
||||
/datum/qdel_item/New(mytype)
|
||||
name = "[mytype]"
|
||||
|
||||
#ifdef TESTING
|
||||
/proc/qdel_and_find_ref_if_fail(datum/D, force = FALSE)
|
||||
SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE
|
||||
qdel(D, force)
|
||||
#endif
|
||||
|
||||
// Should be treated as a replacement for the 'del' keyword.
|
||||
// Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
|
||||
@@ -319,6 +337,11 @@ SUBSYSTEM_DEF(garbage)
|
||||
#ifdef TESTING
|
||||
D.find_references()
|
||||
#endif
|
||||
if(QDEL_HINT_IFFAIL_FINDREFERENCE)
|
||||
SSgarbage.PreQueue(D)
|
||||
#ifdef TESTING
|
||||
SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE
|
||||
#endif
|
||||
else
|
||||
#ifdef TESTING
|
||||
if(!I.no_hint)
|
||||
@@ -388,10 +411,17 @@ SUBSYSTEM_DEF(garbage)
|
||||
set name = "qdel() then Find References"
|
||||
set src in world
|
||||
|
||||
qdel(src)
|
||||
qdel(src, TRUE) //Force.
|
||||
if(!running_find_references)
|
||||
find_references(TRUE)
|
||||
|
||||
/datum/verb/qdel_then_if_fail_find_references()
|
||||
set category = "Debug"
|
||||
set name = "qdel() then Find References if GC failure"
|
||||
set src in world
|
||||
|
||||
qdel_and_find_ref_if_fail(src, TRUE)
|
||||
|
||||
/datum/proc/DoSearchVar(X, Xname, recursive_limit = 64)
|
||||
if(usr && usr.client && !usr.client.running_find_references)
|
||||
return
|
||||
|
||||
+136
-131
@@ -468,137 +468,142 @@ var/record_id_num = 1001
|
||||
|
||||
|
||||
var/icon/clothes_s = null
|
||||
switch(H.mind.assigned_role)
|
||||
if("Head of Personnel")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
if("Nanotrasen Representative")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
|
||||
if("Blueshield")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "blueshield"), ICON_OVERLAY)
|
||||
if("Magistrate")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "really_black_suit_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "judge"), ICON_OVERLAY)
|
||||
if("Bartender")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Botanist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Chef")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Janitor")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Librarian")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Quartermaster")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
if("Cargo Technician")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "cargotech_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Shaft Miner")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Lawyer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "internalaffairs_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
if("Chaplain")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Research Director")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "director_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
if("Scientist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
|
||||
if("Chemist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY)
|
||||
if("Chief Medical Officer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY)
|
||||
if("Medical Doctor")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
if("Geneticist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY)
|
||||
if("Virologist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
|
||||
if("Psychiatrist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "psych_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_UNDERLAY)
|
||||
if("Paramedic")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "paramedic_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Captain")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
if("Head of Security")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
if("Warden")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
if("Detective")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY)
|
||||
if("Security Pod Pilot")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "bomber"), ICON_OVERLAY)
|
||||
if("Brig Physician")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "fr_jacket_open"), ICON_OVERLAY)
|
||||
if("Security Officer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
if("Chief Engineer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
||||
if("Station Engineer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
||||
if("Life Support Specialist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
||||
if("Mechanic")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "mechanic_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
||||
if("Roboticist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
else if(H.mind.assigned_role in get_all_centcom_jobs())
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
|
||||
else
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if(H.mind)
|
||||
switch(H.mind.assigned_role)
|
||||
if("Head of Personnel")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
if("Nanotrasen Representative")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
|
||||
if("Blueshield")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "blueshield"), ICON_OVERLAY)
|
||||
if("Magistrate")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "really_black_suit_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "judge"), ICON_OVERLAY)
|
||||
if("Bartender")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Botanist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Chef")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Janitor")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Librarian")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Quartermaster")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
if("Cargo Technician")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "cargotech_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Shaft Miner")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Lawyer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "internalaffairs_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
if("Chaplain")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Research Director")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "director_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
if("Scientist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
|
||||
if("Chemist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY)
|
||||
if("Chief Medical Officer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY)
|
||||
if("Medical Doctor")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
if("Geneticist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY)
|
||||
if("Virologist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
|
||||
if("Psychiatrist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "psych_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_UNDERLAY)
|
||||
if("Paramedic")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "paramedic_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
if("Captain")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
if("Head of Security")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
if("Warden")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
if("Detective")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY)
|
||||
if("Security Pod Pilot")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "bomber"), ICON_OVERLAY)
|
||||
if("Brig Physician")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "fr_jacket_open"), ICON_OVERLAY)
|
||||
if("Security Officer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
if("Chief Engineer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
||||
if("Station Engineer")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
||||
if("Life Support Specialist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
||||
if("Mechanic")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "mechanic_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
|
||||
if("Roboticist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
else if(H.mind.assigned_role in get_all_centcom_jobs())
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
|
||||
else
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
else
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
|
||||
|
||||
preview_icon.Blend(face_s, ICON_OVERLAY) // Why do we do this twice
|
||||
if(clothes_s)
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
var/pda = null
|
||||
var/internals_slot = null //ID of slot containing a gas tank
|
||||
var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format
|
||||
var/list/implants = null
|
||||
var/list/cybernetic_implants = null
|
||||
|
||||
|
||||
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
@@ -89,6 +91,13 @@
|
||||
var/number = backpack_contents[path]
|
||||
for(var/i = 0, i < number, i++)
|
||||
equip_item(H, path, slot_in_backpack)
|
||||
if(implants)
|
||||
for(var/path in implants)
|
||||
var/obj/item/weapon/implant/I = new path(H)
|
||||
I.implant(H)
|
||||
for(var/path in cybernetic_implants)
|
||||
var/obj/item/organ/internal/O = new path(H)
|
||||
O.insert(H)
|
||||
|
||||
post_equip(H, visualsOnly)
|
||||
|
||||
|
||||
+132
-144
@@ -1,6 +1,13 @@
|
||||
// Used for 'select equipment'
|
||||
// code/modules/admin/verbs/debug.dm 566
|
||||
|
||||
/datum/outfit/admin/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(!visualsOnly)
|
||||
H.mind.assigned_role = name
|
||||
H.job = name
|
||||
|
||||
|
||||
/proc/apply_to_card(obj/item/weapon/card/id/I, mob/living/carbon/human/H, list/access = list(), rank, special_icon)
|
||||
if(!istype(I) || !istype(H))
|
||||
return 0
|
||||
@@ -95,6 +102,7 @@
|
||||
mask = /obj/item/clothing/mask/gas/syndicate
|
||||
l_ear = /obj/item/device/radio/headset/syndicate/alt
|
||||
glasses = /obj/item/clothing/glasses/night
|
||||
shoes = /obj/item/clothing/shoes/magboots/syndie
|
||||
l_pocket = /obj/item/weapon/pinpointer/advpinpointer
|
||||
l_hand = /obj/item/weapon/tank/jetpack/oxygen/harness
|
||||
|
||||
@@ -107,6 +115,7 @@
|
||||
/obj/item/weapon/grenade/plastic/c4 = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1,
|
||||
/obj/item/device/flashlight = 1,
|
||||
/obj/item/clothing/shoes/combat = 1
|
||||
)
|
||||
|
||||
/datum/outfit/admin/syndicate/operative/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
@@ -131,15 +140,21 @@
|
||||
/datum/outfit/admin/syndicate/officer
|
||||
name = "Syndicate Officer"
|
||||
|
||||
head = /obj/item/clothing/head/beret
|
||||
mask = /obj/item/clothing/mask/cigarette/cigar/havana
|
||||
belt = /obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo
|
||||
l_ear = /obj/item/device/radio/headset/syndicate/alt
|
||||
l_pocket = /obj/item/weapon/pinpointer/advpinpointer
|
||||
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/engineer = 1,
|
||||
/obj/item/device/flashlight = 1,
|
||||
/obj/item/weapon/reagent_containers/food/pill/initropidril = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1,
|
||||
/obj/item/ammo_box/magazine/m50 = 2)
|
||||
/obj/item/ammo_box/magazine/m50 = 2,
|
||||
/obj/item/clothing/shoes/magboots/syndie/advance = 1,
|
||||
/obj/item/weapon/lighter/zippo/gonzofist = 1
|
||||
)
|
||||
|
||||
id_icon = "commander"
|
||||
id_access = "Syndicate Operative Leader"
|
||||
@@ -152,22 +167,11 @@
|
||||
|
||||
var/obj/item/weapon/implant/uplink/U = new /obj/item/weapon/implant/uplink(H)
|
||||
U.implant(H)
|
||||
U.hidden_uplink.uses = 500//a measly 1000 TC along with the uplink in the pocket
|
||||
U.hidden_uplink.uses = 500
|
||||
|
||||
var/obj/item/weapon/implant/dust/D = new(H)
|
||||
D.implant(H)
|
||||
|
||||
/datum/outfit/admin/syndicate/bomber
|
||||
name = "Syndicate Bomber"
|
||||
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/engineer = 1,
|
||||
/obj/item/device/flashlight = 1,
|
||||
/obj/item/weapon/card/emag = 1,
|
||||
/obj/item/device/radio/beacon/syndicate/bomb = 2,
|
||||
/obj/item/device/syndicatedetonator = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1
|
||||
)
|
||||
|
||||
/datum/outfit/admin/nt_vip
|
||||
name = "VIP Guest"
|
||||
@@ -193,114 +197,6 @@
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_centcom_access("VIP Guest"), "VIP Guest")
|
||||
|
||||
/datum/outfit/admin/nt_navy_officer
|
||||
name = "NT Navy Officer"
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/centcom/officer
|
||||
back = /obj/item/weapon/storage/backpack/satchel
|
||||
belt = /obj/item/weapon/gun/energy/pulse/pistol
|
||||
gloves = /obj/item/clothing/gloves/color/white
|
||||
shoes = /obj/item/clothing/shoes/centcom
|
||||
head = /obj/item/clothing/head/beret/centcom/officer
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/centcom
|
||||
pda = /obj/item/device/pda/centcom
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/engineer = 1,
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1
|
||||
)
|
||||
|
||||
/datum/outfit/admin/nt_navy_officer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/obj/item/weapon/card/id/I = H.wear_id
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Officer"), "Nanotrasen Navy Officer")
|
||||
|
||||
var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/mindshield(H)
|
||||
L.implant(H)
|
||||
|
||||
|
||||
/datum/outfit/admin/nt_special_ops_officer
|
||||
name = "NT Special Ops Officer"
|
||||
|
||||
uniform = /obj/item/clothing/under/syndicate/combat
|
||||
suit = /obj/item/clothing/suit/space/deathsquad/officer
|
||||
back = /obj/item/weapon/storage/backpack/security
|
||||
belt = /obj/item/weapon/gun/energy/pulse/pistol/m1911
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
head = /obj/item/clothing/head/helmet/space/deathsquad/beret
|
||||
mask = /obj/item/clothing/mask/cigarette/cigar/cohiba
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
glasses = /obj/item/clothing/glasses/thermal/cyber
|
||||
id = /obj/item/weapon/card/id/centcom
|
||||
r_pocket = /obj/item/weapon/storage/box/matches
|
||||
pda = /obj/item/device/pda/centcom
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/engineer = 1,
|
||||
/obj/item/weapon/tank/emergency_oxygen/double/full = 1,
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1,
|
||||
/obj/item/weapon/twohanded/dualsaber/red = 1,
|
||||
/obj/item/weapon/pinpointer/advpinpointer = 1,
|
||||
/obj/item/weapon/reagent_containers/hypospray/combat/nanites = 1,
|
||||
/obj/item/weapon/storage/box/zipties = 1,
|
||||
/obj/item/clothing/shoes/magboots/advance = 1,
|
||||
/obj/item/weapon/implanter/mindshield = 1,
|
||||
)
|
||||
|
||||
/datum/outfit/admin/nt_special_ops_officer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/obj/item/weapon/card/id/I = H.wear_id
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_centcom_access("Special Operations Officer"), "Special Operations Officer")
|
||||
|
||||
/datum/outfit/admin/nt_special_ops_formal
|
||||
name = "NT Special Ops Formal"
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/centcom/captain
|
||||
back = /obj/item/weapon/storage/backpack/satchel
|
||||
belt = /obj/item/weapon/gun/energy/pulse/pistol/m1911
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
head = /obj/item/clothing/head/helmet/space/deathsquad/beret
|
||||
mask = /obj/item/clothing/mask/cigarette/cigar/cohiba
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
glasses = /obj/item/clothing/glasses/thermal/cyber
|
||||
id = /obj/item/weapon/card/id/centcom
|
||||
r_pocket = /obj/item/weapon/storage/box/matches
|
||||
pda = /obj/item/device/pda/centcom
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/engineer = 1,
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1,
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1
|
||||
)
|
||||
|
||||
/datum/outfit/admin/nt_special_ops_formal/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/obj/item/device/pda/PDA = H.wear_pda
|
||||
if(istype(PDA))
|
||||
PDA.owner = H.real_name
|
||||
PDA.ownjob = "Special Operations Officer"
|
||||
PDA.icon_state = "pda-syndi"
|
||||
PDA.name = "PDA-[H.real_name] ([PDA.ownjob])"
|
||||
PDA.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work."
|
||||
|
||||
var/obj/item/weapon/card/id/I = H.wear_id
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_centcom_access("Special Operations Officer"), "Special Operations Officer")
|
||||
|
||||
/datum/outfit/admin/nt_navy_captain
|
||||
name = "NT Navy Captain"
|
||||
@@ -316,10 +212,13 @@
|
||||
id = /obj/item/weapon/card/id/centcom
|
||||
pda = /obj/item/device/pda/centcom
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/engineer = 1,
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/storage/box/centcomofficer = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1
|
||||
)
|
||||
implants = list(
|
||||
/obj/item/weapon/implant/mindshield,
|
||||
/obj/item/weapon/implant/dust
|
||||
)
|
||||
|
||||
/datum/outfit/admin/nt_navy_captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
@@ -330,9 +229,6 @@
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Captain"), "Nanotrasen Navy Captain")
|
||||
|
||||
var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/mindshield(H)
|
||||
L.implant(H)
|
||||
|
||||
/datum/outfit/admin/nt_diplomat
|
||||
name = "NT Diplomat"
|
||||
|
||||
@@ -347,9 +243,12 @@
|
||||
pda = /obj/item/device/pda/centcom
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/survival = 1,
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1,
|
||||
)
|
||||
implants = list(
|
||||
/obj/item/weapon/implant/mindshield,
|
||||
/obj/item/weapon/implant/dust
|
||||
)
|
||||
|
||||
/datum/outfit/admin/nt_diplomat/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
@@ -360,6 +259,57 @@
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Representative"), "Nanotrasen Diplomat")
|
||||
|
||||
|
||||
/datum/outfit/admin/nt_undercover
|
||||
name = "NT Undercover Operative"
|
||||
// Disguised NT special forces, sent to quietly eliminate mutinous people in high positions (e.g: captain)
|
||||
|
||||
uniform = /obj/item/clothing/under/chameleon
|
||||
back = /obj/item/weapon/storage/backpack
|
||||
belt = /obj/item/weapon/storage/belt/utility/full/multitool
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
shoes = /obj/item/clothing/shoes/syndigaloshes
|
||||
l_ear = /obj/item/device/radio/headset/heads/captain
|
||||
id = /obj/item/weapon/card/id/syndicate
|
||||
pda = /obj/item/device/pda
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/engineer = 1,
|
||||
/obj/item/device/flashlight = 1,
|
||||
/obj/item/weapon/gun/projectile/automatic/proto = 1, // NT saber SMG
|
||||
/obj/item/weapon/suppressor = 1, // silencer for SMG
|
||||
/obj/item/ammo_box/magazine/smgm9mm = 3, // SMG ammo
|
||||
/obj/item/weapon/door_remote/omni = 1,
|
||||
/obj/item/weapon/implanter/mindshield = 1, // not implanted by default, as that would make them suspicious
|
||||
/obj/item/weapon/implanter/storage = 1 // do not auto-implant this, that causes a bug
|
||||
)
|
||||
implants = list(
|
||||
/obj/item/weapon/implant/dust
|
||||
)
|
||||
cybernetic_implants = list(
|
||||
/obj/item/organ/internal/cyberimp/eyes/hud/security,
|
||||
/obj/item/organ/internal/cyberimp/eyes/xray,
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_drop,
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_stun,
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/plus
|
||||
)
|
||||
|
||||
/datum/outfit/admin/nt_undercover/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/obj/item/weapon/card/id/I = H.wear_id
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_all_accesses(), "Civilian")
|
||||
I.icon_state = "deathsquad"
|
||||
|
||||
|
||||
var/obj/item/device/radio/R = H.l_ear
|
||||
if(istype(R))
|
||||
R.name = "radio headset"
|
||||
R.icon_state = "headset"
|
||||
|
||||
|
||||
/datum/outfit/admin/death_commando
|
||||
name = "NT Death Commando"
|
||||
|
||||
@@ -485,12 +435,10 @@
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/survival = 1,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing = 1,
|
||||
/obj/item/weapon/storage/box/syndie_kit/caneshotgun = 1,
|
||||
/obj/item/toy/crayon/mime = 1,
|
||||
/obj/item/weapon/gun/projectile/automatic/pistol = 1,
|
||||
/obj/item/weapon/suppressor = 1,
|
||||
/obj/item/weapon/storage/box/syndie_kit/caneshotgun = 1,
|
||||
/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath = 2,
|
||||
/obj/item/weapon/pen/sleepy = 1,
|
||||
/obj/item/device/radio/uplink = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1,
|
||||
/obj/item/device/flashlight = 1
|
||||
)
|
||||
@@ -701,7 +649,9 @@
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/survival = 1,
|
||||
/obj/item/weapon/kitchen/knife/combat = 1,
|
||||
/obj/item/ammo_box/magazine/m556 = 3)
|
||||
/obj/item/ammo_box/magazine/m556 = 3,
|
||||
/obj/item/clothing/shoes/magboots = 1
|
||||
)
|
||||
|
||||
|
||||
/datum/outfit/admin/solgov/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
@@ -725,7 +675,9 @@
|
||||
/obj/item/weapon/storage/box/survival = 1,
|
||||
/obj/item/weapon/kitchen/knife/combat = 1,
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1,
|
||||
/obj/item/ammo_box/magazine/m50 = 2)
|
||||
/obj/item/ammo_box/magazine/m50 = 2,
|
||||
/obj/item/clothing/shoes/magboots/advance = 1
|
||||
)
|
||||
|
||||
/datum/outfit/admin/chrono
|
||||
name = "Chrono Legionnaire"
|
||||
@@ -734,7 +686,7 @@
|
||||
suit = /obj/item/clothing/suit/space/chronos
|
||||
back = /obj/item/weapon/chrono_eraser
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
shoes = /obj/item/clothing/shoes/magboots/advance
|
||||
head = /obj/item/clothing/head/helmet/space/chronos
|
||||
mask = /obj/item/clothing/mask/gas/syndicate
|
||||
glasses = /obj/item/clothing/glasses/night
|
||||
@@ -756,7 +708,7 @@
|
||||
uniform = /obj/item/clothing/under/color/grey
|
||||
suit = /obj/item/clothing/suit/space
|
||||
back = /obj/item/weapon/tank/jetpack/oxygen
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
shoes = /obj/item/clothing/shoes/magboots
|
||||
head = /obj/item/clothing/head/helmet/space
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
@@ -779,6 +731,7 @@
|
||||
/datum/outfit/admin/hardsuit
|
||||
back = /obj/item/weapon/tank/jetpack/oxygen
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
shoes = /obj/item/clothing/shoes/magboots
|
||||
id = /obj/item/weapon/card/id
|
||||
|
||||
/datum/outfit/admin/hardsuit/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
@@ -804,6 +757,7 @@
|
||||
name = "CE Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/elite
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/elite
|
||||
shoes = /obj/item/clothing/shoes/magboots/advance
|
||||
|
||||
/datum/outfit/admin/hardsuit/mining
|
||||
name = "Mining Hardsuit"
|
||||
@@ -814,11 +768,13 @@
|
||||
name = "Syndi Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
shoes = /obj/item/clothing/shoes/magboots/syndie
|
||||
|
||||
/datum/outfit/admin/hardsuit/wizard
|
||||
name = "Wizard Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/wizard
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/wizard
|
||||
shoes = /obj/item/clothing/shoes/magboots
|
||||
|
||||
/datum/outfit/admin/hardsuit/medical
|
||||
name = "Medical Hardsuit"
|
||||
@@ -996,15 +952,15 @@
|
||||
/obj/item/weapon/storage/box/survival = 1,
|
||||
/obj/item/device/flashlight = 1
|
||||
)
|
||||
implants = list(
|
||||
/obj/item/weapon/implant/dust
|
||||
)
|
||||
|
||||
/datum/outfit/admin/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H)
|
||||
D.implant(H)
|
||||
|
||||
var/obj/item/device/pda/PDA = H.wear_pda
|
||||
if(istype(PDA))
|
||||
PDA.owner = H.real_name
|
||||
@@ -1034,7 +990,10 @@
|
||||
/obj/item/weapon/suppressor = 1,
|
||||
/obj/item/weapon/card/emag = 1,
|
||||
/obj/item/device/flashlight = 1,
|
||||
/obj/item/weapon/implanter/storage = 1
|
||||
/obj/item/weapon/implanter/storage = 1 // do not auto-implant this, that causes a bug
|
||||
)
|
||||
implants = list(
|
||||
/obj/item/weapon/implant/dust
|
||||
)
|
||||
|
||||
/datum/outfit/admin/spy/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
@@ -1046,9 +1005,6 @@
|
||||
if(istype(G))
|
||||
G.name = "black gloves"
|
||||
|
||||
var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H)
|
||||
D.implant(H)
|
||||
|
||||
var/obj/item/device/pda/PDA = H.wear_pda
|
||||
if(istype(PDA))
|
||||
PDA.owner = H.real_name
|
||||
@@ -1089,6 +1045,7 @@
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_all_accesses(), "Dark Lord", "syndie")
|
||||
|
||||
|
||||
/datum/outfit/admin/wizard
|
||||
uniform = /obj/item/clothing/under/color/lightpurple
|
||||
suit = /obj/item/clothing/suit/wizrobe
|
||||
@@ -1130,6 +1087,36 @@
|
||||
shoes = /obj/item/clothing/shoes/sandal/marisa
|
||||
head = /obj/item/clothing/head/wizard/marisa
|
||||
|
||||
/datum/outfit/admin/wizard/arch
|
||||
name = "Arch Wizard"
|
||||
|
||||
suit = /obj/item/clothing/suit/wizrobe/magusred
|
||||
head = /obj/item/clothing/head/wizard/magus
|
||||
belt = /obj/item/weapon/storage/belt/wands/full
|
||||
l_hand = null
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/engineer = 1,
|
||||
/obj/item/clothing/suit/space/hardsuit/wizard = 1,
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/wizard = 1,
|
||||
/obj/item/clothing/shoes/magboots = 1,
|
||||
/obj/item/weapon/kitchen/knife/ritual = 1,
|
||||
/obj/item/clothing/suit/wizrobe/red = 1,
|
||||
/obj/item/clothing/head/wizard/red = 1
|
||||
)
|
||||
|
||||
/datum/outfit/admin/wizard/arch/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/obj/item/weapon/spellbook/B = H.r_hand
|
||||
if(istype(B))
|
||||
B.owner = H // force-bind it so it can never be stolen, no matter what.
|
||||
B.name = "Archwizard Spellbook"
|
||||
B.uses = 50
|
||||
var/obj/item/weapon/card/id/I = H.wear_id
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_all_accesses(), "Arch Wizard")
|
||||
|
||||
|
||||
/datum/outfit/admin/dark_priest
|
||||
name = "Dark Priest"
|
||||
@@ -1147,6 +1134,9 @@
|
||||
/obj/item/weapon/storage/box/survival = 1,
|
||||
/obj/item/device/flashlight = 1,
|
||||
)
|
||||
implants = list(
|
||||
/obj/item/weapon/implant/dust
|
||||
)
|
||||
|
||||
/datum/outfit/admin/dark_priest/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
@@ -1163,5 +1153,3 @@
|
||||
var/obj/item/device/radio/headset/R = H.l_ear
|
||||
if(istype(R))
|
||||
R.flags |= NODROP
|
||||
var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H)
|
||||
D.implant(H)
|
||||
@@ -349,6 +349,7 @@
|
||||
to_chat(user, "<span class='warning'>You have successfully Enthralled [H]. <i>If they refuse to do as you say just adminhelp.</i></span>")
|
||||
add_logs(user, H, "vampire-thralled")
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/self/cloak
|
||||
name = "Cloak of Darkness"
|
||||
desc = "Toggles whether you are currently cloaking yourself in darkness."
|
||||
|
||||
@@ -28,16 +28,13 @@
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/centcom
|
||||
pda = /obj/item/device/pda/centcom
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/gun/energy/pulse/pistol = 1,
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1
|
||||
belt = /obj/item/weapon/gun/energy/pulse/pistol
|
||||
implants = list(
|
||||
/obj/item/weapon/implant/mindshield,
|
||||
/obj/item/weapon/implant/dust
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/mindshield)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/satchel
|
||||
|
||||
box = /obj/item/weapon/storage/box/centcomofficer
|
||||
|
||||
|
||||
// CC Officials who lead ERTs, Death Squads, etc.
|
||||
@@ -61,22 +58,33 @@
|
||||
/datum/outfit/job/ntspecops
|
||||
name = "Special Operations Officer"
|
||||
jobtype = /datum/job/ntspecops
|
||||
|
||||
uniform = /obj/item/clothing/under/syndicate/combat
|
||||
uniform = /obj/item/clothing/under/rank/centcom_commander
|
||||
suit = /obj/item/clothing/suit/space/deathsquad/officer
|
||||
back = /obj/item/weapon/storage/backpack/security
|
||||
belt = /obj/item/weapon/gun/energy/pulse/pistol/m1911
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
head = /obj/item/clothing/head/beret/centcom/officer/navy
|
||||
mask = /obj/item/clothing/mask/cigarette/cigar/cohiba
|
||||
head = /obj/item/clothing/head/helmet/space/deathsquad/beret
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/centcom
|
||||
pda = /obj/item/device/pda/centcom
|
||||
r_pocket = /obj/item/weapon/storage/box/matches
|
||||
box = /obj/item/weapon/storage/box/centcomofficer
|
||||
backpack = /obj/item/weapon/storage/backpack/satchel
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/gun/energy/pulse/pistol/m1911 = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1
|
||||
/obj/item/clothing/shoes/magboots/advance = 1,
|
||||
/obj/item/weapon/twohanded/dualsaber/red = 1,
|
||||
/obj/item/weapon/storage/box/zipties = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/mindshield)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/satchel
|
||||
implants = list(
|
||||
/obj/item/weapon/implant/mindshield,
|
||||
/obj/item/weapon/implant/dust
|
||||
)
|
||||
cybernetic_implants = list(
|
||||
/obj/item/organ/internal/cyberimp/eyes/xray,
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_drop,
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_stun,
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/plus
|
||||
)
|
||||
@@ -142,8 +142,6 @@
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
pda = /obj/item/device/pda
|
||||
|
||||
var/list/implants = null
|
||||
|
||||
var/backpack = /obj/item/weapon/storage/backpack
|
||||
var/satchel = /obj/item/weapon/storage/backpack/satchel_norm
|
||||
var/dufflebag = /obj/item/weapon/storage/backpack/duffel
|
||||
@@ -210,11 +208,6 @@
|
||||
|
||||
imprint_pda(H)
|
||||
|
||||
if(implants)
|
||||
for(var/implant_type in implants)
|
||||
var/obj/item/weapon/implant/I = new implant_type(H)
|
||||
I.implant(H)
|
||||
|
||||
if(gear_leftovers.len)
|
||||
for(var/datum/gear/G in gear_leftovers)
|
||||
var/atom/placed_in = H.equip_or_collect(G.spawn_item(null, H.client.prefs.gear[G.display_name]))
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
/obj/machinery/bodyscanner
|
||||
var/mob/living/carbon/occupant
|
||||
var/locked
|
||||
name = "body scanner"
|
||||
icon = 'icons/obj/Cryogenic2.dmi'
|
||||
icon_state = "bodyscanner-open"
|
||||
@@ -11,6 +9,16 @@
|
||||
active_power_usage = 2500
|
||||
|
||||
light_color = "#00FF00"
|
||||
var/obj/machinery/body_scanconsole/console = null
|
||||
var/mob/living/carbon/occupant = null
|
||||
var/locked
|
||||
|
||||
/obj/machinery/bodyscanner/Destroy()
|
||||
go_out()
|
||||
if(console)
|
||||
console.connected = null
|
||||
console = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/bodyscanner/power_change()
|
||||
..()
|
||||
@@ -207,9 +215,6 @@
|
||||
return
|
||||
|
||||
/obj/machinery/body_scanconsole
|
||||
var/obj/machinery/bodyscanner/connected
|
||||
var/delete
|
||||
var/temphtml
|
||||
name = "Body Scanner Console"
|
||||
icon = 'icons/obj/Cryogenic2.dmi'
|
||||
icon_state = "bodyscannerconsole"
|
||||
@@ -218,6 +223,9 @@
|
||||
dir = 8
|
||||
idle_power_usage = 250
|
||||
active_power_usage = 500
|
||||
var/obj/machinery/bodyscanner/connected = null
|
||||
var/delete
|
||||
var/temphtml
|
||||
var/printing = null
|
||||
var/printing_text = null
|
||||
var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/mindshield, /obj/item/weapon/implant/tracking, /obj/item/weapon/implant/health)
|
||||
@@ -243,6 +251,12 @@
|
||||
RefreshParts()
|
||||
findscanner()
|
||||
|
||||
/obj/machinery/body_scanconsole/Destroy()
|
||||
if(connected)
|
||||
connected.console = null
|
||||
connected = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/body_scanconsole/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
@@ -269,15 +283,13 @@
|
||||
return
|
||||
|
||||
/obj/machinery/body_scanconsole/proc/findscanner()
|
||||
var/obj/machinery/bodyscanner/bodyscannernew = null
|
||||
// Loop through every direction
|
||||
for(dir in list(NORTH,EAST,SOUTH,WEST))
|
||||
// Try to find a scanner in that direction
|
||||
var/temp = locate(/obj/machinery/bodyscanner, get_step(src, dir))
|
||||
if(!isnull(temp))
|
||||
bodyscannernew = temp
|
||||
src.connected = bodyscannernew
|
||||
return
|
||||
if(temp)
|
||||
connected = temp
|
||||
connected.console = src
|
||||
break
|
||||
|
||||
|
||||
/obj/machinery/body_scanconsole/attackby(var/obj/item/weapon/G as obj, var/mob/user as mob, params)
|
||||
|
||||
@@ -212,6 +212,7 @@
|
||||
air_alarms -= src
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
air_alarm_repository.update_cache(src)
|
||||
QDEL_NULL(wires)
|
||||
if(alarm_area && alarm_area.master_air_alarm == src)
|
||||
|
||||
@@ -135,7 +135,8 @@ obj/machinery/air_sensor
|
||||
Destroy()
|
||||
SSair.atmos_machinery -= src
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src,frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -156,6 +157,12 @@ obj/machinery/air_sensor
|
||||
var/list/sensor_information = list()
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
attack_hand(mob/user)
|
||||
if(..(user))
|
||||
return
|
||||
|
||||
@@ -48,13 +48,14 @@
|
||||
|
||||
/obj/machinery/driver_button/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src,frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/driver_button/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/driver_button/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
@@ -167,7 +168,7 @@
|
||||
|
||||
/obj/machinery/ignition_switch/attack_ai(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/ignition_switch/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -140,6 +140,7 @@ About the new airlock wires panel:
|
||||
/obj/machinery/door/airlock/Destroy()
|
||||
QDEL_NULL(electronics)
|
||||
QDEL_NULL(wires)
|
||||
QDEL_NULL(note)
|
||||
if(main_power_timer)
|
||||
deltimer(main_power_timer)
|
||||
main_power_timer = null
|
||||
@@ -149,7 +150,9 @@ About the new airlock wires panel:
|
||||
if(electrified_timer)
|
||||
deltimer(electrified_timer)
|
||||
electrified_timer = null
|
||||
qdel(note)
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/airlock/handle_atom_del(atom/A)
|
||||
|
||||
@@ -216,6 +216,12 @@
|
||||
if(radio_controller)
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/airlock_sensor/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/airlock_sensor/airlock_interior
|
||||
command = "cycle_interior"
|
||||
|
||||
@@ -279,6 +285,12 @@
|
||||
if(radio_controller)
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/access_button/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/access_button/airlock_interior
|
||||
frequency = 1379
|
||||
command = "cycle_interior"
|
||||
|
||||
@@ -58,6 +58,12 @@
|
||||
..()
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/embedded_controller/radio/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/embedded_controller/radio/update_icon()
|
||||
if(on && program)
|
||||
if(program.memory["processing"])
|
||||
|
||||
@@ -56,7 +56,8 @@
|
||||
|
||||
/obj/machinery/light_switch/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src,frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/light_switch/proc/updateicon()
|
||||
@@ -75,7 +76,7 @@
|
||||
/obj/machinery/light_switch/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/light_switch/attack_hand(mob/user)
|
||||
on = !on
|
||||
updateicon()
|
||||
|
||||
@@ -236,6 +236,12 @@
|
||||
filter_path() // renders rpath
|
||||
|
||||
|
||||
Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
process()
|
||||
if(magnets.len == 0 && autolink)
|
||||
for(var/obj/machinery/magnetic_module/M in world)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
name = "control wand"
|
||||
desc = "Remotely controls airlocks."
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
flags = NOBLUDGEON
|
||||
var/mode = WAND_OPEN
|
||||
var/region_access = 1 //See access.dm
|
||||
var/obj/item/weapon/card/id/ID
|
||||
|
||||
@@ -77,6 +77,7 @@ var/global/list/default_medbay_channels = list(
|
||||
radio_controller.remove_object(src, frequency)
|
||||
for(var/ch_name in channels)
|
||||
radio_controller.remove_object(src, radiochannels[ch_name])
|
||||
radio_connection = null
|
||||
global_radios -= src
|
||||
follow_target = null
|
||||
return ..()
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
var/list/recipes = list() // /datum/stack_recipe
|
||||
var/singular_name
|
||||
var/amount = 1
|
||||
var/to_transfer = 0
|
||||
var/max_amount //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount
|
||||
var/merge_type = null // This path and its children should merge with this stack, defaults to src.type
|
||||
|
||||
@@ -231,6 +232,9 @@
|
||||
/obj/item/stack/proc/get_max_amount()
|
||||
return max_amount
|
||||
|
||||
/obj/item/stack/proc/get_amount_transferred()
|
||||
return to_transfer
|
||||
|
||||
/obj/item/stack/proc/split(mob/user, amt)
|
||||
var/obj/item/stack/F = new type(loc, amt)
|
||||
F.copy_evidences(src)
|
||||
@@ -257,7 +261,6 @@
|
||||
if(S.amount >= max_amount)
|
||||
return 1
|
||||
|
||||
var/to_transfer
|
||||
if(user.is_in_inactive_hand(src))
|
||||
var/desired = input("How much would you like to transfer from this stack?", "How much?", 1) as null|num
|
||||
if(!desired)
|
||||
|
||||
@@ -829,6 +829,26 @@
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/centcomofficer
|
||||
name = "officer kit"
|
||||
|
||||
/obj/item/weapon/storage/box/centcomofficer/New()
|
||||
..()
|
||||
contents = list()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/double/full(src)
|
||||
new /obj/item/device/flashlight/seclite(src)
|
||||
new /obj/item/weapon/kitchen/knife/combat(src)
|
||||
|
||||
new /obj/item/device/radio/centcom(src)
|
||||
new /obj/item/weapon/door_remote/omni(src)
|
||||
new /obj/item/weapon/implanter/death_alarm(src)
|
||||
|
||||
new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(src)
|
||||
new /obj/item/weapon/pinpointer/advpinpointer(src)
|
||||
|
||||
|
||||
#undef NODESIGN
|
||||
#undef NANOTRASEN
|
||||
#undef SYNDI
|
||||
|
||||
@@ -96,6 +96,14 @@
|
||||
..()
|
||||
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
|
||||
/obj/item/weapon/tank/jetpack/void/grey
|
||||
name = "Void Jetpack (Oxygen)"
|
||||
icon_state = "jetpack-void-grey"
|
||||
|
||||
/obj/item/weapon/tank/jetpack/void/gold
|
||||
name = "Retro Jetpack (Oxygen)"
|
||||
icon_state = "jetpack-void-gold"
|
||||
|
||||
|
||||
/obj/item/weapon/tank/jetpack/oxygen
|
||||
name = "Jetpack (Oxygen)"
|
||||
|
||||
@@ -9,8 +9,7 @@
|
||||
..()
|
||||
new /obj/item/weapon/tank/jetpack/void(src)
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/clothing/head/helmet/space/nasavoid(src)
|
||||
new /obj/item/clothing/suit/space/nasavoid(src)
|
||||
new /obj/effect/nasavoidsuitspawner(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/weapon/stock_parts/cell(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
@@ -29,7 +29,8 @@
|
||||
|
||||
/obj/item/device/assembly/signaler/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src,frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/signaler/describe()
|
||||
|
||||
@@ -1,14 +1,113 @@
|
||||
|
||||
//NASA Voidsuit
|
||||
//Voidsuits
|
||||
/obj/item/clothing/head/helmet/space/nasavoid
|
||||
name = "NASA Void Helmet"
|
||||
desc = "A high tech, NASA Centcom branch designed, dark red space suit helmet. Used for AI satellite maintenance."
|
||||
icon_state = "void"
|
||||
desc = "A high tech, NASA Centcom branch designed space suit helmet. Used for AI satellite maintenance."
|
||||
icon_state = "void-red"
|
||||
item_state = "void"
|
||||
flags_inv = HIDEMASK|HIDEEARS
|
||||
|
||||
/obj/item/clothing/suit/space/nasavoid
|
||||
name = "NASA Voidsuit"
|
||||
icon_state = "void"
|
||||
name = "NASA Void Suit"
|
||||
icon_state = "void-red"
|
||||
item_state = "void"
|
||||
desc = "A high tech, NASA Centcom branch designed, dark red Space suit. Used for AI satellite maintenance."
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/multitool)
|
||||
desc = "A high tech, NASA Centcom branch designed space suit. Used for AI satellite maintenance."
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/multitool)
|
||||
|
||||
//Colors!!!
|
||||
/obj/item/clothing/head/helmet/space/nasavoid/green
|
||||
icon_state = "void-green"
|
||||
|
||||
/obj/item/clothing/suit/space/nasavoid/green
|
||||
icon_state = "void-green"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/nasavoid/ntblue
|
||||
icon_state = "void-ntblue"
|
||||
|
||||
/obj/item/clothing/suit/space/nasavoid/ntblue
|
||||
icon_state = "void-ntblue"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/nasavoid/purple
|
||||
icon_state = "void-purple"
|
||||
|
||||
/obj/item/clothing/suit/space/nasavoid/purple
|
||||
icon_state = "void-purple"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/nasavoid/yellow
|
||||
icon_state = "void-yellow"
|
||||
|
||||
/obj/item/clothing/suit/space/nasavoid/yellow
|
||||
icon_state = "void-yellow"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/nasavoid/ltblue
|
||||
icon_state = "void-light_blue"
|
||||
|
||||
/obj/item/clothing/suit/space/nasavoid/ltblue
|
||||
icon_state = "void-light_blue"
|
||||
|
||||
|
||||
//Captian's Suit, like the other captian's suit, but looks better, at the cost of armor
|
||||
/obj/item/clothing/head/helmet/space/nasavoid/captain
|
||||
name = "Fancy Retro Void Helmet"
|
||||
icon_state = "void-captian"
|
||||
desc = "A high tech, NASA Centcom branch designed space suit helmet. Used for AI satellite maintenance. This one is fit for a captain."
|
||||
|
||||
/obj/item/clothing/suit/space/nasavoid/captain
|
||||
name = "Fancy NASA Void Suit"
|
||||
icon_state = "void-captian"
|
||||
desc = "A high tech, NASA Centcom branch designed space suit. Used for AI satellite maintenance. This one is fit for a captain."
|
||||
|
||||
//Syndi's suit, on par with a blood red softsuit
|
||||
|
||||
/obj/item/clothing/head/helmet/space/nasavoid/syndi
|
||||
name = "Blood Red Retro Void Helmet"
|
||||
icon_state = "void-syndi"
|
||||
desc = "A high tech, NASA Centcom branch designed space suit helmet. This one looks rather suspicious."
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
/obj/item/clothing/suit/space/nasavoid/syndi
|
||||
name = "Blood Red NASA Void Suit"
|
||||
icon_state = "void-syndi"
|
||||
desc = "A high tech, NASA Centcom branch designed space suit. This one looks rather suspicious."
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
//random spawner
|
||||
|
||||
/obj/effect/nasavoidsuitspawner
|
||||
name = "NASA Void Suit Spawner"
|
||||
icon = 'icons/obj/clothing/suits.dmi'
|
||||
icon_state = "void-red"
|
||||
desc = "You shouldn't see this, a spawner for NASA Void Suits."
|
||||
var/suits = list("red", "green", "ntblue", "purple", "yellow", "ltblue")
|
||||
|
||||
/obj/effect/nasavoidsuitspawner/New()
|
||||
var/obj/item/clothing/head/helmet/space/nasavoid/H
|
||||
var/obj/item/clothing/suit/space/nasavoid/S
|
||||
switch(pick(suits))
|
||||
if("red")
|
||||
H = new /obj/item/clothing/head/helmet/space/nasavoid
|
||||
S = new /obj/item/clothing/suit/space/nasavoid
|
||||
if("green")
|
||||
H = new /obj/item/clothing/head/helmet/space/nasavoid/green
|
||||
S = new /obj/item/clothing/suit/space/nasavoid/green
|
||||
if("ntblue")
|
||||
H = new /obj/item/clothing/head/helmet/space/nasavoid/ntblue
|
||||
S = new /obj/item/clothing/suit/space/nasavoid/ntblue
|
||||
if("purple")
|
||||
H = new /obj/item/clothing/head/helmet/space/nasavoid/purple
|
||||
S = new /obj/item/clothing/suit/space/nasavoid/purple
|
||||
if("yellow")
|
||||
H = new /obj/item/clothing/head/helmet/space/nasavoid/yellow
|
||||
S = new /obj/item/clothing/suit/space/nasavoid/yellow
|
||||
if("ltblue")
|
||||
H = new /obj/item/clothing/head/helmet/space/nasavoid/ltblue
|
||||
S = new /obj/item/clothing/suit/space/nasavoid/ltblue
|
||||
var/turf/T = get_turf(src)
|
||||
if(H)
|
||||
H.forceMove(T)
|
||||
if(S)
|
||||
S.forceMove(T)
|
||||
qdel(src)
|
||||
@@ -32,6 +32,7 @@
|
||||
********************/
|
||||
|
||||
/obj/machinery/kitchen_machine/New()
|
||||
..()
|
||||
create_reagents(100)
|
||||
reagents.set_reacting(FALSE)
|
||||
if(!available_recipes)
|
||||
|
||||
@@ -62,7 +62,8 @@
|
||||
|
||||
/obj/machinery/logic_gate/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src,frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/logic_gate/process()
|
||||
|
||||
@@ -168,6 +168,7 @@
|
||||
/obj/item/radio/integrated/signal/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
return ..()
|
||||
|
||||
/obj/item/radio/integrated/signal/initialize()
|
||||
|
||||
@@ -599,35 +599,21 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list(
|
||||
..()
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/C = W
|
||||
// Cable merging is handled by parent proc
|
||||
if(C.amount >= MAXCOIL)
|
||||
to_chat(user, "The coil is too long, you cannot add any more cable to it.")
|
||||
to_chat(user, "The coil is as long as it will get.")
|
||||
return
|
||||
|
||||
if( (C.amount + src.amount <= MAXCOIL) )
|
||||
to_chat(user, "You join the cable coils together.")
|
||||
C.give(src.amount) // give it cable
|
||||
src.use(src.amount) // make sure this one cleans up right
|
||||
return
|
||||
|
||||
else
|
||||
var/amt = MAXCOIL - C.amount
|
||||
to_chat(user, "You transfer [amt] length\s of cable from one coil to the other.")
|
||||
C.give(amt)
|
||||
src.use(amt)
|
||||
to_chat(user, "You transfer [get_amount_transferred()] length\s of cable from one coil to the other.")
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/toy/crayon))
|
||||
var/obj/item/toy/crayon/C = W
|
||||
cable_color(C.colourName)
|
||||
|
||||
//add cables to the stack
|
||||
/obj/item/stack/cable_coil/proc/give(var/extra)
|
||||
if(amount + extra > MAXCOIL)
|
||||
amount = MAXCOIL
|
||||
else
|
||||
amount += extra
|
||||
update_icon()
|
||||
|
||||
///////////////////////////////////////////////
|
||||
// Cable laying procedures
|
||||
//////////////////////////////////////////////
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/emitter/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
radio_connection = null
|
||||
msg_admin_attack("Emitter deleted at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Emitter deleted at ([x],[y],[z])")
|
||||
investigate_log("<font color='red'>deleted</font> at ([x],[y],[z])","singulo")
|
||||
|
||||
Reference in New Issue
Block a user