Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[s] Return Ice Classic to CM for the Holiday Season #5067

Closed
Closed
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
1 change: 1 addition & 0 deletions code/__DEFINES/__game.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ block( \
#define MAP_SOROKYNE_STRATA "Sorokyne Strata"
#define MAP_CORSAT "CORSAT" // Highpop only
#define MAP_KUTJEVO "Kutjevo Refinery"
#define MAP_ICE_COLONY_V1 "Ice Colony Classic"
#define MAP_ICE_COLONY_V3 "Shivas Snowball" //Ice Rework, low pop enabled.
#define MAP_RUNTIME "USS Runtime"
#define MAP_LV522_CHANCES_CLAIM "LV-522 Chance's Claim" // Highpop Only
Expand Down
10 changes: 10 additions & 0 deletions code/datums/shuttles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,13 @@

/datum/map_template/shuttle/trijent_elevator/B
elevator_network = "B"

/datum/map_template/shuttle/trijent_elevator/ice_elevator
name = "Classic Ice Elevator"
shuttle_id = "ice_classic_shuttle"

/datum/map_template/shuttle/trijent_elevator/ice_elevator/lab
elevator_network = "lab"

/datum/map_template/shuttle/trijent_elevator/ice_elevator/dorm
elevator_network = "dorm"
34 changes: 32 additions & 2 deletions code/game/area/IceColony.dm
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,12 @@
name = "\improper South Western Valleys"
icon_state = "valley_south_west"

/area/ice_colony/exterior/surface/valley/northeast/apc_support
always_unpowered = FALSE

/area/ice_colony/exterior/surface/valley/southeast/apc_support
always_unpowered = FALSE

//
// Clearing
// The Colony Center, so to speak
Expand Down Expand Up @@ -791,57 +797,81 @@
/area/shuttle/elevator1/ground
name = "\improper Elevator I"
icon_state = "shuttlered"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator1/underground
name = "\improper Elevator I"
icon_state = "shuttle"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator1/transit
name = "\improper Elevator I"
icon_state = "shuttle2"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator2/ground
name = "\improper Elevator II"
icon_state = "shuttle"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator2/underground
name = "\improper Elevator II"
icon_state = "shuttle2"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator2/transit
name = "\improper Elevator II"
icon_state = "shuttlered"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator3/ground
name = "\improper Elevator III"
icon_state = "shuttle"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator3/underground
name = "\improper Elevator III"
icon_state = "shuttle2"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator3/transit
name = "\improper Elevator III"
icon_state = "shuttlered"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator4/ground
name = "\improper Elevator IV"
icon_state = "shuttlered"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator4/underground
name = "\improper Elevator IV"
icon_state = "shuttle"
requires_power = TRUE
unlimited_power = FALSE

/area/shuttle/elevator4/transit
name = "\improper Elevator IV"
icon_state = "shuttle2"
requires_power = TRUE
unlimited_power = FALSE

/area/ice_colony/landing/console
name = "\improper LZ1 'Lazarus'"
icon_state = "tcomsatcham"
requires_power = 0
requires_power = FALSE

/area/ice_colony/landing/console2
name = "\improper LZ2 'Underground'"
icon_state = "tcomsatcham"
requires_power = 0
requires_power = FALSE
17 changes: 17 additions & 0 deletions code/game/machinery/doors/poddoor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
layer = PODDOOR_CLOSED_LAYER
open_layer = PODDOOR_OPEN_LAYER
closed_layer = PODDOOR_CLOSED_LAYER
///How many tiles the shutter occupies
var/shutter_length = 1

/obj/structure/machinery/door/poddoor/Initialize()
. = ..()
Expand Down Expand Up @@ -111,6 +113,8 @@
operating = FALSE

/obj/structure/machinery/door/poddoor/two_tile/open()
if(!density)
return
if(operating) //doors can still open when emag-disabled
return

Expand Down Expand Up @@ -148,6 +152,8 @@
..()

/obj/structure/machinery/door/poddoor/two_tile/close()
if(density)
return
if(operating)
return
start_closing()
Expand Down Expand Up @@ -182,6 +188,7 @@
/obj/structure/machinery/door/poddoor/two_tile
dir = EAST
icon = 'icons/obj/structures/doors/1x2blast_hor.dmi'
shutter_length = 2
var/obj/structure/machinery/door/poddoor/filler_object/f1
var/obj/structure/machinery/door/poddoor/filler_object/f2

Expand Down Expand Up @@ -211,6 +218,7 @@

/obj/structure/machinery/door/poddoor/two_tile/four_tile
icon = 'icons/obj/structures/doors/1x4blast_hor.dmi'
shutter_length = 4
var/obj/structure/machinery/door/poddoor/filler_object/f3
var/obj/structure/machinery/door/poddoor/filler_object/f4

Expand Down Expand Up @@ -263,6 +271,15 @@
/obj/structure/machinery/door/poddoor/two_tile/four_tile/vertical/secure/open
density = FALSE

/obj/structure/machinery/door/poddoor/two_tile/four_tile/pivot/Initialize()
. = ..()
RegisterSignal(src, COMSIG_ATOM_DIR_CHANGE, PROC_REF(direction_change_move))

/obj/structure/machinery/door/poddoor/two_tile/four_tile/pivot/proc/direction_change_move(source, old_dir, new_dir)
if(old_dir == new_dir)
return
x -= shutter_length - 1

/obj/structure/machinery/door/poddoor/two_tile/secure
icon = 'icons/obj/structures/doors/1x2blast_hor.dmi'
openspeed = 17
Expand Down
39 changes: 23 additions & 16 deletions code/game/machinery/telecomms/presets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,8 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers)
freq_listening = list(COLONY_FREQ)
var/toggle_cooldown = 0

///if xenos can bypass XENO_COMM_ACQUISITION_TIME to corrupt the tower
var/bypass_round_time_requirements = FALSE
/// Tower has been taken over by xenos, is not usable
var/corrupted = FALSE

Expand Down Expand Up @@ -318,50 +320,55 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers)
if(!weeded_turf.weeds.parent)
return

if(!istype(weeded_turf.weeds.parent, /obj/effect/alien/weeds/node/pylon/cluster))
if(istypestrict(weeded_turf.weeds.parent, /obj/effect/alien/weeds/node/pylon/core) || !istype(weeded_turf.weeds.parent, /obj/effect/alien/weeds/node/pylon))
return

if(SSticker.mode.is_in_endgame)
return

if(ROUND_TIME < XENO_COMM_ACQUISITION_TIME)
addtimer(CALLBACK(src, PROC_REF(handle_xeno_acquisition), weeded_turf), (XENO_COMM_ACQUISITION_TIME - ROUND_TIME))
return
if(!bypass_round_time_requirements)
if(ROUND_TIME < XENO_COMM_ACQUISITION_TIME)
addtimer(CALLBACK(src, PROC_REF(handle_xeno_acquisition), weeded_turf), (XENO_COMM_ACQUISITION_TIME - ROUND_TIME))
return

if(!COOLDOWN_FINISHED(src, corruption_delay))
addtimer(CALLBACK(src, PROC_REF(handle_xeno_acquisition), weeded_turf), (COOLDOWN_TIMELEFT(src, corruption_delay)))
return

var/obj/effect/alien/weeds/node/pylon/cluster/parent_node = weeded_turf.weeds.parent
var/obj/effect/alien/weeds/node/pylon/parent_node = weeded_turf.weeds.parent

var/obj/effect/alien/resin/special/cluster/cluster_parent = parent_node.resin_parent
var/obj/effect/alien/resin/special/pylon_node_parent = parent_node.resin_parent

var/list/held_children_weeds = parent_node.children
var/cluster_loc = cluster_parent.loc
var/linked_hive = cluster_parent.linked_hive
var/cluster_loc = pylon_node_parent.loc
var/linked_hive = pylon_node_parent.linked_hive

parent_node.children = list()

qdel(cluster_parent)

var/obj/effect/alien/resin/special/pylon/endgame/new_pylon = new(cluster_loc, linked_hive)
new_pylon.node.children = held_children_weeds
var/obj/effect/alien/resin/special/pylon/endgame/pylon
if(istypestrict(parent_node.resin_parent, /obj/effect/alien/resin/special/pylon/endgame)) //if its already a pylon, just add the new tower
pylon = parent_node.resin_parent
else
qdel(pylon_node_parent)
pylon = new(cluster_loc, linked_hive)
pylon.node.children = held_children_weeds

for(var/obj/effect/alien/weeds/weed in new_pylon.node.children)
weed.parent = new_pylon.node
for(var/obj/effect/alien/weeds/weed in pylon.node.children)
weed.parent = pylon.node
weed.spread_on_semiweedable = TRUE
weed.weed_expand()

RegisterSignal(new_pylon, COMSIG_PARENT_QDELETING, PROC_REF(uncorrupt))
RegisterSignal(pylon, COMSIG_PARENT_QDELETING, PROC_REF(uncorrupt))

corrupted = TRUE
pylon.connected_towers += src

corruption_image = image(icon, icon_state = "resin_growing")

flick_overlay(src, corruption_image, (2 SECONDS))
addtimer(CALLBACK(src, PROC_REF(switch_to_idle_corruption)), (2 SECONDS))

new_pylon.comms_relay_connection()
pylon.comms_relay_connection(src)

/// Handles removing corruption effects from the comms relay
/obj/structure/machinery/telecomms/relay/preset/tower/mapcomms/proc/uncorrupt(datum/deleting_datum)
Expand Down
30 changes: 17 additions & 13 deletions code/modules/cm_aliens/structures/special/pylon_core.dm
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@

/obj/effect/alien/resin/special/pylon/endgame
cover_range = WEED_RANGE_CORE
var/list/connected_towers = list()
var/activated = FALSE

/obj/effect/alien/resin/special/pylon/endgame/Destroy()
Expand All @@ -148,33 +149,36 @@
if(hijack_delete)
return ..()

marine_announcement("ALERT.\n\nEnergy build up around communication relay at [get_area(src)] halted.", "[MAIN_AI_SYSTEM] Biological Scanner")
for(var/tower in connected_towers)
marine_announcement("ALERT.\n\nEnergy build up around communication relay at [get_area(tower)] halted.", "[MAIN_AI_SYSTEM] Biological Scanner")

for(var/hivenumber in GLOB.hive_datum)
var/datum/hive_status/checked_hive = GLOB.hive_datum[hivenumber]
if(!length(checked_hive.totalXenos))
continue
for(var/hivenumber in GLOB.hive_datum)
var/datum/hive_status/checked_hive = GLOB.hive_datum[hivenumber]
if(!length(checked_hive.totalXenos))
continue

if(checked_hive == linked_hive)
xeno_announcement(SPAN_XENOANNOUNCE("We have lost our control of the tall's communication relay at [get_area(src)]."), hivenumber, XENO_GENERAL_ANNOUNCE)
else
xeno_announcement(SPAN_XENOANNOUNCE("Another hive has lost control of the tall's communication relay at [get_area(src)]."), hivenumber, XENO_GENERAL_ANNOUNCE)
if(checked_hive == linked_hive)
xeno_announcement(SPAN_XENOANNOUNCE("We have lost our control of the tall's communication relay at [get_area(tower)]."), hivenumber, XENO_GENERAL_ANNOUNCE)
else
xeno_announcement(SPAN_XENOANNOUNCE("Another hive has lost control of the tall's communication relay at [get_area(tower)]."), hivenumber, XENO_GENERAL_ANNOUNCE)

connected_towers -= tower

return ..()

/// Checks if all comms towers are connected and then starts end game content on all pylons if they are
/obj/effect/alien/resin/special/pylon/endgame/proc/comms_relay_connection()
marine_announcement("ALERT.\n\nIrregular build up of energy around communication relays at [get_area(src)], biological hazard detected.\n\nDANGER: Hazard is generating new xenomorph entities, advise urgent termination of hazard by ground forces.", "[MAIN_AI_SYSTEM] Biological Scanner")
/obj/effect/alien/resin/special/pylon/endgame/proc/comms_relay_connection(corrupted_tower)
marine_announcement("ALERT.\n\nIrregular build up of energy around communication relays at [get_area(corrupted_tower)], biological hazard detected.\n\nDANGER: Hazard is generating new xenomorph entities, advise urgent termination of hazard by ground forces.", "[MAIN_AI_SYSTEM] Biological Scanner")

for(var/hivenumber in GLOB.hive_datum)
var/datum/hive_status/checked_hive = GLOB.hive_datum[hivenumber]
if(!length(checked_hive.totalXenos))
continue

if(checked_hive == linked_hive)
xeno_announcement(SPAN_XENOANNOUNCE("We have harnessed the tall's communication relay at [get_area(src)].\n\nWe will now grow more of our number from this pylon. Hold it!"), hivenumber, XENO_GENERAL_ANNOUNCE)
xeno_announcement(SPAN_XENOANNOUNCE("We have harnessed the tall's communication relay at [get_area(corrupted_tower)].\n\nWe will now grow more of our number from this pylon. Hold it!"), hivenumber, XENO_GENERAL_ANNOUNCE)
else
xeno_announcement(SPAN_XENOANNOUNCE("Another hive has harnessed the tall's communication relay at [get_area(src)].[linked_hive.faction_is_ally(checked_hive.name) ? "" : " Stop them!"]"), hivenumber, XENO_GENERAL_ANNOUNCE)
xeno_announcement(SPAN_XENOANNOUNCE("Another hive has harnessed the tall's communication relay at [get_area(corrupted_tower)].[linked_hive.faction_is_ally(checked_hive.name) ? "" : " Stop them!"]"), hivenumber, XENO_GENERAL_ANNOUNCE)

activated = TRUE
addtimer(CALLBACK(src, PROC_REF(give_larva)), XENO_PYLON_ACTIVATION_COOLDOWN, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_LOOP|TIMER_DELETE_ME)
Expand Down
4 changes: 4 additions & 0 deletions code/modules/cm_marines/equipment/maps.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@
html_link = "images/1/18/Map_icecolony.png"
color = "cyan"

/obj/item/map/ice_colony_map/v1
html_link = "https://cm-ss13.com/w/images/8/88/Ice_V1.png"

/obj/item/map/ice_colony_map_v3
name = "\improper Shivas Snowball map"
desc = "A labelled print out of the anterior scan of the UA colony Shivas Snowball."
Expand Down Expand Up @@ -139,6 +142,7 @@ GLOBAL_LIST_INIT_TYPED(map_type_list, /obj/item/map, setup_all_maps())
return list(
MAP_LV_624 = new /obj/item/map/lazarus_landing_map(),
MAP_ICE_COLONY = new /obj/item/map/ice_colony_map(),
MAP_ICE_COLONY_V1 = new /obj/item/map/ice_colony_map/v1(),
MAP_ICE_COLONY_V3 = new /obj/item/map/ice_colony_map_v3(),
MAP_WHISKEY_OUTPOST = new /obj/item/map/whiskey_outpost_map(),
MAP_BIG_RED = new /obj/item/map/big_red_map(),
Expand Down
6 changes: 6 additions & 0 deletions code/modules/shuttle/shuttles/trijent_elevator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,9 @@
id=STAT_TRIJENT_OMEGA
airlock_area=/area/shuttle/trijent_shuttle/omega
airlock_exit="east"

/obj/docking_port/mobile/trijent_elevator/ice_classic
name = "Classic Ice Elevator"
id = "ice_classic_shuttle"
width = 8
height = 5
Binary file modified icons/obj/structures/doors/1x4blast_hor.dmi
Binary file not shown.
Binary file modified icons/obj/structures/doors/4x1_elevator.dmi
Binary file not shown.
Binary file modified icons/obj/structures/machinery/computer.dmi
Binary file not shown.
3 changes: 3 additions & 0 deletions map_config/maps.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ map desert_dam
minplayers 130
endmap

map ice_colony_v1
endmap

map ice_colony_v2
minplayers 130
voteweight 0
Expand Down
Loading