mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-17 19:14:15 +01:00
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:
@@ -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)
|
||||
Reference in New Issue
Block a user