ERT equipment rework
@@ -465,7 +465,7 @@
|
||||
return all_jobs
|
||||
|
||||
/proc/get_all_centcom_jobs()
|
||||
return list("VIP Guest","Custodian","Thunderdome Overseer","Emergency Response Team","Emergency Response Team Leader","Intel Officer","Medical Officer","Death Commando","Research Officer","BlackOps Commander","Special Operations Officer","Nanotrasen Navy Officer","Nanotrasen Navy Captain","Supreme Commander")
|
||||
return list("VIP Guest","Custodian","Thunderdome Overseer","Emergency Response Team Member","Emergency Response Team Leader","Intel Officer","Medical Officer","Death Commando","Research Officer","BlackOps Commander","Special Operations Officer","Nanotrasen Navy Officer","Nanotrasen Navy Captain","Supreme Commander")
|
||||
|
||||
//gets the actual job rank (ignoring alt titles)
|
||||
//this is used solely for sechuds
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
icon_state = "sheet-glass"
|
||||
g_amt = 0
|
||||
created_window = /obj/structure/window/basic
|
||||
|
||||
/obj/item/stack/sheet/glass/full/New()
|
||||
..()
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/sheet/glass/attack_self(mob/user as mob)
|
||||
construct_window(user)
|
||||
|
||||
@@ -81,6 +81,10 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
|
||||
throwforce = 10.0
|
||||
flags = CONDUCT
|
||||
origin_tech = "materials=1"
|
||||
|
||||
/obj/item/stack/sheet/metal/full/New()
|
||||
..()
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/sheet/metal/cyborg
|
||||
name = "metal"
|
||||
@@ -120,8 +124,12 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
|
||||
origin_tech = "materials=2"
|
||||
|
||||
/obj/item/stack/sheet/plasteel/New(var/loc, var/amount=null)
|
||||
recipes = plasteel_recipes
|
||||
return ..()
|
||||
recipes = plasteel_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/plasteel/full/New(var/loc, var/amount=null)
|
||||
amount = 50
|
||||
..(loc, amount)
|
||||
|
||||
/*
|
||||
* Wood
|
||||
|
||||
@@ -126,8 +126,15 @@
|
||||
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
|
||||
max_w_class = 3
|
||||
can_hold = list("/obj/item/weapon/ore")
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/storage/bag/ore/holding //miners, your messiah has arrived
|
||||
name = "mining satchel of holding"
|
||||
desc = "A revolution in convenience, this satchel allows for infinite ore storage. It's been outfitted with anti-malfunction safety measures."
|
||||
storage_slots = INFINITY
|
||||
max_combined_w_class = INFINITY
|
||||
origin_tech = "bluespace=3"
|
||||
icon_state = "satchel_bspace"
|
||||
|
||||
// -----------------------------
|
||||
// Plant bag
|
||||
// -----------------------------
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange"))
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/full/response_team/New()
|
||||
/obj/item/weapon/storage/belt/utility/full/multitool/New()
|
||||
..()
|
||||
new /obj/item/device/multitool(src)
|
||||
|
||||
@@ -133,6 +133,8 @@
|
||||
|
||||
/obj/item/weapon/storage/belt/security/response_team/New()
|
||||
..()
|
||||
contents.Cut()
|
||||
new /obj/item/weapon/kitchenknife/combat(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/melee/telebaton(src)
|
||||
@@ -170,7 +172,7 @@
|
||||
|
||||
/obj/item/weapon/storage/belt/military
|
||||
name = "military belt"
|
||||
desc = "A syndicate belt designed to be used by boarding parties. Its style is modeled after the hardsuits they wear."
|
||||
desc = "A syndicate belt designed to be used by boarding parties. Its style is modelled after the hardsuits they wear."
|
||||
icon_state = "militarybelt"
|
||||
item_state = "military"
|
||||
|
||||
@@ -189,6 +191,15 @@
|
||||
"/obj/item/weapon/soap",
|
||||
"/obj/item/weapon/holosign_creator"
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/janitor/full/New()
|
||||
..()
|
||||
new /obj/item/device/lightreplacer(src)
|
||||
new /obj/item/weapon/holosign_creator(src)
|
||||
new /obj/item/weapon/reagent_containers/spray(src)
|
||||
new /obj/item/weapon/soap(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/cleaner(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/cleaner(src)
|
||||
|
||||
/obj/item/weapon/storage/belt/bandolier
|
||||
name = "bandolier"
|
||||
|
||||
@@ -61,18 +61,6 @@
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/response_team
|
||||
New()
|
||||
..()
|
||||
contents = list()
|
||||
sleep(1)
|
||||
new /obj/item/clothing/mask/breath( src )
|
||||
new /obj/item/weapon/tank/emergency_oxygen/double/full( src )
|
||||
new /obj/item/clothing/glasses/night( src )
|
||||
new /obj/item/weapon/kitchenknife/combat( src ) // SURVIVAL KNIFE, FOR CARVING A BOW OUT OF THE BONES OF ASSISTANTS AFTER YOU CRASH-LAND ON THE STATION.
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/gloves
|
||||
name = "box of latex gloves"
|
||||
desc = "Contains white gloves."
|
||||
|
||||
@@ -12,7 +12,10 @@
|
||||
var/datum/reagents/R = new/datum/reagents(100)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
|
||||
|
||||
/obj/structure/mopbucket/full/New()
|
||||
..()
|
||||
reagents.add_reagent("water", 100)
|
||||
|
||||
/obj/structure/mopbucket/examine()
|
||||
set src in usr
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
//Thanks to Kilakk for the admin-button portion of this code.
|
||||
|
||||
var/list/response_team_members = list()
|
||||
var/list/response_team_types = list("Security","Medical","Engineering","Janitorial")
|
||||
var/list/response_team_chosen_types = list()
|
||||
var/responseteam_age = 21 // Minimum account age to play as an ERT member
|
||||
var/global/send_emergency_team = 0 // Used for automagic response teams
|
||||
// 'admin_emergency_team' for admin-spawned response teams
|
||||
var/ert_base_chance = 10 // Default base chance. Will be incremented by increment ERT chance.
|
||||
@@ -10,68 +13,84 @@ var/can_call_ert
|
||||
/client/proc/response_team()
|
||||
set name = "Dispatch Emergency Response Team"
|
||||
set category = "Event"
|
||||
set desc = "Send an emergency response team to the station"
|
||||
set desc = "Send an emergency response team to the station."
|
||||
|
||||
if(!holder)
|
||||
usr << "\red Only administrators may use this command."
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
if(!ticker)
|
||||
usr << "\red The game hasn't started yet!"
|
||||
return
|
||||
|
||||
if(ticker.current_state == 1)
|
||||
usr << "\red The round hasn't started yet!"
|
||||
return
|
||||
|
||||
if(send_emergency_team)
|
||||
usr << "\red Central Command has already dispatched an emergency response team!"
|
||||
return
|
||||
|
||||
if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes")
|
||||
return
|
||||
|
||||
|
||||
if(get_security_level() != "red") // Allow admins to reconsider if the alert level isn't Red
|
||||
switch(alert("The station is not in red alert. Do you still want to dispatch a response team?",,"Yes","No"))
|
||||
if("No")
|
||||
return
|
||||
|
||||
if(send_emergency_team)
|
||||
usr << "\red Looks like somebody beat you to it!"
|
||||
usr << "\red Central Command has already dispatched an emergency response team!"
|
||||
return
|
||||
|
||||
if(pick_ert_type())
|
||||
return
|
||||
|
||||
message_admins("[key_name_admin(usr)] is dispatching an Emergency Response Team.", 1)
|
||||
log_admin("[key_name(usr)] used Dispatch Response Team.")
|
||||
trigger_armed_response_team(1)
|
||||
|
||||
|
||||
/client/proc/pick_ert_type()
|
||||
var/erttype = input("Which type of Emergency Response Team would you like to dispatch?","Emergency Response Team Type", "") as null|anything in response_team_types
|
||||
if(!erttype)
|
||||
return 1
|
||||
response_team_chosen_types |= erttype
|
||||
if(alert(usr, "Would you like to add another Emergency Response Team type?", "Emergency Response Team Type", "Yes", "No") == "Yes")
|
||||
pick_ert_type()
|
||||
else
|
||||
return 0
|
||||
|
||||
/mob/dead/observer/verb/JoinResponseTeam()
|
||||
set category = "Ghost"
|
||||
set name = "Join Emergency Response Team"
|
||||
set desc = "Join the Emergency Response Team. Only possible if it has been called by the crew."
|
||||
|
||||
if(istype(usr,/mob/dead/observer) || istype(usr,/mob/new_player))
|
||||
if(!send_emergency_team)
|
||||
usr << "No emergency response team is currently being sent."
|
||||
return
|
||||
|
||||
/* if(admin_emergency_team)
|
||||
usr << "An emergency response team has already been sent."
|
||||
return */
|
||||
|
||||
if(jobban_isbanned(usr, "Emergency Response Team"))
|
||||
usr << "<span class='warning'>You are jobbanned from the emergency reponse team!</span>"
|
||||
return
|
||||
if(!istype(usr,/mob/dead/observer) && !istype(usr,/mob/new_player))
|
||||
usr << "You need to be an observer or new player to use this."
|
||||
return
|
||||
|
||||
if(!send_emergency_team)
|
||||
usr << "No emergency response team is currently being sent."
|
||||
return
|
||||
|
||||
var/responseteam_age = 21 // 21 days to play as an ERT member
|
||||
var/player_age_check = check_client_age(usr.client, responseteam_age)
|
||||
if(player_age_check && config.use_age_restriction_for_antags)
|
||||
usr << "<span class='warning'>This role is not yet available to you. You need to wait another [player_age_check] days.</span>"
|
||||
return
|
||||
if(jobban_isbanned(usr, "Emergency Response Team"))
|
||||
usr << "<span class='warning'>You are jobbanned from the emergency reponse team!</span>"
|
||||
return
|
||||
|
||||
var/player_age_check = check_client_age(usr.client, responseteam_age)
|
||||
if(player_age_check && config.use_age_restriction_for_antags)
|
||||
usr << "<span class='warning'>This role is not yet available to you. You need to wait another [player_age_check] days.</span>"
|
||||
return
|
||||
|
||||
if(response_team_members.len > 6) usr << "The emergency response team is already full!"
|
||||
if(response_team_members.len > 6)
|
||||
usr << "The emergency response team is already full!"
|
||||
return
|
||||
|
||||
for (var/obj/effect/landmark/L in landmarks_list) if (L.name == "Response Team")
|
||||
L.name = null//Reserving the place.
|
||||
/*var/new_name = alert(usr, "Pick a name","Name") as null|text
|
||||
if(!new_name)//Somebody changed his mind, place is available again.
|
||||
L.name = "Commando"
|
||||
return*/
|
||||
if(alert(usr, "Join the Emergency Response Team?", "Emergency Response Team", "Yes", "No") == "No")
|
||||
for (var/obj/effect/landmark/L in landmarks_list)
|
||||
if (L.name == "Response Team")
|
||||
L.name = null
|
||||
|
||||
if(alert(usr, "Would you like to join the Emergency Response Team?", "Emergency Response Team", "Yes", "No") == "No")
|
||||
L.name = "Response Team"
|
||||
return
|
||||
|
||||
@@ -80,36 +99,36 @@ var/can_call_ert
|
||||
return
|
||||
var/client/C = src.client
|
||||
var/mob/living/carbon/human/new_commando = C.create_response_team(L.loc, leader_selected)
|
||||
del(L)
|
||||
del(L) // Do not qdel landmarks!
|
||||
new_commando.mind.key = usr.key
|
||||
new_commando.key = usr.key
|
||||
new_commando.update_icons()
|
||||
|
||||
new_commando << "\blue You are [!leader_selected?"a member":"the <B>LEADER</B>"] of an Emergency Response Team, a type of military division, under CentComm's service. There is a code red alert on [station_name()], you are tasked to go 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."
|
||||
new_commando << "\blue You are [!leader_selected?"a member":"the <B>LEADER</B>"] of an Emergency Response Team, a type of military division, under Central Command's service. There is an emergency on [station_name()], and you are tasked to go and fix the problem."
|
||||
new_commando << "<b>You should first gear up and discuss a plan with your team. More members may be joining, so don't move out before you're ready."
|
||||
if(!leader_selected)
|
||||
new_commando << "<b>As member of the Emergency Response Team, you answer only to your leader and CentComm officials.</b>"
|
||||
new_commando << "<b>As member of the Emergency Response Team, you answer only to your leader and Central Command officials.</b>"
|
||||
else
|
||||
new_commando << "<b>As leader of the Emergency Response Team, you answer only to CentComm, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however."
|
||||
new_commando << "<b>As leader of the Emergency Response Team, you answer only to Central Command, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however."
|
||||
return
|
||||
|
||||
else
|
||||
usr << "You need to be an observer or new player to use this."
|
||||
|
||||
// returns a number of dead players in %
|
||||
proc/percentage_dead()
|
||||
/proc/percentage_dead()
|
||||
var/total = 0
|
||||
var/deadcount = 0
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
if(H.client) // Monkeys and mice don't have a client, amirite?
|
||||
if(H.stat == 2) deadcount++
|
||||
if(H.stat == 2)
|
||||
deadcount++
|
||||
total++
|
||||
|
||||
if(total == 0) return 0
|
||||
else return round(100 * deadcount / total)
|
||||
if(total == 0)
|
||||
return 0
|
||||
else
|
||||
return round(100 * deadcount / total)
|
||||
|
||||
// counts the number of antagonists in %
|
||||
proc/percentage_antagonists()
|
||||
/proc/percentage_antagonists()
|
||||
var/total = 0
|
||||
var/antagonists = 0
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
@@ -117,12 +136,14 @@ proc/percentage_antagonists()
|
||||
antagonists++
|
||||
total++
|
||||
|
||||
if(total == 0) return 0
|
||||
else return round(100 * antagonists / total)
|
||||
if(total == 0)
|
||||
return 0
|
||||
else
|
||||
return round(100 * antagonists / total)
|
||||
|
||||
// Increments the ERT chance automatically, so that the later it is in the round,
|
||||
// the more likely an ERT is to be able to be called.
|
||||
proc/increment_ert_chance()
|
||||
/proc/increment_ert_chance()
|
||||
while(send_emergency_team == 0) // There is no ERT at the time.
|
||||
if(get_security_level() == "green")
|
||||
ert_base_chance += 1
|
||||
@@ -138,8 +159,7 @@ proc/increment_ert_chance()
|
||||
ert_base_chance += 10 // Need those big guns
|
||||
sleep(600 * 3) // Minute * Number of Minutes
|
||||
|
||||
|
||||
proc/trigger_armed_response_team(var/force = 0)
|
||||
/proc/trigger_armed_response_team(var/force = 0)
|
||||
if(!can_call_ert && !force)
|
||||
return
|
||||
if(send_emergency_team)
|
||||
@@ -150,7 +170,8 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
send_team_chance += percentage_antagonists() // the more antagonists, the higher the chance
|
||||
send_team_chance = min(send_team_chance, 100)
|
||||
|
||||
if(force) send_team_chance = 100
|
||||
if(force)
|
||||
send_team_chance = 100
|
||||
|
||||
// there's only a certain chance a team will be sent
|
||||
if(!prob(send_team_chance))
|
||||
@@ -159,20 +180,20 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
return
|
||||
|
||||
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "Central Command")
|
||||
|
||||
can_call_ert = 0 // Only one call per round, gentleman.
|
||||
can_call_ert = 0 // Only one call per round, gentlemen.
|
||||
send_emergency_team = 1
|
||||
|
||||
sleep(600 * 5)
|
||||
send_emergency_team = 0 // Can no longer join the ERT.
|
||||
|
||||
/* var/area/security/nuke_storage/nukeloc = locate()//To find the nuke in the vault
|
||||
/*
|
||||
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 means necessary 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 Medicine, Engineering, and Security. The nuclear authorization code is: <b>[ nuke ? nuke.r_code : "AHH, THE NUKE IS GONE!"]</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"
|
||||
P.info = "Your orders, Commander, are to use all means necessary to return the station to a survivable condition.<br>To this end, you have been provided with the best tools we can give for Security, Medical, Engineering and Janitorial duties. The nuclear authorization code is: <b>[ nuke ? nuke.r_code : "UNKNOWN"]</b>. Be warned, if you detonate this without good reason, we will hold you to account for damages. Memorise this code, and then destroy this message."
|
||||
P.name = "ERT Orders and Emergency Nuclear Code"
|
||||
for (var/obj/effect/landmark/A in world)
|
||||
if (A.name == "nukecode")
|
||||
P.loc = A.loc
|
||||
@@ -181,16 +202,11 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
*/
|
||||
|
||||
/client/proc/create_response_team(obj/spawn_location, leader_selected = 0)
|
||||
|
||||
//usr << "\red ERT has been temporarily disabled. Talk to a coder."
|
||||
//return
|
||||
|
||||
var/mob/living/carbon/human/M = new(null)
|
||||
response_team_members |= M
|
||||
|
||||
//todo: god damn this.
|
||||
//make it a panel, like in character creation
|
||||
/*var/new_facial = input("Please select facial hair color.", "Character Generation") as color
|
||||
/*
|
||||
var/new_facial = input("Please select facial hair color.", "Character Generation") as color
|
||||
if(new_facial)
|
||||
M.r_facial = hex2num(copytext(new_facial, 2, 4))
|
||||
M.g_facial = hex2num(copytext(new_facial, 4, 6))
|
||||
@@ -208,7 +224,7 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
M.g_eyes = hex2num(copytext(new_eyes, 4, 6))
|
||||
M.b_eyes = hex2num(copytext(new_eyes, 6, 8))
|
||||
|
||||
var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
|
||||
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)
|
||||
new_tone = 35
|
||||
@@ -225,19 +241,19 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
hairs.Add(H.name) // add hair name to hairs
|
||||
del(H) // delete the hair after it's all done
|
||||
|
||||
// var/new_style = input("Please select hair style", "Character Generation") as null|anything in hairs
|
||||
// var/new_style = input("Please select hair style.", "Character Generation") as null|anything in hairs
|
||||
//hair
|
||||
var/new_hstyle = input(usr, "Select a hair style", "Grooming") as null|anything in hair_styles_list
|
||||
var/new_hstyle = input(usr, "Select a hair style.", "Grooming") as null|anything in hair_styles_list
|
||||
if(new_hstyle)
|
||||
M.h_style = new_hstyle
|
||||
|
||||
// facial hair
|
||||
var/new_fstyle = input(usr, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list
|
||||
var/new_fstyle = input(usr, "Select a facial hair style.", "Grooming") as null|anything in facial_hair_styles_list
|
||||
if(new_fstyle)
|
||||
M.f_style = new_fstyle
|
||||
|
||||
// if new style selected (not cancel)
|
||||
/* if (new_style)
|
||||
if (new_style)
|
||||
M.h_style = new_style
|
||||
|
||||
for(var/x in all_hairs) // loop through all_hairs again. Might be slightly CPU expensive, but not significantly.
|
||||
@@ -257,7 +273,7 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
fhairs.Add(H.name)
|
||||
del(H)
|
||||
|
||||
new_style = input("Please select facial style", "Character Generation") as null|anything in fhairs
|
||||
new_style = input("Please select facial hair style.", "Character Generation") as null|anything in fhairs
|
||||
|
||||
if(new_style)
|
||||
M.f_style = new_style
|
||||
@@ -268,30 +284,50 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
break
|
||||
else
|
||||
del(H)
|
||||
*/
|
||||
|
||||
var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female")
|
||||
if (new_gender)
|
||||
if(new_gender == "Male")
|
||||
M.gender = MALE
|
||||
else
|
||||
M.gender = FEMALE*/
|
||||
M.gender = FEMALE
|
||||
//M.rebuild_appearance()
|
||||
*/
|
||||
|
||||
M.gender = pick(MALE, FEMALE)
|
||||
M.set_species("Human",1)
|
||||
M.dna.ready_dna(M) // Quadriplegic Nuke Ops won't be participating in the paralympics
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
A.randomize_appearance_for(M)
|
||||
var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde
|
||||
var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue
|
||||
var/skin_tone = pick(-50, -30, -10, 0, 0, 0, 10) // Caucasian/black
|
||||
var/hair_style = "Bald"
|
||||
var/facial_hair_style = "Shaved"
|
||||
if(M.gender == MALE)
|
||||
hair_style = pick(hair_styles_male_list)
|
||||
facial_hair_style = pick(facial_hair_styles_list)
|
||||
else
|
||||
hair_style = pick(hair_styles_female_list)
|
||||
if(prob(5))
|
||||
facial_hair_style = pick(facial_hair_styles_list)
|
||||
|
||||
M.update_hair()
|
||||
M.update_body()
|
||||
M.check_dna(M)
|
||||
M.r_facial = hex2num(copytext(hair_c, 2, 4))
|
||||
M.g_facial = hex2num(copytext(hair_c, 4, 6))
|
||||
M.b_facial = hex2num(copytext(hair_c, 6, 8))
|
||||
M.r_hair = hex2num(copytext(hair_c, 2, 4))
|
||||
M.g_hair = hex2num(copytext(hair_c, 4, 6))
|
||||
M.b_hair = hex2num(copytext(hair_c, 6, 8))
|
||||
M.r_eyes = hex2num(copytext(eye_c, 2, 4))
|
||||
M.g_eyes = hex2num(copytext(eye_c, 4, 6))
|
||||
M.b_eyes = hex2num(copytext(eye_c, 6, 8))
|
||||
M.s_tone = skin_tone
|
||||
M.h_style = hair_style
|
||||
M.f_style = facial_hair_style
|
||||
|
||||
M.real_name = "[!leader_selected ? pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major") : pick("Lieutenant", "Captain", "Major")] [pick(last_names)]"
|
||||
M.real_name = "[!leader_selected ? pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major") : pick("Lieutenant", "Captain", "Major")] [pick(last_names)]"
|
||||
M.name = M.real_name
|
||||
M.age = !leader_selected ? rand(23,35) : rand(35,45)
|
||||
|
||||
M.dna.ready_dna(M)//Creates DNA.
|
||||
|
||||
//Creates mind stuff.
|
||||
M.mind = new
|
||||
M.mind.current = M
|
||||
@@ -299,22 +335,18 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
M.mind.assigned_role = "MODE"
|
||||
M.mind.special_role = "Response Team"
|
||||
if(!(M.mind in ticker.minds))
|
||||
ticker.minds += M.mind//Adds them to regular mind list.
|
||||
ticker.minds += M.mind //Adds them to regular mind list.
|
||||
M.loc = spawn_location
|
||||
|
||||
var/class = input("Which class would you like to choose?") in response_team_chosen_types
|
||||
if(leader_selected)
|
||||
equip_emergencyresponsesquad(M, "commander")
|
||||
equip_emergencyresponsesquad(M, "Commander", class)
|
||||
else
|
||||
switch(input("Which class?") in list("Security","Engineer","Medical"))
|
||||
if("Security")
|
||||
equip_emergencyresponsesquad(M, "sec")
|
||||
if("Engineer")
|
||||
equip_emergencyresponsesquad(M, "eng")
|
||||
if("Medical")
|
||||
equip_emergencyresponsesquad(M, "med")
|
||||
equip_emergencyresponsesquad(M, class)
|
||||
|
||||
return M
|
||||
|
||||
/proc/equip_emergencyresponsesquad(var/mob/living/carbon/human/M, var/ertrole)
|
||||
/proc/equip_emergencyresponsesquad(var/mob/living/carbon/human/M, var/role, var/role2)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert/alt(src), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
|
||||
|
||||
@@ -322,13 +354,21 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
L.imp_in = M
|
||||
L.implanted = 1
|
||||
|
||||
switch(ertrole)
|
||||
if("commander")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
switch(role)
|
||||
if("Commander")
|
||||
if(role2 == "Janitorial")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/galoshes(M), slot_shoes)
|
||||
else
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(M), slot_shoes)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/commander(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses)
|
||||
var/obj/item/clothing/suit/space/rig/R = M.wear_suit
|
||||
R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/commander(M)
|
||||
M.equip_to_slot_or_del(R.helmet, slot_head)
|
||||
R.helmet.flags |= NODROP
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
W.assignment = "Emergency Response Team Leader"
|
||||
@@ -345,23 +385,78 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/response_team(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/ert/commander(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/security/response_team(M), slot_belt)
|
||||
switch(role2)
|
||||
if("Security")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/security/response_team(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/night(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/handcuffs(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/tele(M), slot_in_backpack)
|
||||
|
||||
if("Medical")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex/nitrile(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/night(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/defibrillator/compact/combat/loaded(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/fire(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/o2(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/toxin(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/CMO(M), slot_in_backpack)
|
||||
|
||||
if("sec")
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(M), slot_r_hand)
|
||||
|
||||
if("Engineering")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson/night(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/rcd/combat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/full(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/sheet/glass/full(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/full(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/inflatable(M), slot_r_hand)
|
||||
|
||||
if("Janitorial")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/purple(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/janitor, slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/janitor/full, slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(src), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/lights/mixed(src), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/spray/plantbgone(src), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/glass/bucket(src), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/mop/advanced(M), slot_r_hand)
|
||||
|
||||
new /obj/structure/mopbucket/full(get_turf(M))
|
||||
|
||||
if("Security")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/security(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back)
|
||||
|
||||
var/obj/item/clothing/suit/space/rig/R = M.wear_suit
|
||||
R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/security(M)
|
||||
M.equip_to_slot_or_del(R.helmet, slot_head)
|
||||
R.helmet.flags |= NODROP
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
W.assignment = "Emergency Response Team"
|
||||
W.assignment = "Emergency Response Team Member"
|
||||
W.registered_name = M.real_name
|
||||
W.name = "[M.real_name]'s ID Card (Emergency Response Team - Officer)"
|
||||
W.icon_state = "centcom"
|
||||
@@ -371,28 +466,37 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
|
||||
var/obj/item/device/pda/heads/pda = new(src)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Emergency Response Team"
|
||||
pda.ownjob = "Emergency Response Team Member"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.icon_state = "pda-security"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/response_team(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/night(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/handcuffs(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/ert/security(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/tele(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/security/response_team(M), slot_belt)
|
||||
|
||||
if("med")
|
||||
if("Medical")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex/nitrile(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/medical(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health_advanced(M), slot_glasses)
|
||||
|
||||
var/obj/item/clothing/suit/space/rig/R = M.wear_suit
|
||||
R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/medical(M)
|
||||
M.equip_to_slot_or_del(R.helmet, slot_head)
|
||||
R.helmet.flags |= NODROP
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/night(M), slot_glasses)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
W.assignment = "Emergency Response Team"
|
||||
W.assignment = "Emergency Response Team Member"
|
||||
W.registered_name = M.real_name
|
||||
W.name = "[M.real_name]'s ID Card (Emergency Response Team - Medic)"
|
||||
W.icon_state = "centcom"
|
||||
@@ -402,32 +506,39 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
|
||||
var/obj/item/device/pda/heads/pda = new(src)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Emergency Response Team"
|
||||
pda.ownjob = "Emergency Response Team Member"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.icon_state = "pda-medical"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/response_team(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/ert/medical(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/fire(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/o2(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/toxin(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/CMO(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/defibrillator/compact/combat/loaded(M), slot_belt)
|
||||
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(M), slot_r_hand)
|
||||
|
||||
if("eng")
|
||||
if("Engineering")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/engineer(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(M), slot_glasses)
|
||||
|
||||
var/obj/item/clothing/suit/space/rig/R = M.wear_suit
|
||||
R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/engineer(M)
|
||||
M.equip_to_slot_or_del(R.helmet, slot_head)
|
||||
R.helmet.flags |= NODROP
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson/night(M), slot_glasses)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
W.assignment = "Emergency Response Team"
|
||||
W.assignment = "Emergency Response Team Member"
|
||||
W.registered_name = M.real_name
|
||||
W.name = "[M.real_name]'s ID Card (Emergency Response Team - Engineer)"
|
||||
W.icon_state = "centcom"
|
||||
@@ -437,22 +548,68 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
|
||||
var/obj/item/device/pda/heads/pda = new(src)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Emergency Response Team"
|
||||
pda.ownjob = "Emergency Response Team Member"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.icon_state = "pda-engineer"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/response_team(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/ert/engineer(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/rcd/combat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/full(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/sheet/glass/full(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/full(M), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/response_team(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/inflatable(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/inflatable(M), slot_r_hand)
|
||||
|
||||
if("Janitorial")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/galoshes(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/purple(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/janitor(M), slot_wear_suit)
|
||||
|
||||
var/obj/item/clothing/suit/space/rig/R = M.wear_suit
|
||||
R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/janitor(M)
|
||||
M.equip_to_slot_or_del(R.helmet, slot_head)
|
||||
R.helmet.flags |= NODROP
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/janitor(M), slot_glasses)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
W.assignment = "Emergency Response Team Member"
|
||||
W.registered_name = M.real_name
|
||||
W.name = "[M.real_name]'s ID Card (Emergency Response Team - Janitor)"
|
||||
W.icon_state = "centcom"
|
||||
W.access = get_all_accesses()
|
||||
W.access += list(access_cent_general, access_cent_living, access_cent_storage)
|
||||
M.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
var/obj/item/device/pda/heads/pda = new(src)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Emergency Response Team Member"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.icon_state = "pda-janitor"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(src), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/lights/mixed(src), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/spray/plantbgone(src), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/glass/bucket(src), slot_in_backpack)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/janitor/full, slot_belt)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/mop/advanced(M), slot_r_hand)
|
||||
|
||||
new /obj/structure/mopbucket/full(get_turf(M))
|
||||
|
||||
/*/mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0) Old ERT equip verb.
|
||||
|
||||
@@ -462,7 +619,6 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
//Replaced with new ERT uniform
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_l_ear)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(src), slot_back)
|
||||
|
||||
@@ -490,9 +646,3 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
L.implanted = 1
|
||||
|
||||
return 1*/
|
||||
|
||||
//debug verb (That is horribly coded, LEAVE THIS OFF UNLESS PRIVATELY TESTING. Seriously.
|
||||
/*client/verb/ResponseTeam()
|
||||
set category = "Admin"
|
||||
if(!send_emergency_team)
|
||||
send_emergency_team = 1*/
|
||||
|
||||
@@ -20,6 +20,13 @@
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/eyes.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/glasses/meson/night
|
||||
name = "Night Vision Optical Meson Scanner"
|
||||
desc = "An Optical Meson Scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
|
||||
icon_state = "nvgmeson"
|
||||
item_state = "glasses"
|
||||
darkness_view = 8
|
||||
|
||||
/obj/item/clothing/glasses/meson/prescription
|
||||
name = "prescription mesons"
|
||||
@@ -42,10 +49,16 @@
|
||||
desc = "nothing"
|
||||
icon_state = "purple"
|
||||
item_state = "glasses"
|
||||
|
||||
/obj/item/clothing/glasses/janitor
|
||||
name = "Janitorial Goggles"
|
||||
desc = "These'll keep the soap out of your eyes."
|
||||
icon_state = "purple"
|
||||
item_state = "glasses"
|
||||
|
||||
/obj/item/clothing/glasses/night
|
||||
name = "Night Vision Goggles"
|
||||
desc = "You can totally see in the dark now!."
|
||||
desc = "You can totally see in the dark now!"
|
||||
icon_state = "night"
|
||||
item_state = "glasses"
|
||||
origin_tech = "magnets=2"
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert
|
||||
name = "emergency response team suit"
|
||||
desc = "A suit worn by members of the Nanotrasen Emaergency Response Team. Armoured, space ready, and fire resistant."
|
||||
desc = "A suit worn by members of the Nanotrasen Emergency Response Team. Armoured, space ready, and fire resistant."
|
||||
icon_state = "ert_commander"
|
||||
item_state = "suit-command"
|
||||
w_class = 3
|
||||
@@ -69,13 +69,13 @@
|
||||
//Engineer
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/engineer
|
||||
name = "emergency response team engineer helmet"
|
||||
desc = "A helmet worn by engineering members of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured and space ready."
|
||||
desc = "A helmet worn by engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_engineer"
|
||||
_color = "ert_engineer"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/engineer
|
||||
name = "emergency response team engineer suit"
|
||||
desc = "A suit worn by the engineering of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured, space ready, and fire resistant."
|
||||
desc = "A suit worn by the engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured, space ready, and fire resistant."
|
||||
icon_state = "ert_engineer"
|
||||
|
||||
//Medical
|
||||
@@ -88,4 +88,16 @@
|
||||
/obj/item/clothing/suit/space/rig/ert/medical
|
||||
name = "emergency response team medical suit"
|
||||
desc = "A suit worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
|
||||
icon_state = "ert_medical"
|
||||
icon_state = "ert_medical"
|
||||
|
||||
//Janitor
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/janitor
|
||||
name = "emergency response team janitor helmet"
|
||||
desc = "A helmet worn by janitorial members of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_janitor"
|
||||
_color = "ert_janitor"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/janitor
|
||||
name = "emergency response team janitor suit"
|
||||
desc = "A suit worn by the janitorial of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured, space ready, and fire resistant."
|
||||
icon_state = "ert_janitor"
|
||||
@@ -245,7 +245,7 @@
|
||||
if(!helmet)
|
||||
user << "\The [src] does not have a helmet installed."
|
||||
else
|
||||
user << "You detatch \the [helmet] from \the [src]'s helmet mount."
|
||||
user << "You detach \the [helmet] from \the [src]'s helmet mount."
|
||||
helmet.loc = get_turf(src)
|
||||
src.helmet = null
|
||||
return
|
||||
|
||||
@@ -1207,7 +1207,7 @@ obj/item/weapon/organ/head/attackby(obj/item/weapon/W as obj, mob/user as mob, p
|
||||
user.put_in_hands(B)
|
||||
B.transfer_identity(brainmob)
|
||||
else
|
||||
var/obj/item/brain/B = new(loc)
|
||||
var/obj/item/brain/B = new()
|
||||
user.put_in_hands(B)
|
||||
B.transfer_identity(brainmob)
|
||||
|
||||
|
||||
@@ -54,6 +54,17 @@
|
||||
materials = list("$metal" = 500, "$glass" = 1000)
|
||||
build_path = /obj/item/device/gps
|
||||
category = list("Bluespace")
|
||||
|
||||
/datum/design/miningsatchel_holding
|
||||
name = "Mining Satchel of Holding"
|
||||
desc = "A mining satchel that can hold an infinite amount of ores."
|
||||
id = "minerbag_holding"
|
||||
req_tech = list("bluespace" = 3, "materials" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$gold" = 250, "$uranium" = 500) //quite cheap, for more convenience
|
||||
reliability = 100
|
||||
build_path = /obj/item/weapon/storage/bag/ore/holding
|
||||
category = list("Bluespace")
|
||||
|
||||
/datum/design/telepad_beacon
|
||||
name = "Telepad Beacon"
|
||||
|
||||
@@ -51,6 +51,26 @@
|
||||
build_path = /obj/item/clothing/glasses/hud/security/night
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/nvgmesons
|
||||
name = "Night Vision Optical Meson Scanners"
|
||||
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
|
||||
id = "nvgmesons"
|
||||
req_tech = list("materials" = 5, "magnets" = 5, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 300, "$glass" = 400, "$plasma" = 250, "$uranium" = 1000)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Mining")
|
||||
|
||||
/datum/design/mesons
|
||||
name = "Optical Meson Scanners"
|
||||
desc = "Used for seeing walls, floors, and stuff through anything."
|
||||
id = "mesons"
|
||||
req_tech = list("materials" = 3, "magnets" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 200, "$glass" = 300, "$plasma" = 100)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/security_hud
|
||||
name = "Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
|
||||
|
||||
@@ -32,16 +32,6 @@
|
||||
build_path = /obj/item/weapon/pickaxe/drill
|
||||
category = list("Mining")
|
||||
|
||||
/datum/design/mesons
|
||||
name = "Optical Meson Scanners"
|
||||
desc = "Used for seeing walls, floors, and stuff through anything."
|
||||
id = "mesons"
|
||||
req_tech = list("materials" = 3, "magnets" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 200, "$glass" = 300, "$plasma" = 100)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Mining")
|
||||
|
||||
/datum/design/plasmacutter
|
||||
name = "Plasma Cutter"
|
||||
desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff."
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
var/active = 0 //This gets set to 1 on all devices except the one where the initial request was made.
|
||||
var/event = ""
|
||||
var/screen = 1
|
||||
var/list/ert_chosen = list()
|
||||
var/confirmed = 0 //This variable is set by the device that confirms the request.
|
||||
var/confirm_delay = 20 //(2 seconds)
|
||||
var/busy = 0 //Busy when waiting for authentication or an event request has been sent from this device.
|
||||
@@ -41,6 +42,9 @@
|
||||
event_source.confirmed = 1
|
||||
event_source.event_confirmed_by = usr
|
||||
else if(screen == 2)
|
||||
if(event == "Emergency Response Team" && !ert_chosen.len)
|
||||
user << "<span class='notice'>Pick the Emergency Response Team type first!</span>"
|
||||
return
|
||||
event_triggered_by = usr
|
||||
broadcast_request() //This is the device making the initial event request. It needs to broadcast to other devices
|
||||
|
||||
@@ -67,11 +71,16 @@
|
||||
var/data[0]
|
||||
data["screen"] = screen
|
||||
data["event"] = event
|
||||
data["src"] = "\ref[src]"
|
||||
data["erttypes"] = list()
|
||||
for(var/type in response_team_types)
|
||||
var/active = 0
|
||||
if((type in ert_chosen))
|
||||
active = 1
|
||||
data["erttypes"] += list(list("name" = type, "active" = active))
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "keycard_auth.tmpl", "Keycard Authentication Device UI", 520, 260)
|
||||
ui = new(user, src, ui_key, "keycard_auth.tmpl", "Keycard Authentication Device UI", 520, 320)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
@@ -85,10 +94,17 @@
|
||||
usr << "This device is without power."
|
||||
return
|
||||
if(href_list["triggerevent"])
|
||||
ert_chosen.Cut()
|
||||
event = href_list["triggerevent"]
|
||||
screen = 2
|
||||
if(href_list["reset"])
|
||||
reset()
|
||||
if(href_list["ert"])
|
||||
var/chosen = href_list["ert"]
|
||||
if((chosen in response_team_types) && !(chosen in ert_chosen))
|
||||
ert_chosen |= chosen
|
||||
else
|
||||
ert_chosen -= chosen
|
||||
|
||||
nanomanager.update_uis(src)
|
||||
add_fingerprint(usr)
|
||||
@@ -148,9 +164,10 @@
|
||||
feedback_inc("alert_keycard_auth_maintRevoke",1)
|
||||
if("Emergency Response Team")
|
||||
if(is_ert_blocked())
|
||||
usr << "\red All emergency response teams are dispatched and can not be called at this time."
|
||||
usr << "\red All Emergency Response Teams are dispatched and can not be called at this time."
|
||||
return
|
||||
|
||||
response_team_chosen_types += ert_chosen
|
||||
trigger_armed_response_team(1)
|
||||
feedback_inc("alert_keycard_auth_ert",1)
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 332 KiB After Width: | Height: | Size: 334 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 51 KiB |
@@ -2,23 +2,37 @@
|
||||
Title: Keycard Authentication Device UI
|
||||
Used In File(s): \code\modules\security_levels\keycard_authentication.dm
|
||||
-->
|
||||
<style type="text/css">
|
||||
.event {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
<div class="item">
|
||||
<h1>Keycard Authentication Device</h1>
|
||||
This device is used to trigger certain high security events. It requires the simultaneous swipe of two high-level ID cards.
|
||||
<div class="item">
|
||||
{{if data.screen == 1}}
|
||||
<h2>Trigger Event</h2>
|
||||
<div class="itemContents">
|
||||
{{:helper.link('Red Alert', 'alert', { 'triggerevent' : 'Red Alert', 'source' : data.src })}}
|
||||
{{:helper.link('Emergency Response Team', 'alert', { 'triggerevent' : 'Emergency Response Team', 'source' : data.src })}}
|
||||
</div>
|
||||
<div style="margin-top: 10px;" class="itemContents">
|
||||
{{:helper.link('Grant Emergency Maintenance Access', 'unlocked', { 'triggerevent' : 'Grant Emergency Maintenance Access', 'source' : data.src })}}
|
||||
{{:helper.link('Revoke Emergency Maintenance Access', 'locked', { 'triggerevent' : 'Revoke Emergency Maintenance Access', 'source' : data.src })}}
|
||||
</div>
|
||||
{{:helper.link('Red Alert', 'alert', { 'triggerevent' : 'Red Alert' })}}
|
||||
{{:helper.link('Emergency Response Team', 'alert', { 'triggerevent' : 'Emergency Response Team' })}}
|
||||
{{:helper.link('Grant Emergency Maintenance Access', 'unlocked', { 'triggerevent' : 'Grant Emergency Maintenance Access' })}}
|
||||
{{:helper.link('Revoke Emergency Maintenance Access', 'locked', { 'triggerevent' : 'Revoke Emergency Maintenance Access' })}}
|
||||
{{else data.screen == 2}}
|
||||
<h2>Please swipe your card to authorize the following event:</h2>
|
||||
<div style="text-align: center; font-size: 16px; font-weight: bold;">{{:data.event}}</div>
|
||||
{{if data.event == 'Emergency Response Team'}}
|
||||
<div class="item">
|
||||
<div class="itemLabel">Select ERT Type:</div>
|
||||
<div class="itemContent">
|
||||
{{for data.erttypes}}
|
||||
{{:helper.link(value.name, value.active ? 'minus' : 'plus', { 'ert' : value.name }, '', value.active ? 'linkOn' : '')}}
|
||||
{{/for}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<h2 class="blue-header">Please swipe your card to authorize the following event</h2>
|
||||
<div class="event">{{:data.event}}</div>
|
||||
{{:helper.link('Back', 'close', { 'reset' : 1 })}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||