diff --git a/code/__DEFINES/camera.dm b/code/__DEFINES/camera.dm
index a95112341a..bd5e8f42fb 100644
--- a/code/__DEFINES/camera.dm
+++ b/code/__DEFINES/camera.dm
@@ -7,6 +7,10 @@
#define CAMERA_NET_ALAMO "Alamo"
#define CAMERA_NET_NORMANDY "Normandy"
#define CAMERA_NET_MIDWAY "Midway"
+#define CAMERA_NET_CYCLONE "Cyclone"
+#define CAMERA_NET_TORNADO "Tornado"
+#define CAMERA_NET_TYPHOON "Typhoon"
+#define CAMERA_NET_TRIPOLI "Tripoli"
#define CAMERA_NET_COLONY "Colony"
#define CAMERA_NET_ARES "ARES"
diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm
index a27c7a5689..3aae19e74d 100644
--- a/code/__DEFINES/shuttles.dm
+++ b/code/__DEFINES/shuttles.dm
@@ -117,6 +117,9 @@
#define DROPSHIP_NORMANDY "dropship_normandy"
#define DROPSHIP_UPP "dropship_upp"
#define DROPSHIP_CYCLONE "dropship_cyclone"
+#define DROPSHIP_TORNADO "dropship_tornado"
+#define DROPSHIP_TYPHOON "dropship_typhoon"
+#define DROPSHIP_TRIPOLI "dropship_tripoli"
#define ALMAYER_DROPSHIP_LZ1 "almayer-hangar-lz1"
#define ALMAYER_DROPSHIP_LZ2 "almayer-hangar-lz2"
diff --git a/code/__DEFINES/strippable.dm b/code/__DEFINES/strippable.dm
new file mode 100644
index 0000000000..f62c4d6c1b
--- /dev/null
+++ b/code/__DEFINES/strippable.dm
@@ -0,0 +1,30 @@
+// All of these must be matched in StripMenu.js.
+#define STRIPPABLE_ITEM_HEAD "head"
+#define STRIPPABLE_ITEM_BACK "back"
+#define STRIPPABLE_ITEM_MASK "wear_mask"
+#define STRIPPABLE_ITEM_EYES "glasses"
+#define STRIPPABLE_ITEM_L_EAR "wear_l_ear"
+#define STRIPPABLE_ITEM_R_EAR "wear_r_ear"
+#define STRIPPABLE_ITEM_JUMPSUIT "w_uniform"
+#define STRIPPABLE_ITEM_SUIT "wear_suit"
+#define STRIPPABLE_ITEM_GLOVES "gloves"
+#define STRIPPABLE_ITEM_FEET "shoes"
+#define STRIPPABLE_ITEM_SUIT_STORAGE "j_store"
+#define STRIPPABLE_ITEM_ID "id"
+#define STRIPPABLE_ITEM_BELT "belt"
+#define STRIPPABLE_ITEM_LPOCKET "l_store"
+#define STRIPPABLE_ITEM_RPOCKET "r_store"
+#define STRIPPABLE_ITEM_LHAND "l_hand"
+#define STRIPPABLE_ITEM_RHAND "r_hand"
+#define STRIPPABLE_ITEM_HANDCUFFS "handcuffs"
+#define STRIPPABLE_ITEM_LEGCUFFS "legcuffs"
+
+
+/// This slot is not obscured.
+#define STRIPPABLE_OBSCURING_NONE 0
+
+/// This slot is completely obscured, and cannot be accessed.
+#define STRIPPABLE_OBSCURING_COMPLETELY 1
+
+/// This slot can't be seen, but can be accessed.
+#define STRIPPABLE_OBSCURING_HIDDEN 2
diff --git a/code/_macros.dm b/code/_macros.dm
index 6c1f37b4bc..0e85827bc0 100644
--- a/code/_macros.dm
+++ b/code/_macros.dm
@@ -67,6 +67,11 @@
#define LAZYREMOVEASSOC(L, K, V) if(L) { if(L[K]) { L[K] -= V; if(!length(L[K])) L -= K; } if(!length(L)) L = null; }
///Accesses an associative list, returns null if nothing is found
#define LAZYACCESSASSOC(L, I, K) L ? L[I] ? L[I][K] ? L[I][K] : null : null : null
+///Performs an insertion on the given lazy list with the given key and value. If the value already exists, a new one will not be made.
+#define LAZYORASSOCLIST(lazy_list, key, value) \
+ LAZYINITLIST(lazy_list); \
+ LAZYINITLIST(lazy_list[key]); \
+ lazy_list[key] |= value;
// Insert an object A into a sorted list using cmp_proc (/code/_helpers/cmp.dm) for comparison.
#define ADD_SORTED(list, A, cmp_proc) if(!list.len) {list.Add(A)} else {list.Insert(FindElementIndex(A, list, cmp_proc), A)}
diff --git a/code/_onclick/click_hold.dm b/code/_onclick/click_hold.dm
index 996f7ed2bf..e972821615 100644
--- a/code/_onclick/click_hold.dm
+++ b/code/_onclick/click_hold.dm
@@ -97,9 +97,8 @@
/client/MouseDrop(datum/over_object, datum/src_location, over_location, src_control, over_control, params)
. = ..()
+ if(over_object)
+ SEND_SIGNAL(over_object, COMSIG_ATOM_DROP_ON, src_location, src)
if(src_location)
SEND_SIGNAL(src_location, COMSIG_ATOM_DROPPED_ON, over_object, src)
-
- if(over_object)
- SEND_SIGNAL(over_object, COMSIG_ATOM_DROP_ON, src_location, src)
diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm
index fff5e9200d..4dcc0d6468 100644
--- a/code/_onclick/drag_drop.dm
+++ b/code/_onclick/drag_drop.dm
@@ -7,6 +7,7 @@
*/
/atom/MouseDrop(atom/over)
if(!usr || !over) return
+
if(!Adjacent(usr) || !over.Adjacent(usr)) return // should stop you from dragging through windows
spawn(0)
diff --git a/code/datums/elements/strippable.dm b/code/datums/elements/strippable.dm
new file mode 100644
index 0000000000..e0daaee74a
--- /dev/null
+++ b/code/datums/elements/strippable.dm
@@ -0,0 +1,536 @@
+/// An element for atoms that, when dragged and dropped onto a mob, opens a strip panel.
+/datum/element/strippable
+ element_flags = ELEMENT_BESPOKE | ELEMENT_DETACH
+ id_arg_index = 2
+
+ /// An assoc list of keys to /datum/strippable_item
+ var/list/items
+
+ /// A proc path that returns TRUE/FALSE if we should show the strip panel for this entity.
+ /// If it does not exist, the strip menu will always show.
+ /// Will be called with (mob/user).
+ var/should_strip_proc_path
+
+ /// An existing strip menus
+ var/list/strip_menus
+
+/datum/element/strippable/Attach(datum/target, list/items, should_strip_proc_path)
+ . = ..()
+ if (!isatom(target))
+ return ELEMENT_INCOMPATIBLE
+
+ RegisterSignal(target, COMSIG_ATOM_DROP_ON, PROC_REF(mouse_drop_onto))
+
+ src.items = items
+ src.should_strip_proc_path = should_strip_proc_path
+
+/datum/element/strippable/Detach(datum/source, force)
+ . = ..()
+
+ UnregisterSignal(source, COMSIG_ATOM_DROP_ON)
+
+ if (!isnull(strip_menus))
+ QDEL_NULL(strip_menus[source])
+
+/datum/element/strippable/proc/mouse_drop_onto(datum/source, atom/over, mob/user)
+ SIGNAL_HANDLER
+ if (user == source)
+ return
+
+ if (over == source)
+ return
+
+ var/mob/overmob = over
+ if (!ishuman(overmob))
+ return
+
+ if (!overmob.Adjacent(source))
+ return
+
+ if (!overmob.client)
+ return
+
+ if (overmob.client != user)
+ return
+
+ if (!isnull(should_strip_proc_path) && !call(source, should_strip_proc_path)(overmob))
+ return
+
+ var/datum/strip_menu/strip_menu
+
+ if (isnull(strip_menu))
+ strip_menu = new(source, src)
+ LAZYSET(strip_menus, source, strip_menu)
+
+ INVOKE_ASYNC(strip_menu, PROC_REF(tgui_interact), overmob)
+
+/// A representation of an item that can be stripped down
+/datum/strippable_item
+ /// The STRIPPABLE_ITEM_* key
+ var/key
+
+ /// Should we warn about dangerous clothing?
+ var/warn_dangerous_clothing = TRUE
+
+/// Gets the item from the given source.
+/datum/strippable_item/proc/get_item(atom/source)
+
+/// Tries to equip the item onto the given source.
+/// Returns TRUE/FALSE depending on if it is allowed.
+/// This should be used for checking if an item CAN be equipped.
+/// It should not perform the equipping itself.
+/datum/strippable_item/proc/try_equip(atom/source, obj/item/equipping, mob/user)
+ if ((equipping.flags_item & ITEM_ABSTRACT))
+ return FALSE
+ if ((equipping.flags_item & NODROP))
+ to_chat(user, SPAN_WARNING("You can't put [equipping] on [source], it's stuck to your hand!"))
+ return FALSE
+ if (ishuman(source))
+ var/mob/living/carbon/human/sourcehuman = source
+ if(HAS_TRAIT(sourcehuman, TRAIT_UNSTRIPPABLE) && !sourcehuman.is_mob_incapacitated())
+ to_chat(src, SPAN_DANGER("[sourcehuman] is too strong to force [equipping] onto them!"))
+ return
+ return TRUE
+
+/// Start the equipping process. This is the proc you should yield in.
+/// Returns TRUE/FALSE depending on if it is allowed.
+/datum/strippable_item/proc/start_equip(atom/source, obj/item/equipping, mob/user)
+ source.visible_message(
+ SPAN_NOTICE("[user] tries to put [equipping] on [source]."),
+ SPAN_NOTICE("[user] tries to put [equipping] on you.")
+ )
+
+ if (ismob(source))
+ var/mob/sourcemob = source
+ sourcemob.attack_log += text("\[[time_stamp()]\] [key_name(sourcemob)] is having [equipping] put on them by [key_name(user)]")
+ user.attack_log += text("\[[time_stamp()]\] [key_name(user)] is putting [equipping] on [key_name(sourcemob)]")
+
+ return TRUE
+
+/// The proc that places the item on the source. This should not yield.
+/datum/strippable_item/proc/finish_equip(atom/source, obj/item/equipping, mob/user)
+ SHOULD_NOT_SLEEP(TRUE)
+
+/// Tries to unequip the item from the given source.
+/// Returns TRUE/FALSE depending on if it is allowed.
+/// This should be used for checking if it CAN be unequipped.
+/// It should not perform the unequipping itself.
+/datum/strippable_item/proc/try_unequip(atom/source, mob/user)
+ SHOULD_NOT_SLEEP(TRUE)
+
+ var/obj/item/item = get_item(source)
+ if (isnull(item))
+ return FALSE
+
+ if (user.action_busy && !skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED))
+ to_chat(user, SPAN_WARNING("You can't do this right now."))
+ return FALSE
+
+ if ((item.flags_inventory & CANTSTRIP) || ((item.flags_item & NODROP) && !(item.flags_item & FORCEDROP_CONDITIONAL)) || (item.flags_item & ITEM_ABSTRACT))
+ return FALSE
+
+ if (ishuman(source))
+ var/mob/living/carbon/human/sourcehuman = source
+ if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (sourcehuman.stat == DEAD || sourcehuman.health < HEALTH_THRESHOLD_CRIT) && !sourcehuman.get_target_lock(user.faction_group))
+ to_chat(user, SPAN_WARNING("You can't strip items of a crit or dead member of another faction!"))
+ return FALSE
+
+ if(HAS_TRAIT(sourcehuman, TRAIT_UNSTRIPPABLE) && !sourcehuman.is_mob_incapacitated())
+ to_chat(src, SPAN_DANGER("[sourcehuman] has an unbreakable grip on their equipment!"))
+ return
+
+ return TRUE
+
+/// Start the unequipping process. This is the proc you should yield in.
+/// Returns TRUE/FALSE depending on if it is allowed.
+/datum/strippable_item/proc/start_unequip(atom/source, mob/user)
+ var/obj/item/item = get_item(source)
+ if (isnull(item))
+ return FALSE
+
+ source.visible_message(
+ SPAN_WARNING("[user] tries to remove [source]'s [item]."),
+ SPAN_DANGER("[user] tries to remove your [item].")
+ )
+
+ if (ismob(source))
+ var/mob/sourcemob = source
+ sourcemob.attack_log += text("\[[time_stamp()]\] [key_name(sourcemob)] is being stripped of [item] by [key_name(user)]")
+ user.attack_log += text("\[[time_stamp()]\] [key_name(user)] is stripping [key_name(sourcemob)] of [item]")
+
+ item.add_fingerprint(user)
+
+ return TRUE
+
+/// The proc that unequips the item from the source. This should not yield.
+/datum/strippable_item/proc/finish_unequip(atom/source, mob/user)
+
+/// Returns a STRIPPABLE_OBSCURING_* define to report on whether or not this is obscured.
+/datum/strippable_item/proc/get_obscuring(atom/source)
+ SHOULD_NOT_SLEEP(TRUE)
+ return STRIPPABLE_OBSCURING_NONE
+
+/// Returns the ID of this item's strippable action.
+/// Return `null` if there is no alternate action.
+/// Any return value of this must be in StripMenu.
+/datum/strippable_item/proc/get_alternate_action(atom/source, mob/user)
+ return null
+
+/// Performs an alternative action on this strippable_item.
+/// `has_alternate_action` needs to be TRUE.
+/datum/strippable_item/proc/alternate_action(atom/source, mob/user)
+
+/// Returns whether or not this item should show.
+/datum/strippable_item/proc/should_show(atom/source, mob/user)
+ return TRUE
+
+/// A preset for equipping items onto mob slots
+/datum/strippable_item/mob_item_slot
+ /// The ITEM_SLOT_* to equip to.
+ var/item_slot
+
+/datum/strippable_item/proc/has_no_item_alt_action()
+ return FALSE
+
+/datum/strippable_item/mob_item_slot/get_item(atom/source)
+ if (!ismob(source))
+ return null
+
+ var/mob/mob_source = source
+ return mob_source.get_item_by_slot(key)
+
+/datum/strippable_item/mob_item_slot/try_equip(atom/source, obj/item/equipping, mob/user)
+ . = ..()
+ if (!.)
+ return
+
+ if (!ismob(source))
+ return FALSE
+ if (user.action_busy)
+ to_chat(user, SPAN_WARNING("You can't do this right now."))
+ return FALSE
+ if (!equipping.mob_can_equip(
+ source,
+ key
+ ))
+ to_chat(user, SPAN_WARNING("\The [equipping] doesn't fit in that place!"))
+ return FALSE
+ if(equipping.flags_item & WIELDED)
+ equipping.unwield(user)
+ return TRUE
+
+/datum/strippable_item/mob_item_slot/start_equip(atom/source, obj/item/equipping, mob/user)
+ . = ..()
+ if (!.)
+ return
+
+ if (!ismob(source))
+ return FALSE
+
+ var/time_to_strip = HUMAN_STRIP_DELAY
+ var/mob/sourcemob = source
+
+ if (ishuman(sourcemob) && ishuman(user))
+ var/mob/living/carbon/human/sourcehuman = sourcemob
+ var/mob/living/carbon/human/userhuman = user
+ time_to_strip = userhuman.get_strip_delay(userhuman, sourcehuman)
+
+ if (!do_after(user, time_to_strip, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, source, INTERRUPT_MOVED, BUSY_ICON_FRIENDLY))
+ return FALSE
+
+ if (!equipping.mob_can_equip(
+ sourcemob,
+ key
+ ))
+ return FALSE
+
+ if (!user.temp_drop_inv_item(equipping))
+ return FALSE
+
+ return TRUE
+
+/datum/strippable_item/mob_item_slot/finish_equip(atom/source, obj/item/equipping, mob/user)
+ if (!ismob(source))
+ return FALSE
+
+ var/mob/sourcemob = source
+ sourcemob.equip_to_slot_if_possible(equipping, key)
+
+/datum/strippable_item/mob_item_slot/get_obscuring(atom/source)
+ return FALSE
+
+/datum/strippable_item/mob_item_slot/start_unequip(atom/source, mob/user)
+ . = ..()
+ if (!.)
+ return
+
+ return start_unequip_mob(get_item(source), source, user)
+
+/datum/strippable_item/mob_item_slot/finish_unequip(atom/source, mob/user)
+ var/obj/item/item = get_item(source)
+ if (isnull(item))
+ return FALSE
+
+ if (!ismob(source))
+ return FALSE
+
+ return finish_unequip_mob(item, source, user)
+
+/// A utility function for `/datum/strippable_item`s to start unequipping an item from a mob.
+/datum/strippable_item/mob_item_slot/proc/start_unequip_mob(obj/item/item, mob/living/carbon/human/source, mob/living/carbon/human/user)
+ var/time_to_strip = HUMAN_STRIP_DELAY
+
+ if (istype(source) && istype(user))
+ time_to_strip = user.get_strip_delay(user, source)
+
+ if (!do_after(user, time_to_strip, INTERRUPT_ALL, BUSY_ICON_HOSTILE, source, INTERRUPT_MOVED, BUSY_ICON_HOSTILE))
+ return FALSE
+
+ return TRUE
+
+/// A utility function for `/datum/strippable_item`s to finish unequipping an item from a mob.
+/datum/strippable_item/mob_item_slot/proc/finish_unequip_mob(obj/item/item, mob/source, mob/user)
+ if (!source.drop_inv_item_on_ground(item, force = (item.flags_item & FORCEDROP_CONDITIONAL))) //force if we can drop the item in this case
+ return FALSE
+
+ if (ismob(source))
+ var/mob/sourcemob = source
+ sourcemob.attack_log += text("\[[time_stamp()]\] [key_name(sourcemob)] has been stripped of [item] by [key_name(user)]")
+ user.attack_log += text("\[[time_stamp()]\] [key_name(user)] has been stripped of [key_name(sourcemob)] of [item]")
+
+ // Updates speed in case stripped speed affecting item
+ source.recalculate_move_delay = TRUE
+
+/// A representation of the stripping UI
+/datum/strip_menu
+ /// The owner who has the element /datum/element/strippable
+ var/atom/movable/owner
+
+ /// The strippable element itself
+ var/datum/element/strippable/strippable
+
+ /// A lazy list of user mobs to a list of strip menu keys that they're interacting with
+ var/list/interactions
+
+/datum/strip_menu/New(atom/movable/owner, datum/element/strippable/strippable)
+ . = ..()
+ src.owner = owner
+ src.strippable = strippable
+
+/datum/strip_menu/Destroy()
+ owner = null
+ strippable = null
+
+ return ..()
+
+/datum/strip_menu/tgui_interact(mob/user, datum/tgui/ui)
+ . = ..()
+ ui = SStgui.try_update_ui(user, src, ui)
+ if (!ui)
+ ui = new(user, src, "StripMenu")
+ ui.open()
+
+
+/datum/strip_menu/ui_assets(mob/user)
+ return list(
+ get_asset_datum(/datum/asset/simple/inventory),
+ )
+
+/datum/strip_menu/ui_data(mob/user)
+ var/list/data = list()
+
+ var/list/items = list()
+
+ for (var/strippable_key in strippable.items)
+ var/datum/strippable_item/item_data = strippable.items[strippable_key]
+
+ if (!item_data.should_show(owner, user))
+ continue
+
+ var/list/result
+
+ if(strippable_key in LAZYACCESS(interactions, user))
+ LAZYSET(result, "interacting", TRUE)
+
+ var/obscuring = item_data.get_obscuring(owner)
+ if (obscuring != STRIPPABLE_OBSCURING_NONE)
+ LAZYSET(result, "obscured", obscuring)
+ items[strippable_key] = result
+ continue
+
+ var/obj/item/item = item_data.get_item(owner)
+ if (isnull(item))
+ if (item_data.has_no_item_alt_action())
+ LAZYINITLIST(result)
+ result["no_item_action"] = item_data.get_alternate_action(owner, user)
+ items[strippable_key] = result
+ continue
+
+ LAZYINITLIST(result)
+
+ result["icon"] = icon2base64(icon(item.icon, item.icon_state, frame = 1))
+ result["name"] = item.name
+ result["alternate"] = item_data.get_alternate_action(owner, user)
+
+ items[strippable_key] = result
+
+ data["items"] = items
+
+ // While most `\the`s are implicit, this one is not.
+ // In this case, `\The` would otherwise be used.
+ // This doesn't match with what it's used for, which is to say "Stripping the alien drone",
+ // as opposed to "Stripping The alien drone".
+ // Human names will still show without "the", as they are proper nouns.
+ data["name"] = "\the [owner]"
+
+ return data
+
+/datum/strip_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+ . = ..()
+ if (.)
+ return
+
+ . = TRUE
+
+ var/mob/user = ui.user
+
+ switch (action)
+ if ("equip")
+ var/key = params["key"]
+ var/datum/strippable_item/strippable_item = strippable.items[key]
+
+ if (isnull(strippable_item))
+ return
+
+ if (!strippable_item.should_show(owner, user))
+ return
+
+ if (strippable_item.get_obscuring(owner) == STRIPPABLE_OBSCURING_COMPLETELY)
+ return
+
+ var/item = strippable_item.get_item(owner)
+ if (!isnull(item))
+ return
+
+ var/obj/item/held_item = user.get_held_item()
+ if (isnull(held_item))
+ return
+
+ if (!strippable_item.try_equip(owner, held_item, user))
+ return
+
+ LAZYORASSOCLIST(interactions, user, key)
+
+ // Yielding call
+ var/should_finish = strippable_item.start_equip(owner, held_item, user)
+
+ LAZYREMOVEASSOC(interactions, user, key)
+
+ if (!should_finish)
+ return
+
+ if (QDELETED(src) || QDELETED(owner))
+ return
+
+ // They equipped an item in the meantime
+ if (!isnull(strippable_item.get_item(owner)))
+ return
+
+ if (!user.Adjacent(owner))
+ return
+
+ strippable_item.finish_equip(owner, held_item, user)
+ if ("strip")
+ var/key = params["key"]
+ var/datum/strippable_item/strippable_item = strippable.items[key]
+
+ if (isnull(strippable_item))
+ return
+
+ if (!strippable_item.should_show(owner, user))
+ return
+
+ if (strippable_item.get_obscuring(owner) == STRIPPABLE_OBSCURING_COMPLETELY)
+ return
+
+ var/item = strippable_item.get_item(owner)
+ if (isnull(item))
+ return
+
+ if (!strippable_item.try_unequip(owner, user))
+ return
+
+ LAZYORASSOCLIST(interactions, user, key)
+
+ var/should_unequip = strippable_item.start_unequip(owner, user)
+
+ LAZYREMOVEASSOC(interactions, user, key)
+
+ // Yielding call
+ if (!should_unequip)
+ return
+
+ if (QDELETED(src) || QDELETED(owner))
+ return
+
+ // They changed the item in the meantime
+ if (strippable_item.get_item(owner) != item)
+ return
+
+ if (!user.Adjacent(owner))
+ return
+
+ strippable_item.finish_unequip(owner, user)
+ if ("alt")
+ var/key = params["key"]
+ var/datum/strippable_item/strippable_item = strippable.items[key]
+
+ if (isnull(strippable_item))
+ return
+
+ if (!strippable_item.should_show(owner, user))
+ return
+
+ if (strippable_item.get_obscuring(owner) == STRIPPABLE_OBSCURING_COMPLETELY)
+ return
+
+ var/item = strippable_item.get_item(owner)
+ if (isnull(item) && !strippable_item.has_no_item_alt_action())
+ return
+
+ if (isnull(strippable_item.get_alternate_action(owner, user)))
+ return
+
+ LAZYORASSOCLIST(interactions, user, key)
+
+ // Potentially yielding
+ strippable_item.alternate_action(owner, user)
+
+ LAZYREMOVEASSOC(interactions, user, key)
+
+/datum/strip_menu/ui_host(mob/user)
+ return owner
+
+/datum/strip_menu/ui_status(mob/user, datum/ui_state/state)
+ . = ..()
+
+ if (isliving(user))
+ var/mob/living/living_user = user
+
+ if (
+ . == UI_UPDATE \
+ && user.stat == CONSCIOUS \
+ && living_user.body_position == LYING_DOWN \
+ && user.Adjacent(owner)
+ )
+ return UI_INTERACTIVE
+
+/// Creates an assoc list of keys to /datum/strippable_item
+/proc/create_strippable_list(types)
+ var/list/strippable_items = list()
+
+ for (var/strippable_type in types)
+ var/datum/strippable_item/strippable_item = new strippable_type
+ strippable_items[strippable_item.key] = strippable_item
+
+ return strippable_items
diff --git a/code/game/area/Sulaco.dm b/code/game/area/Sulaco.dm
index d498be21db..a327707541 100644
--- a/code/game/area/Sulaco.dm
+++ b/code/game/area/Sulaco.dm
@@ -150,6 +150,47 @@
return TRUE
+/area/shuttle/tornado
+ name = "command dropship Tornado"
+ icon_state = "shuttlered"
+ base_muffle = MUFFLE_HIGH
+ soundscape_interval = 30
+ is_landing_zone = TRUE
+ ceiling = CEILING_REINFORCED_METAL
+
+/area/shuttle/tornado/Enter(atom/movable/O, atom/oldloc)
+ if(istype(O, /obj/structure/barricade))
+ return FALSE
+ return TRUE
+
+/area/shuttle/typhoon
+ name = "heavy-lift dropship Typhoon"
+ icon_state = "shuttlered"
+ base_muffle = MUFFLE_HIGH
+ soundscape_interval = 30
+ is_landing_zone = TRUE
+ ceiling = CEILING_REINFORCED_METAL
+
+/area/shuttle/typhoon/Enter(atom/movable/O, atom/oldloc)
+ if(istype(O, /obj/structure/barricade))
+ return FALSE
+ return TRUE
+
+/area/shuttle/tripoli
+ name = "dropship Tripoli"
+ icon_state = "shuttlered"
+ base_muffle = MUFFLE_HIGH
+ soundscape_interval = 30
+ is_landing_zone = TRUE
+ ceiling = CEILING_REINFORCED_METAL
+
+/area/shuttle/tripoli/Enter(atom/movable/O, atom/oldloc)
+ if(istype(O, /obj/structure/barricade))
+ return FALSE
+ return TRUE
+
+
+
//DISTRESS SHUTTLES
/area/shuttle/distress
diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm
index fc23282581..7af666884b 100644
--- a/code/game/machinery/camera/presets.dm
+++ b/code/game/machinery/camera/presets.dm
@@ -120,6 +120,18 @@
/obj/structure/machinery/camera/autoname/golden_arrow/midway
network = list(CAMERA_NET_GOLDEN_ARROW, CAMERA_NET_MIDWAY)
+/obj/structure/machinery/camera/autoname/golden_arrow/cyclone
+ network = list(CAMERA_NET_GOLDEN_ARROW, CAMERA_NET_CYCLONE)
+
+/obj/structure/machinery/camera/autoname/golden_arrow/tornado
+ network = list(CAMERA_NET_GOLDEN_ARROW, CAMERA_NET_TORNADO)
+
+/obj/structure/machinery/camera/autoname/golden_arrow/typhoon
+ network = list(CAMERA_NET_GOLDEN_ARROW, CAMERA_NET_TYPHOON)
+
+/obj/structure/machinery/camera/autoname/golden_arrow/tripoli
+ network = list(CAMERA_NET_GOLDEN_ARROW, CAMERA_NET_TRIPOLI)
+
//used by the landing camera dropship equipment. Do not place them right under where the dropship lands.
//Should place them near each corner of your LZs.
/obj/structure/machinery/camera/autoname/lz_camera
diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm
index a1ea4f9f87..7f60e85919 100644
--- a/code/game/machinery/computer/camera_console.dm
+++ b/code/game/machinery/computer/camera_console.dm
@@ -313,4 +313,20 @@
name = "\improper 'Midway' camera controls"
network = list(CAMERA_NET_MIDWAY, CAMERA_NET_LASER_TARGETS)
+/obj/structure/machinery/computer/cameras/dropship/cyclone
+ name = "\improper 'Cyclone' camera controls"
+ network = list(CAMERA_NET_CYCLONE, CAMERA_NET_LASER_TARGETS)
+
+/obj/structure/machinery/computer/cameras/dropship/tornado
+ name = "\improper 'Tornado' camera controls"
+ network = list(CAMERA_NET_TORNADO, CAMERA_NET_LASER_TARGETS)
+
+/obj/structure/machinery/computer/cameras/dropship/typhoon
+ name = "\improper 'Typhoon' camera controls"
+ network = list(CAMERA_NET_TYPHOON, CAMERA_NET_LASER_TARGETS)
+
+/obj/structure/machinery/computer/cameras/dropship/tripoli
+ name = "\improper 'Tripoli' camera controls"
+ network = list(CAMERA_NET_TRIPOLI, CAMERA_NET_LASER_TARGETS)
+
#undef DEFAULT_MAP_SIZE
diff --git a/code/game/machinery/computer/dropship_weapons.dm b/code/game/machinery/computer/dropship_weapons.dm
index 7aaf2dae49..ab77f35d26 100644
--- a/code/game/machinery/computer/dropship_weapons.dm
+++ b/code/game/machinery/computer/dropship_weapons.dm
@@ -896,6 +896,63 @@
firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship()
shuttle_tag = DROPSHIP_MIDWAY
+/obj/structure/machinery/computer/dropship_weapons/midway/small
+ icon = 'icons/obj/structures/machinery/computer.dmi'
+ icon_state = "cameras"
+ density = FALSE
+
+/obj/structure/machinery/computer/dropship_weapons/cyclone
+ name = "\improper 'Cyclone' weapons controls"
+ req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT)
+ firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship()
+ shuttle_tag = DROPSHIP_CYCLONE
+
+/obj/structure/machinery/computer/dropship_weapons/cyclone/small
+ icon = 'icons/obj/structures/machinery/computer.dmi'
+ icon_state = "cameras"
+ density = FALSE
+
+/obj/structure/machinery/computer/dropship_weapons/tornado
+ name = "\improper 'Tornado' weapons controls"
+ req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT)
+ firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship()
+ shuttle_tag = DROPSHIP_TORNADO
+
+/obj/structure/machinery/computer/dropship_weapons/tornado/small
+ icon = 'icons/obj/structures/machinery/computer.dmi'
+ icon_state = "cameras"
+ density = FALSE
+
+/obj/structure/machinery/computer/dropship_weapons/typhoon
+ name = "\improper 'Typhoon' weapons controls"
+ req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT)
+ firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship()
+ shuttle_tag = DROPSHIP_TYPHOON
+
+/obj/structure/machinery/computer/dropship_weapons/typhoon/small
+ icon = 'icons/obj/structures/machinery/computer.dmi'
+ icon_state = "cameras"
+ density = FALSE
+
+/obj/structure/machinery/computer/dropship_weapons/tripoli
+ name = "\improper 'Tripoli' weapons controls"
+ req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT)
+ firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship()
+ shuttle_tag = DROPSHIP_TRIPOLI
+
+/obj/structure/machinery/computer/dropship_weapons/tripoli/small
+ icon = 'icons/obj/structures/machinery/computer.dmi'
+ icon_state = "cameras"
+ density = FALSE
+
+/obj/structure/machinery/computer/dropship_weapons/dropship1
+ name = "\improper 'Alamo' weapons controls"
+ shuttle_tag = DROPSHIP_ALAMO
+
+/obj/structure/machinery/computer/dropship_weapons/dropship2
+ name = "\improper 'Normandy' weapons controls"
+ shuttle_tag = DROPSHIP_NORMANDY
+
/obj/structure/machinery/computer/dropship_weapons/Destroy()
. = ..()
QDEL_NULL(firemission_envelope)
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index e571b0f30c..968ef59ef3 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -905,6 +905,9 @@
/obj/structure/machinery/door/airlock/hatch/cockpit/two
icon = 'icons/obj/structures/doors/dropship2_pilot.dmi'
+/obj/structure/machinery/door/airlock/hatch/cockpit/four
+ icon = 'icons/obj/structures/doors/dropship4_pilot.dmi'
+
/obj/structure/machinery/door/airlock/hatch/cockpit/upp
icon = 'icons/obj/structures/doors/dropshipupp_pilot.dmi'
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
index 0712d61f56..3d993ff637 100644
--- a/code/game/machinery/doors/multi_tile.dm
+++ b/code/game/machinery/doors/multi_tile.dm
@@ -329,6 +329,10 @@
name = "\improper Normandy cargo door"
icon = 'icons/obj/structures/doors/dropship2_cargo.dmi'
+/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds4
+ name = "\improper Midway cargo door"
+ icon = 'icons/obj/structures/doors/dropship4_cargo.dmi'
+
/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside
width = 2
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
index 7ba67133b5..327af25c33 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
@@ -98,7 +98,6 @@
list("USCM Technician Backpack", round(scale * 15), /obj/item/storage/backpack/marine/tech, VENDOR_ITEM_REGULAR),
list("USCM Satchel", round(scale * 15), /obj/item/storage/backpack/marine/satchel, VENDOR_ITEM_REGULAR),
list("Technician Chestrig", round(scale * 15), /obj/item/storage/backpack/marine/satchel/tech, VENDOR_ITEM_REGULAR),
- list("Shotgun Scabbard", round(scale * 5), /obj/item/storage/large_holster/m37, VENDOR_ITEM_REGULAR),
list("RESTRICTED BACKPACKS", -1, null, null),
list("Radio Telephone Backpack", round(max(1,(scale * 0.5))), /obj/item/storage/backpack/marine/satchel/rto, VENDOR_ITEM_REGULAR),
@@ -117,7 +116,6 @@
list("First-Aid Pouch (Injectors)", round(scale * 15), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR),
list("Flare Pouch (Full)", round(scale * 15), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR),
list("Magazine Pouch", round(scale * 15), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR),
- list("Shotgun Shell Pouch", round(scale * 15), /obj/item/storage/pouch/shotgun, VENDOR_ITEM_REGULAR),
list("Medium General Pouch", round(scale * 15), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR),
list("Pistol Magazine Pouch", round(scale * 15), /obj/item/storage/pouch/magazine/pistol, VENDOR_ITEM_REGULAR),
list("Pistol Pouch", round(scale * 15), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR),
@@ -131,7 +129,9 @@
list("Sling Pouch", round(scale * 1.25), /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR),
list("MASK", -1, null, null, null),
- list("Gas Mask", round(scale * 15), /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR),
+ list("M5 Standalone Gas Mask", round(scale * 15), /obj/item/clothing/mask/gas/m5, VENDOR_ITEM_REGULAR),
+ list("M5 Integrated Gas Mask", round(scale * 10), /obj/item/prop/helmetgarb/helmet_gasmask, VENDOR_ITEM_REGULAR),
+ list("Tactical Wrap", round(scale * 10), /obj/item/clothing/mask/rebreather/scarf/tacticalmask, VENDOR_ITEM_REGULAR),
list("Heat Absorbent Coif", round(scale * 10), /obj/item/clothing/mask/rebreather/scarf, VENDOR_ITEM_REGULAR),
list("Rebreather", round(scale * 10), /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR),
@@ -215,18 +215,14 @@
list("Sling Pouch", round(scale * 1.25), /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR),
list("MASK", -1, null, null, null),
- list("Gas Mask", round(scale * 15), /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR),
+ list("PMK-63 Gas Mask", round(scale * 15), /obj/item/clothing/mask/gas/upp, VENDOR_ITEM_REGULAR),
+ list("PMK-63N Integrated Gas Mask", round(scale * 10), /obj/item/prop/helmetgarb/helmet_gasmask/upp, VENDOR_ITEM_REGULAR),
list("Heat Absorbent Coif", round(scale * 10), /obj/item/clothing/mask/rebreather/scarf/tan, VENDOR_ITEM_REGULAR),
list("Rebreather", round(scale * 10), /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR),
list("MISCELLANEOUS", -1, null, null, null),
list("Ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles, VENDOR_ITEM_REGULAR),
- list("M1A1 Ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/v2, VENDOR_ITEM_REGULAR),
list("Prescription ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/prescription, VENDOR_ITEM_REGULAR),
- list("Marine RPG glasses", round(scale * 10), /obj/item/clothing/glasses/regular, VENDOR_ITEM_REGULAR),
- list("M5 Integrated Gas Mask", round(scale * 10), /obj/item/prop/helmetgarb/helmet_gasmask, VENDOR_ITEM_REGULAR),
- list("M10 Helmet Netting", round(scale * 10), /obj/item/prop/helmetgarb/netting, VENDOR_ITEM_REGULAR),
- list("M10 Helmet Rain Cover", round(scale * 10), /obj/item/prop/helmetgarb/raincover, VENDOR_ITEM_REGULAR),
list("Firearm Lubricant", round(scale * 15), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR),
list("UPP Airborne Reconnaissance Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/upp/platoon, VENDOR_ITEM_REGULAR),
list("UPPA Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/upp, VENDOR_ITEM_REGULAR),
@@ -259,7 +255,6 @@
list("BACKPACK", -1, null, null, null),
list("Lightweight IMP Backpack", round(scale * 15), /obj/item/storage/backpack/marine/standard, VENDOR_ITEM_REGULAR),
list("USCM Satchel", round(scale * 15), /obj/item/storage/backpack/marine/satchel, VENDOR_ITEM_REGULAR),
- list("Shotgun Scabbard", round(scale * 5), /obj/item/storage/large_holster/m37/standard, VENDOR_ITEM_REGULAR),
list("BELTS", -1, null, null),
list("M276 Pattern Ammo Load Rig", round(scale * 15), /obj/item/storage/belt/marine/standard, VENDOR_ITEM_REGULAR),
@@ -275,7 +270,6 @@
list("First-Aid Pouch (Injectors)", round(scale * 15), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR),
list("Flare Pouch (Full)", round(scale * 15), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR),
list("Magazine Pouch", round(scale * 15), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR),
- list("Shotgun Shell Pouch", round(scale * 15), /obj/item/storage/pouch/shotgun, VENDOR_ITEM_REGULAR),
list("Medium General Pouch", round(scale * 15), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR),
list("Pistol Magazine Pouch", round(scale * 15), /obj/item/storage/pouch/magazine/pistol, VENDOR_ITEM_REGULAR),
list("Pistol Pouch", round(scale * 15), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR),
@@ -289,7 +283,7 @@
list("Sling Pouch", round(scale * 1.25), /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR),
list("MASK", -1, null, null, null),
- list("Gas Mask", round(scale * 15), /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR),
+ list("M5 Standalone Gas Mask", round(scale * 15), /obj/item/clothing/mask/gas/m5, VENDOR_ITEM_REGULAR),
list("Heat Absorbent Coif", round(scale * 10), /obj/item/clothing/mask/rebreather/scarf, VENDOR_ITEM_REGULAR),
list("Rebreather", round(scale * 10), /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR),
@@ -298,8 +292,6 @@
list("M1A1 Ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/v2, VENDOR_ITEM_REGULAR),
list("Prescription ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/prescription, VENDOR_ITEM_REGULAR),
list("Marine RPG glasses", round(scale * 10), /obj/item/clothing/glasses/regular, VENDOR_ITEM_REGULAR),
- list("M10 Helmet Netting", round(scale * 10), /obj/item/prop/helmetgarb/netting, VENDOR_ITEM_REGULAR),
- list("M10 Helmet Rain Cover", round(scale * 10), /obj/item/prop/helmetgarb/raincover, VENDOR_ITEM_REGULAR),
list("Firearm Lubricant", round(scale * 15), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR),
list("USCM Flair", round(scale * 15), /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR),
list("FORECON Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/forecon, VENDOR_ITEM_REGULAR),
diff --git a/code/game/objects/effects/landmarks/item_pool.dm b/code/game/objects/effects/landmarks/item_pool.dm
index e01a6bbc3f..9a39a5cf59 100644
--- a/code/game/objects/effects/landmarks/item_pool.dm
+++ b/code/game/objects/effects/landmarks/item_pool.dm
@@ -41,3 +41,7 @@
/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot
icon_state = "ipool_bubshot"
type_to_spawn = /obj/item/ammo_magazine/shotgun/buckshot
+
+/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot/upp
+ icon_state = "ipool_bubshot"
+ type_to_spawn = /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot
diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm
index 1bdcab2ac6..d4c9c13b58 100644
--- a/code/game/objects/items/misc.dm
+++ b/code/game/objects/items/misc.dm
@@ -56,13 +56,13 @@
..()
if(!gripped)
user.visible_message(SPAN_NOTICE("[user] grips [src] tightly."), SPAN_NOTICE("You grip [src] tightly."))
- flags_item |= NODROP
+ flags_item |= NODROP|FORCEDROP_CONDITIONAL
ADD_TRAIT(user, TRAIT_HOLDS_CANE, TRAIT_SOURCE_ITEM)
user.AddComponent(/datum/component/footstep, 6, 35, 4, 1, "cane_step")
gripped = TRUE
else
user.visible_message(SPAN_NOTICE("[user] loosens \his grip on [src]."), SPAN_NOTICE("You loosen your grip on [src]."))
- flags_item &= ~NODROP
+ flags_item &= ~(NODROP|FORCEDROP_CONDITIONAL)
REMOVE_TRAIT(user, TRAIT_HOLDS_CANE, TRAIT_SOURCE_ITEM)
// Ideally, this would be something like a component added onto every mob that prioritizes certain sounds, such as stomping over canes.
var/component = user.GetComponent(/datum/component/footstep)
@@ -315,7 +315,7 @@
name = "dual purpose rappel-fulton harness"
desc = "A fulton Surface To Air Recovery System (STARS). Special latch/hook assembly allows for aircraft on flyby equipped with a rappel system to pick up the attached item or person. The complex assembly of venlar rigging and secured buckles takes some time to set up though."
icon_state = "rappel_harness_adv"
- var/shuttle_id = DROPSHIP_MIDWAY
+ var/shuttle_id
actions_types = list(/datum/action/item_action/STARS)
/obj/item/rappel_harness/extract/proc/try_extract(mob/living/carbon/human/user)
@@ -403,3 +403,24 @@
return
harness.try_extract(H)
+
+/obj/item/rappel_harness/extract/midway
+ shuttle_id = DROPSHIP_MIDWAY
+
+/obj/item/rappel_harness/extract/cyclone
+ shuttle_id = DROPSHIP_CYCLONE
+
+/obj/item/rappel_harness/extract/typhoon
+ shuttle_id = DROPSHIP_TYPHOON
+
+/obj/item/rappel_harness/extract/tornado
+ shuttle_id = DROPSHIP_TORNADO
+
+/obj/item/rappel_harness/extract/tripoli
+ shuttle_id = DROPSHIP_TRIPOLI
+
+/obj/item/rappel_harness/extract/alamo
+ shuttle_id = DROPSHIP_ALAMO
+
+/obj/item/rappel_harness/extract/normandy
+ shuttle_id = DROPSHIP_NORMANDY
diff --git a/code/game/objects/items/props/helmetgarb.dm b/code/game/objects/items/props/helmetgarb.dm
index ce63aaa13a..2c83f5beee 100644
--- a/code/game/objects/items/props/helmetgarb.dm
+++ b/code/game/objects/items/props/helmetgarb.dm
@@ -493,7 +493,7 @@
/obj/item/prop/helmetgarb/helmet_gasmask
name = "\improper M5 integrated gasmask"
- desc = "The USCM had its funding pulled for these when it became apparent that not every deployed enlisted was wearing a helmet 24/7; much to the bafflement of UA High Command."
+ desc = "The standard service gas mask of the USCM as part of a modernization program meant to replace the need for MOPP gear. While the program failed, these rarely do."
icon_state = "helmet_gasmask"
/obj/item/prop/helmetgarb/helmet_gasmask/on_enter_storage(obj/item/storage/internal/helmet_internal_inventory)
@@ -520,6 +520,11 @@
helmet_item.flags_inventory &= ~(BLOCKGASEFFECT)
helmet_item.flags_inv_hide &= ~(HIDEFACE)
+/obj/item/prop/helmetgarb/helmet_gasmask/upp
+ name = "\improper PMK-63N integrated gasmask"
+ desc = "The frontline variant of the PMK-63 produced to be compatible with in service helmets."
+ icon_state = "helmet_uppgasmask"
+
/obj/item/prop/helmetgarb/trimmed_wire
name = "trimmed barbed wire"
desc = "It is a length of barbed wire that's had most of the sharp points filed down so that it is safe to handle."
diff --git a/code/game/objects/items/reagent_containers/food/condiment.dm b/code/game/objects/items/reagent_containers/food/condiment.dm
index a13489f0af..e676b310f1 100644
--- a/code/game/objects/items/reagent_containers/food/condiment.dm
+++ b/code/game/objects/items/reagent_containers/food/condiment.dm
@@ -86,7 +86,7 @@
to_chat(user, SPAN_NOTICE(" You transfer [trans] units of the condiment to [target]."))
/obj/item/reagent_container/food/condiment/on_reagent_change()
- if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall" || icon_state == "hotsauce_cholula" || icon_state == "hotsauce_franks" || icon_state == "hotsauce_sriracha" || icon_state == "hotsauce_tabasco" || icon_state == "coldsauce_cole")
+ if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall" || icon_state == "hotsauce_cholula" || icon_state == "hotsauce_franks" || icon_state == "hotsauce_sriracha" || icon_state == "hotsauce_tabasco" || icon_state == "coldsauce_cole" || icon_state == "eggpowder" || icon_state == "milkpowder" || icon_state == "bjpowder" || icon_state == "ojpowder" || icon_state == "ajpowder" || icon_state == "wjpowder" || icon_state == "gjpowder" || icon_state == "pjpowder")
return
if(reagents.reagent_list.len > 0)
switch(reagents.get_master_reagent_id())
@@ -236,3 +236,79 @@
/obj/item/reagent_container/food/condiment/coldsauce/Initialize()
. = ..()
reagents.add_reagent("frostoil", 60)
+
+/obj/item/reagent_container/food/condiment/juice
+ name = "Juice Packet"
+ desc = "A small packet of dehydrated fruit-juice powder. Mix with water for a 'tasty' beverage. This one appears to be missing the label indicating what flavor it is however."
+ w_class = SIZE_TINY
+ icon_state = "bjpowder"
+ amount_per_transfer_from_this = 1
+ volume = 6
+
+/obj/item/reagent_container/food/condiment/juice/orange
+ name = "Orange Juice Packet"
+ desc = "A small packet of dehydrated orange-juice powder. Mix with water for a 'tasty' beverage."
+ icon_state = "ojpowder"
+
+/obj/item/reagent_container/food/condiment/juice/orange/Initialize()
+ . = ..()
+ reagents.add_reagent("dehydrated_orange_juice", 6)
+
+/obj/item/reagent_container/food/condiment/juice/apple
+ name = "Apple Juice Packet"
+ desc = "A small packet of dehydrated apple-juice powder. Mix with water for a 'tasty' beverage."
+ icon_state = "ajpowder"
+
+/obj/item/reagent_container/food/condiment/juice/apple/Initialize()
+ . = ..()
+ reagents.add_reagent("dehydrated_apple_juice", 6)
+
+/obj/item/reagent_container/food/condiment/juice/watermelon
+ name = "Watermelon Juice Packet"
+ desc = "A small packet of dehydrated watermelon-juice powder. Mix with water for a 'tasty' beverage."
+ icon_state = "wjpowder"
+
+/obj/item/reagent_container/food/condiment/juice/watermelon/Initialize()
+ . = ..()
+ reagents.add_reagent("dehydrated_watermelon_juice", 6)
+
+/obj/item/reagent_container/food/condiment/juice/grape
+ name = "Grape Juice Packet"
+ desc = "A small packet of dehydrated grape-juice powder. Mix with water for a 'tasty' beverage."
+ icon_state = "gjpowder"
+
+/obj/item/reagent_container/food/condiment/juice/grape/Initialize()
+ . = ..()
+ reagents.add_reagent("dehydrated_grape_juice", 6)
+
+/obj/item/reagent_container/food/condiment/juice/pineapple
+ name = "Pineapple Juice Packet"
+ desc = "A small packet of dehydrated pineapple-juice powder. Mix with water for a 'tasty' beverage."
+ icon_state = "pjpowder"
+
+/obj/item/reagent_container/food/condiment/juice/pineapple/Initialize()
+ . = ..()
+ reagents.add_reagent("dehydrated_pineapple_juice", 6)
+
+/obj/item/reagent_container/food/condiment/juice/egg
+ name = "Powdered Egg Packet"
+ desc = "A small packet of dehydrated egg-whites and egg-yolk powder. Mix with water for a passable alternative to the real deal."
+ icon_state = "eggpowder"
+ volume = 12
+ w_class = SIZE_SMALL
+
+/obj/item/reagent_container/food/condiment/juice/egg/Initialize()
+ . = ..()
+ reagents.add_reagent("dehydrated_egg_powder", 12)
+
+/obj/item/reagent_container/food/condiment/juice/milk
+ name = "Dehydrated Milk Packet"
+ desc = "A small packet of dehydrated milk powder. Mix with water for a passable alternative to actual milk."
+ icon_state = "milkpowder"
+ amount_per_transfer_from_this = 1
+ volume = 12
+ w_class = SIZE_SMALL
+
+/obj/item/reagent_container/food/condiment/juice/milk/Initialize()
+ . = ..()
+ reagents.add_reagent("dehydrated_milk_powder", 12)
diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm
index d27d6adb09..35f34d9d80 100644
--- a/code/game/objects/items/reagent_containers/food/snacks.dm
+++ b/code/game/objects/items/reagent_containers/food/snacks.dm
@@ -567,6 +567,16 @@
new newegg(loc)
qdel(src)
+/obj/item/reagent_container/food/snacks/egg/dried
+ name = "reconstituted egg"
+ desc = "An egg! Or it was in another life, at least. Now it's just a sad pile of goop that might work in recipes."
+ icon_state = "honeycomb"
+ filling_color = "#FDFFD1"
+
+/obj/item/reagent_container/food/snacks/egg/dried/Initialize()
+ . = ..()
+ reagents.add_reagent("egg", 1)
+
/obj/item/reagent_container/food/snacks/friedegg
name = "Fried egg"
desc = "A fried egg, with a touch of salt and pepper."
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index d544b5b281..bcfa7ba1fa 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -711,7 +711,7 @@
icon_state = "mealpack"
w_class = SIZE_SMALL
can_hold = list()
- storage_slots = 7
+ storage_slots = 8
max_w_class = 0
use_sound = "rip"
var/isopened = 0
@@ -728,8 +728,9 @@
//1 in 3 chance of getting a fortune cookie
var/cookie = rand(1,3)
var/matches_type = rand(1, 5)
+ var/juice_type = rand(1, 5)
if(cookie == 1)
- storage_slots = 8
+ storage_slots = 9
new /obj/item/reagent_container/food/snacks/packaged_meal(src, main)
new /obj/item/reagent_container/food/snacks/packaged_meal(src, second)
new /obj/item/reagent_container/food/snacks/packaged_meal(src, side)
@@ -749,6 +750,17 @@
new /obj/item/storage/fancy/cigar/matchbook/wy_gold(src)
if(5)
new /obj/item/storage/fancy/cigar/matchbook/brown(src)
+ switch(juice_type)
+ if(1)
+ new /obj/item/reagent_container/food/condiment/juice/orange(src)
+ if(2)
+ new /obj/item/reagent_container/food/condiment/juice/apple(src)
+ if(3)
+ new /obj/item/reagent_container/food/condiment/juice/watermelon(src)
+ if(4)
+ new /obj/item/reagent_container/food/condiment/juice/grape(src)
+ if(5)
+ new /obj/item/reagent_container/food/condiment/juice/pineapple(src)
/obj/item/storage/box/MRE/Initialize()
. = ..()
@@ -761,3 +773,14 @@
else if(!isopened)
isopened = 1
icon_state = "mealpackopened"
+
+/obj/item/storage/box/powderedmilk
+ name = "box of powdered milk packets"
+ desc = "It has a weird stain on it."
+
+/obj/item/storage/box/powderedmilk/fill_preset_inventory()
+ new /obj/item/reagent_container/food/condiment/juice/milk(src)
+ new /obj/item/reagent_container/food/condiment/juice/milk(src)
+ new /obj/item/reagent_container/food/condiment/juice/milk(src)
+ new /obj/item/reagent_container/food/condiment/juice/milk(src)
+ new /obj/item/reagent_container/food/condiment/juice/milk(src)
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index be7571fa84..36e0ea702a 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -101,7 +101,7 @@
w_class = SIZE_HUGE
icon_state = "offhand"
name = "offhand"
- flags_item = DELONDROP|TWOHANDED|WIELDED
+ flags_item = DELONDROP|TWOHANDED|WIELDED|CANTSTRIP
/obj/item/weapon/twohanded/offhand/unwield(mob/user)
if(flags_item & WIELDED)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index e523906f4c..ace85b2f23 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -367,6 +367,13 @@
/obj/structure/bed/chair/dropship/passenger/shuttle_chair
icon_state = "hotseat"
+/obj/structure/bed/chair/dropship/passenger/folded
+
+/obj/structure/bed/chair/dropship/passenger/folded/Initialize()
+ . = ..()
+ fold_down()
+
+
/obj/structure/bed/chair/dropship/passenger/BlockedPassDirs(atom/movable/mover, target_dir, height = 0, air_group = 0)
if(chair_state == DROPSHIP_CHAIR_UNFOLDED && istype(mover, /obj/vehicle/multitile) && !is_animating)
visible_message(SPAN_DANGER("[mover] slams into [src] and breaks it!"))
@@ -413,7 +420,7 @@
chair_state = DROPSHIP_CHAIR_BROKEN
else
chair_state = DROPSHIP_CHAIR_FOLDED
- addtimer(VARSET_CALLBACK(src, icon_state, "hotseat_new_folded"), 5) // animation length
+ addtimer(VARSET_CALLBACK(src, icon_state, "hotseat_new_folded"), 22) // animation length
/obj/structure/bed/chair/dropship/passenger/shuttle_chair/fold_down(break_it = 1)
if(chair_state == DROPSHIP_CHAIR_UNFOLDED)
diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm
index 7bbcc981de..2551af068d 100644
--- a/code/game/turfs/closed.dm
+++ b/code/game/turfs/closed.dm
@@ -276,7 +276,7 @@
/turf/closed/shuttle/midway
name = "\improper Midway"
- icon = 'icons/turf/dropship.dmi'
+ icon = 'icons/turf/dropship4.dmi'
icon_state = "1"
/turf/closed/shuttle/midway/transparent
@@ -290,6 +290,30 @@
/turf/closed/shuttle/cyclone/transparent
opacity = FALSE
+/turf/closed/shuttle/typhoon
+ name = "\improper Typhoon"
+ icon = 'icons/turf/dropship3.dmi'
+ icon_state = "1"
+
+/turf/closed/shuttle/typhoon/transparent
+ opacity = FALSE
+
+/turf/closed/shuttle/tornado
+ name = "\improper Tornado"
+ icon = 'icons/turf/dropship3.dmi'
+ icon_state = "1"
+
+/turf/closed/shuttle/tornado/transparent
+ opacity = FALSE
+
+/turf/closed/shuttle/tripoli
+ name = "\improper Tripoli"
+ icon = 'icons/turf/dropship.dmi'
+ icon_state = "1"
+
+/turf/closed/shuttle/tripoli/transparent
+ opacity = FALSE
+
/turf/closed/shuttle/twe_dropship
name = "\improper UD4-UK"
icon = 'icons/turf/twedropship.dmi'
diff --git a/code/game/turfs/transit.dm b/code/game/turfs/transit.dm
index d3bad3bf95..2e5396d0b1 100644
--- a/code/game/turfs/transit.dm
+++ b/code/game/turfs/transit.dm
@@ -249,6 +249,22 @@
shuttle_tag = DROPSHIP_CYCLONE
dir = SOUTH
+/turf/open/space/transit/dropship/tornado
+ shuttle_tag = DROPSHIP_TORNADO
+ dir = SOUTH
+
+/turf/open/space/transit/dropship/typhoon
+ shuttle_tag = DROPSHIP_TYPHOON
+ dir = SOUTH
+
+/turf/open/space/transit/dropship/tripoli
+ shuttle_tag = DROPSHIP_TRIPOLI
+ dir = SOUTH
+
+/turf/open/space/transit/dropship/upp
+ shuttle_tag = DROPSHIP_UPP
+ dir = SOUTH
+
/turf/open/space/transit/south
dir = SOUTH
diff --git a/code/modules/asset_cache/asset_list.dm b/code/modules/asset_cache/asset_list.dm
index 8e19a19053..b887cff60c 100644
--- a/code/modules/asset_cache/asset_list.dm
+++ b/code/modules/asset_cache/asset_list.dm
@@ -341,3 +341,24 @@ GLOBAL_LIST_EMPTY(asset_datums)
if (!item_filename)
return
. = list("[item_filename]" = SSassets.transport.get_asset_url(item_filename))
+
+/datum/asset/simple/inventory
+ assets = list(
+ "inventory-glasses.png" = 'icons/ui_Icons/inventory/glasses.png',
+ "inventory-head.png" = 'icons/ui_Icons/inventory/head.png',
+ "inventory-neck.png" = 'icons/ui_Icons/inventory/neck.png',
+ "inventory-mask.png" = 'icons/ui_Icons/inventory/mask.png',
+ "inventory-ears.png" = 'icons/ui_Icons/inventory/ears.png',
+ "inventory-uniform.png" = 'icons/ui_Icons/inventory/uniform.png',
+ "inventory-suit.png" = 'icons/ui_Icons/inventory/suit.png',
+ "inventory-gloves.png" = 'icons/ui_Icons/inventory/gloves.png',
+ "inventory-hand_l.png" = 'icons/ui_Icons/inventory/hand_l.png',
+ "inventory-hand_r.png" = 'icons/ui_Icons/inventory/hand_r.png',
+ "inventory-shoes.png" = 'icons/ui_Icons/inventory/shoes.png',
+ "inventory-suit_storage.png" = 'icons/ui_Icons/inventory/suit_storage.png',
+ "inventory-id.png" = 'icons/ui_Icons/inventory/id.png',
+ "inventory-belt.png" = 'icons/ui_Icons/inventory/belt.png',
+ "inventory-back.png" = 'icons/ui_Icons/inventory/back.png',
+ "inventory-pocket.png" = 'icons/ui_Icons/inventory/pocket.png',
+ "inventory-collar.png" = 'icons/ui_Icons/inventory/collar.png',
+ )
diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm
index 2c9b5ba243..44a9a88a6b 100644
--- a/code/modules/client/preferences_gear.dm
+++ b/code/modules/client/preferences_gear.dm
@@ -138,6 +138,7 @@ var/global/list/gear_datums_by_name = list()
/datum/gear/mask/gas
display_name = "Gas mask"
path = /obj/item/clothing/mask/gas
+ cost = 1
/datum/gear/mask/scarf_black
display_name = "Scarf, black"
@@ -1096,10 +1097,6 @@ var/global/list/gear_datums_by_name = list()
display_name = "Solar Devils shoulder patch"
path = /obj/item/clothing/accessory/patch/devils
-/datum/gear/misc/patch_uscm/falcon
- display_name = "Falling Falcons shoulder patch"
- path = /obj/item/clothing/accessory/patch/falcon
-
/datum/gear/misc/family_photo
display_name = "Family photo"
path = /obj/item/prop/helmetgarb/family_photo
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index a2366692f9..f3519dbf00 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -294,6 +294,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list(
/obj/item/prop/helmetgarb/helmet_nvg/cosmetic = HELMET_GARB_RELAY_ICON_STATE,
/obj/item/prop/helmetgarb/helmet_nvg/marsoc = HELMET_GARB_RELAY_ICON_STATE,
/obj/item/prop/helmetgarb/helmet_gasmask = "helmet_gasmask",
+ /obj/item/prop/helmetgarb/helmet_gasmask/upp = "helmet_uppgasmask",
/obj/item/prop/helmetgarb/flair_initech = "flair_initech",
/obj/item/prop/helmetgarb/flair_io = "flair_io",
/obj/item/prop/helmetgarb/flair_peace ="flair_peace_smiley",
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index 1b1ff8d606..a0a39f136e 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -1,7 +1,7 @@
/obj/item/clothing/mask/gas
name = "gas mask"
- desc = "A face-covering mask that can be connected to an air supply. Filters harmful gases from the air."
+ desc = "A civilian grade, face-covering mask that can be connected to an air supply. Filters harmful gases from the air."
icon_state = "gas_alt"
flags_inventory = COVERMOUTH | COVEREYES | ALLOWINTERNALS | BLOCKGASEFFECT | ALLOWREBREATH | ALLOWCPR
flags_inv_hide = HIDEEARS|HIDEFACE|HIDELOWHAIR
@@ -31,6 +31,18 @@
icon_state = "kutjevo_respirator"
item_state = "kutjevo_respirator"
+/obj/item/clothing/mask/gas/m5
+ name = "\improper M5 standalone gasmask"
+ desc = "The standard service gas mask of the USCM as part of a modernization program meant to replace the need for MOPP gear. This one is the alternative variant meant for Marines not in combat kit."
+ icon_state = "m5_gasmask"
+ item_state = "m5_gasmask"
+
+/obj/item/clothing/mask/gas/upp
+ name = "\improper PMK-63 gasmask"
+ desc = "The Union service mask issued to backline troops not prepared for combat."
+ icon_state = "upp_gasmask"
+ item_state = "upp_gasmask"
+
/obj/item/clothing/mask/gas/pve_mopp
name = "\improper M2 MOPP mask"
desc = "The M2 MOPP mask includes a full covering cowl that securely attaches to the MOPP suit. It is capable of protecting of a variety of radiological and biological threats."
diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm
index 0d5fc31a25..7ac0ddc018 100644
--- a/code/modules/clothing/suits/storage.dm
+++ b/code/modules/clothing/suits/storage.dm
@@ -10,6 +10,10 @@
pockets.max_storage_space = 4
flags_atom |= USES_HEARING
+/obj/item/clothing/suit/storage/Destroy()
+ QDEL_NULL(pockets)
+ return ..()
+
/obj/item/clothing/suit/storage/get_pockets()
if(pockets)
return pockets
diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm
index b5c29ef21b..98af79c511 100644
--- a/code/modules/cm_marines/equipment/guncases.dm
+++ b/code/modules/cm_marines/equipment/guncases.dm
@@ -211,10 +211,12 @@
desc = "A gun case containing the M37A2 Pump Shotgun."
icon_state = "guncase_red"
storage_slots = 4
- can_hold = list(/obj/item/weapon/gun/shotgun/pump, /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/flechette, /obj/item/ammo_magazine/shotgun/slugs)
+ can_hold = list(/obj/item/weapon/gun/shotgun/pump, /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/flechette, /obj/item/ammo_magazine/shotgun/slugs, /obj/item/storage/pouch/shotgun)
/obj/item/storage/box/guncase/pumpshotgun/fill_preset_inventory()
new /obj/item/weapon/gun/shotgun/pump(src)
+ new /obj/item/storage/pouch/shotgun(src)
+ new /obj/item/storage/large_holster/m37(src)
for(var/i = 1 to 3)
var/random_pick = rand(1, 3)
switch(random_pick)
@@ -231,6 +233,8 @@
/obj/item/storage/box/guncase/pumpshotgun/special/fill_preset_inventory()
new /obj/item/weapon/gun/shotgun/pump/special(src)
new /obj/item/ammo_magazine/shotgun/buckshot/special(src)
+ new /obj/item/storage/pouch/shotgun(src)
+ new /obj/item/storage/large_holster/m37(src)
/obj/item/storage/box/guncase/mk45_automag
name = "\improper MK-45 Automagnum case"
diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm
index 243ecd9342..c29b4ad5b5 100644
--- a/code/modules/cm_marines/overwatch.dm
+++ b/code/modules/cm_marines/overwatch.dm
@@ -920,6 +920,8 @@
icon_state = "toc"
bound_width = 64
bound_height = 32
+ layer = ABOVE_TABLE_LAYER
+ density = TRUE
/obj/structure/supply_drop
name = "Supply Drop Pad"
diff --git a/code/modules/cm_phone/phone_base.dm b/code/modules/cm_phone/phone_base.dm
index 7c64fd7ee3..fb05b578a0 100644
--- a/code/modules/cm_phone/phone_base.dm
+++ b/code/modules/cm_phone/phone_base.dm
@@ -99,3 +99,7 @@
name = "rotary telephone"
icon_state = "rotary_phone"
desc = "The finger plate is a little stiff."
+
+/obj/structure/phone_base/toc
+ name = "telephone receiver"
+ icon = 'icons/obj/vehicles/interiors/movie.dmi'
diff --git a/code/modules/cm_tech/implements/railgun.dm b/code/modules/cm_tech/implements/railgun.dm
index f627894bcf..be11259026 100644
--- a/code/modules/cm_tech/implements/railgun.dm
+++ b/code/modules/cm_tech/implements/railgun.dm
@@ -280,7 +280,7 @@ GLOBAL_DATUM(railgun_eye_location, /datum/coords)
desc = "The younger sister to the railgun, this one is way weaker, however, it fires significantly faster. The higher your altitude, the faster your reload, and slower the shots hit."
max_ammo = 100
ammo = 100
- ammo_recharge_time = 1 SECONDS
+ ammo_recharge_time = 2 SECONDS
fire_cooldown = 0.1 SECONDS
ammo_delay = 3 SECONDS
power = 50
@@ -293,13 +293,14 @@ GLOBAL_DATUM(railgun_eye_location, /datum/coords)
desc = "An Orbital cannon with a very long recharge time. The higher your altitude, the faster your reload, and slower the shots hit."
max_ammo = 1
ammo = 1
- ammo_recharge_time = 1 SECONDS
+ ammo_recharge_time = 5 SECONDS
fire_cooldown = 10 MINUTES //So you know how long it takes betweenS
ammo_delay = 30 SECONDS
power = 1500
range = 15
warning_color = "#ff0000"
+
/obj/structure/machinery/computer/railgun/napalm
name = "orbital napalm computer"
desc = "An Orbital cannon with a very long recharge time. The higher your altitude, the faster your reload, and slower the shots hit."
@@ -317,3 +318,11 @@ GLOBAL_DATUM(railgun_eye_location, /datum/coords)
firer.images -= to_remove
playsound(T, 'sound/machines/railgun/railgun_impact.ogg', sound_range = 75)
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flame_radius), create_cause_data("railgun", firer.mob), 5, T, BURN_TIME_TIER_5 + 5, BURN_LEVEL_TIER_2, FLAMESHAPE_DEFAULT, FIRE_VARIANT_TYPE_B)
+
+/obj/structure/machinery/computer/railgun/toc
+ name = "railgun computer screen"
+ icon_state = "toc_railgun"
+
+/obj/structure/machinery/computer/railgun/gatling/toc
+ name = "gatling-gun computer screen"
+ icon_state = "toc_railcannon"
diff --git a/code/modules/dropships/attach_points/templates.dm b/code/modules/dropships/attach_points/templates.dm
index 1d0fc53d8a..d2b1f55d75 100644
--- a/code/modules/dropships/attach_points/templates.dm
+++ b/code/modules/dropships/attach_points/templates.dm
@@ -1,3 +1,4 @@
+// ALAMO
/obj/effect/attach_point/weapon/dropship1
ship_tag = DROPSHIP_ALAMO
@@ -39,6 +40,7 @@
transverse = 3
long = 0
+// NORMANDY
/obj/effect/attach_point/weapon/dropship2
ship_tag = DROPSHIP_NORMANDY
@@ -80,6 +82,7 @@
transverse = 3
long = 0
+// MIDWAY
/obj/effect/attach_point/weapon/midway
ship_tag = DROPSHIP_MIDWAY
@@ -121,6 +124,176 @@
transverse = 3
long = 0
+// CYCLONE
+/obj/effect/attach_point/weapon/cyclone
+ ship_tag = DROPSHIP_CYCLONE
+
+/obj/effect/attach_point/weapon/cyclone/left_wing
+ name = "port wing weapon attach point"
+ icon_state = "equip_base_l_wing"
+ attach_id = 1
+ dir = WEST
+ firing_arc_min = -3
+ firing_arc_max = 3
+ transverse = -3
+ long = 0
+
+/obj/effect/attach_point/weapon/cyclone/left_fore
+ name = "port fore weapon attach point"
+ attach_id = 2
+ dir = NORTH
+ firing_arc_min = -6
+ firing_arc_max = 0
+ transverse = 0
+ long = 0
+
+/obj/effect/attach_point/weapon/cyclone/right_fore
+ name = "starboard fore weapon attach point"
+ attach_id = 3
+ dir = NORTH
+ firing_arc_min = 0
+ firing_arc_max = 6
+ transverse = 0
+ long = 0
+
+/obj/effect/attach_point/weapon/cyclone/right_wing
+ name = "starboard wing weapon attach point"
+ icon_state = "equip_base_r_wing";
+ attach_id = 4
+ dir = EAST
+ firing_arc_min = -3
+ firing_arc_max = 3
+ transverse = 3
+ long = 0
+
+// TORNADO
+/obj/effect/attach_point/weapon/tornado
+ ship_tag = DROPSHIP_TORNADO
+
+/obj/effect/attach_point/weapon/tornado/left_wing
+ name = "port wing weapon attach point"
+ icon_state = "equip_base_l_wing"
+ attach_id = 1
+ dir = WEST
+ firing_arc_min = -3
+ firing_arc_max = 3
+ transverse = -3
+ long = 0
+
+/obj/effect/attach_point/weapon/tornado/left_fore
+ name = "port fore weapon attach point"
+ attach_id = 2
+ dir = NORTH
+ firing_arc_min = -6
+ firing_arc_max = 0
+ transverse = 0
+ long = 0
+
+/obj/effect/attach_point/weapon/tornado/right_fore
+ name = "starboard fore weapon attach point"
+ attach_id = 3
+ dir = NORTH
+ firing_arc_min = 0
+ firing_arc_max = 6
+ transverse = 0
+ long = 0
+
+/obj/effect/attach_point/weapon/tornado/right_wing
+ name = "starboard wing weapon attach point"
+ icon_state = "equip_base_r_wing";
+ attach_id = 4
+ dir = EAST
+ firing_arc_min = -3
+ firing_arc_max = 3
+ transverse = 3
+ long = 0
+
+// TYPHOON
+/obj/effect/attach_point/weapon/typhoon
+ ship_tag = DROPSHIP_TYPHOON
+
+/obj/effect/attach_point/weapon/typhoon/left_wing
+ name = "port wing weapon attach point"
+ icon_state = "equip_base_l_wing"
+ attach_id = 1
+ dir = WEST
+ firing_arc_min = -3
+ firing_arc_max = 3
+ transverse = -3
+ long = 0
+
+/obj/effect/attach_point/weapon/typhoon/left_fore
+ name = "port fore weapon attach point"
+ attach_id = 2
+ dir = NORTH
+ firing_arc_min = -6
+ firing_arc_max = 0
+ transverse = 0
+ long = 0
+
+/obj/effect/attach_point/weapon/typhoon/right_fore
+ name = "starboard fore weapon attach point"
+ attach_id = 3
+ dir = NORTH
+ firing_arc_min = 0
+ firing_arc_max = 6
+ transverse = 0
+ long = 0
+
+/obj/effect/attach_point/weapon/typhoon/right_wing
+ name = "starboard wing weapon attach point"
+ icon_state = "equip_base_r_wing";
+ attach_id = 4
+ dir = EAST
+ firing_arc_min = -3
+ firing_arc_max = 3
+ transverse = 3
+ long = 0
+
+// TORNADO
+/obj/effect/attach_point/weapon/tripoli
+ ship_tag = DROPSHIP_TRIPOLI
+
+/obj/effect/attach_point/weapon/tripoli/left_wing
+ name = "port wing weapon attach point"
+ icon_state = "equip_base_l_wing"
+ attach_id = 1
+ dir = WEST
+ firing_arc_min = -3
+ firing_arc_max = 3
+ transverse = -3
+ long = 0
+
+/obj/effect/attach_point/weapon/tripoli/left_fore
+ name = "port fore weapon attach point"
+ attach_id = 2
+ dir = NORTH
+ firing_arc_min = -6
+ firing_arc_max = 0
+ transverse = 0
+ long = 0
+
+/obj/effect/attach_point/weapon/tripoli/right_fore
+ name = "starboard fore weapon attach point"
+ attach_id = 3
+ dir = NORTH
+ firing_arc_min = 0
+ firing_arc_max = 6
+ transverse = 0
+ long = 0
+
+/obj/effect/attach_point/weapon/tripoli/right_wing
+ name = "starboard wing weapon attach point"
+ icon_state = "equip_base_r_wing";
+ attach_id = 4
+ dir = EAST
+ firing_arc_min = -3
+ firing_arc_max = 3
+ transverse = 3
+ long = 0
+
+//attach points
+
/obj/effect/attach_point/crew_weapon
name = "crew compartment attach point"
base_category = DROPSHIP_CREW_WEAPON
@@ -134,6 +307,18 @@
/obj/effect/attach_point/crew_weapon/midway
ship_tag = DROPSHIP_MIDWAY
+/obj/effect/attach_point/crew_weapon/cyclone
+ ship_tag = DROPSHIP_CYCLONE
+
+/obj/effect/attach_point/crew_weapon/tornado
+ ship_tag = DROPSHIP_TORNADO
+
+/obj/effect/attach_point/crew_weapon/typhoon
+ ship_tag = DROPSHIP_TYPHOON
+
+/obj/effect/attach_point/crew_weapon/tripoli
+ ship_tag = DROPSHIP_TRIPOLI
+
/obj/effect/attach_point/electronics
name = "electronic system attach point"
base_category = DROPSHIP_ELECTRONICS
@@ -149,6 +334,17 @@
/obj/effect/attach_point/electronics/midway
ship_tag = DROPSHIP_MIDWAY
+/obj/effect/attach_point/electronics/cyclone
+ ship_tag = DROPSHIP_CYCLONE
+
+/obj/effect/attach_point/electronics/tornado
+ ship_tag = DROPSHIP_TORNADO
+
+/obj/effect/attach_point/electronics/typhoon
+ ship_tag = DROPSHIP_TYPHOON
+
+/obj/effect/attach_point/electronics/tripoli
+ ship_tag = DROPSHIP_TRIPOLI
/obj/effect/attach_point/fuel
name = "engine system attach point"
icon = 'icons/obj/structures/props/almayer_props64.dmi'
@@ -164,6 +360,18 @@
/obj/effect/attach_point/fuel/midway
ship_tag = DROPSHIP_MIDWAY
+/obj/effect/attach_point/fuel/cyclone
+ ship_tag = DROPSHIP_CYCLONE
+
+/obj/effect/attach_point/fuel/tornado
+ ship_tag = DROPSHIP_TORNADO
+
+/obj/effect/attach_point/fuel/typhoon
+ ship_tag = DROPSHIP_TYPHOON
+
+/obj/effect/attach_point/fuel/tripoli
+ ship_tag = DROPSHIP_TRIPOLI
+
/obj/effect/attach_point/computer
base_category = DROPSHIP_COMPUTER
@@ -175,3 +383,15 @@
/obj/effect/attach_point/computer/midway
ship_tag = DROPSHIP_MIDWAY
+
+/obj/effect/attach_point/computer/cyclone
+ ship_tag = DROPSHIP_CYCLONE
+
+/obj/effect/attach_point/computer/tornado
+ ship_tag = DROPSHIP_TORNADO
+
+/obj/effect/attach_point/computer/typhoon
+ ship_tag = DROPSHIP_TYPHOON
+
+/obj/effect/attach_point/computer/tripoli
+ ship_tag = DROPSHIP_TYPHOON
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 4ea2f35aa6..2a419eddf1 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -399,23 +399,6 @@
bodytemperature = max(bodytemperature, BODYTEMP_HEAT_DAMAGE_LIMIT+10)
recalculate_move_delay = TRUE
-
-/mob/living/carbon/show_inv(mob/living/carbon/user as mob)
- user.set_interaction(src)
- var/dat = {"
-
[name]
-
-
Head(Mask): [(wear_mask ? wear_mask : "Nothing")]
-
Left Hand: [(l_hand ? l_hand : "Nothing")]
-
Right Hand: [(r_hand ? r_hand : "Nothing")]
-
Back: [(back ? back : "Nothing")] [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank) && !( internal )) ? " Set Internal" : "")]
-
[(handcuffed ? "Handcuffed" : "Not Handcuffed")]
-
[(internal ? "Remove Internal" : "")]
-
Refresh
-
Close
-
"}
- show_browser(user, dat, name, "mob[name]")
-
/**
* Called by [/mob/dead/observer/proc/do_observe] when a carbon mob is observed by a ghost with [/datum/preferences/var/auto_observe] enabled.
*
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 350bcec3e8..c394431c72 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -13,7 +13,7 @@
create_reagents(1000)
if(!real_name || !name)
change_real_name(src, "unknown")
-
+ AddElement(/datum/element/strippable, GLOB.strippable_human_items, TYPE_PROC_REF(/mob/living/carbon/human, should_strip))
. = ..()
prev_gender = gender // Debug for plural genders
@@ -270,49 +270,6 @@
return TRUE
return FALSE
-
-
-/mob/living/carbon/human/show_inv(mob/living/user)
- if(ismaintdrone(user))
- return
- var/obj/item/clothing/under/suit = null
- if(istype(w_uniform, /obj/item/clothing/under))
- suit = w_uniform
-
- user.set_interaction(src)
- var/dat = {"
-
[name]
-
-
(Exo)Suit: [(wear_suit ? wear_suit : "Nothing")]
-
Suit Storage: [(s_store ? s_store : "Nothing")] [((istype(wear_mask, /obj/item/clothing/mask) && istype(s_store, /obj/item/tank) && !( internal )) ? " Set Internal" : "")]
-
Back: [(back ? back : "Nothing")] [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank) && !( internal )) ? " Set Internal" : "")]
-
Head(Mask): [(wear_mask ? wear_mask : "Nothing")]
-
Left Hand: [(l_hand ? l_hand : "Nothing")]
-
Right Hand: [(r_hand ? r_hand : "Nothing")]
-
Gloves: [(gloves ? gloves : "Nothing")]
-
Eyes: [(glasses ? glasses : "Nothing")]
-
Left Ear: [(wear_l_ear ? wear_l_ear : "Nothing")]
-
Right Ear: [(wear_r_ear ? wear_r_ear : "Nothing")]
-
Head: [(head ? head : "Nothing")]
-
Shoes: [(shoes ? shoes : "Nothing")]
-
Belt: [(belt ? belt : "Nothing")] [((istype(wear_mask, /obj/item/clothing/mask) && istype(belt, /obj/item/tank) && !internal) ? " Set Internal" : "")]
-
Uniform: [(w_uniform ? w_uniform : "Nothing")] [(suit) ? ((suit.has_sensor == UNIFORM_HAS_SENSORS) ? " Sensors" : "") : null]
-
ID: [(wear_id ? wear_id : "Nothing")]
-
Left Pocket: [(l_store ? l_store : "Nothing")]
-
Right Pocket: [(r_store ? r_store : "Nothing")]
-
- [handcuffed ? "
Handcuffed" : ""]
- [legcuffed ? "
Legcuffed" : ""]
- [suit && LAZYLEN(suit.accessories) ? "
Remove Accessory" : ""]
- [internal ? "
Remove Internal" : ""]
- [istype(wear_id, /obj/item/card/id/dogtag) ? "
Retrieve Info Tag" : ""]
-
Remove Splints
-
-
Refresh
-
Close
-
"}
- show_browser(user, dat, name, "mob[name]")
-
/**
* Handles any storage containers that the human is looking inside when auto-observed.
*/
@@ -428,9 +385,6 @@
/mob/living/carbon/human/Topic(href, href_list)
- if(href_list["refresh"])
- if(interactee&&(in_range(src, usr)))
- show_inv(interactee)
if(href_list["mach_close"])
var/t1 = text("window=[]", href_list["mach_close"])
@@ -475,76 +429,6 @@
what = usr.get_active_hand()
usr.stripPanelEquip(what,src,slot)
- if(href_list["internal"])
-
- if(!usr.action_busy && !usr.is_mob_incapacitated() && Adjacent(usr))
- attack_log += text("\[[time_stamp()]\] Has had their internals toggled by [key_name(usr)]")
- usr.attack_log += text("\[[time_stamp()]\] Attempted to toggle [key_name(src)]'s' internals")
- if(internal)
- usr.visible_message(SPAN_DANGER("[usr] is trying to disable [src]'s internals"), null, null, 3)
- else
- usr.visible_message(SPAN_DANGER("[usr] is trying to enable [src]'s internals."), null, null, 3)
-
- if(do_after(usr, POCKET_STRIP_DELAY, INTERRUPT_ALL, BUSY_ICON_GENERIC, src, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
- if(internal)
- internal.add_fingerprint(usr)
- internal = null
- visible_message("[src] is no longer running on internals.", null, null, 1)
- else
- if(istype(wear_mask, /obj/item/clothing/mask))
- if(istype(back, /obj/item/tank))
- internal = back
- else if(istype(s_store, /obj/item/tank))
- internal = s_store
- else if(istype(belt, /obj/item/tank))
- internal = belt
- if(internal)
- visible_message(SPAN_NOTICE("[src] is now running on internals."), null, null, 1)
- internal.add_fingerprint(usr)
-
- // Update strip window
- if(usr.interactee == src && Adjacent(usr))
- show_inv(usr)
-
-
- if(href_list["splints"])
- if(!usr.action_busy && !usr.is_mob_incapacitated() && Adjacent(usr))
- if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (stat == DEAD || health < HEALTH_THRESHOLD_CRIT) && !get_target_lock(usr.faction_group))
- to_chat(usr, SPAN_WARNING("You can't strip a crit or dead member of another faction!"))
- return
- attack_log += text("\[[time_stamp()]\] Has had their splints removed by [key_name(usr)]")
- usr.attack_log += text("\[[time_stamp()]\] Attempted to remove [key_name(src)]'s' splints ")
- remove_splints(usr)
-
- if(href_list["tie"])
- if(!usr.action_busy && !usr.is_mob_incapacitated() && Adjacent(usr))
- if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (stat == DEAD || health < HEALTH_THRESHOLD_CRIT) && !get_target_lock(usr.faction_group))
- to_chat(usr, SPAN_WARNING("You can't strip a crit or dead member of another faction!"))
- return
- if(w_uniform && istype(w_uniform, /obj/item/clothing))
- var/obj/item/clothing/under/U = w_uniform
- if(!LAZYLEN(U.accessories))
- return FALSE
- var/obj/item/clothing/accessory/A = LAZYACCESS(U.accessories, 1)
- if(LAZYLEN(U.accessories) > 1)
- A = tgui_input_list(usr, "Select an accessory to remove from [U]", "Remove accessory", U.accessories)
- if(!istype(A))
- return
- attack_log += text("\[[time_stamp()]\] Has had their accessory ([A]) removed by [key_name(usr)]")
- usr.attack_log += text("\[[time_stamp()]\] Attempted to remove [key_name(src)]'s' accessory ([A])")
- if(istype(A, /obj/item/clothing/accessory/holobadge) || istype(A, /obj/item/clothing/accessory/medal))
- visible_message(SPAN_DANGER("[usr] tears off \the [A] from [src]'s [U]!"), null, null, 5)
- if(U == w_uniform)
- U.remove_accessory(usr, A)
- else
- if(HAS_TRAIT(src, TRAIT_UNSTRIPPABLE) && !is_mob_incapacitated()) //Can't strip the unstrippable!
- to_chat(usr, SPAN_DANGER("[src] has an unbreakable grip on their equipment!"))
- return
- visible_message(SPAN_DANGER("[usr] is trying to take off \a [A] from [src]'s [U]!"), null, null, 5)
- if(do_after(usr, get_strip_delay(usr, src), INTERRUPT_ALL, BUSY_ICON_GENERIC, src, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
- if(U == w_uniform)
- U.remove_accessory(usr, A)
-
if(href_list["sensor"])
if(!usr.action_busy && !usr.is_mob_incapacitated() && Adjacent(usr))
if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (stat == DEAD || health < HEALTH_THRESHOLD_CRIT) && !get_target_lock(usr.faction_group))
diff --git a/code/modules/mob/living/carbon/human/human_stripping.dm b/code/modules/mob/living/carbon/human/human_stripping.dm
new file mode 100644
index 0000000000..fbf6fb5ce4
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/human_stripping.dm
@@ -0,0 +1,272 @@
+GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list(
+ /datum/strippable_item/mob_item_slot/head,
+ /datum/strippable_item/mob_item_slot/back,
+ /datum/strippable_item/mob_item_slot/mask,
+ /datum/strippable_item/mob_item_slot/eyes,
+ /datum/strippable_item/mob_item_slot/r_ear,
+ /datum/strippable_item/mob_item_slot/l_ear,
+ /datum/strippable_item/mob_item_slot/jumpsuit,
+ /datum/strippable_item/mob_item_slot/suit,
+ /datum/strippable_item/mob_item_slot/gloves,
+ /datum/strippable_item/mob_item_slot/feet,
+ /datum/strippable_item/mob_item_slot/suit_storage,
+ /datum/strippable_item/mob_item_slot/id,
+ /datum/strippable_item/mob_item_slot/belt,
+ /datum/strippable_item/mob_item_slot/pocket/left,
+ /datum/strippable_item/mob_item_slot/pocket/right,
+ /datum/strippable_item/mob_item_slot/hand/left,
+ /datum/strippable_item/mob_item_slot/hand/right,
+ /datum/strippable_item/mob_item_slot/cuffs/handcuffs,
+ /datum/strippable_item/mob_item_slot/cuffs/legcuffs,
+)))
+
+/mob/living/carbon/human/proc/should_strip(mob/user)
+ if (user.pulling == src && user.grab_level == GRAB_AGGRESSIVE && (user.a_intent & INTENT_GRAB))
+ return FALSE //to not interfere with fireman carry
+ return TRUE
+
+/datum/strippable_item/mob_item_slot/head
+ key = STRIPPABLE_ITEM_HEAD
+ item_slot = SLOT_HEAD
+
+/datum/strippable_item/mob_item_slot/back
+ key = STRIPPABLE_ITEM_BACK
+ item_slot = SLOT_BACK
+
+/datum/strippable_item/mob_item_slot/mask
+ key = STRIPPABLE_ITEM_MASK
+ item_slot = SLOT_FACE
+
+/datum/strippable_item/mob_item_slot/mask/get_alternate_action(atom/source, mob/user)
+ var/obj/item/clothing/mask = get_item(source)
+ if (!istype(mask))
+ return
+ if (!ishuman(source))
+ return
+ var/mob/living/carbon/human/sourcehuman = source
+ if (istype(sourcehuman.s_store, /obj/item/tank))
+ return "toggle_internals"
+ if (istype(sourcehuman.back, /obj/item/tank))
+ return "toggle_internals"
+ if (istype(sourcehuman.belt, /obj/item/tank))
+ return "toggle_internals"
+ return
+
+/datum/strippable_item/mob_item_slot/mask/alternate_action(atom/source, mob/user)
+ if(!ishuman(source))
+ return
+ var/mob/living/carbon/human/sourcehuman = source
+ if(user.action_busy || user.is_mob_incapacitated() || !source.Adjacent(user))
+ return
+ if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (sourcehuman.stat == DEAD || sourcehuman.health < HEALTH_THRESHOLD_CRIT) && !sourcehuman.get_target_lock(user.faction_group))
+ to_chat(user, SPAN_WARNING("You can't toggle internals of a crit or dead member of another faction!"))
+ return
+
+ sourcehuman.attack_log += text("\[[time_stamp()]\] Has had their internals toggled by [key_name(user)]")
+ user.attack_log += text("\[[time_stamp()]\] Attempted to toggle [key_name(src)]'s' internals")
+ if(sourcehuman.internal)
+ user.visible_message(SPAN_DANGER("[user] is trying to disable [sourcehuman]'s internals"), null, null, 3)
+ else
+ user.visible_message(SPAN_DANGER("[user] is trying to enable [sourcehuman]'s internals."), null, null, 3)
+
+ if(!do_after(user, POCKET_STRIP_DELAY, INTERRUPT_ALL, BUSY_ICON_GENERIC, sourcehuman, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
+ return
+
+ if(sourcehuman.internal)
+ sourcehuman.internal.add_fingerprint(user)
+ sourcehuman.internal = null
+ sourcehuman.visible_message("[sourcehuman] is no longer running on internals.", max_distance = 1)
+ return
+
+ if(!istype(sourcehuman.wear_mask, /obj/item/clothing/mask))
+ return
+
+ if(istype(sourcehuman.back, /obj/item/tank))
+ sourcehuman.internal = sourcehuman.back
+ else if(istype(sourcehuman.s_store, /obj/item/tank))
+ sourcehuman.internal = sourcehuman.s_store
+ else if(istype(sourcehuman.belt, /obj/item/tank))
+ sourcehuman.internal = sourcehuman.belt
+
+ if(!sourcehuman.internal)
+ return
+
+ sourcehuman.visible_message(SPAN_NOTICE("[sourcehuman] is now running on internals."), max_distance = 1)
+ sourcehuman.internal.add_fingerprint(user)
+
+/datum/strippable_item/mob_item_slot/eyes
+ key = STRIPPABLE_ITEM_EYES
+ item_slot = SLOT_EYES
+
+/datum/strippable_item/mob_item_slot/r_ear
+ key = STRIPPABLE_ITEM_R_EAR
+ item_slot = SLOT_EAR
+
+/datum/strippable_item/mob_item_slot/l_ear
+ key = STRIPPABLE_ITEM_L_EAR
+ item_slot = SLOT_EAR
+
+/datum/strippable_item/mob_item_slot/jumpsuit
+ key = STRIPPABLE_ITEM_JUMPSUIT
+ item_slot = SLOT_ICLOTHING
+
+/datum/strippable_item/mob_item_slot/jumpsuit/get_alternate_action(atom/source, mob/user)
+ var/obj/item/clothing/under/uniform = get_item(source)
+ if (!istype(uniform))
+ return null
+ return uniform?.accessories ? "remove_accessory" : null
+
+/datum/strippable_item/mob_item_slot/jumpsuit/alternate_action(atom/source, mob/user)
+ if(!ishuman(source))
+ return
+ var/mob/living/carbon/human/sourcemob = source
+ if(user.action_busy || user.is_mob_incapacitated() || !source.Adjacent(user))
+ return
+ if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (sourcemob.stat == DEAD || sourcemob.health < HEALTH_THRESHOLD_CRIT) && !sourcemob.get_target_lock(user.faction_group))
+ to_chat(user, SPAN_WARNING("You can't strip a crit or dead member of another faction!"))
+ return
+ if(!sourcemob.w_uniform || !istype(sourcemob.w_uniform, /obj/item/clothing))
+ return
+
+ var/obj/item/clothing/under/uniform = sourcemob.w_uniform
+ if(!LAZYLEN(uniform.accessories))
+ return FALSE
+ var/obj/item/clothing/accessory/accessory = LAZYACCESS(uniform.accessories, 1)
+ if(LAZYLEN(uniform.accessories) > 1)
+ accessory = tgui_input_list(user, "Select an accessory to remove from [uniform]", "Remove accessory", uniform.accessories)
+ if(!istype(accessory))
+ return
+ sourcemob.attack_log += text("\[[time_stamp()]\] Has had their accessory ([accessory]) removed by [key_name(user)]")
+ user.attack_log += text("\[[time_stamp()]\] Attempted to remove [key_name(sourcemob)]'s' accessory ([accessory])")
+ if(istype(accessory, /obj/item/clothing/accessory/holobadge) || istype(accessory, /obj/item/clothing/accessory/medal))
+ sourcemob.visible_message(SPAN_DANGER("[user] tears off [accessory] from [sourcemob]'s [uniform]!"), null, null, 5)
+ if(uniform == sourcemob.w_uniform)
+ uniform.remove_accessory(user, accessory)
+ return
+
+ if(HAS_TRAIT(sourcemob, TRAIT_UNSTRIPPABLE) && !sourcemob.is_mob_incapacitated()) //Can't strip the unstrippable!
+ to_chat(user, SPAN_DANGER("[sourcemob] has an unbreakable grip on their equipment!"))
+ return
+ sourcemob.visible_message(SPAN_DANGER("[user] is trying to take off \a [accessory] from [source]'s [uniform]!"), null, null, 5)
+
+ if(!do_after(user, sourcemob.get_strip_delay(user, sourcemob), INTERRUPT_ALL, BUSY_ICON_GENERIC, sourcemob, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
+ return
+
+ if(uniform != sourcemob.w_uniform)
+ return
+
+ uniform.remove_accessory(user, accessory)
+
+/datum/strippable_item/mob_item_slot/suit
+ key = STRIPPABLE_ITEM_SUIT
+ item_slot = SLOT_OCLOTHING
+
+/datum/strippable_item/mob_item_slot/suit/has_no_item_alt_action()
+ return TRUE
+
+/datum/strippable_item/mob_item_slot/suit/get_alternate_action(atom/source, mob/user)
+ if(!ishuman(source))
+ return
+ var/mob/living/carbon/human/sourcemob = source
+ for(var/bodypart in list("l_leg","r_leg","l_arm","r_arm","r_hand","l_hand","r_foot","l_foot","chest","head","groin"))
+ var/obj/limb/limb = sourcemob.get_limb(bodypart)
+ if(limb && (limb.status & LIMB_SPLINTED))
+ return "remove_splints"
+ return
+
+/datum/strippable_item/mob_item_slot/suit/alternate_action(atom/source, mob/user)
+ if(!ishuman(source))
+ return
+ var/mob/living/carbon/human/sourcemob = source
+ if(user.action_busy || user.is_mob_incapacitated() || !source.Adjacent(user))
+ return
+ if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (sourcemob.stat == DEAD || sourcemob.health < HEALTH_THRESHOLD_CRIT) && !sourcemob.get_target_lock(user.faction_group))
+ to_chat(user, SPAN_WARNING("You can't remove splints of a crit or dead member of another faction!"))
+ return
+ sourcemob.attack_log += text("\[[time_stamp()]\] Has had their splints removed by [key_name(user)]")
+ user.attack_log += text("\[[time_stamp()]\] Attempted to remove [key_name(sourcemob)]'s' splints ")
+ sourcemob.remove_splints(user)
+
+/datum/strippable_item/mob_item_slot/gloves
+ key = STRIPPABLE_ITEM_GLOVES
+ item_slot = SLOT_HANDS
+
+/datum/strippable_item/mob_item_slot/feet
+ key = STRIPPABLE_ITEM_FEET
+ item_slot = SLOT_FEET
+
+/datum/strippable_item/mob_item_slot/suit_storage
+ key = STRIPPABLE_ITEM_SUIT_STORAGE
+ item_slot = SLOT_SUIT_STORE
+
+/datum/strippable_item/mob_item_slot/id
+ key = STRIPPABLE_ITEM_ID
+ item_slot = SLOT_ID
+
+/datum/strippable_item/mob_item_slot/id/get_alternate_action(atom/source, mob/user)
+ var/obj/item/card/id/dogtag/tag = get_item(source)
+ if(!ishuman(source))
+ return
+ var/mob/living/carbon/human/sourcemob = source
+ if (!istype(tag))
+ return
+ if (!sourcemob.undefibbable && (!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED) || sourcemob.stat != DEAD))
+ return
+ return tag.dogtag_taken ? null : "retrieve_tag"
+
+/datum/strippable_item/mob_item_slot/id/alternate_action(atom/source, mob/user)
+ if(!ishuman(source))
+ return
+ var/mob/living/carbon/human/sourcemob = source
+ if(user.action_busy || user.is_mob_incapacitated() || !source.Adjacent(user))
+ return
+ if(MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_STRIPDRAG_ENEMY) && (sourcemob.stat == DEAD || sourcemob.health < HEALTH_THRESHOLD_CRIT) && !sourcemob.get_target_lock(user.faction_group))
+ to_chat(user, SPAN_WARNING("You can't strip a crit or dead member of another faction!"))
+ return
+ if(!istype(sourcemob.wear_id, /obj/item/card/id/dogtag))
+ return
+ if (!sourcemob.undefibbable && !skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED))
+ return
+ var/obj/item/card/id/dogtag/tag = sourcemob.wear_id
+ if(tag.dogtag_taken)
+ to_chat(user, SPAN_WARNING("Someone's already taken [sourcemob]'s information tag."))
+ return
+
+ if(sourcemob.stat != DEAD)
+ to_chat(user, SPAN_WARNING("You can't take a dogtag's information tag while its owner is alive."))
+ return
+
+ to_chat(user, SPAN_NOTICE("You take [sourcemob]'s information tag, leaving the ID tag"))
+ tag.dogtag_taken = TRUE
+ tag.icon_state = "dogtag_taken"
+ var/obj/item/dogtag/newtag = new(sourcemob.loc)
+ newtag.fallen_names = list(tag.registered_name)
+ newtag.fallen_assgns = list(tag.assignment)
+ newtag.fallen_blood_types = list(tag.blood_type)
+ user.put_in_hands(newtag)
+
+
+
+/datum/strippable_item/mob_item_slot/belt
+ key = STRIPPABLE_ITEM_BELT
+ item_slot = SLOT_WAIST
+
+/datum/strippable_item/mob_item_slot/pocket/left
+ key = STRIPPABLE_ITEM_LPOCKET
+ item_slot = SLOT_STORE
+
+/datum/strippable_item/mob_item_slot/pocket/right
+ key = STRIPPABLE_ITEM_RPOCKET
+ item_slot = SLOT_STORE
+
+/datum/strippable_item/mob_item_slot/hand/left
+ key = STRIPPABLE_ITEM_LHAND
+
+/datum/strippable_item/mob_item_slot/hand/right
+ key = STRIPPABLE_ITEM_RHAND
+
+/datum/strippable_item/mob_item_slot/cuffs/handcuffs
+ key = STRIPPABLE_ITEM_HANDCUFFS
+
+/datum/strippable_item/mob_item_slot/cuffs/legcuffs
+ key = STRIPPABLE_ITEM_LEGCUFFS
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 22deabce45..871a2cd376 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -504,68 +504,6 @@
/// Final result is overall delay * speed multiplier
return target_delay * user_speed
-/mob/living/carbon/human/stripPanelUnequip(obj/item/interact_item, mob/target_mob, slot_to_process)
- if(HAS_TRAIT(target_mob, TRAIT_UNSTRIPPABLE) && !target_mob.is_mob_incapacitated()) //Can't strip the unstrippable!
- to_chat(src, SPAN_DANGER("[target_mob] has an unbreakable grip on their equipment!"))
- return
- if(interact_item.flags_item & ITEM_ABSTRACT)
- return
- if(interact_item.flags_item & NODROP)
- to_chat(src, SPAN_WARNING("You can't remove \the [interact_item.name], it appears to be stuck!"))
- return
- if(interact_item.flags_inventory & CANTSTRIP)
- to_chat(src, SPAN_WARNING("You're having difficulty removing \the [interact_item.name]."))
- return
- target_mob.attack_log += "\[[time_stamp()]\] Has had their [interact_item.name] ([slot_to_process]) attempted to be removed by [key_name(src)]"
- attack_log += "\[[time_stamp()]\] Attempted to remove [key_name(target_mob)]'s [interact_item.name] ([slot_to_process])"
- log_interact(src, target_mob, "[key_name(src)] tried to remove [key_name(target_mob)]'s [interact_item.name] ([slot_to_process]).")
-
- src.visible_message(SPAN_DANGER("[src] tries to remove [target_mob]'s [interact_item.name]."), \
- SPAN_DANGER("You are trying to remove [target_mob]'s [interact_item.name]."), null, 5)
- interact_item.add_fingerprint(src)
- if(do_after(src, get_strip_delay(src, target_mob), INTERRUPT_ALL, BUSY_ICON_GENERIC, target_mob, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
- if(interact_item && Adjacent(target_mob) && interact_item == target_mob.get_item_by_slot(slot_to_process))
- target_mob.drop_inv_item_on_ground(interact_item)
- log_interact(src, target_mob, "[key_name(src)] removed [key_name(target_mob)]'s [interact_item.name] ([slot_to_process]) successfully.")
-
- if(target_mob)
- if(interactee == target_mob && Adjacent(target_mob))
- target_mob.show_inv(src)
-
-
-/mob/living/carbon/human/stripPanelEquip(obj/item/interact_item, mob/target_mob, slot_to_process)
- if(HAS_TRAIT(target_mob, TRAIT_UNSTRIPPABLE) && !target_mob.is_mob_incapacitated())
- to_chat(src, SPAN_DANGER("[target_mob] is too strong to force [interact_item.name] onto them!"))
- return
- if(interact_item && !(interact_item.flags_item & ITEM_ABSTRACT))
- if(interact_item.flags_item & NODROP)
- to_chat(src, SPAN_WARNING("You can't put \the [interact_item.name] on [target_mob], it's stuck to your hand!"))
- return
- if(interact_item.flags_inventory & CANTSTRIP)
- to_chat(src, SPAN_WARNING("You're having difficulty putting \the [interact_item.name] on [target_mob]."))
- return
- if(interact_item.flags_item & WIELDED)
- interact_item.unwield(src)
- if(!interact_item.mob_can_equip(target_mob, slot_to_process, TRUE))
- to_chat(src, SPAN_WARNING("You can't put \the [interact_item.name] on [target_mob]!"))
- return
- visible_message(SPAN_NOTICE("[src] tries to put \the [interact_item.name] on [target_mob]."), null, null, 5)
- if(do_after(src, get_strip_delay(src, target_mob), INTERRUPT_ALL, BUSY_ICON_GENERIC, target_mob, INTERRUPT_MOVED, BUSY_ICON_GENERIC))
- if(interact_item == get_active_hand() && !target_mob.get_item_by_slot(slot_to_process) && Adjacent(target_mob))
- if(interact_item.flags_item & WIELDED) //to prevent re-wielding it during the do_after
- interact_item.unwield(src)
- if(interact_item.mob_can_equip(target_mob, slot_to_process, TRUE))//Placing an item on the mob
- drop_inv_item_on_ground(interact_item)
- if(interact_item && !QDELETED(interact_item)) //Might be self-deleted?
- target_mob.equip_to_slot_if_possible(interact_item, slot_to_process, 1, 0, 1, 1)
- if(ishuman(target_mob) && target_mob.stat == DEAD)
- var/mob/living/carbon/human/human_target = target_mob
- human_target.disable_lights() // take that powergamers -spookydonut
-
- if(target_mob)
- if(interactee == target_mob && Adjacent(target_mob))
- target_mob.show_inv(src)
-
/mob/living/carbon/human/drop_inv_item_on_ground(obj/item/I, nomoveupdate, force)
remember_dropped_object(I)
return ..()
diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm
index 8d3367ee68..d00b08f183 100644
--- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm
+++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm
@@ -261,10 +261,6 @@
move_delay = .
-
-/mob/living/carbon/xenomorph/show_inv(mob/user)
- return
-
/mob/living/carbon/xenomorph/proc/pounced_mob(mob/living/L)
// This should only be called back by a mob that has pounce, so no need to check
var/datum/action/xeno_action/activable/pounce/pounceAction = get_xeno_action_by_type(src, /datum/action/xeno_action/activable/pounce)
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index f1452d95c2..78c96bbbb7 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -110,19 +110,6 @@
/*
* Inventory
*/
-/mob/living/simple_animal/parrot/show_inv(mob/user as mob)
- user.set_interaction(src)
- if(user.stat) return
-
- var/dat = "Inventory of [name]
"
- if(ears)
- dat += "
Headset: [ears] (Remove)"
- else
- dat += "
Headset: Nothing"
-
- user << browse(dat, text("window=mob[];size=325x500", name))
- onclose(user, "mob[real_name]")
- return
/mob/living/simple_animal/parrot/Topic(href, href_list)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index c2cf6402ed..13c47719a7 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -372,25 +372,6 @@
SIGNAL_HANDLER
reset_view(null)
-/mob/proc/show_inv(mob/user)
- user.set_interaction(src)
- var/dat = {"
-
[name]
-
-
Head(Mask): [(wear_mask ? wear_mask : "Nothing")]
-
Left Hand: [(l_hand ? l_hand : "Nothing")]
-
Right Hand: [(r_hand ? r_hand : "Nothing")]
-
Back: [(back ? back : "Nothing")] [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank) && !( internal )) ? text(" Set Internal", src) : "")]
-
[(internal ? text("Remove Internal") : "")]
-
Empty Pockets
-
Refresh
-
Close
-
"}
- show_browser(user, dat, name, "mob[name]")
- return
-
-
-
/mob/proc/point_to_atom(atom/A, turf/T)
//Squad Leaders and above have reduced cooldown and get a bigger arrow
if(check_improved_pointing())
@@ -448,21 +429,6 @@
update_flavor_text()
return
-
-/mob/MouseDrop(mob/M)
- ..()
- if(M != usr) return
- if(usr == src) return
- if(!Adjacent(usr)) return
- if(!ishuman(M) && !ismonkey(M)) return
- if(!ishuman(src) && !ismonkey(src)) return
- if(M.is_mob_incapacitated())
- return
- if(M.pulling == src && (M.a_intent & INTENT_GRAB) && M.grab_level == GRAB_AGGRESSIVE)
- return
-
- show_inv(M)
-
/mob/proc/swap_hand()
hand = !hand
diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm
index 0c6da6f973..6f972bdeb8 100644
--- a/code/modules/projectiles/gun_attachables.dm
+++ b/code/modules/projectiles/gun_attachables.dm
@@ -2445,7 +2445,7 @@ Defined in conflicts.dm of the #defines folder.
/obj/item/attachable/stock/smg/collapsible/brace/apply_on_weapon(obj/item/weapon/gun/G)
if(stock_activated)
- G.flags_item |= NODROP
+ G.flags_item |= NODROP|FORCEDROP_CONDITIONAL
accuracy_mod = -HIT_ACCURACY_MULT_TIER_3
scatter_mod = SCATTER_AMOUNT_TIER_8
recoil_mod = RECOIL_AMOUNT_TIER_2 //Hurts pretty bad if it's wielded.
@@ -2456,7 +2456,7 @@ Defined in conflicts.dm of the #defines folder.
icon_state = "smg_brace_on"
attach_icon = "smg_brace_a_on"
else
- G.flags_item &= ~NODROP
+ G.flags_item &= ~(NODROP|FORCEDROP_CONDITIONAL)
accuracy_mod = 0
scatter_mod = 0
recoil_mod = 0
diff --git a/code/modules/reagents/chemistry_reactions/food_drink.dm b/code/modules/reagents/chemistry_reactions/food_drink.dm
index 7e3fdac324..63c79ea577 100644
--- a/code/modules/reagents/chemistry_reactions/food_drink.dm
+++ b/code/modules/reagents/chemistry_reactions/food_drink.dm
@@ -186,6 +186,66 @@
required_reagents = list("hot_ramen" = 6, "hotsauce" = 1)
result_amount = 6
+/datum/chemical_reaction/banana //WHO DIDN'T MAKE ALL THE JUICES SUBTYPES OF A PARENT ONE AAAAAA
+ name = "Banana Juice"
+ id = "banana"
+ result = "banana"
+ required_reagents = list("dehydrated_juice" = 1, "water" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/orangejuice
+ name = "Orange Juice"
+ id = "orangejuice"
+ result = "orangejuice"
+ required_reagents = list("dehydrated_orange_juice" = 1, "water" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/applejuice
+ name = "Apple Juice"
+ id = "applejuice"
+ result = "applejuice"
+ required_reagents = list("dehydrated_apple_juice" = 1, "water" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/watermelonjuice
+ name = "Watermelon Juice"
+ id = "watermelonjuice"
+ result = "watermelonjuice"
+ required_reagents = list("dehydrated_watermelon_juice" = 1, "water" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/grapejuice
+ name = "Grape Juice"
+ id = "grapejuice"
+ result = "grapejuice"
+ required_reagents = list("dehydrated_grape_juice" = 1, "water" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/pineapplejuice
+ name = "Pineapple Juice"
+ id = "pineapplejuice"
+ result = "pineapplejuice"
+ required_reagents = list("dehydrated_pineapple_juice" = 1, "water" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/egg
+ name = "Rehydrated Egg Product"
+ id = "egg"
+ result = "egg"
+ required_reagents = list("dehydrated_egg_powder" = 1, "water" = 5)
+ result_amount = 1
+
+/datum/chemical_reaction/egg/on_reaction(datum/reagents/holder, created_volume)
+ var/location = get_turf(holder.my_atom)
+ new /obj/item/reagent_container/food/snacks/egg/dried(location)
+
+/datum/chemical_reaction/milk
+ name = "Rehydrated Milk"
+ id = "milk"
+ result = "milk"
+ required_reagents = list("dehydrated_milk_powder" = 1, "water" = 5)
+ result_amount = 5
+
//*****************************************************************************************************/
//******************************************Cocktails**************************************************/
diff --git a/code/modules/reagents/chemistry_reagents/drink.dm b/code/modules/reagents/chemistry_reagents/drink.dm
index 9739687dec..e06f898be4 100644
--- a/code/modules/reagents/chemistry_reagents/drink.dm
+++ b/code/modules/reagents/chemistry_reagents/drink.dm
@@ -151,6 +151,17 @@
description = "Made in the modern day with proper pomegranate substitute. Who uses real fruit, anyways?"
color = "#FF004F" // rgb: 255, 0, 79
+/datum/reagent/drink/pineapplejuice
+ name = "Pineapple Juice"
+ id = "pineapplejuice"
+ description = "Refreshingly citric, with a pleasant flavor."
+ color = "#FFC000" // rgb: 255, 192, 0
+
+/datum/reagent/drink/applejuice
+ name = "Apple Juice"
+ id = "applejuice"
+ description = "The pleasantly sweet taste of apples, now in liquid form."
+ color = "#f59a40" // rgb: 245, 154, 64
//MILK//
diff --git a/code/modules/reagents/chemistry_reagents/food.dm b/code/modules/reagents/chemistry_reagents/food.dm
index 0ec3a22502..8e167908b2 100644
--- a/code/modules/reagents/chemistry_reagents/food.dm
+++ b/code/modules/reagents/chemistry_reagents/food.dm
@@ -307,3 +307,83 @@
color = "#FFFF00"
chemclass = CHEM_CLASS_RARE
flags = REAGENT_NO_GENERATION
+
+/datum/reagent/dehydrated_juice
+ name = "Mystery Juice Powder"
+ id = "dehydrated_juice"
+ description = "Powderized fruit-juice ready to be mixed with water. Smells of artificial bananas."
+ reagent_state = SOLID
+ color = "#863333" // rgb: 175, 175, 0
+ chemclass = CHEM_CLASS_COMMON
+ properties = list(PROPERTY_NUTRITIOUS = 2)
+ flags = REAGENT_NO_GENERATION
+
+/datum/reagent/dehydrated_orange_juice
+ name = "Orange Juice Powder"
+ id = "dehydrated_orange_juice"
+ description = "Powderized orange-juice ready to be mixed with water. Smells of, surprise surprise, oranges."
+ reagent_state = SOLID
+ color = "#E78108" // rgb: 231, 129, 8
+ chemclass = CHEM_CLASS_COMMON
+ properties = list(PROPERTY_NUTRITIOUS = 2)
+ flags = REAGENT_NO_GENERATION
+
+/datum/reagent/dehydrated_apple_juice
+ name = "Apple Juice Powder"
+ id = "dehydrated_apple_juice"
+ description = "Powderized apple-juice ready to be mixed with water. Smells of, surprise surprise, apples."
+ reagent_state = SOLID
+ color = "#365E30" // rgb: 54, 94, 48
+ chemclass = CHEM_CLASS_COMMON
+ properties = list(PROPERTY_NUTRITIOUS = 2)
+ flags = REAGENT_NO_GENERATION
+
+/datum/reagent/dehydrated_watermelon_juice
+ name = "Watermelon Juice Powder"
+ id = "dehydrated_watermelon_juice"
+ description = "Powderized watermelon-juice ready to be mixed with water. Smells of, surprise surprise, watermelons."
+ reagent_state = SOLID
+ color = "#863333" // rgb: 134, 51, 51
+ chemclass = CHEM_CLASS_COMMON
+ properties = list(PROPERTY_NUTRITIOUS = 2)
+ flags = REAGENT_NO_GENERATION
+
+/datum/reagent/dehydrated_grape_juice
+ name = "Grape Juice Powder"
+ id = "dehydrated_grape_juice"
+ description = "Powderized grape-juice ready to be mixed with water. Smells of, surprise surprise, grapes."
+ reagent_state = SOLID
+ color = "#863333" // rgb: 134, 51, 51
+ chemclass = CHEM_CLASS_COMMON
+ properties = list(PROPERTY_NUTRITIOUS = 2)
+ flags = REAGENT_NO_GENERATION
+
+/datum/reagent/dehydrated_pineapple_juice
+ name = "Pineapple Juice Powder"
+ id = "dehydrated_pineapple_juice"
+ description = "Powderized pineapple-juice ready to be mixed with water. Smells of, surprise surprise, pineapples."
+ reagent_state = SOLID
+ color = "#FFC000" // rgb: 255, 192, 0
+ chemclass = CHEM_CLASS_COMMON
+ properties = list(PROPERTY_NUTRITIOUS = 2)
+ flags = REAGENT_NO_GENERATION
+
+/datum/reagent/dehydrated_egg_powder
+ name = "Powdered Egg"
+ id = "dehydrated_egg_powder"
+ description = "Powderized egg-whites and egg-yolk ready to be mixed with water."
+ reagent_state = SOLID
+ color = "#FFFFFF" // rgb: 255,255,255
+ chemclass = CHEM_CLASS_COMMON
+ properties = list(PROPERTY_NUTRITIOUS = 2)
+ flags = REAGENT_NO_GENERATION
+
+/datum/reagent/dehydrated_milk_powder
+ name = "Dehydrated Milk Powder"
+ id = "dehydrated_milk_powder"
+ description = "Dehydrated milk-product powder waiting to be mixed with water."
+ reagent_state = SOLID
+ color = "#DFDFDF" // rgb: 223, 223, 223
+ chemclass = CHEM_CLASS_COMMON
+ properties = list(PROPERTY_NUTRITIOUS = 2)
+ flags = REAGENT_NO_GENERATION
diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm
index 931c4a799c..0024958c8e 100644
--- a/code/modules/shuttle/computers/dropship_computer.dm
+++ b/code/modules/shuttle/computers/dropship_computer.dm
@@ -502,9 +502,14 @@
needs_power = TRUE
/obj/structure/machinery/computer/shuttle/dropship/flight/toc
- name = "midway control screen"
+ name = "dropship control screen"
desc = "A screen on the TOC computer for controlling the dropship linked to it."
icon = 'icons/obj/structures/machinery/computer.dmi'
icon_state = "toc_shuttle"
shuttleId = DROPSHIP_MIDWAY
is_remote = TRUE
+
+/obj/structure/machinery/computer/shuttle/dropship/flight/small
+ icon = 'icons/obj/structures/machinery/computer.dmi'
+ icon_state = "cameras_old"
+
diff --git a/code/modules/shuttle/dropship.dm b/code/modules/shuttle/dropship.dm
index cbca500f8f..bf38f9fa3b 100644
--- a/code/modules/shuttle/dropship.dm
+++ b/code/modules/shuttle/dropship.dm
@@ -215,3 +215,47 @@
/obj/structure/shuttle/part/dropship2/transparent/right_outer_bottom_wing
icon_state = "6"
+/obj/structure/shuttle/part/midway
+ name = "\improper Midway"
+ icon = 'icons/turf/dropship4.dmi'
+ icon_state = "1"
+ opacity = TRUE
+
+/obj/structure/shuttle/part/midway/transparent
+ opacity = FALSE
+
+/obj/structure/shuttle/part/cyclone
+ name = "\improper Cyclone"
+ icon = 'icons/turf/dropship2.dmi'
+ icon_state = "1"
+ opacity = TRUE
+
+/obj/structure/shuttle/part/cyclone/transparent
+ opacity = FALSE
+
+/obj/structure/shuttle/part/tornado
+ name = "\improper Tornado"
+ icon = 'icons/turf/dropship3.dmi'
+ icon_state = "1"
+ opacity = TRUE
+
+/obj/structure/shuttle/part/tornado/transparent
+ opacity = FALSE
+
+/obj/structure/shuttle/part/typhoon
+ name = "\improper Typhoon"
+ icon = 'icons/turf/dropship3.dmi'
+ icon_state = "1"
+ opacity = TRUE
+
+/obj/structure/shuttle/part/typhoon/transparent
+ opacity = FALSE
+
+/obj/structure/shuttle/part/tripoli
+ name = "\improper Tripoli"
+ icon = 'icons/turf/dropship.dmi'
+ icon_state = "1"
+ opacity = TRUE
+
+/obj/structure/shuttle/part/tripoli/transparent
+ opacity = FALSE
diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm
index 1f2822b353..23bb364e85 100644
--- a/code/modules/shuttle/shuttles/dropship.dm
+++ b/code/modules/shuttle/shuttles/dropship.dm
@@ -142,6 +142,9 @@
dwidth = 4
dheight = 8
+/obj/docking_port/mobile/marine_dropship/upp/get_transit_path_type()
+ return /turf/open/space/transit/dropship/upp
+
/obj/docking_port/mobile/marine_dropship/cyclone
name = "Cyclone"
id = DROPSHIP_CYCLONE
@@ -154,6 +157,42 @@
/obj/docking_port/mobile/marine_dropship/cyclone/get_transit_path_type()
return /turf/open/space/transit/dropship/cyclone
+/obj/docking_port/mobile/marine_dropship/tornado
+ name = "HLD-Tornado"
+ id = DROPSHIP_TORNADO
+ width = 11
+ height = 18
+
+ dwidth = 5
+ dheight = 9
+
+/obj/docking_port/mobile/marine_dropship/tornado/get_transit_path_type()
+ return /turf/open/space/transit/dropship/tornado
+
+/obj/docking_port/mobile/marine_dropship/typhoon
+ name = "CMD-Typhoon"
+ id = DROPSHIP_TYPHOON
+ width = 11
+ height = 18
+
+ dwidth = 5
+ dheight = 9
+
+/obj/docking_port/mobile/marine_dropship/typhoon/get_transit_path_type()
+ return /turf/open/space/transit/dropship/typhoon
+
+/obj/docking_port/mobile/marine_dropship/tripoli
+ name = "Tripoli"
+ id = DROPSHIP_TRIPOLI
+ width = 9
+ height = 18
+
+ dwidth = 4
+ dheight = 8
+
+/obj/docking_port/mobile/marine_dropship/tripoli/get_transit_path_type()
+ return /turf/open/space/transit/dropship/tripoli
+
/obj/docking_port/mobile/marine_dropship/alamo
name = "Alamo"
id = DROPSHIP_ALAMO
@@ -368,3 +407,15 @@
/datum/map_template/shuttle/cyclone
name = "Cyclone"
shuttle_id = DROPSHIP_CYCLONE
+
+/datum/map_template/shuttle/typhoon
+ name = "CMD-Typhoon"
+ shuttle_id = DROPSHIP_TYPHOON
+
+/datum/map_template/shuttle/tornado
+ name = "HLD-Tornado"
+ shuttle_id = DROPSHIP_TORNADO
+
+/datum/map_template/shuttle/tripoli
+ name = "Tripoli"
+ shuttle_id = DROPSHIP_TRIPOLI
diff --git a/code/modules/vehicles/interior/interactable/seats.dm b/code/modules/vehicles/interior/interactable/seats.dm
index 06217d4cc0..be98a91cf7 100644
--- a/code/modules/vehicles/interior/interactable/seats.dm
+++ b/code/modules/vehicles/interior/interactable/seats.dm
@@ -479,3 +479,53 @@
REMOVE_TRAIT(M, TRAIT_UNDENSE, BUCKLED_TRAIT)
handle_rotation()
+
+/obj/structure/bed/chair/vehicle/dropship_cockpit
+ name = "cockpit seat"
+ desc = "A sturdy metal chair with a brace that lowers over your body. Holds you in place during high altitude drops."
+ icon_state = "vehicle_seat"
+ can_rotate = FALSE
+
+/obj/structure/bed/chair/vehicle/dropship_cockpit/afterbuckle(mob/M)
+ if(buckled_mob)
+ if(buckled_mob != M)
+ return
+ icon_state = initial(icon_state) + "_buckled"
+ overlays += chairbar
+
+ 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
+
+ ADD_TRAIT(buckled_mob, TRAIT_UNDENSE, BUCKLED_TRAIT)
+ else
+ icon_state = initial(icon_state)
+ overlays -= chairbar
+
+ 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
+
+ REMOVE_TRAIT(M, TRAIT_UNDENSE, BUCKLED_TRAIT)
+
+ handle_rotation()
+
+/obj/structure/bed/chair/vehicle/dropship_cockpit/pilot
+ name = "pilot seat"
+
+/obj/structure/bed/chair/vehicle/dropship_cockpit/pilot/handle_rotation()
+ if(dir == NORTH)
+ layer = ABOVE_MOB_LAYER
+ else
+ layer = BELOW_MOB_LAYER
+ if(buckled_mob)
+ buckled_mob.setDir(dir)
+
+/obj/structure/bed/chair/vehicle/dropship_cockpit/copilot
+ name = "co-pilot seat"
diff --git a/colonialmarines.dme b/colonialmarines.dme
index d5e035d6d2..fa6152a276 100644
--- a/colonialmarines.dme
+++ b/colonialmarines.dme
@@ -101,6 +101,7 @@
#include "code\__DEFINES\stamina.dm"
#include "code\__DEFINES\stats.dm"
#include "code\__DEFINES\status_effects.dm"
+#include "code\__DEFINES\strippable.dm"
#include "code\__DEFINES\STUI.dm"
#include "code\__DEFINES\subsystems.dm"
#include "code\__DEFINES\surgery.dm"
@@ -481,6 +482,7 @@
#include "code\datums\elements\light_blocking.dm"
#include "code\datums\elements\mouth_drop_item.dm"
#include "code\datums\elements\poor_eyesight_correction.dm"
+#include "code\datums\elements\strippable.dm"
#include "code\datums\elements\suturing.dm"
#include "code\datums\elements\yautja_tracked_item.dm"
#include "code\datums\elements\bullet_trait\damage_boost.dm"
@@ -1911,6 +1913,7 @@
#include "code\modules\mob\living\carbon\human\human_dummy.dm"
#include "code\modules\mob\living\carbon\human\human_helpers.dm"
#include "code\modules\mob\living\carbon\human\human_movement.dm"
+#include "code\modules\mob\living\carbon\human\human_stripping.dm"
#include "code\modules\mob\living\carbon\human\inventory.dm"
#include "code\modules\mob\living\carbon\human\life.dm"
#include "code\modules\mob\living\carbon\human\login.dm"
diff --git a/html/changelogs/AutoChangeLog-pr-390.yml b/html/changelogs/AutoChangeLog-pr-390.yml
deleted file mode 100644
index 6ac1d031b5..0000000000
--- a/html/changelogs/AutoChangeLog-pr-390.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Doubleumc"
-delete-after: True
-changes:
- - admin: "bitfields for MODE_NO_XENO_EVOLVE, MODE_HARDCORE_PERMA, and MODE_NO_JOIN_AS_XENO now work"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-391.yml b/html/changelogs/AutoChangeLog-pr-391.yml
deleted file mode 100644
index 5cda1f45df..0000000000
--- a/html/changelogs/AutoChangeLog-pr-391.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Doubleumc"
-delete-after: True
-changes:
- - bugfix: "Fixed the 88 Mod 4 pistol's holster sprite."
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-08.yml b/html/changelogs/archive/2024-08.yml
index b8745e8c53..d574881cf2 100644
--- a/html/changelogs/archive/2024-08.yml
+++ b/html/changelogs/archive/2024-08.yml
@@ -79,3 +79,28 @@
2024-08-19:
Doubleumc:
- bugfix: fixed WeaponStats TGUI
+2024-08-20:
+ Doubleumc:
+ - bugfix: Fixed the 88 Mod 4 pistol's holster sprite.
+ - admin: bitfields for MODE_NO_XENO_EVOLVE, MODE_HARDCORE_PERMA, and MODE_NO_JOIN_AS_XENO
+ now work
+2024-08-21:
+ DexterDude:
+ - rscadd: Added something
+2024-08-22:
+ BonniePandora:
+ - maptweak: Expanded the galley of the Golden Arrow.
+2024-08-24:
+ BonniePandora:
+ - rscadd: Added various condiment packets of powedered juices, milk & egg to the
+ code
+ - rscadd: Added corresponding reactions for the new powdered substances where needed
+ - rscadd: Sprites for the condiment packets, some taken from Bay, others edited
+ by me from Bay sprites
+ - qol: MRE's now contain a juice packet alongside their typical contents
+ - maptweak: Replaces the magic freezer and it's perishable contents with a locker
+ full of the non-perishable replacements
+ DexterDude:
+ - rscadd: Added something
+ private-tristan:
+ - rscadd: ports TG strip menu
diff --git a/icons/mob/humans/onmob/helmet_garb.dmi b/icons/mob/humans/onmob/helmet_garb.dmi
index 9ed93efa34..31ce025b09 100644
Binary files a/icons/mob/humans/onmob/helmet_garb.dmi and b/icons/mob/humans/onmob/helmet_garb.dmi differ
diff --git a/icons/mob/humans/onmob/mask.dmi b/icons/mob/humans/onmob/mask.dmi
index 0c4ac97807..82a5885c87 100644
Binary files a/icons/mob/humans/onmob/mask.dmi and b/icons/mob/humans/onmob/mask.dmi differ
diff --git a/icons/obj/items/clothing/masks.dmi b/icons/obj/items/clothing/masks.dmi
index 037ee8aba1..f2a3b4ee6d 100644
Binary files a/icons/obj/items/clothing/masks.dmi and b/icons/obj/items/clothing/masks.dmi differ
diff --git a/icons/obj/items/clothing/ties.dmi b/icons/obj/items/clothing/ties.dmi
index a505b419d7..e509f8f2fa 100644
Binary files a/icons/obj/items/clothing/ties.dmi and b/icons/obj/items/clothing/ties.dmi differ
diff --git a/icons/obj/items/clothing/ties_overlay.dmi b/icons/obj/items/clothing/ties_overlay.dmi
index fd6c4204ed..66279502f7 100644
Binary files a/icons/obj/items/clothing/ties_overlay.dmi and b/icons/obj/items/clothing/ties_overlay.dmi differ
diff --git a/icons/obj/items/food.dmi b/icons/obj/items/food.dmi
index 3c2e963e38..5872b7e852 100644
Binary files a/icons/obj/items/food.dmi and b/icons/obj/items/food.dmi differ
diff --git a/icons/obj/items/helmet_garb.dmi b/icons/obj/items/helmet_garb.dmi
index bbebf822c9..6886ec3556 100644
Binary files a/icons/obj/items/helmet_garb.dmi and b/icons/obj/items/helmet_garb.dmi differ
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index b62860559b..3a7c0226cd 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ
diff --git a/icons/obj/structures/doors/dropship4_cargo.dmi b/icons/obj/structures/doors/dropship4_cargo.dmi
new file mode 100644
index 0000000000..ccb76504d9
Binary files /dev/null and b/icons/obj/structures/doors/dropship4_cargo.dmi differ
diff --git a/icons/obj/structures/doors/dropship4_pilot.dmi b/icons/obj/structures/doors/dropship4_pilot.dmi
new file mode 100644
index 0000000000..1bdb60471d
Binary files /dev/null and b/icons/obj/structures/doors/dropship4_pilot.dmi differ
diff --git a/icons/obj/structures/doors/dropship4_side.dmi b/icons/obj/structures/doors/dropship4_side.dmi
new file mode 100644
index 0000000000..7d0d5e5245
Binary files /dev/null and b/icons/obj/structures/doors/dropship4_side.dmi differ
diff --git a/icons/obj/structures/doors/dropship4_side2.dmi b/icons/obj/structures/doors/dropship4_side2.dmi
new file mode 100644
index 0000000000..f2d96e59af
Binary files /dev/null and b/icons/obj/structures/doors/dropship4_side2.dmi differ
diff --git a/icons/obj/structures/machinery/computer.dmi b/icons/obj/structures/machinery/computer.dmi
index 4224992af2..9e3a24f9cc 100644
Binary files a/icons/obj/structures/machinery/computer.dmi and b/icons/obj/structures/machinery/computer.dmi differ
diff --git a/icons/obj/structures/machinery/shuttle-parts.dmi b/icons/obj/structures/machinery/shuttle-parts.dmi
index 7db27387e7..6b6323a7b6 100644
Binary files a/icons/obj/structures/machinery/shuttle-parts.dmi and b/icons/obj/structures/machinery/shuttle-parts.dmi differ
diff --git a/icons/turf/dropship.dmi b/icons/turf/dropship.dmi
index 7e0bfb67b0..ba08ecf600 100644
Binary files a/icons/turf/dropship.dmi and b/icons/turf/dropship.dmi differ
diff --git a/icons/turf/dropship2.dmi b/icons/turf/dropship2.dmi
index 754c20d9ea..787d72e04f 100644
Binary files a/icons/turf/dropship2.dmi and b/icons/turf/dropship2.dmi differ
diff --git a/icons/turf/dropship3.dmi b/icons/turf/dropship3.dmi
index a813e18808..bd13e33fbb 100644
Binary files a/icons/turf/dropship3.dmi and b/icons/turf/dropship3.dmi differ
diff --git a/icons/turf/dropship4.dmi b/icons/turf/dropship4.dmi
new file mode 100644
index 0000000000..db0f58dcee
Binary files /dev/null and b/icons/turf/dropship4.dmi differ
diff --git a/icons/ui_icons/inventory/back.png b/icons/ui_icons/inventory/back.png
new file mode 100644
index 0000000000..736b9d64bf
Binary files /dev/null and b/icons/ui_icons/inventory/back.png differ
diff --git a/icons/ui_icons/inventory/belt.png b/icons/ui_icons/inventory/belt.png
new file mode 100644
index 0000000000..1be89d450a
Binary files /dev/null and b/icons/ui_icons/inventory/belt.png differ
diff --git a/icons/ui_icons/inventory/collar.png b/icons/ui_icons/inventory/collar.png
new file mode 100644
index 0000000000..71803b1b6c
Binary files /dev/null and b/icons/ui_icons/inventory/collar.png differ
diff --git a/icons/ui_icons/inventory/ears.png b/icons/ui_icons/inventory/ears.png
new file mode 100644
index 0000000000..e9a8f3c23c
Binary files /dev/null and b/icons/ui_icons/inventory/ears.png differ
diff --git a/icons/ui_icons/inventory/glasses.png b/icons/ui_icons/inventory/glasses.png
new file mode 100644
index 0000000000..6e6f1ad098
Binary files /dev/null and b/icons/ui_icons/inventory/glasses.png differ
diff --git a/icons/ui_icons/inventory/gloves.png b/icons/ui_icons/inventory/gloves.png
new file mode 100644
index 0000000000..2c8a16cbdb
Binary files /dev/null and b/icons/ui_icons/inventory/gloves.png differ
diff --git a/icons/ui_icons/inventory/hand_l.png b/icons/ui_icons/inventory/hand_l.png
new file mode 100644
index 0000000000..b09228d65f
Binary files /dev/null and b/icons/ui_icons/inventory/hand_l.png differ
diff --git a/icons/ui_icons/inventory/hand_r.png b/icons/ui_icons/inventory/hand_r.png
new file mode 100644
index 0000000000..0e05a487e0
Binary files /dev/null and b/icons/ui_icons/inventory/hand_r.png differ
diff --git a/icons/ui_icons/inventory/head.png b/icons/ui_icons/inventory/head.png
new file mode 100644
index 0000000000..11e2d2254c
Binary files /dev/null and b/icons/ui_icons/inventory/head.png differ
diff --git a/icons/ui_icons/inventory/id.png b/icons/ui_icons/inventory/id.png
new file mode 100644
index 0000000000..4469591d36
Binary files /dev/null and b/icons/ui_icons/inventory/id.png differ
diff --git a/icons/ui_icons/inventory/mask.png b/icons/ui_icons/inventory/mask.png
new file mode 100644
index 0000000000..82e5108937
Binary files /dev/null and b/icons/ui_icons/inventory/mask.png differ
diff --git a/icons/ui_icons/inventory/neck.png b/icons/ui_icons/inventory/neck.png
new file mode 100644
index 0000000000..78ad3ce3b1
Binary files /dev/null and b/icons/ui_icons/inventory/neck.png differ
diff --git a/icons/ui_icons/inventory/pocket.png b/icons/ui_icons/inventory/pocket.png
new file mode 100644
index 0000000000..f42399dca0
Binary files /dev/null and b/icons/ui_icons/inventory/pocket.png differ
diff --git a/icons/ui_icons/inventory/shoes.png b/icons/ui_icons/inventory/shoes.png
new file mode 100644
index 0000000000..d20f7ef4d1
Binary files /dev/null and b/icons/ui_icons/inventory/shoes.png differ
diff --git a/icons/ui_icons/inventory/suit.png b/icons/ui_icons/inventory/suit.png
new file mode 100644
index 0000000000..e9c48e8069
Binary files /dev/null and b/icons/ui_icons/inventory/suit.png differ
diff --git a/icons/ui_icons/inventory/suit_storage.png b/icons/ui_icons/inventory/suit_storage.png
new file mode 100644
index 0000000000..9722eb1029
Binary files /dev/null and b/icons/ui_icons/inventory/suit_storage.png differ
diff --git a/icons/ui_icons/inventory/uniform.png b/icons/ui_icons/inventory/uniform.png
new file mode 100644
index 0000000000..292b3324b5
Binary files /dev/null and b/icons/ui_icons/inventory/uniform.png differ
diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm
index a196e2f20c..a92e396785 100644
--- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm
+++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm
@@ -10,10 +10,11 @@
},
/area/lv522/indoors/c_block/mining)
"aaF" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "15"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "20"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"aaI" = (
/obj/item/stack/sheet/metal,
/turf/open/floor/prison{
@@ -264,6 +265,12 @@
},
/turf/closed/wall/mineral/bone_resin,
/area/lv522/oob)
+"afT" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "32"
+ },
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"afX" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/asphalt/cement{
@@ -2464,10 +2471,10 @@
/turf/open/floor/prison,
/area/lv522/indoors/b_block/bridge)
"bpZ" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "18"
+/turf/closed/shuttle/typhoon{
+ icon_state = "64"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"bqo" = (
/obj/item/prop/colony/usedbandage{
dir = 5
@@ -3443,11 +3450,11 @@
},
/area/lv522/indoors/a_block/fitness/glass)
"bQq" = (
-/obj/structure/cargo_container/wy/mid{
- layer = 5
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "17"
},
-/turf/open/auto_turf/sand_white/layer0,
-/area/lv522/outdoors/w_rockies)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"bQC" = (
/obj/structure/bed/chair{
dir = 1
@@ -4084,6 +4091,12 @@
},
/turf/open/floor/plating/plating_catwalk/prison,
/area/lv522/indoors/b_block/bar)
+"cet" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"cex" = (
/turf/open/auto_turf/shale/layer2,
/area/lv522/landing_zone_2)
@@ -5362,10 +5375,17 @@
},
/area/lv522/oob)
"cJc" = (
-/obj/item/prop/colony/used_flare,
-/obj/structure/cargo_container/wy/right,
-/turf/open/floor/plating,
-/area/lv522/outdoors/colony_streets/north_east_street)
+/obj/structure/stairs/perspective{
+ icon_state = "p_stair_full";
+ can_block_movement = 0
+ },
+/obj/structure/platform{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"cJg" = (
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/asphalt/cement{
@@ -6212,6 +6232,15 @@
/obj/structure/machinery/photocopier,
/turf/open/floor/plating,
/area/lv522/indoors/c_block/cargo)
+"dae" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "29"
+ },
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "29"
+ },
+/turf/open/auto_turf/shale/layer1,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"dah" = (
/obj/structure/filingcabinet{
density = 0;
@@ -6724,16 +6753,10 @@
/turf/open/floor/plating,
/area/lv522/atmos/east_reactor)
"dic" = (
-/obj/structure/platform_decoration{
- dir = 4
- },
-/obj/structure/bed/chair/dropship/passenger{
- dir = 4
+/turf/closed/shuttle/typhoon{
+ icon_state = "104"
},
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
- },
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"dio" = (
/obj/structure/pipes/standard/simple/hidden/green{
dir = 4
@@ -6896,13 +6919,10 @@
},
/area/lv522/atmos/east_reactor/south)
"dlC" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = 8;
- pixel_y = 10
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "22"
},
+/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"dlI" = (
/obj/structure/machinery/door_control/brbutton{
@@ -7175,11 +7195,8 @@
},
/area/lv522/atmos/east_reactor/south)
"dqn" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
- },
-/obj/structure/platform{
- dir = 8
+/obj/structure/platform_decoration{
+ dir = 4
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -7994,8 +8011,9 @@
/turf/open/floor/carpet,
/area/lv522/indoors/c_block/garage)
"dIr" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "22"
+/obj/effect/attach_point/crew_weapon/tornado,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"dIt" = (
@@ -8665,7 +8683,7 @@
/area/lv522/indoors/c_block/cargo)
"dWv" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "6"
+ icon_state = "24"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"dWD" = (
@@ -8707,10 +8725,17 @@
},
/area/lv522/atmos/east_reactor)
"dWY" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "32"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "65"
+ },
+/obj/effect/attach_point/weapon/tornado/right_wing,
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"dXa" = (
/obj/structure/cargo_container/arious/leftmid,
/turf/open/auto_turf/shale/layer2,
@@ -8971,9 +8996,10 @@
},
/area/lv522/atmos/way_in_command_centre)
"ecP" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "25"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "15"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"ecU" = (
/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall,
@@ -9354,6 +9380,11 @@
icon_state = "squares"
},
/area/lv522/atmos/east_reactor)
+"ejQ" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "76"
+ },
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"ekf" = (
/obj/structure/curtain/medical,
/turf/open/floor/strata{
@@ -10962,8 +10993,8 @@
},
/area/lv522/oob)
"eRI" = (
-/obj/structure/barricade/deployable{
- dir = 8
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "34"
},
/turf/open/floor/plating,
/area/lv522/outdoors/colony_streets/north_east_street)
@@ -11011,6 +11042,11 @@
icon_state = "platebot"
},
/area/lv522/indoors/c_block/cargo)
+"eSG" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "36"
+ },
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"eSM" = (
/obj/effect/spawner/gibspawner/xeno,
/turf/open/asphalt/cement{
@@ -11057,11 +11093,10 @@
/turf/open/floor/plating,
/area/lv522/landing_zone_1/tunnel)
"eTw" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
- },
-/obj/structure/platform{
- dir = 8
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
},
/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
@@ -11120,9 +11155,10 @@
},
/area/lv522/indoors/lone_buildings/outdoor_bot)
"eUS" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "33"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "27"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"eUX" = (
/obj/effect/landmark/survivor_spawner,
@@ -11447,11 +11483,18 @@
},
/area/lv522/outdoors/colony_streets/south_east_street)
"fbY" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
},
-/turf/open/floor/plating,
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
+ },
+/area/lv522/outdoors/colony_streets/north_east_street)
"fcd" = (
/obj/vehicle/train/cargo/trolley,
/turf/open/floor/prison{
@@ -12492,9 +12535,10 @@
},
/area/lv522/atmos/reactor_garage)
"fzC" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "28"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "22"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"fzE" = (
/turf/open/floor/plating/plating_catwalk/prison,
@@ -12675,7 +12719,7 @@
},
/area/lv522/indoors/lone_buildings/storage_blocks)
"fDg" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/turf/closed/shuttle/typhoon{
icon_state = "30"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
@@ -13031,10 +13075,9 @@
},
/area/lv522/atmos/cargo_intake)
"fLa" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "47"
- },
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/obj/structure/shuttle/part/tornado/transparent,
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"fLc" = (
/obj/structure/bed/bedroll{
dir = 4
@@ -13467,11 +13510,11 @@
/turf/open/auto_turf/shale/layer1,
/area/lv522/outdoors/nw_rockies)
"fTm" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
+/obj/structure/platform_decoration{
+ dir = 8
},
/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+ icon_state = "rasputin15"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"fTs" = (
@@ -13628,7 +13671,7 @@
/area/lv522/indoors/b_block/bar)
"fXn" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "19"
+ icon_state = "31"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"fXs" = (
@@ -13726,6 +13769,18 @@
},
/turf/open/gm/river,
/area/lv522/landing_zone_1/tunnel)
+"fYN" = (
+/obj/item/clothing/mask/facehugger{
+ desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?";
+ icon_state = "facehugger_impregnated";
+ layer = 3;
+ name = "????";
+ stat = 2
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"fYP" = (
/obj/effect/landmark/structure_spawner/setup/distress/xeno_door,
/turf/open/floor/corsat{
@@ -14818,9 +14873,10 @@
},
/area/lv522/indoors/a_block/dorms)
"guR" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "26"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"guZ" = (
/obj/structure/machinery/power/apc/weak{
@@ -15915,10 +15971,8 @@
/turf/open/floor/prison,
/area/lv522/indoors/c_block/cargo)
"gOZ" = (
-/obj/structure/platform_decoration{
- dir = 8
- },
/obj/effect/decal/cleanable/blood,
+/obj/structure/cargo_container/lockmart/right,
/turf/open/floor/plating,
/area/lv522/outdoors/colony_streets/north_east_street)
"gPp" = (
@@ -16106,8 +16160,9 @@
},
/area/lv522/atmos/north_command_centre)
"gTM" = (
-/obj/structure/girder,
-/turf/open/floor/plating,
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "89a"
+ },
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"gTX" = (
/obj/structure/machinery/photocopier,
@@ -17708,6 +17763,11 @@
icon_state = "blue"
},
/area/lv522/indoors/a_block/hallway)
+"hvf" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "30"
+ },
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"hvh" = (
/obj/structure/platform,
/turf/open/gm/river,
@@ -19355,9 +19415,10 @@
},
/area/lv522/atmos/reactor_garage)
"ibE" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "23"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "21"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"ibS" = (
/obj/effect/decal/cleanable/blood/drip,
@@ -21993,6 +22054,12 @@
icon_state = "marked"
},
/area/lv522/indoors/a_block/bridges)
+"jcA" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "4"
+ },
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"jcH" = (
/obj/effect/spawner/gibspawner/human,
/obj/item/clothing/suit/storage/marine/smartgunner,
@@ -22222,6 +22289,12 @@
icon_state = "blue_plate"
},
/area/lv522/indoors/a_block/admin)
+"jgW" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "22"
+ },
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"jhe" = (
/obj/effect/decal/warning_stripes{
icon_state = "W"
@@ -23747,11 +23820,16 @@
/turf/open/auto_turf/shale/layer1,
/area/lv522/outdoors/colony_streets/central_streets)
"jHa" = (
-/obj/structure/cargo_container/wy/right{
- layer = 5
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
},
-/turf/open/auto_turf/sand_white/layer0,
-/area/lv522/outdoors/w_rockies)
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "65"
+ },
+/turf/open/auto_turf/shale/layer1,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"jHb" = (
/turf/open/gm/river,
/area/lv522/oob)
@@ -26138,7 +26216,7 @@
/area/lv522/indoors/a_block/admin)
"kzk" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "17"
+ icon_state = "47"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"kzl" = (
@@ -26887,11 +26965,10 @@
},
/area/lv522/indoors/a_block/dorm_north)
"kNR" = (
-/obj/structure/closet/crate/explosives,
-/obj/item/storage/box/explosive_mines,
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "100"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"kOa" = (
/obj/structure/pipes/standard/simple/hidden/green{
@@ -27971,13 +28048,8 @@
},
/area/lv522/atmos/cargo_intake)
"lgw" = (
-/obj/structure/machinery/door/poddoor/shutters/almayer{
- dir = 4;
- id = "UD6 East";
- indestructible = 1
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "64"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"lgR" = (
@@ -29531,6 +29603,11 @@
},
/turf/open/auto_turf/shale/layer1,
/area/lv522/outdoors/nw_rockies)
+"lMI" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "62"
+ },
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"lML" = (
/obj/effect/decal/cleanable/generic,
/turf/open/floor/prison{
@@ -29935,11 +30012,11 @@
/turf/closed/wall/strata_outpost,
/area/lv522/indoors/a_block/kitchen/glass)
"lVs" = (
-/obj/structure/platform_decoration{
- dir = 4
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "102"
},
/turf/open/floor/plating,
-/area/lv522/outdoors/colony_streets/north_east_street)
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"lVA" = (
/obj/structure/surface/table/almayer,
/obj/item/reagent_container/food/drinks/cans/souto{
@@ -31512,6 +31589,18 @@
icon_state = "w-y2"
},
/area/lv522/atmos/way_in_command_centre)
+"mCl" = (
+/obj/structure/stairs/perspective{
+ icon_state = "p_stair_full";
+ can_block_movement = 0
+ },
+/obj/structure/platform{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"mCm" = (
/obj/structure/pipes/standard/simple/hidden/green{
dir = 4
@@ -32752,11 +32841,14 @@
/turf/open/floor/prison,
/area/lv522/indoors/a_block/dorms)
"mZM" = (
-/obj/structure/cargo_container/wy/left{
- layer = 5
+/obj/structure/stairs/perspective{
+ icon_state = "p_stair_full";
+ can_block_movement = 0
},
-/turf/open/auto_turf/sand_white/layer0,
-/area/lv522/outdoors/w_rockies)
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"mZN" = (
/obj/effect/landmark/structure_spawner/setup/distress/xeno_door,
/obj/structure/pipes/standard/simple/hidden/green{
@@ -32949,8 +33041,8 @@
/turf/open/floor/prison,
/area/lv522/indoors/c_block/mining)
"nbO" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "77"
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "86a"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"nbT" = (
@@ -33149,8 +33241,8 @@
},
/area/lv522/indoors/a_block/bridges/garden_bridge)
"nfq" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "36"
+/turf/closed/shuttle/typhoon{
+ icon_state = "103"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"nfP" = (
@@ -34884,6 +34976,12 @@
icon_state = "floor_plate"
},
/area/lv522/indoors/a_block/dorms)
+"nOm" = (
+/obj/item/clothing/suit/storage/labcoat/officer,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"nOB" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
@@ -34967,8 +35065,11 @@
},
/area/lv522/indoors/a_block/admin)
"nPN" = (
-/turf/closed/shuttle/dropship2/tornado,
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "28"
+ },
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"nPV" = (
/obj/structure/bed/chair/comfy,
/turf/open/floor/prison,
@@ -35050,9 +35151,10 @@
},
/area/lv522/indoors/a_block/security/glass)
"nQY" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "53"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "35"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"nRp" = (
/obj/structure/pipes/vents/pump,
@@ -35168,8 +35270,9 @@
/turf/open/floor/prison,
/area/lv522/indoors/a_block/admin)
"nSN" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "27"
+/obj/effect/attach_point/crew_weapon/tornado,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"nTa" = (
@@ -35587,6 +35690,12 @@
icon_state = "floor_plate"
},
/area/lv522/atmos/cargo_intake)
+"nZN" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "39"
+ },
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"oaa" = (
/turf/open/asphalt/cement{
icon_state = "cement14"
@@ -35660,10 +35769,11 @@
},
/area/lv522/indoors/a_block/fitness)
"obe" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "40"
+/obj/vehicle/powerloader{
+ dir = 4
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"obt" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/machinery/telecomms/bus/preset_one,
@@ -36871,15 +36981,13 @@
},
/area/lv522/indoors/a_block/dorms)
"oyR" = (
-/obj/structure/surface/table/almayer,
-/obj/item/storage/surgical_tray/empty,
-/obj/structure/machinery/light/double{
- dir = 4;
- pixel_y = -5
+/obj/structure/bed/portable_surgery{
+ pixel_y = 5
},
-/turf/open/floor/strata{
+/obj/structure/curtain/medical,
+/turf/open/floor/plating{
dir = 8;
- icon_state = "white_cyan2"
+ icon_state = "platingdmg3"
},
/area/lv522/outdoors/w_rockies)
"oyY" = (
@@ -38709,8 +38817,12 @@
},
/area/lv522/indoors/c_block/cargo)
"pkB" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "9"
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"pkE" = (
@@ -38858,9 +38970,10 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/north_east_street)
"pps" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "100"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"ppy" = (
/obj/structure/surface/table/almayer{
@@ -38878,9 +38991,10 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/south_east_street)
"ppF" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "101"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"ppK" = (
/obj/structure/surface/table/almayer,
@@ -38944,9 +39058,10 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/north_street)
"pqZ" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "102"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"prs" = (
/obj/effect/decal/cleanable/blood/xeno{
@@ -38957,9 +39072,9 @@
/area/lv522/outdoors/colony_streets/north_street)
"prD" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "5"
+ icon_state = "104"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/area/lv522/outdoors/colony_streets/north_east_street)
"prM" = (
/obj/structure/cargo_container/horizontal/blue/top,
/turf/open/floor/prison,
@@ -39274,9 +39389,10 @@
},
/area/lv522/indoors/a_block/dorms)
"pxY" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "95"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "95a"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"pyc" = (
/obj/effect/decal/cleanable/blood/drip,
@@ -39295,8 +39411,8 @@
},
/area/lv522/atmos/cargo_intake)
"pys" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "97"
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "97a"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"pyA" = (
@@ -39307,13 +39423,11 @@
},
/area/lv522/indoors/a_block/hallway)
"pyO" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = -8;
- pixel_y = 10
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "99"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "99a";
+ layer = 2.97
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"pza" = (
/obj/item/stack/sheet/wood{
@@ -39380,9 +39494,10 @@
},
/area/lv522/indoors/a_block/hallway)
"pAd" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "24"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "9"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"pAj" = (
/turf/open/asphalt/cement{
@@ -39449,12 +39564,12 @@
/turf/open/floor/carpet,
/area/lv522/indoors/c_block/casino)
"pBQ" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "41";
+ density = 0;
+ layer = 4.2
},
+/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"pBT" = (
/turf/open/floor/prison{
@@ -39827,8 +39942,8 @@
},
/area/lv522/indoors/a_block/bridges/dorms_fitness)
"pIu" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "86"
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "86b"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"pIx" = (
@@ -39838,24 +39953,18 @@
},
/area/lv522/indoors/c_block/mining)
"pIO" = (
-/obj/structure/machinery/computer/cameras{
- desc = "The flight controls for a UD6 Dropship. these controls look pretty banged up, and there's some blood covering the screen..";
- name = "\improper 'Typhoon' flight controls";
- network = null;
- pixel_y = 21
- },
-/obj/structure/bed/chair/dropship/pilot{
- dir = 1
- },
-/obj/structure/machinery/light/double{
+/obj/structure/bed/chair/vehicle/dropship_cockpit/pilot{
dir = 1;
- layer = 2.9;
- pixel_y = 9
+ pixel_x = 6;
+ layer = 3.1
},
-/obj/item/prop/almayer/flight_recorder{
- layer = 2.9;
- pixel_x = -9;
- pixel_y = 4
+/obj/structure/prop{
+ desc = "A flight computer that can be used for autopilot or long-range flights.";
+ icon = 'icons/obj/structures/machinery/computer.dmi';
+ icon_state = "camerasb_old";
+ name = "dropship navigation computer";
+ pixel_x = 5;
+ pixel_y = 8
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -40352,14 +40461,20 @@
/turf/open/floor/prison,
/area/lv522/indoors/c_block/garage)
"pRK" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "75"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"pRM" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "81"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "41";
+ density = 0;
+ layer = 4.2
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"pRR" = (
/obj/effect/spawner/gibspawner/xeno,
@@ -40500,8 +40615,11 @@
/turf/open/floor/carpet,
/area/lv522/indoors/c_block/casino)
"pUc" = (
-/turf/open/floor/plating,
-/area/lv522/outdoors/w_rockies)
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "38"
+ },
+/turf/open/auto_turf/shale/layer1,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"pUd" = (
/obj/structure/machinery/light,
/obj/effect/decal/cleanable/dirt,
@@ -40778,10 +40896,11 @@
},
/area/lv522/indoors/lone_buildings/storage_blocks)
"pZb" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "33"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "21"
},
-/area/lv522/landing_zone_forecon/UD6_Typhoon)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"pZi" = (
/obj/structure/prop/invuln/ice_prefab,
/turf/open/asphalt/cement{
@@ -41281,10 +41400,8 @@
/turf/open/floor/prison,
/area/lv522/indoors/a_block/dorm_north)
"qjs" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "71"
- },
-/area/lv522/landing_zone_forecon/UD6_Typhoon)
+/turf/open/auto_turf/shale/layer1,
+/area/lv522/oob)
"qjt" = (
/obj/structure/pipes/standard/simple/hidden/green{
dir = 4
@@ -41295,19 +41412,11 @@
},
/area/lv522/indoors/a_block/dorms)
"qjy" = (
-/obj/structure/machinery/door/poddoor/shutters/almayer{
- dir = 4;
- id = "UD6 East";
- indestructible = 1
- },
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{
- dir = 1;
- name = "\improper Tornado crew hatch"
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "32"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/auto_turf/shale/layer1,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qjC" = (
/obj/item/stack/rods,
/turf/open/floor/prison,
@@ -41330,16 +41439,13 @@
/turf/open/auto_turf/shale/layer1,
/area/lv522/outdoors/colony_streets/south_east_street)
"qjX" = (
-/obj/item/clothing/mask/facehugger{
- desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?";
- icon_state = "facehugger_impregnated";
- layer = 3;
- name = "????";
- stat = 2
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "32"
},
-/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+/obj/effect/attach_point/fuel/tornado{
+ layer = 3.1
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"qkw" = (
/obj/structure/prop/invuln/remote_console_pod,
@@ -41460,12 +41566,8 @@
},
/area/lv522/indoors/b_block/bar)
"qmM" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = -8;
- pixel_y = 10
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "72"
+/turf/closed/shuttle/typhoon{
+ icon_state = "75"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qnb" = (
@@ -41479,27 +41581,8 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/north_east_street)
"qnk" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/overwatch/almayer/broken{
- dir = 8;
- pixel_x = -12;
- pixel_y = 1
- },
-/obj/item/storage/backpack/marine/satchel/rto/small{
- pixel_x = 7;
- pixel_y = 19
- },
-/obj/structure/machinery/door_control{
- id = "UD6 East";
- name = "Cargo Shutter Control";
- pixel_y = -4
- },
-/obj/item/clothing/head/headset{
- pixel_x = 4
- },
-/turf/open/floor/strata{
- dir = 8;
- icon_state = "white_cyan2"
+/turf/closed/shuttle/typhoon{
+ icon_state = "77"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qnn" = (
@@ -41562,12 +41645,8 @@
},
/area/lv522/indoors/a_block/hallway)
"qnV" = (
-/obj/structure/bed/chair/dropship/passenger{
- dir = 8
- },
-/obj/effect/decal/cleanable/blood/splatter,
-/turf/open/shuttle/dropship{
- icon_state = "rasputin6"
+/turf/closed/shuttle/typhoon{
+ icon_state = "82"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qnY" = (
@@ -41600,10 +41679,11 @@
},
/area/lv522/atmos/sewer)
"qpg" = (
-/turf/open/shuttle/dropship{
- icon_state = "floor8"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "16"
},
-/area/lv522/landing_zone_forecon/UD6_Typhoon)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"qpq" = (
/obj/structure/surface/table/almayer,
/obj/structure/machinery/prop/almayer/computer/PC{
@@ -41744,11 +41824,10 @@
},
/area/lv522/indoors/c_block/garage)
"qqS" = (
-/obj/structure/bed/chair/dropship/passenger{
- dir = 4
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin7"
+/obj/structure/girder/reinforced,
+/turf/open/floor/plating{
+ dir = 8;
+ icon_state = "platingdmg3"
},
/area/lv522/outdoors/w_rockies)
"qqW" = (
@@ -41777,12 +41856,10 @@
},
/area/lv522/indoors/c_block/mining)
"qrj" = (
-/obj/structure/machinery/optable,
-/turf/open/floor/strata{
- dir = 8;
- icon_state = "white_cyan2"
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "103"
},
-/area/lv522/outdoors/w_rockies)
+/area/lv522/outdoors/colony_streets/north_east_street)
"qro" = (
/obj/effect/landmark/structure_spawner/setup/distress/xeno_door,
/turf/open/floor/corsat{
@@ -41817,8 +41894,10 @@
/turf/open/floor/plating,
/area/lv522/indoors/c_block/cargo)
"qst" = (
-/obj/structure/girder/displaced,
-/turf/open/floor/plating,
+/turf/open/floor/plating{
+ dir = 8;
+ icon_state = "platingdmg3"
+ },
/area/lv522/outdoors/w_rockies)
"qsC" = (
/obj/structure/surface/table/almayer,
@@ -41873,10 +41952,11 @@
/turf/open/gm/river,
/area/lv522/atmos/sewer)
"qtc" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "74"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "29"
},
-/area/lv522/landing_zone_forecon/UD6_Typhoon)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"qtg" = (
/obj/structure/platform_decoration{
dir = 8
@@ -42195,19 +42275,25 @@
},
/turf/open/floor/wood,
/area/lv522/indoors/a_block/fitness/glass)
-"qzp" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{
- dir = 1;
- name = "\improper Typhoon crew hatch"
+"qze" = (
+/obj/item/ammo_magazine/rifle/heap{
+ current_rounds = 0
},
+/obj/effect/decal/cleanable/blood,
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
+"qzp" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "62"
+ },
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qzw" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "26"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "16"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"qzy" = (
/obj/structure/largecrate/random/barrel{
@@ -42352,8 +42438,21 @@
/turf/open/floor/prison,
/area/lv522/indoors/a_block/dorms)
"qBH" = (
-/obj/structure/cargo_container/wy/left,
-/turf/open/floor/plating,
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds2{
+ id = "aft_door";
+ name = "\improper Tornado cargo door"
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
+ },
/area/lv522/outdoors/colony_streets/north_east_street)
"qBQ" = (
/obj/structure/prop/invuln/ice_prefab/standalone/trim{
@@ -42570,9 +42669,10 @@
},
/area/lv522/indoors/a_block/dorms)
"qFs" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "66"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "71"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qFE" = (
/turf/open/asphalt/cement{
@@ -42620,8 +42720,8 @@
/turf/open/floor/plating/plating_catwalk/prison,
/area/lv522/indoors/a_block/bridges)
"qGQ" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "67"
+/turf/closed/shuttle/typhoon{
+ icon_state = "72"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qHa" = (
@@ -42631,10 +42731,13 @@
},
/area/lv522/indoors/a_block/dorms)
"qHg" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "2"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/auto_turf/sand_white/layer0,
+/area/lv522/outdoors/w_rockies)
"qHj" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/generic,
@@ -42661,22 +42764,22 @@
/turf/open/floor/prison,
/area/lv522/indoors/c_block/mining)
"qHA" = (
-/obj/structure/machinery/prop/almayer/CICmap,
-/obj/item/reagent_container/food/drinks/coffee{
- pixel_x = -4;
- pixel_y = 2
+/obj/structure/machinery/computer/overwatch/toc{
+ pixel_y = 14
},
-/obj/structure/machinery/light/double{
- dir = 8;
- pixel_y = -5
+/obj/structure/surface/table/reinforced/toc/west{
+ pixel_y = -7
},
-/obj/item/ammo_magazine/rifle/m4ra{
- pixel_x = 5;
- pixel_y = 6
+/obj/structure/machinery/prop/almayer/CICmap/arc{
+ pixel_y = 9;
+ pixel_x = -9
},
-/turf/open/floor/strata{
- dir = 8;
- icon_state = "white_cyan2"
+/obj/structure/machinery/computer/railgun/toc{
+ pixel_y = 14;
+ pixel_x = 7
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qHD" = (
@@ -42726,7 +42829,12 @@
},
/area/lv522/indoors/c_block/cargo)
"qJl" = (
-/obj/effect/decal/cleanable/blood/splatter,
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/obj/structure/barricade/handrail{
+ dir = 1
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -42755,11 +42863,11 @@
},
/area/lv522/indoors/b_block/bridge)
"qJw" = (
-/obj/item/clothing/suit/storage/RO{
- name = "\improper UA jacket"
+/obj/structure/bed/chair/dropship/passenger/folded{
+ dir = 4
},
/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+ icon_state = "rasputin7"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qJy" = (
@@ -42866,8 +42974,8 @@
},
/area/lv522/indoors/a_block/dorms)
"qLz" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "69"
+/turf/closed/shuttle/typhoon{
+ icon_state = "73"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qLJ" = (
@@ -42909,17 +43017,10 @@
/turf/open/auto_turf/shale/layer1,
/area/lv522/outdoors/colony_streets/north_east_street)
"qME" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = -7;
- pixel_y = 24
- },
-/obj/structure/prop/invuln/fire{
- pixel_x = -8;
- pixel_y = 10
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "70"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "74"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qMJ" = (
/obj/structure/platform{
@@ -43050,13 +43151,10 @@
},
/area/lv522/indoors/lone_buildings/engineering)
"qOi" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = -8;
- pixel_y = 10
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/tornado/transparent{
icon_state = "26"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qOn" = (
/obj/structure/window/reinforced{
@@ -43340,9 +43438,10 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/north_east_street)
"qSP" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "61"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "66"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qSS" = (
/obj/structure/prop/ice_colony/dense/planter_box{
@@ -43369,8 +43468,8 @@
},
/area/lv522/indoors/c_block/mining)
"qTh" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "62"
+/turf/closed/shuttle/typhoon{
+ icon_state = "67"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qTr" = (
@@ -43445,45 +43544,28 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/south_east_street)
"qTO" = (
-/obj/structure/largecrate/supply/ammo/m41a/half{
- pixel_x = 5
+/obj/structure/machinery/light/double{
+ dir = 8;
+ pixel_y = -5
},
-/obj/item/storage/box/guncase/m41a{
- pixel_x = 2;
- pixel_y = 6
+/obj/structure/bed/chair/vehicle/toc{
+ dir = 1;
+ pixel_y = 19;
+ pixel_x = 16
},
-/obj/item/ammo_box/rounds/empty{
- layer = 3.1;
- pixel_y = -15
+/obj/effect/decal/cleanable/dirt,
+/obj/item/storage/backpack/marine/satchel/rto{
+ pixel_y = 12;
+ pixel_x = -6
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qUf" = (
-/obj/item/ammo_magazine/rifle/m4ra/ext{
- current_rounds = 0
- },
-/obj/item/ammo_magazine/rifle/m4ra/ext{
- current_rounds = 0
- },
-/obj/item/ammo_magazine/rifle/m4ra/ext{
- current_rounds = 0
- },
-/obj/item/ammo_magazine/rifle/m4ra/ext{
- current_rounds = 0
- },
-/obj/structure/closet/crate/ammo,
-/obj/structure/barricade/handrail{
- dir = 8
- },
-/obj/structure/barricade/handrail{
- dir = 4
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
- },
-/area/lv522/landing_zone_forecon/UD6_Typhoon)
+/obj/structure/cargo_container/lockmart/left,
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"qUh" = (
/obj/structure/pipes/standard/simple/hidden/green{
dir = 9
@@ -43512,15 +43594,17 @@
},
/area/lv522/atmos/reactor_garage)
"qUD" = (
-/obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{
- pixel_x = 30
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
},
-/obj/effect/decal/cleanable/blood/splatter,
-/obj/item/ammo_box/rounds/smg{
- layer = 3;
- pixel_x = 1;
- pixel_y = 4
+/obj/structure/surface/table/almayer,
+/obj/item/storage/surgical_tray/empty,
+/obj/item/reagent_container/hypospray/autoinjector/oxycodone{
+ pixel_y = 9;
+ pixel_x = -3
},
+/obj/effect/decal/cleanable/dirt,
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -43556,8 +43640,8 @@
},
/area/lv522/indoors/a_block/dorms)
"qVl" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "64"
+/turf/closed/shuttle/typhoon{
+ icon_state = "69"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qVN" = (
@@ -43618,9 +43702,10 @@
},
/area/lv522/indoors/a_block/dorms)
"qWZ" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "65"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "70"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"qXs" = (
/obj/structure/closet/firecloset/full,
@@ -44193,9 +44278,10 @@
},
/area/lv522/outdoors/colony_streets/east_central_street)
"rfi" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "100"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "95a"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"rfk" = (
/obj/effect/decal/cleanable/dirt,
@@ -44237,7 +44323,8 @@
/area/lv522/indoors/c_block/cargo)
"rgA" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "101"
+ icon_state = "97a";
+ opacity = 0
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"rgG" = (
@@ -44303,9 +44390,10 @@
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"rii" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "102"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "99a"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"ris" = (
/obj/structure/surface/table/reinforced/prison,
@@ -44320,10 +44408,9 @@
},
/area/lv522/indoors/a_block/medical/glass)
"riE" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "68"
- },
-/area/lv522/landing_zone_forecon/UD6_Typhoon)
+/obj/item/stack/sheet/metal/med_small_stack,
+/turf/open/auto_turf/sand_white/layer0,
+/area/lv522/outdoors/w_rockies)
"riJ" = (
/obj/structure/surface/table/reinforced/prison,
/obj/item/paper_bin{
@@ -44404,8 +44491,11 @@
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"rkR" = (
-/obj/structure/barricade/deployable{
- dir = 4
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/obj/structure/barricade/handrail{
+ dir = 1
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -44930,12 +45020,16 @@
/turf/open/floor/prison,
/area/lv522/indoors/a_block/dorms)
"ruj" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "59"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "28"
},
-/area/lv522/landing_zone_forecon/UD6_Typhoon)
+/obj/effect/attach_point/fuel/tornado{
+ layer = 3.1
+ },
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"rus" = (
-/obj/effect/decal/cleanable/blood/splatter,
+/obj/effect/attach_point/crew_weapon/typhoon,
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
@@ -45242,7 +45336,8 @@
/area/lv522/indoors/c_block/garage)
"rAc" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "95"
+ icon_state = "86b";
+ opacity = 0
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"rAf" = (
@@ -45258,13 +45353,16 @@
},
/area/lv522/indoors/a_block/dorms)
"rAt" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
+/obj/structure/machinery/light/double{
+ dir = 8;
+ pixel_y = -5
},
-/obj/structure/platform{
+/obj/structure/bed/chair/dropship/passenger{
dir = 4
},
-/turf/open/floor/plating,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
/area/lv522/landing_zone_forecon/UD6_Tornado)
"rAu" = (
/obj/structure/platform_decoration,
@@ -45316,13 +45414,27 @@
/turf/open/floor/corsat,
/area/lv522/atmos/cargo_intake)
"rBU" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "41"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "39"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"rBZ" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "97"
+/obj/structure/bed/chair/vehicle{
+ dir = 1;
+ pixel_x = 6;
+ layer = 4.1
+ },
+/obj/structure/prop{
+ desc = "A flight computer that can be used for autopilot or long-range flights.";
+ icon = 'icons/obj/structures/machinery/computer.dmi';
+ icon_state = "camerasb_old";
+ name = "dropship navigation computer";
+ pixel_x = 5;
+ pixel_y = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"rCa" = (
@@ -45334,7 +45446,8 @@
/area/lv522/indoors/lone_buildings/engineering)
"rCi" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "99"
+ icon_state = "89b";
+ opacity = 0
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"rCp" = (
@@ -45382,14 +45495,11 @@
},
/area/lv522/landing_zone_2/ceiling)
"rCI" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = -6;
- pixel_y = 32
- },
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "17"
+/obj/structure/shuttle/part/tornado{
+ icon_state = "6"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"rCQ" = (
/obj/structure/pipes/standard/simple/hidden/green{
dir = 4
@@ -45399,19 +45509,17 @@
},
/area/lv522/outdoors/colony_streets/south_east_street)
"rDb" = (
-/obj/item/device/m56d_post,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/wo_supplies/storage/m56d,
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"rDu" = (
-/obj/structure/machinery/door_control{
- id = "UD6";
- name = "Cargo Shutter Control"
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "53"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "27"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"rDz" = (
/obj/structure/bed/chair/dropship/passenger{
@@ -45480,8 +45588,8 @@
},
/area/lv522/outdoors/colony_streets/east_central_street)
"rFp" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "51"
+/turf/closed/shuttle/typhoon{
+ icon_state = "37"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"rFw" = (
@@ -45495,9 +45603,10 @@
/turf/open/floor/plating,
/area/lv522/landing_zone_2)
"rGg" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "40"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "38"
},
+/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"rGi" = (
/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node,
@@ -45993,10 +46102,13 @@
},
/area/lv522/indoors/a_block/medical)
"rOO" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "4"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"rOP" = (
/obj/structure/pipes/standard/simple/hidden/green{
dir = 4
@@ -46683,9 +46795,13 @@
},
/area/lv522/indoors/c_block/mining)
"sbG" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "28"
},
+/obj/effect/attach_point/fuel/typhoon{
+ layer = 3.1
+ },
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sbJ" = (
/obj/structure/closet/wardrobe/medic_white,
@@ -46711,43 +46827,45 @@
},
/area/lv522/indoors/a_block/kitchen/damage)
"sci" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "29"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sct" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "40"
+/obj/structure/closet/crate/explosives,
+/obj/effect/landmark/wo_supplies/storage/mines,
+/obj/effect/landmark/wo_supplies/storage/mines,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"scv" = (
-/obj/structure/bed/chair/dropship/passenger{
- dir = 4
- },
/obj/structure/machinery/light/double{
dir = 8;
pixel_y = -5
},
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"scw" = (
-/obj/item/ammo_magazine/rifle/heap{
- current_rounds = 0
- },
+/obj/effect/decal/cleanable/blood/oil/streak,
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"scy" = (
-/obj/structure/bed/chair/dropship/passenger{
- dir = 8
- },
/obj/structure/machinery/light/double{
dir = 4;
pixel_y = -5
},
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -46768,7 +46886,7 @@
/turf/open/floor/plating/plating_catwalk/prison,
/area/lv522/indoors/a_block/bridges/op_centre)
"sdE" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/turf/closed/shuttle/typhoon{
icon_state = "31"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
@@ -46793,17 +46911,10 @@
},
/area/lv522/atmos/east_reactor/south)
"sec" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = -7;
- pixel_y = 17
- },
-/obj/structure/prop/invuln/fire{
- pixel_x = -8;
- pixel_y = 10
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "33"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sek" = (
/obj/structure/machinery/light{
@@ -46893,13 +47004,10 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_2)
"sfZ" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = 10;
- pixel_y = 32
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "16"
},
+/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sgm" = (
/obj/item/stack/sheet/wood,
@@ -46954,7 +47062,8 @@
/area/lv522/indoors/a_block/fitness/glass)
"shq" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "86"
+ icon_state = "86a";
+ opacity = 0
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"shD" = (
@@ -47099,9 +47208,7 @@
/turf/open/floor/prison,
/area/lv522/outdoors/colony_streets/windbreaker/observation)
"sjS" = (
-/obj/structure/closet/crate/green,
-/obj/item/device/sentry_computer,
-/obj/item/defenses/handheld/sentry,
+/obj/structure/bed/chair/dropship/passenger/folded,
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -47148,10 +47255,11 @@
},
/area/lv522/atmos/reactor_garage)
"skE" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "63"
+/obj/structure/shuttle/part/tornado{
+ icon_state = "5"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"skQ" = (
/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{
dir = 1;
@@ -47207,24 +47315,24 @@
/turf/open/auto_turf/shale/layer1,
/area/lv522/outdoors/colony_streets/north_west_street)
"slK" = (
-/obj/structure/machinery/computer/cameras{
- desc = "The flight controls for a UD6 Dropship. these controls look pretty banged up, and there's some blood covering the screen..";
- name = "\improper 'Tornado' flight controls";
- network = null;
- pixel_y = 21
- },
-/obj/structure/bed/chair/dropship/pilot{
- dir = 1
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full";
+ pixel_y = 22
},
-/obj/structure/machinery/light/double{
+/obj/structure/bed/chair/vehicle/dropship_cockpit/copilot{
dir = 1;
- layer = 2.9;
- pixel_y = 9
+ layer = 5;
+ pixel_x = 8
},
-/obj/item/prop/almayer/flight_recorder{
- layer = 2.9;
- pixel_x = -9;
- pixel_y = 4
+/obj/structure/prop{
+ desc = "A computer to manage equipment, weapons and simulations installed on the dropship.";
+ icon = 'icons/obj/structures/machinery/computer.dmi';
+ icon_state = "camerasb_old";
+ name = "\improper 'Tornado' weapons controls";
+ pixel_x = 8;
+ pixel_y = 8;
+ layer = 4.14
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -47621,7 +47729,8 @@
/area/lv522/indoors/a_block/medical)
"ssU" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "89"
+ icon_state = "89a";
+ opacity = 0
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"std" = (
@@ -47753,9 +47862,10 @@
},
/area/lv522/indoors/c_block/cargo)
"swr" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "45"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "29"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"swt" = (
/obj/structure/prop/invuln/ice_prefab{
@@ -48184,9 +48294,10 @@
},
/area/lv522/indoors/b_block/hydro)
"sFG" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/tornado/transparent{
icon_state = "22"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sFL" = (
/obj/structure/prop/invuln/ice_prefab{
@@ -48195,12 +48306,16 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/north_west_street)
"sFS" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "23"
+ },
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "23"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sGc" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/turf/closed/shuttle/typhoon{
icon_state = "24"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
@@ -48252,13 +48367,14 @@
/turf/open/floor/plating/plating_catwalk/prison,
/area/lv522/landing_zone_2/ceiling)
"sGT" = (
+/obj/effect/decal/cleanable/dirt,
/obj/structure/barricade/deployable,
-/obj/effect/decal/cleanable/blood/splatter,
/turf/open/shuttle/dropship{
icon_state = "rasputin4"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sGY" = (
+/obj/effect/decal/cleanable/dirt,
/obj/structure/barricade/deployable,
/turf/open/shuttle/dropship{
icon_state = "floor8"
@@ -48340,15 +48456,41 @@
/turf/open/floor/prison,
/area/lv522/landing_zone_2)
"sIx" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/turf/closed/shuttle/typhoon{
icon_state = "25"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
+"sIz" = (
+/obj/structure/closet/crate/ammo,
+/obj/item/ammo_magazine/rifle/m4ra/ext{
+ current_rounds = 0
+ },
+/obj/item/ammo_magazine/rifle/m4ra/ext{
+ current_rounds = 0
+ },
+/obj/item/ammo_magazine/rifle/m4ra/ext{
+ current_rounds = 0
+ },
+/obj/item/ammo_magazine/rifle/m4ra/ext{
+ current_rounds = 0
+ },
+/obj/item/ammo_magazine/rifle/m4ra/ext{
+ current_rounds = 0
+ },
+/obj/item/ammo_magazine/rifle/m4ra/ext{
+ current_rounds = 0
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sIA" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "76"
+/obj/item/prop/colony/used_flare,
+/obj/structure/barricade/deployable{
+ dir = 1
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"sIE" = (
/obj/structure/machinery/light{
dir = 1
@@ -48361,9 +48503,10 @@
},
/area/lv522/landing_zone_1/ceiling)
"sIK" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/tornado/transparent{
icon_state = "27"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"sIN" = (
/obj/effect/decal/warning_stripes{
@@ -49403,9 +49546,10 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_1)
"tbl" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "16"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"tby" = (
/obj/structure/bed/chair/comfy{
@@ -49468,9 +49612,10 @@
},
/area/lv522/outdoors/colony_streets/north_east_street)
"tcz" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "17"
},
+/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"tcE" = (
/obj/structure/prop/ice_colony/dense/planter_box{
@@ -49533,12 +49678,13 @@
},
/area/lv522/indoors/a_block/bridges/corpo)
"tdE" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "46"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "9"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"tdH" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/turf/closed/shuttle/typhoon{
icon_state = "47"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
@@ -49557,11 +49703,15 @@
/area/lv522/atmos/sewer)
"tdS" = (
/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
+ icon_state = "p_stair_full";
+ can_block_movement = 0
},
/obj/structure/platform{
dir = 8
},
+/obj/structure/platform{
+ dir = 4
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -49631,11 +49781,15 @@
/area/lv522/atmos/east_reactor/south)
"teL" = (
/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
+ icon_state = "p_stair_full";
+ can_block_movement = 0
},
/obj/structure/platform{
dir = 4
},
+/obj/structure/platform{
+ dir = 8
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -49684,7 +49838,7 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/n_rockies)
"tfV" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/turf/closed/shuttle/typhoon{
icon_state = "48"
},
/area/lv522/landing_zone_forecon/UD6_Typhoon)
@@ -49713,9 +49867,10 @@
},
/area/lv522/landing_zone_1)
"tgM" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
- icon_state = "49"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "15"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"thb" = (
/obj/structure/surface/table/almayer,
@@ -49748,9 +49903,10 @@
},
/area/lv522/indoors/a_block/dorms/glass)
"the" = (
-/turf/closed/shuttle/dropship2/tornado{
+/obj/structure/shuttle/part/tornado/transparent{
icon_state = "71"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"thi" = (
/obj/effect/decal/cleanable/blood/xeno,
@@ -50576,7 +50732,7 @@
/area/lv522/indoors/a_block/admin)
"twB" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "48"
+ icon_state = "19"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"twQ" = (
@@ -50702,17 +50858,9 @@
},
/area/lv522/indoors/c_block/mining)
"tzm" = (
-/obj/structure/bed/chair/dropship/passenger{
- dir = 8
- },
-/obj/structure/machinery/light/double{
- dir = 4;
- pixel_y = -5
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
- },
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/obj/structure/cargo_container/lockmart/mid,
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"tzz" = (
/obj/structure/largecrate/random/secure,
/obj/structure/largecrate/random/mini{
@@ -50724,10 +50872,8 @@
/obj/structure/platform_decoration{
dir = 4
},
-/obj/structure/closet/crate/ammo,
-/obj/item/ammo_magazine/rifle/lmg/holo_target,
-/obj/item/weapon/gun/rifle/lmg{
- current_mag = null
+/obj/structure/platform_decoration{
+ dir = 8
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -50737,6 +50883,12 @@
/obj/structure/platform_decoration{
dir = 8
},
+/obj/structure/platform_decoration{
+ dir = 4
+ },
+/obj/item/ammo_magazine/rifle/heap{
+ current_rounds = 0
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -50812,6 +50964,10 @@
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/central_streets)
"tBM" = (
+/obj/structure/closet/crate/ammo/alt,
+/obj/item/defenses/handheld/sentry,
+/obj/item/defenses/handheld/sentry,
+/obj/item/device/sentry_computer,
/turf/open/shuttle/dropship{
icon_state = "rasputin6"
},
@@ -51208,6 +51364,10 @@
/turf/open/floor/prison,
/area/lv522/indoors/c_block/garage)
"tIF" = (
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
+ },
/obj/structure/bed/chair/dropship/passenger{
dir = 8
},
@@ -51724,9 +51884,13 @@
},
/area/lv522/indoors/a_block/bridges)
"tRu" = (
-/obj/structure/cargo_container/wy/mid,
-/turf/open/floor/plating,
-/area/lv522/outdoors/colony_streets/north_east_street)
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
+ },
+/turf/open/auto_turf/sand_white/layer0,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"tRI" = (
/obj/structure/surface/table/almayer,
/obj/structure/machinery/computer/cameras/wooden_tv{
@@ -51784,6 +51948,11 @@
dir = 8;
pixel_y = -5
},
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate/ammo,
+/obj/item/weapon/gun/rifle/lmg{
+ current_mag = null
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -52277,9 +52446,10 @@
},
/area/lv522/indoors/a_block/fitness)
"ucD" = (
-/turf/closed/shuttle/dropship2/tornado{
+/obj/structure/shuttle/part/tornado/transparent{
icon_state = "74"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"ucM" = (
/obj/structure/pipes/standard/manifold/fourway/hidden/green,
@@ -52816,10 +52986,17 @@
/turf/open/floor/prison,
/area/lv522/indoors/a_block/security/glass)
"ulh" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "3"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "41";
+ layer = 4.2;
+ density = 0
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "61"
+ },
+/obj/effect/attach_point/weapon/tornado/left_wing,
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"ulL" = (
/turf/open/floor/prison{
dir = 8;
@@ -53097,9 +53274,10 @@
/turf/open/asphalt/cement,
/area/lv522/outdoors/n_rockies)
"uru" = (
-/turf/closed/shuttle/dropship2/tornado{
+/obj/structure/shuttle/part/tornado/transparent{
icon_state = "66"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"urv" = (
/obj/structure/surface/table/reinforced/prison,
@@ -53626,17 +53804,13 @@
/turf/open/floor/prison,
/area/lv522/outdoors/colony_streets/north_street)
"uDM" = (
-/obj/structure/machinery/light/double{
- dir = 8;
- pixel_y = -5
- },
-/obj/structure/bed/chair/dropship/passenger{
- dir = 4
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "41";
+ layer = 4.2;
+ density = 0
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"uDP" = (
/obj/structure/bed/chair/comfy{
dir = 8
@@ -53670,40 +53844,42 @@
},
/area/lv522/atmos/cargo_intake)
"uEr" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
},
-/obj/structure/machinery/door/poddoor/shutters/almayer/open{
- id = "UD6";
- name = "\improper Shutters"
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
},
-/obj/structure/platform{
- dir = 8
+/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds2{
+ id = "aft_door";
+ name = "\improper Typhoon cargo door"
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
},
-/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"uEt" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
+/obj/structure/platform{
+ dir = 1
},
-/obj/structure/machinery/door/poddoor/shutters/almayer/open{
- id = "UD6";
- name = "\improper Shutters"
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
},
-/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"uEz" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
},
-/obj/structure/machinery/door/poddoor/shutters/almayer/open{
- id = "UD6";
- name = "\improper Shutters"
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
},
-/obj/structure/platform{
- dir = 4
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
},
-/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"uEC" = (
/turf/open/floor/prison{
@@ -53749,13 +53925,10 @@
/turf/open/floor/plating,
/area/lv522/landing_zone_1/tunnel)
"uEX" = (
-/obj/structure/prop/invuln/fire{
- pixel_x = -6;
- pixel_y = 32
- },
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "17"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"uFe" = (
/obj/structure/bed/sofa/vert/white/bot,
@@ -54567,7 +54740,7 @@
/area/lv522/indoors/a_block/corpo)
"uSB" = (
/turf/closed/shuttle/dropship2/tornado{
- icon_state = "31"
+ icon_state = "25"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"uSI" = (
@@ -54932,15 +55105,10 @@
/turf/open/auto_turf/shale/layer1,
/area/lv522/outdoors/colony_streets/central_streets)
"vbk" = (
-/obj/structure/stairs/perspective{
- icon_state = "p_stair_full"
- },
-/obj/structure/platform{
- dir = 4
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "38"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"vbm" = (
/obj/structure/pipes/standard/simple/hidden/green{
@@ -55029,7 +55197,8 @@
/turf/open/auto_turf/shale/layer2,
/area/lv522/outdoors/colony_streets/north_east_street)
"vcu" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon,
+/obj/structure/shuttle/part/typhoon/transparent,
+/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vcF" = (
/obj/structure/stairs/perspective{
@@ -55180,9 +55349,10 @@
/turf/open/floor/wood,
/area/lv522/indoors/c_block/casino)
"vfl" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "2"
},
+/turf/open/auto_turf/sand_white/layer0,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vfC" = (
/obj/item/storage/backpack/marine/satchel{
@@ -55223,9 +55393,10 @@
},
/area/lv522/indoors/c_block/garage)
"vga" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "3"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vgb" = (
/obj/structure/platform,
@@ -55267,15 +55438,12 @@
},
/area/lv522/indoors/a_block/bridges/corpo_fitness)
"vgM" = (
-/obj/structure/platform_decoration{
- dir = 4
+/obj/structure/closet/crate/ammo,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
},
-/turf/open/auto_turf/shale/layer1,
-/area/lv522/outdoors/w_rockies)
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vhd" = (
-/obj/structure/platform_decoration{
- dir = 8
- },
/obj/effect/decal/cleanable/blood,
/turf/open/auto_turf/shale/layer1,
/area/lv522/outdoors/w_rockies)
@@ -55301,19 +55469,22 @@
},
/area/lv522/atmos/east_reactor/south)
"vhC" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "4"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vhJ" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "5"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vhO" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "6"
},
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vil" = (
/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{
@@ -55424,17 +55595,11 @@
/turf/open/floor/prison,
/area/lv522/indoors/c_block/mining)
"vjs" = (
-/obj/structure/machinery/light/double{
- dir = 4;
- pixel_y = -5
- },
-/obj/structure/bed/chair/dropship/passenger{
- dir = 8
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "28"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/auto_turf/shale/layer1,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vju" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/prison{
@@ -55511,6 +55676,12 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating/plating_catwalk/prison,
/area/lv522/indoors/a_block/admin)
+"vky" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "39"
+ },
+/turf/open/auto_turf/sand_white/layer0,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vkC" = (
/obj/effect/decal/cleanable/cobweb,
/turf/open/floor/prison{
@@ -55792,9 +55963,10 @@
},
/area/lv522/indoors/a_block/corpo)
"vpU" = (
-/turf/closed/shuttle/dropship2/tornado{
+/obj/structure/shuttle/part/tornado/transparent{
icon_state = "70"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"vqe" = (
/obj/structure/machinery/light{
@@ -56079,9 +56251,8 @@
},
/area/lv522/landing_zone_1/ceiling)
"vuF" = (
-/obj/vehicle/powerloader,
-/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "48"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"vuH" = (
@@ -56109,6 +56280,9 @@
name = "????";
stat = 2
},
+/obj/structure/barricade/deployable{
+ dir = 1
+ },
/turf/open/floor/prison{
icon_state = "floor_plate"
},
@@ -56901,13 +57075,29 @@
},
/area/lv522/indoors/a_block/dorms)
"vJo" = (
-/obj/structure/barricade/deployable{
- dir = 1
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full";
+ pixel_y = 22
},
-/turf/open/floor/prison{
- icon_state = "floor_plate"
+/obj/structure/bed/chair/vehicle/dropship_cockpit/copilot{
+ dir = 1;
+ pixel_x = 8;
+ layer = 5
},
-/area/lv522/outdoors/colony_streets/north_east_street)
+/obj/structure/prop{
+ desc = "A computer to manage equipment, weapons and simulations installed on the dropship.";
+ icon = 'icons/obj/structures/machinery/computer.dmi';
+ icon_state = "camerasb_old";
+ name = "\improper 'Typhoon' weapons controls";
+ pixel_x = 8;
+ pixel_y = 8;
+ layer = 4.14
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"vJr" = (
/obj/structure/machinery/landinglight/ds2/delaythree,
/turf/open/floor/plating,
@@ -58680,9 +58870,12 @@
/turf/closed/wall/shiva/prefabricated/reinforced,
/area/lv522/outdoors/colony_streets/north_west_street)
"wqt" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "16"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "41";
+ layer = 4.2;
+ density = 0
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"wqA" = (
/obj/structure/bed/chair{
@@ -59101,15 +59294,17 @@
},
/area/lv522/indoors/a_block/bridges)
"wyM" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "61"
+/obj/effect/decal/cleanable/blood,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"wzg" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "62"
+/obj/effect/decal/cleanable/dirt,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"wzt" = (
/obj/item/storage/backpack/marine/satchel{
desc = "It's the heavy-duty black polymer kind. Time to take out the trash!";
@@ -59156,9 +59351,10 @@
},
/area/lv522/outdoors/colony_streets/east_central_street)
"wAf" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "68"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "26"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"wAB" = (
/obj/structure/surface/table/almayer,
@@ -59195,9 +59391,6 @@
},
/area/lv522/indoors/a_block/executive)
"wBr" = (
-/obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{
- pixel_x = 30
- },
/obj/structure/bed/chair/dropship/passenger{
dir = 8
},
@@ -59234,10 +59427,16 @@
},
/area/lv522/atmos/reactor_garage)
"wCr" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "64"
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "41";
+ density = 0;
+ layer = 4.2
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "61"
+ },
+/turf/open/auto_turf/sand_white/layer0,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"wCt" = (
/obj/structure/machinery/light{
dir = 4
@@ -59909,10 +60108,11 @@
},
/area/lv522/indoors/a_block/fitness)
"wRL" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "30"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "33"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"wRQ" = (
/obj/structure/surface/table/almayer,
/obj/structure/phone_base/colony_net/rotary{
@@ -60163,10 +60363,29 @@
/turf/open/floor/prison,
/area/lv522/indoors/a_block/bridges/dorms_fitness)
"wXe" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "65"
+/obj/structure/surface/table/reinforced/toc/east{
+ pixel_y = -7
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/obj/structure/machinery/computer/railgun/gatling/toc{
+ pixel_y = 13;
+ pixel_x = -7
+ },
+/obj/structure/phone_base/toc{
+ pixel_y = 13;
+ pixel_x = 11;
+ phone_id = "Typhoon Overwatch";
+ phone_category = "Overwatch";
+ name = "Typhoon overwatch telephone receiver"
+ },
+/obj/item/reagent_container/food/drinks/coffeecup{
+ pixel_y = -5;
+ pixel_x = 10
+ },
+/obj/item/clothing/head/headset,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin6"
+ },
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"wXq" = (
/obj/structure/surface/table/almayer,
/obj/item/reagent_container/food/snacks/grown/deathberries{
@@ -60468,6 +60687,12 @@
},
/turf/open/floor/prison,
/area/lv522/indoors/c_block/mining)
+"xcR" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "101"
+ },
+/turf/open/floor/plating,
+/area/lv522/landing_zone_forecon/UD6_Tornado)
"xcU" = (
/turf/open/floor/corsat{
icon_state = "plate"
@@ -60740,9 +60965,13 @@
},
/area/lv522/indoors/lone_buildings/storage_blocks)
"xic" = (
-/turf/closed/shuttle/dropship2/tornado/typhoon{
+/obj/structure/shuttle/part/typhoon/transparent{
icon_state = "32"
},
+/obj/effect/attach_point/fuel/typhoon{
+ layer = 3.1
+ },
+/turf/open/auto_turf/shale/layer1,
/area/lv522/landing_zone_forecon/UD6_Typhoon)
"xig" = (
/obj/structure/closet/crate,
@@ -60812,6 +61041,12 @@
"xjF" = (
/turf/closed/wall/strata_outpost,
/area/lv522/indoors/a_block/executive)
+"xjK" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/shuttle/dropship{
+ icon_state = "floor8"
+ },
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"xjO" = (
/obj/structure/window/framed/strata/reinforced,
/turf/open/floor/corsat{
@@ -60856,17 +61091,11 @@
},
/area/lv522/indoors/a_block/security)
"xkk" = (
-/obj/structure/bed/chair/dropship/passenger{
- dir = 4
- },
-/obj/structure/machinery/light/double{
- dir = 8;
- pixel_y = -5
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/tornado{
+ icon_state = "2"
},
-/area/lv522/landing_zone_forecon/UD6_Tornado)
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"xkv" = (
/obj/effect/decal/cleanable/blood/drip,
/obj/structure/pipes/standard/simple/hidden/green{
@@ -61141,6 +61370,12 @@
"xqp" = (
/turf/open/auto_turf/shale/layer2,
/area/lv522/landing_zone_1)
+"xqQ" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "3"
+ },
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"xqV" = (
/obj/structure/cargo_container/kelland/right,
/turf/open/floor/prison{
@@ -61184,9 +61419,10 @@
/turf/open/floor/prison,
/area/lv522/indoors/a_block/dorms/glass)
"xsc" = (
-/turf/closed/shuttle/dropship2/tornado{
- icon_state = "29"
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "23"
},
+/turf/open/floor/plating,
/area/lv522/landing_zone_forecon/UD6_Tornado)
"xsd" = (
/obj/structure/pipes/standard/simple/hidden/green{
@@ -62040,16 +62276,7 @@
},
/area/lv522/indoors/lone_buildings/engineering)
"xKc" = (
-/obj/structure/barricade/handrail{
- dir = 8
- },
-/obj/structure/barricade/handrail{
- dir = 4
- },
-/obj/structure/closet/crate/ammo,
-/obj/item/ammo_magazine/m56d,
-/obj/item/ammo_magazine/m56d,
-/obj/item/device/m56d_gun,
+/obj/effect/attach_point/crew_weapon/typhoon,
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -62204,11 +62431,9 @@
},
/area/lv522/atmos/east_reactor/south)
"xNu" = (
-/obj/structure/platform_decoration{
- dir = 8
- },
-/obj/structure/bed/chair/dropship/passenger{
- dir = 8
+/obj/structure/machinery/light/double{
+ dir = 8;
+ pixel_y = -5
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -62502,17 +62727,8 @@
},
/area/lv522/outdoors/colony_streets/north_street)
"xRM" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{
- dir = 1;
- name = "\improper Tornado crew hatch"
- },
-/obj/structure/machinery/door/poddoor/shutters/almayer{
- dir = 4;
- id = "UD6 East";
- indestructible = 1
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "18"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"xRQ" = (
@@ -62901,6 +63117,12 @@
"xYD" = (
/turf/open/floor/plating/plating_catwalk/prison,
/area/lv522/atmos/east_reactor/south)
+"xZf" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "27"
+ },
+/turf/open/floor/plating,
+/area/lv522/outdoors/colony_streets/north_east_street)
"xZw" = (
/turf/open/floor/corsat{
icon_state = "squares"
@@ -63438,6 +63660,12 @@
"yiM" = (
/turf/open/auto_turf/sand_white/layer0,
/area/lv522/outdoors/colony_streets/central_streets)
+"yiW" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "23"
+ },
+/turf/open/auto_turf/sand_white/layer0,
+/area/lv522/landing_zone_forecon/UD6_Typhoon)
"yiZ" = (
/obj/structure/prop/vehicles/crawler{
dir = 8;
@@ -65342,7 +65570,7 @@ sRA
sRA
sRA
sRA
-sRA
+uiK
sRA
sRA
sRA
@@ -65563,14 +65791,14 @@ sRA
sRA
sRA
sRA
+uiK
sRA
sRA
sRA
sRA
-sRA
-sRA
-sRA
-sRA
+uiK
+uiK
+uiK
sRA
sRA
sRA
@@ -65787,21 +66015,21 @@ rWS
sRA
sRA
sRA
+uiK
+uiK
sRA
sRA
sRA
-sRA
-sRA
-sRA
-sRA
+uiK
+qHg
rGg
sbG
dlC
-tbl
-sRA
-sRA
-sRA
-sRA
+sfZ
+uiK
+uiK
+uiK
+uiK
sRA
sRA
sRA
@@ -66012,21 +66240,21 @@ cpy
cpy
kBT
uiK
-mZM
sRA
sRA
-rWS
-qjs
-qFs
-qSP
sRA
sRA
-rBU
+sRA
+qFs
+qSP
+qSP
+wCr
+vky
sci
-sFS
+yiW
tcz
-rGg
-sbG
+tRu
+vjs
sFG
sfZ
vcu
@@ -66239,25 +66467,25 @@ cpy
cpy
vZY
pXH
-bQq
sRA
-rWS
+sRA
+sRA
pRK
qmM
qGQ
qTh
-rjP
+qTh
qzp
-nfq
+eSG
fDg
sGc
tdE
-rBU
-sci
+pBQ
+dae
sFS
tcz
vfl
-uiK
+sRA
rWS
rWS
sRA
@@ -66466,20 +66694,20 @@ cpy
cpy
kLQ
sRA
-jHa
sRA
-obe
+sRA
+sRA
pRM
qnk
qHA
qTO
-rhB
+vgM
qJl
rCp
scv
rCp
tdH
-nfq
+eSG
fDg
sGc
nfq
@@ -66698,10 +66926,10 @@ pxY
pIu
nbO
qnV
-rjP
-rjP
+wXe
+wyM
rig
-rjP
+wyM
rDb
rjP
sGT
@@ -66710,7 +66938,7 @@ tzA
tSJ
scw
uEr
-vgM
+uiK
uiK
uiK
sRA
@@ -66923,22 +67151,22 @@ cpy
ppF
pys
pIO
+vJo
pTH
-qpg
-qJl
-qUf
-riE
-ruj
-rDu
+xjK
+rhB
+rhB
+rhB
+rhB
xKc
sGY
-pBQ
-rjP
-rus
-rjP
+rhB
uEt
-kor
-sRA
+rus
+wzg
+uEz
+riE
+uiK
sRA
sRA
sRA
@@ -67149,23 +67377,23 @@ cpy
cpy
pqZ
pyO
-qst
+qqS
gTM
qqS
qJw
+nOm
+wyM
rjP
rjP
-rus
-rjP
-rig
+qze
sHg
teL
tzF
tSU
-rhB
+cet
uEz
vhd
-sRA
+uiK
sRA
sRA
rYp
@@ -67374,14 +67602,14 @@ vtc
vtc
vtc
cpy
-cpy
-rWS
-rWS
-pUc
-qrj
+qjs
+sRA
+sRA
+sRA
+qst
oyR
qUD
-rkR
+sIz
rkR
rDz
scy
@@ -67390,7 +67618,7 @@ tfV
rFp
sdE
sIx
-rFp
+dic
vhC
uiK
uiK
@@ -67601,21 +67829,21 @@ vtc
vtc
vtc
cpy
-cpy
-rWS
+qjs
+sRA
+sRA
sRA
-pUc
qst
qLz
qVl
-rjP
-qzp
+qVl
+bpZ
rFp
sdE
sIx
tgM
-rGg
-xic
+pRK
+qjy
qOi
tbl
vhJ
@@ -67828,21 +68056,21 @@ jXT
jXT
noL
cpy
-cpy
-cpy
+qjs
+qjs
+sRA
sRA
sRA
-qtc
qME
qWZ
-sRA
-sRA
-rGg
+qWZ
+jHa
+pUc
xic
guR
-tbl
-rBU
-pZb
+sfZ
+pBQ
+sec
sIK
uEX
vhO
@@ -68055,23 +68283,23 @@ vtc
vtc
lMH
vtc
-wms
-cpy
-sRA
-sRA
sRA
+qjs
sRA
sRA
sRA
sRA
+uiK
+uiK
+pBQ
rBU
sec
-sIK
+rDu
tcz
-cpy
-cpy
-cpy
-rWS
+uiK
+uiK
+sRA
+sRA
sRA
sRA
sRA
@@ -102353,7 +102581,7 @@ lAn
lAn
lAn
lAn
-vJo
+lAn
vuY
lAn
lAn
@@ -102580,21 +102808,21 @@ qUL
qUL
qUL
qUL
-nSF
qUL
+nSF
qUL
+rOO
eRI
-eRI
-sct
-fzC
-dIr
-wqt
-iRl
+ruj
+jgW
+aaF
qUL
qUL
qUL
-aDs
qUL
+qUL
+aDs
+xfu
krH
aSR
ltf
@@ -102803,24 +103031,24 @@ krH
xIv
qUL
qUL
-qUL
+nSF
qUL
qUL
qUL
the
uru
-wyM
-qUL
-qUL
+uru
+ulh
+nQY
swr
xsc
ibE
-kzk
-sct
-fzC
-dIr
-wqt
+eTw
nPN
+fzC
+aaF
+fLa
+qUL
qUL
lAn
krH
@@ -103029,25 +103257,25 @@ pFH
krH
xIv
qUL
-qUL
+xfu
nSF
qUL
-qUL
+rOO
sCp
toY
uwQ
-wzg
-lgw
+uwQ
+lMI
xRM
-bpZ
-wRL
+hvf
+dWv
pAd
-pkB
-swr
+wqt
+qtc
xsc
-ibE
-kzk
-qHg
+pZb
+xkk
+obe
qUL
lAn
krH
@@ -103257,24 +103485,24 @@ krH
xIv
qUL
qUL
-nSF
qUL
-sct
-sIA
+qUL
+wqt
+ejQ
tth
-uDM
+rAt
tth
-uXj
-uXj
tth
-xkk
tth
-fLa
-bpZ
-wRL
-pAd
-bpZ
-ulh
+rAt
+tth
+kzk
+xRM
+hvf
+dWv
+qrj
+xqQ
+qUL
qUL
pVb
krH
@@ -103483,7 +103711,7 @@ pFH
krH
xIv
qUL
-qUL
+kNR
rfi
rAc
shq
@@ -103492,17 +103720,17 @@ tBM
uKQ
uKQ
uKQ
-uKQ
-qjX
+fYN
uKQ
hFm
+cJc
dqn
-dic
-uDM
-tth
-eTw
-lVs
+xNu
+uXj
qBH
+qUL
+qUf
+qUL
lAn
krH
nTp
@@ -103710,26 +103938,26 @@ pFH
krH
xIv
qUL
-qUL
+xcR
rgA
rBZ
slK
sYh
tCR
+nSN
sjS
-wAf
-skE
-skE
-nQY
-kNR
+sjS
+sjS
+nSN
tCR
-fTm
+mZM
uKQ
+dIr
uKQ
-vuF
fbY
qUL
-tRu
+tzm
+qUL
lAn
krH
nTp
@@ -103937,7 +104165,7 @@ pFH
krH
xIv
qUL
-qUL
+lVs
rii
rCi
ssU
@@ -103947,16 +104175,16 @@ uKQ
uKQ
uKQ
uKQ
-uKQ
-uKQ
+sct
iSu
-vbk
-xNu
-vjs
-tIF
-rAt
+mCl
+fTm
+pkB
+uXj
+fbY
+qUL
gOZ
-cJc
+iRl
lAn
krH
nTp
@@ -104167,22 +104395,22 @@ qUL
qUL
qUL
pTW
-swr
-sIA
-tIF
-vjs
+eTw
+ejQ
wBr
-uXj
-uXj
tIF
-tzm
+wBr
+wBr
+wBr
tIF
+wBr
+vuF
twB
fXn
uSB
-ecP
-fXn
-rOO
+prD
+jcA
+qUL
qUL
lAn
krH
@@ -104394,22 +104622,22 @@ qUL
qUL
qUL
qUL
-qUL
+uDM
tcu
tSo
vjv
-wCr
+vjv
lgw
-qjy
+twB
fXn
uSB
ecP
-aaF
-sct
-dWY
-qzw
-wqt
-prD
+eTw
+afT
+wAf
+qpg
+skE
+qUL
qUL
lAn
krH
@@ -104620,23 +104848,23 @@ xIv
qUL
qUL
qUL
+sIA
qUL
-nSF
qUL
ucD
vpU
-wXe
-qUL
-qUL
-sct
+vpU
dWY
+vbk
+qjX
+wAf
qzw
wqt
-swr
+wRL
eUS
-nSN
+bQq
rCI
-dWv
+qUL
qUL
lAn
krH
@@ -104847,23 +105075,23 @@ iNs
qUL
qUL
qUL
-qUL
nSF
qUL
xfu
-qUL
dBd
-iRl
qUL
-swr
-eUS
-nSN
-kzk
-iRl
+qUL
+uDM
+nZN
+wRL
+xZf
+bQq
+qUL
pTW
qUL
qUL
qUL
+iRl
qUL
krH
aSR
@@ -105079,7 +105307,7 @@ lAn
lAn
nVX
nVX
-lAn
+pVb
lAn
lAn
lAn
diff --git a/maps/map_files/golden_arrow/golden_arrow.dmm b/maps/map_files/golden_arrow/golden_arrow.dmm
index 37c6f5290e..18f231aad2 100644
--- a/maps/map_files/golden_arrow/golden_arrow.dmm
+++ b/maps/map_files/golden_arrow/golden_arrow.dmm
@@ -1285,6 +1285,19 @@
},
/turf/open/floor/almayer,
/area/golden_arrow/hangar)
+"eM" = (
+/obj/structure/surface/table/almayer,
+/obj/item/tool/kitchen/rollingpin{
+ pixel_y = 4;
+ pixel_x = -6
+ },
+/obj/item/tool/kitchen/knife{
+ pixel_x = 9
+ },
+/turf/open/floor/almayer{
+ icon_state = "dark_sterile"
+ },
+/area/golden_arrow/cryo_cells)
"eN" = (
/obj/structure/machinery/gear{
id = "supply_elevator_gear"
@@ -3644,11 +3657,27 @@
},
/area/golden_arrow/hangar)
"nD" = (
+/obj/structure/surface/rack{
+ pixel_y = 14;
+ pixel_x = 4
+ },
/obj/structure/reagent_dispensers/water_cooler/stacks{
density = 0;
pixel_x = -10;
pixel_y = 6
},
+/obj/item/reagent_container/food/condiment/peppermill{
+ pixel_y = 26;
+ pixel_x = 1
+ },
+/obj/item/reagent_container/food/condiment/saltshaker{
+ pixel_y = 26;
+ pixel_x = -3
+ },
+/obj/item/storage/box/drinkingglasses{
+ pixel_x = 10;
+ pixel_y = 28
+ },
/turf/open/floor/almayer{
icon_state = "dark_sterile"
},
@@ -6992,23 +7021,22 @@
},
/area/golden_arrow/cryo_cells)
"AV" = (
-/obj/structure/surface/table/almayer,
-/obj/item/tool/kitchen/tray{
- pixel_x = -5;
- pixel_y = 6
- },
-/obj/item/trash/plate{
- pixel_x = -5;
- pixel_y = 5
- },
-/obj/item/trash/plate{
- pixel_x = -3;
- pixel_y = 7
- },
-/obj/item/trash/plate{
- pixel_x = -4;
- pixel_y = 9
- },
+/obj/item/reagent_container/food/condiment/sugar,
+/obj/item/reagent_container/food/condiment/enzyme,
+/obj/item/reagent_container/food/snacks/flour,
+/obj/item/reagent_container/food/snacks/flour,
+/obj/item/reagent_container/food/snacks/flour,
+/obj/item/reagent_container/food/snacks/flour,
+/obj/structure/closet{
+ desc = "It's a fancy storage unit for long-life foodstuffs.";
+ name = "long-life foodstuff storage"
+ },
+/obj/item/storage/box/powderedmilk,
+/obj/item/reagent_container/food/condiment/juice/egg,
+/obj/item/reagent_container/food/snacks/flour,
+/obj/item/reagent_container/food/snacks/flour,
+/obj/item/reagent_container/food/snacks/flour,
+/obj/item/reagent_container/food/snacks/flour,
/turf/open/floor/almayer{
icon_state = "dark_sterile"
},
@@ -7535,9 +7563,6 @@
/turf/open/floor/plating,
/area/golden_arrow/hangar)
"Dn" = (
-/obj/structure/surface/rack{
- pixel_y = 19
- },
/obj/effect/decal/cleanable/dirt,
/obj/item/stack/medical/ointment{
pixel_x = 2;
@@ -8018,17 +8043,29 @@
/area/golden_arrow/prep_hallway)
"Fl" = (
/obj/structure/surface/table/almayer,
+/obj/item/tool/kitchen/tray{
+ pixel_x = -3;
+ pixel_y = 3
+ },
/obj/item/reagent_container/food/condiment/hotsauce/tabasco{
- pixel_x = 7;
- pixel_y = 14
+ pixel_x = 12;
+ pixel_y = 18
},
-/obj/item/paper_bin{
- pixel_x = -7;
+/obj/item/trash/plate{
+ pixel_x = -5;
+ pixel_y = 3
+ },
+/obj/item/trash/plate{
+ pixel_x = -3;
pixel_y = 5
},
/obj/item/reagent_container/food/condiment/hotsauce/tabasco{
- pixel_x = 6;
- pixel_y = 6
+ pixel_y = 18;
+ pixel_x = 2
+ },
+/obj/item/trash/plate{
+ pixel_x = -4;
+ pixel_y = 7
},
/turf/open/floor/almayer{
icon_state = "dark_sterile"
@@ -21955,12 +21992,12 @@ EG
EG
EG
Wh
-Nz
+nD
HF
rQ
HF
Fl
-og
+AV
og
CM
Bf
@@ -22111,8 +22148,8 @@ fl
HF
rQ
HF
-AV
-og
+HF
+HF
og
Va
TB
@@ -22263,8 +22300,8 @@ zG
aA
vN
nW
-nD
-og
+Nz
+eM
og
Dq
Ms
@@ -22417,7 +22454,7 @@ Ir
Ir
Ir
Ir
-Vi
+og
og
Hv
Iz
diff --git a/maps/shuttles/dropship_cyclone.dmm b/maps/shuttles/dropship_cyclone.dmm
index 43fe5891c7..2a5ac47a67 100644
--- a/maps/shuttles/dropship_cyclone.dmm
+++ b/maps/shuttles/dropship_cyclone.dmm
@@ -1,30 +1,34 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"ag" = (
-/turf/closed/shuttle/cyclone{
- icon_state = "92";
- name = "\improper Cyclon"
+/turf/closed/shuttle/cyclone/transparent{
+ icon_state = "86b"
},
/area/shuttle/cyclone)
"aP" = (
-/obj/structure/shuttle/part/dropship2/left_outer_wing_connector{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "3"
},
/turf/template_noop,
/area/shuttle/cyclone)
"bw" = (
-/turf/closed/shuttle/cyclone/transparent{
- icon_state = "98"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "90"
},
+/obj/effect/attach_point/weapon/cyclone/right_fore,
+/turf/template_noop,
/area/shuttle/cyclone)
"cj" = (
-/obj/structure/shuttle/part/dropship2/nose_front_left{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "95a"
},
/turf/template_noop,
/area/shuttle/cyclone)
"cm" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
/turf/open/shuttle/dropship{
- icon_state = "rasputin14"
+ icon_state = "rasputin15"
},
/area/shuttle/cyclone)
"cy" = (
@@ -36,15 +40,6 @@
icon_state = "rasputin3"
},
/area/shuttle/cyclone)
-"cJ" = (
-/obj/structure/shuttle/part/dropship2/transparent/outer_left_weapons{
- name = "\improper Cyclone"
- },
-/obj/effect/attach_point/weapon/midway/left_fore{
- ship_tag = "dropship_cyclone"
- },
-/turf/template_noop,
-/area/shuttle/cyclone)
"cR" = (
/turf/closed/shuttle/cyclone/transparent{
icon_state = "39"
@@ -56,26 +51,23 @@
},
/area/shuttle/cyclone)
"eu" = (
-/obj/structure/machinery/light{
- dir = 8;
- pixel_x = -14
- },
/obj/structure/bed/chair/dropship/passenger{
dir = 4
},
+/obj/structure/machinery/light/double{
+ dir = 8
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/shuttle/cyclone)
"eT" = (
-/obj/structure/shuttle/part/dropship2/transparent/left_outer_bottom_wing{
- name = "\improper Cyclone"
- },
+/obj/structure/shuttle/part/cyclone/transparent,
/turf/template_noop,
/area/shuttle/cyclone)
"fo" = (
-/obj/structure/shuttle/part/dropship2/transparent/engine_left_cap{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "40"
},
/turf/template_noop,
/area/shuttle/cyclone)
@@ -85,90 +77,88 @@
},
/area/shuttle/cyclone)
"fy" = (
-/obj/docking_port/mobile/marine_dropship/cyclone,
-/obj/effect/attach_point/crew_weapon/midway{
- ship_tag = "dropship_cyclone";
- attach_id = 7
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "91"
+ },
+/obj/effect/attach_point/electronics/cyclone,
+/turf/template_noop,
+/area/shuttle/cyclone)
+"fV" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
},
/turf/open/shuttle/dropship{
icon_state = "rasputin14"
},
/area/shuttle/cyclone)
"gn" = (
-/obj/structure/machinery/camera/autoname/almayer/dropship_two{
- pixel_x = 8;
- pixel_y = -16;
- network = list("Golden Arrow","Cyclone")
- },
+/obj/docking_port/mobile/marine_dropship/cyclone,
/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+ icon_state = "floor8"
},
/area/shuttle/cyclone)
"ha" = (
-/obj/effect/attach_point/fuel/midway{
- attach_id = 11;
- ship_tag = "dropship_cyclone"
- },
+/obj/effect/attach_point/fuel/cyclone,
/turf/closed/shuttle/cyclone/transparent{
icon_state = "32"
},
/area/shuttle/cyclone)
"hd" = (
-/obj/effect/attach_point/fuel/dropship2{
- pixel_x = -32;
- ship_tag = "dropship_cyclone";
- attach_id = 11
- },
/turf/closed/shuttle/cyclone/transparent{
icon_state = "33"
},
/area/shuttle/cyclone)
"hu" = (
-/obj/structure/shuttle/part/dropship2/transparent/right_outer_bottom_wing{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "6"
},
/turf/template_noop,
/area/shuttle/cyclone)
"hS" = (
-/obj/structure/shuttle/part/dropship2/transparent/engine_right_cap{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "41"
},
/turf/template_noop,
/area/shuttle/cyclone)
"hV" = (
-/obj/structure/shuttle/part/dropship2/transparent/engine_right_exhaust{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "21"
},
/turf/template_noop,
/area/shuttle/cyclone)
"ia" = (
-/obj/structure/bed/chair/dropship/pilot{
- dir = 1
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full";
+ pixel_y = 22
+ },
+/obj/structure/machinery/computer/dropship_weapons/cyclone/small{
+ pixel_y = 8;
+ pixel_x = 8
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/copilot{
+ dir = 1;
+ pixel_x = 8;
+ layer = 5
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/shuttle/cyclone)
"iO" = (
-/obj/structure/shuttle/part/dropship2/right_inner_wing_connector{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "8"
},
/turf/template_noop,
/area/shuttle/cyclone)
-"jr" = (
-/obj/effect/attach_point/crew_weapon/midway{
- ship_tag = "dropship_cyclone";
- dir = 8;
- attach_id = 8
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
- },
-/area/shuttle/cyclone)
"lc" = (
-/obj/structure/machinery/light{
- dir = 4;
- pixel_x = 14
+/obj/structure/machinery/light/double{
+ dir = 4
},
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
@@ -183,6 +173,10 @@
/obj/structure/bed/chair/dropship/passenger{
dir = 8
},
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 26;
+ pixel_x = -10
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -193,8 +187,8 @@
},
/area/shuttle/cyclone)
"mO" = (
-/obj/structure/shuttle/part/dropship2/transparent/upper_left_wing{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "71"
},
/turf/template_noop,
/area/shuttle/cyclone)
@@ -215,14 +209,13 @@
},
/area/shuttle/cyclone)
"oX" = (
-/obj/structure/machinery/camera/autoname/golden_arrow/midway{
- dir = 8;
- pixel_x = 23;
- network = list("Golden Arrow","Cyclone")
- },
/obj/structure/bed/chair/dropship/passenger{
dir = 8
},
+/obj/structure/machinery/camera/autoname/golden_arrow/cyclone{
+ dir = 8;
+ pixel_x = 23
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -233,21 +226,23 @@
},
/area/shuttle/cyclone)
"pj" = (
-/turf/closed/shuttle/cyclone/transparent{
- icon_state = "96";
- name = "\improper Cyclon"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "9"
+ },
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "41"
},
+/turf/template_noop,
/area/shuttle/cyclone)
"pz" = (
-/obj/structure/shuttle/part/dropship2/transparent/middle_left_wing{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "66"
},
/turf/template_noop,
/area/shuttle/cyclone)
"qj" = (
-/obj/structure/machinery/light{
- dir = 8;
- pixel_x = -14
+/obj/structure/machinery/light/double{
+ dir = 8
},
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
@@ -268,19 +263,9 @@
icon_state = "48"
},
/area/shuttle/cyclone)
-"rk" = (
-/obj/effect/attach_point/crew_weapon/midway{
- ship_tag = "dropship_cyclone";
- dir = 4;
- attach_id = 9
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
- },
-/area/shuttle/cyclone)
"ro" = (
-/obj/structure/shuttle/part/dropship2/nose_front_right{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "99a"
},
/turf/template_noop,
/area/shuttle/cyclone)
@@ -319,7 +304,7 @@
/area/shuttle/cyclone)
"vt" = (
/turf/closed/shuttle/cyclone/transparent{
- icon_state = "86"
+ icon_state = "86a"
},
/area/shuttle/cyclone)
"vH" = (
@@ -328,28 +313,29 @@
},
/area/shuttle/cyclone)
"vT" = (
-/obj/structure/shuttle/part/dropship2/transparent/right_inner_bottom_wing{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "5"
},
/turf/template_noop,
/area/shuttle/cyclone)
"wk" = (
/turf/template_noop,
-/area/template_noop)
+/area/space)
"wA" = (
/turf/closed/shuttle/cyclone/transparent{
icon_state = "35"
},
/area/shuttle/cyclone)
"xY" = (
-/obj/structure/shuttle/part/dropship2/lower_left_wall{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "85"
},
+/obj/effect/attach_point/weapon/cyclone/left_fore,
/turf/template_noop,
/area/shuttle/cyclone)
"yA" = (
-/obj/structure/shuttle/part/dropship2/transparent/nose_center{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "101"
},
/turf/template_noop,
/area/shuttle/cyclone)
@@ -378,35 +364,36 @@
},
/area/shuttle/cyclone)
"zL" = (
-/obj/structure/shuttle/part/dropship2/transparent/nose_top_right{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "102"
},
/turf/template_noop,
/area/shuttle/cyclone)
"Ak" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds2{
id = "aft_door";
name = "\improper Cyclone cargo door"
},
/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+ icon_state = "rasputin14"
},
/area/shuttle/cyclone)
-"At" = (
+"Ax" = (
/obj/structure/shuttle/part/dropship2/lower_right_wall{
name = "\improper Cyclone"
},
-/turf/template_noop,
-/area/shuttle/cyclone)
-"Ax" = (
-/obj/structure/blocker/invisible_wall,
-/obj/structure/machinery/computer/cameras/dropship/midway{
- network = list("Cyclone","Laser Targets");
- name = "\improper 'Cyclone' camera controls"
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "40"
},
+/turf/template_noop,
/area/shuttle/cyclone)
"AP" = (
/turf/closed/shuttle/cyclone{
@@ -415,82 +402,76 @@
/area/shuttle/cyclone)
"Bt" = (
/turf/closed/shuttle/cyclone/transparent{
- icon_state = "89"
+ icon_state = "89a"
},
/area/shuttle/cyclone)
"BU" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
- pixel_x = 30
+ pixel_y = 26;
+ pixel_x = 10
+ },
+/obj/structure/extinguisher_cabinet/lifeboat{
+ pixel_y = 27;
+ pixel_x = -2
},
/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+ icon_state = "rasputin15"
},
/area/shuttle/cyclone)
"Cb" = (
-/obj/structure/shuttle/part/dropship2/transparent/upper_right_wing{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "74"
},
/turf/template_noop,
/area/shuttle/cyclone)
"Cf" = (
-/obj/structure/shuttle/part/dropship2/left_inner_wing_connector{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "7"
},
/turf/template_noop,
/area/shuttle/cyclone)
"Da" = (
-/obj/structure/shuttle/part/dropship2/transparent/engine_left_exhaust{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "20"
},
/turf/template_noop,
/area/shuttle/cyclone)
"Df" = (
-/obj/structure/shuttle/part/dropship2/right_outer_wing_connector{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "4"
},
/turf/template_noop,
/area/shuttle/cyclone)
"Dl" = (
-/obj/structure/machinery/camera/autoname/golden_arrow/midway{
+/obj/structure/machinery/camera/autoname/golden_arrow/cyclone{
dir = 4;
- pixel_x = -23;
- network = list("Golden Arrow","Cyclone")
+ pixel_x = -23
},
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
/area/shuttle/cyclone)
-"Ey" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2/cyclone{
- dir = 1;
- id = "starboard_door"
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
- },
-/area/shuttle/cyclone)
"EP" = (
/turf/closed/shuttle/cyclone{
icon_state = "75"
},
/area/shuttle/cyclone)
"Fz" = (
-/obj/effect/attach_point/fuel/midway{
- ship_tag = "dropship_cyclone";
- attach_id = 10
- },
+/obj/effect/attach_point/fuel/cyclone,
/turf/closed/shuttle/cyclone/transparent{
icon_state = "28"
},
/area/shuttle/cyclone)
"FD" = (
-/obj/structure/machinery/light{
- dir = 4;
- pixel_x = 14
- },
/obj/structure/bed/chair/dropship/passenger{
dir = 8
},
+/obj/structure/machinery/light/double{
+ dir = 4
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -523,39 +504,28 @@
},
/area/shuttle/cyclone)
"IP" = (
-/obj/structure/shuttle/part/dropship2/transparent/lower_left_wing{
- name = "\improper Cyclone"
- },
-/obj/effect/attach_point/weapon/midway/left_wing{
- ship_tag = "dropship_cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "61"
},
+/obj/effect/attach_point/weapon/cyclone/left_wing,
/turf/template_noop,
/area/shuttle/cyclone)
"IZ" = (
-/obj/structure/shuttle/part/dropship2/transparent/middle_right_wing{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "70"
},
/turf/template_noop,
/area/shuttle/cyclone)
-"JZ" = (
-/obj/structure/machinery/door_control{
- id = "dropship_midway";
- name = "Dropship Lockdown";
- normaldoorcontrol = 3;
- pixel_y = -19;
- req_one_access_txt = "3;22"
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin14"
- },
-/area/shuttle/cyclone)
"Kv" = (
/turf/closed/shuttle/cyclone{
icon_state = "81"
},
/area/shuttle/cyclone)
"KQ" = (
-/obj/structure/bed/chair/dropship/passenger,
+/obj/structure/bed/chair/dropship/passenger/folded{
+ pixel_y = 8;
+ buckling_y = 8
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
@@ -565,33 +535,12 @@
icon_state = "rasputin8"
},
/area/shuttle/cyclone)
-"MD" = (
-/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
- pixel_x = -30
- },
-/obj/structure/bed/chair/dropship/passenger{
- dir = 4
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
- },
-/area/shuttle/cyclone)
"MU" = (
-/obj/structure/phone_base/rotary{
- name = "Cyclone Telephone";
- phone_category = "Dropship";
- phone_id = "Cyclone";
- pixel_x = 11;
- pixel_y = 16
- },
-/obj/structure/blocker/invisible_wall,
-/obj/structure/machinery/computer/dropship_weapons/midway{
- name = "\improper 'Cyclone' weapons controls";
- shuttle_tag = "dropship_cyclone"
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "84"
},
+/obj/effect/attach_point/electronics/cyclone,
+/turf/template_noop,
/area/shuttle/cyclone)
"Ob" = (
/turf/open/shuttle/dropship{
@@ -599,34 +548,38 @@
},
/area/shuttle/cyclone)
"Pg" = (
-/obj/structure/blocker/invisible_wall,
-/obj/structure/machinery/computer/shuttle/dropship/flight,
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/machinery/computer/shuttle/dropship/flight/small{
+ pixel_y = 16;
+ pixel_x = 6
},
-/area/shuttle/cyclone)
-"QA" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2/cyclone{
- dir = 2;
- id = "port_door"
+/obj/structure/phone_base{
+ dir = 4;
+ pixel_x = -19;
+ pixel_y = 12;
+ layer = 3.1;
+ phone_category = "Dropship";
+ name = "Cyclone telephone receiver";
+ phone_id = "Cyclone"
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/pilot{
+ dir = 1;
+ pixel_x = 6;
+ pixel_y = 8
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/shuttle/cyclone)
"QN" = (
-/obj/effect/attach_point/weapon/dropship2/right_wing,
-/obj/structure/shuttle/part/dropship2/transparent/lower_right_wing{
- name = "\improper Cyclone"
- },
-/obj/effect/attach_point/weapon/midway/right_wing{
- ship_tag = "dropship_cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "65"
},
+/obj/effect/attach_point/weapon/cyclone/right_wing,
/turf/template_noop,
/area/shuttle/cyclone)
"RR" = (
-/obj/structure/shuttle/part/dropship2/transparent/nose_top_left{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "100"
},
/turf/template_noop,
/area/shuttle/cyclone)
@@ -672,12 +625,12 @@
/area/shuttle/cyclone)
"XU" = (
/turf/closed/shuttle/cyclone/transparent{
- icon_state = "97"
+ icon_state = "97a"
},
/area/shuttle/cyclone)
"XY" = (
-/turf/closed/shuttle/cyclone{
- icon_state = "94"
+/turf/closed/shuttle/cyclone/transparent{
+ icon_state = "89b"
},
/area/shuttle/cyclone)
"YL" = (
@@ -685,18 +638,9 @@
icon_state = "36"
},
/area/shuttle/cyclone)
-"Zd" = (
-/obj/structure/shuttle/part/dropship2/transparent/outer_right_weapons{
- name = "\improper Cyclone"
- },
-/obj/effect/attach_point/weapon/midway/right_fore{
- ship_tag = "dropship_cyclone"
- },
-/turf/template_noop,
-/area/shuttle/cyclone)
"ZG" = (
-/obj/structure/shuttle/part/dropship2/transparent/left_outer_inner_wing{
- name = "\improper Cyclone"
+/obj/structure/shuttle/part/cyclone/transparent{
+ icon_state = "2"
},
/turf/template_noop,
/area/shuttle/cyclone)
@@ -716,8 +660,6 @@ mO
pz
IP
wk
-wk
-wk
fo
vH
Fz
@@ -730,15 +672,13 @@ eT
wk
wk
wk
-cJ
+MU
EP
uH
mI
pb
-Ty
-QA
-xY
-hS
+dN
+pj
wA
rB
od
@@ -747,18 +687,16 @@ wk
ZG
"}
(3,1,1) = {"
-RR
-cj
-ag
-vt
+wk
+wk
+wk
+xY
Sl
+BU
sR
-MD
eu
-jr
-JZ
+sR
qs
-dN
YL
fr
tU
@@ -767,18 +705,16 @@ Cf
aP
"}
(4,1,1) = {"
-yA
-pj
-Ax
-gn
+RR
+cj
+ag
+vt
ZU
nj
Sk
Sk
Vu
-cm
cy
-nj
Sk
Dl
qj
@@ -795,50 +731,44 @@ Iz
FV
KQ
KQ
-FV
-fy
+gn
nH
-FV
-Ty
Ty
Ty
Ty
+fV
wk
wk
"}
(6,1,1) = {"
-yA
-bw
-MU
-Ty
+zL
+ro
+XY
+Bt
zz
Ob
Sk
Sk
KU
-cm
yP
-Ob
-BU
+Sk
Sk
lc
-Ty
+fV
wk
wk
"}
(7,1,1) = {"
-zL
-ro
-XY
-Bt
+wk
+wk
+wk
+bw
Kv
ml
oX
FD
-rk
-JZ
+cm
qX
-GE
sA
zG
qN
@@ -850,15 +780,13 @@ Df
wk
wk
wk
-Zd
+fy
AP
sa
Hg
Uo
-Ty
-Ey
-At
-fo
+GE
+Ax
zH
ha
Wr
@@ -876,8 +804,6 @@ Cb
IZ
QN
wk
-wk
-wk
hS
cR
hd
diff --git a/maps/shuttles/dropship_midway.dmm b/maps/shuttles/dropship_midway.dmm
index 86854e38e3..a1e0627e88 100644
--- a/maps/shuttles/dropship_midway.dmm
+++ b/maps/shuttles/dropship_midway.dmm
@@ -5,8 +5,8 @@
},
/area/shuttle/midway)
"bm" = (
-/obj/structure/shuttle/part/dropship1/transparent/engine_right_exhaust{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "21"
},
/turf/template_noop,
/area/shuttle/midway)
@@ -16,20 +16,19 @@
},
/area/shuttle/midway)
"dr" = (
-/obj/structure/machinery/door_control{
- id = "dropship_midway";
- name = "Dropship Lockdown";
- normaldoorcontrol = 3;
- pixel_y = -19;
- req_one_access_txt = "3;22"
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/obj/structure/machinery/light/double{
+ dir = 8
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/shuttle/midway)
"dB" = (
-/obj/structure/shuttle/part/dropship1/left_inner_wing_connector{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "7"
},
/turf/template_noop,
/area/shuttle/midway)
@@ -40,32 +39,27 @@
/area/shuttle/midway)
"dE" = (
/turf/closed/shuttle/midway{
- icon_state = "42"
+ icon_state = "36"
},
/area/shuttle/midway)
"eu" = (
-/obj/structure/shuttle/part/dropship1/transparent/left_outer_bottom_wing{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "2"
},
/turf/template_noop,
/area/shuttle/midway)
"go" = (
-/obj/structure/phone_base/rotary{
- name = "Midway Telephone";
- phone_category = "Dropship";
- phone_id = "Midway";
- pixel_x = 11;
- pixel_y = 16
- },
-/obj/structure/blocker/invisible_wall,
-/obj/structure/machinery/computer/dropship_weapons/midway,
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "102"
},
+/turf/template_noop,
/area/shuttle/midway)
"gw" = (
-/obj/structure/shuttle/part/dropship2/transparent/engine_right_cap{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "46"
+ },
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "41"
},
/turf/template_noop,
/area/shuttle/midway)
@@ -75,18 +69,17 @@
},
/area/shuttle/midway)
"hL" = (
-/obj/structure/machinery/light{
- dir = 8;
- pixel_x = -14
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin2"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "95a"
},
+/turf/template_noop,
/area/shuttle/midway)
"hO" = (
-/turf/closed/shuttle/midway/transparent{
- icon_state = "86"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "65"
},
+/obj/effect/attach_point/weapon/midway/right_wing,
+/turf/template_noop,
/area/shuttle/midway)
"if" = (
/turf/closed/shuttle/midway/transparent{
@@ -94,14 +87,13 @@
},
/area/shuttle/midway)
"im" = (
-/obj/structure/shuttle/part/dropship1/transparent/nose_top_left{
- name = "\improper Midway"
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin4"
},
-/turf/template_noop,
/area/shuttle/midway)
"iv" = (
-/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
- pixel_x = -30
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -117,12 +109,16 @@
},
/area/shuttle/midway)
"jy" = (
-/obj/effect/attach_point/crew_weapon/midway{
- attach_id = 8
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
},
-/obj/structure/machinery/light{
- dir = 8;
- pixel_x = -14
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 26;
+ pixel_x = 10
+ },
+/obj/structure/extinguisher_cabinet/lifeboat{
+ pixel_y = 27;
+ pixel_x = -2
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -137,12 +133,9 @@
/obj/structure/platform{
dir = 1
},
-/obj/effect/decal/warning_stripes{
- icon_state = "N";
- pixel_y = 1
- },
+/obj/structure/blocker/forcefield/multitile_vehicles,
/turf/open/shuttle/dropship{
- icon_state = "floor8"
+ icon_state = "rasputin15"
},
/area/shuttle/midway)
"ls" = (
@@ -156,20 +149,18 @@
},
/area/shuttle/midway)
"mh" = (
-/obj/structure/shuttle/part/dropship1/right_inner_wing_connector{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "8"
},
/turf/template_noop,
/area/shuttle/midway)
"mE" = (
-/obj/structure/shuttle/part/dropship1/transparent/left_inner_bottom_wing{
- name = "\improper Midway"
- },
+/obj/structure/shuttle/part/midway/transparent,
/turf/template_noop,
/area/shuttle/midway)
"mG" = (
-/obj/structure/shuttle/part/dropship1/transparent/upper_left_wing{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "41"
},
/turf/template_noop,
/area/shuttle/midway)
@@ -177,41 +168,26 @@
/obj/structure/platform_decoration{
dir = 4
},
-/obj/effect/decal/warning_stripes{
- icon_state = "N";
- pixel_y = 1
+/obj/structure/platform_decoration{
+ dir = 8
},
/turf/open/shuttle/dropship{
- icon_state = "rasputin7"
+ icon_state = "rasputin3"
},
/area/shuttle/midway)
"mR" = (
-/obj/structure/shuttle/part/dropship1/nose_front_left{
- name = "\improper Midway"
+/obj/structure/bed/chair/dropship/passenger/folded{
+ pixel_y = 8;
+ buckling_y = 8
},
-/turf/template_noop,
-/area/shuttle/midway)
-"nH" = (
-/obj/structure/shuttle/part/dropship1/transparent/nose_center{
- name = "\improper Midway"
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
},
-/turf/template_noop,
/area/shuttle/midway)
"od" = (
-/obj/structure/shuttle/part/dropship1/transparent/middle_left_wing{
- name = "\improper Midway"
- },
-/turf/template_noop,
-/area/shuttle/midway)
-"ok" = (
-/obj/structure/shuttle/part/dropship1/transparent/nose_center{
- name = "\improper Midway";
- icon_state = "105"
- },
-/obj/effect/attach_point/electronics/midway{
- attach_id = 5
+/turf/closed/shuttle/midway/transparent{
+ icon_state = "89b"
},
-/turf/template_noop,
/area/shuttle/midway)
"ro" = (
/turf/closed/shuttle/midway/transparent{
@@ -228,12 +204,6 @@
icon_state = "103"
},
/area/shuttle/midway)
-"rF" = (
-/obj/structure/shuttle/part/dropship1/lower_right_wall{
- name = "\improper Midway"
- },
-/turf/template_noop,
-/area/shuttle/midway)
"rR" = (
/turf/closed/shuttle/midway/transparent{
icon_state = "32"
@@ -245,62 +215,45 @@
},
/area/shuttle/midway)
"tf" = (
-/obj/structure/bed/chair/dropship/pilot{
- dir = 1
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 26;
+ pixel_x = -10
},
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/turf/closed/shuttle/midway/transparent{
+ icon_state = "97a"
},
/area/shuttle/midway)
"ti" = (
-/obj/structure/extinguisher_cabinet/lifeboat{
- pixel_x = 12
- },
/turf/closed/shuttle/midway/transparent{
- icon_state = "78"
- },
-/area/shuttle/midway)
-"tG" = (
-/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
- pixel_x = 30
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin3"
+ icon_state = "86b"
},
/area/shuttle/midway)
"tP" = (
-/obj/structure/shuttle/part/dropship1/transparent/right_outer_bottom_wing{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "6"
},
/turf/template_noop,
/area/shuttle/midway)
"ul" = (
-/obj/structure/shuttle/part/dropship2/transparent/engine_left_cap{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "40"
},
/turf/template_noop,
/area/shuttle/midway)
"ux" = (
-/obj/structure/bed/chair/vehicle{
- pixel_x = -8
- },
-/obj/structure/bed/chair/vehicle{
- pixel_x = 8
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin14"
+/turf/closed/shuttle/midway/transparent{
+ icon_state = "89a"
},
/area/shuttle/midway)
"vJ" = (
-/turf/closed/shuttle/midway{
- icon_state = "92"
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin8"
},
/area/shuttle/midway)
"vN" = (
-/obj/structure/shuttle/part/dropship1/transparent/middle_right_wing{
- name = "\improper Midway"
+/turf/closed/shuttle/midway/transparent{
+ icon_state = "86a"
},
-/turf/template_noop,
/area/shuttle/midway)
"wB" = (
/turf/closed/shuttle/midway{
@@ -313,12 +266,12 @@
},
/area/shuttle/midway)
"xy" = (
-/obj/effect/attach_point/crew_weapon/midway{
- attach_id = 9
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
},
-/obj/structure/machinery/light{
- dir = 4;
- pixel_x = 14
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 26;
+ pixel_x = -10
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -335,15 +288,17 @@
},
/area/shuttle/midway)
"yN" = (
-/obj/structure/shuttle/part/dropship1/right_outer_wing_connector{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "4"
},
/turf/template_noop,
/area/shuttle/midway)
"yO" = (
-/turf/closed/shuttle/midway{
- icon_state = "94"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "61"
},
+/obj/effect/attach_point/weapon/midway/left_wing,
+/turf/template_noop,
/area/shuttle/midway)
"zm" = (
/turf/closed/shuttle/midway/transparent{
@@ -351,9 +306,11 @@
},
/area/shuttle/midway)
"Aw" = (
-/turf/closed/shuttle/midway/transparent{
- icon_state = "97"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "91"
},
+/obj/effect/attach_point/electronics/midway,
+/turf/template_noop,
/area/shuttle/midway)
"Bn" = (
/turf/closed/shuttle/midway{
@@ -371,15 +328,14 @@
},
/area/shuttle/midway)
"BU" = (
-/obj/structure/shuttle/part/dropship1/transparent/engine_left_exhaust{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "20"
},
/turf/template_noop,
/area/shuttle/midway)
"Cc" = (
-/obj/structure/machinery/camera/autoname/golden_arrow/midway{
- dir = 8;
- pixel_x = 23
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
@@ -394,15 +350,10 @@
},
/area/shuttle/midway)
"Cr" = (
-/obj/structure/prop/ice_colony/hula_girl{
- pixel_x = -10;
- pixel_y = 16
- },
-/obj/structure/blocker/invisible_wall,
-/obj/structure/machinery/computer/cameras/dropship/midway,
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "100"
},
+/turf/template_noop,
/area/shuttle/midway)
"Db" = (
/turf/closed/shuttle/midway/transparent{
@@ -410,7 +361,10 @@
},
/area/shuttle/midway)
"Dg" = (
-/turf/open/shuttle/dropship,
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "70"
+ },
+/turf/template_noop,
/area/shuttle/midway)
"Ds" = (
/obj/structure/stairs/perspective,
@@ -418,13 +372,24 @@
dir = 4;
layer = 2.7
},
+/obj/structure/platform{
+ dir = 8
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
/area/shuttle/midway)
"DH" = (
-/turf/closed/shuttle/midway/transparent{
- icon_state = "89"
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
},
/area/shuttle/midway)
"Ed" = (
@@ -433,30 +398,39 @@
},
/area/shuttle/midway)
"EN" = (
-/obj/structure/shuttle/part/dropship1/nose_front_right{
- name = "\improper Midway"
+/obj/structure/bed/chair/vehicle/dropship_cockpit/pilot{
+ dir = 1;
+ pixel_x = 6;
+ pixel_y = 8
+ },
+/obj/structure/machinery/computer/shuttle/dropship/flight/small{
+ pixel_y = 16;
+ pixel_x = 6
+ },
+/obj/structure/phone_base{
+ dir = 4;
+ pixel_x = -19;
+ pixel_y = 12;
+ layer = 3.1;
+ phone_category = "Dropship";
+ name = "Midway telephone receiver";
+ phone_id = "Midway"
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
},
-/turf/template_noop,
/area/shuttle/midway)
"Fu" = (
-/obj/structure/shuttle/part/dropship1/transparent/lower_right_wing{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "74"
},
-/obj/effect/attach_point/weapon/midway/right_wing,
/turf/template_noop,
/area/shuttle/midway)
"Gf" = (
-/obj/structure/machinery/camera/autoname/golden_arrow/midway{
- pixel_x = -6;
- pixel_y = -16
- },
-/obj/structure/machinery/light{
- dir = 4;
- pixel_x = 14
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin2"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "99a"
},
+/turf/template_noop,
/area/shuttle/midway)
"Gh" = (
/turf/open/shuttle/dropship{
@@ -464,11 +438,23 @@
},
/area/shuttle/midway)
"Go" = (
-/obj/structure/shuttle/part/dropship1/transparent/outer_left_weapons{
- name = "\improper Midway"
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full";
+ pixel_y = 22
+ },
+/obj/structure/machinery/computer/dropship_weapons/midway/small{
+ pixel_y = 8;
+ pixel_x = 8
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/copilot{
+ dir = 1;
+ pixel_x = 8;
+ layer = 5
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
},
-/obj/effect/attach_point/weapon/midway/left_fore,
-/turf/template_noop,
/area/shuttle/midway)
"Hj" = (
/turf/closed/shuttle/midway{
@@ -476,18 +462,25 @@
},
/area/shuttle/midway)
"Hz" = (
-/obj/structure/shuttle/part/dropship1/left_outer_wing_connector{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "3"
},
/turf/template_noop,
/area/shuttle/midway)
"HY" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds1{
- id = "aft_door";
- name = "\improper Midway cargo door"
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds4{
+ id = "aft_door"
},
/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+ icon_state = "rasputin14"
},
/area/shuttle/midway)
"Id" = (
@@ -508,20 +501,10 @@
icon_state = "72"
},
/area/shuttle/midway)
-"Kp" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1/midway{
- dir = 1;
- id = "starboard_door"
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
- },
-/area/shuttle/midway)
"Ks" = (
-/obj/structure/shuttle/part/dropship1/transparent/lower_left_wing{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "71"
},
-/obj/effect/attach_point/weapon/midway/left_wing,
/turf/template_noop,
/area/shuttle/midway)
"Kv" = (
@@ -529,6 +512,9 @@
dir = 4;
pixel_x = 14
},
+/obj/structure/machinery/light/double{
+ dir = 4
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
@@ -542,26 +528,23 @@
},
/area/shuttle/midway)
"LY" = (
-/obj/structure/blocker/invisible_wall,
-/obj/structure/machinery/computer/shuttle/dropship/flight,
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "101"
},
+/turf/template_noop,
/area/shuttle/midway)
"LZ" = (
-/obj/structure/shuttle/part/dropship1/transparent/upper_right_wing{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "84"
},
+/obj/effect/attach_point/electronics/midway,
/turf/template_noop,
/area/shuttle/midway)
"Mw" = (
-/obj/structure/shuttle/part/dropship1/transparent/nose_center{
- name = "\improper Midway";
- icon_state = "105"
- },
-/obj/effect/attach_point/electronics/midway{
- attach_id = 6
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "85"
},
+/obj/effect/attach_point/weapon/midway/left_fore,
/turf/template_noop,
/area/shuttle/midway)
"Mz" = (
@@ -570,6 +553,9 @@
dir = 8;
layer = 2.7
},
+/obj/structure/platform{
+ dir = 4
+ },
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
@@ -579,88 +565,69 @@
icon_state = "rasputin15"
},
/area/shuttle/midway)
-"OB" = (
-/turf/closed/shuttle/midway/transparent{
- icon_state = "96"
- },
-/area/shuttle/midway)
"Pc" = (
/turf/closed/shuttle/midway/transparent{
- icon_state = "98"
+ icon_state = "78"
},
/area/shuttle/midway)
"PP" = (
-/obj/structure/machinery/door/airlock/hatch/cockpit,
/obj/structure/blocker/forcefield/multitile_vehicles,
+/obj/structure/machinery/door/airlock/hatch/cockpit/four,
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/shuttle/midway)
"Qk" = (
-/obj/docking_port/mobile/marine_dropship/midway,
-/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "15"
},
-/area/shuttle/midway)
-"QI" = (
-/obj/structure/shuttle/part/dropship1/lower_left_wall{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "40"
},
/turf/template_noop,
/area/shuttle/midway)
"QK" = (
-/obj/structure/machinery/light{
- dir = 8;
- pixel_x = -14
+/obj/structure/machinery/light/double{
+ dir = 8
},
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
/area/shuttle/midway)
"Rm" = (
-/obj/structure/platform_decoration{
- dir = 8
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "N";
- pixel_y = 1
- },
-/turf/open/shuttle/dropship{
- icon_state = "rasputin6"
- },
-/area/shuttle/midway)
-"SS" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1/midway{
- dir = 2;
- id = "port_door"
+/obj/effect/attach_point/crew_weapon/midway{
+ attach_id = 7
},
+/obj/docking_port/mobile/marine_dropship/midway,
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/shuttle/midway)
"SZ" = (
-/obj/structure/shuttle/part/dropship1/transparent/right_inner_bottom_wing{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "5"
},
/turf/template_noop,
/area/shuttle/midway)
"Tl" = (
-/obj/structure/shuttle/part/dropship1/transparent/nose_top_right{
- name = "\improper Midway"
- },
-/turf/template_noop,
-/area/shuttle/midway)
-"UI" = (
-/obj/structure/bed/chair/vehicle{
- pixel_x = -8
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
},
-/obj/structure/bed/chair/vehicle{
- pixel_x = 8
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
},
/turf/open/shuttle/dropship{
icon_state = "rasputin15"
},
/area/shuttle/midway)
+"UI" = (
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "90"
+ },
+/obj/effect/attach_point/weapon/midway/right_fore,
+/turf/template_noop,
+/area/shuttle/midway)
"Vu" = (
/turf/closed/shuttle/midway{
icon_state = "67"
@@ -672,16 +639,8 @@
},
/area/shuttle/midway)
"WN" = (
-/obj/structure/bed/chair/vehicle{
- dir = 1;
- pixel_x = -8
- },
-/obj/structure/bed/chair/vehicle{
- dir = 1;
- pixel_x = 8
- },
/turf/open/shuttle/dropship{
- icon_state = "rasputin15"
+ icon_state = "floor8"
},
/area/shuttle/midway)
"XH" = (
@@ -699,10 +658,9 @@
},
/area/shuttle/midway)
"Zr" = (
-/obj/structure/shuttle/part/dropship1/transparent/outer_right_weapons{
- name = "\improper Midway"
+/obj/structure/shuttle/part/midway/transparent{
+ icon_state = "66"
},
-/obj/effect/attach_point/weapon/midway/right_fore,
/turf/template_noop,
/area/shuttle/midway)
"Zu" = (
@@ -722,11 +680,9 @@ Kw
Kw
Kw
Kw
-mG
-od
Ks
-Kw
-Kw
+Zr
+yO
Kw
ul
af
@@ -740,14 +696,12 @@ mE
Kw
Kw
Kw
-Go
+LZ
Hj
Jq
Vu
xp
-ME
-SS
-QI
+dE
gw
ls
Zu
@@ -757,19 +711,17 @@ Kw
eu
"}
(3,1,1) = {"
-im
-mR
-vJ
-hO
+Kw
+Kw
+Kw
+Mw
Yr
-UI
-iv
jy
-ME
+Cc
dr
+Cc
BI
dE
-dE
Bn
hl
rr
@@ -777,18 +729,16 @@ dB
Hz
"}
(4,1,1) = {"
-ok
-OB
Cr
hL
ti
-ux
+vN
+Pc
bs
jW
-jW
-jW
+im
Ds
-Rm
+mL
jW
je
QK
@@ -797,59 +747,53 @@ Kw
Kw
"}
(5,1,1) = {"
-nH
-Aw
LY
tf
+EN
+Go
PP
-jW
-Dg
WN
-ME
-Qk
-Id
+mR
+WN
+Rm
kC
ME
+Id
ME
-ME
-ME
+DH
Kw
Kw
"}
(6,1,1) = {"
-Mw
-Pc
go
Gf
-ro
+od
ux
+ro
Gh
jW
-jW
-jW
+vJ
Mz
mL
-tG
+jW
jW
Kv
-ME
+DH
Kw
Kw
"}
(7,1,1) = {"
-Tl
-EN
-yO
-DH
-rq
+Kw
+Kw
+Kw
UI
-Cc
+rq
xy
-ME
-dr
+iv
+Tl
+iv
Lr
yB
-yB
sl
Ed
lC
@@ -860,15 +804,13 @@ yN
Kw
Kw
Kw
-Zr
+Aw
wB
VU
ym
Ji
-ME
-Kp
-rF
-ul
+yB
+Qk
BS
rR
Db
@@ -882,13 +824,11 @@ Kw
Kw
Kw
Kw
-LZ
-vN
Fu
+Dg
+hO
Kw
-Kw
-Kw
-gw
+mG
ZZ
XH
if
diff --git a/maps/shuttles/dropship_tornado.dmm b/maps/shuttles/dropship_tornado.dmm
new file mode 100644
index 0000000000..240420ff0d
--- /dev/null
+++ b/maps/shuttles/dropship_tornado.dmm
@@ -0,0 +1,906 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"ag" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "17"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"av" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "75"
+ },
+/area/shuttle/tornado)
+"aw" = (
+/obj/structure/shuttle/part/tornado{
+ icon_state = "5"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"aG" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "71"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"bf" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "3"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"bm" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "64"
+ },
+/area/shuttle/tornado)
+"bp" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 26;
+ pixel_x = -10
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"bL" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "66"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"ck" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "35"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"cX" = (
+/obj/structure/stairs/perspective{
+ icon_state = "p_stair_full";
+ can_block_movement = 0
+ },
+/obj/structure/platform{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"db" = (
+/obj/structure/bed/chair/dropship/passenger/folded{
+ pixel_y = 8;
+ buckling_y = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"dm" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "38"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"dW" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "25"
+ },
+/area/shuttle/tornado)
+"eg" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "27"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"eq" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "4"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"et" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "20"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"eU" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "23"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"fj" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds2{
+ id = "aft_door";
+ name = "\improper Tornado cargo door"
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
+ },
+/area/shuttle/tornado)
+"fr" = (
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full";
+ pixel_y = 22
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/copilot{
+ dir = 1;
+ layer = 5;
+ pixel_x = 8
+ },
+/obj/structure/machinery/computer/dropship_weapons/tornado/small{
+ pixel_y = 8;
+ pixel_x = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"gJ" = (
+/obj/structure/shuttle/part/tornado{
+ icon_state = "2"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"hd" = (
+/obj/structure/shuttle/part/tornado/transparent,
+/turf/template_noop,
+/area/shuttle/tornado)
+"hn" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "33"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"hB" = (
+/obj/structure/platform_decoration{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"hE" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "101"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"jP" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin7"
+ },
+/area/shuttle/tornado)
+"kI" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"lb" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "77"
+ },
+/area/shuttle/tornado)
+"lM" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "15"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"mb" = (
+/obj/effect/attach_point/crew_weapon/tornado,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"mt" = (
+/obj/docking_port/mobile/marine_dropship/tornado,
+/obj/structure/bed/chair/dropship/passenger/folded{
+ pixel_y = 8;
+ buckling_y = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"ni" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "89a";
+ opacity = 0
+ },
+/area/shuttle/tornado)
+"oB" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 26;
+ pixel_x = 10
+ },
+/obj/structure/extinguisher_cabinet/lifeboat{
+ pixel_y = 27;
+ pixel_x = -2
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"pv" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin4"
+ },
+/area/shuttle/tornado)
+"qF" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "34"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"rp" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "89b";
+ opacity = 0
+ },
+/area/shuttle/tornado)
+"sx" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "100"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"sM" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "62"
+ },
+/area/shuttle/tornado)
+"uk" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "47"
+ },
+/area/shuttle/tornado)
+"uG" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"uL" = (
+/obj/structure/phone_base{
+ dir = 4;
+ pixel_x = -19;
+ pixel_y = 12;
+ layer = 3.1;
+ phone_category = "Dropship";
+ name = "Tornado telephone receiver";
+ phone_id = "Tornado"
+ },
+/obj/structure/machinery/computer/shuttle/dropship/flight/small{
+ pixel_y = 16;
+ pixel_x = 6
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/pilot{
+ dir = 1;
+ pixel_x = 6;
+ pixel_y = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"vk" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "74"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"vz" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "95a"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"vU" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "16"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"vZ" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "21"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"xj" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
+ },
+/area/shuttle/tornado)
+"xr" = (
+/obj/structure/machinery/light/double{
+ dir = 8;
+ pixel_y = -5
+ },
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"xW" = (
+/obj/structure/stairs/perspective{
+ icon_state = "p_stair_full";
+ can_block_movement = 0
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tornado)
+"yQ" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "76"
+ },
+/area/shuttle/tornado)
+"yZ" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "72"
+ },
+/area/shuttle/tornado)
+"zp" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "26"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"zQ" = (
+/obj/effect/attach_point/crew_weapon/tornado,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tornado)
+"Bf" = (
+/obj/structure/shuttle/part/tornado{
+ icon_state = "6"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Bx" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin8"
+ },
+/area/shuttle/tornado)
+"BK" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "41";
+ layer = 4.2;
+ density = 0
+ },
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "61"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"DX" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "28"
+ },
+/obj/effect/attach_point/fuel/tornado{
+ layer = 3.1
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"EQ" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "103"
+ },
+/area/shuttle/tornado)
+"Fv" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "48"
+ },
+/area/shuttle/tornado)
+"FD" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "24"
+ },
+/area/shuttle/tornado)
+"FW" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/obj/structure/machinery/camera/autoname/golden_arrow/tornado{
+ dir = 4;
+ pixel_x = -24
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Gl" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "31"
+ },
+/area/shuttle/tornado)
+"HH" = (
+/obj/structure/stairs/perspective{
+ icon_state = "p_stair_full";
+ can_block_movement = 0
+ },
+/obj/structure/platform{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"HN" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"IN" = (
+/obj/structure/machinery/light/double{
+ dir = 8;
+ pixel_y = -5
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"IZ" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "32"
+ },
+/obj/effect/attach_point/fuel/tornado{
+ layer = 3.1
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Jt" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "9"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"KB" = (
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Mq" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "86b";
+ opacity = 0
+ },
+/area/shuttle/tornado)
+"Nd" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "41";
+ layer = 4.2;
+ density = 0
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"NY" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "69"
+ },
+/area/shuttle/tornado)
+"Om" = (
+/turf/template_noop,
+/area/space)
+"Pb" = (
+/obj/structure/platform_decoration{
+ dir = 8
+ },
+/obj/structure/machinery/camera/autoname/golden_arrow/tornado{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Pi" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "102"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Py" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "28"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Qe" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "32"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Qf" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "70"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Qv" = (
+/obj/structure/machinery/camera/autoname/golden_arrow/tornado{
+ pixel_y = 32
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin6"
+ },
+/area/shuttle/tornado)
+"QR" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
+ },
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "65"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Rk" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "99a"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Sa" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "86a";
+ opacity = 0
+ },
+/area/shuttle/tornado)
+"SX" = (
+/obj/structure/machinery/door/airlock/hatch/cockpit/two,
+/obj/structure/blocker/forcefield/multitile_vehicles,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Tz" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "73"
+ },
+/area/shuttle/tornado)
+"TF" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"TM" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tornado)
+"TN" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "22"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"UF" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "104"
+ },
+/area/shuttle/tornado)
+"Vb" = (
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
+ },
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Vj" = (
+/turf/open/shuttle/dropship{
+ icon_state = "floor8"
+ },
+/area/shuttle/tornado)
+"Ws" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "97a";
+ opacity = 0
+ },
+/area/shuttle/tornado)
+"Wt" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "18"
+ },
+/area/shuttle/tornado)
+"Wv" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "29"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Xc" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "39"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"XL" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "83"
+ },
+/area/shuttle/tornado)
+"Yg" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "30"
+ },
+/area/shuttle/tornado)
+"Ym" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "19"
+ },
+/area/shuttle/tornado)
+"Zi" = (
+/turf/closed/shuttle/dropship2/tornado{
+ icon_state = "67"
+ },
+/area/shuttle/tornado)
+
+(1,1,1) = {"
+Om
+Om
+Om
+Om
+Om
+Om
+Om
+Om
+kI
+qF
+DX
+TN
+et
+Om
+Om
+Om
+Om
+Om
+"}
+(2,1,1) = {"
+Om
+Om
+Om
+Om
+Om
+aG
+bL
+bL
+BK
+ck
+Wv
+eU
+vZ
+kI
+Py
+TN
+et
+hd
+"}
+(3,1,1) = {"
+Om
+Om
+Om
+kI
+av
+yZ
+Zi
+Zi
+sM
+Wt
+Yg
+FD
+Jt
+Nd
+Wv
+eU
+vZ
+gJ
+"}
+(4,1,1) = {"
+Om
+Om
+Om
+Nd
+yQ
+oB
+xr
+HN
+FW
+HN
+xr
+HN
+uk
+Wt
+Yg
+FD
+EQ
+bf
+"}
+(5,1,1) = {"
+sx
+vz
+Mq
+Sa
+lb
+Qv
+TM
+TM
+TM
+TM
+TM
+pv
+cX
+hB
+IN
+TF
+fj
+Om
+"}
+(6,1,1) = {"
+hE
+Ws
+uL
+fr
+SX
+Vj
+mb
+db
+mt
+db
+mb
+Vj
+xW
+TM
+zQ
+TM
+xj
+Om
+"}
+(7,1,1) = {"
+Pi
+Rk
+rp
+ni
+lb
+jP
+TM
+TM
+TM
+TM
+TM
+Bx
+HH
+Pb
+KB
+TF
+xj
+Om
+"}
+(8,1,1) = {"
+Om
+Om
+Om
+kI
+yQ
+bp
+Vb
+uG
+uG
+uG
+Vb
+uG
+Fv
+Ym
+Gl
+dW
+UF
+eq
+"}
+(9,1,1) = {"
+Om
+Om
+Om
+Nd
+XL
+Tz
+NY
+NY
+bm
+Ym
+Gl
+dW
+lM
+kI
+Qe
+zp
+vU
+aw
+"}
+(10,1,1) = {"
+Om
+Om
+Om
+Om
+Om
+vk
+Qf
+Qf
+QR
+dm
+IZ
+zp
+vU
+Nd
+hn
+eg
+ag
+Bf
+"}
+(11,1,1) = {"
+Om
+Om
+Om
+Om
+Om
+Om
+Om
+Om
+Nd
+Xc
+hn
+eg
+ag
+Om
+Om
+Om
+Om
+Om
+"}
diff --git a/maps/shuttles/dropship_tripoli.dmm b/maps/shuttles/dropship_tripoli.dmm
new file mode 100644
index 0000000000..9caea2f03a
--- /dev/null
+++ b/maps/shuttles/dropship_tripoli.dmm
@@ -0,0 +1,850 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aP" = (
+/obj/structure/phone_base{
+ dir = 4;
+ pixel_x = -19;
+ pixel_y = 12;
+ layer = 3.1;
+ phone_category = "Dropship";
+ name = "Tripoli telephone receiver";
+ phone_id = "Tripoli"
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/pilot{
+ dir = 1;
+ pixel_x = 6;
+ pixel_y = 8
+ },
+/obj/structure/machinery/computer/shuttle/dropship/flight/small{
+ pixel_y = 16;
+ pixel_x = 6
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"bN" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "22"
+ },
+/area/shuttle/tripoli)
+"ca" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin7"
+ },
+/area/shuttle/tripoli)
+"cD" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "69"
+ },
+/area/shuttle/tripoli)
+"cE" = (
+/obj/structure/stairs/perspective,
+/obj/structure/platform{
+ dir = 4;
+ layer = 2.7
+ },
+/obj/structure/platform{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tripoli)
+"dN" = (
+/turf/closed/shuttle/tripoli/transparent{
+ icon_state = "97a"
+ },
+/area/shuttle/tripoli)
+"ed" = (
+/turf/template_noop,
+/area/space)
+"eD" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "30"
+ },
+/area/shuttle/tripoli)
+"eN" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "73"
+ },
+/area/shuttle/tripoli)
+"fk" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "61"
+ },
+/obj/effect/attach_point/weapon/tripoli/left_wing,
+/turf/template_noop,
+/area/shuttle/tripoli)
+"fq" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "5"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"fZ" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "71"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"hx" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "29"
+ },
+/area/shuttle/tripoli)
+"hS" = (
+/turf/closed/shuttle/tripoli/transparent{
+ icon_state = "89b"
+ },
+/area/shuttle/tripoli)
+"ih" = (
+/obj/structure/shuttle/part/tripoli/transparent{
+ icon_state = "95a"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"iU" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin8"
+ },
+/area/shuttle/tripoli)
+"jC" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
+ },
+/area/shuttle/tripoli)
+"jR" = (
+/obj/structure/machinery/light/double{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tripoli)
+"kS" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tripoli)
+"lj" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "85"
+ },
+/obj/effect/attach_point/weapon/tripoli/left_fore,
+/turf/template_noop,
+/area/shuttle/tripoli)
+"lv" = (
+/turf/closed/shuttle/tripoli/transparent{
+ icon_state = "86a"
+ },
+/area/shuttle/tripoli)
+"ma" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "83"
+ },
+/area/shuttle/tripoli)
+"mm" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "17"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"mr" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "26"
+ },
+/area/shuttle/tripoli)
+"nD" = (
+/obj/structure/shuttle/part/tripoli,
+/turf/template_noop,
+/area/shuttle/tripoli)
+"oF" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "7"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"oU" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "75"
+ },
+/area/shuttle/tripoli)
+"pj" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"pm" = (
+/obj/structure/platform_decoration{
+ dir = 4
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 1
+ },
+/obj/structure/platform_decoration{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tripoli)
+"pw" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "34"
+ },
+/area/shuttle/tripoli)
+"qf" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "21"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"qo" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "74"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"qH" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "104"
+ },
+/area/shuttle/tripoli)
+"qW" = (
+/obj/effect/attach_point/fuel/tripoli,
+/turf/closed/shuttle/tripoli{
+ icon_state = "28"
+ },
+/area/shuttle/tripoli)
+"ri" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin4"
+ },
+/area/shuttle/tripoli)
+"sb" = (
+/obj/structure/shuttle/part/dropship2/transparent/engine_left_cap{
+ name = "\improper Tripoli"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"sc" = (
+/obj/structure/machinery/light/double{
+ dir = 8
+ },
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"sD" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "42"
+ },
+/area/shuttle/tripoli)
+"tD" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "24"
+ },
+/area/shuttle/tripoli)
+"vi" = (
+/obj/structure/blocker/forcefield/multitile_vehicles,
+/obj/structure/machinery/door/airlock/hatch/cockpit,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"vl" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds1{
+ name = "\improper Tripoli cargo door"
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
+ },
+/area/shuttle/tripoli)
+"vC" = (
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 26;
+ pixel_x = 10
+ },
+/obj/structure/extinguisher_cabinet/lifeboat{
+ pixel_y = 27;
+ pixel_x = -2
+ },
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"vJ" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "84"
+ },
+/obj/effect/attach_point/electronics/tripoli,
+/turf/template_noop,
+/area/shuttle/tripoli)
+"wi" = (
+/obj/effect/attach_point/crew_weapon/midway,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"wy" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "65"
+ },
+/obj/effect/attach_point/weapon/tripoli/right_wing,
+/turf/template_noop,
+/area/shuttle/tripoli)
+"wL" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "100"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"wN" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "46"
+ },
+/obj/structure/shuttle/part/dropship2/transparent/engine_right_cap{
+ name = "\improper Tripoli"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"xx" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "6"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"yB" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "4"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"yF" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "101"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"zt" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin6"
+ },
+/area/shuttle/tripoli)
+"zC" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "72"
+ },
+/area/shuttle/tripoli)
+"zS" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "16"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"zX" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "91"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"zZ" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"Ac" = (
+/turf/closed/shuttle/tripoli/transparent{
+ icon_state = "86b"
+ },
+/area/shuttle/tripoli)
+"AC" = (
+/obj/structure/stairs/perspective,
+/obj/structure/platform{
+ dir = 8;
+ layer = 2.7
+ },
+/obj/structure/platform{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tripoli)
+"Cb" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "8"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"Cf" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "3"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"CR" = (
+/obj/effect/attach_point/fuel/tripoli,
+/turf/closed/shuttle/tripoli{
+ icon_state = "32"
+ },
+/area/shuttle/tripoli)
+"DG" = (
+/turf/closed/shuttle/tripoli/transparent{
+ icon_state = "78"
+ },
+/area/shuttle/tripoli)
+"DW" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "35"
+ },
+/area/shuttle/tripoli)
+"Ev" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "23"
+ },
+/area/shuttle/tripoli)
+"Ew" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "67"
+ },
+/area/shuttle/tripoli)
+"EG" = (
+/obj/structure/machinery/camera/autoname/golden_arrow/tripoli,
+/obj/structure/extinguisher_cabinet/lifeboat,
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 26;
+ pixel_x = -10
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"EM" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "103"
+ },
+/area/shuttle/tripoli)
+"Fm" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "70"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"Fq" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "102"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"Go" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "2"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"Gt" = (
+/turf/closed/shuttle/tripoli/transparent{
+ icon_state = "80"
+ },
+/area/shuttle/tripoli)
+"JC" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "31"
+ },
+/area/shuttle/tripoli)
+"JO" = (
+/obj/structure/machinery/light/double{
+ dir = 4
+ },
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"Kg" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"Kk" = (
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full";
+ pixel_y = 22
+ },
+/obj/structure/machinery/computer/dropship_weapons/tripoli/small{
+ pixel_y = 8;
+ pixel_x = 8
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/copilot{
+ dir = 1;
+ pixel_x = 8;
+ layer = 5
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"KU" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "20"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"KZ" = (
+/obj/structure/bed/chair/dropship/passenger/folded{
+ pixel_y = 8;
+ buckling_y = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"Ly" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "25"
+ },
+/area/shuttle/tripoli)
+"MS" = (
+/obj/structure/machinery/camera/autoname/golden_arrow/tripoli{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tripoli)
+"NV" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "38"
+ },
+/area/shuttle/tripoli)
+"Oa" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "62"
+ },
+/area/shuttle/tripoli)
+"OF" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "39"
+ },
+/area/shuttle/tripoli)
+"OI" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "49"
+ },
+/obj/structure/shuttle/part/dropship2/transparent/engine_left_cap{
+ name = "\improper Tripoli"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"OM" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "90"
+ },
+/obj/effect/attach_point/weapon/tripoli/right_fore,
+/turf/template_noop,
+/area/shuttle/tripoli)
+"QS" = (
+/obj/structure/platform_decoration{
+ dir = 8
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 1
+ },
+/obj/structure/platform_decoration{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tripoli)
+"RD" = (
+/turf/closed/shuttle/tripoli/transparent{
+ icon_state = "89a"
+ },
+/area/shuttle/tripoli)
+"RK" = (
+/obj/effect/attach_point/crew_weapon/tripoli,
+/obj/docking_port/mobile/marine_dropship/tripoli,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"Sr" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "47"
+ },
+/area/shuttle/tripoli)
+"SW" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "48"
+ },
+/area/shuttle/tripoli)
+"Ur" = (
+/obj/structure/shuttle/part/tripoli{
+ icon_state = "66"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"Us" = (
+/obj/structure/shuttle/part/dropship2/transparent/engine_right_cap{
+ name = "\improper Tripoli"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"UI" = (
+/turf/open/shuttle/dropship{
+ icon_state = "floor8"
+ },
+/area/shuttle/tripoli)
+"VP" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "33"
+ },
+/area/shuttle/tripoli)
+"VR" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "64"
+ },
+/area/shuttle/tripoli)
+"WS" = (
+/obj/structure/shuttle/part/tripoli/transparent{
+ icon_state = "99a"
+ },
+/turf/template_noop,
+/area/shuttle/tripoli)
+"XI" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "27"
+ },
+/area/shuttle/tripoli)
+"Ze" = (
+/obj/structure/platform{
+ dir = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 1
+ },
+/obj/structure/blocker/forcefield/multitile_vehicles,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tripoli)
+"Zf" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "43"
+ },
+/area/shuttle/tripoli)
+"ZT" = (
+/obj/structure/machinery/light/double{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tripoli)
+"ZW" = (
+/turf/closed/shuttle/tripoli{
+ icon_state = "77"
+ },
+/area/shuttle/tripoli)
+
+(1,1,1) = {"
+ed
+ed
+ed
+ed
+ed
+fZ
+Ur
+fk
+ed
+sb
+pw
+qW
+bN
+zS
+ed
+nD
+"}
+(2,1,1) = {"
+ed
+ed
+ed
+vJ
+oU
+zC
+Ew
+Oa
+sD
+wN
+DW
+hx
+Ev
+mm
+ed
+Go
+"}
+(3,1,1) = {"
+ed
+ed
+ed
+lj
+ZW
+vC
+sc
+pj
+pj
+Sr
+sD
+eD
+tD
+EM
+oF
+Cf
+"}
+(4,1,1) = {"
+wL
+ih
+Ac
+lv
+DG
+zt
+kS
+ri
+cE
+QS
+jR
+MS
+kS
+vl
+ed
+ed
+"}
+(5,1,1) = {"
+yF
+dN
+aP
+Kk
+vi
+UI
+KZ
+UI
+RK
+Ze
+zZ
+wi
+zZ
+jC
+ed
+ed
+"}
+(6,1,1) = {"
+Fq
+WS
+hS
+RD
+Gt
+ca
+kS
+iU
+AC
+pm
+ZT
+kS
+kS
+jC
+ed
+ed
+"}
+(7,1,1) = {"
+ed
+ed
+ed
+OM
+ZW
+EG
+JO
+Kg
+Kg
+SW
+Zf
+JC
+Ly
+qH
+Cb
+yB
+"}
+(8,1,1) = {"
+ed
+ed
+ed
+zX
+ma
+eN
+cD
+VR
+Zf
+OI
+NV
+CR
+mr
+KU
+ed
+fq
+"}
+(9,1,1) = {"
+ed
+ed
+ed
+ed
+ed
+qo
+Fm
+wy
+ed
+Us
+OF
+VP
+XI
+qf
+ed
+xx
+"}
diff --git a/maps/shuttles/dropship_typhoon.dmm b/maps/shuttles/dropship_typhoon.dmm
new file mode 100644
index 0000000000..331bb09506
--- /dev/null
+++ b/maps/shuttles/dropship_typhoon.dmm
@@ -0,0 +1,1000 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aX" = (
+/turf/template_noop,
+/area/space)
+"bs" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "26"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"cg" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "66"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"cH" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"dV" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "75"
+ },
+/area/shuttle/tornado)
+"et" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "77"
+ },
+/area/shuttle/tornado)
+"fJ" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "99a";
+ layer = 2.97
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"gw" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "27"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"gx" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "47"
+ },
+/area/shuttle/tornado)
+"gJ" = (
+/obj/structure/machinery/camera/autoname/golden_arrow/typhoon{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"gN" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "24"
+ },
+/area/shuttle/tornado)
+"gY" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "67"
+ },
+/area/shuttle/tornado)
+"ix" = (
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{
+ pixel_y = 25
+ },
+/obj/structure/bed/chair/dropship/passenger/folded{
+ dir = 4;
+ buckling_y = 3;
+ pixel_y = 3
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin7"
+ },
+/area/shuttle/tornado)
+"iz" = (
+/turf/open/shuttle/dropship{
+ icon_state = "floor8"
+ },
+/area/shuttle/tornado)
+"iH" = (
+/obj/structure/bed/chair/dropship/passenger/folded{
+ pixel_y = 8;
+ buckling_y = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"ji" = (
+/obj/structure/platform_decoration{
+ dir = 8
+ },
+/obj/structure/platform_decoration{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"jt" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "102"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"kY" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/obj/structure/barricade/handrail{
+ dir = 1
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"lm" = (
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"lA" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "73"
+ },
+/area/shuttle/tornado)
+"lM" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "48"
+ },
+/area/shuttle/tornado)
+"nM" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "64"
+ },
+/area/shuttle/tornado)
+"of" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "25"
+ },
+/area/shuttle/tornado)
+"oo" = (
+/obj/structure/stairs/perspective{
+ icon_state = "p_stair_full";
+ can_block_movement = 0
+ },
+/obj/structure/platform{
+ dir = 4
+ },
+/obj/structure/platform{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"oH" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "95a"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"qa" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "101"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"rb" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "104"
+ },
+/area/shuttle/tornado)
+"rN" = (
+/obj/structure/bed/portable_surgery{
+ pixel_y = 5
+ },
+/obj/structure/machinery/iv_drip{
+ pixel_y = 26;
+ layer = 2.9
+ },
+/obj/structure/curtain/medical,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"rO" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "72"
+ },
+/area/shuttle/tornado)
+"sC" = (
+/obj/effect/attach_point/crew_weapon/typhoon,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tornado)
+"uS" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "3"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"vO" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "41";
+ density = 0;
+ layer = 4.2
+ },
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "61"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"wd" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "36"
+ },
+/area/shuttle/tornado)
+"wI" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "16"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"wN" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin8"
+ },
+/area/shuttle/tornado)
+"wP" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"xq" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "69"
+ },
+/area/shuttle/tornado)
+"yk" = (
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "89a"
+ },
+/area/shuttle/tornado)
+"yE" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "41";
+ density = 0;
+ layer = 4.2
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"zS" = (
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "89b"
+ },
+/area/shuttle/tornado)
+"Au" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "5"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Bf" = (
+/obj/structure/platform_decoration{
+ dir = 4
+ },
+/obj/structure/platform_decoration{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Bz" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "23"
+ },
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "23"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"BO" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "15"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"BP" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "17"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Cl" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "6"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"CE" = (
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "86b"
+ },
+/area/shuttle/tornado)
+"Dl" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "83"
+ },
+/area/shuttle/tornado)
+"Dv" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "32"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Eh" = (
+/obj/effect/attach_point/crew_weapon/typhoon,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Fm" = (
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "86a"
+ },
+/area/shuttle/tornado)
+"FC" = (
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
+ },
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"FO" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "100"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Gv" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "70"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Ih" = (
+/obj/structure/platform{
+ dir = 1
+ },
+/obj/structure/blocker/forcefield/multitile_vehicles,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tornado)
+"Iw" = (
+/obj/structure/machinery/light/double{
+ dir = 8;
+ pixel_y = -5
+ },
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"IT" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"IU" = (
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"IX" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "26"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"IZ" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin4"
+ },
+/area/shuttle/tornado)
+"Jb" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "33"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"JT" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "23"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Kp" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds2{
+ id = "aft_door";
+ name = "\improper Typhoon cargo door"
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
+ },
+/area/shuttle/tornado)
+"Kw" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "28"
+ },
+/obj/effect/attach_point/fuel/typhoon{
+ layer = 3.1
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"KX" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "22"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"KY" = (
+/obj/structure/machinery/light/double{
+ dir = 8;
+ pixel_y = -5
+ },
+/obj/structure/bed/chair/vehicle/toc{
+ dir = 1;
+ pixel_y = 19;
+ pixel_x = 16
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Lj" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "4"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"MB" = (
+/turf/closed/shuttle/typhoon/transparent{
+ icon_state = "97a"
+ },
+/area/shuttle/tornado)
+"NB" = (
+/obj/structure/machinery/light/double{
+ dir = 8;
+ pixel_y = -5
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Oh" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "103"
+ },
+/area/shuttle/tornado)
+"Oq" = (
+/obj/structure/machinery/camera/autoname/golden_arrow/typhoon{
+ dir = 4;
+ pixel_x = -24
+ },
+/obj/structure/bed/chair/dropship/passenger{
+ dir = 4
+ },
+/obj/structure/barricade/handrail{
+ dir = 1
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Or" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "82"
+ },
+/area/shuttle/tornado)
+"Ou" = (
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full";
+ pixel_y = 22
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/copilot{
+ dir = 1;
+ pixel_x = 8;
+ layer = 5
+ },
+/obj/structure/machinery/computer/dropship_weapons/typhoon/small{
+ pixel_x = 8;
+ pixel_y = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"OQ" = (
+/obj/structure/stairs/perspective{
+ icon_state = "p_stair_full";
+ can_block_movement = 0
+ },
+/obj/structure/platform{
+ dir = 8
+ },
+/obj/structure/platform{
+ dir = 4
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"OV" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "28"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Pq" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "S";
+ pixel_y = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = -1
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin14"
+ },
+/area/shuttle/tornado)
+"Qi" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "38"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Qs" = (
+/obj/structure/machinery/door/airlock/hatch/cockpit/two,
+/obj/structure/blocker/forcefield/multitile_vehicles,
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"QF" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "62"
+ },
+/area/shuttle/tornado)
+"Rb" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "29"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Rw" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "31"
+ },
+/area/shuttle/tornado)
+"RB" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "39"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"RH" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "27"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Sc" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "74"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Tc" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "29"
+ },
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "29"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Ts" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "2"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"TF" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "40";
+ density = 0;
+ layer = 4.2
+ },
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "65"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Uk" = (
+/obj/structure/shuttle/part/typhoon/transparent,
+/turf/template_noop,
+/area/shuttle/tornado)
+"Ut" = (
+/obj/structure/machinery/camera/autoname/golden_arrow/typhoon{
+ pixel_y = 32
+ },
+/obj/structure/surface/table/reinforced/toc/east{
+ pixel_y = -7
+ },
+/obj/structure/machinery/computer/railgun/gatling/toc{
+ pixel_y = 13;
+ pixel_x = -7
+ },
+/obj/structure/phone_base/toc{
+ pixel_y = 13;
+ pixel_x = 11;
+ phone_id = "Typhoon Overwatch";
+ phone_category = "Overwatch";
+ name = "Typhoon overwatch telephone receiver"
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin6"
+ },
+/area/shuttle/tornado)
+"VM" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "9"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"VV" = (
+/obj/structure/shuttle/part/tornado/transparent{
+ icon_state = "22"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Wk" = (
+/obj/docking_port/mobile/marine_dropship/typhoon,
+/obj/structure/bed/chair/dropship/passenger/folded{
+ pixel_y = 8;
+ buckling_y = 8
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Xv" = (
+/obj/structure/phone_base{
+ dir = 4;
+ pixel_x = -19;
+ pixel_y = 12;
+ layer = 3.1;
+ phone_category = "Dropship";
+ name = "Typhoon telephone receiver";
+ phone_id = "Typhoon"
+ },
+/obj/structure/bed/chair/vehicle/dropship_cockpit/pilot{
+ dir = 1;
+ pixel_x = 6;
+ pixel_y = 8
+ },
+/obj/structure/machinery/computer/shuttle/dropship/flight/small{
+ pixel_y = 16;
+ pixel_x = 6
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Xw" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "32"
+ },
+/obj/effect/attach_point/fuel/typhoon{
+ layer = 3.1
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"XO" = (
+/obj/structure/machinery/light/double{
+ dir = 4;
+ pixel_y = -5
+ },
+/obj/structure/surface/table/almayer,
+/obj/item/storage/surgical_tray/empty,
+/obj/item/reagent_container/hypospray/autoinjector/oxycodone{
+ pixel_y = 9;
+ pixel_x = -3
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"Ym" = (
+/obj/structure/machinery/computer/overwatch/toc{
+ pixel_y = 14
+ },
+/obj/structure/surface/table/reinforced/toc/west{
+ pixel_y = -7
+ },
+/obj/structure/machinery/prop/almayer/CICmap/arc{
+ pixel_y = 9;
+ pixel_x = -9
+ },
+/obj/structure/machinery/computer/railgun/toc{
+ pixel_y = 14;
+ pixel_x = 7
+ },
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin15"
+ },
+/area/shuttle/tornado)
+"YW" = (
+/obj/structure/shuttle/part/typhoon/transparent{
+ icon_state = "71"
+ },
+/turf/template_noop,
+/area/shuttle/tornado)
+"Zk" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "30"
+ },
+/area/shuttle/tornado)
+"ZD" = (
+/turf/open/shuttle/dropship{
+ icon_state = "rasputin3"
+ },
+/area/shuttle/tornado)
+"ZR" = (
+/turf/closed/shuttle/typhoon{
+ icon_state = "37"
+ },
+/area/shuttle/tornado)
+
+(1,1,1) = {"
+aX
+aX
+aX
+aX
+aX
+aX
+aX
+aX
+IT
+Qi
+Kw
+KX
+wI
+aX
+aX
+aX
+aX
+aX
+"}
+(2,1,1) = {"
+aX
+aX
+aX
+aX
+aX
+YW
+cg
+cg
+vO
+RB
+Rb
+JT
+BP
+IT
+OV
+VV
+wI
+Uk
+"}
+(3,1,1) = {"
+aX
+aX
+aX
+IT
+dV
+rO
+gY
+gY
+QF
+wd
+Zk
+gN
+VM
+yE
+Tc
+Bz
+BP
+Ts
+"}
+(4,1,1) = {"
+aX
+aX
+aX
+yE
+et
+Ym
+KY
+Oq
+IU
+Iw
+IU
+Eh
+gx
+wd
+Zk
+gN
+Oh
+uS
+"}
+(5,1,1) = {"
+FO
+oH
+CE
+Fm
+Or
+Ut
+ZD
+ZD
+ZD
+ZD
+IZ
+OQ
+Bf
+cH
+NB
+cH
+Kp
+aX
+"}
+(6,1,1) = {"
+qa
+MB
+Xv
+Ou
+Qs
+iz
+cH
+cH
+Wk
+iH
+iz
+cH
+Ih
+ZD
+sC
+ZD
+Pq
+aX
+"}
+(7,1,1) = {"
+jt
+fJ
+zS
+yk
+et
+ix
+ZD
+ZD
+ZD
+ZD
+wN
+oo
+ji
+gJ
+lm
+cH
+Pq
+aX
+"}
+(8,1,1) = {"
+aX
+aX
+aX
+IT
+et
+rN
+XO
+kY
+wP
+FC
+wP
+Eh
+lM
+ZR
+Rw
+of
+rb
+Lj
+"}
+(9,1,1) = {"
+aX
+aX
+aX
+yE
+Dl
+lA
+xq
+xq
+nM
+ZR
+Rw
+of
+BO
+IT
+Dv
+bs
+wI
+Au
+"}
+(10,1,1) = {"
+aX
+aX
+aX
+aX
+aX
+Sc
+Gv
+Gv
+TF
+Qi
+Xw
+IX
+wI
+yE
+Jb
+gw
+BP
+Cl
+"}
+(11,1,1) = {"
+aX
+aX
+aX
+aX
+aX
+aX
+aX
+aX
+yE
+RB
+Jb
+RH
+BP
+aX
+aX
+aX
+aX
+aX
+"}
diff --git a/tgui/packages/tgui/interfaces/StripMenu.tsx b/tgui/packages/tgui/interfaces/StripMenu.tsx
new file mode 100644
index 0000000000..6790d17a29
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/StripMenu.tsx
@@ -0,0 +1,380 @@
+import { range } from 'common/collections';
+import { BooleanLike } from 'common/react';
+
+import { resolveAsset } from '../assets';
+import { useBackend } from '../backend';
+import { Box, Button, Icon, Image, Stack } from '../components';
+import { Window } from '../layouts';
+
+const ROWS = 5;
+const COLUMNS = 6;
+
+const BUTTON_DIMENSIONS = '64px';
+
+type GridSpotKey = string;
+
+const getGridSpotKey = (spot: [number, number]): GridSpotKey => {
+ return `${spot[0]}/${spot[1]}`;
+};
+
+const CornerText = (props: {
+ readonly align: 'left' | 'right';
+ readonly children: string;
+}): JSX.Element => {
+ const { align, children } = props;
+
+ return (
+
+ {children}
+
+ );
+};
+
+type AlternateAction = {
+ icon: string;
+ text: string;
+};
+
+const ALTERNATE_ACTIONS: Record = {
+ remove_splints: {
+ icon: 'crutch',
+ text: 'Remove splints',
+ },
+
+ remove_accessory: {
+ icon: 'tshirt',
+ text: 'Remove accessory',
+ },
+
+ retrieve_tag: {
+ icon: 'tags',
+ text: 'Retrieve info tag',
+ },
+
+ toggle_internals: {
+ icon: 'mask-face',
+ text: 'Toggle internals',
+ },
+};
+
+type Slot = {
+ displayName: string;
+ gridSpot: GridSpotKey;
+ image?: string;
+ additionalComponent?: JSX.Element;
+ hideEmpty?: boolean;
+};
+
+const SLOTS: Record = {
+ glasses: {
+ displayName: 'glasses',
+ gridSpot: getGridSpotKey([0, 1]),
+ image: 'inventory-glasses.png',
+ },
+
+ head: {
+ displayName: 'headwear',
+ gridSpot: getGridSpotKey([0, 2]),
+ image: 'inventory-head.png',
+ },
+
+ wear_mask: {
+ displayName: 'mask',
+ gridSpot: getGridSpotKey([1, 2]),
+ image: 'inventory-mask.png',
+ },
+
+ wear_r_ear: {
+ displayName: 'right earwear',
+ gridSpot: getGridSpotKey([0, 3]),
+ image: 'inventory-ears.png',
+ },
+
+ wear_l_ear: {
+ displayName: 'left earwear',
+ gridSpot: getGridSpotKey([1, 3]),
+ image: 'inventory-ears.png',
+ },
+
+ handcuffs: {
+ displayName: 'handcuffs',
+ gridSpot: getGridSpotKey([1, 4]),
+ hideEmpty: true,
+ },
+
+ legcuffs: {
+ displayName: 'legcuffs',
+ gridSpot: getGridSpotKey([1, 5]),
+ hideEmpty: true,
+ },
+
+ w_uniform: {
+ displayName: 'uniform',
+ gridSpot: getGridSpotKey([2, 1]),
+ image: 'inventory-uniform.png',
+ },
+
+ wear_suit: {
+ displayName: 'suit',
+ gridSpot: getGridSpotKey([2, 2]),
+ image: 'inventory-suit.png',
+ },
+
+ gloves: {
+ displayName: 'gloves',
+ gridSpot: getGridSpotKey([2, 3]),
+ image: 'inventory-gloves.png',
+ },
+
+ r_hand: {
+ displayName: 'right hand',
+ gridSpot: getGridSpotKey([2, 4]),
+ image: 'inventory-hand_r.png',
+ additionalComponent: R,
+ },
+
+ l_hand: {
+ displayName: 'left hand',
+ gridSpot: getGridSpotKey([2, 5]),
+ image: 'inventory-hand_l.png',
+ additionalComponent: L,
+ },
+
+ shoes: {
+ displayName: 'shoes',
+ gridSpot: getGridSpotKey([3, 2]),
+ image: 'inventory-shoes.png',
+ },
+
+ j_store: {
+ displayName: 'suit storage item',
+ gridSpot: getGridSpotKey([4, 0]),
+ image: 'inventory-suit_storage.png',
+ },
+
+ id: {
+ displayName: 'ID',
+ gridSpot: getGridSpotKey([4, 1]),
+ image: 'inventory-id.png',
+ },
+
+ belt: {
+ displayName: 'belt',
+ gridSpot: getGridSpotKey([4, 2]),
+ image: 'inventory-belt.png',
+ },
+
+ back: {
+ displayName: 'backpack',
+ gridSpot: getGridSpotKey([4, 3]),
+ image: 'inventory-back.png',
+ },
+
+ l_store: {
+ displayName: 'left pocket',
+ gridSpot: getGridSpotKey([4, 4]),
+ image: 'inventory-pocket.png',
+ },
+
+ r_store: {
+ displayName: 'right pocket',
+ gridSpot: getGridSpotKey([4, 5]),
+ image: 'inventory-pocket.png',
+ },
+};
+
+enum ObscuringLevel {
+ Completely = 1,
+ Hidden = 2,
+}
+
+type Interactable = {
+ interacting: BooleanLike;
+};
+
+/**
+ * Some possible options:
+ *
+ * null - No interactions, no item, but is an available slot
+ * { interacting: 1 } - No item, but we're interacting with it
+ * { icon: icon, name: name } - An item with no alternate actions
+ * that we're not interacting with.
+ * { icon, name, interacting: 1 } - An item with no alternate actions
+ * that we're interacting with.
+ */
+type StripMenuItem =
+ | null
+ | Interactable
+ | ((
+ | {
+ icon: string;
+ name: string;
+ alternate: string;
+ }
+ | {
+ obscured: ObscuringLevel;
+ }
+ | {
+ no_item_action: string;
+ }
+ ) &
+ Partial);
+
+type StripMenuData = {
+ items: Record;
+ name: string;
+};
+
+const StripContent = (props: { readonly item: StripMenuItem }) => {
+ if (props.item && 'name' in props.item) {
+ return (
+
+ );
+ }
+ if (props.item && 'obscured' in props.item) {
+ return (
+
+ );
+ }
+ return <> >;
+};
+
+export const StripMenu = (props) => {
+ const { act, data } = useBackend();
+
+ const gridSpots = new Map();
+ for (const key of Object.keys(data.items)) {
+ const item = data.items[key];
+ if (item === null && SLOTS[key].hideEmpty) continue;
+ gridSpots.set(SLOTS[key].gridSpot, key);
+ }
+
+ return (
+
+
+
+ {range(0, ROWS).map((row) => (
+
+
+ {range(0, COLUMNS).map((column) => {
+ const key = getGridSpotKey([row, column]);
+ const keyAtSpot = gridSpots.get(key);
+
+ if (!keyAtSpot) {
+ return (
+
+ );
+ }
+
+ const item = data.items[keyAtSpot];
+ const slot = SLOTS[keyAtSpot];
+
+ let alternateAction: AlternateAction | undefined;
+
+ let content;
+ let tooltip;
+
+ if (item === null) {
+ tooltip = slot.displayName;
+ } else if ('name' in item) {
+ alternateAction = ALTERNATE_ACTIONS[item.alternate];
+ tooltip = item.name;
+ } else if ('obscured' in item) {
+ tooltip = `obscured ${slot.displayName}`;
+ } else if ('no_item_action' in item) {
+ tooltip = slot.displayName;
+ alternateAction = ALTERNATE_ACTIONS[item.no_item_action];
+ }
+
+ return (
+
+
+
+
+ {alternateAction !== undefined && (
+
+ )}
+
+
+ );
+ })}
+
+
+ ))}
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/styles/interfaces/StripMenu.scss b/tgui/packages/tgui/styles/interfaces/StripMenu.scss
new file mode 100644
index 0000000000..d2c867c0ac
--- /dev/null
+++ b/tgui/packages/tgui/styles/interfaces/StripMenu.scss
@@ -0,0 +1,65 @@
+@use '../base.scss';
+
+$background-color: rgba(0, 0, 0, 0.33) !default;
+
+.StripMenu__cornertext_left {
+ position: relative;
+ left: 2px;
+ text-align: left;
+ text-shadow: 1px 1px 1px #555;
+}
+
+.StripMenu__cornertext_right {
+ position: relative;
+ left: -2px;
+ text-align: right;
+ text-shadow: 1px 1px 1px #555;
+}
+
+.StripMenu__iconbox {
+ height: 100%;
+ width: 100%;
+ -ms-interpolation-mode: nearest-neighbor;
+ vertical-align: middle;
+}
+
+.StripMenu__obscured {
+ text-align: center;
+ height: 100%;
+ width: 100%;
+}
+
+.StripMenu__itembox {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
+.StripMenu__contentbox {
+ position: relative;
+}
+
+.StripMenu__itembutton {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ padding: 0;
+}
+
+.StripMenu__itemslot {
+ position: absolute;
+ width: 32px;
+ height: 32px;
+ left: 50%;
+ top: 50%;
+ transform: translateX(-50%) translateY(-50%) scale(0.8);
+ opacity: 0.7;
+}
+
+.StripMenu__alternativeaction {
+ background: rgba(0, 0, 0, 0.6);
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ z-index: 2;
+}
diff --git a/tgui/packages/tgui/styles/main.scss b/tgui/packages/tgui/styles/main.scss
index b51e602746..639365e0e3 100644
--- a/tgui/packages/tgui/styles/main.scss
+++ b/tgui/packages/tgui/styles/main.scss
@@ -80,6 +80,7 @@
@include meta.load-css('./interfaces/common/Dpad.scss');
@include meta.load-css('./interfaces/common/ElectricalPanel.scss');
@include meta.load-css('./interfaces/TacticalMap.scss');
+@include meta.load-css('./interfaces/StripMenu.scss');
// Layouts
@include meta.load-css('./layouts/Layout.scss');