diff --git a/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm b/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm index fad2dff0a40..d7b136ace22 100644 --- a/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm +++ b/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm @@ -339,15 +339,18 @@ /turf/closed/wall/r_wall/ship, /area/maintenance/department/crew_quarters/dorms) "alV" = ( -/obj/machinery/camera{ - c_tag = "External Viewport Munitions 1"; - dir = 8 +/obj/structure/sign/poster/official/random{ + pixel_x = 32 }, -/obj/structure/hull_plate/end{ - dir = 1 +/obj/machinery/camera/autoname{ + dir = 8 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/carpet/ship/orange_carpet, +/area/nsv/weapons/fore) +"amg" = ( +/obj/structure/grille, +/turf/open/space/basic, +/area/nsv/weapons/fore) "aml" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -363,12 +366,11 @@ /turf/open/floor/plating, /area/quartermaster/lobby) "amF" = ( -/obj/machinery/camera{ - c_tag = "External Viewport Munitions 2"; - dir = 4 +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 8 }, -/turf/open/space/basic, -/area/nsv/weapons/fore) +/turf/closed/wall/r_wall/ship, +/area/space/nearstation) "amO" = ( /obj/structure/table/wood, /obj/structure/cable{ @@ -786,10 +788,6 @@ /obj/machinery/chem_heater, /turf/open/floor/carpet/ship/purple_carpet, /area/science/xenobiology) -"aAA" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/carpet/ship/orange_carpet, -/area/nsv/weapons/fore) "aAP" = ( /obj/machinery/door/airlock/vault/ship{ name = "Hangar Storage"; @@ -884,11 +882,9 @@ /turf/open/floor/carpet/ship/purple_carpet, /area/medical/genetics) "aDf" = ( -/obj/structure/sign/solgov_flag/right{ - layer = 2.79; - pixel_y = 26 - }, -/turf/open/floor/carpet/ship/orange_carpet, +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, /area/nsv/weapons/fore) "aDF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -1062,8 +1058,11 @@ }, /area/bridge) "aKh" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 4 }, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) @@ -1160,10 +1159,10 @@ }, /area/bridge) "aMY" = ( -/obj/structure/sign/solgov_flag{ - layer = 2.79; - pixel_y = 26 +/obj/structure/cable/white{ + icon_state = "1-2" }, +/obj/machinery/cooling/storage, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) "aNh" = ( @@ -1220,7 +1219,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 6 }, -/turf/open/floor/carpet/ship/orange_carpet, +/turf/closed/wall/r_wall/ship, /area/nsv/weapons/fore) "aQu" = ( /obj/machinery/atmospherics/pipe/simple/purple/hidden{ @@ -1612,24 +1611,6 @@ }, /turf/open/floor/carpet/ship, /area/science/server) -"beV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - layer = 2.89 - }, -/obj/structure/table, -/obj/item/multitool{ - pixel_x = 4; - pixel_y = -1 - }, -/obj/item/screwdriver, -/turf/open/floor/engine, -/area/nsv/weapons/starboard) "bfj" = ( /obj/structure/lattice/catwalk, /obj/structure/cable/white{ @@ -3359,6 +3340,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, +/obj/machinery/cooling/cooler, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) "cnq" = ( @@ -4029,13 +4011,16 @@ /turf/open/floor/plating, /area/maintenance/fore) "cFY" = ( -/obj/machinery/modular_computer/console/preset/engineering{ +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/computer/cargo/request{ dir = 8 }, /obj/structure/window/reinforced{ dir = 4 }, -/turf/open/floor/carpet/ship/orange_carpet, +/turf/open/floor/engine, /area/nsv/weapons/fore) "cGt" = ( /obj/effect/turf_decal/arrows{ @@ -4634,12 +4619,22 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/structure/cable/white{ - icon_state = "2-4" - }, /obj/structure/cable/yellow{ icon_state = "5-8" }, +/obj/machinery/computer/monitor{ + dir = 8; + name = "stormdrive power monitoring console" + }, +/obj/item/paper{ + default_raw_text = "

Engineering notice: There are three wire colors used on the Aetherwhisp 6 ship model. White cable is wired to the Stormdrive MK-4 and the supermatter crystal near atmospherics. These lead to their own SMES located nearby. Yellow wires are department distribution wires, which deliver power from the engines SMES to deparment SMES. Red wires deliver power from department SMES to department APCs.

" + }, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/engine, /area/nsv/weapons/fore) "dhb" = ( @@ -5813,16 +5808,9 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/auxiliary) "ecq" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/cable/yellow{ icon_state = "0-10" }, -/obj/machinery/computer/monitor{ - dir = 8; - name = "department distribution monitoring console" - }, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) "ecu" = ( @@ -5873,12 +5861,7 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/aisat_interior) "edT" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/structure/cable/white{ - icon_state = "2-4" - }, +/obj/machinery/atmospherics/pipe/manifold/purple/hidden, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) "eex" = ( @@ -6106,6 +6089,14 @@ /obj/effect/landmark/start/cyborg, /turf/open/floor/plating, /area/quartermaster/warehouse) +"emk" = ( +/obj/structure/hull_plate, +/obj/machinery/camera{ + c_tag = "External Viewport Munitions 1"; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "emS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6504,9 +6495,7 @@ /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "ezt" = ( -/obj/structure/cable/white{ - icon_state = "1-4" - }, +/obj/machinery/cooling/cooler, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) "ezz" = ( @@ -6945,6 +6934,12 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/machinery/modular_computer/console/preset/engineering{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, /turf/open/floor/engine, /area/nsv/weapons/fore) "eKM" = ( @@ -7748,20 +7743,17 @@ /turf/open/floor/plating, /area/science/server) "fmj" = ( -/obj/structure/window/reinforced{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/machinery/computer/monitor{ +/obj/machinery/computer/ship/navigation/public{ dir = 8; - name = "stormdrive power monitoring console" + name = "starmap console" }, -/obj/item/paper{ - default_raw_text = "

Engineering notice: There are three wire colors used on the Aetherwhisp 6 ship model. White cable is wired to the Stormdrive MK-4 and the supermatter crystal near atmospherics. These lead to their own SMES located nearby. Yellow wires are department distribution wires, which deliver power from the engines SMES to deparment SMES. Red wires deliver power from department SMES to department APCs.

" +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/open/floor/carpet/ship/orange_carpet, +/turf/open/floor/engine, /area/nsv/weapons/fore) "fms" = ( /obj/machinery/dna_scannernew, @@ -8754,9 +8746,6 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, -/obj/structure/cable/white{ - icon_state = "4-8" - }, /obj/structure/cable/white{ icon_state = "1-8" }, @@ -10228,9 +10217,9 @@ /turf/open/floor/holofloor/wood, /area/science/computer_lab) "gRQ" = ( -/obj/machinery/ship_weapon/energy, -/obj/machinery/atmospherics/pipe/simple/purple/hidden{ - dir = 4 +/obj/machinery/ship_weapon/energy/ams, +/obj/item/paper{ + default_raw_text = "

Munitions notice: Reminder that the laser anti missile systems provided must have power allocated, must be enabled, and must have Anti-missile countermeasures enabled in the AMS control console!

" }, /obj/structure/cable/white{ icon_state = "0-8" @@ -10616,8 +10605,11 @@ /turf/open/floor/plating, /area/maintenance/fore) "hgV" = ( -/obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/munitions_tech, /turf/open/floor/engine, /area/nsv/weapons/fore) "hgZ" = ( @@ -12153,12 +12145,12 @@ }, /area/bridge) "imE" = ( +/obj/machinery/light{ + dir = 4 + }, /obj/structure/sign/poster/official/random{ pixel_x = 32 }, -/obj/machinery/camera/autoname{ - dir = 8 - }, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) "ine" = ( @@ -13244,15 +13236,6 @@ }, /turf/open/floor/engine, /area/gateway) -"jaM" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/computer/cargo/request{ - dir = 8 - }, -/turf/open/floor/carpet/ship/orange_carpet, -/area/nsv/weapons/fore) "jaQ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -15103,15 +15086,12 @@ /turf/open/floor/wood, /area/crew_quarters/dorms) "kui" = ( -/obj/machinery/ship_weapon/energy/ams, -/obj/structure/cable/white{ - icon_state = "0-8" - }, -/obj/item/paper{ - default_raw_text = "

Munitions notice: Reminder that the laser anti missile systems provided must have power allocated, must be enabled, and must have Anti-missile countermeasures enabled in the AMS control console!

" +/obj/machinery/camera{ + c_tag = "External Viewport Munitions 2"; + dir = 4 }, -/turf/open/floor/carpet/ship/orange_carpet, -/area/nsv/weapons/fore) +/turf/open/space/basic, +/area/space/nearstation) "kut" = ( /obj/machinery/camera/autoname, /turf/open/floor/fakespace, @@ -18602,11 +18582,9 @@ /turf/open/floor/plating, /area/quartermaster/warehouse) "mUo" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/machinery/light{ - dir = 4 +/obj/machinery/cooling/cooler, +/obj/structure/cable/white{ + icon_state = "1-4" }, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) @@ -20376,6 +20354,16 @@ icon_state = "1-2" }, /obj/structure/chair/office/light, +/obj/machinery/computer/monitor{ + dir = 8; + name = "department distribution monitoring console" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, /turf/open/floor/engine, /area/nsv/weapons/fore) "nZu" = ( @@ -20468,6 +20456,10 @@ /obj/machinery/vending/sustenance, /turf/open/floor/wood, /area/maintenance/fore) +"ocW" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/engine, +/area/nsv/weapons/fore) "odg" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -20479,16 +20471,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/carpet/ship, /area/hallway/nsv/deck2/primary) -"oec" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/computer/ship/navigation/public{ - dir = 8; - name = "starmap console" - }, -/turf/open/floor/carpet/ship/orange_carpet, -/area/nsv/weapons/fore) "ofC" = ( /obj/machinery/camera/autoname{ dir = 8 @@ -20828,6 +20810,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/machinery/cooling/cooler, /obj/structure/cable/white{ icon_state = "1-4" }, @@ -20886,6 +20869,11 @@ pixel_y = 26 }, /obj/structure/table, +/obj/item/multitool{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/screwdriver, /turf/open/floor/engine, /area/nsv/weapons/starboard) "ovd" = ( @@ -23592,6 +23580,10 @@ /obj/effect/turf_decal/bot/left, /turf/open/floor/engine, /area/science/robotics/lab) +"qjG" = ( +/obj/machinery/cooling/storage, +/turf/open/floor/carpet/ship/orange_carpet, +/area/nsv/weapons/fore) "qjS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -25670,10 +25662,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/chair/office/light{ +/obj/machinery/computer/ship/dradis/minor{ + dir = 8 + }, +/obj/structure/window/reinforced{ dir = 4 }, -/obj/effect/landmark/start/munitions_tech, /turf/open/floor/engine, /area/nsv/weapons/fore) "rxR" = ( @@ -27590,6 +27584,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/wood, /area/library) +"sGF" = ( +/obj/machinery/computer/ship/viewscreen, +/turf/open/floor/carpet/ship/orange_carpet, +/area/nsv/weapons/fore) "sGH" = ( /obj/machinery/chem_dispenser, /turf/open/floor/plating, @@ -28160,15 +28158,6 @@ /obj/machinery/light_switch/east, /turf/open/floor/carpet/ship/purple_carpet, /area/science/mixing) -"tbQ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/computer/ship/dradis/minor{ - dir = 8 - }, -/turf/open/floor/carpet/ship/orange_carpet, -/area/nsv/weapons/fore) "tcI" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/structure/disposalpipe/segment{ @@ -78997,7 +78986,7 @@ qqd iIw dnp oqH -wsl +ocW ccH ddg hWF @@ -79245,8 +79234,8 @@ nZT nZT nZT nZT -alV -awB +aan +emk hbT aKK bsy @@ -79502,7 +79491,7 @@ nZT nZT nZT nZT -aKK +aan aKK aKK aKK @@ -79512,8 +79501,8 @@ nZt dgj gdL rxx -mNk -mNk +fmj +cFY mNk pqG ozk @@ -79759,21 +79748,21 @@ nZT nZT nZT nZT +aan aKK vnw aKK -aAA fDP -cFY +fDP ecq -fmj +fDP fQY -tbQ -oec -jaM fDP fDP fDP +fDP +fDP +wow hza hIh eSn @@ -80016,21 +80005,21 @@ nZT nZT nZT nZT +aan aKK vnw aKK +fDP +fDP +fDP +fDP aKh -cmO -fzt -edT -fzt -fTa -fzt -otL -fzt -ezt +qjG +qjG fDP -wow +qjG +fDP +qjG fDP hIh tWA @@ -80273,21 +80262,21 @@ nZT nZT nZT nZT +aan aKK vnw aKK -aMY -bvR -fDP -cVB -fDP -gRQ -fDP -kui -fDP -bnc -fDP fDP +cmO +aMY +fzt +fTa +otL +otL +fzt +otL +fzt +mUo fDP hIh tXU @@ -80530,21 +80519,21 @@ nZT nZT nZT nZT +bJj aKK aKK aKK -aDf -fDP -fDP fDP +bvR +ezt fDP fXN -imE -fDP -mUo -fDP +cVB +cVB fDP +gRQ fDP +bnc fDP hIh uhs @@ -80573,7 +80562,7 @@ hbT xjr xjr ouM -beV +gKC gKC gKC gKC @@ -80787,22 +80776,22 @@ nZT nZT nZT nZT -amF -hbT -aKK -aQt -kJD -cGU -kJD -cII -hfr -aKK -aKK -aKK -aKK -hjY -aKK +nZT +kui +aDf aKK +fDP +fDP +qjG +fDP +fXN +fDP +fDP +fDP +fDP +fDP +fDP +fDP hIh vEs wBL @@ -81045,21 +81034,21 @@ nZT nZT nZT nZT -hbT -aKK -bbt -aKK -aKK -aKK -aKK -ciQ -iDh -iDh -iDh -gag -pwi -qBT -sUy +nZT +amg +aQt +kJD +cGU +kJD +kJD +edT +alV +fDP +imE +sGF +fDP +fDP +fDP hIh vGa wBL @@ -81303,20 +81292,20 @@ nZT nZT nZT nZT -agZ -bvn -hbT -hbT -sdP -aKK +aDf bbt aKK aKK aKK -ovU -pwR -vnw -vnw +cII +hfr +aKK +aKK +aKK +aKK +hjY +aKK +aKK hIh vRT wBL @@ -81561,19 +81550,19 @@ nZT nZT nZT agZ -agZ -nZT -nZT -nZT -agZ bvn hbT hbT -mXo -bbt -bbt -aKK +sdP aKK +ciQ +iDh +iDh +iDh +gag +pwi +qBT +sUy hIh fyA xDN @@ -81817,20 +81806,20 @@ nZT nZT nZT nZT -nZT -nZT -nZT -nZT -nZT agZ agZ nZT nZT nZT -oIn -oIn -hbT -hbT +dKR +amF +dKR +dKR +dKR +ovU +pwR +vnw +vnw dKR hIh xLV @@ -82079,16 +82068,16 @@ nZT nZT nZT nZT -nZT -nZT -nZT -nZT -nZT -nZT -nZT -nZT -nZT -nZT +agZ +bvn +hbT +hbT +mXo +amF +amF +dKR +dKR +dKR sdP hbT hbT @@ -82336,15 +82325,15 @@ nZT nZT nZT nZT +agZ +agZ nZT nZT nZT -nZT -nZT -nZT -nZT -nZT -nZT +oIn +oIn +hbT +hbT nZT nZT nZT diff --git a/_maps/map_files/Aetherwhisp/job_changes.dm b/_maps/map_files/Aetherwhisp/job_changes.dm index 5c07d867bf3..734752442dc 100644 --- a/_maps/map_files/Aetherwhisp/job_changes.dm +++ b/_maps/map_files/Aetherwhisp/job_changes.dm @@ -1,19 +1,6 @@ // If you continue to complain that munitechs have nothing to do, then I guess you really have nothing to do now don't you? // I'm replacing your job with bridge officers who are perfectly capable of pushing a button on lasers -// MAP_REMOVE_JOB(master_at_arms) -MAP_REMOVE_JOB(munitions_tech) - -/datum/job/munitions_tech/New() - ..() - MAP_JOB_CHECK - total_positions = 0 - spawn_positions = 0 - -/datum/job/master_at_arms/New() - ..() - MAP_JOB_CHECK - total_positions = 0 - spawn_positions = 0 +// this file should be obsolete #undef JOB_MODIFICATION_MAP_NAME diff --git a/_maps/map_files/vonneumann/vnmk3.dmm b/_maps/map_files/vonneumann/vnmk3.dmm index 8b785f5fbbb..b89d3682315 100644 --- a/_maps/map_files/vonneumann/vnmk3.dmm +++ b/_maps/map_files/vonneumann/vnmk3.dmm @@ -982,6 +982,9 @@ /obj/machinery/power/apc/auto_name/south, /turf/open/floor/carpet/ship/blue, /area/crew_quarters/cryopods) +"aGh" = ( +/turf/open/floor/circuit/red/anim, +/area/nsv/weapons/fore) "aHG" = ( /obj/machinery/light, /turf/open/floor/carpet/ship, @@ -1278,7 +1281,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/structure/closet/emcloset, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -3577,6 +3579,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, +/obj/machinery/cooling/cooler, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -4931,6 +4934,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/machinery/cooling/storage, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -6193,10 +6197,17 @@ /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos/port_atmos) "esD" = ( +/obj/structure/frame/machine{ + icon = 'nsv13/icons/obj/energy_weapons.dmi'; + icon_state = "phase_cannon_con0"; + pixel_y = -32; + pixel_x = -32; + anchored = 1 + }, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "0-8" }, -/turf/open/floor/circuit/green/anim, +/turf/open/floor/circuit/red/anim, /area/nsv/weapons/fore) "esI" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ @@ -7147,10 +7158,13 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" +/obj/machinery/ship_weapon/energy/laser_pd{ + gun_id = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, +/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "feb" = ( /obj/structure/cable{ @@ -7869,8 +7883,8 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -9024,8 +9038,8 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -9884,12 +9898,16 @@ /area/hallway/nsv/deck1/frame2/port) "gXb" = ( /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "1-4" }, -/obj/machinery/ship_weapon/energy/laser_pd{ - gun_id = 4 +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/cooling/storage, +/turf/open/floor/carpet/ship/beige_carpet{ + color = "#CC8899"; + name = "nanoweave carpet (puce)" }, -/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "gXf" = ( /obj/structure/cable{ @@ -11320,7 +11338,6 @@ /area/engine/atmos/port_atmos) "hYY" = ( /obj/machinery/light, -/obj/machinery/status_display/evac/south, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -12276,10 +12293,13 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" +/obj/machinery/ship_weapon/energy/laser_pd{ + gun_id = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, +/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "iJZ" = ( /obj/item/fuel_rod, @@ -13023,10 +13043,7 @@ /obj/machinery/camera/autoname{ dir = 10 }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" - }, +/turf/open/floor/circuit/red/anim, /area/nsv/weapons/fore) "jgk" = ( /turf/closed/wall/r_wall/ship, @@ -18120,10 +18137,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" - }, +/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "ncP" = ( /obj/structure/cable{ @@ -18978,17 +18992,13 @@ /turf/open/floor/plasteel/cult, /area/maintenance/starboard/aft) "nHH" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/frame/machine{ - icon = 'nsv13/icons/obj/energy_weapons.dmi'; - icon_state = "phase_cannon_con0"; - pixel_y = -32; - pixel_x = -32; - anchored = 1 +/obj/structure/rack, +/obj/item/ship_weapon/ammunition/naval_artillery/cannonball, +/obj/machinery/status_display/evac/south, +/turf/open/floor/carpet/ship/beige_carpet{ + color = "#CC8899"; + name = "nanoweave carpet (puce)" }, -/turf/open/floor/circuit/red/anim, /area/nsv/weapons/fore) "nId" = ( /obj/structure/cable{ @@ -21033,13 +21043,14 @@ /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engineering/reactor_control) "plP" = ( -/obj/machinery/ship_weapon/energy/laser_pd{ - gun_id = 1 - }, /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "4-8" + }, +/obj/machinery/cooling/cooler, +/turf/open/floor/carpet/ship/beige_carpet{ + color = "#CC8899"; + name = "nanoweave carpet (puce)" }, -/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "plQ" = ( /obj/machinery/light_switch/north{ @@ -22793,10 +22804,13 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" +/obj/machinery/ship_weapon/energy/laser_pd{ + gun_id = 1 }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "qCz" = ( /obj/structure/closet/crate, @@ -23009,6 +23023,7 @@ icon_state = "4-8" }, /obj/machinery/light, +/obj/machinery/cooling/cooler, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -23370,16 +23385,9 @@ /area/storage/tools) "rdh" = ( /obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/frame/machine{ - icon = 'nsv13/icons/obj/energy_weapons.dmi'; - icon_state = "phase_cannon_con12"; - pixel_y = -32; - pixel_x = -32; - anchored = 1 + icon_state = "1-2" }, -/turf/open/floor/circuit/red/anim, +/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "rfp" = ( /obj/machinery/ecto_sniffer, @@ -23960,10 +23968,13 @@ /obj/structure/cable/yellow{ icon_state = "1-4" }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" +/obj/machinery/ship_weapon/energy/laser_pd{ + gun_id = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, +/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "rDT" = ( /obj/structure/cable{ @@ -24083,13 +24094,7 @@ /obj/structure/cable/yellow{ icon_state = "1-4" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" - }, +/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "rHg" = ( /obj/machinery/holopad, @@ -24524,7 +24529,13 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/circuit/red/anim, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/carpet/ship/beige_carpet{ + color = "#CC8899"; + name = "nanoweave carpet (puce)" + }, /area/nsv/weapons/fore) "scW" = ( /obj/machinery/rnd/production/circuit_imprinter, @@ -26299,9 +26310,12 @@ /turf/open/floor/grass, /area/maintenance/fore/secondary) "tqm" = ( -/obj/structure/hull_plate, -/turf/open/floor/engine/airless, -/area/space/nearstation) +/obj/machinery/cooling/cooler, +/turf/open/floor/carpet/ship/beige_carpet{ + color = "#CC8899"; + name = "nanoweave carpet (puce)" + }, +/area/nsv/weapons/fore) "tqy" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -27127,25 +27141,17 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "tWo" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/report_crimes{ - pixel_y = 28 +/obj/structure/frame/machine{ + icon = 'nsv13/icons/obj/energy_weapons.dmi'; + icon_state = "phase_cannon_con12"; + pixel_y = -32; + pixel_x = -32; + anchored = 1 }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" +/obj/structure/cable/yellow{ + icon_state = "0-8" }, +/turf/open/floor/circuit/red/anim, /area/nsv/weapons/fore) "tWt" = ( /obj/structure/table/glass, @@ -27586,10 +27592,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 }, -/turf/open/floor/carpet/ship/beige_carpet{ - color = "#CC8899"; - name = "nanoweave carpet (puce)" - }, +/turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "uuM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -29517,12 +29520,10 @@ /turf/open/floor/carpet/ship/purple_carpet, /area/crew_quarters/heads/hor) "vPB" = ( -/obj/machinery/ship_weapon/energy/laser_pd{ - gun_id = 2 - }, /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "4-8" }, +/obj/machinery/cooling/storage, /turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "vRf" = ( @@ -30491,8 +30492,12 @@ /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos/port_atmos) "wHQ" = ( -/obj/structure/rack, -/obj/item/ship_weapon/ammunition/naval_artillery/cannonball, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/camera/autoname{ + dir = 10 + }, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -30554,11 +30559,9 @@ /area/ai_monitored/turret_protected/ai) "wKC" = ( /obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/ship_weapon/energy/laser_pd{ - gun_id = 3 + icon_state = "4-8" }, +/obj/structure/disposalpipe/segment, /turf/open/floor/circuit/green/anim, /area/nsv/weapons/fore) "wKR" = ( @@ -31590,6 +31593,9 @@ /obj/machinery/light{ dir = 1 }, +/obj/structure/sign/poster/official/report_crimes{ + pixel_y = 28 + }, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -49375,7 +49381,7 @@ lfF qwl gNZ jng -tqm +lGb jfJ iKp bKw @@ -61537,10 +61543,10 @@ qzq bwd lXg hqj -xCa -rvT -xCa -sQI +vPB +vPB +vPB +vPB hUL qbT bwd @@ -61739,10 +61745,10 @@ rDW bwd epu hqj -mgw -mgw -mgw -esD +xCa +rvT +xCa +sQI hUL wwk bwd @@ -61942,8 +61948,8 @@ bwd vYy grk rGA -nUg -rDP +rdh +rGA ncr hUL gtc @@ -62143,12 +62149,12 @@ qzq bwd bwd fvW -jSV +sOW gkg jSV jSV -wHQ -bwd +hUL +nHH bwd oqd wEM @@ -62346,12 +62352,12 @@ bwd bwd aRw plP -kWY -vPB -jSV +tqm +plP +plP +hUL ifZ bwd -bwd oqd wEM vYj @@ -62545,11 +62551,11 @@ xSG xSG xSG bwd -bwd -tWo -mgw -hUL -mgw +jAF +hqj +jSV +kWY +jSV jSV hYY bwd @@ -62927,9 +62933,9 @@ oLI oLI oLI vcm -tqm -tqm -tqm +lGb +lGb +lGb quY gCB ekx @@ -62945,15 +62951,15 @@ mQt fjk ers qzq -tqm -tqm -tqm +lGb +lGb +lGb bwd bwd mMr -igy +wKC xHf -igy +wKC igy tjZ bwd @@ -63129,9 +63135,9 @@ oLI oLI dqF vcm -tqm -tqm -tqm +lGb +lGb +lGb quY nef sTC @@ -63147,15 +63153,15 @@ muH oqI vik qzq -tqm -tqm -tqm +lGb +lGb +lGb bwd bwd xGT -wKC +jSV kWY -gXb +jSV jSV jAF bwd @@ -63331,9 +63337,9 @@ oLI oLI oLI vcm -tqm -tqm -tqm +lGb +lGb +lGb wuv wuv wuv @@ -63349,16 +63355,16 @@ qzq cst jwM qzq -tqm -tqm -tqm +lGb +lGb +lGb bwd bwd cNI -mgw +jSV hUL -mgw jSV +wHQ bwd bwd qWw @@ -63533,9 +63539,9 @@ oLI oLI vcm vcm -tqm -tqm -tqm +lGb +lGb +lGb wuv wuv wuv @@ -63551,9 +63557,9 @@ wuv wuv wuv wuv -tqm -tqm -tqm +lGb +lGb +lGb bwd bwd xqS @@ -63735,9 +63741,9 @@ oLI oLI vcm vcm -tqm -tqm -tqm +lGb +lGb +lGb wuv wuv qGr @@ -63753,9 +63759,9 @@ vLb skj wuv wuv -tqm -tqm -tqm +lGb +lGb +lGb bwd bwd eGs @@ -63927,7 +63933,7 @@ lfF lfF lfF rle -tqm +lGb vcm oLI oLI @@ -63937,9 +63943,9 @@ oLI oLI vcm jMR -tqm -tqm -tqm +lGb +lGb +lGb wuv cef aiP @@ -63955,15 +63961,15 @@ gfN aiP cef wuv -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb bwd urG -nHH +jSV kWY -rdh +jSV uWD bwd oqd @@ -64129,7 +64135,7 @@ lfF lfF lfF qwl -tqm +lGb vcm pGk oLI @@ -64138,10 +64144,10 @@ oLI oLI oLI vcm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb jMR cef xVa @@ -64157,10 +64163,10 @@ dpu fsL cef jMR -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb bwd tga sbQ @@ -64340,11 +64346,11 @@ njV njV njV vcm -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb cef ulY iVg @@ -64358,16 +64364,16 @@ hzw hzw kXt cef -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb bwd iFO -hUL +esD jSV -hUL +tWo bwd bwd qWw @@ -64534,7 +64540,7 @@ lfF lfF lfF rle -tqm +lGb vcm njV njV @@ -64542,11 +64548,11 @@ njV njV njV vcm -tqm +lGb iTH iTH iTH -tqm +lGb cef cef cef @@ -64560,14 +64566,14 @@ cef cef cef cef -tqm +lGb iTH iTH iTH -tqm +lGb bwd wQk -hUL +aGh jSV jgc bwd @@ -64736,32 +64742,32 @@ ido lfF lfF rle -tqm +lGb tAD -tqm -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb +lGb rzk lfF wEM wEM rle -tqm -tqm -tqm -tqm -tqm -tqm -tqm -tqm -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb +lGb +lGb +lGb +lGb +lGb +lGb +lGb +lGb rzk wEM wEM @@ -64938,14 +64944,14 @@ lfF lfF lfF qwl -tqm -tqm -tqm -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb +lGb +lGb +lGb rzk lfF iSP @@ -64972,7 +64978,7 @@ rle bwd dvV nUg -ncr +gXb bwd bwd qWw @@ -65141,13 +65147,13 @@ lfF lfF lfF rle -tqm +lGb skc -tqm -tqm -tqm +lGb +lGb +lGb fGN -tqm +lGb rzk lfF iSP @@ -65343,13 +65349,13 @@ lfF lfF lfF rle -tqm -tqm -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb +lGb +lGb rzk lfF iSP @@ -65545,13 +65551,13 @@ lfF lfF lfF qwl -tqm -tqm -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb +lGb +lGb mNh lfF lfF @@ -65748,10 +65754,10 @@ lfF lfF lfF rle -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb lGb rzk lfF @@ -65950,11 +65956,11 @@ lfF lfF lfF rle -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb rzk lfF lfF @@ -66152,11 +66158,11 @@ lfF lfF lfF qwl -tqm -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb +lGb rzk lfF lfF @@ -66355,10 +66361,10 @@ lfF lfF lfF rle -tqm lGb lGb -tqm +lGb +lGb rzk lfF lfF @@ -66557,10 +66563,10 @@ lfF lfF lfF rle -tqm -tqm -tqm -tqm +lGb +lGb +lGb +lGb rzk lfF lfF @@ -66760,9 +66766,9 @@ lfF lfF qwl lGb -tqm -tqm -tqm +lGb +lGb +lGb rzk lfF lfF @@ -66962,9 +66968,9 @@ lfF lfF lfF rle -tqm -tqm -tqm +lGb +lGb +lGb rzk lfF lfF @@ -67164,9 +67170,9 @@ lfF ido lfF rle -tqm -tqm -tqm +lGb +lGb +lGb rzk lfF lfF @@ -67366,8 +67372,8 @@ lfF lfF lfF rle -tqm -tqm +lGb +lGb lGb rzk lfF diff --git a/nsv13.dme b/nsv13.dme index fa0b30da307..2999944ddf3 100644 --- a/nsv13.dme +++ b/nsv13.dme @@ -3719,6 +3719,7 @@ #include "nsv13\code\_globalvars\lists\weapons.dm" #include "nsv13\code\_HELPERS\reagents.dm" #include "nsv13\code\_onclick\adjacent.dm" +#include "nsv13\code\_onclick\hud\energy.dm" #include "nsv13\code\_onclick\hud\parallax.dm" #include "nsv13\code\controllers\configuration\entries\game_options.dm" #include "nsv13\code\controllers\subsystem\map_vote.dm" @@ -4014,6 +4015,7 @@ #include "nsv13\code\modules\munitions\ship_weapons\energy_weapons\laser_ams.dm" #include "nsv13\code\modules\munitions\ship_weapons\energy_weapons\laser_pd.dm" #include "nsv13\code\modules\munitions\ship_weapons\energy_weapons\phaser.dm" +#include "nsv13\code\modules\munitions\ship_weapons\energy_weapons\subspacecooling.dm" #include "nsv13\code\modules\munitions\ship_weapons\hybrid_weapons\hybrid_railgun.dm" #include "nsv13\code\modules\munitions\ship_weapons\hybrid_weapons\railgun_forge.dm" #include "nsv13\code\modules\overmap\ai-skynet.dm" diff --git a/nsv13/code/_onclick/hud/energy.dm b/nsv13/code/_onclick/hud/energy.dm new file mode 100644 index 00000000000..bb7f50a0937 --- /dev/null +++ b/nsv13/code/_onclick/hud/energy.dm @@ -0,0 +1,86 @@ + +/atom/movable/screen/overheat + name = "Heat" + icon = 'nsv13/icons/overmap/gui/overheat_gauge.dmi' + icon_state = "gauge" + screen_loc = "WEST:64,CENTER-1:15" +// mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/filterprogress = 50 +// var/image/progressbar + var/obj/effect/overlay/heat_progressbar/bar + var/obj/effect/overlay/heat_progressbar/avg/bar_average + var/alpha_mask_filter + var/datum/overmap_ship_weapon/weapon_datum + + +/atom/movable/screen/overheat/Initialize(mapload) + transform *= 4 + if(!bar) bar = new + vis_contents |= bar + bar.add_filter("alpha_mask_filter", 1, alpha_mask_filter(0 , filterprogress, 'nsv13/icons/overmap/gui/mask.dmi', flags = MASK_INVERSE)) + if(!bar_average) + bar_average = new + vis_contents |= bar_average + bar_average.add_filter("alpha_mask_filter", 1, alpha_mask_filter(0 , filterprogress, 'nsv13/icons/overmap/gui/mask.dmi', flags = MASK_INVERSE)) + //filters += filter(type = "alpha", y = filterprogress , flags = MASK_INVERSE , icon = 'nsv13/icons/overmap/gui/mask.dmi', name = "progressbarmask") +// cut_overlay() +// progressbar = image('nsv13/icons/overmap/gui/overheat_gauge.dmi', icon_state= "7" ) +// progressbar.filters += filter(type = "alpha", y = filterprogress , flags = MASK_INVERSE , icon = 'icons/obj/doors/airlocks/mask_32x32_airlocks.dmi', name = "progressbarmask") + //alpha_mask_filter, alpha_mask_filter(0 , 100, 'icons/obj/doors/airlocks/mask_32x32_airlocks.dmi') +// add_overlay(progressbar) + +/atom/movable/screen/overheat/proc/set_offset(y,y2) + bar.transition_filter("alpha_mask_filter", 0, list("y" = y), 0, 0,) + bar_average.transition_filter("alpha_mask_filter", 0, list("y" = y2), 0, 0,) + //filters += filter(type = "alpha", y = y , flags = MASK_INVERSE , icon = 'nsv13/icons/overmap/gui/mask.dmi', name = "progressbarmask") + +/atom/movable/screen/overheat/proc/updatehud() + var/highest_heat = 0 + var/obj/machinery/ship_weapon/energy/hot_weapon + var/combined_heat = 0 + for(hot_weapon in weapon_datum.weapons["loaded"]) + combined_heat += hot_weapon.heat + if(hot_weapon.heat > highest_heat) + highest_heat = hot_weapon.heat + hot_weapon = pick(weapon_datum.weapons["loaded"]) + var/y = (100-(((hot_weapon.max_heat-highest_heat)/(hot_weapon.max_heat)) *100)) + var/max_combined_heat = hot_weapon.max_heat *length(weapon_datum.weapons["loaded"]) + var/y2 = (100-(((max_combined_heat-combined_heat)/(max_combined_heat)) *100)) + set_offset(y,y2) + +/obj/effect/overlay/heat_progressbar + name = "Heat" + icon = 'nsv13/icons/overmap/gui/overheat_gauge.dmi' + icon_state = "7" + layer = FLOAT_LAYER + +/obj/effect/overlay/heat_progressbar/avg + name = "Average Heat" + icon_state = "9" + layer = FLOAT_LAYER-1 + +// /atom/movable/screen/alien/plasma_display + +/datum/hud/overheat + + +/* +/datum/hud/revenant/New(mob/owner) + ..() + + healths = new /atom/movable/screen/healths/revenant() + healths.hud = src + infodisplay += healths + + + + alien_plasma_display = new /atom/movable/screen/alien/plasma_display() + alien_plasma_display.hud = src + infodisplay += alien_plasma_display + + +/mob/living/carbon/alien/proc/updatePlasmaDisplay() + if(!hud_used) //clientless aliens + return + hud_used.alien_plasma_display.maptext = MAPTEXT("
[round(getPlasma())]
") +*/ diff --git a/nsv13/code/game/objects/items/nsv_circuitboards.dm b/nsv13/code/game/objects/items/nsv_circuitboards.dm index e19e8e7c214..fc01b6b3aa3 100644 --- a/nsv13/code/game/objects/items/nsv_circuitboards.dm +++ b/nsv13/code/game/objects/items/nsv_circuitboards.dm @@ -540,3 +540,27 @@ icon_state = "science" build_path = /obj/machinery/navbeacon req_components = list() + +//energy weapon cooling +/obj/item/circuitboard/machine/cooling + name = "subspace cooling unit circuit board" + materials = list(/datum/material/glass=1000, /datum/material/gold=500) + build_path = /obj/machinery/cooling/cooler + req_components = list( + /obj/item/stack/cable_coil = 15, + /obj/item/stock_parts/matter_bin = 1, + /obj/item/stock_parts/capacitor = 2, + /obj/item/stock_parts/micro_laser =2, + /obj/item/stock_parts/heatsink = 1) + + +/obj/item/circuitboard/machine/cooling/storage + name = "subspace heatsink unit circuit board" + materials = list(/datum/material/glass=1000, /datum/material/gold=500) + build_path = /obj/machinery/cooling/storage + req_components = list( + /obj/item/stack/cable_coil = 15, + /obj/item/stock_parts/matter_bin = 2, + /obj/item/stock_parts/capacitor = 2, + /obj/item/stock_parts/micro_laser = 2, + /obj/item/stock_parts/heatsink = 1) diff --git a/nsv13/code/modules/munitions/ship_weapons/_ship_weapon.dm b/nsv13/code/modules/munitions/ship_weapons/_ship_weapon.dm index 840ff61a783..d614e8cd59d 100644 --- a/nsv13/code/modules/munitions/ship_weapons/_ship_weapon.dm +++ b/nsv13/code/modules/munitions/ship_weapons/_ship_weapon.dm @@ -49,6 +49,7 @@ var/malfunction_sound = 'sound/effects/alert.ogg' + //Various traits that probably won't change var/maintainable = TRUE //Does the weapon require maintenance? var/bang = TRUE //Is firing loud? @@ -76,11 +77,7 @@ var/obj/item/ammo_box/magazine/magazine //Magazine if we have one var/obj/chambered //Chambered round if we have one. Extrapolate ammo type from this var/list/ammo = list() //All loaded ammo - - // These variables only pertain to energy weapons, but need to be checked later in /proc/fire - var/charge = 0 - var/charge_rate = 0 //How quickly do we charge? - var/charge_per_shot = 0 //How much power per shot do we have to use? + //energy weapon vars used to be here, they aren't anymore /** * Constructor for /obj/machinery/ship_weapon @@ -577,13 +574,16 @@ /** * Updates maintenance counter after firing if applicable. */ -/obj/machinery/ship_weapon/proc/after_fire() - //Count down towards maintenance +/obj/machinery/ship_weapon/proc/maint_wear() if(maintainable) if(maint_req > 0) maint_req -- else weapon_malfunction() + +/obj/machinery/ship_weapon/proc/after_fire() + //Count down towards maintenance + maint_wear() update() /** diff --git a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/bsa.dm b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/bsa.dm index 62b4807cfd1..c38ecc038ee 100644 --- a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/bsa.dm +++ b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/bsa.dm @@ -11,6 +11,8 @@ weapon_datum_type = /datum/overmap_ship_weapon/bsa obj_integrity = 2000 max_integrity = 2000 + maintainable = FALSE //NT gets to cheat and have no degadation or heating on their weapon because muni has enough to do and the BSA doesn't need buffs/nerfs + var/mutable_appearance/top_layer pixel_y = -32 @@ -245,3 +247,4 @@ var/mob/living/goodbye = target goodbye.dust(TRUE, FALSE) explosion(get_turf(target), 6, 8, 9, 12, ignorecap = TRUE, flame_range = 6) //I have to keep myself from letting it just truncate ships because thats a bit annoying to fix for the receiving side, even if accurate to appearance. + diff --git a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_ams.dm b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_ams.dm index 807f69c1ec0..98fd471ddee 100644 --- a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_ams.dm +++ b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_ams.dm @@ -8,18 +8,46 @@ bound_width = 64 pixel_x = -32 pixel_y = -32 - // maintainable = TRUE //AMS will require some form of maintenance to operate + maintainable = TRUE //AMS requires some form of maintenance to operate safety = FALSE //Ready to go right from the start. idle_power_usage = 2500 active = FALSE charge = 0 + max_heat = 800 + heat_per_shot = 100 + heat_rate = 30 + storage_rate = 100 + freq_max = 4 + thermal = 0 + // Hitscan antimissile laser, charges relatively quickly, but can't hold a decent buffer! - charge_rate = 1000000 // At power level 2, requires 2MW per tick to charge + charge_rate = 1500000 // At power level 2, requires 3MW per tick to charge charge_per_shot = 3000000 // At power level 2, requires 6MW total to fire, takes about 3 seconds to gain 1 charge - max_charge = 3000000 // Store 1 charge + max_charge = 6000000 // Store 2 charge power_modifier = 0 //Power you're inputting into this thing. power_modifier_cap = 2 weapon_datum_type = /datum/overmap_ship_weapon/laser_ams +/obj/machinery/ship_weapon/energy/ams/fire(atom/target, shots = linked_overmap_ship_weapon.burst_size, manual = TRUE) + var/list/amm_targets = linked.torpedoes_to_target.Copy(1, min(length(linked.torpedoes_to_target), 10)) + if (!length(amm_targets)) + return + if(can_fire(target, shots)) + if(manual) + linked.last_fired = overlay + for(var/i = 0, i < shots, i++) + do_animation() + local_fire() + target = pick(amm_targets) + overmap_fire(target) + charge -= charge_per_shot + if(maintainable) + heat += heat_per_shot + after_fire() + . = TRUE + if(shots > 1) + sleep(linked_overmap_ship_weapon.burst_fire_delay) + return TRUE + return FALSE diff --git a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_pd.dm b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_pd.dm index 614b318f425..38e956e1490 100644 --- a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_pd.dm +++ b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_pd.dm @@ -69,12 +69,15 @@ static_charge = TRUE firing_sound = null bang = FALSE // It's a light laser weapon, not a cannon going off + maintainable = FALSE + thermal = 0 circuit = /obj/item/circuitboard/machine/laser_pd var/gunning_component_type = /datum/component/overmap_gunning/laser_pd var/mob/gunner = null var/gun_id = 0 // Used for map linkage + /obj/machinery/ship_weapon/energy/laser_pd/proc/start_gunning(mob/user) if(gunner) remove_gunner() diff --git a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/phaser.dm b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/phaser.dm index d123195b933..94cc3a66cbf 100644 --- a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/phaser.dm +++ b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/phaser.dm @@ -1,3 +1,12 @@ +#define STATE_OVERLOAD 2 +#define STATE_VENTING 1 +#define STATE_NOTHING 0 +#define DELTA 1 +#define PHI 2 +#define OMEGA 3 +//#define STATE(ACTIVE) 1 +//#define STATE(INACTIVE) 0 dunno how to adapt somem of these things right now + /obj/machinery/ship_weapon/energy name = "burst phaser MK2" desc = "A coaxial laser system, capable of firing controlled laser bursts at a target." @@ -12,14 +21,40 @@ safety = FALSE //Ready to go right from the start. idle_power_usage = 2500 var/active = FALSE - charge = 0 - charge_rate = 330000 //How quickly do we charge? - charge_per_shot = 660000 //How much power per shot do we have to use? + var/charge = 0 + var/charge_rate = 400000 //How quickly do we charge? + var/charge_per_shot = 660000 //How much power per shot do we have to use? var/max_charge = 3300000 //5 shots before it has to recharge. var/power_modifier = 0 //Power youre inputting into this thing. - var/power_modifier_cap = 3 //Which means that your guns are spitting bursts that do 60 damage. + var/power_modifier_cap = 8 //Which means that your guns are spitting bursts that do 120? damage. weapon_datum_type = /datum/overmap_ship_weapon/burst_phaser var/static_charge = FALSE //Controls whether power and energy cost scale with power modifier. True = no scaling + var/alignment = 100 //! allignment is a maint stat that acts as a limit that ticks down and increases chances of malfunction until the gun explodes if it reaches zero + var/freq = 100 //! freqency is a stat that decreases faster the lower your allignment is, leading up to an overload once you reach 0 freqency + var/max_freq = 100 + var/list/options = list("delta", "omega", "phi") //! delta, omega, phi; options for the freq minigame code + var/combo = 1 //! at what point are we in the code. this is generated ingame + var/list/combo_target = list() //! the minigame code that the user has to enter. this is generated ingame + var/combocount = 0 //! how many times to re-show the radial menu for entering the combo.this is generated ingame + var/overheat_sound = 'sound/effects/smoke.ogg' + var/list/cooling = list() + var/cooling_amount = 0 //! the total amount of cooling all coolers provide. this is generated ingame + var/storage_amount = 0 //! the total amount of storage all heatsinks provide. this is generated ingame + var/storage_rate = 150 //! the amount that a heatsink increases this weapon's heat capacity + var/ventnumber = 1 //! the rate at which we discharge heat when venting. this is generated ingame + // These variables only pertain to energy weapons, but need to be checked later in /proc/fire //I moved these over to the energyweapon basetype. if everything explodes, someone else told me to + var/heat = 0 //! how much heat we current have. this is generated ingame + var/heat_per_shot = 150 //! how much heat do we make per shot + var/heat_rate = 10 //! how fast do we discharge heat per cooler + var/max_heat = 1000 //! how much heat before ::fun:: happens + var/overloaded = 0 //! have we triggered an overload by going over max_heat + maintainable = TRUE + var/lockout = 0 //! lockout for maintinence + var/weapon_state = STATE_NOTHING + max_integrity = 1200 //don't blow up before we're ready + obj_integrity = 1200 + var/freq_max = 10 + var/thermal = 1 /obj/machinery/ship_weapon/energy/get_ammo_list() stack_trace("Attempting to get physical ammo of an energy weapon. Check your proc chains.") @@ -31,10 +66,14 @@ icon_state = "ion_cannon" weapon_datum_type = /datum/overmap_ship_weapon/phaser circuit = /obj/item/circuitboard/machine/phase_cannon - charge_rate = 600000 // At power level 5, requires 3MW per tick to charge + charge_rate = 700000 // At power level 5, requires 3.5MW per tick to charge charge_per_shot = 4000000 // At power level 5, requires 20MW total to fire, takes about 12 seconds to gain 1 charge max_charge = 8000000 // Store 2 charges power_modifier_cap = 5 //Allows you to do insanely powerful oneshot lasers. Maximum theoretical damage of 500. + heat_per_shot = 1000 //allows two shots before overheating with two coolers. default for atherwhisp + heat_rate = 20 + storage_rate = 250 + thermal = 0 /obj/machinery/ship_weapon/energy/lazyload() active = TRUE @@ -65,10 +104,18 @@ power_modifier = value if("activeToggle") toggle_active() + if("vent") + vent() return /obj/machinery/ship_weapon/energy/attack_hand(mob/user) - ui_interact(user) + if(maint_state == MSTATE_UNBOLTED && !lockout && maintainable) + combocount = length(combo_target) + for(combocount, align(user)) + lockout=1 + else + ui_interact(user) + /obj/machinery/ship_weapon/energy/attack_ai(mob/user) ui_interact(user) @@ -81,6 +128,10 @@ var/list/data = list() data["progress"] = charge data["goal"] = max_charge + data["alignment"] = alignment + data["heat"] = heat + data["maxheat"] = max_heat + data["frequency"] = freq data["chargeRate"] = charge_rate data["maxChargeRate"] = initial(charge_rate)*power_modifier_cap data["powerAlloc"] = power_modifier @@ -97,10 +148,29 @@ linked_overmap_ship_weapon.mark_physical_weapon_unloaded(src) /obj/machinery/ship_weapon/energy/can_fire(atom/target, shots = linked_overmap_ship_weapon.burst_size) - if(maint_state != MSTATE_CLOSED) //Are we in maintenance? - return FALSE +// if(maint_state != MSTATE_CLOSED) //Are we in maintenance? +// return FALSE if(get_ammo() < shots) //Do we have enough ammo? return FALSE + if(weapon_state == STATE_OVERLOAD) //have we overheated? + return FALSE + if(weapon_state == STATE_VENTING) //are we venting heat?) + return FALSE + if(freq <=10) //is the frequincy of the weapon high enough to fire? + for(var/mob/living/M in range(10, get_turf(src))) + shake_with_inertia(M, 2, 1) + visible_message("Malfunction detected in [src]! Firing sequence aborted!") //perhaps additional flavour text of a non angry red kind? + overload() + return FALSE + if(alignment == 0) + playsound(src, malfunction_sound, 100, 1) + for(var/mob/living/M in get_hearers_in_view(7, src)) //burn out eyes in view + if(M.stat != DEAD && M.get_eye_protection() < 2) //checks for eye protec + M.flash_act(10) + to_chat(M, "You have a second to watch the casing of the gun glow a dull red before it erupts in a blinding flash as it self-destructs") // stealing this from the plasmagun as well + explosion(get_turf(src), 0, 1, 3, 5, flame_range = 4) + overload() + return FALSE else return TRUE @@ -114,8 +184,13 @@ var/obj/item/projectile/P = ..() if(!static_charge) P.damage *= power_modifier + if(thermal) + P.damage += P.damage *0.7 * heat/max_heat + P.transform *= 500*heat/max_heat /obj/machinery/ship_weapon/energy/process() + process_heat() + //return if overloaded or venting charge_rate = initial(charge_rate) * power_modifier max_charge = initial(max_charge) * power_modifier if(!static_charge) @@ -153,3 +228,316 @@ /obj/machinery/ship_weapon/energy/beam/admin //ez weapon for quickly testing. charge_per_shot = 0 + + +/obj/machinery/ship_weapon/energy/examine(mob/user) + . = ..() + if(!maintainable) + . += "This weapon has an autonomic Thermal Managment System and nano-centered beam focuses." + return + . += "The Thermal Transceiver is currently at [length(cooling)]0% connection capacity." + if(thermal) + . += "span class='notice'>The quantum thermal lenses of this weapon allows the beam to absorb power from their own thermal mass " + if(in_range(user, src) || isobserver(user)) + . += "The heatsink display reads [(heat)] out of [(max_heat)]." + if(maint_state != MSTATE_CLOSED) + . += "[src]'s realignment sequence is: [jointext(combo_target,(", "))]." + if(weapon_state == STATE_VENTING) //are we venting heat?) + . += "[src]'s thermal managment system is in overdrive." + if(weapon_state == STATE_OVERLOAD) //have we overheated? + . += "[src]'s thermal managment system is in failure recovery mode." + +/obj/machinery/ship_weapon/energy/proc/vent() //! starsector esq venting that boosts heat dissipation in exchange for disabling your weapons. don't + if(!maintainable) + playsound(src, pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg'), 100, 1) + return + if(heat > max_heat*0.25) + weapon_state = STATE_VENTING + ventnumber = max_heat*0.25 + else + ventnumber = max_heat + weapon_state = STATE_VENTING + playsound(src, 'sound/effects/turbolift/turbolift-close.ogg', 100, 1) + playsound(src, overheat_sound, 100, 1) + + + +/obj/machinery/ship_weapon/energy/maint_wear() + if(maintainable) + heat += heat_per_shot + handle_alignment() + + +/obj/machinery/ship_weapon/energy/after_fire() + if(maintainable) + linked_overmap_ship_weapon.overheat_hud.updatehud() +// linked_overmap_ship_weapon.overheat_hud.set_offset((100-(((max_heat-heat)/(max_heat)) *100))) + if(maint_state != MSTATE_CLOSED) //MSTATE_CLOSED + tesla_zap(src, 4, 1000) //Munitions Officer definitely had the best uniform + for(var/mob/living/carbon/C in orange(4, src)) + C.flash_act() + for(var/mob/living/carbon/C in orange(12, src)) + to_chat(C, "Electricity arcs from the exposed firing mechanism.") + ..() + + + + +/obj/machinery/ship_weapon/energy/proc/process_heat()//! heat management. don't push your weapons too hard. actual heat generation is in _ship_weapons.dm + if(!maintainable) + return + cooling_amount = 0 + if(heat>0) + linked_overmap_ship_weapon.overheat_hud.updatehud() +// linked_overmap_ship_weapon.overheat_hud.set_offset((100-(((max_heat-heat)/(max_heat)) *100))) + if(!linked_overmap_ship_weapon) + return + for(var/obj/machinery/cooling/cooler/C in cooling) + if(!(C.machine_stat & (BROKEN|NOPOWER|MAINT))) + cooling_amount++ + storage_amount = 0 + + for(var/obj/machinery/cooling/storage/C in cooling) + if(!(C.machine_stat & (BROKEN|NOPOWER|MAINT))) + storage_amount++ + max_heat = initial(max_heat) + (storage_amount*storage_rate) + var/H = heat-cooling_amount*heat_rate + if(heat > 0) + heat = max((H),0) + switch(weapon_state) + if(STATE_OVERLOAD) + if(heat <= (max_heat/50)) + weapon_state = STATE_NOTHING + icon_state = initial(icon_state) +// linked_overmap_ship_weapon.overheat_hud.bar.icon_state = 7 + else + return + if(STATE_VENTING) + if(heat <= ventnumber) + weapon_state = STATE_NOTHING + return + heat = max(heat-(cooling_amount*(heat_rate+(0.25*heat_rate))),0) + return + if(heat >= max_heat) + overload() + +///obj/machinery/ship_weapon/energy/proc/update_hud +// linked_overmap_ship_weapon.overheat_hud.set_offset((100-(((max_heat-heat)/(max_heat)) *100))) +/* linked_overmap_ship_weapon.overheat_hud.cut_overlay() + var/progress + switch(((max_heat-heat)/(max_heat) *100)) + if(0 to 10) + if(11 to 34) + progress = ("2") + if(35 to 49) + progress = ("3") + if(50 to 64) + progress = ("4") + if(65 to 89) + progress = ("5") + if(90 to 95) + progress = ("6") + if(96 to 100) + progress = ("7") + if(overloaded) + progress = ("8") + linked_overmap_ship_weapon.overheat_hud.progressbar = mutable_appearance(icon_state = progress) + linked_overmap_ship_weapon.overheat_hud.add_overlay(progressbar) +*/ + +/obj/machinery/ship_weapon/energy/proc/overload() //! this is the second worst thing that can happen with an energy weapon - triggers when you go over max_heat, and both dumps hot water vapor into the room and wipes your freq and alignment stats. you really don't want to do this + if("[initial(icon_state)]_overheat" in icon_state_list) + icon_state = "[initial(icon_state)]_overheat" + else + icon_state = "overheat" + playsound(src, malfunction_sound, 100, 1) + playsound(src, overheat_sound, 100, 1) + do_sparks(4, FALSE, src) + weapon_state = STATE_OVERLOAD +// linked_overmap_ship_weapon.overheat_hud.bar.icon_state = 8 + alignment = 0 + freq = 0 + say("WARNING! Critical heat density, emergency venting and shutdown initiated!") + atmos_spawn_air("water_vapor=200;TEMP=1000") + heat = max_heat + charge = 0 + return + +/obj/machinery/ship_weapon/energy/proc/handle_alignment() //!this is the basic bad stuff that happens, don't fire when your gun is at 0 alignment, or it'll blow itself up + if(!maintainable) + return + var/turf/detonation_turf = get_turf(src) + if(heat >= (3*(max_heat/4))) + freq -= rand(1,(freq_max*0.4)) + switch(alignment) + if(51 to 75) + if(prob(50)) + do_sparks(4, FALSE, src) + freq -= rand(1,freq_max) + if(26 to 50) + var/roll = roll(1,20) + switch(roll) + if(1 to 9) + do_sparks(4, FALSE, src) + freq -= rand(1,freq_max) + playsound(src, malfunction_sound, 100, 1) + if(10) + playsound(src, malfunction_sound, 100, 1) + freq -= rand(1,freq_max) + explosion(detonation_turf, 0, 0, 2, 3, flame_range = 2) + if(0 to 25) + var/roll2 = roll(1,4) + switch(roll2) + if(1) + do_sparks(4, FALSE, src) + playsound(src, malfunction_sound, 100, 1) + freq -= rand(1,freq_max) + if(2) + playsound(src, malfunction_sound, 100, 1) + freq -= rand(1,freq_max) + explosion(detonation_turf, 0, 0, 3, 4, flame_range = 3) + if(3,4) + var/list/shootat_turf = RANGE_TURFS(5,detonation_turf) - RANGE_TURFS(4, detonation_turf) + var/obj/item/projectile/beam/laser/P = new(detonation_turf) + //Shooting Code: + P.range = 6 + P.preparePixelProjectile(pick(shootat_turf), detonation_turf) + P.fire() + freq -= rand(1,freq_max) + alignment = max(alignment-(rand(0, 4)),0) + + + // dilithium crystal alignment minigame stolen from ds13 - I need to rip this out and rewrite it to not be completely cursed - TODO + +/** if(maint_state == MSTATE_UNBOLTED && !lockout && !maintainable) + .=TRUE + lockout = 1 + var/sound/thesound = pick('nsv13/sound/effects/computer/beep.ogg','nsv13/sound/effects/computer/beep2.ogg','nsv13/sound/effects/computer/beep3.ogg','nsv13/sound/effects/computer/beep4.ogg','nsv13/sound/effects/computer/beep5.ogg','nsv13/sound/effects/computer/beep6.ogg','nsv13/sound/effects/computer/beep7.ogg','nsv13/sound/effects/computer/beep8.ogg','nsv13/sound/effects/computer/beep9.ogg','nsv13/sound/effects/computer/beep10.ogg','nsv13/sound/effects/computer/beep11.ogg','nsv13/sound/effects/computer/beep12.ogg',) + SEND_SOUND(user, thesound) + var/list/options = letters + for(var/option in options) + options[option] = image(icon = 'nsv13/icons/actions/engine_actions.dmi', icon_state = "[option]") + var/dowhat = show_radial_menu(user,src,options) + if(!dowhat) + lockout = 0 + return + combo += "[dowhat]" + combocount ++ + to_chat(user, "You inputted [dowhat] into the command sequence.") + playsound(src, 'sound/machines/sm/supermatter3.ogg', 20, 1) + if(combocount <= 4) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom,screwdriver_act), user),2) // *scream addtimer(CALLBACK(object|null, GLOBAL_PROC_REF(type/path|procstring), arg1, arg2, ... argn), time, timertype) + if(combocount >= 5) //Completed the sequence + if(combo == combo_target) + to_chat(user, "Realignment of weapon energy direction matrix complete.") + playsound(src, 'sound/machines/sm/supermatter1.ogg', 30, 1) + freq = max_freq + combo = null + combocount = 0 + lockout = 0 + else + to_chat(user, "Realignment failed. Continued failure risks dangerous heat overload. Rotating command sequence.") + playsound(src, 'nsv13/sound/effects/warpcore/overload.ogg', 100, 1) + combo_target = "[pick(letters)][pick(letters)][pick(letters)][pick(letters)][pick(letters)]" + heat = max(heat+(heat_per_shot*4),max_heat) //Penalty for fucking it up. You risk destroying the crystal... //well... actually overheating the gun + combocount = 0 + combo = null + lockout = 0 +*/ + +/obj/machinery/ship_weapon/energy/Initialize() + . = ..() + for(var/option in options) + options[option] = image(icon = 'nsv13/icons/actions/engine_actions.dmi', icon_state = "[option]") + realign() + +/obj/machinery/ship_weapon/energy/proc/realign() //! regenerates the alignment code + var/N=rand(3,8) + combo_target=list() + for(var/i,i<=N,i++) //Randomized sequence for the recalibration minigame. + combo_target+=(pick(options)) + +/obj/machinery/ship_weapon/energy/proc/align(mob/living/user) //! this is the replacement minigame for the KMCCODE from DS13.. it's still mostly the same. you enter the generated 3-8 long code in via radial menu + SEND_SOUND(user, pick('nsv13/sound/effects/computer/beep.ogg','nsv13/sound/effects/computer/beep2.ogg','nsv13/sound/effects/computer/beep3.ogg','nsv13/sound/effects/computer/beep4.ogg','nsv13/sound/effects/computer/beep5.ogg','nsv13/sound/effects/computer/beep6.ogg','nsv13/sound/effects/computer/beep7.ogg','nsv13/sound/effects/computer/beep8.ogg','nsv13/sound/effects/computer/beep9.ogg','nsv13/sound/effects/computer/beep10.ogg','nsv13/sound/effects/computer/beep11.ogg','nsv13/sound/effects/computer/beep12.ogg',)) + var/dowhat = show_radial_menu(user,src,options,require_near=TRUE) + if(!dowhat) + lockout = 0 + return + to_chat(user, "You inputted [dowhat] into the command sequence.") + playsound(src, 'sound/machines/sm/supermatter3.ogg', 20, 1) + if(combo_target[combo]==dowhat) + lockout = 0 + if(combo==combo_target.len) + to_chat(user, "Realignment of weapon energy direction matrix complete.") + playsound(src, 'sound/machines/sm/supermatter1.ogg', 30, 1) + freq = max_freq + combo = 1 + realign() + return + combo++ + return + else + to_chat(user, "Realignment failed. Continued failure risks dangerous heat overload. Rotating command sequence.") + playsound(src, 'nsv13/sound/effects/warpcore/overload.ogg', 100, 1) + realign() + heat = min(heat+(heat_per_shot*4),max_heat+50) //Penalty for fucking it up. You risk destroying the crystal... //well... actually overheating the gun + combo = 1 + lockout = 0 + +/obj/machinery/ship_weapon/energy/multitool_act(mob/living/user, obj/item/multitool/I) + if(lockout) + return TRUE + if(!maintainable) + . = ..() //still comedy + return + switch(maint_state) + if(MSTATE_CLOSED) + if(istype(I)) + to_chat(user, "You log [src] in the multitool's buffer.") + I.buffer = src + return TRUE + if(MSTATE_UNSCREWED) + to_chat(user, "You must unbolt the protective casing before aligning the lenses!") + return TRUE + if(MSTATE_UNBOLTED) + to_chat(user, "You being aligning the lenses.") + lockout = 1 + while(alignment < 100) + if(!do_after(user, 5, target = src)) + lockout = 0 + return TRUE + alignment += rand(1,2) + if(alignment >= 100) + alignment = 100 + to_chat(user, "You finish aligning the lenses.") + lockout = 0 + return TRUE + return ..() + + + +/obj/machinery/ship_weapon/energy/default_deconstruction_crowbar(obj/item/I, ignore_panel) + if(freq < 100| alignment < 100 ) + var/confirm = alert("The weapon is not in a good state for deconstruction. if you take it apart now, the fragile quantum bluespace lenses may shatter \ + Are you sure this is a good idea?", "Deconstruct [src]", "Yes", "No") + if(confirm == "Yes") + if(rand(1,0)) + visible_message("you hear a horrible cracking noise coming from the complex machinery as [usr] disassembles it!") + playsound(usr.loc, 'sound/effects/glass_step.ogg', 100, 1, extrarange = 30) + for(var/obj/item/stack/ore/bluespace_crystal/C in component_parts) + visible_message("[C] shatters!") + C.Destroy() + .=..() + else + visible_message("[usr] manage to remove the delicate lenses before removing the main assembly!") + .=..() + return + else + visible_message("[usr] wisely lowers their crowbar.") + return + .=..() + +/obj/machinery/ship_weapon/energy/Destroy() + for(var/obj/machinery/cooling/E in cooling) + E.parent = null + . = ..() diff --git a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/subspacecooling.dm b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/subspacecooling.dm new file mode 100644 index 00000000000..099fa2cdd7b --- /dev/null +++ b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/subspacecooling.dm @@ -0,0 +1,150 @@ +/obj/machinery/cooling + name = "subspace unit" + desc = "A subspace unit." + icon = 'nsv13/icons/obj/subspace.dmi' + icon_state = "cooler" + bound_width = 32 + pixel_x = 0 + pixel_y = 0 + idle_power_usage = 2000 + var/obj/machinery/ship_weapon/energy/parent + var/on = FALSE + density = TRUE + +/obj/machinery/cooling/cooler + name = "subspace cooling unit" + desc = "A cooling unit that dumps the massive amounts of heat energy weapons generate into subspace." + circuit = /obj/item/circuitboard/machine/cooling + + + +/obj/machinery/cooling/Destroy() + if(parent) + parent.cooling -= src + . = ..() + +/obj/machinery/cooling/on_deconstruction() + if(parent) + parent.cooling -= src + return + +/obj/machinery/cooling/attack_hand(mob/user) + . = ..() + if(panel_open) + to_chat(user, "You must turn close the panel on [src] before turning it on.") + return + to_chat(user, "You press [src]'s power button.") + on = !on + update_icon() + +/obj/machinery/cooling/examine() + . = ..() + if(on) + . += "The power is on" + + if(!on) + . += "The power is off" + + if(parent) + . += "The thermal transcever is linked" + + if(!parent) + . += "The thermal transcever is waiting for pairing" + +/* +/obj/machinery/cooling/update_icon() + cut_overlays() + if(panel_open) + icon_state = "smes-o" + if(on && parent) + add_overlay("smes-op1") + if(on) + add_overlay("smes-oc1") + else + add_overlay("smes-op0") +*/ + +/obj/machinery/cooling/multitool_act(mob/living/user, obj/item/multitool/I) + if(!multitool_check_buffer(user, I)) + return + var/obj/item/multitool/muti = I + + if(istype(muti.buffer, /obj/machinery/ship_weapon/energy)) + if(get_area(muti.buffer) != get_area(src)) + to_chat(user, "-% Cannot link machines across power zones. %-") + return + + if(parent) + parent.cooling -= src + parent = null + parent = muti.buffer + .=TRUE + parent.cooling |= src + to_chat(user, "-% Successfully linked [muti.buffer] with [src] %-") + if(length(parent.cooling) >= 11) + var/E = pick(parent.cooling) + explosion(get_turf(E), 0, 1, 3, 5, flame_range = 4) + return + + return + + +/obj/machinery/cooling/storage + name = "subspace heatsink unit" + desc = "A cooling unit that stores the massive amounts of heat energy weapons generate in subspace." + icon_state = "storage" + circuit = /obj/item/circuitboard/machine/cooling/storage + + +/obj/item/stock_parts/heatsink + name = "heatsink" + desc = "A heavy duty heatsink used in certain devices." + icon = 'icons/obj/stock_parts.dmi' + icon_state = "matter_bin" //todo + materials = list(/datum/material/bluespace=2000, /datum/material/copper=30000, /datum/material/iron=1000) + w_class = WEIGHT_CLASS_BULKY + +/obj/machinery/cooling/attackby(obj/item/W, mob/user, params) + if(W.tool_behaviour == TOOL_SCREWDRIVER) + W.play_tool_sound(src, 100) + panel_open = !panel_open + if(panel_open) + to_chat(user, "You open the panel and expose the wiring.") + else + to_chat(user, "You close the panel.") + else if(istype(W, /obj/item/stack/cable_coil) && (machine_stat & BROKEN) && panel_open) + var/obj/item/stack/cable_coil/coil = W + if (coil.get_amount() < 1) + to_chat(user, "You need one length of cable to repair [src]!") + return + to_chat(user, "You begin to replace the wires...") + if(do_after(user, 30, target = src)) + if(coil.get_amount() < 1) + return + coil.use(1) + obj_integrity = max_integrity + set_machine_stat(machine_stat & ~BROKEN) + to_chat(user, "You repair \the [src].") + update_icon() + + else if(W.tool_behaviour == TOOL_WRENCH) + if(!anchored && !isinspace()) + W.play_tool_sound(src, 100) + to_chat(user, "You secure \the [src] to the floor!") + setAnchored(TRUE) + else if(anchored) + W.play_tool_sound(src, 100) + to_chat(user, "You unsecure \the [src] from the floor!") + if(on) + to_chat(user, "\The [src] shuts off!") + on = 0 + setAnchored(FALSE) + else if(W.tool_behaviour == TOOL_CROWBAR) + return + + else + return ..() + +/obj/machinery/cooling/crowbar_act(mob/living/user, obj/item/tool) + if(!default_deconstruction_crowbar(tool)) + return ..() diff --git a/nsv13/code/modules/overmap/fleet_types.dm b/nsv13/code/modules/overmap/fleet_types.dm index d8c62def612..d29cd999a26 100644 --- a/nsv13/code/modules/overmap/fleet_types.dm +++ b/nsv13/code/modules/overmap/fleet_types.dm @@ -355,3 +355,17 @@ // Anger hunted_ship = source goal_system = null + + +//debug and testing + +/datum/fleet/conflagration/debugdonotuse + name = "\improper Syndicate conflagration swarm" + taunts = list("Enemy ship, surrender now. your point defenses are offline.") + audio_cues = list() + fighter_types = list(/obj/structure/overmap/syndicate/ai/bomber) + destroyer_types = list(/obj/structure/overmap/syndicate/ai/conflagration) + battleship_types = list(/obj/structure/overmap/syndicate/ai/conflagration/elite) + supply_types = list(/obj/structure/overmap/syndicate/ai/carrier/elite) + size = FLEET_DIFFICULTY_DEATH + fleet_trait = FLEET_TRAIT_BORDER_PATROL diff --git a/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/_overmap_ship_weapon.dm b/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/_overmap_ship_weapon.dm index 0e82cca41af..5aeb5145919 100644 --- a/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/_overmap_ship_weapon.dm +++ b/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/_overmap_ship_weapon.dm @@ -127,6 +127,9 @@ Any flags related to this should start with OSW. ///AMS modes this weapon can fire in if autonomous but not fully autonomous. var/permitted_ams_modes = list( "Anti-ship" = 1, "Anti-missile countermeasures" = 1 ) // Overwrite the list with a specific firing mode if you want to restrict its targets + var/atom/movable/screen/overheat/overheat_hud //tempature gauge for energy weapons + + //You can pass link target and weapon list calc override during new. /datum/overmap_ship_weapon/New(obj/structure/overmap/link_to, update_role_weapon_lists = TRUE, ...) . = ..() diff --git a/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/new_weapon_types/weapon_datum_types.dm b/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/new_weapon_types/weapon_datum_types.dm index 7a7267d520b..d31f12ad61d 100644 --- a/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/new_weapon_types/weapon_datum_types.dm +++ b/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/new_weapon_types/weapon_datum_types.dm @@ -144,9 +144,28 @@ ai_fire_delay = 0.5 SECONDS used_nonphysical_ammo = OSW_AMMO_LIGHT weapon_control_flags = OSW_CONTROL_PILOT|OSW_CONTROL_AI - weapon_firing_flags = OSW_ALWAYS_FIRES_FORWARD + weapon_facing_flags = OSW_FACING_FRONT + firing_arc = 60 sort_priority = 8 +/datum/overmap_ship_weapon/burst_phaser/New() + .=..() + overheat_hud = new /atom/movable/screen/overheat() + overheat_hud.weapon_datum = src + + +/datum/overmap_ship_weapon/burst_phaser/on_swap_to(mob/user) + user.client.screen += overheat_hud + .=..() + +/datum/overmap_ship_weapon/burst_phaser/on_swap_from(mob/user) + user.client.screen -= overheat_hud + .=..() + +/datum/overmap_ship_weapon/burst_phaser/Destroy() + QDEL_NULL(overheat_hud) + .=..() + /datum/overmap_ship_weapon/phaser // Big blue laser name = "Phaser Banks" standard_projectile_type = /obj/item/projectile/beam/laser/heavylaser/phaser @@ -166,6 +185,24 @@ return FALSE return TRUE +/datum/overmap_ship_weapon/phaser/New() + .=..() + overheat_hud = new /atom/movable/screen/overheat() + overheat_hud.weapon_datum = src + + +/datum/overmap_ship_weapon/phaser/on_swap_to(mob/user) + user.client.screen += overheat_hud + .=..() + +/datum/overmap_ship_weapon/phaser/on_swap_from(mob/user) + user.client.screen -= overheat_hud + .=..() + +/datum/overmap_ship_weapon/phaser/Destroy() + QDEL_NULL(overheat_hud) + .=..() + /datum/overmap_ship_weapon/phaser_pd // Gauss laser name = "Point-Defense Phasers" standard_projectile_type = /obj/item/projectile/beam/laser/phaser/pd @@ -467,8 +504,8 @@ /datum/overmap_ship_weapon/laser_ams name = "Laser Anti Missile System" standard_projectile_type = /obj/item/projectile/beam/laser/point_defense - burst_size = 1 - fire_delay = 0.35 SECONDS + burst_size = 2 + fire_delay = 0.10 SECONDS //buffed because of energy weapon maintinence optimal_range = 30 select_alert = "Laser target acquisition systems: online." overmap_firing_sounds = list('nsv13/sound/effects/ship/burst_phaser.ogg', 'nsv13/sound/effects/ship/burst_phaser2.ogg') @@ -478,6 +515,23 @@ used_nonphysical_ammo = OSW_AMMO_LIGHT sort_priority = 2 +/datum/overmap_ship_weapon/laser_ams/New() + .=..() + overheat_hud = new /atom/movable/screen/overheat() + +/datum/overmap_ship_weapon/laser_ams/on_swap_to(mob/user) + user.client.screen += overheat_hud + .=..() + +/datum/overmap_ship_weapon/laser_ams/on_swap_from(mob/user) + user.client.screen -= overheat_hud + .=..() + +/datum/overmap_ship_weapon/laser_ams/Destroy() + QDEL_NULL(overheat_hud) + .=..() + + /datum/overmap_ship_weapon/plasma_caster name = "MPAC" burst_size = 1 diff --git a/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/selection.dm b/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/selection.dm index 488fcf393cd..79b894afcbc 100644 --- a/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/selection.dm +++ b/nsv13/code/modules/overmap/weapons/delta_overmap_ship_weapons/selection.dm @@ -52,18 +52,18 @@ /obj/structure/overmap/proc/drop_weapon_selection(mob/user) if(controlled_weapon_datum[user]) var/datum/overmap_ship_weapon/dropping_weapon = controlled_weapon_datum[user] - dropping_weapon.on_swap_from() + dropping_weapon.on_swap_from(user) controlled_weapons -= user controlled_weapon_datum -= user /** * This unselects all weapons for all users. */ -/obj/structure/overmap/proc/drop_all_weapon_selection() +/obj/structure/overmap/proc/drop_all_weapon_selection(mob/user) for(var/key in controlled_weapon_datum) var/datum/overmap_ship_weapon/dropping_weapon = controlled_weapon_datum[key] if(dropping_weapon) - dropping_weapon.on_swap_from() + dropping_weapon.on_swap_from(user) controlled_weapon_datum.Cut() controlled_weapons.Cut() @@ -96,8 +96,8 @@ if(old_weapon == src) return TRUE //No changes being applied. if(old_weapon) - old_weapon.on_swap_from() - on_swap_to() + old_weapon.on_swap_from(user) + on_swap_to(user) if(overmap_select_sound && !no_sound && world.time > linked_overmap.switchsound_cooldown) linked_overmap.relay(overmap_select_sound) linked_overmap.switchsound_cooldown = world.time + 5 SECONDS diff --git a/nsv13/code/modules/overmap/weapons/projectiles_fx.dm b/nsv13/code/modules/overmap/weapons/projectiles_fx.dm index 21e01fa540f..799d0a43e2c 100644 --- a/nsv13/code/modules/overmap/weapons/projectiles_fx.dm +++ b/nsv13/code/modules/overmap/weapons/projectiles_fx.dm @@ -687,7 +687,7 @@ Misc projectile types, effects, think of this as the special FX file. ///Designed to be spammed like crazy, but can be buffed to do extremely solid damage when you overclock the guns. /obj/item/projectile/beam/laser/phaser - damage = 30 + damage = 35 flag = "overmap_medium" relay_projectile_type = /obj/item/projectile/beam/laser/phaser/relayed diff --git a/nsv13/code/modules/research/designs/ship_weapon_designs.dm b/nsv13/code/modules/research/designs/ship_weapon_designs.dm index 68c6b52f025..042f69d3e8b 100644 --- a/nsv13/code/modules/research/designs/ship_weapon_designs.dm +++ b/nsv13/code/modules/research/designs/ship_weapon_designs.dm @@ -228,3 +228,35 @@ build_path = /obj/item/ship_weapon/ammunition/railgun_ammo/uranium category = list("Advanced Munitions") departmental_flags = DEPARTMENTAL_FLAG_MUNITIONS + + +//subspace cooling stuff +/datum/design/board/subspace_cooler + name = "Machine Design (Experimental Subspace Cooling Unit)" + desc = "Allows for the construction of a Subspace Cooling Unit." + id = "subspace_cooler" + build_type = PROTOLATHE|IMPRINTER + materials = list(/datum/material/glass = 2000, /datum/material/gold = 1000) + build_path = /obj/item/circuitboard/machine/cooling + category = list("Advanced Munitions") + departmental_flags = DEPARTMENTAL_FLAG_MUNITIONS + +/datum/design/board/subspace_storage + name = "Machine Design (Experimental Subspace Storage Unit)" + desc = "Allows for the construction of a Subspace Storage Unit." + id = "subspace_storage" + build_type = PROTOLATHE|IMPRINTER + materials = list(/datum/material/glass = 2000, /datum/material/gold = 1000) + build_path = /obj/item/circuitboard/machine/cooling/storage + category = list("Advanced Munitions") + departmental_flags = DEPARTMENTAL_FLAG_MUNITIONS + +/datum/design/heatsink + name = "Subspace Heatsink" + desc = "Allows for the construction of a subspace enabled Heatsink." + id = "heatsink" + build_type = PROTOLATHE + materials = list(/datum/material/bluespace=2000, /datum/material/copper=30000, /datum/material/iron=1000) + build_path = /obj/item/stock_parts/heatsink + category = list("Advanced Munitions") + departmental_flags = DEPARTMENTAL_FLAG_MUNITIONS diff --git a/nsv13/code/modules/research/techweb/all_nsv_nodes.dm b/nsv13/code/modules/research/techweb/all_nsv_nodes.dm index a30cdb77164..cc978b18014 100644 --- a/nsv13/code/modules/research/techweb/all_nsv_nodes.dm +++ b/nsv13/code/modules/research/techweb/all_nsv_nodes.dm @@ -262,3 +262,15 @@ design_ids = list("borg_upgrade_muniapp") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 + +/// Munitions Upgrade for Energy Weapons +/datum/techweb_node/weapon_cooling + id = "weapon_cooling" + tech_tier = 4 + display_name = "Subspace Manipulation" + description = "Experimental uses of subspace for more than just communications" + prereq_ids = list("comptech" , "adv_engi" , "adv_power") + design_ids = list("subspace_storage" , "subspace_cooler" , "heatsink") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000) + export_price = 5000 + hidden = FALSE //Todo, make this specific diff --git a/nsv13/icons/actions/engine_actions.dmi b/nsv13/icons/actions/engine_actions.dmi new file mode 100644 index 00000000000..0ccbb8248fe Binary files /dev/null and b/nsv13/icons/actions/engine_actions.dmi differ diff --git a/nsv13/icons/obj/energy_weapons.dmi b/nsv13/icons/obj/energy_weapons.dmi index 1d9aab52ff0..55a948d253f 100644 Binary files a/nsv13/icons/obj/energy_weapons.dmi and b/nsv13/icons/obj/energy_weapons.dmi differ diff --git a/nsv13/icons/obj/subspace.dmi b/nsv13/icons/obj/subspace.dmi new file mode 100644 index 00000000000..e9e005193af Binary files /dev/null and b/nsv13/icons/obj/subspace.dmi differ diff --git a/nsv13/icons/overmap/gui/mask.dmi b/nsv13/icons/overmap/gui/mask.dmi new file mode 100644 index 00000000000..82503fdcbef Binary files /dev/null and b/nsv13/icons/overmap/gui/mask.dmi differ diff --git a/nsv13/icons/overmap/gui/overheat_gauge.dmi b/nsv13/icons/overmap/gui/overheat_gauge.dmi new file mode 100644 index 00000000000..2359e1ae70d Binary files /dev/null and b/nsv13/icons/overmap/gui/overheat_gauge.dmi differ diff --git a/nsv13/sound/effects/warpcore/overload.ogg b/nsv13/sound/effects/warpcore/overload.ogg new file mode 100644 index 00000000000..754cd4b4d49 Binary files /dev/null and b/nsv13/sound/effects/warpcore/overload.ogg differ diff --git a/tgui/packages/tgui/interfaces/EnergyWeapons.js b/tgui/packages/tgui/interfaces/EnergyWeapons.js index 6cd81a1ed01..cdd658295dd 100644 --- a/tgui/packages/tgui/interfaces/EnergyWeapons.js +++ b/tgui/packages/tgui/interfaces/EnergyWeapons.js @@ -13,6 +13,10 @@ export const EnergyWeapons = (props, context) => { const goal = data.goal; const powerAlloc = data.powerAlloc; const maxPower = data.maxPower; + const maxheat = data.maxheat; + const heat = data.heat; + const alignment = data.alignment; + const frequency = data.frequency; return ( { {(chargeRate / 1e+6) + ' mW'}
+ Heat: + +