mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
StrikePlus
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
//Strike Team Defines
|
||||
#define TEAM_DEATHSQUAD "Death Squad"
|
||||
#define TEAM_ERT "Emergency Response Team"
|
||||
#define TEAM_ELITE_SYNDIE "Elite Strike Team"
|
||||
#define TEAM_ELITE_SYNDIE "Elite Syndicate Squad"
|
||||
#define TEAM_CUSTOM "Strike Team"
|
||||
|
||||
2
cfg/admin.txt
Normal file
2
cfg/admin.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
jmwturner role=admin
|
||||
deitylink role=admin
|
||||
@@ -143,6 +143,8 @@
|
||||
"malfunction",
|
||||
"resteam",
|
||||
"dsquad",
|
||||
"elite",
|
||||
"custom",
|
||||
)
|
||||
var/text = ""
|
||||
|
||||
@@ -401,10 +403,32 @@
|
||||
text += "<a href='?src=\ref[src];dsquad=dsquad'>yes</a>|<b>NO</b>"
|
||||
sections["dsquad"] = text
|
||||
|
||||
/** ELITE SYNDICATE SQUAD ***/
|
||||
if (istype(current, /mob/living/carbon))
|
||||
text = "Elite Syndicate Squad"
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if (src in ticker.mode.elite_syndie)
|
||||
text += "<b>YES</b>|<a href='?src=\ref[src];elite=clear'>no</a>"
|
||||
else
|
||||
text += "<a href='?src=\ref[src];elite=elite'>yes</a>|<b>NO</b>"
|
||||
sections["elite"] = text
|
||||
|
||||
/** CUSTOM STRIKE TEAM ***/
|
||||
if (istype(current, /mob/living/carbon))
|
||||
text = "Custom Team"
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if (src in ticker.mode.custom_team)
|
||||
text += "<b>YES</b>|<a href='?src=\ref[src];custom=clear'>no</a>"
|
||||
else
|
||||
text += "<a href='?src=\ref[src];custom=custom'>yes</a>|<b>NO</b>"
|
||||
sections["custom"] = text
|
||||
|
||||
out += {"<br>
|
||||
<b>Strike Teams:</b><br>
|
||||
[sections["resteam"]]<br>
|
||||
[sections["dsquad"]]<br>
|
||||
[sections["elite"]]<br>
|
||||
[sections["custom"]]<br>
|
||||
<br>"}
|
||||
|
||||
out += {"<br>
|
||||
@@ -1105,6 +1129,37 @@
|
||||
special_role = "Death Commando"
|
||||
log_admin("[key_name(usr)] has deathsquad'ed [key_name(current)].")
|
||||
|
||||
else if (href_list["elite"])
|
||||
switch(href_list["elite"])
|
||||
if ("clear")
|
||||
if(src in ticker.mode.elite_syndie)
|
||||
ticker.mode.elite_syndie -= src
|
||||
special_role = null
|
||||
to_chat(current, "<span class='danger'><FONT size = 3>You have been demoted! You are no longer an Elite Syndicate Squadie!</FONT></span>")
|
||||
log_admin("[key_name_admin(usr)] has de-elite syndie squad'ed [current].")
|
||||
if ("elite")
|
||||
if (!(src in ticker.mode.elite_syndie))
|
||||
ticker.mode.elite_syndie += src
|
||||
assigned_role = "MODE"
|
||||
special_role = "Syndicate Commando"
|
||||
log_admin("[key_name(usr)] has elite syndie squad'ed [key_name(current)].")
|
||||
|
||||
else if (href_list["custom"])
|
||||
var/datum/striketeam/team = sentStrikeTeams[TEAM_CUSTOM]
|
||||
switch(href_list["custom"])
|
||||
if ("clear")
|
||||
if(src in ticker.mode.custom_team)
|
||||
ticker.mode.custom_team -= src
|
||||
special_role = null
|
||||
to_chat(current, "<span class='danger'><FONT size = 3>You have been demoted! You are no longer part of the [team.striketeam_name]!</FONT></span>")
|
||||
log_admin("[key_name_admin(usr)] has de-striketeam'ed [current].")
|
||||
if ("custom")
|
||||
if (!(src in ticker.mode.custom_team))
|
||||
ticker.mode.custom_team += src
|
||||
assigned_role = "MODE"
|
||||
special_role = "Custom Team"
|
||||
log_admin("[key_name(usr)] has striketeam'ed [key_name(current)].")
|
||||
|
||||
|
||||
edit_memory()
|
||||
/*
|
||||
|
||||
@@ -267,6 +267,10 @@ proc/process_adminbus_teleport_locs()
|
||||
icon_state = "shuttle"
|
||||
name = "\improper Transport Shuttle"
|
||||
|
||||
/area/shuttle/ert/centcom
|
||||
icon_state = "shuttle"
|
||||
name = "\improper ERT Shuttle Centcom"
|
||||
|
||||
/area/shuttle/alien/base
|
||||
icon_state = "shuttle"
|
||||
name = "\improper Alien Shuttle Base"
|
||||
@@ -290,6 +294,10 @@ proc/process_adminbus_teleport_locs()
|
||||
name = "\improper Special Ops Shuttle"
|
||||
icon_state = "shuttlered"
|
||||
|
||||
/area/shuttle/striketeam/centcom
|
||||
name = "\improper Strike Team Shuttle"
|
||||
icon_state = "shuttlered"
|
||||
|
||||
/area/shuttle/specops/station
|
||||
name = "\improper Special Ops Shuttle"
|
||||
icon_state = "shuttlered2"
|
||||
@@ -502,12 +510,14 @@ proc/process_adminbus_teleport_locs()
|
||||
|
||||
/area/centcom/evac
|
||||
name = "\improper Centcom Emergency Shuttle"
|
||||
icon_state = "centcom-evac"
|
||||
|
||||
/area/centcom/suppy
|
||||
name = "\improper Centcom Supply Shuttle"
|
||||
|
||||
/area/centcom/ferry
|
||||
name = "\improper Centcom Transport Shuttle"
|
||||
icon_state = "centcom-ferry"
|
||||
|
||||
/area/centcom/shuttle
|
||||
name = "\improper Centcom Administration Shuttle"
|
||||
@@ -520,12 +530,25 @@ proc/process_adminbus_teleport_locs()
|
||||
|
||||
/area/centcom/specops
|
||||
name = "\improper Centcom Special Ops"
|
||||
icon_state = "centcom-specops"
|
||||
dynamic_lighting = 1
|
||||
|
||||
/area/centcom/striketeam
|
||||
name = "\improper Custom Strike Team"
|
||||
icon_state = "centcom-specops"
|
||||
dynamic_lighting = 1
|
||||
|
||||
/area/centcom/creed
|
||||
name = "Creed's Office"
|
||||
|
||||
/area/centcom/holding
|
||||
name = "\improper Holding Facility"
|
||||
icon_state = "centcom-hold"
|
||||
|
||||
/area/centcom/ert
|
||||
name = "\improper ERT Preparation Center"
|
||||
icon_state = "centcom-ert"
|
||||
dynamic_lighting = 1
|
||||
|
||||
//SYNDICATES
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
var/list/datum/mind/deathsquad = list()
|
||||
var/list/datum/mind/ert = list()
|
||||
var/ert_reason
|
||||
var/list/datum/mind/elite_syndie = list()
|
||||
var/list/datum/mind/custom_team = list()
|
||||
var/rage = 0
|
||||
var/can_be_mixed = FALSE
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
/var/const/Mostly for admin fun times.*/
|
||||
/var/const/access_cent_general = 101//General facilities.
|
||||
/var/const/access_cent_thunder = 102//Thunderdome.
|
||||
/var/const/access_cent_specops = 103//Death Commando.
|
||||
/var/const/access_cent_specops = 103//Deathsquad.
|
||||
/var/const/access_cent_medical = 104//Medical/Research
|
||||
/var/const/access_cent_living = 105//Living quarters.
|
||||
/var/const/access_cent_storage = 106//Generic storage areas.
|
||||
|
||||
@@ -662,3 +662,4 @@ var/global/list/cryo_health_indicator = list( "full" = image("icon" = 'icons/obj
|
||||
|
||||
/datum/data/function/proc/display()
|
||||
return
|
||||
|
||||
|
||||
@@ -134,6 +134,14 @@ var/list/poddoors = list()
|
||||
s.start()
|
||||
return
|
||||
|
||||
/obj/machinery/door/poddoor/admin
|
||||
name = "Explosion-proof Podlock"
|
||||
desc = "Why it no open!!!"
|
||||
explosion_block = 50
|
||||
penetration_dampening = 200
|
||||
|
||||
/obj/machinery/door/poddoor/admin/ex_act(severity)
|
||||
|
||||
/*
|
||||
/obj/machinery/door/poddoor/two_tile_hor/open()
|
||||
if (src.operating == 1) //doors can still open when emag-disabled
|
||||
|
||||
161
code/game/machinery/suit_dispenser.dm
Normal file
161
code/game/machinery/suit_dispenser.dm
Normal file
@@ -0,0 +1,161 @@
|
||||
//////////////////////////////////////
|
||||
// SUIT DISPENSER UNIT ///////////////
|
||||
//////////////////////////////////////
|
||||
|
||||
var/list/dispenser_presets = list()
|
||||
|
||||
/obj/machinery/suit_dispenser
|
||||
name = "Suit Dispenser"
|
||||
desc = "An industrial U-Tak-It Dispenser unit designed to fetch all kinds of space suits.."
|
||||
icon = 'icons/obj/suitdispenser.dmi'
|
||||
icon_state = "suitdispenser"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
|
||||
|
||||
/obj/machinery/suit_dispenser/ert
|
||||
desc = "An industrial U-Tak-It Dispenser unit designed to fetch all kinds of space suits. This one distribributes Emergency Responder space suits."
|
||||
|
||||
/obj/machinery/suit_dispenser/ert/attack_hand(var/mob/user)
|
||||
if(sentStrikeTeams(TEAM_ERT))
|
||||
var/datum/striketeam/ert/team = sent_strike_teams[TEAM_ERT]
|
||||
if (user in response_team_members)
|
||||
if (user in distributed_ert_suits)
|
||||
to_chat(user,"<span class='warning'>You've already picked up your suit.</span>")
|
||||
else
|
||||
if (user.key == team.leader_key)
|
||||
to_chat(user,"<span class='notice'>Identified as [user.real_name]. Here is your suit commander. Have a good day.</span>")
|
||||
|
||||
flick("suitdispenser-flick",src)
|
||||
|
||||
sleep(17)
|
||||
|
||||
if (user in distributed_ert_suits)
|
||||
return
|
||||
|
||||
distributed_ert_suits |= user
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
new /obj/item/clothing/suit/space/ert/commander(T)
|
||||
new /obj/item/clothing/head/helmet/space/ert/commander(T)
|
||||
|
||||
else
|
||||
to_chat(user,"<span class='notice'>Identified as [user.real_name]. Please choose your suit specialization.")
|
||||
|
||||
var/list/suit_list = list(
|
||||
"Security",
|
||||
"Medical",
|
||||
"Engineer",
|
||||
"CANCEL"
|
||||
)
|
||||
|
||||
var/choice = input("Choose your suit specialization.", "Suit Dispenser") in suit_list
|
||||
|
||||
if(choice == "CANCEL")
|
||||
return
|
||||
|
||||
flick("suitdispenser-flick",src)
|
||||
|
||||
sleep(17)
|
||||
|
||||
if (user in distributed_ert_suits)
|
||||
return
|
||||
|
||||
distributed_ert_suits |= user
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
switch(choice)
|
||||
if("Security")
|
||||
new /obj/item/clothing/suit/space/ert/security(T)
|
||||
new /obj/item/clothing/head/helmet/space/ert/security(T)
|
||||
to_chat(user,"<span class='notice'>Security specialization processed. Have a good day.</span>")
|
||||
if("Medical")
|
||||
new /obj/item/clothing/suit/space/ert/medical(T)
|
||||
new /obj/item/clothing/head/helmet/space/ert/medical(T)
|
||||
to_chat(user,"<span class='notice'>Medical specialization processed. Have a good day.</span>")
|
||||
if("Engineer")
|
||||
new /obj/item/clothing/suit/space/ert/engineer(T)
|
||||
new /obj/item/clothing/head/helmet/space/ert/engineer(T)
|
||||
to_chat(user,"<span class='notice'>Engineer specialization processed. Have a good day.</span>")
|
||||
|
||||
else
|
||||
to_chat(user,"<span class='warning'>Access Denied. You aren't part of the Emergency Response Team.</span>")
|
||||
else
|
||||
to_chat(user,"<span class='warning'>Access Denied. No Emergency Response Team has been dispatched yet.</span>")
|
||||
|
||||
|
||||
/obj/machinery/suit_dispenser/striketeam
|
||||
icon_state = "suitdispenser-empty"
|
||||
var/preset = null
|
||||
var/used = 0
|
||||
|
||||
/obj/machinery/suit_dispenser/striketeam/attack_hand(var/mob/user)
|
||||
if(!preset)
|
||||
to_chat(user,"<span class='warning'>Error. No presets have been set.</span>")
|
||||
return
|
||||
|
||||
if(used)
|
||||
to_chat(user,"<span class='warning'>This dispenser must be reloaded by authorities in charge before you can use it again.</span>")
|
||||
return
|
||||
|
||||
used = 1
|
||||
|
||||
var/list/items_to_spawn = dispenser_presets[preset]
|
||||
|
||||
icon_state = "suitdispenser-open"
|
||||
flick("suitdispenser-once",src)
|
||||
|
||||
sleep(17)
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
for(var/i = 1 to items_to_spawn.len)
|
||||
var/spawntype = items_to_spawn[i]
|
||||
new spawntype(T)
|
||||
|
||||
|
||||
/obj/machinery/suit_dispenser/striketeam/attack_ghost(var/mob/user)
|
||||
if(isAdminGhost(user))
|
||||
var/list/choices = list(
|
||||
"Define Preset from items on top",
|
||||
"Choose a Preset",
|
||||
)
|
||||
|
||||
if (used)
|
||||
choices |= "Resupply"
|
||||
|
||||
choices |= "CANCEL"
|
||||
|
||||
var/choice = input("Choose action.", "Suit Dispenser") in choices
|
||||
|
||||
switch(choice)
|
||||
if("CANCEL")
|
||||
return
|
||||
if("Define Preset from items on top")
|
||||
var/list/items_on_top = list()
|
||||
for (var/obj/item/I in get_turf(src))
|
||||
items_on_top += I.type
|
||||
if (items_on_top.len <= 0)
|
||||
to_chat(user,"<span class='warning'>Error. No items on top of the dispenser. Place items on top of the dispenser to define them as presets.</span>")
|
||||
return
|
||||
else
|
||||
var/preset_name = input(user,"[items_on_top.len] items found. Name your Preset","Suit Dispenser", null) as text|null
|
||||
if (!preset_name)
|
||||
return
|
||||
dispenser_presets[preset_name] = items_on_top
|
||||
if("Choose a Preset")
|
||||
if (dispenser_presets.len <= 0)
|
||||
to_chat(user,"<span class='warning'>Error. No presets have been set. Place items on top of the dispenser to define them as presets.</span>")
|
||||
return
|
||||
var/no_preset = !preset
|
||||
preset = input("Choose a Preset.", "Suit Dispenser") in dispenser_presets
|
||||
if (preset && no_preset)
|
||||
icon_state = "suitdispenser"
|
||||
flick("suitdispenser-fill",src)
|
||||
if("Resupply")
|
||||
used = 0
|
||||
icon_state = "suitdispenser"
|
||||
flick("suitdispenser-resupply",src)
|
||||
@@ -22,7 +22,7 @@ var/global/datum/shuttle/arrival/arrival_shuttle = new(starting_area = /area/shu
|
||||
areaname = "station arrivals"
|
||||
|
||||
|
||||
//TRANSPORT SHUTTLE
|
||||
//CENTCOM FERRY
|
||||
var/global/datum/shuttle/transport/transport_shuttle = new(starting_area = /area/shuttle/transport1/centcom)
|
||||
|
||||
/datum/shuttle/transport
|
||||
@@ -63,6 +63,186 @@ var/global/datum/shuttle/transport/transport_shuttle = new(starting_area = /area
|
||||
areaname = "central command"
|
||||
|
||||
|
||||
//ERT SHUTTLE
|
||||
var/global/datum/shuttle/ert/ert_shuttle = new(starting_area = /area/shuttle/ert/centcom)
|
||||
|
||||
/datum/shuttle/ert
|
||||
name = "ert shuttle"
|
||||
|
||||
cant_leave_zlevel = list() //Striketeam
|
||||
|
||||
cooldown = 0
|
||||
pre_flight_delay = 10
|
||||
transit_delay = 0
|
||||
|
||||
stable = 0
|
||||
|
||||
req_access = list(access_cent_ert)
|
||||
|
||||
/datum/shuttle/ert/initialize()
|
||||
.=..()
|
||||
add_dock(/obj/docking_port/destination/ert/station)
|
||||
add_dock(/obj/docking_port/destination/ert/centcom)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/ert
|
||||
machine_flags = 0 //No screwtoggle / emaggable to prevent mortals from fucking with shit
|
||||
allow_silicons = 0
|
||||
|
||||
/obj/machinery/computer/shuttle_control/ert/New()
|
||||
link_to(ert_shuttle)
|
||||
.=..()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/ert/emag() //Can't be emagged to hijack the ert shuttle
|
||||
return
|
||||
|
||||
//code/game/objects/structures/docking_port.dm
|
||||
|
||||
/obj/docking_port/destination/ert/station
|
||||
areaname = "station arrivals (docking port 2)"
|
||||
|
||||
/obj/docking_port/destination/ert/centcom
|
||||
areaname = "central command"
|
||||
|
||||
|
||||
//DEATHSQUAD SHUTTLE
|
||||
var/global/datum/shuttle/deathsquad/deathsquad_shuttle = new(starting_area = /area/shuttle/specops/centcom)
|
||||
|
||||
/datum/shuttle/deathsquad
|
||||
name = "deathsquad shuttle"
|
||||
|
||||
cant_leave_zlevel = list() //Striketeam
|
||||
|
||||
cooldown = 0
|
||||
pre_flight_delay = 10
|
||||
transit_delay = 0
|
||||
destroy_everything = 1
|
||||
stable = 0
|
||||
|
||||
req_access = list(access_cent_specops)
|
||||
|
||||
/datum/shuttle/deathsquad/initialize()
|
||||
.=..()
|
||||
add_dock(/obj/docking_port/destination/deathsquad/near_station)
|
||||
add_dock(/obj/docking_port/destination/deathsquad/in_station)
|
||||
add_dock(/obj/docking_port/destination/deathsquad/centcom)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/deathsquad
|
||||
machine_flags = 0 //No screwtoggle / emaggable to prevent mortals from fucking with shit
|
||||
allow_silicons = 0
|
||||
|
||||
/obj/machinery/computer/shuttle_control/deathsquad/New()
|
||||
link_to(deathsquad_shuttle)
|
||||
.=..()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/deathsquad/emag() //Can't be emagged to hijack the deathsquad shuttle
|
||||
return
|
||||
|
||||
//code/game/objects/structures/docking_port.dm
|
||||
|
||||
/obj/docking_port/destination/deathsquad/near_station
|
||||
areaname = "near the station"
|
||||
|
||||
/obj/docking_port/destination/deathsquad/in_station
|
||||
areaname = "station arrivals (crashing through)"
|
||||
|
||||
/obj/docking_port/destination/deathsquad/centcom
|
||||
areaname = "central command"
|
||||
|
||||
|
||||
//ELITE SYNDIE SHUTTLE
|
||||
var/global/datum/shuttle/elite_syndie/elite_syndie_shuttle = new(starting_area = /area/shuttle/syndicate_elite/mothership)
|
||||
|
||||
/datum/shuttle/elite_syndie
|
||||
name = "elite syndie shuttle"
|
||||
|
||||
cant_leave_zlevel = list() //Striketeam
|
||||
|
||||
cooldown = 0
|
||||
pre_flight_delay = 10
|
||||
transit_delay = 0
|
||||
destroy_everything = 1
|
||||
stable = 0
|
||||
|
||||
req_access = list(access_syndicate)
|
||||
|
||||
/datum/shuttle/elite_syndie/initialize()
|
||||
.=..()
|
||||
add_dock(/obj/docking_port/destination/elite_syndie/near_station)
|
||||
add_dock(/obj/docking_port/destination/elite_syndie/in_station)
|
||||
add_dock(/obj/docking_port/destination/elite_syndie/motherbase)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/elite_syndie
|
||||
machine_flags = 0 //No screwtoggle / emaggable to prevent mortals from fucking with shit
|
||||
allow_silicons = 0
|
||||
icon_state = "syndishuttle"
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/machinery/computer/shuttle_control/elite_syndie/New()
|
||||
link_to(elite_syndie_shuttle)
|
||||
.=..()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/elite_syndie/emag() //Can't be emagged to hijack the elite syndie shuttle
|
||||
return
|
||||
|
||||
//code/game/objects/structures/docking_port.dm
|
||||
|
||||
/obj/docking_port/destination/elite_syndie/near_station
|
||||
areaname = "near the station"
|
||||
|
||||
/obj/docking_port/destination/elite_syndie/in_station
|
||||
areaname = "station arrivals (crashing through)"
|
||||
|
||||
/obj/docking_port/destination/elite_syndie/motherbase
|
||||
areaname = "syndicate motherbase"
|
||||
|
||||
|
||||
//CUSTOM STRIKE TEAM SHUTTLE
|
||||
var/global/datum/shuttle/striketeam/strike_team_shuttle = new(starting_area = /area/shuttle/striketeam/centcom)
|
||||
|
||||
/datum/shuttle/striketeam
|
||||
name = "strike team shuttle"
|
||||
|
||||
cant_leave_zlevel = list() //Striketeam
|
||||
|
||||
cooldown = 0
|
||||
pre_flight_delay = 10
|
||||
transit_delay = 0
|
||||
destroy_everything = 1
|
||||
stable = 0
|
||||
|
||||
req_access = list(access_cent_captain)
|
||||
|
||||
/datum/shuttle/striketeam/initialize()
|
||||
.=..()
|
||||
add_dock(/obj/docking_port/destination/striketeam/destination1)
|
||||
add_dock(/obj/docking_port/destination/striketeam/destination2)
|
||||
add_dock(/obj/docking_port/destination/striketeam/base)
|
||||
|
||||
/obj/machinery/computer/shuttle_control/striketeam
|
||||
machine_flags = 0 //No screwtoggle / emaggable to prevent mortals from fucking with shit
|
||||
allow_silicons = 0
|
||||
icon_state = "syndishuttle"
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/machinery/computer/shuttle_control/striketeam/New()
|
||||
link_to(strike_team_shuttle)
|
||||
.=..()
|
||||
|
||||
/obj/machinery/computer/shuttle_control/striketeam/emag() //Can't be emagged to hijack the strike team shuttle
|
||||
return
|
||||
|
||||
//code/game/objects/structures/docking_port.dm
|
||||
|
||||
/obj/docking_port/destination/striketeam/destination1
|
||||
areaname = "destination 1"
|
||||
|
||||
/obj/docking_port/destination/striketeam/destination2
|
||||
areaname = "destination 2"
|
||||
|
||||
/obj/docking_port/destination/striketeam/base
|
||||
areaname = "base"
|
||||
|
||||
|
||||
//ADMIN SHUTTLE
|
||||
var/global/datum/shuttle/admin/admin_shuttle = new(starting_area = /area/shuttle/administration/centcom)
|
||||
/datum/shuttle/admin
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
if(canSmoothWith)
|
||||
for(var/cdir in cardinal)
|
||||
var/turf/T = get_step(src,cdir)
|
||||
if(isSmoothableNeighbor(T))
|
||||
if(isSmoothableNeighbor(T) && T.canSmoothWith)
|
||||
T.relativewall()
|
||||
for(var/atom/A in T)
|
||||
if(isSmoothableNeighbor(A))
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
//ERT
|
||||
|
||||
var/list/response_team_members = list()
|
||||
var/list/distributed_ert_suits = list()
|
||||
|
||||
/datum/striketeam/ert
|
||||
striketeam_name = "Emergency Response Team"
|
||||
striketeam_name = TEAM_ERT
|
||||
faction_name = "Nanotrasen"
|
||||
mission = "Ensure the station's return to working order, or organize its evacuation if judged necessary."
|
||||
team_size = 6
|
||||
@@ -26,7 +27,15 @@ var/list/response_team_members = list()
|
||||
to_chat(H, "<span class='notice'>Your mission is: <span class='danger'>[mission]</span></span>")
|
||||
|
||||
/datum/striketeam/ert/create_commando(obj/spawn_location, leader_selected = 0, key = "")
|
||||
var/mob/living/carbon/human/M = new(spawn_location.loc)
|
||||
var/mob/living/carbon/human/M = new(spawn_location)
|
||||
|
||||
var/obj/machinery/ert_cryo_cell/spawner = locate() in get_step(spawn_location,NORTH)
|
||||
|
||||
if(spawner)
|
||||
spawner.occupant = M
|
||||
M.forceMove(spawner)
|
||||
spawner.update_icon()
|
||||
|
||||
response_team_members |= M
|
||||
|
||||
var/mob/user = null
|
||||
@@ -34,7 +43,13 @@ var/list/response_team_members = list()
|
||||
if(MO.key == key)
|
||||
user = MO
|
||||
|
||||
if (spawner)
|
||||
user.forceMove(spawner.loc)
|
||||
else
|
||||
user.forceMove(spawn_location.loc)
|
||||
|
||||
to_chat(user, "<span class='notice'>Congratulations, you've been selected to be part of an ERT. You can customize your character, but don't take too long, time is of the essence!</span>")
|
||||
user << 'sound/music/ERT.ogg'
|
||||
|
||||
var/commando_name = copytext(sanitize(input(user, "Pick a name","Name") as null|text), 1, MAX_MESSAGE_LEN)
|
||||
|
||||
@@ -111,8 +126,16 @@ var/list/response_team_members = list()
|
||||
M.mind.special_role = "Response Team"
|
||||
if(!(M.mind in ticker.minds))
|
||||
ticker.minds += M.mind//Adds them to regular mind list.
|
||||
M.forceMove(spawn_location.loc)
|
||||
|
||||
ticker.mode.ert |= M.mind
|
||||
M.equip_response_team(leader_selected)
|
||||
|
||||
if(spawner)
|
||||
spawner.occupant = null
|
||||
spawner.update_icon()
|
||||
|
||||
M.forceMove(spawn_location.loc)
|
||||
|
||||
return M
|
||||
|
||||
/mob/living/carbon/human/proc/equip_response_team(leader_selected = 0)
|
||||
@@ -121,7 +144,7 @@ var/list/response_team_members = list()
|
||||
|
||||
//Adding Camera Network
|
||||
var/obj/machinery/camera/camera = new /obj/machinery/camera(src) //Gives all the commandos internals cameras.
|
||||
camera.network = "CREED"
|
||||
camera.network = list("ERT")
|
||||
camera.c_tag = real_name
|
||||
|
||||
//Basic Uniform
|
||||
@@ -163,3 +186,73 @@ var/list/response_team_members = list()
|
||||
L.part = affected
|
||||
|
||||
return 1
|
||||
|
||||
//stealing that sweet bobbing animation from cryo.dm
|
||||
/obj/machinery/ert_cryo_cell
|
||||
name = "cryo cell"
|
||||
icon = 'icons/obj/cryogenics.dmi'
|
||||
icon_state = "pod0"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
plane = OBJ_PLANE
|
||||
light_color = LIGHT_COLOR_HALOGEN
|
||||
light_range_on = 1
|
||||
light_power_on = 2
|
||||
use_auto_lights = 1
|
||||
machine_flags = null
|
||||
var/mob/living/carbon/occupant = null
|
||||
var/running_bob_animation = 0
|
||||
|
||||
/obj/machinery/ert_cryo_cell/examine(mob/user)
|
||||
..()
|
||||
if(Adjacent(user))
|
||||
if(occupant)
|
||||
to_chat(user, "A figure floats in the depths, they appear to be [occupant.real_name]")
|
||||
else
|
||||
to_chat(user, "<span class='info'>The chamber appears devoid of anything but its biotic fluids.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Too far away to view contents.</span>")
|
||||
|
||||
|
||||
/obj/machinery/ert_cryo_cell/update_icon()
|
||||
overlays.len = 0
|
||||
|
||||
if(!occupant)
|
||||
overlays += "lid0"
|
||||
return
|
||||
|
||||
if(occupant)
|
||||
var/image/pickle = image(occupant.icon, occupant.icon_state)
|
||||
pickle.overlays = occupant.overlays
|
||||
pickle.pixel_y = 20
|
||||
|
||||
overlays += pickle
|
||||
overlays += "lid1"
|
||||
if(!running_bob_animation)
|
||||
var/up = 0
|
||||
spawn()
|
||||
running_bob_animation = 1
|
||||
while(occupant)
|
||||
overlays.len = 0
|
||||
|
||||
switch(pickle.pixel_y)
|
||||
if(21)
|
||||
switch(up)
|
||||
if(2)
|
||||
pickle.pixel_y = 22
|
||||
|
||||
if(1)
|
||||
pickle.pixel_y = 20
|
||||
if(20)
|
||||
pickle.pixel_y = 21
|
||||
up = 2
|
||||
if(22)
|
||||
pickle.pixel_y = 21
|
||||
up = 1
|
||||
|
||||
pickle.overlays = occupant.overlays
|
||||
overlays += pickle
|
||||
overlays += "lid1"
|
||||
sleep(7)
|
||||
running_bob_animation = 0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//DEATH SQUAD
|
||||
|
||||
/datum/striketeam/deathsquad
|
||||
striketeam_name = "Death Squad"
|
||||
striketeam_name = TEAM_DEATHSQUAD
|
||||
faction_name = "Nanotrasen"
|
||||
mission = "Clean up the Station of all enemies of Nanotrasen. Avoid damage to Nanotrasen assets, unless you judge it necessary."
|
||||
team_size = 6
|
||||
@@ -30,13 +30,13 @@
|
||||
new_commando.mind_initialize()
|
||||
new_commando.mind.assigned_role = "MODE"
|
||||
new_commando.mind.special_role = "Death Commando"
|
||||
ticker.mode.traitors |= new_commando.mind//Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
ticker.mode.deathsquad |= new_commando.mind
|
||||
new_commando.equip_death_commando(leader_selected)
|
||||
|
||||
ticker.mode.deathsquad += new_commando.mind
|
||||
return new_commando
|
||||
|
||||
/datum/striketeam/deathsquad/greet_commando(var/mob/living/carbon/human/H)
|
||||
H << 'sound/music/deathsquad.ogg'
|
||||
if(H.key == leader_key)
|
||||
to_chat(H, "<span class='notice'>You are [H.real_name], a tactical genius and the leader of the Death Squad, in the service of Nanotrasen.</span>")
|
||||
else
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
//Adding Camera Network
|
||||
var/obj/machinery/camera/camera = new /obj/machinery/camera(src) //Gives all the commandos internals cameras.
|
||||
camera.network = "CREED"
|
||||
camera.network = list("CREED")
|
||||
camera.c_tag = real_name
|
||||
|
||||
//Basic Uniform
|
||||
|
||||
@@ -7,9 +7,10 @@ var/list/sent_strike_teams = list()
|
||||
var/mission = "Clean up the Station of all enemies of Nanotrasen. Avoid damage to Nanotrasen assets, unless you judge it necessary."
|
||||
var/team_size = 6
|
||||
var/min_size_for_leader = 4//set to 0 so there's always a designated team leader or to -1 so there is no leader.
|
||||
var/spawns_name = "Commando"
|
||||
var/spawns_name = "Striketeam"
|
||||
var/can_customize = FALSE
|
||||
var/logo = "nano-logo"
|
||||
var/custom = 0
|
||||
|
||||
var/list/applicants = list()
|
||||
var/searching = FALSE
|
||||
@@ -17,6 +18,7 @@ var/list/sent_strike_teams = list()
|
||||
var/leader_key = ""
|
||||
var/list/team_composition = list()
|
||||
|
||||
var/list/datum/objective/objectives = list()
|
||||
|
||||
/datum/striketeam/proc/trigger_strike(var/mob/user)
|
||||
//Is the game started
|
||||
@@ -50,11 +52,14 @@ var/list/sent_strike_teams = list()
|
||||
else
|
||||
mission = initial(mission)
|
||||
|
||||
if(sentStrikeTeams(striketeam_name))
|
||||
if(sentStrikeTeams(striketeam_name) || (custom && sentStrikeTeams(TEAM_CUSTOM)))
|
||||
to_chat(user, "Looks like someone beat you to it.")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if (custom)
|
||||
sent_strike_teams[TEAM_CUSTOM] = src
|
||||
else
|
||||
sent_strike_teams[striketeam_name] = src
|
||||
|
||||
if(user)
|
||||
@@ -176,11 +181,118 @@ var/list/sent_strike_teams = list()
|
||||
///////////////////////////////////////CUSTOM STRIKE TEAMS///////////////////////////////////
|
||||
|
||||
/datum/striketeam/custom/trigger_strike(var/mob/user)
|
||||
custom = 1
|
||||
striketeam_name = input(user, "Name your strike team.", "Custom Strike Team", "")
|
||||
faction_name = input(user, "Name the organization sending this strike team.", "Custom Strike Team", "")
|
||||
team_size = input(user, "Set the maximum amount of commandos in your squad", "Custom Strike Team", "") as num
|
||||
min_size_for_leader = -1
|
||||
spawns_name = input(user, "What are named the landmarks you want your squadies to spawn at?", "Custom Strike Team", "")
|
||||
can_customize = FALSE
|
||||
logo = input(user, "Got a custom logo for your strike team?", "Custom Strike Team", "nano-logo")
|
||||
spawns_name = "Striketeam"
|
||||
can_customize_name = 0
|
||||
can_customize_appearance = 0
|
||||
if(alert("Let the team members choose their name?",,"Yes", "No") == "Yes")
|
||||
can_customize_name = 1
|
||||
|
||||
if(alert("Let the team members choose their appearance?",,"Yes", "No") == "Yes")
|
||||
can_customize_appearance = 1
|
||||
//logo = input(user, "Got a custom logo for your strike team?", "Custom Strike Team", "nano-logo")
|
||||
to_chat(user,"<span class='notice'>Remember to set up your team's spawn and dispensers.</span>")
|
||||
..()
|
||||
|
||||
/datum/striketeam/custom/create_commando(var/obj/spawn_location,var/leader_selected=0,var/mob_key = "")
|
||||
var/mob/living/carbon/human/new_commando = new(spawn_location.loc)
|
||||
var/commando_name = default_name
|
||||
|
||||
if(can_customize_name)
|
||||
var/new_name = copytext(sanitize(input(user, "Pick a name","Name") as null|text), 1, MAX_MESSAGE_LEN)
|
||||
if(!new_name)
|
||||
new_name = default_name
|
||||
commando_name = new_name
|
||||
else
|
||||
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major")
|
||||
var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/commando_name = pick(last_names)
|
||||
commando_name = "[!leader_selected ? commando_rank : commando_leader_rank] [commando_name]"
|
||||
|
||||
new_commando.real_name = commando_name
|
||||
new_commando.name = commando_name
|
||||
|
||||
if(can_customize_appearance)
|
||||
var/new_facial = input(user, "Please select facial hair color.", "Character Generation") as color
|
||||
if(new_facial)
|
||||
new_commando.r_facial = hex2num(copytext(new_facial, 2, 4))
|
||||
new_commando.g_facial = hex2num(copytext(new_facial, 4, 6))
|
||||
new_commando.b_facial = hex2num(copytext(new_facial, 6, 8))
|
||||
|
||||
var/new_hair = input(user, "Please select hair color.", "Character Generation") as color
|
||||
if(new_facial)
|
||||
new_commando.r_hair = hex2num(copytext(new_hair, 2, 4))
|
||||
new_commando.g_hair = hex2num(copytext(new_hair, 4, 6))
|
||||
new_commando.b_hair = hex2num(copytext(new_hair, 6, 8))
|
||||
|
||||
var/new_eyes = input(user, "Please select eye color.", "Character Generation") as color
|
||||
if(new_eyes)
|
||||
new_commando.r_eyes = hex2num(copytext(new_eyes, 2, 4))
|
||||
new_commando.g_eyes = hex2num(copytext(new_eyes, 4, 6))
|
||||
new_commando.b_eyes = hex2num(copytext(new_eyes, 6, 8))
|
||||
|
||||
var/new_tone = input(user, "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
|
||||
new_commando.s_tone = max(min(round(text2num(new_tone)), 220), 1)
|
||||
new_commando.s_tone = -new_commando.s_tone + 35
|
||||
|
||||
// hair
|
||||
var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair
|
||||
var/list/hairs = list()
|
||||
|
||||
// loop through potential hairs
|
||||
for(var/x in all_hairs)
|
||||
var/datum/sprite_accessory/hair/H = new x // create new hair datum based on type x
|
||||
hairs.Add(H.name) // add hair name to hairs
|
||||
qdel(H) // delete the hair after it's all done
|
||||
H = null
|
||||
|
||||
//hair
|
||||
var/new_hstyle = input(user, "Select a hair style", "Grooming") as null|anything in hair_styles_list
|
||||
if(new_hstyle)
|
||||
new_commando.h_style = new_hstyle
|
||||
|
||||
// facial hair
|
||||
var/new_fstyle = input(user, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list
|
||||
if(new_fstyle)
|
||||
new_commando.f_style = new_fstyle
|
||||
|
||||
var/new_gender = alert(user, "Please select gender.", "Character Generation", "Male", "Female")
|
||||
if (new_gender)
|
||||
if(new_gender == "Male")
|
||||
new_commando.setGender(MALE)
|
||||
else
|
||||
new_commando.setGender(FEMALE)
|
||||
else
|
||||
new_commando.setGender(pick(MALE, FEMALE))
|
||||
|
||||
var/datum/preferences/A = new()
|
||||
A.randomize_appearance_for(new_commando)
|
||||
|
||||
//M.rebuild_appearance()
|
||||
new_commando.update_hair()
|
||||
new_commando.update_body()
|
||||
new_commando.check_dna(M)
|
||||
|
||||
new_commando.age = !leader_selected ? rand(23,35) : rand(35,45)
|
||||
|
||||
new_commando.dna.ready_dna(M)//Creates DNA.
|
||||
|
||||
//Creates mind stuff.
|
||||
new_commando.mind = new
|
||||
new_commando.mind.current = new_commando
|
||||
new_commando.mind.original = new_commando
|
||||
new_commando.mind.assigned_role = "MODE"
|
||||
new_commando.mind.special_role = "Custom Team"
|
||||
if(!(new_commando.mind in ticker.minds))
|
||||
ticker.minds += new_commando.mind//Adds them to regular mind list.
|
||||
|
||||
ticker.mode.custom_team |= new_commando.mind
|
||||
|
||||
return new_commando
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//ELITE SYNDICATE STRIKE TEAM
|
||||
|
||||
/datum/striketeam/syndicate
|
||||
striketeam_name = "Elite Strike Team"
|
||||
striketeam_name = TEAM_ELITE_SYNDIE
|
||||
faction_name = "the Syndicate"
|
||||
mission = "Purify the station."
|
||||
team_size = 6
|
||||
@@ -36,11 +36,12 @@
|
||||
new_syndicate_commando.mind_initialize()
|
||||
new_syndicate_commando.mind.assigned_role = "MODE"
|
||||
new_syndicate_commando.mind.special_role = "Syndicate Commando"
|
||||
ticker.mode.traitors |= new_syndicate_commando.mind //Adds them to current traitor list. Which is really the extra antagonist list.
|
||||
ticker.mode.elite_syndie |= new_syndicate_commando.mind
|
||||
new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected)
|
||||
return new_syndicate_commando
|
||||
|
||||
/datum/striketeam/syndicate/greet_commando(var/mob/living/carbon/human/H)
|
||||
H << 'sound/music/elite_syndie_squad.ogg'
|
||||
to_chat(H, "<span class='notice'>You are [H.real_name], an Elite commando, in the service of the Syndicate.</span>")
|
||||
to_chat(H, "<span class='notice'>Your mission is: <span class='danger'>[mission]</span></span>")
|
||||
|
||||
|
||||
@@ -16,6 +16,13 @@
|
||||
opacity = 0
|
||||
canSmoothWith = null
|
||||
|
||||
/turf/unsimulated/wall/blastdoor
|
||||
name = "Shuttle Bay Blast Door"
|
||||
desc = "Why it no open!"
|
||||
icon = 'icons/obj/doors/rapid_pdoor.dmi'
|
||||
icon_state = "pdoor1"
|
||||
canSmoothWith = null
|
||||
|
||||
/turf/unsimulated/wall/rock
|
||||
name = "unnaturally hard rock wall"
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
dat += "<BR><B>Objective #[objective_count++]</B>: [objective.explanation_text]</td></tr>"
|
||||
|
||||
if(ticker.mode.ert.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>ERT</B></td><td></td><td></td></tr>"
|
||||
dat += "<br><table cellspacing=5><tr><td><B>[TEAM_ERT]</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/ert in ticker.mode.ert)
|
||||
var/mob/M = ert.current
|
||||
if(M)
|
||||
@@ -290,9 +290,14 @@
|
||||
else
|
||||
dat += "<tr><td><i>Emergency Responder not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
dat += "<br><B>ERT Objectives:</B>"
|
||||
var/datum/striketeam/team = sentStrikeTeams[TEAM_ERT]
|
||||
var/objective_count = 1
|
||||
for(var/datum/objective/objective in team.objectives)
|
||||
dat += "<BR><B>Objective #[objective_count++]</B>: [objective.explanation_text]</td></tr>"
|
||||
|
||||
if(ticker.mode.deathsquad.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Deathsquad</B></td><td></td><td></td></tr>"
|
||||
dat += "<br><table cellspacing=5><tr><td><B>[TEAM_DEATHSQUAD]</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/deathsquad in ticker.mode.deathsquad)
|
||||
var/mob/M = deathsquad.current
|
||||
if(M)
|
||||
@@ -303,6 +308,47 @@
|
||||
else
|
||||
dat += "<tr><td><i>Death Commando not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
dat += "<br><B>Deathsquad Objectives:</B>"
|
||||
var/datum/striketeam/team = sentStrikeTeams[TEAM_DEATHSQUAD]
|
||||
var/objective_count = 1
|
||||
for(var/datum/objective/objective in team.objectives)
|
||||
dat += "<BR><B>Objective #[objective_count++]</B>: [objective.explanation_text]</td></tr>"
|
||||
|
||||
if(ticker.mode.elite_syndie.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>[TEAM_ELITE_SYNDIE]</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/elite_syndie in ticker.mode.elite_syndie)
|
||||
var/mob/M = elite_syndie.current
|
||||
if(M)
|
||||
|
||||
dat += {"<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>
|
||||
<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>"}
|
||||
|
||||
else
|
||||
dat += "<tr><td><i>Elite Squadie not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
dat += "<br><B>Elite Syndie Objectives:</B>"
|
||||
var/datum/striketeam/team = sentStrikeTeams[TEAM_ELITE_SYNDIE]
|
||||
var/objective_count = 1
|
||||
for(var/datum/objective/objective in team.objectives)
|
||||
dat += "<BR><B>Objective #[objective_count++]</B>: [objective.explanation_text]</td></tr>"
|
||||
|
||||
if(ticker.mode.custom_team.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>[TEAM_CUSTOM]</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/custom_team in ticker.mode.custom_team)
|
||||
var/mob/M = custom_team.current
|
||||
if(M)
|
||||
|
||||
dat += {"<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>
|
||||
<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>"}
|
||||
|
||||
else
|
||||
dat += "<tr><td><i>Team member not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
dat += "<br><B>Team Objectives:</B>"
|
||||
var/datum/striketeam/team = sentStrikeTeams[TEAM_CUSTOM]
|
||||
var/objective_count = 1
|
||||
for(var/datum/objective/objective in team.objectives)
|
||||
dat += "<BR><B>Objective #[objective_count++]</B>: [objective.explanation_text]</td></tr>"
|
||||
|
||||
dat += "</body></html>"
|
||||
usr << browse(dat, "window=roundstatus;size=440x500")
|
||||
|
||||
@@ -7,26 +7,21 @@
|
||||
siemens_coefficient = 0.6
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
clothing_flags = PLASMAGUARD
|
||||
var/obj/machinery/camera/camera
|
||||
species_fit = list(GREY_SHAPED)
|
||||
species_restricted = list("exclude",VOX_SHAPED)
|
||||
pressure_resistance = 200 * ONE_ATMOSPHERE
|
||||
eyeprot = 3
|
||||
var/id_suffix = "ERT_empty"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/ert/attack_self(mob/user)
|
||||
if(camera)
|
||||
..(user)
|
||||
else
|
||||
camera = new /obj/machinery/camera(src)
|
||||
camera.network = list("ERT")
|
||||
cameranet.removeCamera(camera)
|
||||
camera.c_tag = user.name
|
||||
to_chat(user, "<span class='notice'>User scanned as [camera.c_tag]. Camera activated.</span>")
|
||||
|
||||
/obj/item/clothing/head/helmet/space/ert/examine(mob/user)
|
||||
..()
|
||||
if(get_dist(user,src) <= 1)
|
||||
to_chat(user, "This helmet has a built-in camera. It's [camera ? "" : "in"]active.")
|
||||
/obj/item/clothing/head/helmet/space/ert/equipped(var/mob/M)
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!istype(H))
|
||||
return
|
||||
if(H.get_item_by_slot(slot_head) == src)
|
||||
var/obj/item/weapon/card/id/worn_id = H.get_item_by_slot(slot_wear_id)
|
||||
if(istype(worn_id))
|
||||
if(findtextEx(worn_id.icon_state,"ERT_")!=0)
|
||||
worn_id.icon_state = id_suffix
|
||||
|
||||
/obj/item/clothing/suit/space/ert
|
||||
name = "emergency response team suit"
|
||||
@@ -55,6 +50,7 @@
|
||||
item_state = "helm-command"
|
||||
species_fit = list(GREY_SHAPED)
|
||||
species_restricted = list("exclude",VOX_SHAPED)
|
||||
id_suffix = "ERT_leader"
|
||||
|
||||
/obj/item/clothing/suit/space/ert/commander
|
||||
name = "emergency response team commander suit"
|
||||
@@ -71,6 +67,7 @@
|
||||
item_state = "syndicate-helm-black-red"
|
||||
species_fit = list(GREY_SHAPED)
|
||||
species_restricted = list("exclude",VOX_SHAPED)
|
||||
id_suffix = "ERT_security"
|
||||
|
||||
/obj/item/clothing/suit/space/ert/security
|
||||
name = "emergency response team security suit"
|
||||
@@ -86,6 +83,7 @@
|
||||
species_fit = list(GREY_SHAPED)
|
||||
species_restricted = list("exclude",VOX_SHAPED)
|
||||
armor = list(melee = 50, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
|
||||
id_suffix = "ERT_engineering"
|
||||
|
||||
/obj/item/clothing/suit/space/ert/engineer
|
||||
name = "emergency response team engineer suit"
|
||||
@@ -100,6 +98,7 @@
|
||||
icon_state = "ert_medical"
|
||||
species_fit = list(GREY_SHAPED)
|
||||
species_restricted = list("exclude",VOX_SHAPED)
|
||||
id_suffix = "ERT_medical"
|
||||
|
||||
/obj/item/clothing/suit/space/ert/medical
|
||||
name = "emergency response team medical suit"
|
||||
|
||||
BIN
icons/obj/suitdispenser.dmi
Normal file
BIN
icons/obj/suitdispenser.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 29 KiB |
15486
maps/tgstation_temp.dmm
Normal file
15486
maps/tgstation_temp.dmm
Normal file
File diff suppressed because it is too large
Load Diff
BIN
sound/music/ERT.ogg
Normal file
BIN
sound/music/ERT.ogg
Normal file
Binary file not shown.
BIN
sound/music/deathsquad.ogg
Normal file
BIN
sound/music/deathsquad.ogg
Normal file
Binary file not shown.
BIN
sound/music/elite_syndie_squad.ogg
Normal file
BIN
sound/music/elite_syndie_squad.ogg
Normal file
Binary file not shown.
@@ -472,6 +472,7 @@
|
||||
#include "code\game\machinery\Sleeper.dm"
|
||||
#include "code\game\machinery\station_map.dm"
|
||||
#include "code\game\machinery\status_display.dm"
|
||||
#include "code\game\machinery\suit_dispenser.dm"
|
||||
#include "code\game\machinery\suit_storage_unit.dm"
|
||||
#include "code\game\machinery\syndicatebeacon.dm"
|
||||
#include "code\game\machinery\taxi_buttons.dm"
|
||||
|
||||
Reference in New Issue
Block a user