Pimped out the response team. No jobs have stupid stuff spawn in their hands, it now spawns on their person, be it on their ear (pens if they cannot find a target) of in their pockets. MAde several pre-set-up things for the response team, including portable surgery equipment and a movable optable. Made autolathe items spawn on top of it. Added Death alarms, and made explosive implants work properly. Girders are now removed when a floor is made/RCD'd into existence. Internals can now be set even if it is in suit storage or on the belt.

This commit is contained in:
SkyMarshal
2012-01-20 12:53:29 -07:00
parent df354af1f3
commit 1bf1d5db1f
28 changed files with 375 additions and 59 deletions

View File

@@ -54,6 +54,10 @@
/obj/item/weapon/storage/box/engineer
/obj/item/weapon/storage/box/medic
name = "anesthetic box"
desc = "Full of masks and emergency anesthetic tanks."
/obj/item/weapon/storage/box/syndicate
/obj/item/weapon/storage/pillbottlebox
@@ -98,6 +102,53 @@
desc = "A tough backpack for the daily grind"
icon_state = "engiepack"
/obj/item/weapon/storage/backpack/industrial/full
name = "loaded industrial backpack"
desc = "A tough backpack for the daily grind, full of gear"
icon_state = "engiepack"
//Spawns with 2 glass, 2 metal, 1 steel, and 2 special boxes.
New()
..()
for(var/i = 1, i <=2, i++)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src)
G.amount = 50
G.loc = src
for(var/i = 1, i <=2, i++)
var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src)
G.amount = 50
G.loc = src
var/obj/item/stack/sheet/r_metal/R = new /obj/item/stack/sheet/r_metal(src)
R.amount = 50
R.loc = src
var/obj/item/weapon/storage/box/B1 = new /obj/item/weapon/storage/box(src)
B1.name = "power and airlock circuit box"
B1.desc = "Bursting with repair gear"
B1.w_class = 2
for(var/i = 1, i <= 7, i++)
if(i < 4)
var/obj/item/weapon/module/power_control/P = new /obj/item/weapon/module/power_control(B1)
P.loc = B1
if(i >= 4)
var/obj/item/weapon/airlock_electronics/P = new /obj/item/weapon/airlock_electronics(B1)
P.loc = B1
var/obj/item/weapon/storage/box/B2 = new /obj/item/weapon/storage/box(src)
B2.name = "power cells and wire box"
B2.desc = "Bursting with repair gear"
B2.w_class = 2
var/color = pick("red","yellow","green","blue")
for(var/i = 1, i <= 7, i++)
if(i < 4)
var/obj/item/weapon/cable_coil/P = new /obj/item/weapon/cable_coil(B2,30,color)
P.loc = B2
if(i >= 4)
var/obj/item/weapon/cell/P = new /obj/item/weapon/cell(B2)
P.maxcharge = 15000
P.charge = 15000
P.updateicon()
P.loc = B2
return
/obj/item/weapon/storage/briefcase
name = "briefcase"
desc = "Used by the lawyer in the court room."
@@ -223,6 +274,22 @@
icon_state = "implant"
item_state = "syringe_kit"
/obj/item/weapon/storage/deathalarm_kit
name = "Death Alarm Kit"
desc = "Box of stuff used to implant death alarms."
icon_state = "implant"
item_state = "syringe_kit"
New()
..()
new /obj/item/weapon/implanter(src)
new /obj/item/weapon/implantcase/death_alarm(src)
new /obj/item/weapon/implantcase/death_alarm(src)
new /obj/item/weapon/implantcase/death_alarm(src)
new /obj/item/weapon/implantcase/death_alarm(src)
new /obj/item/weapon/implantcase/death_alarm(src)
new /obj/item/weapon/implantcase/death_alarm(src)
/obj/item/weapon/storage/toolbox
name = "toolbox"
desc = "Danger. Very heavy."

View File

@@ -104,13 +104,13 @@ var/list/radiochannels = list(
"Medical" = 1355,
"Engineering" = 1357,
"Security" = 1359,
"Deathsquad" = 1441,
"ResponseTeam" = 1439,
"Syndicate" = 1213,
"Mining" = 1349,
"Cargo" = 1347,
)
//depenging helpers
var/list/DEPT_FREQS = list(1351,1355,1357,1359,1213,1441,1349,1347)
var/list/DEPT_FREQS = list(1351,1355,1357,1359,1213,1439,1349,1347)
var/const/COMM_FREQ = 1353 //command, colored gold in chat window
var/const/SYND_FREQ = 1213
var/NUKE_FREQ = 1200 //Randomised on nuke rounds.

View File

@@ -6,18 +6,22 @@
*/
var/list/DisallowedEvents = list(/datum/event/spaceninja, /datum/event/prisonbreak, /datum/event/immovablerod, /datum/event/gravitationalanomaly)
var/list/DisallowedEvents = list(/datum/event/spaceninja, /datum/event/prisonbreak, /datum/event/immovablerod, /datum/event/gravitationalanomaly, /datum/event/alieninfestation)
var/list/EventTypes = typesof(/datum/event) - /datum/event - DisallowedEvents
var/list/OneTimeEvents = list(/datum/event/spacecarp, /datum/event/miniblob)
var/datum/event/ActiveEvent = null
var/datum/event/LongTermEvent = null
var/is_ninjad_yet = 0
/proc/SpawnEvent()
if(!EventsOn || ActiveEvent)
return
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station && !is_ninjad_yet)
EventTypes |= /datum/event/spaceninja
is_ninjad_yet = 1
var/Type = pick(EventTypes)
EventTypes -= Type
if(Type in OneTimeEvents)
EventTypes -= Type
ActiveEvent = new Type()
ActiveEvent.Announce()
if (!ActiveEvent)

View File

@@ -84,7 +84,7 @@
H.equip_if_possible(new /obj/item/device/pda/quartermaster(H), H.slot_belt)
H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(H), H.slot_glasses)
H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_l_hand)
H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_r_store)
return 1
@@ -224,7 +224,7 @@
if(!H) return 0
H.equip_if_possible(new /obj/item/clothing/under/suit_jacket/red(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/weapon/barcodescanner(H), H.slot_l_hand)
H.equip_if_possible(new /obj/item/weapon/barcodescanner(H), H.slot_l_store)
return 1

View File

@@ -12,10 +12,10 @@
H.equip_if_possible(new /obj/item/device/radio/headset/heads/ce(H), H.slot_ears)
H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (H), H.slot_back)
H.equip_if_possible(new /obj/item/clothing/under/rank/chief_engineer(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/device/pda/heads/ce(H), H.slot_belt)
H.equip_if_possible(new /obj/item/device/pda/heads/ce(H), H.slot_l_store)
H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat/white(H), H.slot_head)
H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_l_hand)
H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_belt)
H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
return 1
@@ -36,9 +36,9 @@
H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial(H), H.slot_back)
H.equip_if_possible(new /obj/item/clothing/under/rank/engineer(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/shoes/orange(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt)
H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_l_store)
H.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat(H), H.slot_head)
H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_l_hand)
H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_belt)
H.equip_if_possible(new /obj/item/device/t_scanner(H), H.slot_r_store)
return 1

View File

@@ -14,7 +14,7 @@
H.equip_if_possible(new /obj/item/clothing/under/rank/research_director(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/device/pda/heads/rd(H), H.slot_belt)
H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat(H), H.slot_wear_suit)
H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_r_hand)
H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_l_store)
return 1

View File

@@ -254,10 +254,11 @@ var/global/datum/controller/occupations/job_master
C.name = "[C.registered]'s ID Card ([C.assignment])"
C.access = get_access(C.assignment)
H.equip_if_possible(C, H.slot_wear_id)
H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store)
if(!H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store))
H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_ears)
H.equip_if_possible(new /obj/item/device/pda(H), H.slot_belt)
if(istype(H.belt, /obj/item/device/pda))//I bet this could just use locate
var/obj/item/device/pda/pda = H.belt
if(locate(/obj/item/device/pda,H))//I bet this could just use locate
var/obj/item/device/pda/pda = locate(/obj/item/device/pda,H)
pda.owner = H.real_name
pda.ownjob = H.wear_id.assignment
pda.name = "PDA-[H.real_name] ([pda.ownjob])"

View File

@@ -8,7 +8,7 @@
use_power = 1
idle_power_usage = 1
active_power_usage = 5
var/mob/living/carbon/human/victim = null
var/mob/living/carbon/victim = null
var/strapped = 0.0
var/obj/machinery/computer/operating/computer = null
@@ -95,8 +95,8 @@
return
/obj/machinery/optable/proc/check_victim()
if(locate(/mob/living/carbon/human, src.loc))
var/mob/M = locate(/mob/living/carbon/human, src.loc)
if(locate(/mob/living/carbon, src.loc))
var/mob/M = locate(/mob/living/carbon, src.loc)
if(M.resting)
src.victim = M
icon_state = "table2-active"
@@ -130,4 +130,78 @@
user.drop_item()
if(W && W.loc)
W.loc = src.loc
return
return
/obj/machinery/optable/portable
name = "mobile operating Table"
desc = "Used for advanced medical procedures. Seems to be movable, neat."
icon = 'rollerbed.dmi'
icon_state = "up"
density = 1
anchored = 0
New()
..()
processing_objects.Remove(src)
MouseDrop_T(obj/O as obj, mob/user as mob)
if ((!( istype(O, /obj/item/weapon) ) || user.equipped() != O))
return
user.drop_item()
if (O.loc != src.loc)
step(O, get_dir(O, src))
return
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(!anchored)
return
if (istype(W, /obj/item/weapon/grab))
if(ismob(W:affecting))
var/mob/M = W:affecting
if (M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
M.resting = 1
M.loc = src.loc
for (var/mob/C in viewers(src))
C.show_message("\red [M] has been laid on the operating table by [user].", 3)
for(var/obj/O in src)
O.loc = src.loc
src.add_fingerprint(user)
src.victim = M
processing_objects.Add(src)
del(W)
return
user.drop_item()
if(W && W.loc)
W.loc = src.loc
return
check_victim()
if(locate(/mob/living/carbon/human, src.loc))
var/mob/M = locate(/mob/living/carbon/human, src.loc)
if(M.resting)
src.victim = M
return 1
src.victim = null
processing_objects.Remove(src)
return 0
verb/make_deployable()
set category = "Object"
set name = "Deploy Table"
set src in oview(1)
if(anchored)
if(victim)
usr << "You can't do that with someone on the table!"
else
anchored = 0
for(var/mob/M in orange(5,src))
M.show_message("\blue [usr] releases the locks on the table's casters!")
icon_state = "up"
else
anchored = 1
for(var/mob/M in orange(5,src))
M.show_message("\blue [usr] locks the table's casters in place!")
icon_state = "down"

View File

@@ -182,9 +182,8 @@
outputAmount = 1
if (!busy)
if(href_list["make"])
makeDir = get_dir(src,usr)
makeNew:
var/turf/T = get_step(src.loc, makeDir)
var/turf/T = src.loc
var/obj/template = locate(href_list["make"])
var/multiplier = text2num(href_list["multiplier"])
if (!multiplier) multiplier = 1

View File

@@ -62,6 +62,7 @@
machinetype = 6
heatgen = 0
var/intercept = 0 // if nonzero, broadcasts all messages to syndicate channel
var/syndi = 1 //If 1, it goes to syndicate frequency. Else, goes to deathsquad
receive_signal(datum/signal/signal)
@@ -87,19 +88,31 @@
var/datum/radio_frequency/connection = signal.data["connection"]
if(connection.frequency == NUKE_FREQ) // if syndicate broadcast, just
if(connection.frequency == NUKE_FREQ && syndi) // if syndicate broadcast, just
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"],, signal.data["compression"])
else
if(intercept)
else if(connection.frequency == 1439 && !syndi)
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"],, signal.data["compression"])
else if (intercept)
if(syndi)
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], 3, signal.data["compression"])
else
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], 4, signal.data["compression"])
@@ -195,6 +208,15 @@
receive |= R.send_hear(NUKE_FREQ)
// --- Broadcast to response team radio! ---
else if(data == 3)
var/datum/radio_frequency/syndicateconnection = radio_controller.return_frequency(1439)
for (var/obj/item/device/radio/R in syndicateconnection.devices["[RADIO_CHAT]"])
receive |= R.send_hear(1439)
// --- Broadcast to ALL radio devices ---
else
@@ -250,6 +272,9 @@
else
heard_garbled += R
for(var/obj/item/weapon/implant/imp in R)
imp.hear(message,M)
/* ###### Begin formatting and sending the message ###### */
if (length(heard_masked) || length(heard_normal) || length(heard_voice) || length(heard_garbled) || length(heard_gibberish))
@@ -277,6 +302,8 @@
freq_text = "Mining"
if(1347)
freq_text = "Cargo"
if(1439)
freq_text = "Response Team"
if(connection.frequency == NUKE_FREQ)
freq_text = "Agent"
@@ -308,7 +335,9 @@
// --- Filter the message; place it in quotes apply a verb ---
var/quotedmsg = M.say_quote(message)
var/quotedmsg = "\"" + message + "\""
if(M)
quotedmsg = M.say_quote(message)
// --- This following recording is intended for research and feedback in the use of department radio channels ---
@@ -385,7 +414,10 @@
// Displays garbled message (ie "f*c* **u, **i*er!")
if (length(heard_garbled))
quotedmsg = M.say_quote(stars(message))
if(M)
quotedmsg = M.say_quote(stars(message))
else
quotedmsg = "\"" + stars(message) + "\""
var/rendered = "[part_a][vname][part_b][quotedmsg][part_c]"
for (var/mob/R in heard_garbled)
@@ -398,7 +430,10 @@
/* --- Complete gibberish. Usually happens when there's a compressed message --- */
if (length(heard_gibberish))
quotedmsg = M.say_quote(Gibberish(message, compression + 50))
if(M)
quotedmsg = M.say_quote(Gibberish(message, compression + 50))
else
quotedmsg = "\"" + Gibberish(message, compression + 50) + "\""
var/rendered = "[part_a][Gibberish(M.real_name, compression + 50)][part_b][quotedmsg][part_c]"
for (var/mob/R in heard_gibberish)

View File

@@ -382,7 +382,10 @@
log.parameters["message"] = signal.data["message"]
log.parameters["name"] = signal.data["name"]
log.parameters["realname"] = signal.data["realname"]
log.parameters["uspeech"] = M.universal_speak
if(M)
log.parameters["uspeech"] = M.universal_speak
else
log.parameters["uspeech"] = 0
// If the signal is still compressed, make the log entry gibberish
if(signal.data["compression"] > 0)

View File

@@ -10,6 +10,7 @@
activate()
implanted(source as mob)
get_data()
hear(message, source as mob)
trigger(emote, source as mob)
@@ -27,6 +28,9 @@
get_data()
return "No information available"
hear(message, source as mob)
return
/obj/item/weapon/implant/uplink
@@ -236,7 +240,11 @@ the implant may become unstable and either pre-maturely inject the subject or si
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
return dat
hear_talk(M as mob, var/msg)
hear_talk(mob/M as mob, msg)
hear(msg)
return
hear(var/msg)
if(findtext(msg,phrase))
if(istype(loc, /mob/))
var/mob/T = loc
@@ -250,4 +258,41 @@ the implant may become unstable and either pre-maturely inject the subject or si
implanted(mob/source as mob)
phrase = input("Choose activation phrase:") as text
usr.mind.store_memory("Explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate.", 0, 0)
usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate."
usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate."
/obj/item/weapon/implant/death_alarm
name = "death alarm"
desc = "Danger Will Robinson!"
var/mobname = "Will Robinson"
get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> NanoTrasen \"Profit Margin\" Class Employee Lifesign Sensor<BR>
<b>Life:</b> Activates upon death.<BR>
<b>Important Notes:</b> Alerts crew to crewmember death.<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a compact radio signaler that triggers when the host's lifesigns cease.<BR>
<b>Special Features:</b> Alerts crew to crewmember death.<BR>
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
return dat
process()
var/mob/M = src.loc
if(M.stat == 2)
var/turf/t = get_turf(M)
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
var/mob/living/carbon/human/G = new /mob/living/carbon/human(null)
G.real_name = "[mobname]'s death alarm"
G.name = "[mobname]'s death alarm"
G.universal_speak = 1
a.talk_into(G,"[mobname] has died in [t.loc.name]!")
del(a)
del(G)
processing_objects.Remove(src)
implanted(mob/source as mob)
mobname = source.real_name
processing_objects.Add(src)

View File

@@ -114,4 +114,15 @@
New()
src.imp = new /obj/item/weapon/implant/loyalty( src )
..()
return
/obj/item/weapon/implantcase/death_alarm
name = "Glass Case- 'Tracking'"
desc = "A case containing a tracking implant."
icon = 'items.dmi'
icon_state = "implantcase-b"
New()
src.imp = new /obj/item/weapon/implant/death_alarm( src )
..()
return

View File

@@ -663,9 +663,6 @@ CLIPBOARDS
else
return
src.update()
spawn(0)
attack_self(user)
return
return
/obj/item/weapon/clipboard/proc/update()
@@ -692,6 +689,15 @@ CLIPBOARDS
src.add_fingerprint(usr)
return //
/obj/item/weapon/clipboard/New()
..()
for(var/i = 1, i <= 3, i++)
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
P.loc = src
src.pen = new /obj/item/weapon/pen(src)
src.update()
return
// PHOTOGRAPH

View File

@@ -40,3 +40,20 @@
M.eye_blurry += 3
return
/obj/item/weapon/storage/briefcase/surgery
icon_state = "medbriefcase"
name = "surgery equipment bag"
desc = "Heavy and full of sharp things."
New()
..()
contents = list()
sleep(1)
new /obj/item/weapon/circular_saw(src)
new /obj/item/weapon/hemostat(src)
new /obj/item/weapon/scalpel(src)
new /obj/item/weapon/retractor(src)
new /obj/item/weapon/cautery(src)
new /obj/item/weapon/surgical_tool/bonegel(src)
new /obj/item/weapon/surgical_tool/bonesetter(src)

View File

@@ -259,9 +259,22 @@
new /obj/item/weapon/tank/emergency_oxygen/engi( src )
return
/obj/item/weapon/storage/box/medic/New()
..()
contents = list()
sleep(1)
new /obj/item/clothing/mask/medical( src )
new /obj/item/weapon/tank/emergency_oxygen/anesthetic( src )
new /obj/item/weapon/tank/emergency_oxygen/anesthetic( src )
new /obj/item/weapon/tank/emergency_oxygen/anesthetic( src )
new /obj/item/weapon/tank/emergency_oxygen/anesthetic( src )
new /obj/item/weapon/tank/emergency_oxygen/anesthetic( src )
new /obj/item/weapon/tank/emergency_oxygen/anesthetic( src )
return
/obj/item/weapon/storage/box/syndicate/New()
..()
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1)))
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "freedom" = 1)))
if ("bloodyspai")
new /obj/item/clothing/under/chameleon(src)
new /obj/item/clothing/mask/gas/voice(src)
@@ -290,12 +303,6 @@
new /obj/item/weapon/plastique(src)
return
if ("murder")
new /obj/item/weapon/melee/energy/sword(src)
new /obj/item/weapon/cloaking_device(src)
new /obj/item/weapon/card/emag(src)
return
if("freedom")
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(src)
O.imp = new /obj/item/weapon/implant/freedom(O)

View File

@@ -33,3 +33,19 @@
icon_state = "emergency_double"
name = "Double Emergency Oxygen Tank"
volume = 10
/obj/item/weapon/tank/emergency_oxygen/anesthetic
icon_state = "emergency_sleep"
name = "emergency sleeping gas tank"
desc = "Contains an Oxygen/N2O mix."
distribute_pressure = ONE_ATMOSPHERE
New()
..()
src.air_contents.oxygen = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
var/datum/gas/sleeping_agent/trace_gas = new()
trace_gas.moles = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
src.air_contents.trace_gases += trace_gas
return

View File

@@ -58,7 +58,7 @@ proc/trigger_armed_response_team()
new_commando.mind.current = new_commando
new_commando.mind.original = new_commando
new_commando.mind.assigned_role = "MODE"
new_commando.mind.special_role = "Death Commando"
new_commando.mind.special_role = "Response Team"
if(!(new_commando.mind in ticker.minds))
ticker.minds += new_commando.mind//Adds them to regular mind list.
new_commando.equip_strike_team(leader_selected)
@@ -67,23 +67,44 @@ proc/trigger_armed_response_team()
/mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0)
//Special radio setup
var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src)
R.set_frequency(1441)
R.name = "CentCom Response Team headset"
R.desc = "The headset of the boss's boss. Channels are as follows: :h - Response Team :c - command, :s - security, :e - engineering, :d - mining, :q - cargo, :m - medical, :n - science."
R.freerange = 1
R.listening = 0
R.config(list("ResponseTeam" = 1, "Science" = 0, "Command" = 0, "Medical" = 0, "Engineering" = 0, "Security" = 0, "Mining" = 0, "Cargo" = 0,))
equip_if_possible(R, slot_ears)
//Adding Camera Network
var/obj/machinery/camera/camera = new /obj/machinery/camera(src) //Gives all the commandos internals cameras.
camera.network = "CREED"
camera.c_tag = real_name
//Basic Uniform
equip_if_possible(new /obj/item/clothing/under/color/black(src), slot_w_uniform)
equip_if_possible(new /obj/item/clothing/shoes/swat(src), slot_shoes)
equip_if_possible(new /obj/item/clothing/suit/armor/swat(src), slot_wear_suit)
equip_if_possible(new /obj/item/device/flashlight(src), slot_l_store)
equip_if_possible(new /obj/item/weapon/clipboard(src), slot_r_store)
equip_if_possible(new /obj/item/weapon/gun/energy/taser(src), slot_belt)
//Glasses
equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses)
//Shoes & gloves
var/obj/item/clothing/shoes/swat/S = new /obj/item/clothing/shoes/swat(src)
S.flags = NOSLIP
equip_if_possible(S, slot_shoes)
equip_if_possible(new /obj/item/clothing/gloves/swat(src), slot_gloves)
equip_if_possible(new /obj/item/clothing/head/helmet/space/deathsquad(src), slot_head)
equip_if_possible(new /obj/item/clothing/mask/gas/swat(src), slot_wear_mask)
//Removed
// equip_if_possible(new /obj/item/clothing/suit/armor/swat(src), slot_wear_suit)
// equip_if_possible(new /obj/item/clothing/head/helmet/space/deathsquad(src), slot_head)
// equip_if_possible(new /obj/item/clothing/mask/gas/swat(src), slot_wear_mask)
//Backpack
equip_if_possible(new /obj/item/weapon/storage/backpack/security(src), slot_back)
equip_if_possible(new /obj/item/weapon/storage/box(src), slot_in_backpack)
equip_if_possible(new /obj/item/weapon/storage/box/engineer(src), slot_in_backpack)
equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(src), slot_in_backpack)
equip_if_possible(new /obj/item/device/flashlight(src), slot_in_backpack)
equip_if_possible(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store)
var/obj/item/weapon/card/id/W = new(src)
W.name = "[real_name]'s ID Card"

View File

@@ -129,6 +129,8 @@
var/prior_icon = icon_old
var/old_dir = dir
for(var/obj/structure/lattice/L in locate(src.x, src.y, src.z))
del(L)
var/turf/simulated/floor/W = new /turf/simulated/floor( locate(src.x, src.y, src.z) )
W.dir = old_dir
@@ -146,6 +148,8 @@
var/prior_icon = icon_old
var/old_dir = dir
for(var/obj/structure/lattice/L in locate(src.x, src.y, src.z))
del(L)
var/turf/simulated/floor/plating/W = new /turf/simulated/floor/plating( locate(src.x, src.y, src.z) )
W.dir = old_dir
@@ -159,6 +163,8 @@
/turf/proc/ReplaceWithEngineFloor()
var/old_dir = dir
for(var/obj/structure/lattice/L in locate(src.x, src.y, src.z))
del(L)
var/turf/simulated/floor/engine/E = new /turf/simulated/floor/engine( locate(src.x, src.y, src.z) )
E.dir = old_dir

View File

@@ -694,10 +694,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_if_possible(pda, M.slot_r_store)
var/obj/item/weapon/clipboard/G = new(M)
G.pen = new /obj/item/weapon/pen(G)
M.equip_if_possible(G, M.slot_l_store)
M.equip_if_possible(new /obj/item/weapon/clipboard(M), M.slot_l_store)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"

View File

@@ -121,11 +121,12 @@
if (src.stat == 1 || stat == 2)
usr << "\red [name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep."
if((health < 0 || stat == 1) && distance <= 3)
if(health < 0 && distance <= 3)
usr << "\red [name] does not appear to be breathing."
if(istype(usr, /mob/living/carbon/human) && usr.stat == 0 && src.stat == 1 && distance <= 1)
for(var/mob/O in viewers(usr.loc, null))
O.show_message("[usr] checks [src]'s pulse.", 1)
sleep(15)
usr << "\blue [name] has a pulse!"
if (src.stat == 2 || (changeling && changeling.changeling_fakedeath == 1))
@@ -133,6 +134,7 @@
if(istype(usr, /mob/living/carbon/human) && usr.stat == 0)
for(var/mob/O in viewers(usr.loc, null))
O.show_message("[usr] checks [src]'s pulse.", 1)
sleep(15)
usr << "\red [name] has no pulse!"
else
if (src.getBruteLoss())

View File

@@ -1469,7 +1469,7 @@
del(src)
return
if("internal")
if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && istype(target.back, /obj/item/weapon/tank) && !( target.internal )) ) && !( target.internal )))
if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && (istype(target.back, /obj/item/weapon/tank) || istype(target.belt, /obj/item/weapon/tank) || istype(target.s_store, /obj/item/weapon/tank)) && !( target.internal )) ) && !( target.internal )))
//SN src = null
del(src)
return
@@ -2157,11 +2157,11 @@ It can still be worn/put on as normal.
<BR><B>Belt:</B> <A href='?src=\ref[src];item=belt'>[(belt ? belt : "Nothing")]</A>
<BR><B>Uniform:</B> <A href='?src=\ref[src];item=uniform'>[(w_uniform ? w_uniform : "Nothing")]</A>
<BR><B>(Exo)Suit:</B> <A href='?src=\ref[src];item=suit'>[(wear_suit ? wear_suit : "Nothing")]</A>
<BR><B>Back:</B> <A href='?src=\ref[src];item=back'>[(back ? back : "Nothing")]</A> [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" <A href='?src=\ref[];item=internal'>Set Internal</A>", src) : "")]
<BR><B>Back:</B> <A href='?src=\ref[src];item=back'>[(back ? back : "Nothing")]</A>
<BR><B>ID:</B> <A href='?src=\ref[src];item=id'>[(wear_id ? wear_id : "Nothing")]</A>
<BR><B>Suit Storage:</B> <A href='?src=\ref[src];item=s_store'>[(s_store ? s_store : "Nothing")]</A>
<BR>[(handcuffed ? text("<A href='?src=\ref[src];item=handcuff'>Handcuffed</A>") : text("<A href='?src=\ref[src];item=handcuff'>Not Handcuffed</A>"))]
<BR>[(internal ? text("<A href='?src=\ref[src];item=internal'>Remove Internal</A>") : "")]
<BR>[(internal ? text("<A href='?src=\ref[src];item=internal'>Remove Internal</A>") : ((istype(wear_mask, /obj/item/clothing/mask) && (istype(back, /obj/item/weapon/tank) || istype(belt, /obj/item/weapon/tank) || istype(s_store, /obj/item/weapon/tank)) && !( internal )) ? text(" <A href='?src=\ref[];item=internal'>Set Internal</A>", src) : ""))]
<BR><A href='?src=\ref[src];item=pockets'>Empty Pockets</A>
<BR><A href='?src=\ref[src];item=h_store'>Empty Hat</A>
<BR><A href='?src=\ref[user];refresh=1'>Refresh</A>
@@ -2338,6 +2338,9 @@ It can still be worn/put on as normal.
requests += O
spawn( 0 )
O.process()
for(var/mob/living/carbon/M in oview(1,src))
if((M.machine == src)&&(in_range(src, M)))
show_inv(M)
return
..()
return

View File

@@ -44,6 +44,8 @@
M.show_message(rendered, 2)
/mob/proc/say_understands(var/mob/other)
if(!other)
return 1
if (src.stat == 2)
return 1
else if (istype(other, src.type))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB