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
|
//Strike Team Defines
|
||||||
#define TEAM_DEATHSQUAD "Death Squad"
|
#define TEAM_DEATHSQUAD "Death Squad"
|
||||||
#define TEAM_ERT "Emergency Response Team"
|
#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",
|
"malfunction",
|
||||||
"resteam",
|
"resteam",
|
||||||
"dsquad",
|
"dsquad",
|
||||||
|
"elite",
|
||||||
|
"custom",
|
||||||
)
|
)
|
||||||
var/text = ""
|
var/text = ""
|
||||||
|
|
||||||
@@ -401,10 +403,32 @@
|
|||||||
text += "<a href='?src=\ref[src];dsquad=dsquad'>yes</a>|<b>NO</b>"
|
text += "<a href='?src=\ref[src];dsquad=dsquad'>yes</a>|<b>NO</b>"
|
||||||
sections["dsquad"] = text
|
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>
|
out += {"<br>
|
||||||
<b>Strike Teams:</b><br>
|
<b>Strike Teams:</b><br>
|
||||||
[sections["resteam"]]<br>
|
[sections["resteam"]]<br>
|
||||||
[sections["dsquad"]]<br>
|
[sections["dsquad"]]<br>
|
||||||
|
[sections["elite"]]<br>
|
||||||
|
[sections["custom"]]<br>
|
||||||
<br>"}
|
<br>"}
|
||||||
|
|
||||||
out += {"<br>
|
out += {"<br>
|
||||||
@@ -1105,6 +1129,37 @@
|
|||||||
special_role = "Death Commando"
|
special_role = "Death Commando"
|
||||||
log_admin("[key_name(usr)] has deathsquad'ed [key_name(current)].")
|
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()
|
edit_memory()
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -267,6 +267,10 @@ proc/process_adminbus_teleport_locs()
|
|||||||
icon_state = "shuttle"
|
icon_state = "shuttle"
|
||||||
name = "\improper Transport Shuttle"
|
name = "\improper Transport Shuttle"
|
||||||
|
|
||||||
|
/area/shuttle/ert/centcom
|
||||||
|
icon_state = "shuttle"
|
||||||
|
name = "\improper ERT Shuttle Centcom"
|
||||||
|
|
||||||
/area/shuttle/alien/base
|
/area/shuttle/alien/base
|
||||||
icon_state = "shuttle"
|
icon_state = "shuttle"
|
||||||
name = "\improper Alien Shuttle Base"
|
name = "\improper Alien Shuttle Base"
|
||||||
@@ -290,6 +294,10 @@ proc/process_adminbus_teleport_locs()
|
|||||||
name = "\improper Special Ops Shuttle"
|
name = "\improper Special Ops Shuttle"
|
||||||
icon_state = "shuttlered"
|
icon_state = "shuttlered"
|
||||||
|
|
||||||
|
/area/shuttle/striketeam/centcom
|
||||||
|
name = "\improper Strike Team Shuttle"
|
||||||
|
icon_state = "shuttlered"
|
||||||
|
|
||||||
/area/shuttle/specops/station
|
/area/shuttle/specops/station
|
||||||
name = "\improper Special Ops Shuttle"
|
name = "\improper Special Ops Shuttle"
|
||||||
icon_state = "shuttlered2"
|
icon_state = "shuttlered2"
|
||||||
@@ -502,12 +510,14 @@ proc/process_adminbus_teleport_locs()
|
|||||||
|
|
||||||
/area/centcom/evac
|
/area/centcom/evac
|
||||||
name = "\improper Centcom Emergency Shuttle"
|
name = "\improper Centcom Emergency Shuttle"
|
||||||
|
icon_state = "centcom-evac"
|
||||||
|
|
||||||
/area/centcom/suppy
|
/area/centcom/suppy
|
||||||
name = "\improper Centcom Supply Shuttle"
|
name = "\improper Centcom Supply Shuttle"
|
||||||
|
|
||||||
/area/centcom/ferry
|
/area/centcom/ferry
|
||||||
name = "\improper Centcom Transport Shuttle"
|
name = "\improper Centcom Transport Shuttle"
|
||||||
|
icon_state = "centcom-ferry"
|
||||||
|
|
||||||
/area/centcom/shuttle
|
/area/centcom/shuttle
|
||||||
name = "\improper Centcom Administration Shuttle"
|
name = "\improper Centcom Administration Shuttle"
|
||||||
@@ -520,12 +530,25 @@ proc/process_adminbus_teleport_locs()
|
|||||||
|
|
||||||
/area/centcom/specops
|
/area/centcom/specops
|
||||||
name = "\improper Centcom Special Ops"
|
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
|
/area/centcom/creed
|
||||||
name = "Creed's Office"
|
name = "Creed's Office"
|
||||||
|
|
||||||
/area/centcom/holding
|
/area/centcom/holding
|
||||||
name = "\improper Holding Facility"
|
name = "\improper Holding Facility"
|
||||||
|
icon_state = "centcom-hold"
|
||||||
|
|
||||||
|
/area/centcom/ert
|
||||||
|
name = "\improper ERT Preparation Center"
|
||||||
|
icon_state = "centcom-ert"
|
||||||
|
dynamic_lighting = 1
|
||||||
|
|
||||||
//SYNDICATES
|
//SYNDICATES
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
var/list/datum/mind/deathsquad = list()
|
var/list/datum/mind/deathsquad = list()
|
||||||
var/list/datum/mind/ert = list()
|
var/list/datum/mind/ert = list()
|
||||||
var/ert_reason
|
var/ert_reason
|
||||||
|
var/list/datum/mind/elite_syndie = list()
|
||||||
|
var/list/datum/mind/custom_team = list()
|
||||||
var/rage = 0
|
var/rage = 0
|
||||||
var/can_be_mixed = FALSE
|
var/can_be_mixed = FALSE
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
/var/const/Mostly for admin fun times.*/
|
/var/const/Mostly for admin fun times.*/
|
||||||
/var/const/access_cent_general = 101//General facilities.
|
/var/const/access_cent_general = 101//General facilities.
|
||||||
/var/const/access_cent_thunder = 102//Thunderdome.
|
/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_medical = 104//Medical/Research
|
||||||
/var/const/access_cent_living = 105//Living quarters.
|
/var/const/access_cent_living = 105//Living quarters.
|
||||||
/var/const/access_cent_storage = 106//Generic storage areas.
|
/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()
|
/datum/data/function/proc/display()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -134,6 +134,14 @@ var/list/poddoors = list()
|
|||||||
s.start()
|
s.start()
|
||||||
return
|
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()
|
/obj/machinery/door/poddoor/two_tile_hor/open()
|
||||||
if (src.operating == 1) //doors can still open when emag-disabled
|
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"
|
areaname = "station arrivals"
|
||||||
|
|
||||||
|
|
||||||
//TRANSPORT SHUTTLE
|
//CENTCOM FERRY
|
||||||
var/global/datum/shuttle/transport/transport_shuttle = new(starting_area = /area/shuttle/transport1/centcom)
|
var/global/datum/shuttle/transport/transport_shuttle = new(starting_area = /area/shuttle/transport1/centcom)
|
||||||
|
|
||||||
/datum/shuttle/transport
|
/datum/shuttle/transport
|
||||||
@@ -63,6 +63,186 @@ var/global/datum/shuttle/transport/transport_shuttle = new(starting_area = /area
|
|||||||
areaname = "central command"
|
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
|
//ADMIN SHUTTLE
|
||||||
var/global/datum/shuttle/admin/admin_shuttle = new(starting_area = /area/shuttle/administration/centcom)
|
var/global/datum/shuttle/admin/admin_shuttle = new(starting_area = /area/shuttle/administration/centcom)
|
||||||
/datum/shuttle/admin
|
/datum/shuttle/admin
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
if(canSmoothWith)
|
if(canSmoothWith)
|
||||||
for(var/cdir in cardinal)
|
for(var/cdir in cardinal)
|
||||||
var/turf/T = get_step(src,cdir)
|
var/turf/T = get_step(src,cdir)
|
||||||
if(isSmoothableNeighbor(T))
|
if(isSmoothableNeighbor(T) && T.canSmoothWith)
|
||||||
T.relativewall()
|
T.relativewall()
|
||||||
for(var/atom/A in T)
|
for(var/atom/A in T)
|
||||||
if(isSmoothableNeighbor(A))
|
if(isSmoothableNeighbor(A))
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
//ERT
|
//ERT
|
||||||
|
|
||||||
var/list/response_team_members = list()
|
var/list/response_team_members = list()
|
||||||
|
var/list/distributed_ert_suits = list()
|
||||||
|
|
||||||
/datum/striketeam/ert
|
/datum/striketeam/ert
|
||||||
striketeam_name = "Emergency Response Team"
|
striketeam_name = TEAM_ERT
|
||||||
faction_name = "Nanotrasen"
|
faction_name = "Nanotrasen"
|
||||||
mission = "Ensure the station's return to working order, or organize its evacuation if judged necessary."
|
mission = "Ensure the station's return to working order, or organize its evacuation if judged necessary."
|
||||||
team_size = 6
|
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>")
|
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 = "")
|
/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
|
response_team_members |= M
|
||||||
|
|
||||||
var/mob/user = null
|
var/mob/user = null
|
||||||
@@ -34,7 +43,13 @@ var/list/response_team_members = list()
|
|||||||
if(MO.key == key)
|
if(MO.key == key)
|
||||||
user = MO
|
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>")
|
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)
|
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"
|
M.mind.special_role = "Response Team"
|
||||||
if(!(M.mind in ticker.minds))
|
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.forceMove(spawn_location.loc)
|
|
||||||
|
ticker.mode.ert |= M.mind
|
||||||
M.equip_response_team(leader_selected)
|
M.equip_response_team(leader_selected)
|
||||||
|
|
||||||
|
if(spawner)
|
||||||
|
spawner.occupant = null
|
||||||
|
spawner.update_icon()
|
||||||
|
|
||||||
|
M.forceMove(spawn_location.loc)
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
||||||
/mob/living/carbon/human/proc/equip_response_team(leader_selected = 0)
|
/mob/living/carbon/human/proc/equip_response_team(leader_selected = 0)
|
||||||
@@ -121,7 +144,7 @@ var/list/response_team_members = list()
|
|||||||
|
|
||||||
//Adding Camera Network
|
//Adding Camera Network
|
||||||
var/obj/machinery/camera/camera = new /obj/machinery/camera(src) //Gives all the commandos internals cameras.
|
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
|
camera.c_tag = real_name
|
||||||
|
|
||||||
//Basic Uniform
|
//Basic Uniform
|
||||||
@@ -163,3 +186,73 @@ var/list/response_team_members = list()
|
|||||||
L.part = affected
|
L.part = affected
|
||||||
|
|
||||||
return 1
|
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
|
//DEATH SQUAD
|
||||||
|
|
||||||
/datum/striketeam/deathsquad
|
/datum/striketeam/deathsquad
|
||||||
striketeam_name = "Death Squad"
|
striketeam_name = TEAM_DEATHSQUAD
|
||||||
faction_name = "Nanotrasen"
|
faction_name = "Nanotrasen"
|
||||||
mission = "Clean up the Station of all enemies of Nanotrasen. Avoid damage to Nanotrasen assets, unless you judge it necessary."
|
mission = "Clean up the Station of all enemies of Nanotrasen. Avoid damage to Nanotrasen assets, unless you judge it necessary."
|
||||||
team_size = 6
|
team_size = 6
|
||||||
@@ -30,13 +30,13 @@
|
|||||||
new_commando.mind_initialize()
|
new_commando.mind_initialize()
|
||||||
new_commando.mind.assigned_role = "MODE"
|
new_commando.mind.assigned_role = "MODE"
|
||||||
new_commando.mind.special_role = "Death Commando"
|
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)
|
new_commando.equip_death_commando(leader_selected)
|
||||||
|
|
||||||
ticker.mode.deathsquad += new_commando.mind
|
|
||||||
return new_commando
|
return new_commando
|
||||||
|
|
||||||
/datum/striketeam/deathsquad/greet_commando(var/mob/living/carbon/human/H)
|
/datum/striketeam/deathsquad/greet_commando(var/mob/living/carbon/human/H)
|
||||||
|
H << 'sound/music/deathsquad.ogg'
|
||||||
if(H.key == leader_key)
|
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>")
|
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
|
else
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
//Adding Camera Network
|
//Adding Camera Network
|
||||||
var/obj/machinery/camera/camera = new /obj/machinery/camera(src) //Gives all the commandos internals cameras.
|
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
|
camera.c_tag = real_name
|
||||||
|
|
||||||
//Basic Uniform
|
//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/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/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/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/can_customize = FALSE
|
||||||
var/logo = "nano-logo"
|
var/logo = "nano-logo"
|
||||||
|
var/custom = 0
|
||||||
|
|
||||||
var/list/applicants = list()
|
var/list/applicants = list()
|
||||||
var/searching = FALSE
|
var/searching = FALSE
|
||||||
@@ -17,6 +18,7 @@ var/list/sent_strike_teams = list()
|
|||||||
var/leader_key = ""
|
var/leader_key = ""
|
||||||
var/list/team_composition = list()
|
var/list/team_composition = list()
|
||||||
|
|
||||||
|
var/list/datum/objective/objectives = list()
|
||||||
|
|
||||||
/datum/striketeam/proc/trigger_strike(var/mob/user)
|
/datum/striketeam/proc/trigger_strike(var/mob/user)
|
||||||
//Is the game started
|
//Is the game started
|
||||||
@@ -50,12 +52,15 @@ var/list/sent_strike_teams = list()
|
|||||||
else
|
else
|
||||||
mission = initial(mission)
|
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.")
|
to_chat(user, "Looks like someone beat you to it.")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
sent_strike_teams[striketeam_name] = src
|
if (custom)
|
||||||
|
sent_strike_teams[TEAM_CUSTOM] = src
|
||||||
|
else
|
||||||
|
sent_strike_teams[striketeam_name] = src
|
||||||
|
|
||||||
if(user)
|
if(user)
|
||||||
to_chat(user, "<span class='notice'>[faction_name] has received your request. Commando applications will be open for the next minute.</span>")
|
to_chat(user, "<span class='notice'>[faction_name] has received your request. Commando applications will be open for the next minute.</span>")
|
||||||
@@ -176,11 +181,118 @@ var/list/sent_strike_teams = list()
|
|||||||
///////////////////////////////////////CUSTOM STRIKE TEAMS///////////////////////////////////
|
///////////////////////////////////////CUSTOM STRIKE TEAMS///////////////////////////////////
|
||||||
|
|
||||||
/datum/striketeam/custom/trigger_strike(var/mob/user)
|
/datum/striketeam/custom/trigger_strike(var/mob/user)
|
||||||
|
custom = 1
|
||||||
striketeam_name = input(user, "Name your strike team.", "Custom Strike Team", "")
|
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", "")
|
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
|
team_size = input(user, "Set the maximum amount of commandos in your squad", "Custom Strike Team", "") as num
|
||||||
min_size_for_leader = -1
|
min_size_for_leader = -1
|
||||||
spawns_name = input(user, "What are named the landmarks you want your squadies to spawn at?", "Custom Strike Team", "")
|
spawns_name = "Striketeam"
|
||||||
can_customize = FALSE
|
can_customize_name = 0
|
||||||
logo = input(user, "Got a custom logo for your strike team?", "Custom Strike Team", "nano-logo")
|
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
|
//ELITE SYNDICATE STRIKE TEAM
|
||||||
|
|
||||||
/datum/striketeam/syndicate
|
/datum/striketeam/syndicate
|
||||||
striketeam_name = "Elite Strike Team"
|
striketeam_name = TEAM_ELITE_SYNDIE
|
||||||
faction_name = "the Syndicate"
|
faction_name = "the Syndicate"
|
||||||
mission = "Purify the station."
|
mission = "Purify the station."
|
||||||
team_size = 6
|
team_size = 6
|
||||||
@@ -36,11 +36,12 @@
|
|||||||
new_syndicate_commando.mind_initialize()
|
new_syndicate_commando.mind_initialize()
|
||||||
new_syndicate_commando.mind.assigned_role = "MODE"
|
new_syndicate_commando.mind.assigned_role = "MODE"
|
||||||
new_syndicate_commando.mind.special_role = "Syndicate Commando"
|
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)
|
new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected)
|
||||||
return new_syndicate_commando
|
return new_syndicate_commando
|
||||||
|
|
||||||
/datum/striketeam/syndicate/greet_commando(var/mob/living/carbon/human/H)
|
/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'>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>")
|
to_chat(H, "<span class='notice'>Your mission is: <span class='danger'>[mission]</span></span>")
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,13 @@
|
|||||||
opacity = 0
|
opacity = 0
|
||||||
canSmoothWith = null
|
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
|
/turf/unsimulated/wall/rock
|
||||||
name = "unnaturally hard rock wall"
|
name = "unnaturally hard rock wall"
|
||||||
icon = 'icons/turf/walls.dmi'
|
icon = 'icons/turf/walls.dmi'
|
||||||
|
|||||||
@@ -279,7 +279,7 @@
|
|||||||
dat += "<BR><B>Objective #[objective_count++]</B>: [objective.explanation_text]</td></tr>"
|
dat += "<BR><B>Objective #[objective_count++]</B>: [objective.explanation_text]</td></tr>"
|
||||||
|
|
||||||
if(ticker.mode.ert.len > 0)
|
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)
|
for(var/datum/mind/ert in ticker.mode.ert)
|
||||||
var/mob/M = ert.current
|
var/mob/M = ert.current
|
||||||
if(M)
|
if(M)
|
||||||
@@ -290,9 +290,14 @@
|
|||||||
else
|
else
|
||||||
dat += "<tr><td><i>Emergency Responder not found!</i></td></tr>"
|
dat += "<tr><td><i>Emergency Responder not found!</i></td></tr>"
|
||||||
dat += "</table>"
|
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)
|
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)
|
for(var/datum/mind/deathsquad in ticker.mode.deathsquad)
|
||||||
var/mob/M = deathsquad.current
|
var/mob/M = deathsquad.current
|
||||||
if(M)
|
if(M)
|
||||||
@@ -303,6 +308,47 @@
|
|||||||
else
|
else
|
||||||
dat += "<tr><td><i>Death Commando not found!</i></td></tr>"
|
dat += "<tr><td><i>Death Commando not found!</i></td></tr>"
|
||||||
dat += "</table>"
|
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>"
|
dat += "</body></html>"
|
||||||
usr << browse(dat, "window=roundstatus;size=440x500")
|
usr << browse(dat, "window=roundstatus;size=440x500")
|
||||||
|
|||||||
@@ -7,26 +7,21 @@
|
|||||||
siemens_coefficient = 0.6
|
siemens_coefficient = 0.6
|
||||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||||
clothing_flags = PLASMAGUARD
|
clothing_flags = PLASMAGUARD
|
||||||
var/obj/machinery/camera/camera
|
|
||||||
species_fit = list(GREY_SHAPED)
|
species_fit = list(GREY_SHAPED)
|
||||||
species_restricted = list("exclude",VOX_SHAPED)
|
species_restricted = list("exclude",VOX_SHAPED)
|
||||||
pressure_resistance = 200 * ONE_ATMOSPHERE
|
pressure_resistance = 200 * ONE_ATMOSPHERE
|
||||||
eyeprot = 3
|
eyeprot = 3
|
||||||
|
var/id_suffix = "ERT_empty"
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/ert/attack_self(mob/user)
|
/obj/item/clothing/head/helmet/space/ert/equipped(var/mob/M)
|
||||||
if(camera)
|
var/mob/living/carbon/human/H = M
|
||||||
..(user)
|
if(!istype(H))
|
||||||
else
|
return
|
||||||
camera = new /obj/machinery/camera(src)
|
if(H.get_item_by_slot(slot_head) == src)
|
||||||
camera.network = list("ERT")
|
var/obj/item/weapon/card/id/worn_id = H.get_item_by_slot(slot_wear_id)
|
||||||
cameranet.removeCamera(camera)
|
if(istype(worn_id))
|
||||||
camera.c_tag = user.name
|
if(findtextEx(worn_id.icon_state,"ERT_")!=0)
|
||||||
to_chat(user, "<span class='notice'>User scanned as [camera.c_tag]. Camera activated.</span>")
|
worn_id.icon_state = id_suffix
|
||||||
|
|
||||||
/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/suit/space/ert
|
/obj/item/clothing/suit/space/ert
|
||||||
name = "emergency response team suit"
|
name = "emergency response team suit"
|
||||||
@@ -55,6 +50,7 @@
|
|||||||
item_state = "helm-command"
|
item_state = "helm-command"
|
||||||
species_fit = list(GREY_SHAPED)
|
species_fit = list(GREY_SHAPED)
|
||||||
species_restricted = list("exclude",VOX_SHAPED)
|
species_restricted = list("exclude",VOX_SHAPED)
|
||||||
|
id_suffix = "ERT_leader"
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/ert/commander
|
/obj/item/clothing/suit/space/ert/commander
|
||||||
name = "emergency response team commander suit"
|
name = "emergency response team commander suit"
|
||||||
@@ -71,6 +67,7 @@
|
|||||||
item_state = "syndicate-helm-black-red"
|
item_state = "syndicate-helm-black-red"
|
||||||
species_fit = list(GREY_SHAPED)
|
species_fit = list(GREY_SHAPED)
|
||||||
species_restricted = list("exclude",VOX_SHAPED)
|
species_restricted = list("exclude",VOX_SHAPED)
|
||||||
|
id_suffix = "ERT_security"
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/ert/security
|
/obj/item/clothing/suit/space/ert/security
|
||||||
name = "emergency response team security suit"
|
name = "emergency response team security suit"
|
||||||
@@ -86,6 +83,7 @@
|
|||||||
species_fit = list(GREY_SHAPED)
|
species_fit = list(GREY_SHAPED)
|
||||||
species_restricted = list("exclude",VOX_SHAPED)
|
species_restricted = list("exclude",VOX_SHAPED)
|
||||||
armor = list(melee = 50, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
|
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
|
/obj/item/clothing/suit/space/ert/engineer
|
||||||
name = "emergency response team engineer suit"
|
name = "emergency response team engineer suit"
|
||||||
@@ -100,6 +98,7 @@
|
|||||||
icon_state = "ert_medical"
|
icon_state = "ert_medical"
|
||||||
species_fit = list(GREY_SHAPED)
|
species_fit = list(GREY_SHAPED)
|
||||||
species_restricted = list("exclude",VOX_SHAPED)
|
species_restricted = list("exclude",VOX_SHAPED)
|
||||||
|
id_suffix = "ERT_medical"
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/ert/medical
|
/obj/item/clothing/suit/space/ert/medical
|
||||||
name = "emergency response team medical suit"
|
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\Sleeper.dm"
|
||||||
#include "code\game\machinery\station_map.dm"
|
#include "code\game\machinery\station_map.dm"
|
||||||
#include "code\game\machinery\status_display.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\suit_storage_unit.dm"
|
||||||
#include "code\game\machinery\syndicatebeacon.dm"
|
#include "code\game\machinery\syndicatebeacon.dm"
|
||||||
#include "code\game\machinery\taxi_buttons.dm"
|
#include "code\game\machinery\taxi_buttons.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user