mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-20 04:17:33 +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:
@@ -196,3 +196,8 @@
|
||||
#define TRAIT_UNHITTABLE_BY_PROJECTILES "unhittable_by_projectiles"
|
||||
///This mob is currently blocking a projectile.
|
||||
#define TRAIT_BLOCKING_PROJECTILES "blocking_projectiles"
|
||||
|
||||
/// This trait is used for double shuttle seats in a single tile, used in handling occupant density.
|
||||
#define TRAIT_DOUBLE_SEATS "double_seats"
|
||||
/// Apply this to make a mob passable by other mobs.
|
||||
#define TRAIT_UNDENSE "undense"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
var/open = FALSE // Start closed so people don't heat up ovens with the door open
|
||||
///Looping sound for the oven
|
||||
var/datum/looping_sound/oven/oven_loop
|
||||
///Open door icon_state
|
||||
var/door_open = "ovenopen"
|
||||
///Closed door icon_state
|
||||
var/door_closed = "ovenclosed"
|
||||
var/door_open_overlay = "ovenopen_on"
|
||||
var/door_closed_overlay = "ovenclosed_on"
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/reagent_containers/cooking_container/oven,
|
||||
@@ -54,15 +60,15 @@
|
||||
ClearOverlays()
|
||||
update_baking_audio()
|
||||
if(!open)
|
||||
icon_state = "ovenclosed"
|
||||
icon_state = door_closed
|
||||
if(!stat)
|
||||
var/image/ovenclosed_on = image('icons/obj/machinery/cooking_machines.dmi', "ovenclosed_on")
|
||||
var/image/ovenclosed_on = image('icons/obj/machinery/cooking_machines.dmi', door_closed_overlay)
|
||||
ovenclosed_on.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
AddOverlays(ovenclosed_on)
|
||||
else
|
||||
icon_state = "ovenopen"
|
||||
icon_state = door_open
|
||||
if(!stat)
|
||||
var/image/ovenopen_on = image('icons/obj/machinery/cooking_machines.dmi', "ovenopen_on")
|
||||
var/image/ovenopen_on = image('icons/obj/machinery/cooking_machines.dmi', door_open_overlay)
|
||||
ovenopen_on.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
AddOverlays(ovenopen_on)
|
||||
..()
|
||||
@@ -141,3 +147,15 @@
|
||||
icon_state = "adhomai_ovenclosed_off"
|
||||
else
|
||||
icon_state = "adhomai_oven_open"
|
||||
|
||||
/obj/machinery/appliance/cooker/oven/small
|
||||
name = "compact oven"
|
||||
desc = "A lightweight, small oven. Doesn't hold much, but it cooks just fine."
|
||||
density = FALSE
|
||||
|
||||
max_contents = 2
|
||||
icon_state = "small_ovenopen"
|
||||
door_open = "small_ovenopen"
|
||||
door_closed = "small_ovenclosed"
|
||||
door_open_overlay = "small_ovenopen_on"
|
||||
door_closed_overlay = "small_ovenclosed_on"
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
for(var/obj/item/grab/G in moving_mob.grabbed_by)
|
||||
if(G.assailant == src)
|
||||
return TRUE
|
||||
if(HAS_TRAIT(src, TRAIT_UNDENSE))
|
||||
return TRUE
|
||||
return (!mover.density || !density || lying)
|
||||
else
|
||||
return (!mover.density || !density || lying)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
author: Kano
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Remapped the SCCV Intrepid."
|
||||
- rscadd: "Ports CM's double vehicle seats."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
@@ -322,8 +322,17 @@
|
||||
/area/shuttle/intrepid/main_compartment
|
||||
name = "Intrepid Main Compartment"
|
||||
|
||||
/area/shuttle/intrepid/cargo_bay
|
||||
name = "Intrepid Cargo Bay"
|
||||
/area/shuttle/intrepid/port_compartment
|
||||
name = "Intrepid Port Compartment"
|
||||
|
||||
/area/shuttle/intrepid/starboard_compartment
|
||||
name = "Intrepid Starboard Compartment"
|
||||
|
||||
/area/shuttle/intrepid/junction_compartment
|
||||
name = "Intrepid Junction Compartment"
|
||||
|
||||
/area/shuttle/intrepid/buffet
|
||||
name = "Intrepid Buffet"
|
||||
|
||||
/area/shuttle/intrepid/medical
|
||||
name = "Intrepid Medical Compartment"
|
||||
@@ -334,8 +343,8 @@
|
||||
/area/shuttle/intrepid/port_storage
|
||||
name = "Intrepid Port Nacelle"
|
||||
|
||||
/area/shuttle/intrepid/cockpit
|
||||
name = "Intrepid Cockpit"
|
||||
/area/shuttle/intrepid/flight_deck
|
||||
name = "Intrepid Flight Deck"
|
||||
|
||||
/area/shuttle/canary
|
||||
name = "Canary"
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
/datum/shuttle/autodock/overmap/intrepid
|
||||
name = "Intrepid"
|
||||
move_time = 20
|
||||
shuttle_area = list(/area/shuttle/intrepid/main_compartment, /area/shuttle/intrepid/cargo_bay, /area/shuttle/intrepid/medical, /area/shuttle/intrepid/engineering, /area/shuttle/intrepid/port_storage, /area/shuttle/intrepid/cockpit)
|
||||
shuttle_area = list(/area/shuttle/intrepid/main_compartment, /area/shuttle/intrepid/port_compartment, /area/shuttle/intrepid/starboard_compartment, /area/shuttle/intrepid/junction_compartment, /area/shuttle/intrepid/buffet, /area/shuttle/intrepid/medical, /area/shuttle/intrepid/engineering, /area/shuttle/intrepid/port_storage, /area/shuttle/intrepid/flight_deck)
|
||||
dock_target = "airlock_shuttle_intrepid"
|
||||
current_location = "nav_hangar_intrepid"
|
||||
landmark_transition = "nav_transit_intrepid"
|
||||
|
||||
+1666
-1189
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user