mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 21:10:30 +01:00
Remaps Intrepid and ports CM's double seats (#20809)
## About PR - Introduces a dropship-esque Intrepid, making it feel more like a public transport in a overpopulous city, while trying to avoid chokepoints. - Ports the CM's double seats. - Removes access restriction from Intrepid's side airlocks, to be in par with the main airlock. - Deletes some rogue pipes near hangar bay. - Re-adds a small oven which was introduced in #16449. With slight tweaks and different colour palette. This is probably an awful way to port CM's vehicle seats, but in testing only issue I've found is: when the chair occupant punches someone, their own buckle off-set will get reset. I am not sure why. The way the double seats work is, it'll let anyone pass through as long as both of the seats aren't occupied at the same time. ## Images <details><summary>Details</summary> <p>  </p> </details> --------- Signed-off-by: Kano <89972582+kano-dot@users.noreply.github.com> Co-authored-by: hazelrat <83198434+hazelrat@users.noreply.github.com>
This commit is contained in:
@@ -227,6 +227,68 @@
|
||||
if(!buckled)
|
||||
generate_overlay_cache(material, CACHE_TYPE_SPECIAL, ABOVE_HUMAN_LAYER)
|
||||
|
||||
/// Unique feature - you can put two seats on same tile with different pixel_offsets, humans will be buckled with respective offsets
|
||||
/// and only when both seats taken, seats will be made dense and, therefore, tile will become unpassible
|
||||
/// **Does not support more than two seats on a tile. It causes layer issues when used facing horizontal directions in a vertical row.**
|
||||
/obj/structure/bed/stool/chair/shuttle/double
|
||||
obj_flags = NONE // We don't want this subtype able to be rotated.
|
||||
var/buckle_offset_x = 0
|
||||
var/buckle_offset_y = 0
|
||||
var/mob_old_x = 0
|
||||
var/mob_old_y = 0
|
||||
|
||||
/obj/structure/bed/stool/chair/shuttle/double/Initialize()
|
||||
. = ..()
|
||||
|
||||
addtimer(CALLBACK(src, PROC_REF(setup_buckle_offsets)), 1 SECONDS)
|
||||
|
||||
/obj/structure/bed/stool/chair/shuttle/double/CanPass(atom/movable/mover, turf/target, height, air_group)
|
||||
return TRUE
|
||||
|
||||
/obj/structure/bed/stool/chair/shuttle/double/proc/setup_buckle_offsets()
|
||||
if(pixel_x != 0)
|
||||
buckle_offset_x = pixel_x
|
||||
if(pixel_y != 0)
|
||||
buckle_offset_y = pixel_y
|
||||
|
||||
/// Buckling offset and density adjustment.
|
||||
/obj/structure/bed/stool/chair/shuttle/double/post_buckle(mob/M)
|
||||
. = ..()
|
||||
if(buckled)
|
||||
if(buckled != M)
|
||||
return
|
||||
|
||||
if(buckle_offset_x != 0)
|
||||
mob_old_x = M.pixel_x
|
||||
M.pixel_x = buckle_offset_x
|
||||
if(buckle_offset_y != 0)
|
||||
mob_old_y = M.pixel_y
|
||||
M.pixel_y = buckle_offset_y
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
if(buckle_offset_x != 0)
|
||||
M.pixel_x = mob_old_x
|
||||
mob_old_x = 0
|
||||
if(buckle_offset_y != 0)
|
||||
M.pixel_y = mob_old_y
|
||||
mob_old_y = 0
|
||||
|
||||
for(var/obj/structure/bed/stool/chair/shuttle/double/VS in get_turf(src))
|
||||
if(VS != src)
|
||||
//if both seats on same tile have buckled mob, we become dense, otherwise, not dense.
|
||||
if(buckled)
|
||||
if(VS.buckled)
|
||||
REMOVE_TRAIT(buckled, TRAIT_UNDENSE, TRAIT_DOUBLE_SEATS)
|
||||
REMOVE_TRAIT(VS.buckled, TRAIT_UNDENSE, TRAIT_DOUBLE_SEATS)
|
||||
else
|
||||
ADD_TRAIT(buckled, TRAIT_UNDENSE, TRAIT_DOUBLE_SEATS)
|
||||
else
|
||||
if(VS.buckled)
|
||||
ADD_TRAIT(VS.buckled, TRAIT_UNDENSE, TRAIT_DOUBLE_SEATS)
|
||||
REMOVE_TRAIT(M, TRAIT_UNDENSE, TRAIT_DOUBLE_SEATS)
|
||||
break
|
||||
|
||||
/obj/structure/bed/stool/chair/cockpit
|
||||
name = "cockpit seating"
|
||||
icon_state = "cockpit_preview"
|
||||
|
||||
Reference in New Issue
Block a user