Engineering spriting (detailing & port), portable shield balance, bugfixes (#21862)

EXTREMELY MINOR MISCELLANEOUS CHANGES TEEHEE

changes:
- imageadd: "Adds +bolted, +welded, +lights overlays to several large
machines for easier visual identification of whether or not clicking on
that emitter will kill you or not, etc."
- imageadd: "Modifies the base of the Shield Wall Generator sprite to
better match that of the Emergency Shield Projector (and so they can use
the same overlays mentioned above)."
- imageadd: "Tweaks the Emitter's directional sprites slightly so that
the base doesn't seem to change shape quite so drastically when
rotated."
- imageadd: "Ports very pretty space heater sprites made by Wallemations
and vinylspiders from /tg/."
  - imageadd: "Adds unique sprites for Old and Heavy-Duty power cells."
- balance: "Increases power draw and range of Emergency Shield
Projectors."
  - balance: "Increases power draw of Shield Wall Generators."
- balance: "Greatly reduces time for debugger to fix APCs corrupted by
electrical storms."
- balance: "Increases multi-z shield capacitor reserve charge and
maximum throughput, so that high-strength shields can actually be run
(at high power draw)."
- balance: "Tweaks the INDRA power output formula to scale better with
increasing temperature."
- balance: "Slight adjustments to space heater efficiency formula with a
friendly handwave to entropy."
- balance: "Old power cells have a 5% chance to be defective and have
slightly lower maxcharge than standard cells."
  - qol: "Adds extended examine hints to engineering objects."
- qol: "Extends list of object types which INDRA core field will
interact peacefully with."
- qol: "Improved space heater UX (chat msgs changed to balloon alerts,
audible feedback, etc.)"
  - code_imp: "Updates many code comments to use DMdocs."
- code_imp: "Consolidates various shield generation machine sprites in
scattered across multiple files into a single shield generator machines
sprite file."
  - bugfix: "Fixes Emergency Shield Projector hard del issue."
- bugfix: "Emergency Shield Projector now shuts down as intended if the
area's APC gets completely drained."
- bugfix: "Firing the gyrotron into the INDRA while no reactants are
present will no longer generate heat."
  - bugfix: "Fixes INDRA runtime."
- bugfix: "Fixes Power Monitoring app not displaying grid sensors when
run from a modular computer held in-hand."
  
  Bolted/welded down Emitter:
<img width="130" height="101" alt="Screenshot 2026-02-13 123842"
src="https://github.com/user-attachments/assets/8357b5ea-77e6-46f7-b4a0-724aaa141cef"
/>

Modified shieldwall sprites (with old ones for comparison)
<img width="667" height="103" alt="Screenshot 2026-02-13 111422"
src="https://github.com/user-attachments/assets/2b1e849e-f955-49cb-b094-0bef098a754f"
/>

Shields actually useful for damage control now (though they'll blow
through APC charge if you go as crazy as this):
<img width="804" height="891" alt="Screenshot 2026-02-13 124245"
src="https://github.com/user-attachments/assets/39268b42-5abe-4a3b-ba8a-a18bdc63873e"
/>

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:

| Path | Original Author | License |
| --- | --- | --- |
| icons/obj/atmos.dmi (all "sheater*") | [Wallemations, VinylSpiders
(/tg/station #93800)](https://github.com/tgstation/tgstation/pull/93800)
| CC-BY-SA |

---------

Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
This commit is contained in:
Batrachophreno
2026-03-11 16:39:54 +00:00
committed by GitHub
co-authored by SleepyGemmy
parent adeaaaee4a
commit 0c342878e5
27 changed files with 523 additions and 353 deletions
@@ -98,12 +98,12 @@ GLOBAL_LIST_INIT(tape_roll_applications, list())
/obj/item/tape/engineering/mechanics_hints(mob/user, distance, is_adjacent)
. += ..()
. += "You can use a multitool on this tape to allow emergency shield generators to deploy shields on this tile."
. += "You can use a multitool on this tape to allow emergency shield projectors to deploy shields on this tile."
/obj/item/tape/engineering/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
if(shield_marker)
. += "This strip of tape has been modified to serve as a marker for emergency shield generators to lock onto."
. += "This strip of tape has been modified to serve as a marker for emergency shield projectors to lock onto."
/obj/item/tape/engineering/attackby(obj/item/attacking_item, mob/user)
if(attacking_item.tool_behaviour == TOOL_MULTITOOL)
+11 -2
View File
@@ -52,10 +52,17 @@
/obj/item/cell/crap
name = "old power cell"
desc = "A cheap, old power cell. It's probably been in use for quite some time now."
icon_state = "ocell"
origin_tech = list(TECH_POWER = 0)
maxcharge = 1500
maxcharge = 900
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 40)
/obj/item/cell/crap/Initialize()
. = ..()
// 5% chance to make the cell rigged.
if(prob(5))
rigged = TRUE
/obj/item/cell/crap/empty/Initialize()
. = ..()
charge = 0
@@ -79,14 +86,16 @@
/obj/item/cell/apc
name = "heavy-duty power cell"
desc = "A rechargeable electrochemical power cell. This variant is rated for use in APCs and other high-draw electronics in industrial environments. Environments like, say, a space ship."
origin_tech = list(TECH_POWER = 1)
icon_state = "hcell"
maxcharge = 15000
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 50)
/obj/item/cell/high
name = "high-capacity power cell"
origin_tech = list(TECH_POWER = 2)
icon_state = "hcell"
icon_state = "h+cell"
maxcharge = 30000
matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 60)