mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 04:27:35 +01:00
Nukes spacepods and associated jobs
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
))
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
@@ -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())
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
@@ -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 ..()
|
||||
@@ -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>")
|
||||
@@ -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
Reference in New Issue
Block a user