mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-28 06:27:26 +01:00
Nukes spacepods and associated jobs
This commit is contained in:
@@ -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