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:
+
+ act('vent')} />
Charge:
{
bad: [-Infinity, 0.15],
}} />
+
+