mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 02:24:11 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -60,6 +60,12 @@
|
||||
|
||||
/obj/item/weapon/storage/box/syndicate
|
||||
|
||||
/obj/item/weapon/storage/box/ert
|
||||
name = "medical box"
|
||||
desc = "Full of goodness."
|
||||
icon_state = "implant"
|
||||
item_state = "syringe_kit"
|
||||
|
||||
/obj/item/weapon/storage/pillbottlebox
|
||||
name = "pill bottles"
|
||||
desc = "A box of pill bottles."
|
||||
@@ -82,6 +88,17 @@
|
||||
desc = "The backpack used to keep with the sterile environment."
|
||||
icon_state = "medicalpack"
|
||||
|
||||
/obj/item/weapon/storage/backpack/medic/full
|
||||
//Spawns with 2 boxes of ERT gear, a box of ERT gear and a hypo, and a box of anesthetic.
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/hypospray/ert(src)
|
||||
for(var/i = 1, i <=2, i++)
|
||||
new /obj/item/weapon/storage/box/ert(src)
|
||||
new /obj/item/weapon/storage/box/medic(src)
|
||||
new /obj/item/weapon/storage/belt/medical(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/security
|
||||
name = "security backpack"
|
||||
desc = "A very robust backpack."
|
||||
|
||||
@@ -105,6 +105,11 @@
|
||||
origin_tech = "materials=2"
|
||||
m_amt = 30000
|
||||
g_amt = 15000
|
||||
var/ammo = 10
|
||||
|
||||
/obj/item/weapon/rcd_ammo/large
|
||||
name = "Super compressed matter cartridge"
|
||||
ammo = 30
|
||||
|
||||
/obj/item/weapon/spacecash
|
||||
name = "Space Cash"
|
||||
|
||||
@@ -118,7 +118,7 @@ var/global/datum/controller/gameticker/ticker
|
||||
|
||||
spawn(0)
|
||||
while(1)
|
||||
sleep(5000+rand(6000,9000))
|
||||
sleep(5000+rand(6000,10000))
|
||||
SpawnEvent()
|
||||
|
||||
//Start master_controller.process()
|
||||
|
||||
@@ -562,7 +562,11 @@
|
||||
process_bot()
|
||||
if(2)
|
||||
process_bot()
|
||||
spawn(4)
|
||||
spawn(2)
|
||||
process_bot()
|
||||
sleep(2)
|
||||
process_bot()
|
||||
sleep(2)
|
||||
process_bot()
|
||||
if(3)
|
||||
process_bot()
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
They receive their message from a server after the message has been logged.
|
||||
*/
|
||||
|
||||
var
|
||||
list/recentmessages = list() // global list of recent messages broadcasted : used to circumvent massive radio spam
|
||||
|
||||
/obj/machinery/telecomms/broadcaster
|
||||
name = "Subspace Broadcaster"
|
||||
@@ -24,6 +26,11 @@
|
||||
|
||||
if(signal.data["message"])
|
||||
|
||||
// Kind of lame way to prevent MASSIVE RADIO SPAM but it works
|
||||
if("[signal.data["message"]]:[signal.data["realname"]]" in recentmessages)
|
||||
return
|
||||
recentmessages.Add( "[signal.data["message"]]:[signal.data["realname"]]" )
|
||||
|
||||
signal.data["done"] = 1 // mark the signal as being broadcasted
|
||||
|
||||
// Search for the original signal and mark it as done as well
|
||||
@@ -44,6 +51,9 @@
|
||||
/* --- Do a snazzy animation! --- */
|
||||
flick("broadcaster_send", src)
|
||||
|
||||
spawn(1)
|
||||
recentmessages = list()
|
||||
|
||||
|
||||
/*
|
||||
Basically just an empty shell for receiving and broadcasting radio messages. Not
|
||||
@@ -69,50 +79,48 @@
|
||||
if(!on) // has to be on to receive messages
|
||||
return
|
||||
|
||||
if(signal.transmission_method == 2)
|
||||
if(is_freq_listening(signal)) // detect subspace signals
|
||||
|
||||
if(is_freq_listening(signal)) // detect subspace signals
|
||||
signal.data["done"] = 1 // mark the signal as being broadcasted
|
||||
signal.data["compression"] = 0
|
||||
|
||||
signal.data["done"] = 1 // mark the signal as being broadcasted
|
||||
signal.data["compression"] = 0
|
||||
// Search for the original signal and mark it as done as well
|
||||
var/datum/signal/original = signal.data["original"]
|
||||
if(original)
|
||||
original.data["done"] = 1
|
||||
|
||||
// Search for the original signal and mark it as done as well
|
||||
var/datum/signal/original = signal.data["original"]
|
||||
if(original)
|
||||
original.data["done"] = 1
|
||||
if(signal.data["slow"] > 0)
|
||||
sleep(signal.data["slow"]) // simulate the network lag if necessary
|
||||
|
||||
if(signal.data["slow"] > 0)
|
||||
sleep(signal.data["slow"]) // simulate the network lag if necessary
|
||||
/* ###### Broadcast a message using signal.data ###### */
|
||||
|
||||
/* ###### Broadcast a message using signal.data ###### */
|
||||
var/datum/radio_frequency/connection = signal.data["connection"]
|
||||
|
||||
var/datum/radio_frequency/connection = signal.data["connection"]
|
||||
|
||||
if(connection.frequency == NUKE_FREQ && syndi) // 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(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"],, signal.data["compression"])
|
||||
else if(connection.frequency == 1439 && !syndi)
|
||||
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"],, 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"])
|
||||
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"])
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
if(do_after_cooldown(target))
|
||||
if(disabled) return
|
||||
chassis.spark_system.start()
|
||||
target:ReplaceWithFloor()
|
||||
target:ReplaceWithPlating()
|
||||
playsound(target, 'Deconstruct.ogg', 50, 1)
|
||||
chassis.give_power(energy_drain)
|
||||
else if (istype(target, /turf/simulated/floor))
|
||||
@@ -219,7 +219,7 @@
|
||||
set_ready_state(0)
|
||||
if(do_after_cooldown(target))
|
||||
if(disabled) return
|
||||
target:ReplaceWithFloor()
|
||||
target:ReplaceWithPlating()
|
||||
playsound(target, 'Deconstruct.ogg', 50, 1)
|
||||
chassis.spark_system.start()
|
||||
chassis.use_power(energy_drain*2)
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
if(!cell.use(30)) return
|
||||
user << "Building Floor..."
|
||||
activate()
|
||||
A:ReplaceWithFloor()
|
||||
A:ReplaceWithPlating()
|
||||
return
|
||||
|
||||
if(istype(A, /turf/simulated/floor))
|
||||
@@ -263,7 +263,7 @@
|
||||
playsound(src.loc, 'click.ogg', 50, 1)
|
||||
if(do_after(user, 40))
|
||||
activate()
|
||||
A:ReplaceWithFloor()
|
||||
A:ReplaceWithPlating()
|
||||
return
|
||||
|
||||
if(istype(A, /turf/simulated/wall/r_wall))
|
||||
|
||||
@@ -24,10 +24,11 @@ RCD
|
||||
working = 0
|
||||
mode = 1
|
||||
disabled = 0
|
||||
max_matter = 30
|
||||
|
||||
|
||||
New()
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
src.spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
@@ -37,14 +38,15 @@ RCD
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||
if((matter + 10) > 30)
|
||||
var/obj/item/weapon/rcd_ammo/R = W
|
||||
if((matter + R.ammo) > max_matter)
|
||||
user << "The RCD cant hold any more matter."
|
||||
return
|
||||
matter += R.ammo
|
||||
del(W)
|
||||
matter += 10
|
||||
playsound(src.loc, 'click.ogg', 50, 1)
|
||||
user << "The RCD now holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
user << "The RCD now holds [matter]/[max_matter] matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
return
|
||||
|
||||
|
||||
@@ -79,10 +81,10 @@ RCD
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
spark_system.set_up(5, 0, src)
|
||||
src.spark_system.start()
|
||||
A:ReplaceWithFloor()
|
||||
A:ReplaceWithPlating()
|
||||
matter--
|
||||
user << "The RCD now holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
user << "The RCD now holds [matter]/[max_matter] matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
return
|
||||
if(istype(A, /turf/simulated/floor) && matter >= 3)
|
||||
user << "Building Wall (3)..."
|
||||
@@ -94,8 +96,8 @@ RCD
|
||||
A:ReplaceWithWall()
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
matter -= 3
|
||||
user << "The RCD now holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
user << "The RCD now holds [matter]/[max_matter] matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
return
|
||||
else if(istype(A, /turf/simulated/floor) && mode == 2 && matter >= 10)
|
||||
user << "Building Airlock (10)..."
|
||||
@@ -113,8 +115,8 @@ RCD
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
playsound(src.loc, 'sparks2.ogg', 50, 1)
|
||||
matter -= 10
|
||||
user << "The RCD now holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
user << "The RCD now holds [matter]/[max_matter] matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
return
|
||||
else if(mode == 3 && (istype(A, /turf) || istype(A, /obj/machinery/door/airlock) ) )
|
||||
if(istype(A, /turf/simulated/wall) && matter >= 4)
|
||||
@@ -124,11 +126,11 @@ RCD
|
||||
if(!disabled && matter >= 4)
|
||||
spark_system.set_up(5, 0, src)
|
||||
src.spark_system.start()
|
||||
A:ReplaceWithFloor()
|
||||
A:ReplaceWithPlating()
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
matter -= 4
|
||||
user << "The RCD now holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
user << "The RCD now holds [matter]/[max_matter] matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
return
|
||||
if(istype(A, /turf/simulated/wall/r_wall))
|
||||
return
|
||||
@@ -142,8 +144,8 @@ RCD
|
||||
A:ReplaceWithSpace()
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
matter -= 5
|
||||
user << "The RCD now holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
user << "The RCD now holds [matter]/[max_matter] matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
return
|
||||
if(istype(A, /obj/machinery/door/airlock) && matter >= 10)
|
||||
user << "Deconstructing Airlock (10)..."
|
||||
@@ -155,6 +157,13 @@ RCD
|
||||
del(A)
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
matter -= 10
|
||||
user << "The RCD now holds [matter]/30 matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/30 matter-units."
|
||||
user << "The RCD now holds [matter]/[max_matter] matter-units."
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
return
|
||||
/obj/item/weapon/rcd/industrial
|
||||
name = "industrial rapid construction device"
|
||||
max_matter = 60
|
||||
|
||||
New()
|
||||
matter = max_matter
|
||||
return ..()
|
||||
|
||||
@@ -77,6 +77,14 @@
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/weapon/cable_coil(src,30,pick("red","yellow"))
|
||||
|
||||
/obj/item/weapon/storage/belt/security/full/New()
|
||||
..()
|
||||
new /obj/item/weapon/melee/baton(src)
|
||||
new /obj/item/weapon/pepperspray(src)
|
||||
new /obj/item/weapon/flashbang(src)
|
||||
new /obj/item/weapon/handcuffs(src)
|
||||
new /obj/item/weapon/handcuffs(src)
|
||||
new /obj/item/weapon/handcuffs(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/medical
|
||||
|
||||
@@ -272,6 +272,19 @@
|
||||
new /obj/item/weapon/tank/emergency_oxygen/anesthetic( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/ert/New()
|
||||
..()
|
||||
contents = list()
|
||||
sleep(1)
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/ert/cryo( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/ert/cryo( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/ert/cryo( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/ert/quikheal( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/ert/quikheal( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/ert/boost( src )
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/ert/boost( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndicate/New()
|
||||
..()
|
||||
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "freedom" = 1)))
|
||||
|
||||
@@ -98,7 +98,7 @@ TABLE AND RACK OBJECT INTERATIONS
|
||||
/obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(air_group || (height==0)) return 1
|
||||
|
||||
if(istype(mover) && mover.checkpass(PASSTABLE))
|
||||
if(istype(mover) && (mover.checkpass(PASSTABLE) || mover.checkpass(TABLEPASS))) //WTF do things hit tables like that? Jeez.
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
+26
-10
@@ -27,8 +27,9 @@ client/verb/JoinResponseTeam()
|
||||
new_commando.mind.key = usr.key
|
||||
new_commando.key = usr.key
|
||||
|
||||
new_commando << "\blue You are [!leader_selected?" a member":" the <B>LEADER</B>"] of an armed response team in CentComm's service. Something went down on [station_name()] and they're now on code red. Go in there and fix the problem."
|
||||
new_commando << "\blue You are [!leader_selected?"a member":"the <B>LEADER</B>"] of an armed response team in CentComm's service. Something went down on [station_name()] and they're now on code red. Go in there and fix the problem."
|
||||
new_commando << "<b>You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready."
|
||||
del(L)
|
||||
|
||||
else
|
||||
usr << "You need to be an observer or new player to use this."
|
||||
@@ -73,9 +74,23 @@ proc/trigger_armed_response_team()
|
||||
|
||||
send_emergency_team = 1
|
||||
|
||||
var/area/security/nuke_storage/nukeloc = locate()//To find the nuke in the vault
|
||||
var/obj/machinery/nuclearbomb/nuke = locate() in nukeloc
|
||||
if(!nuke)
|
||||
nuke = locate() in world
|
||||
var/obj/item/weapon/paper/P = new
|
||||
P.info = "Your orders, Commander, are to use all necessary tools given to return the station to a survivable condition. <br> To this end, you have been provided with the best tools we can give in the three areas of Medical Engineering and Security. The nuclear authorization code is: <b>[nuke.r_code]</b>. Be warned, if you detonate this without good reason, we will hold you to account for damages. Memorise this code, and then burn this message."
|
||||
P.name = "Emergency Nuclear Code, and ERT Orders"
|
||||
for (var/obj/effect/landmark/A in world)
|
||||
if (A.name == "nukecode")
|
||||
P.loc = A.loc
|
||||
del(A)
|
||||
continue
|
||||
|
||||
/client/proc/create_response_team(obj/spawn_location, leader_selected = 0, commando_name)
|
||||
|
||||
var/mob/living/carbon/human/M = new(spawn_location.loc)
|
||||
var/mob/living/carbon/human/M = new(null)
|
||||
response_team_members |= M
|
||||
|
||||
var/new_facial = input("Please select facial hair color.", "Character Generation") as color
|
||||
if(new_facial)
|
||||
@@ -97,9 +112,10 @@ proc/trigger_armed_response_team()
|
||||
|
||||
var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
|
||||
|
||||
if (new_tone)
|
||||
M.s_tone = max(min(round(text2num(new_tone)), 220), 1)
|
||||
M.s_tone = -M.s_tone + 35
|
||||
if (!new_tone)
|
||||
new_tone = 35
|
||||
M.s_tone = max(min(round(text2num(new_tone)), 220), 1)
|
||||
M.s_tone = -M.s_tone + 35
|
||||
|
||||
// hair
|
||||
var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair
|
||||
@@ -157,6 +173,7 @@ proc/trigger_armed_response_team()
|
||||
M.update_clothing()
|
||||
|
||||
M.real_name = commando_name
|
||||
M.name = commando_name
|
||||
M.age = !leader_selected ? rand(23,35) : rand(35,45)
|
||||
|
||||
M.dna.ready_dna(M)//Creates DNA.
|
||||
@@ -169,6 +186,7 @@ proc/trigger_armed_response_team()
|
||||
M.mind.special_role = "Response Team"
|
||||
if(!(M.mind in ticker.minds))
|
||||
ticker.minds += M.mind//Adds them to regular mind list.
|
||||
M.loc = spawn_location.loc
|
||||
M.equip_strike_team(leader_selected)
|
||||
del(spawn_location)
|
||||
return M
|
||||
@@ -180,8 +198,7 @@ proc/trigger_armed_response_team()
|
||||
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("Response Team" = 1, "Science" = 0, "Command" = 0, "Medical" = 0, "Engineering" = 0, "Security" = 0, "Mining" = 0, "Cargo" = 0,))
|
||||
R.config(list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Mining" = 1, "Cargo" = 1,))
|
||||
equip_if_possible(R, slot_ears)
|
||||
|
||||
//Adding Camera Network
|
||||
@@ -199,9 +216,7 @@ proc/trigger_armed_response_team()
|
||||
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/shoes/swat(src), slot_shoes)
|
||||
equip_if_possible(new /obj/item/clothing/gloves/swat(src), slot_gloves)
|
||||
|
||||
//Removed
|
||||
@@ -219,6 +234,7 @@ proc/trigger_armed_response_team()
|
||||
W.icon_state = "centcom"
|
||||
if(leader_selected)
|
||||
W.access = get_access("Captain")
|
||||
W.access += list(access_cent_teleporter)
|
||||
else
|
||||
W.access = get_access("Head of Personnel")
|
||||
W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)//Let's add their alloted CentCom access.
|
||||
|
||||
@@ -1503,6 +1503,27 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
liquidnitrogen
|
||||
name = "Liquid Nitrogen"
|
||||
id = "liquidnitrogen"
|
||||
description = "Liquid Nitrogen. VERY cold."
|
||||
reagent_state = LIQUID
|
||||
color = "#B31008" // rgb: 139, 166, 233
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:bodytemperature -= 50 //This and the following two lines need to be checked and tinkered with so that the Cryo-In-A-Syringe
|
||||
if(prob(5)) // leaves someone at 100% healthy from anything up to in heavy crit (-75%)
|
||||
M.take_organ_damage(0, 1)
|
||||
if(prob(80) && istype(M, /mob/living/carbon/metroid))
|
||||
M.adjustFireLoss(rand(5,20))
|
||||
M << "\red You feel a terrible chill inside your body!"
|
||||
..()
|
||||
return
|
||||
|
||||
reaction_turf(var/turf/simulated/T, var/volume)
|
||||
for(var/mob/living/carbon/metroid/M in T)
|
||||
M.adjustToxLoss(rand(15,30))
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -1262,6 +1262,12 @@
|
||||
user << "\blue [trans] units injected. [reagents.total_volume] units remaining in the hypospray."
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/ert
|
||||
name = "emergency hypospray"
|
||||
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
|
||||
amount_per_transfer_from_this = 50
|
||||
volume = 50
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Food.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -2175,6 +2181,57 @@
|
||||
var/list/data = list("viruses"= list(F))
|
||||
reagents.add_reagent("blood", 20, data)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ert
|
||||
name = "emergency medicine bottle"
|
||||
desc = "A large bottle."
|
||||
icon = 'chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
item_state = "atoxinbottle"
|
||||
amount_per_transfer_from_this = 50
|
||||
possible_transfer_amounts = null
|
||||
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
||||
volume = 50
|
||||
|
||||
New()
|
||||
..()
|
||||
if(!icon_state)
|
||||
icon_state = "bottle[rand(1,20)]"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ert/quikheal
|
||||
name = "Quikheal bottle"
|
||||
desc = "Seems to be a strange mix of delicious goodness. Smells woozy."
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("bicaridine", 8)
|
||||
reagents.add_reagent("dexalinp", 5)
|
||||
reagents.add_reagent("dermaline", 8)
|
||||
reagents.add_reagent("arithrazine", 8)
|
||||
reagents.add_reagent("inaprovaline", 8)
|
||||
reagents.add_reagent("cryptobiolin", 13)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ert/boost
|
||||
name = "Combat Boost bottle"
|
||||
desc = "Seems to be a strange mix of delicious goodness. It... Pulses slightly before your eyes."
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("hyperzine", 10)
|
||||
reagents.add_reagent("dermaline", 10)
|
||||
reagents.add_reagent("leporazine", 10)
|
||||
reagents.add_reagent("bicaridine", 10)
|
||||
reagents.add_reagent("mutagen", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ert/cryo
|
||||
name = "Cryo-in-a-bottle"
|
||||
desc = "Seems to be a strange mix of delicious goodness. It's freezing cold to the touch."
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("clonexadone", 25)
|
||||
reagents.add_reagent("liquidnitrogen", 15)
|
||||
reagents.add_reagent("chloralhydrate", 10)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
|
||||
name = "beaker"
|
||||
@@ -2823,7 +2880,7 @@
|
||||
icon_state = "pill5"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("toxin", 100)
|
||||
reagents.add_reagent("chloralhydrate", 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/adminordrazine
|
||||
name = "Adminordrazine pill"
|
||||
|
||||
@@ -47,4 +47,4 @@
|
||||
w_class = 3
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
slowdown = 0
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
@@ -101,23 +101,29 @@
|
||||
name = "Black Space Helmet"
|
||||
icon_state = "syndicate-helm-black-blue"
|
||||
item_state = "syndicate-helm-black-blue"
|
||||
armor = list(melee = 70, bullet = 70, laser = 60, energy = 30, bomb = 30, bio = 50, rad = 50)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/syndicate/black/blue
|
||||
name = "Black and Blue Space Suit"
|
||||
icon_state = "syndicate-black-blue"
|
||||
item_state = "syndicate-black-blue"
|
||||
armor = list(melee = 70, bullet = 70, laser = 60, energy = 30, bomb = 30, bio = 50, rad = 50)
|
||||
slowdown = 2
|
||||
|
||||
/obj/item/clothing/head/helmet/space/syndicate/black/med
|
||||
name = "Black Space Helmet"
|
||||
icon_state = "syndicate-helm-black-med"
|
||||
item_state = "syndicate-helm-black"
|
||||
armor = list(melee = 50, bullet = 40, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/syndicate/black/med
|
||||
name = "Green Space Suit"
|
||||
icon_state = "syndicate-black-med"
|
||||
item_state = "syndicate-black"
|
||||
armor = list(melee = 50, bullet = 40, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
|
||||
slowdown = 0
|
||||
|
||||
|
||||
|
||||
@@ -138,12 +144,15 @@
|
||||
name = "Black Space Helmet"
|
||||
icon_state = "syndicate-helm-black-red"
|
||||
item_state = "syndicate-helm-black-red"
|
||||
armor = list(melee = 70, bullet = 70, laser = 60, energy = 30, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/syndicate/black/red
|
||||
name = "Black and Red Space Suit"
|
||||
icon_state = "syndicate-black-red"
|
||||
item_state = "syndicate-black-red"
|
||||
armor = list(melee = 70, bullet = 70, laser = 60, energy = 30, bomb = 30, bio = 30, rad = 30)
|
||||
slowdown = 4
|
||||
|
||||
|
||||
|
||||
@@ -151,12 +160,15 @@
|
||||
name = "Black Space Helmet"
|
||||
icon_state = "syndicate-helm-black-engie"
|
||||
item_state = "syndicate-helm-black"
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 50, bio = 30, rad = 100)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/syndicate/black/engie
|
||||
name = "Black Engineering Space Suit"
|
||||
icon_state = "syndicate-black-engie"
|
||||
item_state = "syndicate-black"
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 50, bio = 30, rad = 100)
|
||||
slowdown = 2
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -418,7 +418,7 @@
|
||||
else if(src.health < config.health_threshold_crit)
|
||||
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
||||
|
||||
//if(!src.rejuv) src.oxyloss++
|
||||
if(!src.rejuv) src.oxyloss++
|
||||
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
|
||||
|
||||
if(src.stat != 2) src.stat = 1
|
||||
|
||||
Regular → Executable
+8
-2
@@ -316,6 +316,7 @@
|
||||
desc = "A chute for big and small packages alike!"
|
||||
density = 0
|
||||
icon_state = "intake"
|
||||
var/currentlyFlushing = 0
|
||||
|
||||
interact()
|
||||
return
|
||||
@@ -351,8 +352,13 @@
|
||||
|
||||
air_contents = new() // new empty gas resv.
|
||||
|
||||
sleep(10)
|
||||
playsound(src, 'disposalflush.ogg', 50, 0, 0)
|
||||
sleep(10) // Prevent sound spam when several objects are flushed simultaneously.
|
||||
if(!currentlyFlushing)
|
||||
currentlyFlushing = 1
|
||||
playsound(src, 'disposalflush.ogg', 50, 0, 0)
|
||||
spawn(17) // Sound file is ~3 seconds long, adjust this if it becomes longer/shorter.
|
||||
currentlyFlushing = 0
|
||||
|
||||
sleep(5) // wait for animation to finish
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user