diff --git a/baystation12.dme b/baystation12.dme index d07a049e0f6eb..817d5507d961b 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -2646,7 +2646,6 @@ #include "code\modules\overmap\overmap_shuttle.dm" #include "code\modules\overmap\sectors.dm" #include "code\modules\overmap\spacetravel.dm" -#include "code\modules\overmap\trading_locations.dm" #include "code\modules\overmap\contacts\_contacts.dm" #include "code\modules\overmap\contacts\contact_sensors.dm" #include "code\modules\overmap\contacts\tracker.dm" diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index b8b2865cef793..6fe6f1edbe092 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -235,11 +235,10 @@ to_chat(usr, SPAN_WARNING("The round is either not ready, or has already finished...")) return 0 // [FD-EDIT] - if(!check_rights(R_ADMIN)) - if(!usr.client.enter_lock_bypass) - if(!config.enter_allowed) - to_chat(usr, SPAN_NOTICE("There is an administrative lock on entering the game!")) - return 0 + if(!config.enter_allowed) + if(!check_rights(, show_msg = FALSE) && !usr.client.enter_lock_bypass) + to_chat(usr, SPAN_NOTICE("There is an administrative lock on entering the game!")) + return 0 /* if(!config.enter_allowed) to_chat(usr, SPAN_NOTICE("There is an administrative lock on entering the game!")) diff --git a/code/modules/overmap/trading_locations.dm b/code/modules/overmap/trading_locations.dm deleted file mode 100644 index 86dcc6f8449c4..0000000000000 --- a/code/modules/overmap/trading_locations.dm +++ /dev/null @@ -1,20 +0,0 @@ -/obj/overmap/trading - name = "station" - desc = "A trading station." - icon_state = "sector" - scannable = TRUE - requires_contact = FALSE // Whether or not the effect must be identified by ship sensors before being seen. - instant_contact = TRUE // Do we instantly identify ourselves to any ship in sensors range? - plane = 4 - - var/datum/trader/trader_merchant_datum - -/obj/overmap/trading/on_update_icon() - return - -/obj/overmap/trading/ship - name = "ship" - desc = "A trading ship." - icon_state = "ship" - requires_contact = FALSE // Whether or not the effect must be identified by ship sensors before being seen. - instant_contact = TRUE // Do we instantly identify ourselves to any ship in sensors range? diff --git a/maps/torch_fd/fd_torch.dm b/maps/torch_fd/fd_torch.dm index 3bec82acae481..7189a3ce15099 100644 --- a/maps/torch_fd/fd_torch.dm +++ b/maps/torch_fd/fd_torch.dm @@ -27,7 +27,7 @@ #include "torch_ranks.dm" #include "../torch/torch_security_state.dm" #include "../torch/torch_setup.dm" - #include "../torch/torch_shuttles.dm" + #include "torch_shuttles.dm" #include "../torch/torch_submaps.dm" #include "../torch/torch_turfs.dm" #include "../torch/torch_unit_testing.dm" diff --git a/maps/torch_fd/job/addition/research_jobs.dm b/maps/torch_fd/job/addition/research_jobs.dm index 05a3e7c3676b8..283586154c6ca 100644 --- a/maps/torch_fd/job/addition/research_jobs.dm +++ b/maps/torch_fd/job/addition/research_jobs.dm @@ -1,5 +1,5 @@ /// Access -var/const/access_research_security = "ACCESS_RESEARCH_SECURITY" //97 +var/global/const/access_research_security = "ACCESS_RESEARCH_SECURITY" //97 /datum/access/rnd_guard id = access_research_security desc = "Research Checkpoint" diff --git a/maps/torch_fd/torch2_deck4.dmm b/maps/torch_fd/torch2_deck4.dmm index ab9248c1fb139..1168151fa5e65 100644 --- a/maps/torch_fd/torch2_deck4.dmm +++ b/maps/torch_fd/torch2_deck4.dmm @@ -120,7 +120,7 @@ "ct" = (/obj/floor_decal/industrial/warning{dir = 1; icon_state = "warning"},/obj/machinery/door/blast/regular/escape_pod,/turf/simulated/floor/reinforced,/area/maintenance/fourthdeck/aft) "cu" = (/turf/simulated/wall/r_wall/prepainted,/area/maintenance/fourthdeck/aft) "cv" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/fourthdeck/aft) -"cw" = (/obj/shuttle_landmark/merchant/out,/turf/space,/area/space) +"cw" = (/turf/space,/area/space) "cx" = (/obj/structure/railing/mapped,/turf/simulated/floor/reinforced{map_airless = 1; name = "vacuum reinforced floor"},/area/space) "cy" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled/monotile,/area/maintenance/fourthdeck/forestarboard) "cz" = (/obj/catwalk_plated,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fourthdeck/forestarboard) @@ -783,7 +783,7 @@ "ph" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume/external_air{id_tag = "eva_airlock_pump"},/obj/machinery/light{dir = 1},/obj/machinery/oxygen_pump{pixel_y = 32},/obj/floor_decal/techfloor{dir = 1},/turf/simulated/floor/tiled/techfloor/grid,/area/eva) "pi" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume/external_air{id_tag = "eva_airlock_pump"},/obj/floor_decal/techfloor{dir = 1},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1380; id_tag = "eva_airlock"; pixel_y = 20; tag_airpump = "eva_airlock_pump"; tag_chamber_sensor = "eva_airlock_sensor"; tag_exterior_door = "eva_airlock_outer"; tag_interior_door = "eva_airlock_inner"},/turf/simulated/floor/tiled/techfloor/grid,/area/eva) "pj" = (/obj/machinery/light{dir = 1},/obj/machinery/oxygen_pump{pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump/high_volume/external_air{id_tag = "eva_airlock_pump"},/obj/floor_decal/techfloor{dir = 1},/turf/simulated/floor/tiled/techfloor/grid,/area/eva) -"pk" = (/obj/structure/table/rack{dir = 8},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/machinery/camera/network/fourth_deck{c_tag = "EVA - Center"; dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 6},/obj/floor_decal/corner/blue/half{dir = 8},/turf/simulated/floor/tiled/monotile,/area/eva) +"pk" = (/obj/structure/table/rack{dir = 8},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 6},/obj/floor_decal/corner/blue/half{dir = 8},/turf/simulated/floor/tiled/monotile,/area/eva) "pl" = (/turf/simulated/floor/tiled,/area/eva) "pm" = (/obj/structure/table/steel_reinforced,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/floor_decal/corner/blue/half{dir = 4},/turf/simulated/floor/tiled/monotile,/area/eva) "pn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/newscaster{pixel_x = 32},/obj/floor_decal/industrial/warning/corner{dir = 4; icon_state = "warningcorner"},/turf/simulated/floor/tiled,/area/hallway/primary/fourthdeck/fore) @@ -907,7 +907,7 @@ "rB" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume/external_air{dir = 1; id_tag = "eva_airlock_pump"},/obj/floor_decal/techfloor,/turf/simulated/floor/tiled/techfloor/grid,/area/eva) "rC" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume/external_air{dir = 1; id_tag = "eva_airlock_pump"},/obj/floor_decal/techfloor,/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "eva_airlock_sensor"; pixel_y = -25},/turf/simulated/floor/tiled/techfloor/grid,/area/eva) "rD" = (/obj/item/device/radio/intercom{dir = 1; pixel_y = -28},/obj/machinery/atmospherics/unary/vent_pump/high_volume/external_air{dir = 1; id_tag = "eva_airlock_pump"},/obj/floor_decal/techfloor,/turf/simulated/floor/tiled/techfloor/grid,/area/eva) -"rE" = (/obj/structure/table/rack{dir = 8},/obj/item/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/storage/briefcase/inflatable{pixel_y = 3},/obj/item/storage/briefcase/inflatable{pixel_x = -3},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/floor_decal/corner/blue/half{dir = 8},/turf/simulated/floor/tiled/monotile,/area/eva) +"rE" = (/obj/structure/table/rack{dir = 8},/obj/item/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/storage/briefcase/inflatable{pixel_y = 3},/obj/item/storage/briefcase/inflatable{pixel_x = -3},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/floor_decal/corner/blue/half{dir = 8},/obj/machinery/camera/network/fourth_deck{c_tag = "EVA - Center"; dir = 4},/turf/simulated/floor/tiled/monotile,/area/eva) "rF" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/eva) "rG" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/eva) "rH" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/eva) diff --git a/maps/torch_fd/torch3_deck3.dmm b/maps/torch_fd/torch3_deck3.dmm index 2ce9f2b308fed..2cb69b76bdafd 100644 --- a/maps/torch_fd/torch3_deck3.dmm +++ b/maps/torch_fd/torch3_deck3.dmm @@ -630,7 +630,7 @@ "mk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/hatch/maintenance,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled/steel_ridged,/area/hallway/primary/thirddeck/fore) "ml" = (/obj/structure/flora/ausbushes/fernybush,/turf/simulated/floor/grass,/area/crew_quarters/observation) "mm" = (/obj/floor_decal/spline/fancy/wood,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/lino,/area/crew_quarters/galley) -"mn" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_coffee/full{dir = 8; layer = 2.23; pixel_y = 27},/obj/item/sticky_pad/random{pixel_x = 7; pixel_y = 10},/obj/machinery/fabricator/micro{pixel_x = -3},/turf/simulated/floor/carpet/blue,/area/crew_quarters/galley) +"mn" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_coffee/full{dir = 8; layer = 2.23; pixel_y = 27},/obj/item/sticky_pad/random{pixel_x = 7; pixel_y = 10},/obj/machinery/fabricator/micro/bartender{show_category = "All"; pixel_x = -3},/turf/simulated/floor/carpet/blue,/area/crew_quarters/galley) "mo" = (/obj/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/lino,/area/crew_quarters/galley) "mp" = (/obj/floor_decal/corner/blue/border{dir = 8},/obj/floor_decal/corner/blue/border{dir = 4},/turf/simulated/floor/tiled/dark/monotile,/area/crew_quarters/mess) "mq" = (/obj/structure/bed/sofa/r/black{dir = 8},/obj/floor_decal/corner/blue/border{dir = 8},/obj/floor_decal/corner/blue/border{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/tiled/dark/monotile,/area/crew_quarters/mess) diff --git a/maps/torch_fd/torch_cameras.dm b/maps/torch_fd/torch_cameras.dm index 3ca78fd83979f..6b59c12a2b61e 100644 --- a/maps/torch_fd/torch_cameras.dm +++ b/maps/torch_fd/torch_cameras.dm @@ -1,8 +1,8 @@ -var/const/NETWORK_EXPLO = "Exploration" -var/const/NETWORK_PETROV = "Petrov" -var/const/NETWORK_GUPS = "General Utility Pods" // 2 for the price of 1! :p -var/const/NETWORK_SUPPLY = "Supply" -var/const/NETWORK_YACHT = "Private Catamaran" +var/global/const/NETWORK_EXPLO = "Exploration" +var/global/const/NETWORK_PETROV = "Petrov" +var/global/const/NETWORK_GUPS = "General Utility Pods" // 2 for the price of 1! :p +var/global/const/NETWORK_SUPPLY = "Supply" +var/global/const/NETWORK_YACHT = "Private Catamaran" /datum/map/torch/get_network_access(network) switch(network) diff --git a/maps/torch_fd/torch_shuttles.dm b/maps/torch_fd/torch_shuttles.dm new file mode 100644 index 0000000000000..11096913625bc --- /dev/null +++ b/maps/torch_fd/torch_shuttles.dm @@ -0,0 +1,482 @@ +//Some helpers because so much copypasta for pods +/datum/shuttle/autodock/ferry/escape_pod/torchpod + category = /datum/shuttle/autodock/ferry/escape_pod/torchpod + sound_takeoff = 'sound/effects/rocket.ogg' + sound_landing = 'sound/effects/rocket_backwards.ogg' + warmup_time = 10 + +/obj/shuttle_landmark/escape_pod/start + name = "Docked" + base_turf = /turf/simulated/floor/reinforced + +/obj/shuttle_landmark/escape_pod/transit + name = "In transit" + +/obj/shuttle_landmark/escape_pod/out + name = "Escaped" + +//Pods +#define TORCH_ESCAPE_POD(NUMBER) \ +/datum/shuttle/autodock/ferry/escape_pod/torchpod/escape_pod##NUMBER { \ + shuttle_area = /area/shuttle/escape_pod##NUMBER/station; \ + name = "Escape Pod " + #NUMBER; \ + dock_target = "escape_pod_" + #NUMBER; \ + arming_controller = "escape_pod_"+ #NUMBER +"_berth"; \ + waypoint_station = "escape_pod_"+ #NUMBER +"_start"; \ + landmark_transition = "escape_pod_"+ #NUMBER +"_internim"; \ + waypoint_offsite = "escape_pod_"+ #NUMBER +"_out"; \ +} \ +/obj/shuttle_landmark/escape_pod/start/pod##NUMBER { \ + landmark_tag = "escape_pod_"+ #NUMBER +"_start"; \ + docking_controller = "escape_pod_"+ #NUMBER +"_berth"; \ +} \ +/obj/shuttle_landmark/escape_pod/out/pod##NUMBER { \ + landmark_tag = "escape_pod_"+ #NUMBER +"_internim"; \ +} \ +/obj/shuttle_landmark/escape_pod/transit/pod##NUMBER { \ + landmark_tag = "escape_pod_"+ #NUMBER +"_out"; \ +} + +TORCH_ESCAPE_POD(6) +TORCH_ESCAPE_POD(7) +// TORCH_ESCAPE_POD(8) +TORCH_ESCAPE_POD(9) +TORCH_ESCAPE_POD(10) +TORCH_ESCAPE_POD(11) +TORCH_ESCAPE_POD(12) +TORCH_ESCAPE_POD(13) +TORCH_ESCAPE_POD(15) +TORCH_ESCAPE_POD(16) +TORCH_ESCAPE_POD(17) + +//Petrov + +/datum/shuttle/autodock/ferry/petrov + name = "Petrov" + warmup_time = 10 + dock_target = "petrov_shuttle_airlock" + waypoint_station = "nav_petrov_start" + waypoint_offsite = "nav_petrov_out" + logging_home_tag = "nav_petrov_start" + logging_access = access_petrov_helm + ceiling_type = /turf/simulated/floor/shuttle_ceiling + +/datum/shuttle/autodock/ferry/petrov/New(_name, obj/shuttle_landmark/initial_location) + shuttle_area = subtypesof(/area/shuttle/petrov) + ..() + +/obj/shuttle_landmark/petrov/start + name = "First Deck" + landmark_tag = "nav_petrov_start" + docking_controller = "petrov_shuttle_dock_airlock" + +/obj/shuttle_landmark/petrov/out + name = "Space near the ship" + landmark_tag = "nav_petrov_out" + +//Ninja Shuttle. +/datum/shuttle/autodock/multi/antag/ninja + destination_tags = list( + "nav_ninja_deck1", + "nav_ninja_deck2", + "nav_ninja_deck3", + "nav_ninja_deck4", + "nav_ninja_deck5", + "nav_ninja_hanger", + "nav_away_6", + "nav_derelict_5", + "nav_cluster_6", + "nav_ninja_start", + "nav_lost_supply_base_antag", + "nav_marooned_antag", + "nav_smugglers_antag", + "nav_magshield_antag", + "nav_casino_antag", + "nav_yacht_antag", + "nav_slavers_base_antag" + ) + +/obj/shuttle_landmark/ninja/hanger + name = "West of Hanger Deck" + landmark_tag = "nav_ninja_hanger" + +/obj/shuttle_landmark/ninja/deck1 + name = "South of First Deck" + landmark_tag = "nav_ninja_deck1" + +/obj/shuttle_landmark/ninja/deck2 + name = "Northeast of Second Deck" + landmark_tag = "nav_ninja_deck2" + +/obj/shuttle_landmark/ninja/deck3 + name = "East of Third Deck" + landmark_tag = "nav_ninja_deck3" + +/obj/shuttle_landmark/ninja/deck4 + name = "West of Fourth Deck" + landmark_tag = "nav_ninja_deck4" + +/obj/shuttle_landmark/ninja/deck5 + name = "Southeast of Bridge" + landmark_tag = "nav_ninja_deck5" + +//Merchant +/* +/datum/shuttle/autodock/ferry/merchant + name = "Merchant" + warmup_time = 10 + shuttle_area = /area/shuttle/merchant/home + waypoint_station = "nav_merchant_start" + waypoint_offsite = "nav_merchant_out" + dock_target = "merchant_ship_dock" + +/obj/shuttle_landmark/merchant/start + name = "Merchant Base" + landmark_tag = "nav_merchant_start" + docking_controller = "merchant_station_dock" + +/obj/shuttle_landmark/merchant/out + name = "Docking Bay" + landmark_tag = "nav_merchant_out" + docking_controller = "merchant_shuttle_station_dock" +*/ +//Admin + +/datum/shuttle/autodock/ferry/administration + name = "Administration" + warmup_time = 10 //want some warmup time so people can cancel. + shuttle_area = /area/shuttle/administration/centcom + dock_target = "admin_shuttle" + waypoint_station = "nav_admin_start" + waypoint_offsite = "nav_admin_out" + +/obj/shuttle_landmark/admin/start + name = "Centcom" + landmark_tag = "nav_admin_start" + docking_controller = "admin_shuttle" + base_area = /area/centcom + base_turf = /turf/simulated/floor/plating + +/obj/shuttle_landmark/admin/out + name = "Docking Bay" + landmark_tag = "nav_admin_out" + docking_controller = "admin_shuttle_dock_airlock" + +//Transport +/* +/datum/shuttle/autodock/ferry/centcom + name = "Centcom" + location = 1 + warmup_time = 10 + shuttle_area = /area/shuttle/transport1/centcom + dock_target = "centcom_shuttle" + waypoint_offsite = "nav_ferry_start" + waypoint_station = "nav_ferry_out" + +/obj/shuttle_landmark/ferry/start + name = "Centcom" + landmark_tag = "nav_ferry_start" + docking_controller = "centcom_shuttle_bay" + +/obj/shuttle_landmark/ferry/out + name = "Docking Bay" + landmark_tag = "nav_ferry_out" + docking_controller = "centcom_shuttle_dock_airlock" +*/ +/obj/shuttle_landmark/merc/hanger + name = "Northeast of Hanger Deck" + landmark_tag = "nav_merc_hanger" + +/obj/shuttle_landmark/merc/deck1 + name = "Northeast of First Deck" + landmark_tag = "nav_merc_deck1" + +/obj/shuttle_landmark/merc/deck2 + name = "Southeast of the Second deck" + landmark_tag = "nav_merc_deck2" + +/obj/shuttle_landmark/merc/deck3 + name = "South of Third deck" + landmark_tag = "nav_merc_deck3" + +/obj/shuttle_landmark/merc/deck4 + name = "Northwest of Fourth Deck" + landmark_tag = "nav_merc_deck4" + +/obj/shuttle_landmark/merc/deck5 + name = "East of Bridge" + landmark_tag = "nav_merc_deck5" + +/obj/shuttle_landmark/vox_raider/dock + name = "4th Deck, Aft Starboard Airlock" + landmark_tag = "nav_vox_raider_dock" + +//Skipjack +/datum/shuttle/autodock/multi/antag/skipjack + destination_tags = list( + "nav_skipjack_deck1", + "nav_skipjack_deck2", + "nav_skipjack_deck3", + "nav_skipjack_deck4", + "nav_skipjack_deck5", + "nav_skipjack_hanger", + "nav_away_7", + "nav_derelict_7", + "nav_cluster_7", + "nav_skipjack_dock", + "nav_skipjack_start", + "nav_lost_supply_base_antag", + "nav_marooned_antag", + "nav_smugglers_antag", + "nav_magshield_antag", + "nav_casino_antag", + "nav_yacht_antag", + "nav_slavers_base_antag", + ) + +/obj/shuttle_landmark/skipjack/hanger + name = "North of Hanger Deck" + landmark_tag = "nav_skipjack_hanger" + +/obj/shuttle_landmark/skipjack/deck1 + name = "Northwest of First Deck" + landmark_tag = "nav_skipjack_deck1" + +/obj/shuttle_landmark/skipjack/deck2 + name = "Southwest of the Second deck" + landmark_tag = "nav_skipjack_deck2" + +/obj/shuttle_landmark/skipjack/deck3 + name = "Southeast of Third deck" + landmark_tag = "nav_skipjack_deck3" + +/obj/shuttle_landmark/skipjack/deck4 + name = "Northwest of Fourth Deck" + landmark_tag = "nav_skipjack_deck4" + +/obj/shuttle_landmark/skipjack/deck5 + name = "South of Bridge" + landmark_tag = "nav_skipjack_deck5" + +//NT Rescue Shuttle + +/datum/shuttle/autodock/multi/antag/rescue + destination_tags = list( + "nav_ert_deck1", + "nav_ert_deck2", + "nav_ert_deck3", + "nav_ert_deck4", + "nav_ert_deck5", + "nav_ert_hanger", + "nav_away_4", + "nav_derelict_4", + "nav_cluster_4", + "nav_ert_dock", + "nav_ert_start", + "nav_lost_supply_base_antag", + "nav_marooned_antag", + "nav_smugglers_antag", + "nav_magshield_antag", + "nav_casino_antag", + "nav_yacht_antag", + "nav_slavers_base_antag", + ) + +/obj/shuttle_landmark/ert/hanger + name = "Southeast of Hanger deck" + landmark_tag = "nav_ert_hanger" + +/obj/shuttle_landmark/ert/deck1 + name = "Southwest of Fourth deck" + landmark_tag = "nav_ert_deck1" + +/obj/shuttle_landmark/ert/deck2 + name = "Northwest of Third deck" + landmark_tag = "nav_ert_deck2" + +/obj/shuttle_landmark/ert/deck3 + name = "Northwest of Second deck" + landmark_tag = "nav_ert_deck3" + +/obj/shuttle_landmark/ert/deck4 + name = "Southwest of First Deck" + landmark_tag = "nav_ert_deck4" + +/obj/shuttle_landmark/ert/deck5 + name = "West of Bridge" + landmark_tag = "nav_ert_deck5" + +//SCGMC Assault Pod +/* +/datum/shuttle/autodock/ferry/specops/ert + name = "Special Operations" + warmup_time = 10 + shuttle_area = /area/shuttle/specops/centcom + dock_target = "specops_shuttle_fore" + waypoint_station = "nav_specops_start" + waypoint_offsite = "nav_specops_out" + +/obj/shuttle_landmark/specops/start + name = "Centcom" + landmark_tag = "nav_specops_start" + docking_controller = "specops_shuttle_port" + +/obj/shuttle_landmark/specops/out + name = "Docking Bay" + landmark_tag = "nav_specops_out" + docking_controller = "specops_dock_airlock" +*/ +//Cargo drone + +/datum/shuttle/autodock/ferry/supply/drone + name = "Supply Drone" + location = 1 + warmup_time = 10 + shuttle_area = /area/supply/dock + waypoint_offsite = "nav_cargo_start" + waypoint_station = "nav_cargo_station" + +/obj/shuttle_landmark/supply/centcom + name = "Offsite" + landmark_tag = "nav_cargo_start" + +/obj/shuttle_landmark/supply/station + name = "Hangar" + landmark_tag = "nav_cargo_station" + base_area = /area/quartermaster/hangar + base_turf = /turf/simulated/floor/plating + +/datum/shuttle/autodock/overmap/exploration_shuttle + name = "Charon" + move_time = 60 + shuttle_area = list(/area/exploration_shuttle/cockpit, /area/exploration_shuttle/atmos, /area/exploration_shuttle/power, /area/exploration_shuttle/crew, /area/exploration_shuttle/cargo, /area/exploration_shuttle/airlock, /area/exploration_shuttle/medical, /area/exploration_shuttle/fuel) + dock_target = "charon_shuttle" + current_location = "nav_hangar_charon" + landmark_transition = "nav_transit_charon" + range = 1 + fuel_consumption = 4 + logging_home_tag = "nav_hangar_charon" + logging_access = access_expedition_shuttle_helm + ceiling_type = /turf/simulated/floor/shuttle_ceiling/torch + +/obj/shuttle_landmark/torch/hangar/exploration_shuttle + name = "Charon Hangar" + landmark_tag = "nav_hangar_charon" + base_area = /area/quartermaster/hangar + base_turf = /turf/simulated/floor/plating + +/obj/shuttle_landmark/torch/deck1/exploration_shuttle + name = "Space near Forth Deck" + landmark_tag = "nav_deck1_charon" + +/obj/shuttle_landmark/torch/deck2/exploration_shuttle + name = "Space near Third Deck" + landmark_tag = "nav_deck2_charon" + +/obj/shuttle_landmark/torch/deck3/exploration_shuttle + name = "Space near Second Deck" + landmark_tag = "nav_deck3_charon" + +/obj/shuttle_landmark/torch/deck4/exploration_shuttle + name = "Space near First Deck" + landmark_tag = "nav_deck4_charon" + +/obj/shuttle_landmark/torch/deck5/exploration_shuttle + name = "Space near Bridge" + landmark_tag = "nav_bridge_charon" + +/obj/shuttle_landmark/transit/torch/exploration_shuttle + name = "In transit" + landmark_tag = "nav_transit_charon" + +/datum/shuttle/autodock/overmap/guppy + name = "Guppy" + warmup_time = 5 + move_time = 20 + shuttle_area = /area/guppy_hangar/start + dock_target ="guppy_shuttle" + current_location = "nav_hangar_guppy" + landmark_transition = "nav_transit_guppy" + sound_takeoff = 'sound/effects/rocket.ogg' + sound_landing = 'sound/effects/rocket_backwards.ogg' + fuel_consumption = 2 + logging_home_tag = "nav_hangar_guppy" + logging_access = access_guppy_helm + skill_needed = SKILL_UNSKILLED + ceiling_type = /turf/simulated/floor/shuttle_ceiling/torch + +/obj/shuttle_landmark/torch/hangar/guppy + name = "Guppy Hangar" + landmark_tag = "nav_hangar_guppy" + base_area = /area/quartermaster/hangar + base_turf = /turf/simulated/floor/plating + +/obj/shuttle_landmark/torch/deck1/guppy + name = "Space near Forth Deck" + landmark_tag = "nav_deck1_guppy" + +/obj/shuttle_landmark/torch/deck2/guppy + name = "Space near Third Deck" + landmark_tag = "nav_deck2_guppy" + +/obj/shuttle_landmark/torch/deck3/guppy + name = "Space near Second Deck" + landmark_tag = "nav_deck3_guppy" + +/obj/shuttle_landmark/torch/deck4/guppy + name = "Space near First Deck" + landmark_tag = "nav_deck4_guppy" + +/obj/shuttle_landmark/torch/deck5/guppy + name = "Space near Bridge" + landmark_tag = "nav_bridge_guppy" + +/obj/shuttle_landmark/transit/torch/guppy + name = "In transit" + landmark_tag = "nav_transit_guppy" + +/datum/shuttle/autodock/overmap/aquila + name = "Aquila" + move_time = 50 + shuttle_area = list(/area/aquila/cockpit, /area/aquila/power, /area/aquila/storage, /area/aquila/suits, /area/aquila/air, /area/aquila/crew, /area/aquila/medical, /area/aquila/airlock) + current_location = "nav_hangar_aquila" + landmark_transition = "nav_transit_aquila" + dock_target = "aquila_shuttle" + range = 2 + logging_home_tag = "nav_hangar_aquila" + logging_access = access_aquila_helm + ceiling_type = /turf/simulated/floor/shuttle_ceiling/torch + +/obj/shuttle_landmark/torch/hangar/aquila + name = "Aquila Hangar" + landmark_tag = "nav_hangar_aquila" + docking_controller = "aquila_shuttle_dock_airlock" + base_turf = /turf/simulated/floor/reinforced + +/obj/shuttle_landmark/torch/deck1/aquila + name = "Space near Forth Deck" + landmark_tag = "nav_deck1_aquila" + +/obj/shuttle_landmark/torch/deck2/aquila + name = "Space near Third Deck" + landmark_tag = "nav_deck2_aquila" + +/obj/shuttle_landmark/torch/deck3/aquila + name = "Space near Second Deck" + landmark_tag = "nav_deck3_aquila" + +/obj/shuttle_landmark/torch/deck4/aquila + name = "Space near First Deck" + landmark_tag = "nav_deck4_aquila" + +/obj/shuttle_landmark/torch/deck5/aquila + name = "Space near Bridge" + landmark_tag = "nav_bridge_aquila" + +/obj/shuttle_landmark/transit/torch/aquila + name = "In transit" + landmark_tag = "nav_transit_aquila" + +//Makes the deck management program use hangar access +/datum/nano_module/deck_management + default_access = list(access_hangar, access_cargo, access_heads) diff --git a/maps/torch_fd/z7_admin.dmm b/maps/torch_fd/z7_admin.dmm index 6c4d497801f10..3e81be3a1a65e 100644 --- a/maps/torch_fd/z7_admin.dmm +++ b/maps/torch_fd/z7_admin.dmm @@ -628,7 +628,7 @@ "avn" = (/obj/structure/bed/chair/shuttle,/obj/structure/sign/warning/nosmoking_1{pixel_y = 24},/obj/floor_decal/corner/blue{dir = 10},/turf/simulated/floor/tiled/dark,/area/centcom/ferry) "avp" = (/obj/structure/table/reinforced,/obj/item/storage/firstaid/surgery,/obj/item/reagent_containers/glass/bottle/stoxin,/obj/item/reagent_containers/syringe,/obj/item/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/reagent_containers/syringe/antiviral,/obj/item/reagent_containers/syringe/antiviral,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/reagent_containers/spray/sterilizine,/obj/item/reagent_containers/spray/cleaner,/obj/structure/closet/medical_wall{pixel_x = -32},/obj/item/storage/bag/cash/infinite,/turf/simulated/floor/shuttle/white,/area/shuttle/administration/centcom) "avq" = (/obj/machinery/vending/cola{dir = 4},/turf/simulated/floor/tiled/monotile,/area/centcom/hallway) -"avs" = (/obj/machinery/door/airlock/centcom{name = "General Access"},/turf/unsimulated/floor/plating,/area/shuttle/administration/centcom) +"avs" = (/obj/machinery/door/airlock/centcom{name = "General Access"; id_tag = "admin_shuttle_inner"},/turf/unsimulated/floor/plating,/area/shuttle/administration/centcom) "avt" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/turf/simulated/floor/shuttle/red,/area/shuttle/administration/centcom) "avu" = (/obj/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/centcom/hallway) "avv" = (/turf/unsimulated/wall{color = "black"; name = "void"},/area/fd/end) @@ -648,7 +648,7 @@ "avO" = (/obj/floor_decal/borderfloorblack{dir = 8},/obj/floor_decal/corner/green{dir = 6},/turf/simulated/floor/tiled/steel_grid,/area/centcom/hallway/adherent) "avP" = (/obj/structure/table/reinforced,/turf/simulated/floor/shuttle/black,/area/shuttle/administration/centcom) "avQ" = (/obj/structure/table/reinforced,/obj/item/deck/cards,/turf/simulated/floor/wood/walnut,/area/shuttle/administration/centcom) -"avS" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "closed"; id_tag = "admin_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"},/obj/shuttle_landmark/admin/start,/turf/unsimulated/floor/plating,/area/shuttle/administration/centcom) +"avS" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "closed"; id_tag = "admin_shuttle_outer"; locked = 1; name = "Shuttle Hatch"},/obj/shuttle_landmark/admin/start,/turf/unsimulated/floor/plating,/area/shuttle/administration/centcom) "avT" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) "avU" = (/obj/machinery/light/small{dir = 8},/obj/floor_decal/corner/blue{dir = 9},/turf/simulated/floor/tiled,/area/centcom/arrivals/docks) "avV" = (/turf/simulated/wall/invincible/prepainted,/area/centcom/control) @@ -1926,7 +1926,7 @@ "gZJ" = (/obj/floor_decal/industrial/warning/fulltile,/turf/simulated/floor/tiled/techfloor,/area/centcom/engineering/reactor) "haT" = (/obj/floor_decal/spline/plain/black{dir = 9},/turf/simulated/floor/shuttle/black,/area/space) "hbm" = (/obj/structure/table/woodentable/walnut,/obj/floor_decal/spline/fancy/wood,/turf/simulated/floor/wood/walnut,/area/centcom/control/command) -"hbJ" = (/obj/shuttle_landmark/ferry/start,/turf/space,/area/space) +"hbJ" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{cycle_to_external_air = 1; dir = 8; frequency = 1331; id_tag = "admin_shuttle"; pixel_x = 26; req_access = list("ACCESS_CENT_GENERAL")},/turf/simulated/floor/shuttle/red,/area/shuttle/administration/centcom) "hcj" = (/obj/structure/hygiene/sink{dir = 4; pixel_x = 11; pixel_y = 5},/obj/item/storage/mirror{pixel_x = 25},/obj/floor_decal/borderfloorwhite{dir = 6},/obj/floor_decal/corner/green{dir = 1},/turf/simulated/floor/tiled/old_tile,/area/fd/end) "hel" = (/obj/floor_decal/corner/black/border{dir = 4},/turf/simulated/floor/tiled,/area/centcom/beauro) "hep" = (/obj/structure/table/steel_reinforced,/obj/machinery/photocopier/faxmachine{department = "Observatory - Command"},/obj/machinery/light/spot{dir = 8},/turf/simulated/floor/tiled/dark/monotile,/area/centcom/control) @@ -3051,7 +3051,6 @@ "uQe" = (/obj/floor_decal/corner/paleblue/three_quarters{dir = 8},/turf/simulated/floor/tiled/white,/area/centcom/hallway) "uRe" = (/obj/floor_decal/corner/red/three_quarters,/obj/machinery/light/small,/turf/simulated/floor/tiled/techfloor,/area/space) "uRT" = (/obj/structure/window/boron_reinforced{dir = 8},/obj/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/blackgrid,/area/space) -"uSb" = (/obj/shuttle_landmark/specops/start,/turf/space,/area/space) "uSI" = (/obj/floor_decal/scglogo{dir = 8; icon_state = "top-left"},/turf/simulated/floor/tiled/dark,/area/centcom/control/conference) "uTQ" = (/obj/structure/sign/warning/radioactive{pixel_y = 32},/obj/structure/table/steel_reinforced,/obj/item/paper_bin,/obj/item/pen/multi,/turf/simulated/floor/tiled/techfloor/grid,/area/centcom/engineering/control) "uUD" = (/obj/machinery/light/small,/turf/unsimulated/floor{icon = 'icons/turf/flooring/tiles.dmi'; icon_state = "steel_monotile"},/area/centcom/arrivals/docks) @@ -3383,7 +3382,7 @@ aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaa aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaatOvbwpgYatObTsmFNeGaatOtxwpgYatOlaktBmbTsatOxoaatOaiyaiyaiyaiyaiyaiyaiyatOqfjaLFatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaatOvbwpgYatOarxaiypgYlIVtxwpgYlIVtxwaiyxqXatOxoaatOaiyaiyaiyaiyaiyaiyaiyaLLqfjaLFaLLaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaatOvbwpgYatObTsezzeGaatOtxwpgYatOlakftabTsatOxoaatOaiyaiyaiyaiyaiyaiyaiyatOqfjaLFatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab -aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabhbJaabuSbaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaatOatOhpYatOatOatOatOatOatOatOatOatOatOatOatOxoaatOaiyaiyaiyaiyaiyaiyaiyatOqfjaLFatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab +aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaatOatOhpYatOatOatOatOatOatOatOatOatOatOatOatOxoaatOaiyaiyaiyaiyaiyaiyaiyatOqfjaLFatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaatOaiyaiyaiyaiyaiyaiyaiyatOqfjaLFatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaatOaiyaiyaiyaiyaiyaiyaiyatOqfjaLFatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOaiyaiyaiyaiyaiyaiyaiyatOxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabxoaxoaatOaiyaiyaiyaiyaiyaiyaiyatOqfjaLFatOaiyaiyaiyaiyaiyaiyaiyatOatOatOatOatOatOatOatOatOatOatOatOatOatOatOatOatOxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab @@ -3454,7 +3453,7 @@ aabaabaabaabaabaabaabaabaabaabaabaabaabaabaYepTGpTGpTGpTGaabaabaabaabaabaabaabaa aabaabaabaabaabaabaabaabaabaabaabaabaabaabaYepTGpTGpTGpTGaabaabaabaabaabaabaabaabaabavEavEaulaulaulaulaulaulaulaulatdatdaulaulaulaulaulayratfrUfaDDaHkaabaabaabaCzaHochSaxyatOatOatOatOatOxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaavxlcQaIbaHuatRauwauzjlAauzauzauwavxxoaxoaxoapKupKupKupKupKupKuxoaxoaaxwqgLiKxuAyaxwaGolKZkZLvMJrtortorFxaxwaxwvPdaxwaxwoLSnOiwJGnOioLSnOiwJGnOioLSbNYgYdgpOwenaEeaEeaEeaEeaEeaEeaEeaEeaEeaEewenxoaxoaxoanaolaElaEqVpnaonaoaxFqYDnaowyCpbzsYRqlznaoxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabaabaabaYepTGpTGpTGpTGaabaabaabaabaabaabaabaabaabaabatBatCavaavbavcavdaveavfaulatqatdaulasZasZasZaulaulaulaulaulasSaabaabaabaCzwMMaDmaxyxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaavxatYaIbaHuatRauoauoauoavBauoauoavxxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaxwaxwaxwaxwaxwayqlKZeyThQRnyWhQRpqTaxwuAypzGmMhaxwoLSoLSrQroLSoLSoLSrQroLSoLSuGSjyKnTTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTkWZowLqAvaGTaGTnaonaonaonaoxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabaabpTGaYepTGpTGpTGpTGaabaabaabaabaabaabaabaabaabaabatUatCatdatdatdatdatdatdaDlatdatdaDlatdatdatdaulaHXoDsaGEaGEaHkaabaabaabaCzaHochSaxyxoaxoaxoabRHbRHbRHbRHbRHbRHbRHxoaxoaxoaxoaxoaxoaavxlcQaIbikkavxatRauoauoauoauoatRavxxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaxwfNAdAcxgEaxwaGolKZeyTxGzxGzhQRekjaxwuFsuFshbmaxwuXMugKcCZcCZcCZcCZcCZugKcCZehOvVSfqpcCZugKcCZcCZcCZajycCZcCZcCZugKcCZcCZcCZugKcCZcCZehOvVSnKHvVSvVSvVSvVSvVSnKHaGTxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab -aabaabaabaabaabaabaabaabaabaabaabaabaabpTGaYepTGpTGpTGpTGpTGaabaabaabaabaabaabaabaabavEavEavEavEaulaulatdatdatdaulatdatdaulatqatdatdaGsaHXaHXdSbbhgaHkaabaabaabaxypUCbhbaxybRHbRHbRHbRHjsEazWtwoqQUwjtbRHbRHbRHaGTaGTaGTaGTavxavxaHYavxavxavxavxavxavxavxavxavxaGTaGTaGTaGTaGTaGTaGTaGTaGTxoaxoaaxwjwaiKxpzGvPdaGolKZeyTxGzaFbxGzxGzaxwfBKawmdEDaxwvftmvSgeCgeCgeCgeCgeCgeCgeCozZvVSmvSgeCgeCgeCgeCgeCpEcgeCgeCgeCgeCgeCgeCgeCgeCgeCgeCozZvVSatPatPatPwqHaLXaLXaLXaGTxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab +aabaabaabaabaabaabaabaabaabaabaabaabaabpTGaYepTGpTGpTGpTGpTGaabaabaabaabaabaabaabaabavEavEavEavEaulaulatdatdatdaulatdhbJaulatqatdatdaGsaHXaHXdSbbhgaHkaabaabaabaxypUCbhbaxybRHbRHbRHbRHjsEazWtwoqQUwjtbRHbRHbRHaGTaGTaGTaGTavxavxaHYavxavxavxavxavxavxavxavxavxaGTaGTaGTaGTaGTaGTaGTaGTaGTxoaxoaaxwjwaiKxpzGvPdaGolKZeyTxGzaFbxGzxGzaxwfBKawmdEDaxwvftmvSgeCgeCgeCgeCgeCgeCgeCozZvVSmvSgeCgeCgeCgeCgeCpEcgeCgeCgeCgeCgeCgeCgeCgeCgeCgeCozZvVSatPatPatPwqHaLXaLXaLXaGTxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabaabpTGaYepTGpTGpTGpTGpTGaabaabaabaabaabaabaabaabaabaabaabatBatCatdatdatdatdaulaIhavsaulatdatdatdaulaHyaHXaHXauIaHkaabaabaabaCzaHochSaxybRHbpbbxbbRHazCaHraHraHrautbRHavHjTcaPFaPFaPFaPFaJAaPFaPFaPFaPFaPFaJAaPFaPFaPFmBhaGTxcuxcuxcukvUwhomCQaHwaILaGTxoaxoaaxwpSfiKxuAyaxwaGolKZaxwaxwaxwaxwaxwaxwaxwaxwaxwaxwvftkiAavVavVavVavVavVibneCKvftvVSkiAeCKewqavVavVavVavVavVavVavVavVavVavVavVavVavVavVvftatPaGTaGTeacaGTeacjSHjSHaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabaabaabaabpTGpTGaYepTGpTGpTGpTGpTGpTGaabaabaabaabaabaabaabaabaabaabatUatCavtaunavKavLaulcESerPaulauiaxzauiasSasSasSaHkaHkaHkaabaabaabaCzwMMaDmaxybRHkBtaBObRHaIXaHraxfateayXbRHavHjTcavlavlavlatPatPatPavlavlavlatPatPatPavlavlauVaGTxcuxcuxcuxcuxcuxcuxcuxcuaGTxoaxoaaxwaxwaxwaxwaxwaGolKZaxwmMhniBwOmaxwuFvhgoshdgjeaGTnqtxFXavVavVvLnmNcavVavVavVbEbawbbEbavVavVavVmNcvLnavVavVawyawzawAawBaaeavVatvatvavVvftatPaGTlfCfbfehhwdbiFubPYlOIakUcBHlCQcBHrbbhQOsJFiJTaGTxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab aabaabaabaabaabaabaabaabaabpTGpTGpTGpTGpTGaYepTGpTGpTGpTGpTGpTGpTGaabaabaabaabaabaabaabaabavEavEasSasSasSasSasSasShIzavSxDjasSasSasSdQQmvtaabaabaabaabaabaabaabaCzaHochSaxybRHaBhaHrbRHaGDaHJaHBaEHqWGbRHavHjTcgYdgYdgYdgYdgYdgYdgYdgYdgYdgYdgYdgYdawvavlauVaGTxcuxcuxcuxcuxcuxcuxcuxcuaGTaGTaGTaGTaGTaGThZQmVYprflKZvPdpzGvwsvrSaxwuXMcCZcCZcCZcCZehOkiAavVeXWusKvbMhSvaGcuvpayvayvayvayvaGcubacMGpIEhNAavVernmpGawGawGawGavVatvatvavVvftatPeacjYsuQehGQhGQgrfnaIhGQhGQgpxpZlejfpZlveFveFprWaGTxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaxoaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaab diff --git a/mods/_fd/_maps/sfv_dropship/delman.dm b/mods/_fd/_maps/sfv_dropship/delman.dm index 551bece033b42..9ecf3036c29aa 100644 --- a/mods/_fd/_maps/sfv_dropship/delman.dm +++ b/mods/_fd/_maps/sfv_dropship/delman.dm @@ -5,15 +5,8 @@ name = "PM-23 \"Delman\" Dropship" id = "awaysite_delman" description = "Army dropship that can bring to planet up to Platoon(42) and 4 Vehicle." - mappaths = list("mods/_fd/_maps/sfv_dropship/delman.dm") - area_usage_test_exempted_areas = list( - /area/ship/delman, - /area/ship/delman/central, - /area/ship/delman/rightwing, - /area/ship/delman/leftwing, - /area/ship/delman/cockpit, - /area/ship/delman/engibay - ) + mappaths = list("mods/_fd/_maps/sfv_dropship/delman.dmm") + area_usage_test_exempted_areas = list(/area/ship/delman) spawn_cost = 1000 player_cost = 4 shuttles_to_initialise = list(/datum/shuttle/autodock/overmap/delman) diff --git a/mods/_fd/_maps/snow_cage/code/snow_cage.dm b/mods/_fd/_maps/snow_cage/code/snow_cage.dm index bc0c4c70acb1f..d9dd293322d7c 100644 --- a/mods/_fd/_maps/snow_cage/code/snow_cage.dm +++ b/mods/_fd/_maps/snow_cage/code/snow_cage.dm @@ -32,7 +32,7 @@ description = "An arctic planet with a small number of signatures on the surface. Scans indicate artificial structures under the planet's surface." prefix = "mods/_fd/_maps/snow_cage/maps/" suffixes = list("snow_cage-1.dmm","snow_cage-2.dmm","snow_cage-3.dmm","snow_cage-4.dmm") - area_usage_test_exempted_root_areas = list(/area/splanet/) + area_usage_test_exempted_root_areas = list(/area/splanet) apc_test_exempt_areas = list( /area/splanet/outdoors = NO_SCRUBBER|NO_VENT|NO_APC, /area/splanet/underground = NO_SCRUBBER|NO_VENT|NO_APC diff --git a/mods/_fd/combat_stances/code/item.dm b/mods/_fd/combat_stances/code/item.dm index 02955f819d673..e988f2ec68d82 100644 --- a/mods/_fd/combat_stances/code/item.dm +++ b/mods/_fd/combat_stances/code/item.dm @@ -21,7 +21,7 @@ var/obj/item/melee/I - if(melee_strikes && !istype(I, /obj/item/melee/energy/)) + if(melee_strikes && !istype(I, /obj/item/melee/energy)) swap_stances(user) /obj/item/proc/swap_stances(mob/user) diff --git a/mods/_fd/expanded_traders/_expanded_traders.dme b/mods/_fd/expanded_traders/_expanded_traders.dme index 8433bd2cc38be..9f0ef67e2b300 100644 --- a/mods/_fd/expanded_traders/_expanded_traders.dme +++ b/mods/_fd/expanded_traders/_expanded_traders.dme @@ -4,6 +4,7 @@ #include "_expanded_traders.dm" #include "code/ai.dm" +#include "code/trading_locations.dm" #include "code/preset_console.dm" diff --git a/mods/_fd/expanded_traders/code/trading_locations.dm b/mods/_fd/expanded_traders/code/trading_locations.dm new file mode 100644 index 0000000000000..f9aafa5714cbf --- /dev/null +++ b/mods/_fd/expanded_traders/code/trading_locations.dm @@ -0,0 +1,19 @@ +/obj/overmap/trading + name = "station" + desc = "A trading station." + icon = 'mods/_fd/fd_assets/icons/overmap.dmi' + icon_state = "trading_sector" + scannable = TRUE + requires_contact = TRUE // Whether or not the effect must be identified by ship sensors before being seen. + instant_contact = TRUE // Do we instantly identify ourselves to any ship in sensors range? + plane = 4 + + var/datum/trader/trader_merchant_datum + +/obj/overmap/trading/on_update_icon() + return + +/obj/overmap/trading/ship + name = "ship" + desc = "A trading ship." + icon_state = "trading_ship" diff --git a/mods/_fd/fd_assets/_fd_assets.dme b/mods/_fd/fd_assets/_fd_assets.dme index b57c50f53899d..1ddcbb42c55be 100644 --- a/mods/_fd/fd_assets/_fd_assets.dme +++ b/mods/_fd/fd_assets/_fd_assets.dme @@ -18,6 +18,7 @@ #include "code/machinery/turret.dm" #include "code/mobs/mobs.dm" +#include "code/mobs/pureevil.dm" #include "code/obj/items/encryption_key_boxes.dm" #include "code/obj/items/firstaid_indiv.dm" diff --git a/mods/_fd/fd_assets/code/mobs/pureevil.dm b/mods/_fd/fd_assets/code/mobs/pureevil.dm new file mode 100644 index 0000000000000..1f3fa4ce2d510 --- /dev/null +++ b/mods/_fd/fd_assets/code/mobs/pureevil.dm @@ -0,0 +1,401 @@ +/mob/living/simple_animal/hostile/boss/prime_soul + name = "Andrey Surov" + desc = "run" + icon = 'mods/_fd/fd_assets/icons/animals/prime_soul.dmi' + icon_state = "body" + icon_living = "body" + icon_dead = "body" + response_help = "tries to poke" + response_disarm = "shoves" + response_harm = "hits" + speed = 4 + movement_cooldown = 0 + maxHealth = 1000 + health = 1000 + harm_intent_damage = 5 + can_escape = TRUE + a_intent = I_HURT + natural_weapon = /obj/item/natural_weapon/punch/minos + pry_time = 4 SECONDS + taser_kill = 0 + melee_attack_delay = 2.5 + unsuitable_atmos_damage = 0 + faction = "boss" + status_flags = CANPUSH + does_spin = FALSE + + ai_holder = /datum/ai_holder/simple_animal/prime_soul + + var/seen = FALSE + var/attacking = TRUE + + var/stamina = 6 + var/max_stamina = 6 + + var/phase_two = FALSE + var/attack_cooldown = 0 + var/stamina_recharge = 0 + + var/datum/sound_token/boss_theme + var/sound_id = "minos" + +/mob/living/simple_animal/hostile/boss/prime_soul/proc/meet_player(mob/player) + face_atom(player) + anchored = TRUE + playsound(src, 'mods/_fd/fd_assets/sounds/prime_soul/Mp_intro2.ogg', 60, 0, extrarange = 13, falloff = 4) + playsound(src, 'mods/_fd/fd_assets/sounds/prime_soul/intro_music.ogg', 60, 0, extrarange = 13, falloff = 4) + ISay("Ah... Free... At last.") + sleep(52) + dir = turn(dir,90) + sleep(15) + ISay("O Gabriel... Now dawns thy reckoning") + sleep(50) + dir = turn(dir,-180) + sleep(17) + ISay("And thy gore shall GLISTEN before the temples of MAN!") + sleep(70) + face_atom(player) + sleep(14) + ISay("Creature of steel? My gratitude upon thee for my freedom.") + sleep(86) + face_atom(player) + ISay("But the crimes thy kind have committed against humanity are NOT forgotten!") + sleep(100) + face_atom(player) + ISay("And thy punishment... IS DEATH!") + sleep(54) + anchored = FALSE + face_atom(player) + boss_theme = GLOB.sound_player.PlayLoopingSound(src, sound_id, 'mods/_fd/fd_assets/sounds/prime_soul/Heaven_Pierce_Her-ORDER.ogg', volume = 60, range = 20, falloff = 4, prefer_mute = TRUE) + ai_holder.hostile = TRUE + attacking = FALSE + +///////////////////////* ATTACK TYPES START */////////////////////// + +/mob/living/simple_animal/hostile/boss/prime_soul/proc/PREPARE_THYSELF(atom/movable/target) + playsound(src, pick('mods/_fd/fd_assets/sounds/prime_soul/Mp_prepare.ogg', 'mods/_fd/fd_assets/sounds/prime_soul/Mp_prepare2.ogg'), 80, 0, extrarange = 13, falloff = 4) + ai_holder.set_busy(TRUE) + natural_weapon = /obj/item/natural_weapon/kick + do_windup_animation(target,10) + sleep(10) + forceMove(get_step(target,get_dir(target,src))) + IAttack(target) + do_windup_animation(target,8) + sleep(8) + forceMove(get_step(target,get_dir(target,src))) + IAttack(target) + do_windup_animation(target,8) + sleep(8) + switch(rand(1,2)) + if(1) + natural_weapon = /obj/item/natural_weapon/punch/minos/uppercut + forceMove(get_step(target,get_dir(target,src))) + if(IAttack(target)) + sleep(4) + if(get_dist(src,target) < 2) + target.throw_at(get_step(target,get_dir(src,target)), 3, 1) + if(2) + if(get_dist(src,target) > 2) + DIE(target) + else + CRUSH(target) + natural_weapon = initial(natural_weapon) + ai_holder.forget_path() + ai_holder.set_busy(FALSE) + attacking = FALSE + +/mob/living/simple_animal/hostile/boss/prime_soul/proc/THY_END_IS_NOW(atom/movable/target) + playsound(src, pick('mods/_fd/fd_assets/sounds/prime_soul/Mp_thyend.ogg', 'mods/_fd/fd_assets/sounds/prime_soul/Mp_thyend2.ogg'), 80, 0, extrarange = 13, falloff = 4) + ai_holder.set_busy(TRUE) + natural_weapon = /obj/item/natural_weapon/punch/minos/snake + do_windup_animation(target,7) + sleep(7) + forceMove(get_step(target,get_dir(target,src))) + IAttack(target) + do_windup_animation(target,7) + sleep(7) + forceMove(get_step(target,get_dir(target,src))) + IAttack(target) + do_windup_animation(target,7) + sleep(7) + forceMove(get_step(target,get_dir(target,src))) + IAttack(target) + do_windup_animation(target,7) + sleep(7) + forceMove(get_step(target,get_dir(target,src))) + IAttack(target) + natural_weapon = initial(natural_weapon) + sleep(10) + ai_holder.forget_path() + ai_holder.set_busy(FALSE) + attacking = FALSE + +/mob/living/simple_animal/hostile/boss/prime_soul/proc/DIE(atom/movable/target) + ai_holder.set_busy(TRUE) + sleep(5) + density = FALSE + forceMove(get_step(target,get_dir(target,src))) + do_crush_animation(10, 160) + sleep(6) + playsound(src, pick('mods/_fd/fd_assets/sounds/prime_soul/Mp_die.ogg', 'mods/_fd/fd_assets/sounds/prime_soul/Mp_die2.ogg'), 80, 0, extrarange = 13, falloff = 4) + ISay("DIE!") + sleep(4) + explosion(get_turf(src), 3, EX_ACT_LIGHT) + density = TRUE + sleep(10) + ai_holder.forget_path() + ai_holder.set_busy(FALSE) + attacking = FALSE + +/mob/living/simple_animal/hostile/boss/prime_soul/proc/CRUSH(atom/movable/target) + ai_holder.set_busy(TRUE) + density = FALSE + do_crush_animation(10, 160) + sleep(6) + playsound(src, 'mods/_fd/fd_assets/sounds/prime_soul/Mp_crush.ogg', 80, 0, extrarange = 17, falloff = 4) + ISay("CRUSH!") + sleep(4) + explosion(get_turf(src), 3, EX_ACT_LIGHT) + density = TRUE + sleep(10) + ai_holder.forget_path() + ai_holder.set_busy(FALSE) + attacking = FALSE + +/mob/living/simple_animal/hostile/boss/prime_soul/proc/JUDGEMENT(atom/movable/target) + playsound(src, pick('mods/_fd/fd_assets/sounds/prime_soul/Mp_judgement.ogg', 'mods/_fd/fd_assets/sounds/prime_soul/Mp_judgement2.ogg'), 80, 0, extrarange = 13, falloff = 4) + ai_holder.set_busy(TRUE) + do_windup_animation(target,10) + sleep(10) + var/rotation_angle + switch(get_dir(src, target)) + if(WEST) + rotation_angle = 90 + if(NORTHWEST) + rotation_angle = 90 + if(SOUTHWEST) + rotation_angle = 90 + if(EAST) + rotation_angle = -90 + if(NORTHEAST) + rotation_angle = -90 + if(SOUTHEAST) + rotation_angle = -90 + if(NORTH) + rotation_angle = 180 + else + rotation_angle = 0 + var/matrix/dropckick = matrix(transform).Update(rotation = rotation_angle) + animate(src, transform = dropckick, time = 2) + throw_at(target, get_dist(src,target), get_dist(src,target) / 6) + face_atom(target) + sleep(6) + anchored = TRUE + explosion(get_step(src,dir), 3, EX_ACT_LIGHT) + anchored = FALSE + sleep(2) + dropckick = matrix(transform).Update(rotation = -rotation_angle) + animate(src, transform = dropckick, time = 2) + sleep(8) + ai_holder.forget_path() + ai_holder.set_busy(FALSE) + attacking = FALSE + +///////////////////////* ATTACK TYPES END */////////////////////// + +/mob/living/simple_animal/hostile/boss/prime_soul/Life() + ..() +// var/datum/ai_holder/simple_animal/prime_soul/minos_holder = ai_holder + var/target = ai_holder.target + + if(!seen) + for(var/mob/living/L in orange(5,src)) + if(L.key && L.client) + seen = TRUE + meet_player(L) + break + + if(!attacking) +// if(attack_cooldown >= 1) + var/i = 0 + while(i < 20) + if(stamina <= 0 || !target || i >= 19) + attacking = FALSE + break + i++ + attack_cooldown = 0 + attacking = TRUE + var/pick_attack = pick("PREPARE THYSELF!", "THY END IS NOW!", "DIE!", "JUDGEMENT!") + switch(pick_attack) + if("PREPARE THYSELF!") + if(stamina - 3 < 0) + continue + stamina-=3 + ISay(pick_attack) + PREPARE_THYSELF(target) + break + if("THY END IS NOW!") + if(stamina - 2 < 0) + continue + stamina-=2 + ISay(pick_attack) + THY_END_IS_NOW(target) + break + if("DIE!") + if(stamina - 1 < 0) + continue + stamina-=1 + if(get_dist(src, target) > 2) + DIE(target) + else + CRUSH(target) + break + if("JUDGEMENT!") + if(stamina - 2 < 0) + continue + stamina-=2 + ISay(pick_attack) + JUDGEMENT(target) + break + else + ISay("Huh?..") + continue // huh??? +// else +// attack_cooldown++ + + if(stamina <= 0) + if(health < maxHealth / 2 && !phase_two) + playsound(src, 'mods/_fd/fd_assets/sounds/prime_soul/Mp_weak.ogg', 90, 0, extrarange = 13, falloff = 4) + ISay("WEAK!") + max_stamina = 12 + phase_two = TRUE + + if(stamina_recharge >= 3) + stamina = max_stamina + stamina_recharge = 0 + + else + stamina_recharge++ + +/mob/living/simple_animal/hostile/boss/prime_soul/New() + ..() + +/mob/living/simple_animal/hostile/boss/prime_soul/death(gibbed, deathmessage, show_dead_message) + if(gibbed) + return + anchored = TRUE + deathscene() + ..(gibbed, deathmessage, show_dead_message) + set_light(0) + qdel(src) + +/mob/living/simple_animal/hostile/boss/prime_soul/proc/deathscene() + ai_holder.set_busy(TRUE) + attacking = TRUE + QDEL_NULL(boss_theme) + visible_emote("screams") + playsound(src, 'mods/_fd/fd_assets/sounds/prime_soul/Mp_outro.ogg', 75, 0, extrarange = 13, falloff = 4) + sleep(40) + ISay("Forgive me, my children, for I have failed to bring you salvation") + sleep(70) + ISay("From this cold, dark world...") + sleep(50) + visible_emote("screams even louder") + do_crush_animation(80, 60) + playsound(src, 'mods/_fd/fd_assets/sounds/prime_soul/Pinos_death_scream.ogg', 100, 0, extrarange = 13, falloff = 4) + set_light(1, 20, 25, 2, l_color = "#f2feff") + sleep(55) + explosion(get_turf(src), 8, EX_ACT_HEAVY) + +// Это - костыль который спасает от кучи жалоб и, технически(?) проблем с смертью +// С чем связано? DEATH имеет should_not_sleep из-за очереди в удалении. +// В случае если не сработает и это вызовет кучу багов - вы знаете что резать :3 + +/mob/living/simple_animal/hostile/boss/prime_soul/Destroy() + QDEL_NULL(boss_theme) + . = ..() + +/mob/living/simple_animal/hostile/boss/prime_soul/Process_Spacemove() + return 1 + + +/mob/living/simple_animal/hostile/boss/prime_soul/do_attack(atom/A, turf/T) + face_atom(A) + var/missed = FALSE + if (get_dist(src, A) > 1 || (get_dir(src,A) != 0 && get_dir(src,A) != src.dir && get_dir(src,A) != turn(src.dir,45) && get_dir(src,A) != turn(src.dir,-45))) + missed = TRUE + + if(missed) // Most likely we have a slow attack and they dodged it or we somehow got moved. + playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1) + visible_message(SPAN_WARNING("\The [src] misses their attack.")) + return FALSE + + var/obj/item/natural_weapon/weapon = get_natural_weapon() + + if (weapon.resolve_attackby(A, src)) + apply_melee_effects(A) + else if(istype(A,/mob/living/simple_animal)) //костыль куз я так и не смог разобраться почему оно не хочет резолвить атаку на симплмобов :P + apply_melee_effects(A) + + return TRUE + +/mob/living/simple_animal/hostile/boss/prime_soul/melee_pre_animation(atom/A) + if(attacking) + return + ..() + +/mob/living/simple_animal/hostile/boss/prime_soul/ex_act() + return + +/datum/ai_holder/simple_animal/prime_soul + intelligence_level = AI_SMART + retaliate = TRUE // The majority of smart mobs will fight back. + hostile = FALSE + use_astar = TRUE + returns_home = TRUE + home_low_priority = TRUE + wander = FALSE + vision_range = 20 + destructive = FALSE + mauling = TRUE + can_breakthrough = TRUE + violent_breakthrough = TRUE + +/datum/ai_holder/simple_animal/prime_soul/lose_target_position() + playsound(holder, 'mods/_fd/fd_assets/sounds/prime_soul/Mp_useless.ogg', 100, 0, extrarange = 13, falloff = 4) + ..() + +// ANIM + +/atom/movable/proc/do_crush_animation(windup_time, fly_alpha) + var/default_pixel_x = initial(pixel_x) + var/default_pixel_y = initial(pixel_y) + var/mob/mob = src + if(istype(mob)) + default_pixel_x = mob.default_pixel_x + default_pixel_y = mob.default_pixel_y + + animate(src, pixel_x = pixel_x, pixel_y = pixel_y + 20, alpha = fly_alpha, time = windup_time - windup_time/5) + animate(pixel_x = default_pixel_x, pixel_y = default_pixel_y, alpha = 255, time = windup_time/5) + + +// KICK + + +/obj/item/natural_weapon/punch/minos + attack_cooldown = 20 + force = 20 + +/obj/item/natural_weapon/punch/minos/snake + attack_cooldown = 5 + force = 30 + +/obj/item/natural_weapon/punch/minos/uppercut + attack_cooldown = 5 + attack_verb = list("uppercutted") + force = 45 + +/obj/item/natural_weapon/kick + attack_cooldown = 5 + attack_verb = list("kicked", "kicked", "kicked", "kneed") + force = 30 diff --git a/mods/_fd/fd_assets/eventstuff/admintools.dm b/mods/_fd/fd_assets/eventstuff/admintools.dm index c76a68324aa81..57726ce29678f 100644 --- a/mods/_fd/fd_assets/eventstuff/admintools.dm +++ b/mods/_fd/fd_assets/eventstuff/admintools.dm @@ -1,6 +1,7 @@ + /datum/controller/subsystem/jobs/check_general_join_blockers(mob/new_player/joining, datum/job/job) - ..() - if(check_rights(R_ADMIN) || joining.client.enter_lock_bypass) + . = ..() + if(check_rights(, show_msg = FALSE) || joining.client.enter_lock_bypass) return TRUE /client @@ -15,13 +16,13 @@ var/client/player = input("Select mob.", "Allow Bypass Entering Lock") as null|anything in GLOB.clients if(!player.enter_lock_bypass) player.enter_lock_bypass = 1 - to_chat(player, SPAN_MFAUNA("Высшие силы даровали возможность тебе зайти!")) + to_chat(player, FONT_LARGE(SPAN_NOTICE("Высшие силы даровали возможность тебе зайти!"))) if(player.get_preference_value(/datum/client_preference/staff/play_adminhelp_ping) == GLOB.PREF_HEAR) sound_to(player, sound('sound/ui/pm-notify.ogg', volume = 70)) log_and_message_admins("Игроку [player.ckey] дали возможность зайти в игру.") else player.enter_lock_bypass = 0 - to_chat(player, FONT_LARGE(SPAN_MFAUNA("Высшие силы изъяли у тебя возможность зайти!"))) + to_chat(player, FONT_LARGE(SPAN_NOTICE("Высшие силы изъяли у тебя возможность зайти!"))) log_and_message_admins("У игрока [player.ckey] забрали возможность зайти в игру.") /client/proc/remove_slot_crew_full() // fully close job slot diff --git a/mods/_fd/fd_assets/icons/animals/prime_soul.dmi b/mods/_fd/fd_assets/icons/animals/prime_soul.dmi new file mode 100644 index 0000000000000..6edf1b0879eea Binary files /dev/null and b/mods/_fd/fd_assets/icons/animals/prime_soul.dmi differ diff --git a/mods/_fd/fd_assets/icons/overmap.dmi b/mods/_fd/fd_assets/icons/overmap.dmi new file mode 100644 index 0000000000000..c802d623cd5a2 Binary files /dev/null and b/mods/_fd/fd_assets/icons/overmap.dmi differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Heaven_Pierce_Her-ORDER.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Heaven_Pierce_Her-ORDER.ogg new file mode 100644 index 0000000000000..b4b6b3c7e59aa Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Heaven_Pierce_Her-ORDER.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_crush.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_crush.ogg new file mode 100644 index 0000000000000..992be9a84e6e3 Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_crush.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_die.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_die.ogg new file mode 100644 index 0000000000000..6c9635faf8294 Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_die.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_die2.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_die2.ogg new file mode 100644 index 0000000000000..b190db8d39ab1 Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_die2.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_intro2.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_intro2.ogg new file mode 100644 index 0000000000000..0a6f862140224 Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_intro2.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_judgement.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_judgement.ogg new file mode 100644 index 0000000000000..b78e1d96231ef Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_judgement.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_judgement2.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_judgement2.ogg new file mode 100644 index 0000000000000..309b79a26f015 Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_judgement2.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_outro.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_outro.ogg new file mode 100644 index 0000000000000..1425915cd18f5 Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_outro.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_prepare.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_prepare.ogg new file mode 100644 index 0000000000000..f3191bd3cd932 Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_prepare.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_prepare2.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_prepare2.ogg new file mode 100644 index 0000000000000..a2d704524ab7f Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_prepare2.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_thyend.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_thyend.ogg new file mode 100644 index 0000000000000..62050e92b361f Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_thyend.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_thyend2.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_thyend2.ogg new file mode 100644 index 0000000000000..bd797bdc5f580 Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_thyend2.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_useless.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_useless.ogg new file mode 100644 index 0000000000000..e6f5c11eeaa2a Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_useless.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Mp_weak.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Mp_weak.ogg new file mode 100644 index 0000000000000..58eb0059e23ac Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Mp_weak.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/Pinos_death_scream.ogg b/mods/_fd/fd_assets/sounds/prime_soul/Pinos_death_scream.ogg new file mode 100644 index 0000000000000..527e1d8ffbbbb Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/Pinos_death_scream.ogg differ diff --git a/mods/_fd/fd_assets/sounds/prime_soul/intro_music.ogg b/mods/_fd/fd_assets/sounds/prime_soul/intro_music.ogg new file mode 100644 index 0000000000000..bf908f2aaffca Binary files /dev/null and b/mods/_fd/fd_assets/sounds/prime_soul/intro_music.ogg differ diff --git a/mods/_fd/junk_heaven/code/intel_gathering/old_terminal.dm b/mods/_fd/junk_heaven/code/intel_gathering/old_terminal.dm index c07c5a2e9db1f..ae28fd7810dbe 100644 --- a/mods/_fd/junk_heaven/code/intel_gathering/old_terminal.dm +++ b/mods/_fd/junk_heaven/code/intel_gathering/old_terminal.dm @@ -60,7 +60,7 @@ /obj/structure/intel_console/use_tool(obj/item/I, mob/living/user) SHOULD_CALL_PARENT(FALSE) - if(state == 3 && istype(I, /obj/item/stack/material/glass/)) + if(state == 3 && istype(I, /obj/item/stack/material/glass)) var/obj/item/stack/material/glass/guass = I if(guass.amount <= 5) to_chat(user, "У вас недостаточно материалов! Для починки экрана понадобится минимум 5 единиц стекла!") @@ -82,7 +82,7 @@ state = 1 update_icon() if(state == 1) - if(powerless == TRUE && istype(I, /obj/item/cell/)) + if(powerless == TRUE && istype(I, /obj/item/cell)) if(do_after(user, 30)) powerless = FALSE to_chat(user, "Вы аккуратно вставляете внутрь батарею...") diff --git a/mods/_fd/old_space_cannons/code/overmap_projectile.dm b/mods/_fd/old_space_cannons/code/overmap_projectile.dm index 0b44fbefab27f..005e1b4f020f6 100644 --- a/mods/_fd/old_space_cannons/code/overmap_projectile.dm +++ b/mods/_fd/old_space_cannons/code/overmap_projectile.dm @@ -1,5 +1,6 @@ /obj/overmap/projectile name = "projectile" + icon = 'mods/_fd/fd_assets/icons/overmap.dmi' icon_state = "projectile_danger" scannable = FALSE