Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

APC Access Helper #12333

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions _maps/map_files/EchoStation/EchoStation.dmm

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion _maps/map_files/FlandStation/FlandStation.dmm

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion _maps/map_files/Mining/Lavaland.dmm

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions _maps/map_files/RadStation/RadStation.dmm

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -676,11 +676,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 27)

/// Used for syndicate_access air alarm helper, which sets air alarm's required access to syndicate_access.
/obj/machinery/airalarm/proc/give_syndicate_access()
req_access = list(ACCESS_SYNDICATE)
req_access = null
req_one_access = list(ACCESS_SYNDICATE)

///Used for away_general_access air alarm helper, which set air alarm's required access to away_general_access.
/obj/machinery/airalarm/proc/give_away_general_access()
req_access = list(ACCESS_AWAY_GENERAL)
req_access = null
req_one_access = list(ACCESS_AWAY_GENERAL)

///Used for engine_access air alarm helper, which set air alarm's required access to away_general_access.
/obj/machinery/airalarm/proc/give_engine_access()
Expand Down
89 changes: 79 additions & 10 deletions code/modules/mapping/mapping_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -328,31 +328,100 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/effect/mapping_helpers)
log_mapping("[src] failed to find air alarm at [AREACOORD(src)].")
qdel(src)

//APC helpers
/obj/effect/mapping_helpers/apc
name = "apc helpers"
icon_state = "apc_helper"

/obj/effect/mapping_helpers/apc/Initialize(mapload)
. = ..()
if(!mapload)
log_mapping("[src] spawned outside of mapload!")
return
var/obj/machinery/power/apc/apc = locate(/obj/machinery/power/apc) in loc
if(!apc)
log_mapping("[src] failed to find an APC at [AREACOORD(src)]")
return INITIALIZE_HINT_QDEL
var/obj/machinery/power/apc/target = locate(/obj/machinery/power/apc) in loc
if(isnull(target))
var/area/target_area = get_area(target)
log_mapping("[src] failed to find an apc at [AREACOORD(src)] ([target_area.type]).")
else
payload(apc)
payload(target)

return INITIALIZE_HINT_LATELOAD

/obj/effect/mapping_helpers/apc/LateInitialize()
. = ..()
var/obj/machinery/power/apc/target = locate(/obj/machinery/power/apc) in loc

if(isnull(target))
qdel(src)
return
if(target.unlocked)
target.unlock()
if(target.syndicate_access)
target.give_syndicate_access()
if(target.away_engine_access)
target.give_away_engine_access()
if(target.exploration_access)
target.give_exploration_access()

target.update_icon()
qdel(src)

/obj/effect/mapping_helpers/apc/proc/payload(obj/machinery/power/apc/payload)
return

/obj/effect/mapping_helpers/apc/discharged
name = "apc zero change helper"
/obj/effect/mapping_helpers/apc/charge
name = "apc change helper"
icon_state = "apc_nopower"
var/charge_percentage = 100

/obj/effect/mapping_helpers/apc/discharged/payload(obj/machinery/power/apc/apc)
/obj/effect/mapping_helpers/apc/charge/payload(obj/machinery/power/apc/apc)
var/obj/item/stock_parts/cell/C = apc.get_cell()
C.charge = 0
if(isnull(C))
return

C.charge = C.maxcharge * charge_percentage / 100

C.update_icon()
qdel(src)

/obj/effect/mapping_helpers/apc/unlocked
name = "apc unlocked interface helper"
icon_state = "apc_unlocked_helper"

/obj/effect/mapping_helpers/apc/unlocked/payload(obj/machinery/power/apc/target)
if(!target.locked)
var/area/area = get_area(target)
log_mapping("[src] at [AREACOORD(src)] [(area.type)] tried to unlock the [target] but it's already unlocked!")
target.unlocked = TRUE

/obj/effect/mapping_helpers/apc/syndicate_access
name = "apc syndicate access helper"
icon_state = "apc_syndicate_access_helper"

/obj/effect/mapping_helpers/apc/syndicate_access/payload(obj/machinery/power/apc/target)
if(!target.syndicate_access)
var/area/area = get_area(target)
log_mapping("[src] at [AREACOORD(src)] [(area.type)] tried to adjust [target]'s access to syndicate access but it's already changed!")
target.syndicate_access = TRUE

/obj/effect/mapping_helpers/apc/exploration_access
name = "apc exploration access helper"
icon_state = "apc_exploration_access_helper"

/obj/effect/mapping_helpers/apc/exploration_access/payload(obj/machinery/power/apc/target)
if(!target.exploration_access)
var/area/area = get_area(target)
log_mapping("[src] at [AREACOORD(src)] [(area.type)] tried to adjust [target]'s access to exploration acess but it's already changed!")
target.exploration_access = TRUE

/obj/effect/mapping_helpers/apc/away_engine_access
name = "apc away engine access helper"
icon_state = "apc_away_engine_access_helper"

/obj/effect/mapping_helpers/apc/away_engine_access/payload(obj/machinery/power/apc/target)
if(!target.away_engine_access)
var/area/area = get_area(target)
log_mapping("[src] at [AREACOORD(src)] [(area.type)] tried to adjust [target]'s access to away engine access but it's already changed!")
target.away_engine_access = TRUE


//needs to do its thing before spawn_rivers() is called
Expand Down
29 changes: 29 additions & 0 deletions code/modules/power/apc/apc_main.dm
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,16 @@
/// To prevent sound loop bugs
var/apc_sound_stage = null

//Access helpers for APCs
/// Used for APC helper called unlocked to make APC unlocked.
var/unlocked = FALSE
/// Used for APC helper called syndicate_access to make APC's required access syndicate_access.
var/syndicate_access = FALSE
/// Used for APC helper called away_engine_access to make APC's required access away_engine_access.
var/away_engine_access = FALSE
/// Used for APC helper called exploration_access to make APC's required access exploration_access.
var/exploration_access = FALSE

armor_type = /datum/armor/power_apc

/datum/armor/power_apc
Expand Down Expand Up @@ -665,3 +675,22 @@
icon_state = "power_mod"
custom_price = 5
desc = "Heavy-duty switching circuits for power control."

/// Used for unlocked apc helper, which unlocks the apc.
/obj/machinery/power/apc/proc/unlock()
locked = FALSE

/// Used for syndicate_access apc helper, which sets apc's required access to syndicate_access.
/obj/machinery/power/apc/proc/give_syndicate_access()
req_access = null
req_one_access = list(ACCESS_SYNDICATE)

///Used for away_general_access apc helper, which set apc's required access to away_general_access.
/obj/machinery/power/apc/proc/give_away_engine_access()
req_access = null
req_one_access = list(ACCESS_AWAY_ENGINE)

///Used for away_general_access air alarm helper, which set air alarm's required access to away_general_access.
/obj/machinery/power/apc/proc/give_exploration_access()
req_access = null
req_one_access = list(ACCESS_EXPLORATION)
Binary file modified icons/effects/mapping_helpers.dmi
Binary file not shown.
Loading