New in-wall engine sprites (#64839)

adds new variants for each sized engine to look like they are in walls (basically cut down sprites with their density set to false (because they dont take up the full tiles, especially the huge engines are 3x3 but only take up 1x3, they must have no density or they block way more than they should))

before: dumb looking gap
image

after: nice clean engine (and box trams are soul filled, also, trams kinda too small to really get any sort of diagnal design working)
image

showcase of each sized thruster:
image

added new structures that act like walls but arent turfs, and can only be used (and can be used!) on trams!
comes with 3 types, iron, plastitanium, and titanium. supports more types being added if you want but these are basically all that a tram needs to use:
Untitled.1.mp4

also removed a duplicated APC in a maint on tram, and removed cycle helpers from random maint airlocks that arent actually meant to cycle (they are solo)
Why It's Good For The Game

engines are kinda too bulky and organically shaped so they dont really fit some designs such as tram as a good example, in wall designs allow you to add thrusters onto any shaped ship easily without worrying about ensuring the walls around them being shaped right, as it appears to have the bulk of the engine merged inside the wall
Changelog

cl Nari Harimoto
imageadd: New thruster sprites to allow for in-wall designs
fix: removed cycle helpers from 2 random tram maint airlocks that arent meant to cycle (solo airlocks) and a duplicated APC in tram maint
expansion: the tram now has new walls! they are structures that function like walls so as to be built on the tram, create and deconstruct via the new tram girder (screwdriver on the girder to deconstruct, there is no displaced version ie wrench)
/cl
This commit is contained in:
小月猫
2022-03-01 15:06:51 -05:00
committed by GitHub
parent 25d69a5782
commit b757fce02a
13 changed files with 1832 additions and 1641 deletions
+58 -2
View File
@@ -25,6 +25,8 @@
. += span_notice("The bolts are <i>loosened</i>, but the <b>screws</b> are holding [src] together.")
if(GIRDER_DISASSEMBLED)
. += span_notice("[src] is disassembled! You probably shouldn't be able to see this examine message.")
if(GIRDER_TRAM)
. += span_notice("[src] is designed for tram usage. Deconstructed with a screwdriver!")
/obj/structure/girder/attackby(obj/item/W, mob/user, params)
var/platingmodifier = 1
@@ -49,9 +51,13 @@
if(iswallturf(loc))
to_chat(user, span_warning("There is already a wall present!"))
return
if(!isfloorturf(src.loc))
to_chat(user, span_warning("A floor must be present to build a false wall!"))
if(!isfloorturf(src.loc) && state != GIRDER_TRAM)
to_chat(user, span_warning("A floor must be present to build a wall!"))
return
if(state == GIRDER_TRAM)
if(!locate(/obj/structure/industrial_lift/tram) in src.loc.contents)
to_chat(user, span_warning("Tram walls can only be built on tram floors!"))
return
if (locate(/obj/structure/falsewall) in src.loc.contents)
to_chat(user, span_warning("There is already a false wall present!"))
return
@@ -110,6 +116,20 @@
else if(state == GIRDER_REINF)
to_chat(user, span_warning("You can't finish a reinforced girder with regular iron. You need a plasteel sheet for that."))
return
else if(state == GIRDER_TRAM)
if(sheets.get_amount() < 2)
to_chat(user, span_warning("You need at least two sheets to add plating!"))
return
to_chat(user, span_notice("You start adding plating..."))
if (do_after(user, 4 SECONDS, target = src))
if(sheets.get_amount() < 2)
return
sheets.use(2)
to_chat(user, span_notice("You add the plating."))
var/obj/structure/tramwall/tram_wall = new sheets.tram_wall_type(loc)
transfer_fingerprints_to(tram_wall)
qdel(src)
return
else
if(sheets.get_amount() < 2)
to_chat(user, span_warning("You need two sheets of iron to finish a wall!"))
@@ -171,6 +191,23 @@
if(!sheets.has_unique_girder && sheets.material_type)
var/M = sheets.sheettype
if(state == GIRDER_TRAM)
if(!sheets.tram_wall_type)
to_chat(user, span_warning("This tram girder only works with Titanium, Plastitanium, or Iron!"))
return
if(sheets.get_amount() < 2)
to_chat(user, span_warning("You need at least two sheets to add plating!"))
return
to_chat(user, span_notice("You start adding plating..."))
if (do_after(user, 4 SECONDS, target = src))
if(sheets.get_amount() < 2)
return
sheets.use(2)
to_chat(user, span_notice("You add the plating."))
var/obj/structure/tramwall/tram_wall = new sheets.tram_wall_type(loc)
transfer_fingerprints_to(tram_wall)
qdel(src)
return
if(state == GIRDER_DISPLACED)
var/falsewall_type = text2path("/obj/structure/falsewall/[M]")
if(!falsewall_type)
@@ -229,6 +266,21 @@
return TRUE
. = FALSE
if(state == GIRDER_TRAM)
user.visible_message(span_warning("[user] disassembles the girder."),
span_notice("You start to disassemble the girder..."),
span_hear("You hear clanking and banging noises."))
if(tool.use_tool(src, user, 4 SECONDS, volume=100))
if(state != GIRDER_TRAM)
return
state = GIRDER_DISASSEMBLED
to_chat(user, span_notice("You disassemble the girder."))
var/obj/item/stack/sheet/iron/M = new (loc, 2)
if (!QDELETED(M))
M.add_fingerprint(user)
qdel(src)
return TRUE
if(state == GIRDER_DISPLACED)
user.visible_message(span_warning("[user] disassembles the girder."),
span_notice("You start to disassemble the girder..."),
@@ -332,6 +384,10 @@
girderpasschance = 0
max_integrity = 350
/obj/structure/girder/tram
name = "tram girder"
state = GIRDER_TRAM
//////////////////////////////////////////// cult girder //////////////////////////////////////////////
@@ -0,0 +1,98 @@
/*
* Tram Walls
*/
/obj/structure/tramwall
name = "wall"
desc = "A huge chunk of metal used to separate rooms."
anchored = TRUE
icon = 'icons/turf/walls/wall.dmi'
icon_state = "wall-0"
base_icon_state = "wall"
layer = LOW_OBJ_LAYER
density = TRUE
opacity = TRUE
max_integrity = 100
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WALLS)
can_be_unanchored = FALSE
can_atmos_pass = ATMOS_PASS_DENSITY
rad_insulation = RAD_MEDIUM_INSULATION
material_flags = MATERIAL_EFFECTS
var/mineral = /obj/item/stack/sheet/iron
var/mineral_amount = 2
var/tram_wall_type = /obj/structure/tramwall
var/girder_type = /obj/structure/girder/tram
/obj/structure/tramwall/Initialize(mapload)
. = ..()
var/obj/item/stack/initialized_mineral = new mineral
set_custom_materials(initialized_mineral.mats_per_unit, mineral_amount)
qdel(initialized_mineral)
air_update_turf(TRUE, TRUE)
/obj/structure/tramwall/attackby(obj/item/welder, mob/user, params)
if(welder.tool_behaviour == TOOL_WELDER)
if(!welder.tool_start_check(user, amount=0))
return FALSE
to_chat(user, span_notice("You begin slicing through the outer plating..."))
if(welder.use_tool(src, user, 10 SECONDS, volume=100))
to_chat(user, span_notice("You remove the outer plating."))
dismantle(user, TRUE)
else
return ..()
/obj/structure/tramwall/proc/dismantle(mob/user, disassembled=TRUE, obj/item/tool = null)
user.visible_message(span_notice("[user] dismantles the wall."), span_notice("You dismantle the wall."))
if(tool)
tool.play_tool_sound(src, 100)
else
playsound(src, 'sound/items/welder.ogg', 100, TRUE)
deconstruct(disassembled)
/obj/structure/tramwall/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
if(disassembled)
new girder_type(loc)
if(mineral_amount)
for(var/i in 1 to mineral_amount)
new mineral(loc)
qdel(src)
/obj/structure/tramwall/get_dumping_location()
return null
/obj/structure/tramwall/examine_status(mob/user)
to_chat(user, span_notice("The outer plating is <b>welded</b> firmly in place."))
return null
/*
* Other misc tramwall types
*/
/obj/structure/tramwall/titanium
name = "wall"
desc = "A light-weight titanium wall used in shuttles."
icon = 'icons/turf/walls/shuttle_wall.dmi'
icon_state = "shuttle_wall-0"
base_icon_state = "shuttle_wall"
mineral = /obj/item/stack/sheet/mineral/titanium
tram_wall_type = /obj/structure/tramwall/titanium
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
/obj/structure/tramwall/plastitanium
name = "wall"
desc = "An evil wall of plasma and titanium."
icon = 'icons/turf/walls/plastitanium_wall.dmi'
icon_state = "plastitanium_wall-0"
base_icon_state = "plastitanium_wall"
mineral = /obj/item/stack/sheet/mineral/plastitanium
tram_wall_type = /obj/structure/tramwall/plastitanium
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)