mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-23 15:52:08 +00:00
as title, blueprints have regained their lost functionality of displaying airlock & vending wire layouts. outpost blueprints don't have this functionality
176 lines
7.3 KiB
Plaintext
176 lines
7.3 KiB
Plaintext
/obj/item/blueprints
|
|
name = "blueprints"
|
|
desc = "Blueprints of the station. There is a \"Classified\" stamp and several coffee stains on it."
|
|
icon = 'icons/obj/item/tools/blueprints.dmi'
|
|
icon_state = "blueprints"
|
|
attack_verb = list("attacked", "bapped", "hit")
|
|
w_class = ITEMSIZE_SMALL
|
|
var/list/valid_z_levels = list()
|
|
var/area_prefix
|
|
///Will these blueprints display the wire schema?
|
|
var/show_wires = TRUE
|
|
///Airlock wires
|
|
var/datum/wires/airlock/blueprint/airlock_wires
|
|
///Vending machine wires
|
|
var/datum/wires/vending/blueprint/vending_wires
|
|
|
|
/obj/item/blueprints/Initialize(mapload, ...)
|
|
. = ..()
|
|
return INITIALIZE_HINT_LATELOAD
|
|
|
|
/obj/item/blueprints/LateInitialize()
|
|
. = ..()
|
|
if(show_wires)
|
|
airlock_wires = new(src)
|
|
vending_wires = new(src)
|
|
desc = "Blueprints of the [station_name()]. There is a \"Classified\" stamp and several coffee stains on it."
|
|
if(set_valid_z_levels())
|
|
create_blueprint_component()
|
|
|
|
/obj/item/blueprints/attack_self(mob/user)
|
|
if(use_check_and_message(usr, USE_DISALLOW_SILICONS) || usr.get_active_hand() != src)
|
|
return
|
|
add_fingerprint(user)
|
|
if(show_wires)
|
|
var/choice = tgui_alert(user, "Select blueprint action", "Blueprints", list("Airlock Wire Schema", "Vending Wire Schema", "Use Blueprints"))
|
|
if(choice == "Airlock Wire Schema")
|
|
airlock_wires.get_wire_diagram(user)
|
|
else if(choice == "Vending Wire Schema")
|
|
vending_wires.get_wire_diagram(user)
|
|
if(choice != "Use Blueprints") //Don't do the normal blueprints stuff if the user just wants wires
|
|
return
|
|
|
|
var/datum/component/eye/blueprints = GetComponent(/datum/component/eye)
|
|
if(!(user.z in valid_z_levels))
|
|
to_chat(user, SPAN_WARNING("The markings on this are entirely irrelevant to your whereabouts!"))
|
|
return
|
|
if(blueprints)
|
|
if(blueprints.look(user, get_look_args())) // Abandon all peripheral vision, ye who enter here.
|
|
to_chat(user, SPAN_NOTICE("You start peering closely at \the [src]"))
|
|
return
|
|
else
|
|
to_chat(user, SPAN_WARNING("You couldn't get a good look at \the [src]. Maybe someone else is using it?"))
|
|
return
|
|
to_chat(user, SPAN_WARNING("The markings on this are useless!"))
|
|
|
|
/obj/item/blueprints/proc/set_valid_z_levels()
|
|
if(SSatlas.current_map.use_overmap)
|
|
var/obj/effect/overmap/visitable/sector/S = GLOB.map_sectors["[GET_Z(src)]"]
|
|
if(!S) //Blueprints are useless now, but keep them around for fluff
|
|
desc = "Some dusty old blueprints. The markings are old, and seem entirely irrelevant for your wherabouts."
|
|
return FALSE
|
|
name += " - [S.name]"
|
|
desc = "Blueprints of \the [S.name]. There is a \"Classified\" stamp and several coffee stains on it."
|
|
valid_z_levels += S.map_z
|
|
area_prefix = S.name
|
|
return TRUE
|
|
desc = "Blueprints of the [station_name()]. There is a \"Classified\" stamp and several coffee stains on it."
|
|
area_prefix = station_name()
|
|
valid_z_levels = SSatlas.current_map.station_levels
|
|
|
|
/obj/item/blueprints/proc/create_blueprint_component() //So that subtypes can override
|
|
AddComponent(/datum/component/eye/blueprints)
|
|
|
|
/obj/item/blueprints/proc/get_look_args() // ditto
|
|
return list(valid_z_levels, area_prefix)
|
|
|
|
//Blueprints for building exoplanet outposts
|
|
/obj/item/blueprints/outpost
|
|
name = "outpost blueprints"
|
|
icon_state = "blueprints2"
|
|
show_wires = FALSE
|
|
|
|
/obj/item/blueprints/outpost/attack_self(mob/user)
|
|
if(!length(valid_z_levels) || !valid_z_levels) //Outpost blueprints can initialize before exoplanets, so put this in here to doublecheck it.
|
|
set_valid_z_levels()
|
|
var/obj/effect/overmap/visitable/sector/exoplanet/E = GLOB.map_sectors["[GET_Z(user)]"]
|
|
if(E.generated_name) //Prevent the prefix from being super long with the planet type appended
|
|
area_prefix = E.planet_name
|
|
else
|
|
area_prefix = E.name
|
|
. = ..()
|
|
|
|
/obj/item/blueprints/outpost/set_valid_z_levels()
|
|
if(!SSatlas.current_map.use_overmap)
|
|
desc = "Some dusty old blueprints. The markings are old, and seem entirely irrelevant for your wherabouts."
|
|
return FALSE
|
|
desc = "Blueprints for the daring souls wanting to establish a planetary outpost. Has some sketchy looking stains and what appears to be bite holes."
|
|
var/area/overmap/map = global.map_overmap
|
|
for(var/obj/effect/overmap/visitable/sector/exoplanet/E in map)
|
|
valid_z_levels += E.map_z
|
|
return TRUE
|
|
|
|
/obj/item/blueprints/shuttle
|
|
desc_info = "These blueprints can be used to modify a shuttle. In order to be used, the shuttle must be located on its \"Open Space\" z-level. Newly-created areas will be automatically added to the shuttle. If all shuttle areas are removed, the shuttle will be destroyed!"
|
|
///Name of the blueprints' linked shuttle. Mapped-in versions should have this preset, or be mapped into the shuttle area itself.
|
|
var/shuttle_name
|
|
///The actual overmap shuttle type, for setting on preset blueprints.
|
|
var/obj/effect/overmap/visitable/ship/landable/shuttle_type
|
|
|
|
/obj/item/blueprints/shuttle/set_valid_z_levels()
|
|
if(SSatlas.current_map.use_overmap)
|
|
var/area/A = get_area(src)
|
|
|
|
if(!shuttle_type)
|
|
for(var/obj/effect/overmap/visitable/ship/landable/landable in SSshuttle.ships)
|
|
var/datum/shuttle/shuttle = SSshuttle.shuttles[landable.shuttle]
|
|
if(shuttle && (A in shuttle.shuttle_area))
|
|
shuttle_type = landable
|
|
break
|
|
else
|
|
var/obj/effect/overmap/visitable/ship/landable/S = SSshuttle.ship_by_type(shuttle_type)
|
|
shuttle_type = S
|
|
|
|
if(istype(shuttle_type) && !isnull(shuttle_type))
|
|
if(isnull(shuttle_name))
|
|
shuttle_name = shuttle_type.shuttle
|
|
update_linked_name(shuttle_type, null, shuttle_type.name)
|
|
RegisterSignal(shuttle_type, COMSIG_QDELETING, PROC_REF(on_shuttle_destroy))
|
|
RegisterSignal(shuttle_type, COMSIG_BASENAME_SETNAME, PROC_REF(update_linked_name))
|
|
valid_z_levels += shuttle_type.map_z
|
|
area_prefix = shuttle_type.name
|
|
return TRUE
|
|
// The blueprints are useless now, but keep them around for fluff.
|
|
desc = "Some dusty old blueprints. The markings are old, and seem entirely irrelevant for your wherabouts."
|
|
return FALSE
|
|
|
|
/obj/item/blueprints/shuttle/proc/update_linked_name(atom/namee, old_name, new_name)
|
|
name = "\improper [new_name] blueprints"
|
|
desc = "Blueprints of \the [new_name]. There are several coffee stains on it."
|
|
area_prefix = new_name
|
|
|
|
/obj/item/blueprints/shuttle/proc/on_shuttle_destroy(datum/destroyed)
|
|
UnregisterSignal(destroyed, COMSIG_QDELETING)
|
|
UnregisterSignal(destroyed, COMSIG_BASENAME_SETNAME)
|
|
name = initial(name)
|
|
desc = "Some dusty old blueprints. The markings are old, and seem entirely irrelevant for your wherabouts."
|
|
valid_z_levels = list()
|
|
area_prefix = null
|
|
|
|
/obj/item/blueprints/shuttle/create_blueprint_component()
|
|
AddComponent(/datum/component/eye/blueprints/shuttle)
|
|
|
|
/obj/item/blueprints/shuttle/get_look_args()
|
|
return list(valid_z_levels, area_prefix, shuttle_name)
|
|
|
|
/obj/item/blueprints/shuttle/intrepid
|
|
shuttle_name = "Intrepid"
|
|
shuttle_type = /obj/effect/overmap/visitable/ship/landable/intrepid
|
|
|
|
/obj/item/blueprints/shuttle/mining_shuttle
|
|
shuttle_name = "Spark"
|
|
shuttle_type = /obj/effect/overmap/visitable/ship/landable/mining_shuttle
|
|
|
|
/obj/item/blueprints/shuttle/canary
|
|
shuttle_name = "Canary"
|
|
shuttle_type = /obj/effect/overmap/visitable/ship/landable/canary
|
|
|
|
/obj/item/storage/lockbox/shuttle_blueprints //Blueprints for modifying the Horizon's shuttles.
|
|
name = "shuttle blueprints lockbox"
|
|
req_access = list(ACCESS_CE)
|
|
starts_with = list(
|
|
/obj/item/blueprints/shuttle/intrepid = 1,
|
|
/obj/item/blueprints/shuttle/mining_shuttle = 1,
|
|
/obj/item/blueprints/shuttle/canary = 1
|
|
)
|