Nukes spacepods and associated jobs

This commit is contained in:
AffectedArc07
2021-10-02 13:16:24 +01:00
parent ee22c8d4ee
commit 129318891d
92 changed files with 3681 additions and 9170 deletions
+2 -2
View File
@@ -66,8 +66,8 @@
#define ACCESS_PARAMEDIC 66
#define ACCESS_BLUESHIELD 67
#define ACCESS_SALVAGE_CAPTAIN 69 // Salvage ship captain's quarters
#define ACCESS_MECHANIC 70
#define ACCESS_PILOT 71
// #define ACCESS_MECHANIC 70 // AA07 2021-10-02 - Removed: Kept for history sake
// #define ACCESS_PILOT 71 // AA07 2021-10-02 - Removed: Kept for history sake
#define ACCESS_NTREP 73
#define ACCESS_MAGISTRATE 74
#define ACCESS_MINISAT 75
-2
View File
@@ -18,8 +18,6 @@
#define ismecha(A) (istype(A, /obj/mecha))
#define isspacepod(A) (istype(A, /obj/spacepod))
#define iseffect(A) (istype(A, /obj/effect))
#define isclothing(A) (istype(A, /obj/item/clothing))
+2 -2
View File
@@ -58,7 +58,7 @@
#define JOB_NANO (1<<0)
#define JOB_BLUESHIELD (1<<1)
#define JOB_BARBER (1<<3)
#define JOB_MECHANIC (1<<4)
// #define JOB_MECHANIC (1<<4) // AA07 2021-10-02 - Removed: Kept for history sake
#define JOB_BRIGDOC (1<<5)
#define JOB_JUDGE (1<<6)
#define JOB_PILOT (1<<7)
// #define JOB_PILOT (1<<7) // AA07 2021-10-02 - Removed: Kept for history sake
+1 -1
View File
@@ -25,7 +25,7 @@
#define AUTOLATHE 4 //Uses glass/metal only.
#define CRAFTLATHE 8 //Uses fuck if I know. For use eventually.
#define MECHFAB 16 //Remember, objects utilising this flag should have construction_time and construction_cost vars.
#define PODFAB 32 //Used by the spacepod part fabricator. Same idea as the mechfab
// #define PODFAB 32 //Used by the spacepod part fabricator. Same idea as the mechfab // AA 2021-10-02 - Removed. Kept for flag consistency.
#define BIOGENERATOR 64 //Uses biomass
#define SMELTER 128 //uses various minerals
//Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable.
-2
View File
@@ -1777,8 +1777,6 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
/obj/item/robot_parts = "ROBOT_PARTS",
/obj/item/seeds = "SEED",
/obj/item/slime_extract = "SLIME_CORE",
/obj/item/spacepod_equipment/weaponry = "POD_WEAPON",
/obj/item/spacepod_equipment = "POD_EQUIP",
/obj/item/stack/sheet/mineral = "MINERAL",
/obj/item/stack/sheet = "SHEET",
/obj/item/stack/tile = "TILE",
-1
View File
@@ -6,7 +6,6 @@ GLOBAL_LIST_INIT(landmarks_list, list()) //list of all landmarks created
GLOBAL_LIST_INIT(surgery_steps, list()) //list of all surgery steps |BS12
GLOBAL_LIST_INIT(side_effects, list()) //list of all medical sideeffects types by thier names |BS12
GLOBAL_LIST_INIT(mechas_list, list()) //list of all mechs. Used by hostile mobs target tracking.
GLOBAL_LIST_INIT(spacepods_list, list()) //list of all space pods. Used by hostile mobs target tracking.
GLOBAL_LIST_INIT(joblist, list()) //list of all jobstypes, minus borg and AI
GLOBAL_LIST_INIT(airlocks, list()) //list of all airlocks
GLOBAL_LIST_INIT(singularities, list()) //list of all singularities
-8
View File
@@ -461,10 +461,6 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "detective_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/clothing/suit.dmi', "detective"), ICON_OVERLAY)
if("Security Pod Pilot")
clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "secred_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/clothing/suit.dmi', "bomber"), ICON_OVERLAY)
if("Brig Physician")
clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "medical_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "white"), ICON_UNDERLAY)
@@ -484,10 +480,6 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "atmos_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/clothing/belt.dmi', "utility"), ICON_OVERLAY)
if("Mechanic")
clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "mechanic_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "orange"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/clothing/belt.dmi', "utility"), ICON_OVERLAY)
if("Roboticist")
clothes_s = new /icon('icons/mob/clothing/uniform.dmi', "robotics_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "black"), ICON_UNDERLAY)
-7
View File
@@ -147,13 +147,6 @@
detected_mech = TRUE
increase_alert("Hostile mecha detected: [E]")
/area/syndicate_depot/core/proc/saw_pod(obj/spacepod/P)
if(detected_pod)
return
detected_pod = TRUE
if(!called_backup)
increase_alert("Hostile spacepod detected: [P]")
/area/syndicate_depot/core/proc/saw_double_agent(mob/living/M)
if(detected_double_agent)
return
+1 -13
View File
@@ -1112,14 +1112,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "\improper Chief Engineer's office"
icon_state = "engine_control"
/area/engine/mechanic_workshop
name = "\improper Mechanic Workshop"
icon_state = "engine"
/area/engine/mechanic_workshop/hanger
name = "\improper Hanger Bay"
icon_state = "engine"
/area/engine/supermatter
name = "\improper Supermatter Engine"
icon_state = "engine"
@@ -1488,10 +1480,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "\improper Head of Security's Office"
icon_state = "sec_hos"
/area/security/podbay
name = "\improper Security Podbay"
icon_state = "securitypodbay"
/area/security/detectives_office
name = "\improper Detective's Office"
icon_state = "detective"
@@ -1544,7 +1532,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/security/vacantoffice2
name = "\improper Vacant Office"
icon_state = "security"
/area/security/permasolitary
name = "Solitary Confinement"
icon_state = "solitary"
+1 -1
View File
@@ -11,7 +11,7 @@ GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","E
name = "changeling"
config_tag = "changeling"
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
protected_species = list("Machine")
required_players = 15
required_enemies = 1
+1 -1
View File
@@ -48,7 +48,7 @@ GLOBAL_LIST_EMPTY(all_cults)
/datum/game_mode/cult
name = "cult"
config_tag = "cult"
restricted_jobs = list("Chaplain", "AI", "Cyborg", "Internal Affairs Agent", "Security Officer", "Warden", "Detective", "Security Pod Pilot", "Head of Security", "Captain", "Head of Personnel", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
restricted_jobs = list("Chaplain", "AI", "Cyborg", "Internal Affairs Agent", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
protected_jobs = list()
required_players = 30
required_enemies = 3
@@ -372,10 +372,6 @@
to_chat(S, "<span class='warning'>This cryopod control computer should be preserved, it contains useful items and information about the inhabitants. Aborting.</span>")
return FALSE
/obj/structure/spacepoddoor/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Disrupting this energy field would overload us. Aborting.</span>")
return FALSE
/turf/simulated/wall/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
var/isonshuttle = istype(loc, /area/shuttle)
for(var/turf/T in range(1, src))
@@ -412,10 +408,6 @@
to_chat(S, "<span class='warning'>Attempting to dismantle this machine would result in an immediate counterattack. Aborting.</span>")
return FALSE
/obj/spacepod/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
to_chat(S, "<span class='warning'>Destroying this vehicle would destroy us. Aborting.</span>")
return FALSE
/obj/machinery/clonepod/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
if(occupant)
to_chat(S, "<span class='warning'>Destroying this machine while it is occupied would result in biological and sentient resources to be harmed. Aborting.</span>")
+1 -1
View File
@@ -13,7 +13,7 @@
/datum/game_mode/revolution
name = "revolution"
config_tag = "revolution"
restricted_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician")
restricted_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician")
required_players = 20
required_enemies = 1
recommended_enemies = 3
+1 -1
View File
@@ -74,7 +74,7 @@ Made by Xhuis
required_enemies = 2
recommended_enemies = 2
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Head of Personnel", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Head of Personnel", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
/datum/game_mode/shadowling/announce()
to_chat(world, "<b>The current game mode is - Shadowling!</b>")
+1 -1
View File
@@ -11,7 +11,7 @@
name = "traitor"
config_tag = "traitor"
restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
required_players = 0
required_enemies = 1
recommended_enemies = 4
+1 -1
View File
@@ -2,7 +2,7 @@
name = "traitor+vampire"
config_tag = "traitorvamp"
traitors_possible = 3 //hard limit on traitors if scaling is turned off
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Solar Federation General")
restricted_jobs = list("Cyborg")
secondary_restricted_jobs = list("AI")
required_players = 10
+1 -1
View File
@@ -9,7 +9,7 @@
name = "vampire"
config_tag = "vampire"
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer", "Solar Federation General")
protected_species = list("Machine")
required_players = 15
required_enemies = 1
+4 -8
View File
@@ -133,9 +133,9 @@
ACCESS_HEADS, ACCESS_CAPTAIN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_CHAPEL_OFFICE, ACCESS_CE, ACCESS_CHEMISTRY, ACCESS_CLOWN, ACCESS_CMO,
ACCESS_COURT, ACCESS_CONSTRUCTION, ACCESS_CREMATORIUM, ACCESS_JANITOR, ACCESS_ENGINE, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_FORENSICS_LOCKERS,
ACCESS_GENETICS, ACCESS_GATEWAY, ACCESS_BRIG, ACCESS_HOP, ACCESS_HOS, ACCESS_HYDROPONICS, ACCESS_CHANGE_IDS, ACCESS_KEYCARD_AUTH, ACCESS_KITCHEN,
ACCESS_LAWYER, ACCESS_LIBRARY, ACCESS_MAGISTRATE, ACCESS_MAINT_TUNNELS, ACCESS_HEADS_VAULT, ACCESS_MEDICAL, ACCESS_MECHANIC, ACCESS_MIME,
ACCESS_LAWYER, ACCESS_LIBRARY, ACCESS_MAGISTRATE, ACCESS_MAINT_TUNNELS, ACCESS_HEADS_VAULT, ACCESS_MEDICAL, ACCESS_MIME,
ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_NETWORK, ACCESS_NTREP, ACCESS_PARAMEDIC, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_ENGINE_EQUIP, ACCESS_PSYCHIATRIST, ACCESS_QM, ACCESS_RD, ACCESS_RC_ANNOUNCE, ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_RESEARCH, ACCESS_SECURITY, ACCESS_PILOT,
ACCESS_ENGINE_EQUIP, ACCESS_PSYCHIATRIST, ACCESS_QM, ACCESS_RD, ACCESS_RC_ANNOUNCE, ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_RESEARCH, ACCESS_SECURITY,
ACCESS_SURGERY, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_THEATRE, ACCESS_TCOMSAT, ACCESS_TOX_STORAGE, ACCESS_VIROLOGY, ACCESS_WEAPONS, ACCESS_XENOBIOLOGY,
ACCESS_XENOARCH)
@@ -158,13 +158,13 @@
if(REGION_GENERAL) //station general
return list(ACCESS_KITCHEN, ACCESS_BAR, ACCESS_HYDROPONICS, ACCESS_JANITOR, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_LIBRARY, ACCESS_THEATRE, ACCESS_LAWYER, ACCESS_MAGISTRATE, ACCESS_CLOWN, ACCESS_MIME)
if(REGION_SECURITY) //security
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_PILOT, ACCESS_HOS)
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS)
if(REGION_MEDBAY) //medbay
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_PSYCHIATRIST, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO, ACCESS_PARAMEDIC)
if(REGION_RESEARCH) //research
return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK)
if(REGION_ENGINEERING) //engineering and maintenance
return list(ACCESS_CONSTRUCTION, ACCESS_MAINT_TUNNELS, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TECH_STORAGE, ACCESS_ATMOSPHERICS, ACCESS_MINISAT, ACCESS_CE, ACCESS_MECHANIC)
return list(ACCESS_CONSTRUCTION, ACCESS_MAINT_TUNNELS, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TECH_STORAGE, ACCESS_ATMOSPHERICS, ACCESS_MINISAT, ACCESS_CE)
if(REGION_SUPPLY) //supply
return list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_CARGO, ACCESS_QM)
if(REGION_COMMAND) //command
@@ -334,10 +334,6 @@
return "Nanotrasen Rep."
if(ACCESS_PARAMEDIC)
return "Paramedic"
if(ACCESS_MECHANIC)
return "Mechanic Workshop"
if(ACCESS_PILOT)
return "Security Pod Pilot"
if(ACCESS_MAGISTRATE)
return "Magistrate"
if(ACCESS_MINERAL_STOREROOM)
+2 -36
View File
@@ -12,11 +12,11 @@
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MECHANIC, ACCESS_MINERAL_STOREROOM)
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MECHANIC, ACCESS_MINERAL_STOREROOM)
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
minimal_player_age = 21
exp_requirements = 1200
exp_type = EXP_TYPE_ENGINEERING
@@ -117,37 +117,3 @@
dufflebag = /obj/item/storage/backpack/duffel/atmos
box = /obj/item/storage/box/engineer
/datum/job/mechanic
title = "Mechanic"
flag = JOB_MECHANIC
department_flag = JOBCAT_KARMA
total_positions = 1
spawn_positions = 1
is_engineering = 1
supervisors = "the chief engineer"
department_head = list("Chief Engineer")
selection_color = "#fff5cc"
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECHANIC, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_EMERGENCY_STORAGE, ACCESS_MECHANIC, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_MINERAL_STOREROOM)
outfit = /datum/outfit/job/mechanic
/datum/outfit/job/mechanic
name = "Mechanic"
jobtype = /datum/job/mechanic
uniform = /obj/item/clothing/under/rank/mechanic
belt = /obj/item/storage/belt/utility/full
shoes = /obj/item/clothing/shoes/workboots
head = /obj/item/clothing/head/hardhat
l_ear = /obj/item/radio/headset/headset_eng
id = /obj/item/card/id/engineering
r_pocket = /obj/item/t_scanner
pda = /obj/item/pda/engineering
backpack_contents = list(
/obj/item/pod_paint_bucket = 1
)
backpack = /obj/item/storage/backpack/industrial
satchel = /obj/item/storage/backpack/satchel_eng
dufflebag = /obj/item/storage/backpack/duffel/engineering
box = /obj/item/storage/box/engineer
+2 -39
View File
@@ -10,13 +10,13 @@
selection_color = "#ffdddd"
req_admin_notify = 1
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
ACCESS_FORENSICS_LOCKERS, ACCESS_PILOT, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
minimal_access = list(ACCESS_EVA, ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_PILOT, ACCESS_WEAPONS)
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
minimal_player_age = 21
exp_requirements = 1200
exp_type = EXP_TYPE_SECURITY
@@ -222,40 +222,3 @@
backpack = /obj/item/storage/backpack/medic
satchel = /obj/item/storage/backpack/satchel_med
dufflebag = /obj/item/storage/backpack/duffel/medical
/datum/job/pilot
title = "Security Pod Pilot"
flag = JOB_PILOT
department_flag = JOBCAT_KARMA
total_positions = 1
spawn_positions = 1
is_security = 1
supervisors = "the head of security"
department_head = list("Head of Security")
selection_color = "#ffeeee"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_PILOT, ACCESS_EXTERNAL_AIRLOCKS)
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS, ACCESS_PILOT, ACCESS_EXTERNAL_AIRLOCKS)
minimal_player_age = 7
outfit = /datum/outfit/job/pilot
/datum/outfit/job/pilot
name = "Security Pod Pilot"
jobtype = /datum/job/pilot
uniform = /obj/item/clothing/under/rank/security/pod_pilot
suit = /obj/item/clothing/suit/jacket/pilot
gloves = /obj/item/clothing/gloves/color/black
shoes = /obj/item/clothing/shoes/jackboots
l_ear = /obj/item/radio/headset/headset_sec/alt
id = /obj/item/card/id/security
l_pocket = /obj/item/flash
suit_store = /obj/item/gun/energy/gun/advtaser
pda = /obj/item/pda/security
backpack_contents = list(
/obj/item/restraints/handcuffs = 1
)
implants = list(/obj/item/implant/mindshield)
backpack = /obj/item/storage/backpack/security
satchel = /obj/item/storage/backpack/satchel_sec
dufflebag = /obj/item/storage/backpack/duffel/security
box = /obj/item/storage/box/engineer
+1 -5
View File
@@ -17,7 +17,6 @@ GLOBAL_LIST_INIT(engineering_positions, list(
"Chief Engineer",
"Station Engineer",
"Life Support Specialist",
"Mechanic"
))
@@ -78,7 +77,6 @@ GLOBAL_LIST_INIT(security_positions, list(
"Detective",
"Security Officer",
"Brig Physician",
"Security Pod Pilot",
"Magistrate"
))
@@ -98,10 +96,8 @@ GLOBAL_LIST_INIT(whitelisted_positions, list(
"Blueshield",
"Nanotrasen Representative",
"Barber",
"Mechanic",
"Brig Physician",
"Magistrate",
"Security Pod Pilot",
"Magistrate"
))
+2 -13
View File
@@ -257,8 +257,8 @@
board_name = "RD Console"
desc = "Swipe a Scientist level ID or higher to reconfigure."
build_path = /obj/machinery/computer/rdconsole/core
req_access = list(ACCESS_TOX) // This is for adjusting the type of computer we're building - in case something messes up the pre-existing robotics or mechanics consoles
var/list/access_types = list("R&D Core", "Robotics", "E.X.P.E.R.I-MENTOR", "Mechanics", "Public")
req_access = list(ACCESS_TOX) // This is for adjusting the type of computer we're building - in case something messes up the pre-existing robotics console
var/list/access_types = list("R&D Core", "Robotics", "E.X.P.E.R.I-MENTOR", "Public")
/obj/item/circuitboard/rdconsole/robotics
board_name = "RD Console - Robotics"
@@ -268,10 +268,6 @@
board_name = "RD Console - E.X.P.E.R.I-MENTOR"
build_path = /obj/machinery/computer/rdconsole/experiment
/obj/item/circuitboard/rdconsole/mechanics
board_name = "RD Console - Mechanics"
build_path = /obj/machinery/computer/rdconsole/mechanics
/obj/item/circuitboard/rdconsole/public
board_name = "RD Console - Public"
build_path = /obj/machinery/computer/rdconsole/public
@@ -281,10 +277,6 @@
board_name = "Exosuit Control Console"
build_path = /obj/machinery/computer/mecha
/obj/item/circuitboard/pod_locater
board_name = "Pod Location Console"
build_path = /obj/machinery/computer/podtracker
/obj/item/circuitboard/rdservercontrol
board_name = "RD Server Control"
build_path = /obj/machinery/computer/rdservercontrol
@@ -426,9 +418,6 @@
if("E.X.P.E.R.I-MENTOR")
board_name = "RD Console - E.X.P.E.R.I-MENTOR"
build_path = /obj/machinery/computer/rdconsole/experiment
if("Mechanics")
board_name = "RD Console - Mechanics"
build_path = /obj/machinery/computer/rdconsole/mechanics
if("Public")
board_name = "RD Console - Public"
build_path = /obj/machinery/computer/rdconsole/public
-2
View File
@@ -48,9 +48,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/datum/job/judge,
/datum/job/blueshield,
/datum/job/nanotrasenrep,
/datum/job/pilot,
/datum/job/brigdoc,
/datum/job/mechanic,
/datum/job/barber,
/datum/job/chaplain
)
@@ -1,41 +0,0 @@
/obj/machinery/computer/podtracker
name = "pod tracking console"
icon = 'icons/obj/computer.dmi'
icon_keyboard = "tech_key"
icon_screen = "rdcomp"
light_color = LIGHT_COLOR_PURPLE
req_access = list(ACCESS_ROBOTICS)
circuit = /obj/item/circuitboard/pod_locater
/obj/machinery/computer/podtracker/attack_ai(mob/user)
return attack_hand(user)
/obj/machinery/computer/podtracker/attack_hand(mob/user)
ui_interact(user)
/obj/machinery/computer/podtracker/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "PodTracking", name, 400, 500, master_ui, state)
ui.open()
/obj/machinery/computer/podtracker/ui_data(mob/user)
var/list/data = list()
var/list/pods = list()
for(var/obj/item/spacepod_equipment/misc/tracker/TR in GLOB.pod_trackers)
if(TR.my_atom)
var/obj/spacepod/my_pod = TR.my_atom
var/podname = capitalize(sanitize(my_pod.name))
var/pilot = "None"
var/passengers = list()
if(my_pod.pilot)
pilot = my_pod.pilot
if(my_pod.passengers)
for(var/mob/M in my_pod.passengers)
passengers += M.name
var/passengers_text = english_list(passengers, "None")
pods.Add(list(list("name" = podname, "podx" = my_pod.x, "pody" = my_pod.y, "podz" = my_pod.z, "pilot" = pilot, "passengers" = passengers_text)))
data["pods"] = pods
return data
@@ -710,18 +710,6 @@ to destroy them and players will be able to make replacements.
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stack/sheet/glass = 1)
/obj/item/circuitboard/podfab
board_name = "Spacepod Fabricator"
build_path = /obj/machinery/mecha_part_fabricator/spacepod
board_type = "machine"
origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stack/sheet/glass = 1)
/obj/item/circuitboard/clonepod
board_name = "Clone Pod"
build_path = /obj/machinery/clonepod
-1
View File
@@ -248,7 +248,6 @@
/obj/item/reagent_containers/hypospray/CMO,
/obj/item/clothing/accessory/medal/gold/captain,
/obj/item/clothing/gloves/color/black/krav_maga/sec,
/obj/item/spacepod_key,
/obj/item/nullrod,
/obj/item/key,
/obj/item/door_remote,
-25
View File
@@ -1,25 +0,0 @@
/obj/structure/spacepoddoor
name = "podlock"
desc = "Why it no open!!!"
icon = 'icons/effects/beam.dmi'
icon_state = "n_beam"
density = 0
anchored = 1
var/id = 1.0
/obj/structure/spacepoddoor/Initialize()
..()
air_update_turf(1)
/obj/structure/spacepoddoor/CanAtmosPass(turf/T)
return 0
/obj/structure/spacepoddoor/Destroy()
var/turf/T = get_turf(src)
. = ..()
T.air_update_turf(TRUE)
/obj/structure/spacepoddoor/CanPass(atom/movable/A, turf/T)
if(istype(A, /obj/spacepod))
return ..()
else return 0
+1 -5
View File
@@ -516,7 +516,7 @@ GLOBAL_LIST_EMPTY(turret_icons)
var/list/targets = list() //list of primary targets
var/list/secondarytargets = list() //targets that are least important
var/static/things_to_scan = typecacheof(list(/obj/mecha, /obj/spacepod, /obj/vehicle, /mob/living))
var/static/things_to_scan = typecacheof(list(/obj/mecha, /obj/vehicle, /mob/living))
for(var/A in typecache_filter_list(view(scan_range, src), things_to_scan))
var/atom/AA = A
@@ -528,10 +528,6 @@ GLOBAL_LIST_EMPTY(turret_icons)
var/obj/mecha/ME = A
assess_and_assign(ME.occupant, targets, secondarytargets)
if(istype(A, /obj/spacepod))
var/obj/spacepod/SP = A
assess_and_assign(SP.pilot, targets, secondarytargets)
if(istype(A, /obj/vehicle))
var/obj/vehicle/T = A
if(T.has_buckled_mobs())
+1 -1
View File
@@ -20,7 +20,7 @@
#define RCS_SHIP_LOG 10 // View Shipping Label Log
//Radio list
#define ENGI_ROLES list("Atmospherics","Mechanic","Engineering","Chief Engineer's Desk","Telecoms Admin")
#define ENGI_ROLES list("Atmospherics","Engineering","Chief Engineer's Desk","Telecoms Admin")
#define SEC_ROLES list("Warden","Security","Brig Medbay","Head of Security's Desk")
#define MISC_ROLES list("Bar","Chapel","Kitchen","Hydroponics","Janitorial")
#define MED_ROLES list("Virology","Chief Medical Officer's Desk","Medbay")
+1 -4
View File
@@ -98,15 +98,12 @@
/obj/machinery/suit_storage_unit/security/secure
secure = TRUE
/obj/machinery/suit_storage_unit/security/pod_pilot
req_access = list(ACCESS_PILOT)
/obj/machinery/suit_storage_unit/security/hos
name = "Head of Security's suit storage unit"
suit_type = /obj/item/clothing/suit/space/hardsuit/security/hos
mask_type = /obj/item/clothing/mask/gas/sechailer/hos
req_access = list(ACCESS_HOS)
/obj/machinery/suit_storage_unit/security/hos/secure
secure = TRUE
-2
View File
@@ -41,7 +41,6 @@
"Engine Technician" = "engradio",
"Life Support Specialist" = "engradio",
"Maintenance Technician" = "engradio",
"Mechanic" = "engradio",
"Station Engineer" = "engradio",
// Central Command
"Emergency Response Team Engineer" = "dsquadradio", // I know this says deathsquad but the class for responseteam is neon green. No.
@@ -92,7 +91,6 @@
"Internal Affairs Agent" = "secradio",
"Magistrate" = "secradio",
"Security Officer" = "secradio",
"Security Pod Pilot" = "secradio",
"Warden" = "secradio",
// Supply
"Quartermaster" = "supradio",
+1 -1
View File
@@ -368,7 +368,7 @@
if(!is_teleport_allowed(z) && !admin_usage)
to_chat(M, "You can't use this here.")
return
if(power_station && power_station.engaged && !panel_open && !blockAI(M) && !istype(M, /obj/spacepod))
if(power_station && power_station.engaged && !panel_open && !blockAI(M))
if(!teleport(M) && isliving(M)) // the isliving(M) is needed to avoid triggering errors if a spark bumps the telehub
visible_message("<span class='warning'>[src] emits a loud buzz, as its teleport portal flickers and fails!</span>")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
+1 -1
View File
@@ -1798,7 +1798,7 @@
/obj/item/clothing/head/soft/sec = 4,
/obj/item/clothing/head/soft/sec/corp = 4,
/obj/item/clothing/suit/armor/secjacket = 4,
/obj/item/clothing/suit/jacket/pilot = 2,
/obj/item/clothing/suit/jacket/secbomber = 2,
/obj/item/clothing/suit/hooded/wintercoat/security = 4,
/obj/item/clothing/gloves/color/black = 4,
/obj/item/clothing/accessory/armband/sec = 6,
-33
View File
@@ -460,39 +460,6 @@
component_parts += new /obj/item/stack/sheet/glass(null)
RefreshParts()
/**
* # Spacepod Fabricator
*
* Spacepod variant of [/obj/machinery/mecha_part_fabricator].
*/
/obj/machinery/mecha_part_fabricator/spacepod
name = "spacepod fabricator"
allowed_design_types = PODFAB
req_access = list(ACCESS_MECHANIC)
/obj/machinery/mecha_part_fabricator/spacepod/New()
..()
QDEL_LIST(component_parts)
component_parts = list()
component_parts += new /obj/item/circuitboard/podfab(null)
component_parts += new /obj/item/stock_parts/matter_bin(null)
component_parts += new /obj/item/stock_parts/matter_bin(null)
component_parts += new /obj/item/stock_parts/manipulator(null)
component_parts += new /obj/item/stock_parts/micro_laser(null)
component_parts += new /obj/item/stack/sheet/glass(null)
RefreshParts()
/obj/machinery/mecha_part_fabricator/spacepod/Initialize(mapload)
. = ..()
categories = list(
"Pod_Weaponry",
"Pod_Armor",
"Pod_Cargo",
"Pod_Parts",
"Pod_Frame",
"Misc"
)
/**
* # Robotic Fabricator
*
@@ -1,4 +1,4 @@
/// Ion trails for spacepods and other space-flying things
/// Ion trails for jetpacks, ion thrusters and other space-flying things
/obj/effect/particle_effect/ion_trails
name = "ion trails"
icon_state = "ion_trails"
@@ -307,9 +307,3 @@
name = "80pc vaultdoor 20pc wall"
result = list(/obj/machinery/door/airlock/hatch/syndicate/vault = 4,
/turf/simulated/wall/mineral/plastitanium/nodiagonal = 1)
/obj/effect/spawner/random_spawners/syndicate/layout/spacepod
name = "50pc loot spacepod"
result = list(/obj/spacepod/syndi = 1,
/obj/spacepod/syndi/unlocked = 1)
+2 -2
View File
@@ -734,7 +734,7 @@
registered_name = "HoS"
icon_state = "HoS"
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT,
ACCESS_FORENSICS_LOCKERS, ACCESS_PILOT, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS,
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS)
@@ -762,7 +762,7 @@
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_TELEPORTER, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA,
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MECHANIC, ACCESS_MINERAL_STOREROOM)
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MINERAL_STOREROOM)
/obj/item/card/id/clown
name = "Pink ID"
@@ -231,8 +231,7 @@
/obj/item/holosign_creator/security,
/obj/item/melee/classic_baton/telescopic,
/obj/item/restraints/legcuffs/bola,
/obj/item/clothing/mask/gas/sechailer,
/obj/item/spacepod_key)
/obj/item/clothing/mask/gas/sechailer)
/obj/item/storage/belt/security/sec/populate_contents()
new /obj/item/flashlight/seclite(src)
@@ -75,7 +75,7 @@
if(istype(W, /obj/item/pen))
var/decalselection = input("Please select a decal") as null|anything in list("Atmospherics", "Bartender", "Barber", "Blueshield", "Brig Physician", "Captain",
"Cargo", "Chief Engineer", "Chaplain", "Chef", "Chemist", "Civilian", "Clown", "CMO", "Coroner", "Detective", "Engineering", "Genetics", "HOP",
"HOS", "Hydroponics", "Internal Affairs Agent", "Janitor", "Magistrate", "Mechanic", "Medical", "Mime", "Mining", "NT Representative", "Paramedic", "Pod Pilot",
"HOS", "Hydroponics", "Internal Affairs Agent", "Janitor", "Magistrate", "Medical", "Mime", "Mining", "NT Representative", "Paramedic",
"Prisoner", "Research Director", "Security", "Syndicate", "Therapist", "Virology", "Warden", "Xenobiology")
if(!decalselection)
return
@@ -25,7 +25,6 @@
"Locker Toilets",
"Maintenance Bar",
"Medical Secondary Storage",
"Mechanic Workshop",
"Port Emergency Storage",
"Psych Room",
"Toxins Launch Room",
@@ -206,9 +206,7 @@
immunity = list(TYPE_GROUND)
area_blacklist = list(/area/maintenance)
area_whitelist = list(/area/hallway,
/area/escapepodbay,
/area/engine/mechanic_workshop,
/area/security/podbay)
/area/escapepodbay)
/datum/mob_type/bluespace
name = "Bluespace"
@@ -213,9 +213,6 @@
to_chat(user, "<span class='warning'>The communicator buzzes, and you hear the voice again: 'Oh really now?' You hear a clicking sound. 'Team, get back here. We have trouble'. Then the line goes dead.</span>")
for(var/thing in GLOB.landmarks_list)
var/obj/effect/landmark/L = thing
if(L.name == "wildwest_syndipod")
var/obj/spacepod/syndi/P = new /obj/spacepod/syndi(get_turf(L))
P.name = "Syndi Recon Pod"
if(L.name == "wildwest_syndibackup")
var/mob/living/simple_animal/hostile/syndicate/ranged/space/R = new /mob/living/simple_animal/hostile/syndicate/ranged/space(get_turf(L))
R.name = "Syndi Recon Team"
+2 -6
View File
@@ -147,14 +147,10 @@
karma_purchase(karma,5,"job","Brig Physician")
if("3")
karma_purchase(karma,30,"job","Nanotrasen Representative")
if("5")
if("4")
karma_purchase(karma,30,"job","Blueshield")
if("6")
karma_purchase(karma,30,"job","Mechanic")
if("7")
if("5")
karma_purchase(karma,45,"job","Magistrate")
if("9")
karma_purchase(karma,30,"job","Security Pod Pilot")
return
if(href_list["KarmaBuy2"])
var/karma=verify_karma()
@@ -1379,29 +1379,6 @@
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel"), ICON_OVERLAY)
else if(job_karma_high)
switch(job_karma_high)
if(JOB_MECHANIC)
clothes_s = new /icon(uniform_dmi, "mechanic_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "orange"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/clothing/belt.dmi', "utility"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/clothing/head.dmi', "hardhat0_yellow"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "engiepack"), ICON_OVERLAY)
if(3)
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel-eng"), ICON_OVERLAY)
if(4)
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel"), ICON_OVERLAY)
if(JOB_PILOT)
clothes_s = new /icon(uniform_dmi, "secred_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/clothing/suit.dmi', "bomber"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "securitypack"), ICON_OVERLAY)
if(3)
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel-sec"), ICON_OVERLAY)
if(4)
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel"), ICON_OVERLAY)
if(JOB_BRIGDOC)
clothes_s = new /icon(uniform_dmi, "medical_s")
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "white"), ICON_UNDERLAY)
@@ -66,12 +66,12 @@
/datum/gear/accessory/holobadge
display_name = "holobadge, pin"
path = /obj/item/clothing/accessory/holobadge
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/accessory/holobadge_n
display_name = "holobadge, cord"
path = /obj/item/clothing/accessory/holobadge/cord
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/accessory/tieblue
display_name = "tie, blue"
@@ -170,7 +170,7 @@
/datum/gear/accessory/armband_job/sec
display_name = " armband, security"
path = /obj/item/clothing/accessory/armband/sec
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician")
/datum/gear/accessory/armband_job/cargo
display_name = "cargo armband"
@@ -71,7 +71,7 @@
/datum/gear/sechud
display_name = "a classic security HUD"
path = /obj/item/clothing/glasses/hud/security
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Security Pod Pilot", "Internal Affairs Agent","Magistrate")
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Internal Affairs Agent","Magistrate")
/datum/gear/cryaonbox
display_name = "a box of crayons"
@@ -168,7 +168,7 @@
/datum/gear/mug/department/eng
display_name = "engineer coffee mug"
description = "An engineer's coffee mug, emblazoned in the colors of the Engineering department."
allowed_roles = list("Chief Engineer", "Station Engineer", "Mechanic", "Life Support Specialist")
allowed_roles = list("Chief Engineer", "Station Engineer", "Life Support Specialist")
path = /obj/item/reagent_containers/food/drinks/mug/eng
/datum/gear/mug/department/med
@@ -186,7 +186,7 @@
/datum/gear/mug/department/sec
display_name = "officer coffee mug"
description = "An officer's coffee mug, emblazoned in the colors of the Security department."
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot", "Brig Physician", "Internal Affairs Agent")
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Internal Affairs Agent")
path = /obj/item/reagent_containers/food/drinks/mug/sec
/datum/gear/mug/department/serv
@@ -6,17 +6,17 @@
/datum/gear/hat/hhat_yellow
display_name = "hardhat, yellow"
path = /obj/item/clothing/head/hardhat
allowed_roles = list("Chief Engineer", "Station Engineer", "Mechanic", "Life Support Specialist")
allowed_roles = list("Chief Engineer", "Station Engineer", "Life Support Specialist")
/datum/gear/hat/hhat_orange
display_name = "hardhat, orange"
path = /obj/item/clothing/head/hardhat/orange
allowed_roles = list("Chief Engineer", "Station Engineer", "Mechanic", "Life Support Specialist")
allowed_roles = list("Chief Engineer", "Station Engineer", "Life Support Specialist")
/datum/gear/hat/hhat_blue
display_name = "hardhat, blue"
path = /obj/item/clothing/head/hardhat/dblue
allowed_roles = list("Chief Engineer", "Station Engineer", "Mechanic", "Life Support Specialist")
allowed_roles = list("Chief Engineer", "Station Engineer", "Life Support Specialist")
/datum/gear/hat/that
display_name = "top hat"
@@ -57,12 +57,12 @@
/datum/gear/hat/capcsec
display_name = "security corporate cap"
path = /obj/item/clothing/head/soft/sec/corp
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Security Officer")
/datum/gear/hat/capsec
display_name = "security cap"
path = /obj/item/clothing/head/soft/sec
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Security Officer")
/datum/gear/hat/capred
display_name = "cap, red"
@@ -143,7 +143,7 @@
/datum/gear/hat/beret_job/sec
display_name = "security beret"
path = /obj/item/clothing/head/beret/sec
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Security Officer")
/datum/gear/hat/beret_job/sci
display_name = "science beret"
@@ -13,7 +13,7 @@
display_name = "sleek veil"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built security HUD."
path = /obj/item/clothing/glasses/hud/security/tajblind
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Security Pod Pilot", "Internal Affairs Agent", "Magistrate")
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Internal Affairs Agent", "Magistrate")
cost = 2
/datum/gear/racial/taj/med
@@ -18,7 +18,7 @@
/datum/gear/suit/coat/job/sec
display_name = "winter coat, security"
path = /obj/item/clothing/suit/hooded/wintercoat/security
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/suit/coat/job/captain
display_name = "winter coat, captain"
@@ -38,7 +38,7 @@
/datum/gear/suit/coat/job/engi
display_name = "winter coat, engineering"
path = /obj/item/clothing/suit/hooded/wintercoat/engineering
allowed_roles = list("Chief Engineer", "Station Engineer", "Mechanic")
allowed_roles = list("Chief Engineer", "Station Engineer")
/datum/gear/suit/coat/job/atmos
display_name = "winter coat, atmospherics"
@@ -106,12 +106,12 @@
/datum/gear/suit/secjacket
display_name = "security jacket"
path = /obj/item/clothing/suit/armor/secjacket
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/suit/secbomberjacket
display_name = "security bomber jacket"
path = /obj/item/clothing/suit/jacket/pilot
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot")
path = /obj/item/clothing/suit/jacket/secbomber
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/suit/ianshirt
display_name = "Ian Shirt"
@@ -229,22 +229,22 @@
/datum/gear/uniform/sec/formal
display_name = "security uniform, formal"
path = /obj/item/clothing/under/rank/security/formal
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
/datum/gear/uniform/sec/secorporate
display_name = "security uniform, corporate"
path = /obj/item/clothing/under/rank/security/corp
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Security Officer")
/datum/gear/uniform/sec/dispatch
display_name = "security uniform, dispatch"
path = /obj/item/clothing/under/rank/dispatch
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Security Officer")
/datum/gear/uniform/sec/casual
display_name = "security uniform, casual"
path = /obj/item/clothing/under/rank/security2
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Detective", "Security Pod Pilot")
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Detective")
/datum/gear/uniform/shorts
subtype_path = /datum/gear/uniform/shorts
+1 -1
View File
@@ -789,7 +789,7 @@
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi'
)
/obj/item/clothing/suit/jacket/pilot
/obj/item/clothing/suit/jacket/secbomber
name = "security bomber jacket"
desc = "A stylish and worn-in armoured black bomber jacket emblazoned with the NT Security crest on the left breast. Looks rugged."
w_class = WEIGHT_CLASS_NORMAL
@@ -64,10 +64,3 @@
name = "roboticist's jumpskirt"
icon_state = "roboticsf"
item_color = "roboticsf"
/obj/item/clothing/under/rank/mechanic
desc = "It's a pair of overalls worn by mechanics."
name = "mechanic's overalls"
icon_state = "mechanic"
item_state = "mechanic"
item_color = "mechanic"
@@ -183,11 +183,3 @@
item_state = "brig_physf"
item_color = "brig_physf"
permeability_coefficient = 0.50
//Pod Pilot
/obj/item/clothing/under/rank/security/pod_pilot
name = "pod pilot's jumpsuit"
desc = "Suit for your regular pod pilot."
icon_state = "pod_pilot"
item_state = "pod_pilot"
item_color = "pod_pilot"
-24
View File
@@ -1537,30 +1537,6 @@
icon_state = "ikelos_envirohelm" // New item needed because `initial(icon_state)` is used.
icon = 'icons/obj/custom_items.dmi'
/obj/item/fluff/decemviri_spacepod_kit //Decemviri: Sylus Cain
name = "Spacepod mod kit"
desc = "a kit on tools and a blueprint detailing how to reconfigure a spacepod"
icon_state = "modkit"
/obj/item/fluff/decemviri_spacepod_kit/afterattack(atom/target, mob/user, proximity)
if(!proximity || !ishuman(user) || user.incapacitated())
return
if(!istype(target, /obj/spacepod))
to_chat(user, "<span class='warning'>You can't modify [target]!</span>")
return
to_chat(user, "<span class='notice'>You modify the appearance of [target] based on the kit blueprints.</span>")
var/obj/spacepod/pod = target
pod.icon = 'icons/48x48/custom_pod.dmi'
pod.icon_state = "pod_dece"
pod.name = "sleek spacepod"
pod.desc = "A modified varient of a space pod."
pod.can_paint = FALSE
used = 1
qdel(src)
/obj/item/bikehorn/fluff/pinkbikehorn //Xerdies: Squiddle Toodle
name = "Honkinator5000"
desc = "This horn may look ridiculous but is the new hot item for clowns in the Clown Empire. It has a fine print on its side reading: Property of Prince Honktertong the IV"
+1 -2
View File
@@ -24,8 +24,7 @@
/area/engine/break_room,
/area/engine/equipmentstorage,
/area/engine/chiefs_office,
/area/engine/controlroom,
/area/engine/mechanic_workshop
/area/engine/controlroom
))
allowed_areas = typecacheof(GLOB.the_station_areas) - safe_area_types + unsafe_area_subtypes
+9 -11
View File
@@ -271,19 +271,11 @@ GLOBAL_LIST_EMPTY(karma_spenders)
else
dat += "Nanotrasen Representative - <font color='green'>Unlocked</font><br>"
if(!("Blueshield" in joblist))
dat += "<a href='?src=[UID()];karmashop=shop;KarmaBuy=5'>Unlock Blueshield -- 30KP</a><br>"
dat += "<a href='?src=[UID()];karmashop=shop;KarmaBuy=4'>Unlock Blueshield -- 30KP</a><br>"
else
dat += "Blueshield - <font color='green'>Unlocked</font><br>"
if(!("Security Pod Pilot" in joblist))
dat += "<a href='?src=[UID()];karmashop=shop;KarmaBuy=9'>Unlock Security Pod Pilot -- 30KP</a><br>"
else
dat += "Security Pod Pilot - <font color='green'>Unlocked</font><br>"
if(!("Mechanic" in joblist))
dat += "<a href='?src=[UID()];karmashop=shop;KarmaBuy=6'>Unlock Mechanic -- 30KP</a><br>"
else
dat += "Mechanic - <font color='green'>Unlocked</font><br>"
if(!("Magistrate" in joblist))
dat += "<a href='?src=[UID()];karmashop=shop;KarmaBuy=7'>Unlock Magistrate -- 45KP</a><br>"
dat += "<a href='?src=[UID()];karmashop=shop;KarmaBuy=5'>Unlock Magistrate -- 45KP</a><br>"
else
dat+= "Magistrate - <font color='green'>Unlocked</font><br>"
@@ -350,6 +342,12 @@ GLOBAL_LIST_EMPTY(karma_spenders)
if("Nanotrasen Recruiter" in purchased)
refundable += "Nanotrasen Recruiter"
dat += "<a href='?src=[UID()];karmashop=shop;KarmaRefund=Nanotrasen Recruiter;KarmaRefundType=job;KarmaRefundCost=10'>Refund Nanotrasen Recruiter -- 10KP</a><br>"
if("Mechanic" in purchased)
refundable += "Mechanic"
dat += "<a href='?src=[UID()];karmashop=shop;KarmaRefund=Mechanic;KarmaRefundType=job;KarmaRefundCost=30'>Refund Mechanic -- 30KP</a><br>"
if("Security Pod Pilot" in purchased)
refundable += "Security Pod Pilot"
dat += "<a href='?src=[UID()];karmashop=shop;KarmaRefund=Security Pod Pilot;KarmaRefundType=job;KarmaRefundCost=30'>Refund Security Pod Pilot -- 30KP</a><br>"
if(!refundable.len)
dat += "You do not have any refundable karma purchases.<br>"
@@ -512,7 +510,7 @@ GLOBAL_LIST_EMPTY(karma_spenders)
/client/proc/karmarefund(type, name, cost)
switch(name)
if("Tajaran Ambassador","Unathi Ambassador","Skrell Ambassador","Diona Ambassador","Kidan Ambassador",
"Slime People Ambassador","Grey Ambassador","Vox Ambassador","Customs Officer")
"Slime People Ambassador","Grey Ambassador","Vox Ambassador","Customs Officer", "Mechanic", "Security Pod Pilot")
cost = 30
if("Nanotrasen Recruiter")
cost = 10
@@ -31,7 +31,6 @@
"Science",
"Robotics",
"Research Director's Desk",
"Mechanic",
"Engineering" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA),
"Chief Engineer's Desk" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA),
"Atmospherics" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA),
@@ -211,11 +211,6 @@
stat("Total Blood", "[mind.vampire.bloodtotal]")
stat("Usable Blood", "[mind.vampire.bloodusable]")
if(istype(loc, /obj/spacepod)) // Spacdpods!
var/obj/spacepod/S = loc
stat("Spacepod Charge", "[istype(S.battery) ? "[(S.battery.charge / S.battery.maxcharge) * 100]" : "No cell detected"]")
stat("Spacepod Integrity", "[!S.health ? "0" : "[(S.health / initial(S.health)) * 100]"]%")
/mob/living/carbon/human/ex_act(severity)
if(status_flags & GODMODE)
return FALSE
@@ -69,7 +69,7 @@
if("Chef")
O = new /datum/outfit/plasmaman/chef
if("Security Officer", "Security Pod Pilot", "Special Operations Officer")
if("Security Officer", "Special Operations Officer")
O = new /datum/outfit/plasmaman/security
if("Detective")
@@ -111,7 +111,7 @@
if("Research Director")
O = new /datum/outfit/plasmaman/rd
if("Station Engineer", "Mechanic")
if("Station Engineer")
O = new /datum/outfit/plasmaman/engineering
if("Chief Engineer")
-4
View File
@@ -847,10 +847,6 @@
var/obj/mecha/M = loc
loc_temp = M.return_temperature()
else if(istype(loc, /obj/spacepod))
var/obj/spacepod/S = loc
loc_temp = S.return_temperature()
else if(istype(loc, /obj/structure/transit_tube_pod))
loc_temp = environment.temperature
@@ -131,21 +131,6 @@
spawn(0)
handle_automated_action()
break
for(var/obj/spacepod/P in view(7, src))
if((P.name == oldtarget_name) && (world.time < last_found + 100))
continue
if(!P.pilot)
continue
if("syndicate" in P.pilot.faction)
continue
if(P.pilot.stat == DEAD)
continue
target = P
oldtarget_name = P.name
mode = BOT_HUNT
spawn(0)
handle_automated_action()
break
/mob/living/simple_animal/bot/ed209/syndicate/shootAt(atom/target)
@@ -131,7 +131,7 @@
if(!search_objects)
. = hearers(vision_range, targets_from) - src //Remove self, so we don't suicide
var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/spacepod))
var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha))
for(var/HM in typecache_filter_list(range(vision_range, targets_from), hostile_machines))
if(can_see(targets_from, HM, vision_range))
@@ -216,12 +216,6 @@
if(CanAttack(M.occupant))
return TRUE
if(isspacepod(the_target))
var/obj/spacepod/S = the_target
if(S.pilot)//Just so we don't attack empty pods
if(CanAttack(S.pilot))
return TRUE
if(istype(the_target, /obj/machinery/porta_turret))
var/obj/machinery/porta_turret/P = the_target
if(P.faction in faction)
@@ -557,7 +551,7 @@
toggle_ai(AI_ON)
/mob/living/simple_animal/hostile/proc/ListTargetsLazy(_Z)//Step 1, find out what we can see
var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/spacepod))
var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha))
. = list()
for(var/I in SSmobs.clients_by_zlevel[_Z])
var/mob/M = I
@@ -12,10 +12,6 @@
var/obj/mecha/M = A
if(M.occupant)
return A
else if(isspacepod(A))
var/obj/spacepod/S = A
if(S.pilot)
return A
/mob/living/simple_animal/hostile/retaliate/ListTargets()
if(!enemies.len)
@@ -39,11 +35,6 @@
if(M.occupant)
enemies |= M
enemies |= M.occupant
else if(isspacepod(A))
var/obj/spacepod/S = A
if(S.pilot)
enemies |= S
enemies |= S.pilot
for(var/mob/living/simple_animal/hostile/retaliate/H in around)
if(faction_check_mob(H) && !attack_same && !H.attack_same)
@@ -139,8 +139,6 @@
seen_enemy_name = target.name
if(istype(target, /obj/mecha))
depotarea.saw_mech(target)
if(istype(target, /obj/spacepod))
depotarea.saw_pod(target)
if(depotarea.list_includes(target, depotarea.dead_list))
seen_revived_enemy = TRUE
raise_alert("[name] reports intruder [target] has returned from death!")
@@ -68,8 +68,6 @@
targets2 += M
else
targets3 += M
for(var/obj/spacepod/S in view(src, vision_range))
targets3 += S
if(targets1.len)
return targets1
if(targets2.len)
@@ -188,11 +186,6 @@
if(M.occupant)
enemies |= M
enemies |= M.occupant
else if(istype(A, /obj/spacepod))
var/obj/spacepod/M = A
if(M.pilot)
enemies |= M
enemies |= M.pilot
for(var/mob/living/simple_animal/hostile/poison/terror_spider/H in ts_nearby)
var/retaliate_faction_check = 0
for(var/F in faction)
@@ -397,10 +397,6 @@
var/obj/mecha/M = the_target
if(M.occupant)
return FALSE
if(isspacepod(the_target))
var/obj/spacepod/S = the_target
if(S.pilot)
return FALSE
return TRUE
/mob/living/simple_animal/handle_fire()
@@ -73,9 +73,7 @@
/datum/job/judge,
/datum/job/blueshield,
/datum/job/nanotrasenrep,
/datum/job/pilot,
/datum/job/brigdoc,
/datum/job/mechanic,
/datum/job/barber,
/datum/job/chaplain,
/datum/job/ntnavyofficer,
@@ -376,7 +376,7 @@
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M) && (M.job in list("Security Officer", "Security Pod Pilot", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate")))
if(ishuman(M) && (M.job in list("Security Officer", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate")))
update_flags |= M.adjustBruteLoss(-1, FALSE)
update_flags |= M.adjustFireLoss(-1, FALSE)
return ..() | update_flags
@@ -282,16 +282,6 @@
build_path = /obj/item/circuitboard/sm_monitor
category = list("Computer Boards")
/datum/design/spacepodlocator
name = "Console Board (Spacepod Locator)"
desc = "Allows for the construction of circuit boards used to build a space-pod locating console"
id = "spacepodc"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000)
build_path = /obj/item/circuitboard/pod_locater
category = list("Computer Boards")
/datum/design/ordercomp
name = "Console Board (Supply Ordering Console)"
desc = "Allows for the construction of circuit boards used to build a supply ordering console."
@@ -272,16 +272,6 @@
build_path = /obj/item/circuitboard/mechfab
category = list("Research Machinery")
/datum/design/podfab
name = "Machine Board (Spacepod Fabricator)"
desc = "The circuit board for an Spacepod Fabricator"
id = "podfab"
req_tech = list("programming" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000)
build_path = /obj/item/circuitboard/podfab
category = list("Research Machinery")
/datum/design/mech_recharger
name = "Machine Board (Mech Bay Recharger)"
desc = "The circuit board for a Mech Bay Recharger."
@@ -7,7 +7,7 @@
desc = "A basic power cell that holds 1 kW of power."
id = "basic_cell"
req_tech = list("powerstorage" = 1)
build_type = PROTOLATHE | AUTOLATHE | MECHFAB | PODFAB
build_type = PROTOLATHE | AUTOLATHE | MECHFAB
materials = list(MAT_METAL = 700, MAT_GLASS = 50)
construction_time=100
build_path = /obj/item/stock_parts/cell
@@ -18,7 +18,7 @@
desc = "A power cell that holds 10 kW of power."
id = "high_cell"
req_tech = list("powerstorage" = 2)
build_type = PROTOLATHE | AUTOLATHE | MECHFAB | PODFAB
build_type = PROTOLATHE | AUTOLATHE | MECHFAB
materials = list(MAT_METAL = 700, MAT_GLASS = 60)
construction_time=100
build_path = /obj/item/stock_parts/cell/high
@@ -29,7 +29,7 @@
desc = "A power cell that holds 30 kW of power."
id = "hyper_cell"
req_tech = list("powerstorage" = 5, "materials" = 5, "engineering" = 5)
build_type = PROTOLATHE | MECHFAB | PODFAB
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 700, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 70)
construction_time=100
build_path = /obj/item/stock_parts/cell/hyper
@@ -40,7 +40,7 @@
desc = "A power cell that holds 20 kW of power."
id = "super_cell"
req_tech = list("powerstorage" = 3, "materials" = 3)
build_type = PROTOLATHE | MECHFAB | PODFAB
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 700, MAT_GLASS = 70)
construction_time=100
build_path = /obj/item/stock_parts/cell/super
@@ -1,242 +0,0 @@
/datum/design/spacepod_main
construction_time = 100
name = "Circuit Design (Space Pod Mainboard)"
desc = "Allows for the construction of a Space Pod mainboard."
id = "spacepod_main"
req_tech = list("materials" = 1) //All parts required to build a basic pod have materials 1, so the mechanic can do his damn job.
build_type = PODFAB
materials = list(MAT_METAL=5000)
build_path = /obj/item/circuitboard/mecha/pod
category = list("Pod_Parts")
//////////////////////////////////////////////////
/////////SPACEPOD PARTS///////////////////////////
//////////////////////////////////////////////////
/datum/design/podframe_fp
construction_time = 200
name = "Fore port pod frame"
desc = "Allows for the construction of spacepod frames. This is the fore port component."
id = "podframefp"
build_type = PODFAB
req_tech = list("materials" = 1)
build_path = /obj/item/pod_parts/pod_frame/fore_port
category = list("Pod_Frame")
materials = list(MAT_METAL=15000,MAT_GLASS=5000)
/datum/design/podframe_ap
construction_time = 200
name = "Aft port pod frame"
desc = "Allows for the construction of spacepod frames. This is the aft port component."
id = "podframeap"
build_type = PODFAB
req_tech = list("materials" = 1)
build_path = /obj/item/pod_parts/pod_frame/aft_port
category = list("Pod_Frame")
materials = list(MAT_METAL=15000,MAT_GLASS=5000)
/datum/design/podframe_fs
construction_time = 200
name = "Fore starboard pod frame"
desc = "Allows for the construction of spacepod frames. This is the fore starboard component."
id = "podframefs"
build_type = PODFAB
req_tech = list("materials" = 1)
build_path = /obj/item/pod_parts/pod_frame/fore_starboard
category = list("Pod_Frame")
materials = list(MAT_METAL=15000,MAT_GLASS=5000)
/datum/design/podframe_as
construction_time = 200
name = "Aft starboard pod frame"
desc = "Allows for the construction of spacepod frames. This is the aft starboard component."
id = "podframeas"
build_type = PODFAB
req_tech = list("materials" = 1)
build_path = /obj/item/pod_parts/pod_frame/aft_starboard
category = list("Pod_Frame")
materials = list(MAT_METAL=15000,MAT_GLASS=5000)
//////////////////////////
////////POD CORE////////
//////////////////////////
/datum/design/pod_core
construction_time = 700 //Pod core should take a bit to process, after all, it's a big complicated engine and stuff.
name = "Spacepod Core"
desc = "Allows for the construction of a spacepod core system, made up of the engine and life support systems."
id = "podcore"
build_type = MECHFAB | PODFAB
req_tech = list("materials" = 1)
build_path = /obj/item/pod_parts/core
category = list("Pod_Parts")
materials = list(MAT_METAL=5000,MAT_URANIUM=1000,MAT_PLASMA=5000)
//////////////////////////////////////////
////////SPACEPOD ARMOR////////////////////
//////////////////////////////////////////
/datum/design/pod_armor_civ
construction_time = 400 //more time than frames, less than pod core
name = "Pod Armor (civilian)"
desc = "Allows for the construction of spacepod armor. This is the civilian version."
id = "podarmor_civ"
build_type = PODFAB
req_tech = list("materials" = 1)
build_path = /obj/item/pod_parts/armor
category = list("Pod_Armor")
materials = list(MAT_METAL=15000,MAT_GLASS=5000,MAT_PLASMA=10000)
//////////////////////////////////////////
//////SPACEPOD GUNS///////////////////////
//////////////////////////////////////////
/datum/design/pod_gun_taser
construction_time = 200
name = "Spacepod Equipment (Taser)"
desc = "Allows for the construction of a spacepod mounted taser."
id = "podgun_taser"
build_type = PODFAB
req_tech = list("materials" = 2, "combat" = 2)
build_path = /obj/item/spacepod_equipment/weaponry/taser
category = list("Pod_Weaponry")
materials = list(MAT_METAL = 15000)
locked = 1
/datum/design/pod_gun_btaser
construction_time = 200
name = "Spacepod Equipment (Burst Taser)"
desc = "Allows for the construction of a spacepod mounted taser. This is the burst-fire model."
id = "podgun_btaser"
build_type = PODFAB
req_tech = list("materials" = 3, "combat" = 3)
build_path = /obj/item/spacepod_equipment/weaponry/burst_taser
category = list("Pod_Weaponry")
materials = list(MAT_METAL = 15000,MAT_PLASMA=2000)
locked = 1
/datum/design/pod_gun_laser
construction_time = 200
name = "Spacepod Equipment (Laser)"
desc = "Allows for the construction of a spacepod mounted laser."
id = "podgun_laser"
build_type = PODFAB
req_tech = list("materials" = 3, "combat" = 3, "plasmatech" = 2)
build_path = /obj/item/spacepod_equipment/weaponry/laser
category = list("Pod_Weaponry")
materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_GOLD=1000,MAT_SILVER=2000)
locked = 1
/datum/design/pod_mining_laser_basic
construction_time = 200
name = "Basic Mining Laser"
desc = "Allows for the construction of a weak mining laser"
id = "pod_mining_laser_basic"
req_tech = list("materials" = 3, "powerstorage" = 2, "engineering" = 2, "magnets" = 3, "combat" = 2)
build_type = PODFAB
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000, MAT_SILVER = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/spacepod_equipment/weaponry/mining_laser_basic
category = list("Pod_Weaponry")
/datum/design/pod_mining_laser
construction_time = 200
name = "Mining Laser"
desc = "Allows for the construction of a mining laser."
id = "pod_mining_laser"
req_tech = list("materials" = 6, "powerstorage" = 6, "engineering" = 5, "magnets" = 6, "combat" = 4)
build_type = PODFAB
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/spacepod_equipment/weaponry/mining_laser
category = list("Pod_Weaponry")
//////////////////////////////////////////
//////SPACEPOD MISC. ITEMS////////////////
//////////////////////////////////////////
/datum/design/pod_misc_tracker
construction_time = 100
name = "Spacepod Tracking Module"
desc = "Allows for the construction of a Space Pod Tracking Module."
id = "podmisc_tracker"
req_tech = list("materials" = 2) //Materials 2: easy to get, no trackers with 0 science progress
build_type = PODFAB
materials = list(MAT_METAL=5000)
build_path = /obj/item/spacepod_equipment/misc/tracker
category = list("Pod_Parts")
//////////////////////////////////////////
//////SPACEPOD CARGO ITEMS////////////////
//////////////////////////////////////////
/datum/design/pod_cargo_ore
construction_time = 100
name = "Spacepod Ore Storage Module"
desc = "Allows for the construction of a Space Pod Ore Storage Module."
id = "podcargo_ore"
req_tech = list("materials" = 3, "engineering" = 2)
build_type = PODFAB
materials = list(MAT_METAL=20000, MAT_GLASS=2000)
build_path = /obj/item/spacepod_equipment/cargo/ore
category = list("Pod_Cargo")
/datum/design/pod_cargo_crate
construction_time = 100
name = "Spacepod Crate Storage Module"
desc = "Allows the construction of a Space Pod Crate Storage Module."
id = "podcargo_crate"
req_tech = list("materials" = 4, "engineering" = 2) //hollowing out this much of the pod without compromising structural integrity is hard
build_type = PODFAB
materials = list(MAT_METAL=25000)
build_path = /obj/item/spacepod_equipment/cargo/crate
category = list("Pod_Cargo")
//////////////////////////////////////////
//////SPACEPOD SEC CARGO ITEMS////////////
//////////////////////////////////////////
/datum/design/passenger_seat
construction_time = 100
name = "Spacepod Passenger Seat"
desc = "Allows the construction of a Space Pod Passenger Seat Module."
id = "podcargo_sec_seat"
req_tech = list("materials" = 1) // Because rule number one of refactoring
build_type = PODFAB
materials = list(MAT_METAL=7500, MAT_GLASS=2500)
build_path = /obj/item/spacepod_equipment/sec_cargo/chair
category = list("Pod_Cargo")
/datum/design/loot_box
construction_time = 100
name = "Spacepod Loot Storage Module"
desc = "Allows the construction of a Space Pod Auxillary Cargo Module."
id = "podcargo_sec_lootbox"
req_tech = list("materials" = 1) //it's just a set of shelves, It's not that hard to make
build_type = PODFAB
materials = list(MAT_METAL=7500, MAT_GLASS=2500)
build_path = /obj/item/spacepod_equipment/sec_cargo/loot_box
category = list("Pod_Cargo")
//////////////////////////////////////////
//////SPACEPOD LOCK ITEMS////////////////
//////////////////////////////////////////
/datum/design/pod_lock_keyed
construction_time = 100
name = "Spacepod Tumbler Lock"
desc = "Allows for the construction of a tumbler style podlock."
id = "podlock_keyed"
req_tech = list("materials" = 1) //The most basic kind of locking system
build_type = PODFAB
materials = list(MAT_METAL=4500)
build_path = /obj/item/spacepod_equipment/lock/keyed
category = list("Pod_Parts")
/datum/design/pod_key
construction_time = 100
name = "Spacepod Tumbler Lock Key"
desc = "Allows for the construction of a blank key for a podlock."
id = "podkey"
req_tech = list("materials" = 1) //The most basic kind of locking system
build_type = PODFAB
materials = list(MAT_METAL=500)
build_path = /obj/item/spacepod_key
category = list("Pod_Parts")
-8
View File
@@ -868,7 +868,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(b_type & PROTOLATHE) lathe_types += "Protolathe"
if(b_type & AUTOLATHE) lathe_types += "Autolathe"
if(b_type & MECHFAB) lathe_types += "Mech Fabricator"
if(b_type & PODFAB) lathe_types += "Spacepod Fabricator"
if(b_type & BIOGENERATOR) lathe_types += "Biogenerator"
if(b_type & SMELTER) lathe_types += "Smelter"
var/list/materials = list()
@@ -955,13 +954,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
id = 3
circuit = /obj/item/circuitboard/rdconsole/experiment
/obj/machinery/computer/rdconsole/mechanics
name = "mechanics R&D console"
desc = "A console used to interface with R&D tools."
id = 4
req_access = list(ACCESS_MECHANIC)
circuit = /obj/item/circuitboard/rdconsole/mechanics
/obj/machinery/computer/rdconsole/public
name = "public R&D console"
desc = "A console used to interface with R&D tools."
-228
View File
@@ -1,228 +0,0 @@
/obj/structure/spacepod_frame
density = 1
opacity = 0
anchored = 1
layer = 3.9
icon = 'icons/goonstation/48x48/pod_construction.dmi'
icon_state = "pod_1"
var/datum/construction/construct
/obj/structure/spacepod_frame/Initialize(mapload)
. = ..()
bound_width = 64
bound_height = 64
construct = new /datum/construction/reversible2/pod(src)
dir = EAST
/obj/structure/spacepod_frame/Destroy()
QDEL_NULL(construct)
return ..()
/obj/structure/spacepod_frame/attackby(obj/item/W as obj, mob/user as mob, params)
if(!construct || !construct.action(W, user))
return ..()
/obj/structure/spacepod_frame/attack_hand()
return
/////////////////////////////////
// CONSTRUCTION STEPS
/////////////////////////////////
/datum/construction/reversible2/pod
result = /obj/spacepod/civilian
base_icon="pod"
//taskpath = /datum/job_objective/make_pod
steps = list(
// 1. Initial state
list(
"desc" = "An empty pod frame.",
state_next = list(
"key" = /obj/item/stack/cable_coil,
"vis_msg" = "{USER} wires the {HOLDER}.",
"self_msg" = "You wire the {HOLDER}."
)
),
// 2. Crudely Wired
list(
"desc" = "A crudely-wired pod frame.",
state_prev = list(
"key" = TOOL_WIRECUTTER,
"vis_msg" = "{USER} cuts out the {HOLDER}'s wiring.",
"self_msg" = "You remove the {HOLDER}'s wiring."
),
state_next = list(
"key" = TOOL_SCREWDRIVER,
"vis_msg" = "{USER} adjusts the wiring.",
"self_msg" = "You adjust the {HOLDER}'s wiring."
)
),
// 3. Cleanly wired
list(
"desc" = "A wired pod frame.",
state_prev = list(
"key" = TOOL_SCREWDRIVER,
"vis_msg" = "{USER} unclips {HOLDER}'s wiring harnesses.",
"self_msg" = "You unclip {HOLDER}'s wiring harnesses."
),
state_next = list(
"key" = /obj/item/circuitboard/mecha/pod,
"vis_msg" = "{USER} inserts the mainboard into the {HOLDER}.",
"self_msg" = "You insert the mainboard into the {HOLDER}.",
"delete" = 1
)
),
// 4. Circuit added
list(
"desc" = "A wired pod frame with a loose mainboard.",
state_prev = list(
"key" = TOOL_CROWBAR,
"vis_msg" = "{USER} pries out the mainboard.",
"self_msg" = "You pry out the mainboard.",
"spawn" = /obj/item/circuitboard/mecha/pod,
"amount" = 1
),
state_next = list(
"key" = TOOL_SCREWDRIVER,
"vis_msg" = "{USER} secures the mainboard.",
"self_msg" = "You secure the mainboard."
)
),
// 5. Circuit secured
list(
"desc" = "A wired pod frame with a secured mainboard.",
state_prev = list(
"key" = TOOL_SCREWDRIVER,
"vis_msg" = "{USER} unsecures the mainboard.",
"self_msg" = "You unscrew the mainboard from the {HOLDER}."
),
state_next = list(
"key" = /obj/item/pod_parts/core,
,
"vis_msg" = "{USER} inserts the core into the {HOLDER}.",
"self_msg" = "You carefully insert the core into the {HOLDER}.",
"delete" = 1
)
),
// 6. Core inserted
list(
"desc" = "A naked space pod with a loose core.",
state_prev = list(
"key" = TOOL_CROWBAR,
"vis_msg" = "{USER} delicately removes the core from the {HOLDER} with a crowbar.",
"self_msg" = "You delicately remove the core from the {HOLDER} with a crowbar.",
"spawn" = /obj/item/pod_parts/core,
"amount" = 1
),
state_next = list(
"key" = TOOL_WRENCH,
"vis_msg" = "{USER} secures the core's bolts.",
"self_msg" = "You secure the core's bolts."
)
),
// 7. Core secured
list(
"desc" = "A naked space pod with an exposed core. How lewd.",
state_prev = list(
"key" = TOOL_WRENCH,
"vis_msg" = "{USER} unsecures the {HOLDER}'s core.",
"self_msg" = "You unsecure the {HOLDER}'s core."
),
state_next = list(
"key" = /obj/item/stack/sheet/metal,
"amount" = 5,
"vis_msg" = "{USER} fabricates a pressure bulkhead for the {HOLDER}.",
"self_msg" = "You frabricate a pressure bulkhead for the {HOLDER}."
)
),
// 8. Bulkhead added
list(
"desc" = "A space pod with loose bulkhead panelling exposed.",
state_prev = list(
"key" = TOOL_CROWBAR,
"vis_msg" = "{USER} pops the {HOLDER}'s bulkhead panelling loose.",
"self_msg" = "You pop the {HOLDER}'s bulkhead panelling loose.",
"spawn" = /obj/item/stack/sheet/metal,
"amount" = 5,
),
state_next = list(
"key" = TOOL_WRENCH,
"vis_msg" = "{USER} secures the {HOLDER}'s bulkhead panelling.",
"self_msg" = "You secure the {HOLDER}'s bulkhead panelling."
)
),
// 9. Bulkhead secured with bolts
list(
"desc" = "A space pod with unwelded bulkhead panelling exposed.",
state_prev = list(
"key" = TOOL_WRENCH,
"vis_msg" = "{USER} unbolts the {HOLDER}'s bulkhead panelling.",
"self_msg" = "You unbolt the {HOLDER}'s bulkhead panelling."
),
state_next = list(
"key" = TOOL_WELDER,
"vis_msg" = "{USER} seals the {HOLDER}'s bulkhead panelling with a weld.",
"self_msg" = "You seal the {HOLDER}'s bulkhead panelling with a weld."
)
),
// 10. Welded bulkhead
list(
"desc" = "A space pod with sealed bulkhead panelling exposed.",
state_prev = list(
"key" = TOOL_WELDER,
"vis_msg" = "{USER} cuts the {HOLDER}'s bulkhead panelling loose.",
"self_msg" = "You cut the {HOLDER}'s bulkhead panelling loose."
),
state_next = list(
"key" = /obj/item/pod_parts/armor,
"vis_msg" = "{USER} installs the {HOLDER}'s armor plating.",
"self_msg" = "You install the {HOLDER}'s armor plating.",
"delete" = 1
)
),
// 11. Loose armor
list(
"desc" = "A space pod with unsecured armor.",
state_prev = list(
"key" = TOOL_CROWBAR,
"vis_msg" = "{USER} pries off {HOLDER}'s armor.",
"self_msg" = "You pry off {HOLDER}'s armor.",
"spawn" = /obj/item/pod_parts/armor,
"amount" = 1
),
state_next = list(
"key" = TOOL_WRENCH,
"vis_msg" = "{USER} bolts down the {HOLDER}'s armor.",
"self_msg" = "You bolt down the {HOLDER}'s armor."
)
),
// 12. Bolted-down armor
list(
"desc" = "A space pod with unsecured armor.",
state_prev = list(
"key" = TOOL_WRENCH,
"vis_msg" = "{USER} unsecures the {HOLDER}'s armor.",
"self_msg" = "You unsecure the {HOLDER}'s armor."
),
state_next = list(
"key" = TOOL_WELDER,
"vis_msg" = "{USER} welds the {HOLDER}'s armor.",
"self_msg" = "You weld the {HOLDER}'s armor."
)
)
// EOF
)
/datum/construction/reversible2/pod/spawn_result(mob/user as mob)
..()
SSblackbox.record_feedback("amount", "spacepod_created", 1)
return
-278
View File
@@ -1,278 +0,0 @@
/obj/item/spacepod_equipment/weaponry/proc/fire_weapons()
if(HAS_TRAIT(usr, TRAIT_PACIFISM) && harmful)
to_chat(usr, "<span class='warning'>You don't want to harm other living beings!</span>")
return
if(my_atom.next_firetime > world.time)
to_chat(usr, "<span class='warning'>Your weapons are recharging.</span>")
return
my_atom.next_firetime = world.time + fire_delay
var/turf/firstloc
var/turf/secondloc
if(!my_atom.equipment_system || !my_atom.equipment_system.weapon_system)
to_chat(usr, "<span class='warning'>Missing equipment or weapons.</span>")
my_atom.verbs -= text2path("[type]/proc/fire_weapons")
return
if(!my_atom.battery.use(shot_cost))
to_chat(usr, "<span class='warning'>Insufficient charge to fire the weapons</span>")
return
var/olddir
for(var/i = 0; i < shots_per; i++)
if(olddir != my_atom.dir)
switch(my_atom.dir)
if(NORTH)
firstloc = get_step(my_atom, NORTH)
secondloc = get_step(firstloc,EAST)
if(SOUTH)
firstloc = get_turf(my_atom)
secondloc = get_step(firstloc,EAST)
if(EAST)
firstloc = get_step(my_atom, EAST)
secondloc = get_step(firstloc,NORTH)
if(WEST)
firstloc = get_turf(my_atom)
secondloc = get_step(firstloc,NORTH)
olddir = dir
var/obj/item/projectile/projone = new projectile_type(firstloc)
var/obj/item/projectile/projtwo = new projectile_type(secondloc)
projone.starting = get_turf(my_atom)
projone.firer = usr
projone.def_zone = "chest"
projtwo.starting = get_turf(my_atom)
projtwo.firer = usr
projtwo.def_zone = "chest"
spawn()
playsound(src, fire_sound, 50, 1)
projone.dumbfire(my_atom.dir)
projtwo.dumbfire(my_atom.dir)
sleep(2)
/datum/spacepod/equipment
var/obj/spacepod/my_atom
var/list/obj/item/spacepod_equipment/installed_modules = list() // holds an easy to access list of installed modules
var/obj/item/spacepod_equipment/weaponry/weapon_system // weapons system
var/obj/item/spacepod_equipment/misc/misc_system // misc system
var/obj/item/spacepod_equipment/cargo/cargo_system // cargo system
var/obj/item/spacepod_equipment/cargo/sec_cargo_system // secondary cargo system
var/obj/item/spacepod_equipment/lock/lock_system // lock system
/datum/spacepod/equipment/New(obj/spacepod/SP)
..()
if(istype(SP))
my_atom = SP
/obj/item/spacepod_equipment
name = "equipment"
var/obj/spacepod/my_atom
var/occupant_mod = 0 // so any module can modify occupancy
var/list/storage_mod = list("slots" = 0, "w_class" = 0) // so any module can modify storage slots
/obj/item/spacepod_equipment/proc/removed(mob/user) // So that you can unload cargo when you remove the module
return
/*
///////////////////////////////////////
/////////Weapon System///////////////////
///////////////////////////////////////
*/
/obj/item/spacepod_equipment/weaponry
name = "pod weapon"
desc = "You shouldn't be seeing this"
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "blank"
var/obj/item/projectile/projectile_type
var/shot_cost = 0
var/shots_per = 1
var/fire_sound
var/fire_delay = 15
var/harmful = TRUE
/obj/item/spacepod_equipment/weaponry/taser
name = "disabler system"
desc = "A weak taser system for space pods, fires disabler beams."
icon_state = "weapon_taser"
projectile_type = /obj/item/projectile/beam/disabler
shot_cost = 400
fire_sound = 'sound/weapons/taser.ogg'
harmful = FALSE
/obj/item/spacepod_equipment/weaponry/burst_taser
name = "burst taser system"
desc = "A weak taser system for space pods, this one fires 3 at a time."
icon_state = "weapon_burst_taser"
projectile_type = /obj/item/projectile/beam/disabler
shot_cost = 1200
shots_per = 3
fire_sound = 'sound/weapons/taser.ogg'
fire_delay = 30
harmful = FALSE
/obj/item/spacepod_equipment/weaponry/laser
name = "laser system"
desc = "A weak laser system for space pods, fires concentrated bursts of energy."
icon_state = "weapon_laser"
projectile_type = /obj/item/projectile/beam
shot_cost = 600
fire_sound = 'sound/weapons/laser.ogg'
// MINING LASERS
/obj/item/spacepod_equipment/weaponry/mining_laser_basic
name = "weak mining laser system"
desc = "A weak mining laser system for space pods, fires bursts of energy that cut through rock."
icon = 'icons/goonstation/pods/ship.dmi'
icon_state = "pod_taser"
projectile_type = /obj/item/projectile/kinetic/pod
shot_cost = 300
fire_delay = 14
fire_sound = 'sound/weapons/kenetic_accel.ogg'
/obj/item/spacepod_equipment/weaponry/mining_laser
name = "mining laser system"
desc = "A mining laser system for space pods, fires bursts of energy that cut through rock."
icon = 'icons/goonstation/pods/ship.dmi'
icon_state = "pod_m_laser"
projectile_type = /obj/item/projectile/kinetic/pod/regular
shot_cost = 250
fire_delay = 10
fire_sound = 'sound/weapons/kenetic_accel.ogg'
/*
///////////////////////////////////////
/////////Misc. System///////////////////
///////////////////////////////////////
*/
GLOBAL_LIST_EMPTY(pod_trackers)
/obj/item/spacepod_equipment/misc
name = "pod misc"
desc = "You shouldn't be seeing this"
icon = 'icons/goonstation/pods/ship.dmi'
icon_state = "blank"
/obj/item/spacepod_equipment/misc/tracker
name = "\improper spacepod tracking system"
desc = "A tracking device for spacepods."
icon_state = "pod_locator"
/obj/item/spacepod_equipment/misc/tracker/Initialize(mapload)
GLOB.pod_trackers |= src
return ..()
/obj/item/spacepod_equipment/misc/tracker/Destroy()
GLOB.pod_trackers -= src
return ..()
/*
///////////////////////////////////////
/////////Cargo System//////////////////
///////////////////////////////////////
*/
/obj/item/spacepod_equipment/cargo
name = "pod cargo"
desc = "You shouldn't be seeing this"
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "cargo_blank"
var/obj/storage = null
/obj/item/spacepod_equipment/cargo/proc/passover(obj/item/I)
return
/obj/item/spacepod_equipment/cargo/proc/unload() // called by unload verb
if(storage)
storage.forceMove(get_turf(my_atom))
storage = null
/obj/item/spacepod_equipment/cargo/removed(mob/user) // called when system removed
. = ..()
unload()
// Ore System
/obj/item/spacepod_equipment/cargo/ore
name = "spacepod ore storage system"
desc = "An ore storage system for spacepods. Scoops up any ore you drive over."
icon_state = "cargo_ore"
/obj/item/spacepod_equipment/cargo/ore/passover(obj/item/I)
if(storage && istype(I,/obj/item/stack/ore))
I.forceMove(storage)
// Crate System
/obj/item/spacepod_equipment/cargo/crate
name = "spacepod crate storage system"
desc = "A heavy duty storage system for spacepods. Holds one crate."
icon_state = "cargo_crate"
/*
///////////////////////////////////////
/////////Secondary Cargo System////////
///////////////////////////////////////
*/
/obj/item/spacepod_equipment/sec_cargo
name = "secondary cargo"
desc = "you shouldn't be seeing this"
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "blank"
// Passenger Seat
/obj/item/spacepod_equipment/sec_cargo/chair
name = "passenger seat"
desc = "A passenger seat for a spacepod."
icon_state = "sec_cargo_chair"
occupant_mod = 1
// Loot Box
/obj/item/spacepod_equipment/sec_cargo/loot_box
name = "loot box"
desc = "A small compartment to store valuables."
icon_state = "sec_cargo_loot"
storage_mod = list("slots" = 7, "w_class" = 14)
/*
///////////////////////////////////////
/////////Lock System///////////////////
///////////////////////////////////////
*/
/obj/item/spacepod_equipment/lock
name = "pod lock"
desc = "You shouldn't be seeing this"
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "blank"
var/mode = 0
var/id = null
// Key and Tumbler System
/obj/item/spacepod_equipment/lock/keyed
name = "spacepod tumbler lock"
desc = "A locking system to stop podjacking. This version uses a standalone key."
icon_state = "lock_tumbler"
var/static/id_source = 0
/obj/item/spacepod_equipment/lock/keyed/Initialize(mapload)
. = ..()
id = ++id_source
// The key
/obj/item/spacepod_key
name = "spacepod key"
desc = "A key for a spacepod lock."
icon = 'icons/vehicles/spacepod.dmi'
icon_state = "podkey"
w_class = WEIGHT_CLASS_TINY
var/id = 0
// Key - Lock Interactions
/obj/item/spacepod_equipment/lock/keyed/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/spacepod_key))
var/obj/item/spacepod_key/key = I
if(!key.id)
key.id = id
to_chat(user, "<span class='notice'>You grind the blank key to fit the lock.</span>")
else
to_chat(user, "<span class='warning'>This key is already ground!</span>")
else
return ..()
-14
View File
@@ -1,14 +0,0 @@
/obj/item/lock_buster
name = "pod lock buster"
desc = "Destroys a podlock in mere seconds once applied. Waranty void if used."
icon = 'icons/obj/device.dmi'
icon_state = "lock_buster_off"
var/on = 0
/obj/item/lock_buster/attack_self(mob/user as mob)
on = !on
if(on)
icon_state = "lock_buster_on"
else
icon_state = "lock_buster_off"
to_chat(usr, "<span class='notice'>You turn [src] [on ? "on" : "off"].</span>")
-126
View File
@@ -1,126 +0,0 @@
/obj/item/pod_parts
parent_type = /obj/item/mecha_parts
icon = 'icons/goonstation/pods/pod_parts.dmi'
/obj/item/pod_parts/core
name="Space Pod Core"
icon_state = "core"
flags = CONDUCT
origin_tech = "programming=2;materials=2;biotech=2;engineering=2"
/obj/item/pod_parts/pod_frame
name = "Space Pod Frame"
icon_state = ""
flags = CONDUCT
density = 0
anchored = 0
var/link_to = null
var/link_angle = 0
/obj/item/pod_parts/pod_frame/proc/find_square()
/*
each part, in essence, stores the relative position of another part
you can find where this part should be by looking at the current direction of the current part and applying the link_angle
the link_angle is the angle between the part's direction and its following part, which is the current part's link_to
the code works by going in a loop - each part is capable of starting a loop by checking for the part after it, and that part checking, and so on
this 4-part loop, starting from any part of the frame, can determine if all the parts are properly in place and aligned
it also checks that each part is unique, and that all the parts are there for the spacepod itself
*/
var/neededparts = list(/obj/item/pod_parts/pod_frame/aft_port, /obj/item/pod_parts/pod_frame/aft_starboard, /obj/item/pod_parts/pod_frame/fore_port, /obj/item/pod_parts/pod_frame/fore_starboard)
var/turf/T
var/obj/item/pod_parts/pod_frame/linked
var/obj/item/pod_parts/pod_frame/pointer
var/list/connectedparts = list()
neededparts -= src
//log_admin("Starting with [src]")
linked = src
for(var/i = 1; i <= 4; i++)
T = get_turf(get_step(linked, turn(linked.dir, -linked.link_angle))) //get the next place that we want to look at
if(locate(linked.link_to) in T)
pointer = locate(linked.link_to) in T
//log_admin("Looking at [pointer.type]")
if(istype(pointer, linked.link_to) && pointer.dir == linked.dir && pointer.anchored)
if(!(pointer in connectedparts))
connectedparts += pointer
linked = pointer
pointer = null
if(connectedparts.len < 4)
return 0
for(var/i = 1; i <=4; i++)
var/obj/item/pod_parts/pod_frame/F = connectedparts[i]
if(F.type in neededparts) //if one of the items can be founded in neededparts
neededparts -= F.type
log_admin("Found [F.type]")
else //because neededparts has 4 distinct items, this must be called if theyre not all in place and wrenched
return 0
return connectedparts
/obj/item/pod_parts/pod_frame/attackby(obj/item/O, mob/user)
if(istype(O, /obj/item/stack/rods))
var/obj/item/stack/rods/R = O
var/list/linkedparts = find_square()
if(!linkedparts)
to_chat(user, "<span class='rose'>You cannot assemble a pod frame because you do not have the necessary assembly.</span>")
return
var/obj/structure/spacepod_frame/pod = new /obj/structure/spacepod_frame(src.loc)
pod.dir = src.dir
to_chat(user, "<span class='notice'>You strut the pod frame together.</span>")
R.use(10)
for(var/obj/item/pod_parts/pod_frame/F in linkedparts)
if(1 == turn(F.dir, -F.link_angle)) //if the part links north during construction, as the bottom left part always does
//log_admin("Repositioning")
pod.loc = F.loc
qdel(F)
playsound(get_turf(src), O.usesound, 50, 1)
if(istype(O, /obj/item/wrench))
to_chat(user, "<span class='notice'>You [!anchored ? "secure \the [src] in place." : "remove the securing bolts."]</span>")
anchored = !anchored
density = anchored
playsound(get_turf(src), O.usesound, 50, 1)
/obj/item/pod_parts/pod_frame/verb/rotate()
set name = "Rotate Frame"
set category = "Object"
set src in oview(1)
if(anchored)
to_chat(usr, "\The [src] is securely bolted!")
return 0
src.dir = turn(src.dir, -90)
return 1
/obj/item/pod_parts/pod_frame/attack_hand()
src.rotate()
/obj/item/pod_parts/pod_frame/fore_port
name = "fore port pod frame"
icon_state = "pod_fp"
desc = "A space pod frame component. This is the fore port component."
link_to = /obj/item/pod_parts/pod_frame/fore_starboard
link_angle = 90
/obj/item/pod_parts/pod_frame/fore_starboard
name = "fore starboard pod frame"
icon_state = "pod_fs"
desc = "A space pod frame component. This is the fore starboard component."
link_to = /obj/item/pod_parts/pod_frame/aft_starboard
link_angle = 180
/obj/item/pod_parts/pod_frame/aft_port
name = "aft port pod frame"
icon_state = "pod_ap"
desc = "A space pod frame component. This is the aft port component."
link_to = /obj/item/pod_parts/pod_frame/fore_port
link_angle = 0
/obj/item/pod_parts/pod_frame/aft_starboard
name = "aft starboard pod frame"
icon_state = "pod_as"
desc = "A space pod frame component. This is the aft starboard component."
link_to = /obj/item/pod_parts/pod_frame/aft_port
link_angle = 270
/obj/item/pod_parts/armor
name = "civilian pod armor"
icon = 'icons/goonstation/pods/pod_parts.dmi'
icon_state = "pod_armor_civ"
desc = "Spacepod armor. This is the civilian version. It looks rather flimsy."
File diff suppressed because it is too large Load Diff