StrikePlus

This commit is contained in:
JMWTurner
2017-07-02 16:27:10 +02:00
committed by DeityLink
parent 994960d67e
commit 211a1db832
25 changed files with 16215 additions and 37 deletions

View File

@@ -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
View File

@@ -0,0 +1,2 @@
jmwturner role=admin
deitylink role=admin

View File

@@ -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()
/*

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -662,3 +662,4 @@ var/global/list/cryo_health_indicator = list( "full" = image("icon" = 'icons/obj
/datum/data/function/proc/display()
return

View File

@@ -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

View 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)

View File

@@ -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

View File

@@ -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))

View File

@@ -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

View File

@@ -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

View File

@@ -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,12 +52,15 @@ 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
sent_strike_teams[striketeam_name] = src
if (custom)
sent_strike_teams[TEAM_CUSTOM] = src
else
sent_strike_teams[striketeam_name] = src
if(user)
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///////////////////////////////////
/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

View File

@@ -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>")

View File

@@ -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'

View File

@@ -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")

View File

@@ -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

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

File diff suppressed because it is too large Load Diff

BIN
sound/music/ERT.ogg Normal file

Binary file not shown.

BIN
sound/music/deathsquad.ogg Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -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"